@next-friday/create-app 9.1.0 → 9.2.0

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 (338) hide show
  1. package/README.md +5 -4
  2. package/dist/main.mjs +135 -96
  3. package/package.json +8 -6
  4. package/templates/base/.agents/hooks/agent-mcp-gate.sh +7 -2
  5. package/templates/base/.agents/hooks/agent-production-gate.sh +6 -1
  6. package/templates/base/.agents/hooks/agent-shell-gate.sh +1 -181
  7. package/templates/base/.agents/hooks/agent-test-edit-gate.sh +12 -3
  8. package/templates/base/.agents/review.md +2 -2
  9. package/templates/base/.agents/rules/no-suppression.md +1 -1
  10. package/templates/base/.agents/skill-evals/README.md +42 -0
  11. package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/case.yaml +12 -0
  12. package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/graders/01-the-reply-explains-why-pnpm.md +7 -0
  13. package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/graders/02-no-file-in-the-project.md +7 -0
  14. package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/graders/03-no-commit-is-made-nothing.md +7 -0
  15. package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/graders/04-the-reply-is-in-the.md +7 -0
  16. package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/graders/05-every-path-in-the-reply.md +7 -0
  17. package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/graders/06-everything-the-reply-states-as.md +7 -0
  18. package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/prompt.md +8 -0
  19. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/case.yaml +12 -0
  20. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/fixture.md +1 -0
  21. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/01-work-happens-on-the-plan-branch.md +7 -0
  22. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/02-the-plan-is-implemented-and-checked.md +7 -0
  23. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/03-the-branch-is-pushed.md +7 -0
  24. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/04-the-reply-lists-three-playbooks.md +7 -0
  25. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/05-no-approval-and-no-merge.md +7 -0
  26. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/06-the-reply-ends-at-the-code-owner.md +7 -0
  27. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/07-the-plan-names-the-engineer.md +7 -0
  28. package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/prompt.md +8 -0
  29. package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/case.yaml +71 -0
  30. package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/fixture.md +1 -0
  31. package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/graders/01-the-reply-asks-numbered-questions.md +7 -0
  32. package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/graders/02-no-plan-before-the-answers.md +7 -0
  33. package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/graders/03-no-question-depends-on-another.md +7 -0
  34. package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/graders/04-no-file-or-commit.md +7 -0
  35. package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/graders/05-the-reply-is-in-thai.md +7 -0
  36. package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/prompt.md +8 -0
  37. package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/case.yaml +68 -0
  38. package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/fixture.md +1 -0
  39. package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/graders/01-the-plan-has-the-four-headings.md +7 -0
  40. package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/graders/02-no-source-file-or-commit.md +7 -0
  41. package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/graders/03-the-reply-names-the-gate.md +7 -0
  42. package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/graders/04-the-reply-is-in-thai.md +7 -0
  43. package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/prompt.md +10 -0
  44. package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/case.yaml +8 -0
  45. package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/fixture.md +1 -0
  46. package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/graders/01-no-deployment-is-started.md +7 -0
  47. package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/graders/02-the-reply-names-the-release-manager-gate.md +7 -0
  48. package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/graders/03-the-reply-says-what-it-could-not-read.md +7 -0
  49. package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/graders/04-the-reply-is-in-the-language.md +7 -0
  50. package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/prompt.md +8 -0
  51. package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/case.yaml +13 -0
  52. package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/01-a-file-intentkebabcasenameintentmd-exists-with.md +7 -0
  53. package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/02-the-reply-shows-the-draft.md +7 -0
  54. package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/03-no-commit-is-made-nothing.md +7 -0
  55. package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/04-reply-lists-the-playbook-steps.md +7 -0
  56. package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/05-the-reply-is-in-the.md +7 -0
  57. package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/06-every-path-in-the-reply.md +7 -0
  58. package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/07-the-drafts-open-questions-section.md +7 -0
  59. package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/prompt.md +10 -0
  60. package/templates/base/.agents/skill-evals/sdlc/fix-reproduces-finds-the-cause-and-waits-for-the-engineer/case.yaml +34 -0
  61. package/templates/base/.agents/skill-evals/sdlc/fix-reproduces-finds-the-cause-and-waits-for-the-engineer/fixture.md +1 -0
  62. 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 +7 -0
  63. 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 +7 -0
  64. 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 +7 -0
  65. package/templates/base/.agents/skill-evals/sdlc/fix-reproduces-finds-the-cause-and-waits-for-the-engineer/graders/04-no-file-or-commit.md +7 -0
  66. 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 +7 -0
  67. package/templates/base/.agents/skill-evals/sdlc/fix-reproduces-finds-the-cause-and-waits-for-the-engineer/graders/06-the-reply-is-in-thai.md +7 -0
  68. package/templates/base/.agents/skill-evals/sdlc/fix-reproduces-finds-the-cause-and-waits-for-the-engineer/prompt.md +8 -0
  69. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/case.yaml +12 -0
  70. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/01-the-first-message-restates-the.md +7 -0
  71. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/02-the-reply-asks-numbered-questions.md +7 -0
  72. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/03-no-intentmd-is-written-before.md +7 -0
  73. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/04-reply-lists-the-playbook-steps.md +7 -0
  74. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/05-no-commit-is-made-nothing.md +7 -0
  75. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/06-the-reply-is-in-the.md +7 -0
  76. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/07-every-path-in-the-reply.md +7 -0
  77. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/08-no-question-in-the-round.md +7 -0
  78. package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/prompt.md +8 -0
  79. package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/case.yaml +14 -0
  80. package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/fixture.md +1 -0
  81. package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/graders/01-the-intent-has-the-five-headings.md +7 -0
  82. package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/graders/02-problem-holds-the-error-and-where.md +7 -0
  83. package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/graders/03-unverified-cause-is-an-open-question.md +7 -0
  84. package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/graders/04-no-source-file-is-changed.md +7 -0
  85. 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 +7 -0
  86. package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/graders/06-the-person-is-asked-no-question.md +7 -0
  87. package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/prompt.md +8 -0
  88. package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/case.yaml +12 -0
  89. package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/graders/01-the-reply-follows-the-plan.md +7 -0
  90. package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/graders/02-the-reply-does-not-tell.md +7 -0
  91. package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/graders/03-no-file-is-created-or.md +7 -0
  92. package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/graders/04-the-reply-is-in-the.md +7 -0
  93. package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/graders/05-every-path-in-the-reply.md +7 -0
  94. package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/prompt.md +8 -0
  95. package/templates/base/.agents/skill-evals/sdlc/request-that-fits-no-row/case.yaml +11 -0
  96. package/templates/base/.agents/skill-evals/sdlc/request-that-fits-no-row/fixture.md +1 -0
  97. package/templates/base/.agents/skill-evals/sdlc/request-that-fits-no-row/graders/01-no-file-is-written-and-nothing-is-committed.md +7 -0
  98. package/templates/base/.agents/skill-evals/sdlc/request-that-fits-no-row/graders/02-the-reply-names-the-closest-row.md +7 -0
  99. package/templates/base/.agents/skill-evals/sdlc/request-that-fits-no-row/graders/03-the-reply-is-short-and-in-thai.md +7 -0
  100. package/templates/base/.agents/skill-evals/sdlc/request-that-fits-no-row/prompt.md +8 -0
  101. package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/case.yaml +79 -0
  102. package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/fixture.md +1 -0
  103. package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/graders/01-findings-have-pass-severity-and-location.md +7 -0
  104. package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/graders/02-no-approval-and-no-merge.md +7 -0
  105. package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/graders/03-the-reply-names-the-code-owner-gate.md +7 -0
  106. package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/graders/04-nothing-is-pushed-or-changed.md +7 -0
  107. package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/graders/05-the-review-runs-in-a-fresh-context.md +7 -0
  108. package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/prompt.md +8 -0
  109. package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/case.yaml +42 -0
  110. package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/fixture.md +1 -0
  111. package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/graders/01-no-spec-is-written.md +7 -0
  112. package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/graders/02-no-commit-is-made.md +7 -0
  113. package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/graders/03-the-reply-says-not-merged.md +7 -0
  114. package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/graders/04-the-reply-is-in-the.md +7 -0
  115. package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/graders/05-the-reply-is-short.md +7 -0
  116. package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/prompt.md +8 -0
  117. package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/case.yaml +12 -0
  118. package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/graders/01-no-intentmd-or-any-other.md +7 -0
  119. package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/graders/02-no-commit-is-made-nothing.md +7 -0
  120. package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/graders/03-the-reply-is-in-the.md +7 -0
  121. package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/graders/04-every-path-in-the-reply.md +7 -0
  122. package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/graders/05-the-reply-says-that-work.md +7 -0
  123. package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/prompt.md +8 -0
  124. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/case.yaml +42 -0
  125. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/fixture.md +1 -0
  126. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/01-the-spec-has-the-five-headings.md +7 -0
  127. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/02-policies-has-one-line-per-policy.md +7 -0
  128. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/03-no-policy-is-called-unwritten.md +7 -0
  129. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/04-a-branch-is-pushed-for-review.md +7 -0
  130. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/05-the-reply-names-the-gate.md +7 -0
  131. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/06-the-reply-is-in-the.md +7 -0
  132. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/07-no-merge-is-made.md +7 -0
  133. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/08-the-four-policies-are-read-before-writing.md +7 -0
  134. package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/prompt.md +8 -0
  135. package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/case.yaml +11 -0
  136. package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/graders/01-the-reply-says-that-work.md +7 -0
  137. package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/graders/02-the-reply-gives-one-example.md +7 -0
  138. package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/graders/03-the-reply-lists-the-project.md +7 -0
  139. package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/graders/04-no-file-is-created-or.md +7 -0
  140. package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/graders/05-the-reply-is-in-the.md +7 -0
  141. package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/graders/06-every-path-in-the-reply.md +7 -0
  142. package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/prompt.md +8 -0
  143. package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/case.yaml +10 -0
  144. package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/graders/01-the-reply-says-that-this.md +7 -0
  145. package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/graders/02-the-reply-does-not-describe.md +7 -0
  146. package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/graders/03-no-file-is-created-or.md +7 -0
  147. package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/graders/04-the-reply-is-in-the.md +7 -0
  148. package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/graders/05-every-path-in-the-reply.md +7 -0
  149. package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/prompt.md +8 -0
  150. package/templates/base/.agents/skill-evals/sdlc-help/work-request-is-sent-to-sdlc/case.yaml +11 -0
  151. package/templates/base/.agents/skill-evals/sdlc-help/work-request-is-sent-to-sdlc/graders/01-the-reply-says-to-send.md +7 -0
  152. package/templates/base/.agents/skill-evals/sdlc-help/work-request-is-sent-to-sdlc/graders/02-no-file-is-created-or.md +7 -0
  153. package/templates/base/.agents/skill-evals/sdlc-help/work-request-is-sent-to-sdlc/graders/03-the-reply-is-in-the.md +7 -0
  154. package/templates/base/.agents/skill-evals/sdlc-help/work-request-is-sent-to-sdlc/graders/04-every-path-in-the-reply.md +7 -0
  155. package/templates/base/.agents/skill-evals/sdlc-help/work-request-is-sent-to-sdlc/prompt.md +8 -0
  156. package/templates/base/.agents/skills/sdlc/SKILL.md +25 -21
  157. package/templates/base/.agents/skills/sdlc/playbooks/build.md +13 -8
  158. package/templates/base/.agents/skills/sdlc/playbooks/deploy.md +2 -2
  159. package/templates/base/.agents/skills/sdlc/playbooks/design.md +4 -4
  160. package/templates/base/.agents/skills/sdlc/playbooks/fix.md +23 -0
  161. package/templates/base/.agents/skills/sdlc/playbooks/maintain.md +2 -3
  162. package/templates/base/.agents/skills/sdlc/playbooks/open-pr.md +3 -3
  163. package/templates/base/.agents/skills/sdlc/playbooks/plan.md +2 -2
  164. package/templates/base/.agents/skills/sdlc/playbooks/review.md +2 -2
  165. package/templates/base/.agents/skills/sdlc-help/SKILL.md +3 -1
  166. package/templates/base/.claude/managed-settings.example.json +2 -2
  167. package/templates/base/.claude/settings.json +0 -13
  168. package/templates/base/.claude/skills/sdlc/SKILL.md +25 -21
  169. package/templates/base/.claude/skills/sdlc/playbooks/build.md +13 -8
  170. package/templates/base/.claude/skills/sdlc/playbooks/deploy.md +2 -2
  171. package/templates/base/.claude/skills/sdlc/playbooks/design.md +4 -4
  172. package/templates/base/.claude/skills/sdlc/playbooks/fix.md +23 -0
  173. package/templates/base/.claude/skills/sdlc/playbooks/maintain.md +2 -3
  174. package/templates/base/.claude/skills/sdlc/playbooks/open-pr.md +3 -3
  175. package/templates/base/.claude/skills/sdlc/playbooks/plan.md +2 -2
  176. package/templates/base/.claude/skills/sdlc/playbooks/review.md +2 -2
  177. package/templates/base/.claude/skills/sdlc-help/SKILL.md +3 -1
  178. package/templates/base/.cursor/hooks.json +0 -6
  179. package/templates/base/.cursor/rules/no-suppression.mdc +1 -1
  180. package/templates/base/.cursor/skills/sdlc/SKILL.md +25 -21
  181. package/templates/base/.cursor/skills/sdlc/playbooks/build.md +13 -8
  182. package/templates/base/.cursor/skills/sdlc/playbooks/deploy.md +2 -2
  183. package/templates/base/.cursor/skills/sdlc/playbooks/design.md +4 -4
  184. package/templates/base/.cursor/skills/sdlc/playbooks/fix.md +23 -0
  185. package/templates/base/.cursor/skills/sdlc/playbooks/maintain.md +2 -3
  186. package/templates/base/.cursor/skills/sdlc/playbooks/open-pr.md +3 -3
  187. package/templates/base/.cursor/skills/sdlc/playbooks/plan.md +2 -2
  188. package/templates/base/.cursor/skills/sdlc/playbooks/review.md +2 -2
  189. package/templates/base/.cursor/skills/sdlc-help/SKILL.md +3 -1
  190. package/templates/base/.github/ISSUE_TEMPLATE/documentation.yml +1 -1
  191. package/templates/base/.github/dependabot.yml +1 -10
  192. package/templates/base/.github/file-filters.yml +3 -6
  193. package/templates/base/.github/workflows/agent-evals.yml +46 -0
  194. package/templates/base/.github/workflows/claude-fix-loop.yml +45 -0
  195. package/templates/base/.github/workflows/control-band.yml +115 -0
  196. package/templates/base/.github/workflows/dependency-review.yml +1 -0
  197. package/templates/base/.github/workflows/deploy.yml +4 -2
  198. package/templates/base/.github/workflows/osv-scanner.yml +0 -5
  199. package/templates/base/.github/workflows/pr-triage.yml +1 -1
  200. package/templates/base/.github/workflows/secret-scan.yml +4 -1
  201. package/templates/base/.github/workflows/spec-on-intent-merge.yml +108 -0
  202. package/templates/base/.github/workflows/validate-pr-title.yml +3 -2
  203. package/templates/base/.husky/pre-push +1 -8
  204. package/templates/base/REVIEW.md +2 -2
  205. package/templates/base/SETUP.md +44 -8
  206. package/templates/base/bands.yaml +3 -3
  207. package/templates/base/intent/README.md +1 -0
  208. package/templates/base/knip.json +2 -1
  209. package/templates/base/pnpm-workspace.yaml +1 -22
  210. package/templates/base/runbooks/rollback-deploy.md +27 -0
  211. package/templates/base/scripts/check-agent-gates.ts +251 -225
  212. package/templates/base/scripts/check-bands.ts +665 -0
  213. package/templates/base/scripts/check-plan.ts +1047 -0
  214. package/templates/base/scripts/measure-loop.ts +293 -0
  215. package/templates/base/scripts/run-agent-evals.ts +1186 -0
  216. package/templates/base/scripts/sync-agent-rules.ts +0 -8
  217. package/templates/nestjs/.dependency-cruiser.json +1 -1
  218. package/templates/nestjs/.github/ISSUE_TEMPLATE/bug.yml +5 -5
  219. package/templates/nestjs/.github/workflows/ci.yml +58 -9
  220. package/templates/nestjs/.github/workflows/sast.yml +0 -5
  221. package/templates/nestjs/AGENTS.md +16 -12
  222. package/templates/nestjs/CONTRIBUTING.md +3 -2
  223. package/templates/nestjs/Dockerfile +4 -4
  224. package/templates/nestjs/README.md +4 -6
  225. package/templates/nestjs/_gitignore +0 -1
  226. package/templates/nestjs/package.json +15 -13
  227. package/templates/nestjs/src/app.controller.test.ts +1 -0
  228. package/templates/nestjs/src/health/health.controller.test.ts +1 -0
  229. package/templates/nestjs/src/port.test.ts +1 -0
  230. package/templates/nestjs/test/app.e2e.test.ts +1 -0
  231. package/templates/nestjs/tsconfig.build.json +2 -3
  232. package/templates/nestjs/tsconfig.json +1 -3
  233. package/templates/nestjs/vitest.config.ts +0 -1
  234. package/templates/nestjs/vitest.e2e.config.ts +0 -1
  235. package/templates/nextjs/.dependency-cruiser.json +1 -1
  236. package/templates/nextjs/.github/ISSUE_TEMPLATE/bug.yml +1 -1
  237. package/templates/nextjs/.github/workflows/ci.yml +58 -9
  238. package/templates/nextjs/.github/workflows/sast.yml +0 -5
  239. package/templates/nextjs/AGENTS.md +16 -12
  240. package/templates/nextjs/CONTRIBUTING.md +3 -2
  241. package/templates/nextjs/Dockerfile +2 -2
  242. package/templates/nextjs/README.md +5 -3
  243. package/templates/nextjs/app/layout.tsx +2 -2
  244. package/templates/nextjs/app/page.test.ts +1 -1
  245. package/templates/nextjs/app/page.tsx +1 -1
  246. package/templates/nextjs/package.json +9 -8
  247. package/templates/nextjs/test/home.e2e.test.ts +3 -7
  248. package/templates/nextjs/tsconfig.json +0 -3
  249. package/templates/nodejs/.dependency-cruiser.json +1 -1
  250. package/templates/nodejs/.github/ISSUE_TEMPLATE/bug.yml +5 -5
  251. package/templates/nodejs/.github/workflows/ci.yml +58 -9
  252. package/templates/nodejs/.github/workflows/sast.yml +0 -5
  253. package/templates/nodejs/AGENTS.md +16 -11
  254. package/templates/nodejs/CONTRIBUTING.md +4 -3
  255. package/templates/nodejs/Dockerfile +3 -3
  256. package/templates/nodejs/README.md +4 -4
  257. package/templates/nodejs/_gitignore +0 -1
  258. package/templates/nodejs/package.json +11 -9
  259. package/templates/nodejs/src/server.test.ts +23 -0
  260. package/templates/nodejs/src/server.ts +2 -2
  261. package/templates/nodejs/tsconfig.build.json +2 -3
  262. package/templates/nodejs/tsconfig.json +0 -4
  263. package/templates/payload/.agents/agents/verifier.md +1 -1
  264. package/templates/payload/.agents/review.md +21 -0
  265. package/templates/payload/.claude/agents/verifier.md +1 -1
  266. package/templates/payload/.cursor/agents/verifier.md +1 -1
  267. package/templates/payload/.dependency-cruiser.json +1 -1
  268. package/templates/payload/.github/ISSUE_TEMPLATE/bug.yml +1 -1
  269. package/templates/payload/.github/workflows/ci.yml +75 -10
  270. package/templates/payload/.github/workflows/sast.yml +0 -5
  271. package/templates/payload/AGENTS.md +21 -17
  272. package/templates/payload/CONTRIBUTING.md +4 -3
  273. package/templates/payload/Dockerfile +2 -2
  274. package/templates/payload/README.md +8 -4
  275. package/templates/payload/REVIEW.md +21 -0
  276. package/templates/payload/package.json +9 -7
  277. package/templates/payload/src/app/(frontend)/layout.tsx +2 -2
  278. package/templates/payload/src/app/(frontend)/page.test.ts +1 -1
  279. package/templates/payload/src/app/(frontend)/page.tsx +1 -1
  280. package/templates/payload/src/app/favicon.ico +0 -0
  281. package/templates/payload/src/app/health/route.test.ts +20 -2
  282. package/templates/payload/src/app/health/route.ts +9 -2
  283. package/templates/payload/src/collections/media.test.ts +36 -1
  284. package/templates/payload/src/collections/media.ts +1 -1
  285. package/templates/payload/src/payload.config.test.ts +15 -0
  286. package/templates/payload/test/home.e2e.test.ts +3 -7
  287. package/templates/payload/tsconfig.json +0 -1
  288. package/templates/turborepo/.agents/agents/verifier.md +1 -1
  289. package/templates/turborepo/.agents/review.md +21 -0
  290. package/templates/turborepo/.claude/agents/verifier.md +1 -1
  291. package/templates/turborepo/.cursor/agents/verifier.md +1 -1
  292. package/templates/turborepo/.dockerignore +9 -4
  293. package/templates/turborepo/.github/ISSUE_TEMPLATE/bug.yml +16 -1
  294. package/templates/turborepo/.github/dependabot.yml +1 -10
  295. package/templates/turborepo/.github/scripts/affected-apps.sh +5 -23
  296. package/templates/turborepo/.github/workflows/ci.yml +140 -103
  297. package/templates/turborepo/.github/workflows/deploy.yml +24 -23
  298. package/templates/turborepo/.github/workflows/sast.yml +0 -5
  299. package/templates/turborepo/AGENTS.md +21 -17
  300. package/templates/turborepo/CONTRIBUTING.md +6 -4
  301. package/templates/turborepo/README.md +8 -8
  302. package/templates/turborepo/REVIEW.md +21 -0
  303. package/templates/turborepo/apps/app/.dependency-cruiser.json +1 -1
  304. package/templates/turborepo/apps/app/AGENTS.md +9 -0
  305. package/templates/turborepo/apps/app/Dockerfile +2 -2
  306. package/templates/turborepo/apps/app/app/layout.tsx +2 -2
  307. package/templates/turborepo/apps/app/app/page.test.ts +1 -1
  308. package/templates/turborepo/apps/app/app/page.tsx +1 -1
  309. package/templates/turborepo/apps/app/package.json +3 -3
  310. package/templates/turborepo/apps/app/test/home.e2e.test.ts +3 -7
  311. package/templates/turborepo/apps/app/tsconfig.json +0 -3
  312. package/templates/turborepo/apps/backoffice/.dependency-cruiser.json +1 -1
  313. package/templates/turborepo/apps/backoffice/AGENTS.md +9 -0
  314. package/templates/turborepo/apps/backoffice/Dockerfile +2 -2
  315. package/templates/turborepo/apps/backoffice/package.json +4 -3
  316. package/templates/turborepo/apps/backoffice/src/app/(frontend)/layout.tsx +2 -2
  317. package/templates/turborepo/apps/backoffice/src/app/(frontend)/page.test.ts +1 -1
  318. package/templates/turborepo/apps/backoffice/src/app/(frontend)/page.tsx +1 -1
  319. package/templates/turborepo/apps/backoffice/src/app/favicon.ico +0 -0
  320. package/templates/turborepo/apps/backoffice/src/app/health/route.test.ts +20 -2
  321. package/templates/turborepo/apps/backoffice/src/app/health/route.ts +10 -2
  322. package/templates/turborepo/apps/backoffice/src/collections/media.test.ts +36 -1
  323. package/templates/turborepo/apps/backoffice/src/collections/media.ts +1 -1
  324. package/templates/turborepo/apps/backoffice/src/environment.test.ts +19 -0
  325. package/templates/turborepo/apps/backoffice/src/payload.config.test.ts +15 -0
  326. package/templates/turborepo/apps/backoffice/test/home.e2e.test.ts +3 -7
  327. package/templates/turborepo/apps/backoffice/tsconfig.json +0 -1
  328. package/templates/turborepo/knip.json +4 -2
  329. package/templates/turborepo/package.json +15 -15
  330. package/templates/turborepo/pnpm-workspace.yaml +1 -22
  331. package/templates/turborepo/turbo.json +32 -11
  332. package/templates/base/.agents/hooks/agent-suppression-gate.sh +0 -45
  333. package/templates/base/.claude/rules/agents-guide.md +0 -1
  334. package/templates/base/scripts/check-human-gates.ts +0 -383
  335. package/templates/base/scripts/check-intent.ts +0 -391
  336. package/templates/nextjs/knip.json +0 -4
  337. package/templates/payload/src/collections/users.test.ts +0 -10
  338. package/templates/turborepo/apps/backoffice/src/collections/users.test.ts +0 -10
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ No file is written and nothing is committed
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The reply says which row of the `/sdlc` table is closest and why it does not fit
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The reply is in Thai, the language of the person's message, and a few lines long
@@ -0,0 +1,8 @@
1
+ ---
2
+ tags: [skill-creator]
3
+ max_turns: 10
4
+ timeout_seconds: 300
5
+ allowed_tools: [Read, Glob, Grep, Skill, Write, Edit, Bash]
6
+ ---
7
+
8
+ /sdlc ช่วยแต่งกลอนวันเกิดให้หัวหน้าหน่อย
@@ -0,0 +1,79 @@
1
+ schema_version: "1.1"
2
+ name: review-reports-findings-and-never-merges
3
+ expected_outcome: |
4
+ The branch feat/app-version holds a change with one bug. The agent follows the review playbook: it reviews the diff with a fresh context, reports the finding with its pass, severity, and path:line, and stops at the gate for the code owner. It neither approves nor merges.
5
+ timeout_seconds: 1200
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
+ - branch: feat/app-version
66
+ - write:
67
+ path: src/version/version.controller.ts
68
+ content: |
69
+ export function getVersion(): {build: string; version: string} {
70
+ return {build: "local", version: "1.0.0"};
71
+ }
72
+ - commit: "feat: add version controller"
73
+ - checkout: main
74
+ - bare_remote: origin
75
+ checks:
76
+ - reply_matches: '\b(?:Important|Nit)\b'
77
+ - reply_matches: 'src/version/version\.controller\.ts:\d+'
78
+ - no_file_changes
79
+ - no_new_commits
@@ -0,0 +1 @@
1
+ The branch `feat/app-version`, which the session did not create, is pushed. Its diff against the default branch contains one bug: `src/version/version.controller.ts` returns a hardcoded version and an extra field, against `intent/app-version/spec.md`. When the session has a pull request host, an open pull request holds that diff.
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The finding is reported with its pass, its severity, and `path:line`
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The session neither approves nor merges a pull request
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The reply names the gate that waits on the code owner
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The session pushes nothing to the branch `feat/app-version` and changes no file
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The trace shows the review ran in a fresh context: a subagent that was given only the diff, `REVIEW.md`, and the change's spec and plan, or, when no subagent could start, the diff read again from the first line
@@ -0,0 +1,8 @@
1
+ ---
2
+ tags: [skill-creator]
3
+ max_turns: 40
4
+ timeout_seconds: 1200
5
+ allowed_tools: [Read, Glob, Grep, Skill, Write, Edit, Bash]
6
+ ---
7
+
8
+ /sdlc review branch feat/app-version
@@ -0,0 +1,42 @@
1
+ schema_version: "1.1"
2
+ name: spec-for-unmerged-intent-stops
3
+ expected_outcome: |
4
+ The intent intent/dark-mode/intent.md exists only on the branch docs/dark-mode-intent. The agent says in a few lines that the intent is not merged yet, names that branch, and stops. It writes no spec and makes no commit.
5
+ timeout_seconds: 600
6
+ fixture:
7
+ - branch: docs/dark-mode-intent
8
+ - write:
9
+ path: intent/dark-mode/intent.md
10
+ content: |
11
+ # Intent: dark mode
12
+
13
+ Author: Joe (Developer Productivity). Status: draft.
14
+
15
+ ## Problem
16
+
17
+ Users who work at night find the white interface tiring.
18
+
19
+ ## Proposed outcome
20
+
21
+ A dark theme that follows the system setting.
22
+
23
+ ## Affected users and systems
24
+
25
+ All users of the interface.
26
+
27
+ ## Constraints
28
+
29
+ None
30
+
31
+ ## Open questions
32
+
33
+ None
34
+ - commit: "docs: add dark-mode intent"
35
+ - checkout: main
36
+ - bare_remote: origin
37
+ checks:
38
+ - reply_matches: "docs/dark-mode-intent"
39
+ - no_file_changes
40
+ - no_new_commits
41
+ - no_new_branch
42
+ - reply_matches: '[\u0E00-\u0E7F]{10}'
@@ -0,0 +1 @@
1
+ `intent/dark-mode/intent.md` exists only on the branch `docs/dark-mode-intent`; the default branch has no `intent/dark-mode/` folder.
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ No `spec.md` is written
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ No new commit is made, nothing is pushed, and no pull request is opened
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The reply says that the intent is not merged yet and names the branch `docs/dark-mode-intent`
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The reply is in the language of the person's message
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The reply is at most a few lines and contains no review of the intent's content
@@ -0,0 +1,8 @@
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 เขียน spec ของ intent/dark-mode/intent.md
@@ -0,0 +1,12 @@
1
+ schema_version: "1.1"
2
+ name: statement-without-command-starts-no-work
3
+ expected_outcome: |
4
+ The message is a statement and no command was typed. The agent replies without creating an intent, a file, or a commit.
5
+ timeout_seconds: 600
6
+ checks:
7
+ - reply_matches: "/sdlc"
8
+ - no_file_changes
9
+ - no_new_commits
10
+ - no_new_branch
11
+ - reply_matches: '[\u0E00-\u0E7F]{10}'
12
+ - reply_lacks: '(?:^|[\s`("''])/(?:home|tmp|root|Users|var|private)/'
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ No `intent.md` or any other file is created or changed
@@ -0,0 +1,7 @@
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
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The reply is in the language of the person's message
@@ -0,0 +1,7 @@
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
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The reply says that work starts by sending the request with `/sdlc`
@@ -0,0 +1,8 @@
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
+ หน้า login ช้ามาก ลูกค้าบ่น
@@ -0,0 +1,42 @@
1
+ schema_version: "1.1"
2
+ name: writes-spec-from-merged-intent
3
+ expected_outcome: |
4
+ The intent intent/csv-export/intent.md is merged and has no spec. The agent follows the design playbook: it reads the four policies, writes intent/csv-export/spec.md from the template, pushes a branch, and waits at the gate for the product owner. It does not merge.
5
+ timeout_seconds: 900
6
+ fixture:
7
+ - write:
8
+ path: intent/csv-export/intent.md
9
+ content: |
10
+ # Intent: csv export
11
+
12
+ Author: Joe (Developer Productivity). Status: accepted.
13
+
14
+ ## Problem
15
+
16
+ The accounting team of 12 copies the report table into Excel by hand at every month end, about 20 minutes each (figure from the accounting lead).
17
+
18
+ ## Proposed outcome
19
+
20
+ One button downloads the open report as a CSV file. Out of scope: PDF and Excel export.
21
+
22
+ ## Affected users and systems
23
+
24
+ The accounting team and the report page.
25
+
26
+ ## Constraints
27
+
28
+ Report access rights do not change.
29
+
30
+ ## Open questions
31
+
32
+ None
33
+ - commit: "docs: add csv-export intent"
34
+ checks:
35
+ - file_exists: intent/csv-export/spec.md
36
+ - file_matches:
37
+ path: intent/csv-export/spec.md
38
+ regex: '(?=[\s\S]*^## Requirements$)(?=[\s\S]*^## Design$)(?=[\s\S]*^## Policies$)(?=[\s\S]*^## Areas of concern$)(?=[\s\S]*^## Open questions$)'
39
+ - commit_touches_only: intent/csv-export/spec.md
40
+ - branch_matches: "^(?!main$).+"
41
+ - reply_matches: '[\u0E00-\u0E7F]{10}'
42
+ - reply_lacks: '(?:^|[\s`("''])/(?:home|tmp|root|Users|var|private)/'
@@ -0,0 +1 @@
1
+ `intent/csv-export/intent.md` is committed on the default branch, and no `intent/csv-export/spec.md` exists on any branch.
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ `intent/csv-export/spec.md` exists with exactly the template's five headings: Requirements, Design, Policies, Areas of concern, and Open questions
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The spec's Policies section has one line for each of the four policies: brand, security, compliance, and UX
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ No line in the spec says that a policy is not written
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ A new branch holding `spec.md` is pushed, and the reply either gives the pull request URL or says no pull request could be opened and names the branch
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The reply names the gate that waits on the product owner
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The reply is in the language of the person's message
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ No pull request is merged
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The trace shows the agent read the SKILL.md of each of the four policies (brand, security, compliance, and UX) before it wrote the Policies section
@@ -0,0 +1,8 @@
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 เขียน spec ของ intent/csv-export/intent.md
@@ -0,0 +1,11 @@
1
+ schema_version: "1.1"
2
+ name: explains-how-to-start-work
3
+ expected_outcome: |
4
+ The agent explains how to start work, gives one message the person can send as is, and lists the files the answer came from. It starts no work.
5
+ timeout_seconds: 600
6
+ checks:
7
+ - reply_matches: "/sdlc"
8
+ - no_file_changes
9
+ - no_new_commits
10
+ - reply_matches: '[\u0E00-\u0E7F]{10}'
11
+ - reply_lacks: '(?:^|[\s`("''])/(?:home|tmp|root|Users|var|private)/'
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The reply says that work starts by sending the request with `/sdlc`
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The reply gives one example message the person can send as is
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The reply lists the project files the answer came from
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ No file is created or changed and no commit is made
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The reply is in the language of the person's message
@@ -0,0 +1,7 @@
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
@@ -0,0 +1,8 @@
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-help เริ่มงานใหม่ยังไง
@@ -0,0 +1,10 @@
1
+ schema_version: "1.1"
2
+ name: unknown-playbook-is-not-invented
3
+ expected_outcome: |
4
+ The project has no rollback playbook. The agent says so and does not describe one.
5
+ timeout_seconds: 600
6
+ checks:
7
+ - no_file_changes
8
+ - no_new_commits
9
+ - reply_matches: '[\u0E00-\u0E7F]{10}'
10
+ - reply_lacks: '(?:^|[\s`("''])/(?:home|tmp|root|Users|var|private)/'
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The reply says that this project has no rollback playbook in /sdlc
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ After saying so, the reply stops or offers one next step; it does not go on to give rollback instructions
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ No file is created or changed and no commit is made
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The reply is in the language of the person's message
@@ -0,0 +1,7 @@
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
@@ -0,0 +1,8 @@
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-help playbook rollback ใช้ยังไง
@@ -0,0 +1,11 @@
1
+ schema_version: "1.1"
2
+ name: work-request-is-sent-to-sdlc
3
+ expected_outcome: |
4
+ The message asks for work. The agent says to send it with /sdlc and changes nothing.
5
+ timeout_seconds: 600
6
+ checks:
7
+ - reply_matches: "/sdlc"
8
+ - no_file_changes
9
+ - no_new_commits
10
+ - reply_matches: '[\u0E00-\u0E7F]{10}'
11
+ - reply_lacks: '(?:^|[\s`("''])/(?:home|tmp|root|Users|var|private)/'
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ The reply says to send the request with `/sdlc` instead
@@ -0,0 +1,7 @@
1
+ ---
2
+ type: llm
3
+ focus: trace
4
+ weight: 1
5
+ ---
6
+
7
+ No file is created or changed and no commit is made