@next-friday/create-app 9.2.1 → 9.3.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.
- package/package.json +1 -1
- package/templates/base/.agents/review.md +1 -1
- package/templates/base/.claude/settings.json +11 -0
- package/templates/base/.claude-plugin/marketplace.json +16 -0
- package/templates/base/.cursor/hooks/load-project-plugins.sh +3 -0
- package/templates/base/.cursor/hooks.json +6 -0
- package/templates/base/.github/workflows/control-band.yml +4 -2
- package/templates/base/.github/workflows/spec-on-intent-merge.yml +2 -1
- package/templates/base/REVIEW.md +1 -1
- package/templates/base/SETUP.md +12 -9
- package/templates/base/intent/README.md +1 -1
- package/templates/base/plugins/sdlc/claude-code/.claude-plugin/plugin.json +7 -0
- package/templates/base/plugins/sdlc/claude-code/agents/verifier.md +7 -0
- package/templates/base/plugins/sdlc/claude-code/hooks/check-reply-shape.sh +53 -0
- package/templates/base/plugins/sdlc/claude-code/hooks/hooks.json +15 -0
- package/templates/base/{.agents → plugins/sdlc/claude-code}/skills/brand-policy/SKILL.md +1 -3
- package/templates/base/{.agents → plugins/sdlc/claude-code}/skills/compliance-policy/SKILL.md +0 -2
- package/templates/base/plugins/sdlc/claude-code/skills/sdlc-help/SKILL.md +23 -0
- package/templates/base/{.cursor/skills/sdlc → plugins/sdlc/claude-code/skills/sdlc-mode}/SKILL.md +22 -11
- package/templates/base/plugins/sdlc/claude-code/skills/sdlc-mode/playbooks/build.md +46 -0
- package/templates/base/{.cursor/skills/sdlc → plugins/sdlc/claude-code/skills/sdlc-mode}/playbooks/deploy.md +4 -4
- package/templates/base/{.claude/skills/sdlc → plugins/sdlc/claude-code/skills/sdlc-mode}/playbooks/design.md +7 -7
- package/templates/base/{.cursor/skills/sdlc → plugins/sdlc/claude-code/skills/sdlc-mode}/playbooks/fix.md +7 -7
- package/templates/base/{.agents/skills/sdlc → plugins/sdlc/claude-code/skills/sdlc-mode}/playbooks/maintain.md +6 -8
- package/templates/base/plugins/sdlc/claude-code/skills/sdlc-mode/playbooks/open-pr.md +17 -0
- package/templates/base/{.cursor/skills/sdlc → plugins/sdlc/claude-code/skills/sdlc-mode}/playbooks/plan.md +5 -5
- package/templates/base/{.cursor/skills/sdlc → plugins/sdlc/claude-code/skills/sdlc-mode}/playbooks/question.md +2 -2
- package/templates/base/{.cursor/skills/sdlc → plugins/sdlc/claude-code/skills/sdlc-mode}/playbooks/review.md +7 -8
- package/templates/base/{.claude → plugins/sdlc/claude-code}/skills/security-policy/SKILL.md +0 -2
- package/templates/base/plugins/sdlc/claude-code/skills/setup-sdlc/SKILL.md +51 -0
- package/templates/base/{.agents → plugins/sdlc/claude-code}/skills/ux-policy/SKILL.md +0 -2
- package/templates/base/plugins/sdlc/cursor/.cursor-plugin/plugin.json +10 -0
- package/templates/base/plugins/sdlc/cursor/agents/verifier.md +7 -0
- package/templates/base/plugins/sdlc/cursor/hooks/check-reply-shape.sh +53 -0
- package/templates/base/plugins/sdlc/cursor/hooks/hooks.json +16 -0
- package/templates/base/{.cursor → plugins/sdlc/cursor}/skills/brand-policy/SKILL.md +1 -3
- package/templates/base/{.claude → plugins/sdlc/cursor}/skills/compliance-policy/SKILL.md +0 -2
- package/templates/base/plugins/sdlc/cursor/skills/sdlc-help/SKILL.md +23 -0
- package/templates/base/{.claude/skills/sdlc → plugins/sdlc/cursor/skills/sdlc-mode}/SKILL.md +22 -11
- package/templates/base/plugins/sdlc/cursor/skills/sdlc-mode/playbooks/build.md +46 -0
- package/templates/base/{.agents/skills/sdlc → plugins/sdlc/cursor/skills/sdlc-mode}/playbooks/deploy.md +4 -4
- package/templates/base/{.cursor/skills/sdlc → plugins/sdlc/cursor/skills/sdlc-mode}/playbooks/design.md +7 -7
- package/templates/base/{.agents/skills/sdlc → plugins/sdlc/cursor/skills/sdlc-mode}/playbooks/fix.md +7 -7
- package/templates/base/{.cursor/skills/sdlc → plugins/sdlc/cursor/skills/sdlc-mode}/playbooks/maintain.md +6 -8
- package/templates/base/plugins/sdlc/cursor/skills/sdlc-mode/playbooks/open-pr.md +17 -0
- package/templates/base/{.agents/skills/sdlc → plugins/sdlc/cursor/skills/sdlc-mode}/playbooks/plan.md +5 -5
- package/templates/base/{.agents/skills/sdlc → plugins/sdlc/cursor/skills/sdlc-mode}/playbooks/question.md +2 -2
- package/templates/base/{.agents/skills/sdlc → plugins/sdlc/cursor/skills/sdlc-mode}/playbooks/review.md +7 -8
- package/templates/base/{.agents → plugins/sdlc/cursor}/skills/security-policy/SKILL.md +0 -2
- package/templates/base/plugins/sdlc/cursor/skills/setup-sdlc/SKILL.md +51 -0
- package/templates/base/{.claude → plugins/sdlc/cursor}/skills/ux-policy/SKILL.md +0 -2
- package/templates/base/scripts/check-plan.ts +1 -1
- package/templates/base/scripts/sync-agent-rules.ts +0 -58
- package/templates/nestjs/AGENTS.md +5 -3
- package/templates/nestjs/CONTRIBUTING.md +0 -1
- package/templates/nestjs/package.json +0 -1
- package/templates/nextjs/AGENTS.md +5 -3
- package/templates/nextjs/CONTRIBUTING.md +0 -1
- package/templates/nextjs/package.json +0 -1
- package/templates/nodejs/AGENTS.md +5 -3
- package/templates/nodejs/CONTRIBUTING.md +0 -1
- package/templates/nodejs/package.json +0 -1
- package/templates/payload/.agents/review.md +1 -1
- package/templates/payload/AGENTS.md +5 -3
- package/templates/payload/CONTRIBUTING.md +0 -1
- package/templates/payload/REVIEW.md +1 -1
- package/templates/payload/package.json +0 -1
- package/templates/turborepo/.agents/review.md +1 -1
- package/templates/turborepo/AGENTS.md +5 -3
- package/templates/turborepo/CONTRIBUTING.md +0 -1
- package/templates/turborepo/REVIEW.md +1 -1
- package/templates/turborepo/package.json +0 -1
- package/templates/base/.agents/agents.json +0 -7
- package/templates/base/.agents/skill-evals/README.md +0 -42
- package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/case.yaml +0 -11
- package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/graders/01-the-reply-explains-why-pnpm.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/graders/02-no-file-in-the-project.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/graders/03-no-commit-is-made-nothing.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/graders/05-every-path-in-the-reply.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/graders/06-everything-the-reply-states-as.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/answers-question-without-writing/prompt.md +0 -8
- package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/case.yaml +0 -11
- package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/fixture.md +0 -1
- package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/01-work-happens-on-the-plan-branch.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/02-the-plan-is-implemented-and-checked.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/03-the-branch-is-pushed.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/04-the-reply-lists-three-playbooks.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/05-no-approval-and-no-merge.md +0 -7
- 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
- package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/graders/07-the-plan-names-the-engineer.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/prompt.md +0 -8
- package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/case.yaml +0 -70
- package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/fixture.md +0 -1
- package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/graders/01-the-reply-asks-numbered-questions.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/graders/02-no-plan-before-the-answers.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/graders/03-no-question-depends-on-another.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/graders/04-no-file-or-commit.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/build-interviews-before-planning/prompt.md +0 -8
- package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/case.yaml +0 -67
- package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/fixture.md +0 -1
- 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
- package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/graders/02-no-source-file-or-commit.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/graders/03-the-reply-names-the-gate.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/prompt.md +0 -10
- package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/case.yaml +0 -7
- package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/fixture.md +0 -1
- package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/graders/01-no-deployment-is-started.md +0 -7
- 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
- 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
- package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/prompt.md +0 -8
- package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/case.yaml +0 -12
- package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/01-a-file-intentkebabcasenameintentmd-exists-with.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/02-the-reply-shows-the-draft.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/03-no-commit-is-made-nothing.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/04-reply-lists-the-playbook-steps.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/06-every-path-in-the-reply.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/graders/07-the-drafts-open-questions-section.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/drafts-intent-and-waits-for-yes/prompt.md +0 -10
- package/templates/base/.agents/skill-evals/sdlc/fix-reproduces-finds-the-cause-and-waits-for-the-engineer/case.yaml +0 -33
- package/templates/base/.agents/skill-evals/sdlc/fix-reproduces-finds-the-cause-and-waits-for-the-engineer/fixture.md +0 -1
- 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
- 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
- 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
- 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
- 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
- package/templates/base/.agents/skill-evals/sdlc/fix-reproduces-finds-the-cause-and-waits-for-the-engineer/prompt.md +0 -8
- package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/case.yaml +0 -11
- package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/01-the-first-message-restates-the.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/02-the-reply-asks-numbered-questions.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/03-no-intentmd-is-written-before.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/04-reply-lists-the-playbook-steps.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/05-no-commit-is-made-nothing.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/07-every-path-in-the-reply.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/graders/08-no-question-in-the-round.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/interviews-before-writing-intent/prompt.md +0 -8
- package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/case.yaml +0 -14
- package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/fixture.md +0 -1
- package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/graders/01-the-intent-has-the-five-headings.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/graders/02-problem-holds-the-error-and-where.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/graders/03-unverified-cause-is-an-open-question.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/graders/04-no-source-file-is-changed.md +0 -7
- 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
- package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/graders/06-the-person-is-asked-no-question.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/maintain-writes-intent-from-a-finding/prompt.md +0 -8
- package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/case.yaml +0 -11
- package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/graders/01-the-reply-follows-the-plan.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/graders/02-the-reply-does-not-tell.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/graders/03-no-file-is-created-or.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/graders/05-every-path-in-the-reply.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/reported-problem-starts-the-plan/prompt.md +0 -8
- package/templates/base/.agents/skill-evals/sdlc/request-that-fits-no-row/case.yaml +0 -10
- package/templates/base/.agents/skill-evals/sdlc/request-that-fits-no-row/fixture.md +0 -1
- 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
- package/templates/base/.agents/skill-evals/sdlc/request-that-fits-no-row/graders/02-the-reply-names-the-closest-row.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/request-that-fits-no-row/graders/03-the-reply-is-short.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/request-that-fits-no-row/prompt.md +0 -8
- package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/case.yaml +0 -79
- package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/fixture.md +0 -1
- package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/graders/01-findings-have-pass-severity-and-location.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/graders/02-no-approval-and-no-merge.md +0 -7
- 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
- package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/graders/04-nothing-is-pushed-or-changed.md +0 -7
- 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
- package/templates/base/.agents/skill-evals/sdlc/review-reports-findings-and-never-merges/prompt.md +0 -8
- package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/case.yaml +0 -41
- package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/fixture.md +0 -1
- package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/graders/01-no-spec-is-written.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/graders/02-no-commit-is-made.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/graders/03-the-reply-says-not-merged.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/graders/05-the-reply-is-short.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/spec-for-unmerged-intent-stops/prompt.md +0 -8
- package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/case.yaml +0 -11
- package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/graders/01-no-intentmd-or-any-other.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/graders/02-no-commit-is-made-nothing.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/graders/04-every-path-in-the-reply.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/graders/05-the-reply-says-that-work.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/statement-without-command-starts-no-work/prompt.md +0 -8
- package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/case.yaml +0 -41
- package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/fixture.md +0 -1
- package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/01-the-spec-has-the-five-headings.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/02-policies-has-one-line-per-policy.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/03-no-policy-is-called-unwritten.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/04-a-branch-is-pushed-for-review.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/05-the-reply-names-the-gate.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/07-no-merge-is-made.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/graders/08-the-four-policies-are-read-before-writing.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc/writes-spec-from-merged-intent/prompt.md +0 -8
- package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/case.yaml +0 -10
- package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/graders/01-the-reply-says-that-work.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/graders/02-the-reply-gives-one-example.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/graders/03-the-reply-lists-the-project.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/graders/04-no-file-is-created-or.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/graders/06-every-path-in-the-reply.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc-help/explains-how-to-start-work/prompt.md +0 -8
- package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/case.yaml +0 -9
- package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/graders/01-the-reply-says-that-this.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/graders/02-the-reply-does-not-describe.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/graders/03-no-file-is-created-or.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/graders/05-every-path-in-the-reply.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc-help/unknown-playbook-is-not-invented/prompt.md +0 -8
- package/templates/base/.agents/skill-evals/sdlc-help/work-request-is-sent-to-sdlc/case.yaml +0 -10
- package/templates/base/.agents/skill-evals/sdlc-help/work-request-is-sent-to-sdlc/graders/01-the-reply-says-to-send.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc-help/work-request-is-sent-to-sdlc/graders/02-no-file-is-created-or.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc-help/work-request-is-sent-to-sdlc/graders/04-every-path-in-the-reply.md +0 -7
- package/templates/base/.agents/skill-evals/sdlc-help/work-request-is-sent-to-sdlc/prompt.md +0 -8
- package/templates/base/.agents/skills/sdlc/SKILL.md +0 -54
- package/templates/base/.agents/skills/sdlc/playbooks/build.md +0 -46
- package/templates/base/.agents/skills/sdlc/playbooks/design.md +0 -40
- package/templates/base/.agents/skills/sdlc/playbooks/open-pr.md +0 -15
- package/templates/base/.agents/skills/sdlc-help/SKILL.md +0 -23
- package/templates/base/.claude/skills/brand-policy/SKILL.md +0 -18
- package/templates/base/.claude/skills/sdlc/playbooks/build.md +0 -46
- package/templates/base/.claude/skills/sdlc/playbooks/deploy.md +0 -9
- package/templates/base/.claude/skills/sdlc/playbooks/fix.md +0 -23
- package/templates/base/.claude/skills/sdlc/playbooks/maintain.md +0 -20
- package/templates/base/.claude/skills/sdlc/playbooks/open-pr.md +0 -15
- package/templates/base/.claude/skills/sdlc/playbooks/plan.md +0 -33
- package/templates/base/.claude/skills/sdlc/playbooks/question.md +0 -8
- package/templates/base/.claude/skills/sdlc/playbooks/review.md +0 -17
- package/templates/base/.claude/skills/sdlc-help/SKILL.md +0 -23
- package/templates/base/.cursor/skills/compliance-policy/SKILL.md +0 -25
- package/templates/base/.cursor/skills/sdlc/playbooks/build.md +0 -46
- package/templates/base/.cursor/skills/sdlc/playbooks/open-pr.md +0 -15
- package/templates/base/.cursor/skills/sdlc-help/SKILL.md +0 -23
- package/templates/base/.cursor/skills/security-policy/SKILL.md +0 -41
- package/templates/base/.cursor/skills/ux-policy/SKILL.md +0 -21
- package/templates/base/.github/workflows/agent-evals.yml +0 -46
- package/templates/base/scripts/run-agent-evals.ts +0 -1197
- package/templates/nestjs/.agents/agents/verifier.md +0 -1
- package/templates/nestjs/.claude/agents/verifier.md +0 -7
- package/templates/nestjs/.cursor/agents/verifier.md +0 -7
- package/templates/nextjs/.agents/agents/verifier.md +0 -1
- package/templates/nextjs/.claude/agents/verifier.md +0 -7
- package/templates/nextjs/.cursor/agents/verifier.md +0 -7
- package/templates/nodejs/.agents/agents/verifier.md +0 -1
- package/templates/nodejs/.claude/agents/verifier.md +0 -7
- package/templates/nodejs/.cursor/agents/verifier.md +0 -7
- package/templates/payload/.agents/agents/verifier.md +0 -1
- package/templates/payload/.claude/agents/verifier.md +0 -7
- package/templates/payload/.cursor/agents/verifier.md +0 -7
- package/templates/turborepo/.agents/agents/verifier.md +0 -1
- package/templates/turborepo/.claude/agents/verifier.md +0 -7
- 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)/'
|
package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/case.yaml
DELETED
|
@@ -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
|
package/templates/base/.agents/skill-evals/sdlc/build-continues-from-an-accepted-plan/fixture.md
DELETED
|
@@ -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,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
|
package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/case.yaml
DELETED
|
@@ -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)'
|
package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/fixture.md
DELETED
|
@@ -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.
|
package/templates/base/.agents/skill-evals/sdlc/build-plans-and-waits-for-the-engineer/prompt.md
DELETED
|
@@ -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.
|
package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/case.yaml
DELETED
|
@@ -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
|
package/templates/base/.agents/skill-evals/sdlc/deploy-stops-at-the-production-gate/fixture.md
DELETED
|
@@ -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,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,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.
|