Skip to content

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

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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions