Skip to content

[Feature] Per-processor configurable prompt templates with markdown files #3

@spejman

Description

@spejman

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.ts to markdown template files
  • Create default templates: src/lib/processors/prompts/claude-default.md and src/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_path property 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 logic
  • src/lib/processors/claude.ts:43 - Use configurable prompt
  • src/lib/processors/codex.ts:53 - Use configurable prompt
  • src/lib/config.ts - Add prompt_path to 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.ts as 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 files
  • src/lib/processors/claude.ts:43
  • src/lib/processors/codex.ts:53
  • src/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)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions