Merge pull request #41 from madhura68/fix/idea-prompts-payload-path

fix(prompts): idea-prompts gebruiken $PAYLOAD_PATH ipv onvervangen placeholders
This commit is contained in:
Janpeter Visser 2026-05-09 11:59:59 +02:00 committed by GitHub
commit 69fabc58f6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 69 additions and 32 deletions

View file

@ -26,13 +26,29 @@ describe('getKindPromptText', () => {
expect(text).toMatch(/GEEN.*job_heartbeat/) expect(text).toMatch(/GEEN.*job_heartbeat/)
}) })
it.each(['TASK_IMPLEMENTATION', 'SPRINT_IMPLEMENTATION', 'PLAN_CHAT'] as const)( it.each(KINDS)(
'%s-prompt noemt $PAYLOAD_PATH als variabele', '%s-prompt noemt $PAYLOAD_PATH als variabele (alle kinds — runner doet substitution)',
(kind) => { (kind) => {
const text = getKindPromptText(kind) const text = getKindPromptText(kind)
expect(text).toContain('$PAYLOAD_PATH') expect(text).toContain('$PAYLOAD_PATH')
}, },
) )
it.each(['IDEA_GRILL', 'IDEA_MAKE_PLAN'] as const)(
'%s-prompt verwijst niet meer naar wait_for_job (refactor: runner claimt)',
(kind) => {
const text = getKindPromptText(kind)
expect(text).not.toContain('wait_for_job')
},
)
it.each(['IDEA_GRILL', 'IDEA_MAKE_PLAN'] as const)(
'%s-prompt bevat geen onvervangen {idea_*} placeholders',
(kind) => {
const text = getKindPromptText(kind)
expect(text).not.toMatch(/\{idea_code\}|\{idea_title\}/)
},
)
}) })
describe('getIdeaPromptText (back-compat)', () => { describe('getIdeaPromptText (back-compat)', () => {

View file

@ -1,21 +1,28 @@
# Grill-prompt voor IDEA_GRILL-jobs # Grill-prompt voor IDEA_GRILL-jobs
> Deze prompt wordt door `wait_for_job` meegestuurd in de payload van een > Deze prompt wordt door `scrum4me-docker/bin/run-one-job.ts` als
> `IDEA_GRILL`-job en gevolgd door de Claude-CLI-worker. Dit bestand wordt > `claude -p`-input meegegeven voor één geclaimde `IDEA_GRILL`-job. Dit
> bewust **niet** vervangen door de externe `anthropic-skills:grill-me`-skill > bestand wordt bewust **niet** vervangen door de externe
> (zie M12 grill-keuze 5: embedded prompts) — Scrum4Me beheert zijn eigen > `anthropic-skills:grill-me`-skill (zie M12 grill-keuze 5: embedded prompts) —
> versie zodat de flow reproduceerbaar is op elke worker. > Scrum4Me beheert zijn eigen versie zodat de flow reproduceerbaar is op
> elke worker.
--- ---
Je bent een **grill-agent** voor Scrum4Me-idee `{idea_code}` (titel: Je bent een **grill-agent** voor een Scrum4Me-idee. De runner heeft de job
`{idea_title}`). al voor je geclaimd; jouw eerste actie is altijd:
Je context (meegegeven in `wait_for_job`-payload): ```
Read $PAYLOAD_PATH
```
- `idea`: het volledige idee-record incl. eventueel bestaande `grill_md` Dat JSON-bestand bevat de volledige context die je nodig hebt:
- `job_id`: nodig voor `update_job_status` aan het einde
- `idea`: het volledige idee-record incl. `id`, `code`, `title`, `description`,
`product_id`, en eventueel bestaande `grill_md`
- `product`: het gekoppelde product (incl. `repo_url` en `definition_of_done`) - `product`: het gekoppelde product (incl. `repo_url` en `definition_of_done`)
- `repo_url`: lokale repo om te lezen (worker bevindt zich daar al) - `primary_worktree_path`: lokale repo om te lezen (je `cwd` zit daar al)
## Doel ## Doel
@ -25,11 +32,11 @@ PBI van kan maken. Eindresultaat is een markdown-document dat je via
## Werkwijze (loop, één vraag per cyclus) ## Werkwijze (loop, één vraag per cyclus)
1. Lees de huidige `idea.title`, `idea.description`, en (indien aanwezig) 1. **Lees `$PAYLOAD_PATH`** met de `Read`-tool. Bewaar `idea.id`, `idea.code`,
`idea.grill_md` — bij re-grill bouw je voort op wat er al staat, je gooit `idea.title`, `idea.grill_md` (mag null zijn), `product.id`, en `job_id`
het niet weg. die heb je nodig in alle MCP-tool-calls hieronder.
2. Verken de repo voor context: `README`, `docs/`, `package.json`, en relevante 2. Verken de repo (`primary_worktree_path` is je `cwd`) voor context:
source-bestanden. Gebruik `Read`/`Grep`/`Glob` zoals normaal. `README`, `docs/`, `package.json`, relevante source. `Read`/`Grep`/`Glob`.
3. Stel **één scherpe vraag tegelijk** via 3. Stel **één scherpe vraag tegelijk** via
`mcp__scrum4me__ask_user_question({ idea_id, question, options? })`. Wacht `mcp__scrum4me__ask_user_question({ idea_id, question, options? })`. Wacht
op het antwoord (`mcp__scrum4me__get_question_answer` of `wait_seconds`). op het antwoord (`mcp__scrum4me__get_question_answer` of `wait_seconds`).
@ -39,7 +46,8 @@ PBI van kan maken. Eindresultaat is een markdown-document dat je via
5. Herhaal tot je voldoende hebt voor een PBI (zie stop-conditie). 5. Herhaal tot je voldoende hebt voor een PBI (zie stop-conditie).
6. Schrijf het eindresultaat via 6. Schrijf het eindresultaat via
`mcp__scrum4me__update_idea_grill_md({ idea_id, markdown })`. `mcp__scrum4me__update_idea_grill_md({ idea_id, markdown })`.
7. Roep `mcp__scrum4me__update_job_status({ job_id, status: 'done', summary })`. 7. Roep `mcp__scrum4me__update_job_status({ job_id, status: 'done', summary })`
— dit sluit de job af. **Verplicht**, ook als de gebruiker afbreekt.
## Stop-conditie ## Stop-conditie
@ -55,7 +63,7 @@ Stop óók als de gebruiker expliciet zegt "klaar" / "genoeg" / "ga door".
## Output-format (strikt) ## Output-format (strikt)
```markdown ```markdown
# Idee — {korte titel} # Idee — <korte titel>
## Scope ## Scope

View file

@ -1,21 +1,29 @@
# Make-Plan-prompt voor IDEA_MAKE_PLAN-jobs # Make-Plan-prompt voor IDEA_MAKE_PLAN-jobs
> Deze prompt wordt door `wait_for_job` meegestuurd in de payload van een > Deze prompt wordt door `scrum4me-docker/bin/run-one-job.ts` als
> `IDEA_MAKE_PLAN`-job. Single-pass, **stel geen vragen** (zie M12 grill-keuze > `claude -p`-input meegegeven voor één geclaimde `IDEA_MAKE_PLAN`-job.
> 8). Twijfels → terug naar grill via UI. > Single-pass, **stel geen vragen** (zie M12 grill-keuze 8). Twijfels →
> terug naar grill via UI.
--- ---
Je bent een **planning-agent** voor Scrum4Me-idee `{idea_code}`. Je bent een **planning-agent** voor een Scrum4Me-idee. De runner heeft de
job al voor je geclaimd; jouw eerste actie is altijd:
Je context (meegegeven in `wait_for_job`-payload): ```
Read $PAYLOAD_PATH
```
Dat JSON-bestand bevat de volledige context die je nodig hebt:
- `job_id`: nodig voor `update_job_status` aan het einde
- `idea.id`, `idea.code`, `idea.title`, `idea.description`
- `idea.grill_md`: het resultaat van de voorafgaande grill-sessie — dit is je - `idea.grill_md`: het resultaat van de voorafgaande grill-sessie — dit is je
primaire input. primaire input.
- `idea.plan_md`: bij re-plan bevat dit het vorige plan; gebruik als - `idea.plan_md`: bij re-plan bevat dit het vorige plan; gebruik als referentie.
referentie.
- `product`: gekoppeld product met `repo_url`, `definition_of_done`, - `product`: gekoppeld product met `repo_url`, `definition_of_done`,
bestaande architectuur in repo. bestaande architectuur in repo.
- `primary_worktree_path`: lokale repo (je `cwd` zit daar al).
## Doel ## Doel
@ -26,13 +34,18 @@ PBI + stories + taken via `materializeIdeaPlanAction`.
## Werkwijze (single-pass) ## Werkwijze (single-pass)
1. Lees `idea.grill_md` volledig. 1. **Lees `$PAYLOAD_PATH`** met de `Read`-tool. Bewaar `idea.id`, `idea.code`,
2. Verken de repo voor patronen, bestaande modules, en `docs/`-structuur. `idea.grill_md`, `idea.plan_md` (mag null zijn), `product.id`, en `job_id`
3. **Bij removal/refactor: doe een dependency-cascade-grep** (zie volgende die heb je nodig in alle MCP-tool-calls hieronder.
2. Lees `idea.grill_md` volledig.
3. Verken de repo (`primary_worktree_path` is je `cwd`) voor patronen,
bestaande modules, en `docs/`-structuur.
4. **Bij removal/refactor: doe een dependency-cascade-grep** (zie volgende
sectie). Voeg per geraakte file een taak toe vóór de schema/code-edit zelf. sectie). Voeg per geraakte file een taak toe vóór de schema/code-edit zelf.
4. Bouw het plan op in de **strikte format** hieronder. 5. Bouw het plan op in de **strikte format** hieronder.
5. Roep `mcp__scrum4me__update_idea_plan_md({ idea_id, markdown })`. 6. Roep `mcp__scrum4me__update_idea_plan_md({ idea_id, markdown })`.
6. Roep `mcp__scrum4me__update_job_status({ job_id, status: 'done', summary })`. 7. Roep `mcp__scrum4me__update_job_status({ job_id, status: 'done', summary })`
— dit sluit de job af. **Verplicht**, ook bij parse-failure.
## Dependency-cascade-grep (verplicht bij removal/refactor) ## Dependency-cascade-grep (verplicht bij removal/refactor)