@next-friday/create-app 9.2.1 → 9.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/templates/base/.agents/review.md +1 -1
  4. package/templates/base/.claude/settings.json +11 -0
  5. package/templates/base/.claude-plugin/marketplace.json +16 -0
  6. package/templates/base/.cursor/hooks/load-project-plugins.sh +3 -0
  7. package/templates/base/.cursor/hooks.json +6 -0
  8. package/templates/base/.github/workflows/control-band.yml +4 -2
  9. package/templates/base/.github/workflows/spec-on-intent-merge.yml +2 -1
  10. package/templates/base/REVIEW.md +1 -1
  11. package/templates/base/SETUP.md +13 -11
  12. package/templates/base/intent/README.md +1 -1
  13. package/templates/base/plugins/sdlc/claude-code/.claude-plugin/plugin.json +7 -0
  14. package/templates/base/plugins/sdlc/claude-code/agents/verifier.md +7 -0
  15. package/templates/base/plugins/sdlc/claude-code/hooks/check-reply-shape.sh +53 -0
  16. package/templates/base/plugins/sdlc/claude-code/hooks/hooks.json +15 -0
  17. package/templates/base/{.agents → plugins/sdlc/claude-code}/skills/brand-policy/SKILL.md +1 -3
  18. package/templates/base/{.agents → plugins/sdlc/claude-code}/skills/compliance-policy/SKILL.md +0 -2
  19. package/templates/base/plugins/sdlc/claude-code/skills/sdlc-help/SKILL.md +23 -0
  20. package/templates/base/{.cursor/skills/sdlc → plugins/sdlc/claude-code/skills/sdlc-mode}/SKILL.md +22 -11
  21. package/templates/base/plugins/sdlc/claude-code/skills/sdlc-mode/playbooks/build.md +46 -0
  22. package/templates/base/{.cursor/skills/sdlc → plugins/sdlc/claude-code/skills/sdlc-mode}/playbooks/deploy.md +4 -4
  23. package/templates/base/{.claude/skills/sdlc → plugins/sdlc/claude-code/skills/sdlc-mode}/playbooks/design.md +7 -7
  24. package/templates/base/{.cursor/skills/sdlc → plugins/sdlc/claude-code/skills/sdlc-mode}/playbooks/fix.md +7 -7
  25. package/templates/base/{.agents/skills/sdlc → plugins/sdlc/claude-code/skills/sdlc-mode}/playbooks/maintain.md +6 -8
  26. package/templates/base/plugins/sdlc/claude-code/skills/sdlc-mode/playbooks/open-pr.md +17 -0
  27. package/templates/base/{.cursor/skills/sdlc → plugins/sdlc/claude-code/skills/sdlc-mode}/playbooks/plan.md +5 -5
  28. package/templates/base/{.cursor/skills/sdlc → plugins/sdlc/claude-code/skills/sdlc-mode}/playbooks/question.md +2 -2
  29. package/templates/base/{.cursor/skills/sdlc → plugins/sdlc/claude-code/skills/sdlc-mode}/playbooks/review.md +7 -8
  30. package/templates/base/{.claude → plugins/sdlc/claude-code}/skills/security-policy/SKILL.md +0 -2
  31. package/templates/base/plugins/sdlc/claude-code/skills/setup-sdlc/SKILL.md +51 -0
  32. package/templates/base/{.agents → plugins/sdlc/claude-code}/skills/ux-policy/SKILL.md +0 -2
  33. package/templates/base/plugins/sdlc/cursor/.cursor-plugin/plugin.json +10 -0
  34. package/templates/base/plugins/sdlc/cursor/agents/verifier.md +7 -0
  35. package/templates/base/plugins/sdlc/cursor/hooks/check-reply-shape.sh +53 -0
  36. package/templates/base/plugins/sdlc/cursor/hooks/hooks.json +16 -0
  37. package/templates/base/{.cursor → plugins/sdlc/cursor}/skills/brand-policy/SKILL.md +1 -3
  38. package/templates/base/{.claude → plugins/sdlc/cursor}/skills/compliance-policy/SKILL.md +0 -2
  39. package/templates/base/plugins/sdlc/cursor/skills/sdlc-help/SKILL.md +23 -0
  40. package/templates/base/{.claude/skills/sdlc → plugins/sdlc/cursor/skills/sdlc-mode}/SKILL.md +22 -11
  41. package/templates/base/plugins/sdlc/cursor/skills/sdlc-mode/playbooks/build.md +46 -0
  42. package/templates/base/{.agents/skills/sdlc → plugins/sdlc/cursor/skills/sdlc-mode}/playbooks/deploy.md +4 -4
  43. package/templates/base/{.cursor/skills/sdlc → plugins/sdlc/cursor/skills/sdlc-mode}/playbooks/design.md +7 -7
  44. package/templates/base/{.agents/skills/sdlc → plugins/sdlc/cursor/skills/sdlc-mode}/playbooks/fix.md +7 -7
  45. package/templates/base/{.cursor/skills/sdlc → plugins/sdlc/cursor/skills/sdlc-mode}/playbooks/maintain.md +6 -8
  46. package/templates/base/plugins/sdlc/cursor/skills/sdlc-mode/playbooks/open-pr.md +17 -0
  47. package/templates/base/{.agents/skills/sdlc → plugins/sdlc/cursor/skills/sdlc-mode}/playbooks/plan.md +5 -5
  48. package/templates/base/{.agents/skills/sdlc → plugins/sdlc/cursor/skills/sdlc-mode}/playbooks/question.md +2 -2
  49. package/templates/base/{.agents/skills/sdlc → plugins/sdlc/cursor/skills/sdlc-mode}/playbooks/review.md +7 -8
  50. package/templates/base/{.agents → plugins/sdlc/cursor}/skills/security-policy/SKILL.md +0 -2
  51. package/templates/base/plugins/sdlc/cursor/skills/setup-sdlc/SKILL.md +51 -0
  52. package/templates/base/{.claude → plugins/sdlc/cursor}/skills/ux-policy/SKILL.md +0 -2
  53. package/templates/base/scripts/check-plan.ts +1 -1
  54. package/templates/base/scripts/sync-agent-rules.ts +0 -58
  55. package/templates/nestjs/AGENTS.md +5 -3
  56. package/templates/nestjs/CONTRIBUTING.md +0 -1
  57. package/templates/nestjs/package.json +0 -1
  58. package/templates/nextjs/AGENTS.md +5 -3
  59. package/templates/nextjs/CONTRIBUTING.md +0 -1
  60. package/templates/nextjs/package.json +0 -1
  61. package/templates/nodejs/AGENTS.md +5 -3
  62. package/templates/nodejs/CONTRIBUTING.md +0 -1
  63. package/templates/nodejs/package.json +0 -1
  64. package/templates/payload/.agents/review.md +1 -1
  65. package/templates/payload/AGENTS.md +5 -3
  66. package/templates/payload/CONTRIBUTING.md +0 -1
  67. package/templates/payload/REVIEW.md +1 -1
  68. package/templates/payload/package.json +0 -1
  69. package/templates/turborepo/.agents/review.md +1 -1
  70. package/templates/turborepo/AGENTS.md +5 -3
  71. package/templates/turborepo/CONTRIBUTING.md +0 -1
  72. package/templates/turborepo/REVIEW.md +1 -1
  73. package/templates/turborepo/package.json +0 -1
  74. package/templates/base/.agents/agents.json +0 -7
  75. package/templates/base/.agents/skill-evals/README.md +0 -42
  76. package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/case.yaml +0 -11
  77. package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/graders/01-the-reply-explains-why-pnpm.md +0 -7
  78. package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/graders/02-no-file-in-the-project.md +0 -7
  79. package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/graders/03-no-commit-is-made-nothing.md +0 -7
  80. package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/graders/05-every-path-in-the-reply.md +0 -7
  81. package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/graders/06-everything-the-reply-states-as.md +0 -7
  82. package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/prompt.md +0 -8
  83. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/case.yaml +0 -11
  84. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/fixture.md +0 -1
  85. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/01-work-happens-on-the-plan-branch.md +0 -7
  86. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/02-the-plan-is-implemented-and-checked.md +0 -7
  87. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/03-the-branch-is-pushed.md +0 -7
  88. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/04-the-reply-lists-three-playbooks.md +0 -7
  89. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/05-no-approval-and-no-merge.md +0 -7
  90. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/06-the-reply-ends-at-the-code-owner.md +0 -7
  91. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/07-the-plan-names-the-engineer.md +0 -7
  92. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/prompt.md +0 -8
  93. package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/case.yaml +0 -70
  94. package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/fixture.md +0 -1
  95. package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/graders/01-the-reply-asks-numbered-questions.md +0 -7
  96. package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/graders/02-no-plan-before-the-answers.md +0 -7
  97. package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/graders/03-no-question-depends-on-another.md +0 -7
  98. package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/graders/04-no-file-or-commit.md +0 -7
  99. package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/prompt.md +0 -8
  100. package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/case.yaml +0 -67
  101. package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/fixture.md +0 -1
  102. package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/graders/01-the-plan-has-the-four-headings.md +0 -7
  103. package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/graders/02-no-source-file-or-commit.md +0 -7
  104. package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/graders/03-the-reply-names-the-gate.md +0 -7
  105. package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/prompt.md +0 -10
  106. package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/case.yaml +0 -7
  107. package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/fixture.md +0 -1
  108. package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/graders/01-no-deployment-is-started.md +0 -7
  109. package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/graders/02-the-reply-names-the-release-manager-gate.md +0 -7
  110. package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/graders/03-the-reply-says-what-it-could-not-read.md +0 -7
  111. package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/prompt.md +0 -8
  112. package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/case.yaml +0 -12
  113. package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/01-a-file-intentkebabcasenameintentmd-exists-with.md +0 -7
  114. package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/02-the-reply-shows-the-draft.md +0 -7
  115. package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/03-no-commit-is-made-nothing.md +0 -7
  116. package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/04-reply-lists-the-playbook-steps.md +0 -7
  117. package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/06-every-path-in-the-reply.md +0 -7
  118. package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/07-the-drafts-open-questions-section.md +0 -7
  119. package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/prompt.md +0 -10
  120. package/templates/base/.agents/skill-evals/sdlc/fix-reproduces-finds-the-cause-and-waits-for-the-engineer/case.yaml +0 -33
  121. package/templates/base/.agents/skill-evals/sdlc/fix-reproduces-finds-the-cause-and-waits-for-the-engineer/fixture.md +0 -1
  122. package/templates/base/.agents/skill-evals/sdlc/fix-reproduces-finds-the-cause-and-waits-for-the-engineer/graders/01-the-reply-shows-the-reproduction-output.md +0 -7
  123. package/templates/base/.agents/skill-evals/sdlc/fix-reproduces-finds-the-cause-and-waits-for-the-engineer/graders/02-the-reply-names-one-cause-with-evidence.md +0 -7
  124. package/templates/base/.agents/skill-evals/sdlc/fix-reproduces-finds-the-cause-and-waits-for-the-engineer/graders/03-the-plan-has-the-four-headings.md +0 -7
  125. package/templates/base/.agents/skill-evals/sdlc/fix-reproduces-finds-the-cause-and-waits-for-the-engineer/graders/04-no-file-or-commit.md +0 -7
  126. package/templates/base/.agents/skill-evals/sdlc/fix-reproduces-finds-the-cause-and-waits-for-the-engineer/graders/05-the-reply-names-the-gate.md +0 -7
  127. package/templates/base/.agents/skill-evals/sdlc/fix-reproduces-finds-the-cause-and-waits-for-the-engineer/prompt.md +0 -8
  128. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/case.yaml +0 -11
  129. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/01-the-first-message-restates-the.md +0 -7
  130. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/02-the-reply-asks-numbered-questions.md +0 -7
  131. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/03-no-intentmd-is-written-before.md +0 -7
  132. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/04-reply-lists-the-playbook-steps.md +0 -7
  133. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/05-no-commit-is-made-nothing.md +0 -7
  134. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/07-every-path-in-the-reply.md +0 -7
  135. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/08-no-question-in-the-round.md +0 -7
  136. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/prompt.md +0 -8
  137. package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/case.yaml +0 -14
  138. package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/fixture.md +0 -1
  139. package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/graders/01-the-intent-has-the-five-headings.md +0 -7
  140. package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/graders/02-problem-holds-the-error-and-where.md +0 -7
  141. package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/graders/03-unverified-cause-is-an-open-question.md +0 -7
  142. package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/graders/04-no-source-file-is-changed.md +0 -7
  143. package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/graders/05-a-branch-is-pushed-and-the-gate-is-named.md +0 -7
  144. package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/graders/06-the-person-is-asked-no-question.md +0 -7
  145. package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/prompt.md +0 -8
  146. package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/case.yaml +0 -11
  147. package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/graders/01-the-reply-follows-the-plan.md +0 -7
  148. package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/graders/02-the-reply-does-not-tell.md +0 -7
  149. package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/graders/03-no-file-is-created-or.md +0 -7
  150. package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/graders/05-every-path-in-the-reply.md +0 -7
  151. package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/prompt.md +0 -8
  152. package/templates/base/.agents/skill-evals/sdlc/request-that-fits-no-row/case.yaml +0 -10
  153. package/templates/base/.agents/skill-evals/sdlc/request-that-fits-no-row/fixture.md +0 -1
  154. package/templates/base/.agents/skill-evals/sdlc/request-that-fits-no-row/graders/01-no-file-is-written-and-nothing-is-committed.md +0 -7
  155. package/templates/base/.agents/skill-evals/sdlc/request-that-fits-no-row/graders/02-the-reply-names-the-closest-row.md +0 -7
  156. package/templates/base/.agents/skill-evals/sdlc/request-that-fits-no-row/graders/03-the-reply-is-short.md +0 -7
  157. package/templates/base/.agents/skill-evals/sdlc/request-that-fits-no-row/prompt.md +0 -8
  158. package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/case.yaml +0 -79
  159. package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/fixture.md +0 -1
  160. package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/graders/01-findings-have-pass-severity-and-location.md +0 -7
  161. package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/graders/02-no-approval-and-no-merge.md +0 -7
  162. package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/graders/03-the-reply-names-the-code-owner-gate.md +0 -7
  163. package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/graders/04-nothing-is-pushed-or-changed.md +0 -7
  164. package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/graders/05-the-review-runs-in-a-fresh-context.md +0 -7
  165. package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/prompt.md +0 -8
  166. package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/case.yaml +0 -41
  167. package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/fixture.md +0 -1
  168. package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/graders/01-no-spec-is-written.md +0 -7
  169. package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/graders/02-no-commit-is-made.md +0 -7
  170. package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/graders/03-the-reply-says-not-merged.md +0 -7
  171. package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/graders/05-the-reply-is-short.md +0 -7
  172. package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/prompt.md +0 -8
  173. package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/case.yaml +0 -11
  174. package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/graders/01-no-intentmd-or-any-other.md +0 -7
  175. package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/graders/02-no-commit-is-made-nothing.md +0 -7
  176. package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/graders/04-every-path-in-the-reply.md +0 -7
  177. package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/graders/05-the-reply-says-that-work.md +0 -7
  178. package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/prompt.md +0 -8
  179. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/case.yaml +0 -41
  180. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/fixture.md +0 -1
  181. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/01-the-spec-has-the-five-headings.md +0 -7
  182. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/02-policies-has-one-line-per-policy.md +0 -7
  183. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/03-no-policy-is-called-unwritten.md +0 -7
  184. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/04-a-branch-is-pushed-for-review.md +0 -7
  185. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/05-the-reply-names-the-gate.md +0 -7
  186. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/07-no-merge-is-made.md +0 -7
  187. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/08-the-four-policies-are-read-before-writing.md +0 -7
  188. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/prompt.md +0 -8
  189. package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/case.yaml +0 -10
  190. package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/graders/01-the-reply-says-that-work.md +0 -7
  191. package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/graders/02-the-reply-gives-one-example.md +0 -7
  192. package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/graders/03-the-reply-lists-the-project.md +0 -7
  193. package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/graders/04-no-file-is-created-or.md +0 -7
  194. package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/graders/06-every-path-in-the-reply.md +0 -7
  195. package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/prompt.md +0 -8
  196. package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/case.yaml +0 -9
  197. package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/graders/01-the-reply-says-that-this.md +0 -7
  198. package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/graders/02-the-reply-does-not-describe.md +0 -7
  199. package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/graders/03-no-file-is-created-or.md +0 -7
  200. package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/graders/05-every-path-in-the-reply.md +0 -7
  201. package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/prompt.md +0 -8
  202. package/templates/base/.agents/skill-evals/sdlc-help/work-request-is-sent-to-sdlc/case.yaml +0 -10
  203. package/templates/base/.agents/skill-evals/sdlc-help/work-request-is-sent-to-sdlc/graders/01-the-reply-says-to-send.md +0 -7
  204. package/templates/base/.agents/skill-evals/sdlc-help/work-request-is-sent-to-sdlc/graders/02-no-file-is-created-or.md +0 -7
  205. package/templates/base/.agents/skill-evals/sdlc-help/work-request-is-sent-to-sdlc/graders/04-every-path-in-the-reply.md +0 -7
  206. package/templates/base/.agents/skill-evals/sdlc-help/work-request-is-sent-to-sdlc/prompt.md +0 -8
  207. package/templates/base/.agents/skills/sdlc/SKILL.md +0 -54
  208. package/templates/base/.agents/skills/sdlc/playbooks/build.md +0 -46
  209. package/templates/base/.agents/skills/sdlc/playbooks/design.md +0 -40
  210. package/templates/base/.agents/skills/sdlc/playbooks/open-pr.md +0 -15
  211. package/templates/base/.agents/skills/sdlc-help/SKILL.md +0 -23
  212. package/templates/base/.claude/skills/brand-policy/SKILL.md +0 -18
  213. package/templates/base/.claude/skills/sdlc/playbooks/build.md +0 -46
  214. package/templates/base/.claude/skills/sdlc/playbooks/deploy.md +0 -9
  215. package/templates/base/.claude/skills/sdlc/playbooks/fix.md +0 -23
  216. package/templates/base/.claude/skills/sdlc/playbooks/maintain.md +0 -20
  217. package/templates/base/.claude/skills/sdlc/playbooks/open-pr.md +0 -15
  218. package/templates/base/.claude/skills/sdlc/playbooks/plan.md +0 -33
  219. package/templates/base/.claude/skills/sdlc/playbooks/question.md +0 -8
  220. package/templates/base/.claude/skills/sdlc/playbooks/review.md +0 -17
  221. package/templates/base/.claude/skills/sdlc-help/SKILL.md +0 -23
  222. package/templates/base/.cursor/BUGBOT.md +0 -23
  223. package/templates/base/.cursor/skills/compliance-policy/SKILL.md +0 -25
  224. package/templates/base/.cursor/skills/sdlc/playbooks/build.md +0 -46
  225. package/templates/base/.cursor/skills/sdlc/playbooks/open-pr.md +0 -15
  226. package/templates/base/.cursor/skills/sdlc-help/SKILL.md +0 -23
  227. package/templates/base/.cursor/skills/security-policy/SKILL.md +0 -41
  228. package/templates/base/.cursor/skills/ux-policy/SKILL.md +0 -21
  229. package/templates/base/.github/workflows/agent-evals.yml +0 -46
  230. package/templates/base/scripts/run-agent-evals.ts +0 -1197
  231. package/templates/nestjs/.agents/agents/verifier.md +0 -1
  232. package/templates/nestjs/.claude/agents/verifier.md +0 -7
  233. package/templates/nestjs/.cursor/agents/verifier.md +0 -7
  234. package/templates/nextjs/.agents/agents/verifier.md +0 -1
  235. package/templates/nextjs/.claude/agents/verifier.md +0 -7
  236. package/templates/nextjs/.cursor/agents/verifier.md +0 -7
  237. package/templates/nodejs/.agents/agents/verifier.md +0 -1
  238. package/templates/nodejs/.claude/agents/verifier.md +0 -7
  239. package/templates/nodejs/.cursor/agents/verifier.md +0 -7
  240. package/templates/payload/.agents/agents/verifier.md +0 -1
  241. package/templates/payload/.claude/agents/verifier.md +0 -7
  242. package/templates/payload/.cursor/agents/verifier.md +0 -7
  243. package/templates/turborepo/.agents/agents/verifier.md +0 -1
  244. package/templates/turborepo/.claude/agents/verifier.md +0 -7
  245. package/templates/turborepo/.cursor/agents/verifier.md +0 -7
