-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
Problem Statement
Currently, prompts for processors are hardcoded in src/lib/processors/prompt.ts:1-50. This makes it difficult to:
- Customize processor behavior without modifying source code
- Maintain different prompt strategies per processor (Claude vs Codex)
- Allow users to experiment with prompt variations
- Version control prompt changes separately from code
User Value
Users will be able to:
- Create custom prompts for each processor without touching source code
- Override default prompts by placing files in
~/.imploid/prompts/ - Version control their custom prompts separately
- Test different prompt strategies easily
Example: A user could create ~/.imploid/prompts/claude-experimental.md and configure it via prompt_path: "claude-experimental" in their config.
Definition of Done
- Implementation complete with edge cases handled
- Unit tests added (>80% coverage)
- Integration tests for main flows
- Documentation updated
- Code review approved
- CI/CD passes
- Manual testing complete
Manual Testing Checklist
- Basic flow: Start imploid with default prompts, verify both processors use their default prompts
- Custom prompt: Create
~/.imploid/prompts/custom-claude.md, configure it, verify it loads correctly - Missing prompt: Configure non-existent prompt file, verify startup fails with clear error
- Override precedence: Create same-named file in both locations, verify
~/.imploid/prompts/takes precedence - Variable substitution: Verify
${issueNumber}is correctly replaced in loaded prompts - Integration: Process an issue end-to-end with custom prompt
Potential Solutions
Option 1: Template-based Prompt System (Recommended)
Description:
- Move prompts from
prompt.tsto markdown template files - Create default templates:
src/lib/processors/prompts/claude-default.mdandsrc/lib/processors/prompts/codex-default.md - Support custom prompts in
~/.imploid/prompts/ - Load order: default from
src/lib/processors/prompts/, then override from~/.imploid/prompts/ - Add
prompt_pathproperty to each processor config block - Use
template.replace(/\${issueNumber}/g, issueNumber)for variable substitution - Validate prompt files exist at startup, fail fast with clear error if missing
Pros:
- Clean separation of prompts from code
- Easy to customize without modifying source
- User overrides don't require rebuilding
- Simple templating via string replacement
Cons:
- Adds file I/O operations at startup
- Need to handle file permissions/access errors
- Slightly more complex configuration
Files to modify:
src/lib/processors/prompt.ts- Add template loading logicsrc/lib/processors/claude.ts:43- Use configurable promptsrc/lib/processors/codex.ts:53- Use configurable promptsrc/lib/config.ts- Addprompt_pathto processor config schema- Create:
src/lib/processors/prompts/claude-default.md - Create:
src/lib/processors/prompts/codex-default.md
Option 2: Keep Hardcoded with Config Overrides Only
Description:
- Keep
prompt.tsas fallback - Only load from
~/.imploid/prompts/if configured - Simpler implementation, less flexible
Pros:
- Simpler implementation
- No source changes to default prompts
Cons:
- Defaults still in code, not in markdown files
- Less consistent (some in code, some in files)
- Doesn't meet the requirement to "create two copies in src/lib/processors/prompts/"
Recommended Approach
Option 1 - It fully meets all requirements: moves prompts to template files, creates default templates in source, supports user overrides, and provides clean configuration per processor.
Technical Notes
Affected files:
src/lib/processors/prompt.ts- Refactor to load from filessrc/lib/processors/claude.ts:43src/lib/processors/codex.ts:53src/lib/config.ts- Add prompt_path to processor config- New:
src/lib/processors/prompts/claude-default.md - New:
src/lib/processors/prompts/codex-default.md
Dependencies:
- Need to handle
~/.imploid/prompts/directory creation (or document that users must create it) - File system access at startup (already have config file access, so no new dependencies)