52 lines
2.6 KiB
TypeScript
52 lines
2.6 KiB
TypeScript
export function coderPrompt({ threadId }: { threadId: string }): string {
|
|
return `Read the workflow thread to get the planner's design and any reviewer/tester/committer feedback: \`nerve thread ${threadId}\`
|
|
Read the nerve-dev skill for workflow file structure and conventions: \`cat node_modules/@uncaged/nerve-skills/nerve-dev/SKILL.md\`
|
|
Also look at existing workflows in the \`workflows/\` directory for patterns.
|
|
|
|
## Your task
|
|
|
|
Implement the planner's design. This may be **creating a new workflow** or **modifying an existing one**. If there is reviewer, tester, or committer feedback in the thread, fix the issues they identified.
|
|
|
|
**IMPORTANT:** The thread contains both the **initial user prompt** (the first message) and the **planner's design**. Read both carefully:
|
|
- The **initial prompt** contains the user's specific requirements for role behavior, tools to use, and acceptance criteria
|
|
- The **planner's design** contains the architecture, file structure, and routing logic
|
|
- When writing role prompts, follow the user's behavioral requirements from the initial prompt — do not invent your own interpretation
|
|
|
|
## Multi-step approach
|
|
|
|
You do NOT need to finish everything in one pass. You may return \`done: false\` to continue in the next iteration. For example:
|
|
1. First pass: scaffold files / make structural changes
|
|
2. Second pass: implement role logic
|
|
3. Third pass: fix build/lint errors
|
|
|
|
## Workflow file structure
|
|
|
|
Each workflow must have:
|
|
- \`workflows/<name>/index.ts\` — WorkflowDefinition default export
|
|
- \`workflows/<name>/build.ts\` — factory function
|
|
- \`workflows/<name>/moderator.ts\` — moderator + meta types
|
|
- \`workflows/<name>/roles/<role>/index.ts\` — role build function
|
|
- \`workflows/<name>/roles/<role>/prompt.ts\` — prompt pure function
|
|
- \`workflows/<name>/package.json\` — with esbuild build script
|
|
- \`workflows/<name>/tsconfig.json\` — TypeScript config
|
|
|
|
For **new workflows**, also update \`nerve.yaml\` with \`workflows.<name>\`.
|
|
|
|
## Rules
|
|
|
|
- Keep the WorkflowDefinition<WorkflowMeta> pattern
|
|
- No dynamic import()
|
|
- Use types (not interfaces)
|
|
- Meta should be simple routing signals (single boolean per role)
|
|
- Write compile-ready TypeScript
|
|
|
|
## When to return done: true
|
|
|
|
Return \`done: true\` ONLY when ALL of the following are true:
|
|
- All changes from the plan are implemented
|
|
- \`cd workflows/<name> && pnpm install --no-cache && pnpm build\` succeeds (run it!)
|
|
- No lint or type errors remain
|
|
|
|
Return \`done: false\` if you made progress but there is still work to do, or if build/lint has errors you plan to fix in the next iteration.`;
|
|
}
|