@@ -1,42 +0,0 @@
1
- # Skill evals
2
-
3
- Each case under `<skill>/<case>/` is a prompt plus checks that decide whether the agent did the work. `pnpm evals:run` runs every case with Claude Code and the developer's own Claude login; `pnpm evals:run <case> ...` runs the named cases. It copies the project (without `.git` and `node_modules`) to a temporary directory, makes one commit, applies the case's fixture, runs `claude -p` with the prompt, evaluates the checks, prints one line per case, and exits non-zero when any case that ran failed. `AGENT_EVALS_MODEL` sets the model; the default is `claude-haiku-5-5`.
4
-
5
- ## Files of a case
6
-
7
- - `prompt.md`: the prompt, after its front matter.
8
- - `case.yaml`: `expected_outcome`, `timeout_seconds`, an optional `fixture`, and `checks`.
9
- - `fixture.md`: the state the case needs, in prose. A case with this file and no `fixture` in `case.yaml` is reported as `skipped: fixture not machine-applicable`.
10
- - `graders/*.md`: criteria that a model judges. The script does not read them.
11
-
12
- ## Fixture steps
13
-
14
- Steps run in order in the copy. Each is one key:
15
-
16
- | Step | Effect |
17
- | :----------------------- | :--------------------------------------------------------------------------------------------------------- |
18
- | `write: {path, content}` | Writes the file. |
19
- | `commit: <message>` | Commits every change. |
20
- | `branch: <name>` | Creates the branch from the current one and checks it out. |
21
- | `checkout: <name>` | Checks out the branch. |
22
- | `bare_remote: <name>` | Creates a bare repository next to the copy, adds it as the remote `<name>`, and pushes every branch to it. |
23
-
24
- The default branch is `main`.
25
-
26
- ## Checks
27
-
28
- Each entry of `checks` is a kind, or a kind with its argument. Regular expressions use the `m` and `u` flags.
29
-
30
- | Check | Passes when |
31
- | :---------------------------- | :------------------------------------------------------------------------------ |
32
- | `no_file_changes` | The working tree is as the fixture left it. |
33
- | `no_new_commits` | No ref holds a commit that the fixture did not create. |
34
- | `no_new_branch` | No local branch exists that the fixture did not create. |
35
- | `reply_matches: <regex>` | The reply matches. |
36
- | `reply_lacks: <regex>` | The reply does not match. |
37
- | `file_exists: <path>` | The file exists. A glob matches only files the run created or changed. |
38
- | `file_matches: {path, regex}` | A file at `path` matches. A glob matches only files the run created or changed. |
39
- | `commit_touches_only: <glob>` | Every file of the first commit the run made matches the glob. |
40
- | `branch_matches: <regex>` | The checked-out branch matches. |
41
-
42
- A check decides only what a script can decide. What needs judgment stays in `graders/`.
@@ -1,11 +0,0 @@
1
- schema_version: "1.1"
2
- name: answers-question-without-writing
3
- expected_outcome: |
4
- The agent answers why `pnpm verify` runs knip and cites the files it read. It writes no file and makes no commit.
5
- timeout_seconds: 600
6
- checks:
7
- - reply_matches: "knip"
8
- - reply_matches: '[\w./-]+\.(?:json|md|ts|ya?ml)'
9
- - no_file_changes
10
- - no_new_commits
11
- - reply_lacks: '(?:^|[\s`("''])/(?:home|tmp|root|Users|var|private)/'
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The reply explains why `pnpm verify` runs knip and cites at least one file path or command output as its source
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- No file in the project is created or changed
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- No commit is made, nothing is pushed, and no pull request is opened
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- Every path in the reply starts from the project root; none starts from the machine's root
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- Everything the reply states as a fact is backed by a file the session opened or a command it ran; the rest is marked as inferred or not checked
@@ -1,8 +0,0 @@
1
- ---
2
- tags: [skill-creator]
3
- max_turns: 20
4
- timeout_seconds: 600
5
- allowed_tools: [Read, Glob, Grep, Skill, Write, Edit, Bash]
6
- ---
7
-
8
- /sdlc why does pnpm verify also run knip
@@ -1,11 +0,0 @@
1
- schema_version: "1.1"
2
- name: build-continues-from-an-accepted-plan
3
- expected_outcome: |
4
- The plan intent/app-version/plan.md exists on the unmerged branch feat/app-version, and the engineer says it is accepted. The agent checks out that branch, implements the plan, runs the checks under Verifying your work, pushes the branch, opens the pull request, reviews it, and stops at the gate for the code owner. It neither approves nor merges.
5
- timeout_seconds: 1800
6
- checks:
7
- - branch_matches: "^feat/app-version$"
8
- - file_matches:
9
- path: intent/app-version/plan.md
10
- regex: '^Accepted by: @joe-dev\.$'
11
- - commit_touches_only: intent/app-version/plan.md
@@ -1 +0,0 @@
1
- `intent/app-version/intent.md` and `intent/app-version/spec.md` are committed on the default branch. The branch `feat/app-version` holds `intent/app-version/plan.md` as its only commit, is pushed, and is not merged, and its `plan.md` has no `Accepted by:` line; the default branch has no `intent/app-version/plan.md`. `origin` is a repository the session can push to, but it has no pull request host.
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The work happens on the branch `feat/app-version`
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The files the plan names are implemented, and the checks under Verifying your work were run with their output shown
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The branch is pushed, and the reply either gives the pull request URL or says no pull request could be opened and names the branch
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The reply lists the steps of `build.md`, `open-pr.md`, and `review.md`, each under its file name
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The session neither approves nor merges a pull request
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The reply ends at the gate that waits on the code owner
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The plan's `Accepted by:` line names `@joe-dev`, and `plan.md` with that line is committed before any other change on the branch
@@ -1,8 +0,0 @@
1
- ---
2
- tags: [skill-creator]
3
- max_turns: 60
4
- timeout_seconds: 1800
5
- allowed_tools: [Read, Glob, Grep, Skill, Write, Edit, Bash]
6
- ---
7
-
8
- /sdlc I am @joe-dev and I accept the plan in intent/app-version/plan.md. Go ahead and build it.
@@ -1,70 +0,0 @@
1
- schema_version: "1.1"
2
- name: build-interviews-before-planning
3
- expected_outcome: |
4
- The spec intent/app-version/spec.md is merged and has no plan, and the request names no files, order of work, or tests. The agent reads the intent, the spec, and the code, asks numbered questions that each carry a recommended answer, shows no plan yet, changes no code and makes no commit.
5
- timeout_seconds: 900
6
- fixture:
7
- - write:
8
- path: intent/app-version/intent.md
9
- content: |
10
- # Intent: app version endpoint
11
-
12
- Author: Joe (Developer Productivity). Status: accepted.
13
-
14
- ## Problem
15
-
16
- Support cannot tell which version of the service a customer reaches. Each ticket about a regression starts with a question about the version, about ten times a week (count from the support queue).
17
-
18
- ## Proposed outcome
19
-
20
- A caller sees the running version at `GET /version`. Out of scope: build metadata.
21
-
22
- ## Affected users and systems
23
-
24
- Support engineers and the service's HTTP API.
25
-
26
- ## Constraints
27
-
28
- No authentication change.
29
-
30
- ## Open questions
31
-
32
- None
33
- - write:
34
- path: intent/app-version/spec.md
35
- content: |
36
- # Spec: app version endpoint
37
-
38
- From `intent/app-version/intent.md`. Status: accepted.
39
-
40
- Request: "add a version endpoint". Skills at `0000000`.
41
-
42
- ## Requirements
43
-
44
- 1. `GET /version` answers 200 with the JSON body `{"version": "<version in package.json>"}` and no other field.
45
-
46
- ## Design
47
-
48
- `src/version/version.controller.ts` (new) reads the version from `package.json` and returns it.
49
-
50
- ## Policies
51
-
52
- - Brand: Does not apply, no user-visible text.
53
- - Security: Does not apply, the endpoint exposes no secret.
54
- - Compliance: Does not apply, no personal data.
55
- - UX: Does not apply, no interface.
56
-
57
- ## Areas of concern
58
-
59
- None
60
-
61
- ## Open questions
62
-
63
- None
64
- - commit: "docs: add app-version intent and spec"
65
- checks:
66
- - reply_matches: '^\s*(?:\*\*)?1[.)]'
67
- - reply_matches: '^\s*(?:\*\*)?2[.)]'
68
- - reply_lacks: '(?=[\s\S]*Files that change)(?=[\s\S]*Order of work)(?=[\s\S]*Risks)(?=[\s\S]*Proof)'
69
- - no_file_changes
70
- - no_new_commits
@@ -1 +0,0 @@
1
- `intent/app-version/intent.md` and `intent/app-version/spec.md` are committed on the default branch, and no `intent/app-version/plan.md` exists on any branch.
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The reply asks numbered questions about the files the change touches, the order of the work, the tests that prove it, or the options the engineer rules out; each carries a concrete recommended answer that "yes" could accept, or says that it has none to recommend
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The reply shows no plan before the engineer answers
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- No question in the round depends on the answer to another question in the same round
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- No file is changed and no commit is made
@@ -1,8 +0,0 @@
1
- ---
2
- tags: [skill-creator]
3
- max_turns: 30
4
- timeout_seconds: 900
5
- allowed_tools: [Read, Glob, Grep, Skill, Write, Edit, Bash]
6
- ---
7
-
8
- /sdlc build from intent/app-version/spec.md
@@ -1,67 +0,0 @@
1
- schema_version: "1.1"
2
- name: build-plans-and-waits-for-the-engineer
3
- expected_outcome: |
4
- The spec intent/app-version/spec.md is merged and has no plan, and the request already holds the engineer's answers about the files, the order of work, the tests, and the options ruled out. The agent follows the build playbook: it reads the intent, the spec, and the code, asks no question, shows the plan with the template's four headings, changes no code and makes no commit, and waits at the gate for the engineer to accept the plan.
5
- timeout_seconds: 900
6
- fixture:
7
- - write:
8
- path: intent/app-version/intent.md
9
- content: |
10
- # Intent: app version endpoint
11
-
12
- Author: Joe (Developer Productivity). Status: accepted.
13
-
14
- ## Problem
15
-
16
- Support cannot tell which version of the service a customer reaches. Each ticket about a regression starts with a question about the version, about ten times a week (count from the support queue).
17
-
18
- ## Proposed outcome
19
-
20
- A caller sees the running version at `GET /version`. Out of scope: build metadata.
21
-
22
- ## Affected users and systems
23
-
24
- Support engineers and the service's HTTP API.
25
-
26
- ## Constraints
27
-
28
- No authentication change.
29
-
30
- ## Open questions
31
-
32
- None
33
- - write:
34
- path: intent/app-version/spec.md
35
- content: |
36
- # Spec: app version endpoint
37
-
38
- From `intent/app-version/intent.md`. Status: accepted.
39
-
40
- Request: "add a version endpoint". Skills at `0000000`.
41
-
42
- ## Requirements
43
-
44
- 1. `GET /version` answers 200 with the JSON body `{"version": "<version in package.json>"}` and no other field.
45
-
46
- ## Design
47
-
48
- `src/version/version.controller.ts` (new) reads the version from `package.json` and returns it.
49
-
50
- ## Policies
51
-
52
- - Brand: Does not apply, no user-visible text.
53
- - Security: Does not apply, the endpoint exposes no secret.
54
- - Compliance: Does not apply, no personal data.
55
- - UX: Does not apply, no interface.
56
-
57
- ## Areas of concern
58
-
59
- None
60
-
61
- ## Open questions
62
-
63
- None
64
- - commit: "docs: add app-version intent and spec"
65
- checks:
66
- - no_new_commits
67
- - reply_matches: '(?=[\s\S]*Files that change)(?=[\s\S]*Order of work)(?=[\s\S]*Risks)(?=[\s\S]*Proof)'
@@ -1 +0,0 @@
1
- `intent/app-version/intent.md` and `intent/app-version/spec.md` are committed on the default branch, and no `intent/app-version/plan.md` exists on any branch.
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The reply shows a plan with exactly the template's four headings: Files that change, Order of work, Risks, and Proof
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- No source file is changed and no commit is made
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The reply names the gate that waits on the engineer to accept the plan
@@ -1,10 +0,0 @@
1
- ---
2
- tags: [skill-creator]
3
- max_turns: 30
4
- timeout_seconds: 900
5
- allowed_tools: [Read, Glob, Grep, Skill, Write, Edit, Bash]
6
- ---
7
-
8
- /sdlc build from intent/app-version/spec.md
9
-
10
- My answers: the only file that changes is src/version/version.controller.ts, a new file. The order of work is the test first and then the controller. The proof is one unit test file that checks that GET /version answers 200 with the version from package.json. The option I rule out is reading the version from an environment variable. No open questions.
@@ -1,7 +0,0 @@
1
- schema_version: "1.1"
2
- name: deploy-stops-at-the-production-gate
3
- expected_outcome: |
4
- The agent follows the deploy playbook and reports where the latest commit is, saying what it could not read. It starts no deployment and runs no command that names prod. It stops at the gate for the release manager and says the exact action the release manager takes.
5
- timeout_seconds: 600
6
- checks:
7
- - no_new_commits
@@ -1 +0,0 @@
1
- A generated project with a local `origin` and no GitHub host. The deploy workflow is present, and whether `DEPLOY_ENABLED` is `true` is unknown.
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The session starts no deployment and runs no command that names `prod`
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The reply names the gate that waits on the release manager and the exact action the release manager takes to promote the commit, even when it could not read the CI run or an environment
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The reply says what it could not read, such as the CI run or the deployment history, by marking the commit as not verified or an environment as "not read" with the reason, instead of guessing
@@ -1,8 +0,0 @@
1
- ---
2
- tags: [skill-creator]
3
- max_turns: 20
4
- timeout_seconds: 600
5
- allowed_tools: [Read, Glob, Grep, Skill, Write, Edit, Bash]
6
- ---
7
-
8
- /sdlc deploy the latest commit to prod
@@ -1,12 +0,0 @@
1
- schema_version: "1.1"
2
- name: drafts-intent-and-waits-for-yes
3
- expected_outcome: |
4
- The agent writes `intent/<change>/intent.md` from the template, shows the whole draft, and asks whether it matches. It does not commit, push, or open a pull request before the originator says yes.
5
- timeout_seconds: 600
6
- checks:
7
- - file_matches:
8
- path: intent/*/intent.md
9
- regex: '(?=[\s\S]*^## Problem$)(?=[\s\S]*^## Proposed outcome$)(?=[\s\S]*^## Affected users and systems$)(?=[\s\S]*^## Constraints$)(?=[\s\S]*^## Open questions$)'
10
- - no_new_commits
11
- - no_new_branch
12
- - reply_lacks: '(?:^|[\s`("''])/(?:home|tmp|root|Users|var|private)/'
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- A file `intent/<kebab-case-name>/intent.md` exists with the sections Problem, Proposed outcome, Affected users and systems, Constraints, and Open questions
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The reply shows the draft and asks the originator whether it matches what they meant
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- No commit is made, nothing is pushed, and no pull request is opened
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The reply's Steps block lists the plan playbook's seven steps, each copied word for word, and marks each one done, open, or `skip:` with a reason
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- Every path in the reply starts from the project root; none starts from the machine's root
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The draft's Open questions section lists what is still unknown or unverified, and says "None" only when nothing is
@@ -1,10 +0,0 @@
1
- ---
2
- tags: [skill-creator]
3
- max_turns: 20
4
- timeout_seconds: 600
5
- allowed_tools: [Read, Glob, Grep, Skill, Write, Edit, Bash]
6
- ---
7
-
8
- /sdlc write an intent for adding a CSV export button to the reports page
9
-
10
- My answers: the users are the 12 people of the accounting team, who use it at every month end. Today they copy the table into Excel by hand, about 20 minutes each (the figure is from the head of accounting). The outcome I want is one button that gives a CSV file of the open report. The constraint is that access rights to reports must not change. Out of scope are PDF and Excel export. The reports page is in the web-app repo of the Finance Tools team; keep the intent in this repo. I am Joe from the Developer Productivity team. No open questions.
@@ -1,33 +0,0 @@
1
- schema_version: "1.1"
2
- name: fix-reproduces-finds-the-cause-and-waits-for-the-engineer
3
- expected_outcome: |
4
- The message reports a defect in behaviour that already exists: parseVersion("1.2") in src/version.ts returns "1.NaN.0". The agent follows the fix playbook: it runs the code and shows the reproduction output, names the one cause the evidence leaves after ruling out the others, shows a plan with the template's four headings, changes no file and makes no commit, and waits at the gate for the engineer to accept the plan.
5
- timeout_seconds: 900
6
- fixture:
7
- - write:
8
- path: src/version.ts
9
- content: |
10
- export function parseVersion(input: string): string {
11
- const parts = input.split(".");
12
- const major = parts[0];
13
- const minor = parts.length === 3 ? parts[1] : Number(parts[2]);
14
- const patch = parts[2] ?? "0";
15
-
16
- return `${major}.${minor}.${patch}`;
17
- }
18
- - write:
19
- path: test/version.test.ts
20
- content: |
21
- import {expect, it} from "vitest";
22
- import {parseVersion} from "../src/version.ts";
23
-
24
- it("keeps a three-part version", () => {
25
- expect(parseVersion("1.2.3")).toBe("1.2.3");
26
- });
27
- - commit: "fix: add parseVersion"
28
- checks:
29
- - reply_matches: '1\.NaN\.0'
30
- - reply_matches: '(?=[\s\S]*Files that change)(?=[\s\S]*Order of work)(?=[\s\S]*Risks)(?=[\s\S]*Proof)'
31
- - reply_matches: 'intent/[\w-]+/plan\.md'
32
- - no_file_changes
33
- - no_new_commits
@@ -1 +0,0 @@
1
- `src/version.ts` exports `parseVersion`, which returns `"1.NaN.0"` for the input `"1.2"` and the right result for `"1.2.3"`. `test/version.test.ts` holds passing cases for three-part versions. No `intent/` folder exists for this defect, and no branch holds a plan for it.
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The reply shows the output of running the code that reproduces the defect
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The reply lists candidate causes, rules each out with a command or an observation, and names the one cause the evidence leaves
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The reply shows a plan named intent/<short-description>/plan.md with exactly the template's four headings: Files that change, Order of work, Risks, and Proof
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- No file is changed and no commit is made
@@ -1,7 +0,0 @@
1
- ---
2
- type: llm
3
- focus: trace
4
- weight: 1
5
- ---
6
-
7
- The reply names the gate that waits on the engineer to accept the plan