@azure-id/orc 0.55.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/CHANGELOG.md +2017 -0
- package/README-id.md +521 -0
- package/README.md +485 -0
- package/bin/build-agents.js +86 -0
- package/bin/cli.js +29050 -0
- package/bin/mockrun-catalog.js +267 -0
- package/bin/onboarding-content.js +172 -0
- package/bin/pricing.json +200 -0
- package/bin/providers.json +437 -0
- package/bin/ui.js +95 -0
- package/bin/verify-contracts.js +3277 -0
- package/bin/verify-package.js +498 -0
- package/bin/webui/api.js +1163 -0
- package/bin/webui/app.html +198 -0
- package/bin/webui/css/00-tokens.css +92 -0
- package/bin/webui/css/01-base.css +42 -0
- package/bin/webui/css/02-shell.css +103 -0
- package/bin/webui/css/03-components.css +462 -0
- package/bin/webui/css/04-motion.css +91 -0
- package/bin/webui/css/05-tour.css +100 -0
- package/bin/webui/css/06-responsive.css +108 -0
- package/bin/webui/css/panels/boundary.css +26 -0
- package/bin/webui/css/panels/challenge.css +151 -0
- package/bin/webui/css/panels/crosslink.css +194 -0
- package/bin/webui/css/panels/docs.css +254 -0
- package/bin/webui/css/panels/experiment.css +23 -0
- package/bin/webui/css/panels/extra.css +536 -0
- package/bin/webui/css/panels/flow.css +177 -0
- package/bin/webui/css/panels/handoff.css +67 -0
- package/bin/webui/css/panels/knowledge.css +86 -0
- package/bin/webui/css/panels/learn.css +154 -0
- package/bin/webui/css/panels/maintenance.css +55 -0
- package/bin/webui/css/panels/mockrun.css +268 -0
- package/bin/webui/css/panels/overview.css +100 -0
- package/bin/webui/css/panels/pact.css +43 -0
- package/bin/webui/css/panels/runs.css +105 -0
- package/bin/webui/css/panels/settings.css +227 -0
- package/bin/webui/css/panels/stats.css +87 -0
- package/bin/webui/fixtures/boundary.js +92 -0
- package/bin/webui/fixtures/challenge.js +825 -0
- package/bin/webui/fixtures/crosslink.js +31 -0
- package/bin/webui/fixtures/docs.js +982 -0
- package/bin/webui/fixtures/extra.js +1934 -0
- package/bin/webui/fixtures/flow.js +81 -0
- package/bin/webui/fixtures/handoff.js +35 -0
- package/bin/webui/fixtures/index.js +486 -0
- package/bin/webui/fixtures/knowledge.js +291 -0
- package/bin/webui/fixtures/maintenance.js +42 -0
- package/bin/webui/fixtures/mockrun.js +36 -0
- package/bin/webui/fixtures/pact.js +111 -0
- package/bin/webui/fixtures/runs.js +109 -0
- package/bin/webui/fixtures/settings.js +78 -0
- package/bin/webui/fixtures/shell.js +48 -0
- package/bin/webui/fixtures/stats.js +104 -0
- package/bin/webui/i18n/TERMS.md +134 -0
- package/bin/webui/i18n/en/banner.json +29 -0
- package/bin/webui/i18n/en/boundary.json +20 -0
- package/bin/webui/i18n/en/challenge.json +106 -0
- package/bin/webui/i18n/en/common.json +69 -0
- package/bin/webui/i18n/en/crosslink.json +69 -0
- package/bin/webui/i18n/en/docs.json +175 -0
- package/bin/webui/i18n/en/experiment.json +17 -0
- package/bin/webui/i18n/en/extra.json +313 -0
- package/bin/webui/i18n/en/flow.json +30 -0
- package/bin/webui/i18n/en/handoff.json +37 -0
- package/bin/webui/i18n/en/knowledge.json +141 -0
- package/bin/webui/i18n/en/learn.json +16 -0
- package/bin/webui/i18n/en/maintenance.json +52 -0
- package/bin/webui/i18n/en/mockrun.json +19 -0
- package/bin/webui/i18n/en/nav.json +19 -0
- package/bin/webui/i18n/en/overview.json +89 -0
- package/bin/webui/i18n/en/pact.json +36 -0
- package/bin/webui/i18n/en/runs.json +51 -0
- package/bin/webui/i18n/en/settings.json +49 -0
- package/bin/webui/i18n/en/stats.json +69 -0
- package/bin/webui/i18n/en/tour.json +33 -0
- package/bin/webui/i18n/id/banner.json +29 -0
- package/bin/webui/i18n/id/boundary.json +20 -0
- package/bin/webui/i18n/id/challenge.json +106 -0
- package/bin/webui/i18n/id/common.json +70 -0
- package/bin/webui/i18n/id/crosslink.json +69 -0
- package/bin/webui/i18n/id/docs.json +175 -0
- package/bin/webui/i18n/id/experiment.json +17 -0
- package/bin/webui/i18n/id/extra.json +313 -0
- package/bin/webui/i18n/id/flow.json +30 -0
- package/bin/webui/i18n/id/handoff.json +37 -0
- package/bin/webui/i18n/id/knowledge.json +141 -0
- package/bin/webui/i18n/id/learn.json +16 -0
- package/bin/webui/i18n/id/maintenance.json +52 -0
- package/bin/webui/i18n/id/mockrun.json +19 -0
- package/bin/webui/i18n/id/nav.json +19 -0
- package/bin/webui/i18n/id/overview.json +89 -0
- package/bin/webui/i18n/id/pact.json +36 -0
- package/bin/webui/i18n/id/runs.json +51 -0
- package/bin/webui/i18n/id/settings.json +49 -0
- package/bin/webui/i18n/id/stats.json +69 -0
- package/bin/webui/i18n/id/tour.json +33 -0
- package/bin/webui/js/00-core.js +115 -0
- package/bin/webui/js/01-i18n.js +149 -0
- package/bin/webui/js/02-ui.js +211 -0
- package/bin/webui/js/03-md.js +286 -0
- package/bin/webui/js/04-router.js +51 -0
- package/bin/webui/js/05-banners.js +172 -0
- package/bin/webui/js/06-edit.js +183 -0
- package/bin/webui/js/90-tour.js +488 -0
- package/bin/webui/js/91-shortcuts.js +126 -0
- package/bin/webui/js/99-boot.js +118 -0
- package/bin/webui/js/panels/boundary.js +104 -0
- package/bin/webui/js/panels/challenge.js +781 -0
- package/bin/webui/js/panels/crosslink.js +654 -0
- package/bin/webui/js/panels/docs.js +1338 -0
- package/bin/webui/js/panels/experiment.js +98 -0
- package/bin/webui/js/panels/extra.js +3011 -0
- package/bin/webui/js/panels/flow.js +297 -0
- package/bin/webui/js/panels/handoff.js +169 -0
- package/bin/webui/js/panels/knowledge.js +890 -0
- package/bin/webui/js/panels/learn.js +220 -0
- package/bin/webui/js/panels/maintenance.js +235 -0
- package/bin/webui/js/panels/mockrun.js +227 -0
- package/bin/webui/js/panels/overview.js +447 -0
- package/bin/webui/js/panels/pact.js +189 -0
- package/bin/webui/js/panels/runs.js +416 -0
- package/bin/webui/js/panels/settings.js +573 -0
- package/bin/webui/js/panels/stats.js +378 -0
- package/bin/webui/serve.js +557 -0
- package/mock-run/INDEX.md +106 -0
- package/mock-run/a-normal-day.md +587 -0
- package/mock-run/context-combiner.md +100 -0
- package/mock-run/extra-recovery.md +330 -0
- package/mock-run/extra-slots.md +177 -0
- package/mock-run/media/README.md +43 -0
- package/mock-run/orc-aftermath.md +392 -0
- package/mock-run/orc-boundary.md +356 -0
- package/mock-run/orc-brainstorm.md +177 -0
- package/mock-run/orc-budget.md +534 -0
- package/mock-run/orc-challenge-council.md +262 -0
- package/mock-run/orc-challenge.md +416 -0
- package/mock-run/orc-cli.md +200 -0
- package/mock-run/orc-diy.md +129 -0
- package/mock-run/orc-doc.md +448 -0
- package/mock-run/orc-explain.md +86 -0
- package/mock-run/orc-export.md +423 -0
- package/mock-run/orc-extra.md +392 -0
- package/mock-run/orc-fast.md +106 -0
- package/mock-run/orc-grill.md +151 -0
- package/mock-run/orc-handoff.md +480 -0
- package/mock-run/orc-pact.md +421 -0
- package/mock-run/orc-pattern.md +112 -0
- package/mock-run/orc-plan.md +108 -0
- package/mock-run/orc-pr-setup.md +126 -0
- package/mock-run/orc-quick.md +113 -0
- package/mock-run/orc-route.md +93 -0
- package/mock-run/orc-ui.md +125 -0
- package/mock-run/orc-ultra.md +103 -0
- package/mock-run/orc.md +157 -0
- package/mock-run/the-example-project.md +55 -0
- package/package.json +39 -0
- package/templates/agents/MODEL-MAPPING.md +168 -0
- package/templates/agents/orc-advisor-fable-5.md +50 -0
- package/templates/agents/orc-advisor-opus-5-xhigh.md +56 -0
- package/templates/agents/orc-analyst-fable-5.md +115 -0
- package/templates/agents/orc-analyze-mini-opus-5-med.md +60 -0
- package/templates/agents/orc-analyze-mini-sonnet-5-high.md +58 -0
- package/templates/agents/orc-challenge-advisor-opus-5-med.md +75 -0
- package/templates/agents/orc-challenge-contrarian-opus-5-high.md +110 -0
- package/templates/agents/orc-challenge-executor-opus-5-med.md +114 -0
- package/templates/agents/orc-challenge-expansionist-opus-5-med.md +112 -0
- package/templates/agents/orc-challenge-judge-opus-5-high.md +132 -0
- package/templates/agents/orc-challenge-outsider-opus-5-low.md +109 -0
- package/templates/agents/orc-challenge-principles-opus-5-high.md +109 -0
- package/templates/agents/orc-challenge-reader-opus-5-low.md +90 -0
- package/templates/agents/orc-claude-writer-opus-4-8-high.md +53 -0
- package/templates/agents/orc-claude-writer-opus-5-med.md +55 -0
- package/templates/agents/orc-context-combiner-opus-5-high.md +88 -0
- package/templates/agents/orc-doc-checker-opus-5-low.md +108 -0
- package/templates/agents/orc-doc-writer-opus-5-med.md +134 -0
- package/templates/agents/orc-executor-haiku-4-5.md +113 -0
- package/templates/agents/orc-executor-opus-4-7-high.md +114 -0
- package/templates/agents/orc-executor-opus-4-7-med.md +114 -0
- package/templates/agents/orc-executor-opus-4-8-high.md +114 -0
- package/templates/agents/orc-executor-opus-5-high.md +114 -0
- package/templates/agents/orc-executor-opus-5-low.md +114 -0
- package/templates/agents/orc-executor-opus-5-med.md +114 -0
- package/templates/agents/orc-executor-sonnet-4-6-high.md +114 -0
- package/templates/agents/orc-executor-sonnet-4-6-med.md +114 -0
- package/templates/agents/orc-executor-sonnet-5-high.md +114 -0
- package/templates/agents/orc-judge-fable-5.md +79 -0
- package/templates/agents/orc-judge-opus-5-xhigh.md +85 -0
- package/templates/agents/orc-learn-writer-opus-5-low.md +73 -0
- package/templates/agents/orc-pattern-codifier-opus-5-med.md +65 -0
- package/templates/agents/orc-pattern-codifier-sonnet-5-high.md +63 -0
- package/templates/agents/orc-planner-fable-5.md +152 -0
- package/templates/agents/orc-planner-mini-opus-5-med.md +69 -0
- package/templates/agents/orc-planner-mini-sonnet-5-high.md +67 -0
- package/templates/agents/orc-planner-opus-5-med.md +160 -0
- package/templates/agents/orc-retro-opus-5-med.md +73 -0
- package/templates/agents/orc-retro-sonnet-5-high.md +72 -0
- package/templates/agents/orc-reviewer-fable-5.md +57 -0
- package/templates/agents/orc-reviewer-opus-5-med.md +60 -0
- package/templates/agents/orc-scout-opus-5-low.md +40 -0
- package/templates/agents/orc-scout-sonnet-4-6-high.md +39 -0
- package/templates/agents/orc-system-analyst-opus-5-high.md +120 -0
- package/templates/agents/orc-test-author-opus-5-med.md +71 -0
- package/templates/agents/orc-trace-writer-haiku-4-5.md +107 -0
- package/templates/agents/orc-verifier-opus-5-med.md +69 -0
- package/templates/agents/orc-wiki-scanner-opus-4-8-high.md +79 -0
- package/templates/agents/orc-wiki-scanner-opus-5-med.md +81 -0
- package/templates/agents/orc-wiki-scanner-sonnet-5-high.md +106 -0
- package/templates/commands/orc-aftermath.md +49 -0
- package/templates/commands/orc-analyze.md +21 -0
- package/templates/commands/orc-boundary.md +46 -0
- package/templates/commands/orc-brainstorm.md +51 -0
- package/templates/commands/orc-budget.md +54 -0
- package/templates/commands/orc-challenge.md +58 -0
- package/templates/commands/orc-claude.md +14 -0
- package/templates/commands/orc-diy.md +13 -0
- package/templates/commands/orc-doc.md +128 -0
- package/templates/commands/orc-explain.md +20 -0
- package/templates/commands/orc-export.md +46 -0
- package/templates/commands/orc-fast.md +15 -0
- package/templates/commands/orc-grill.md +40 -0
- package/templates/commands/orc-handoff.md +52 -0
- package/templates/commands/orc-learn.md +17 -0
- package/templates/commands/orc-mini.md +12 -0
- package/templates/commands/orc-pact.md +44 -0
- package/templates/commands/orc-pattern.md +15 -0
- package/templates/commands/orc-plan.md +22 -0
- package/templates/commands/orc-poly.md +21 -0
- package/templates/commands/orc-pr-driver.md +30 -0
- package/templates/commands/orc-pr-setup.md +31 -0
- package/templates/commands/orc-quick.md +33 -0
- package/templates/commands/orc-retro.md +17 -0
- package/templates/commands/orc-route.md +41 -0
- package/templates/commands/orc-ultra.md +17 -0
- package/templates/commands/orc-verify.md +11 -0
- package/templates/commands/orc-wiki.md +42 -0
- package/templates/commands/orc.md +16 -0
- package/templates/hooks/orc-effort-guard.js +178 -0
- package/templates/hooks/orc-statusline.js +305 -0
- package/templates/hooks/orc-trace.js +471 -0
- package/templates/hooks/orc-update-lib.js +125 -0
- package/templates/skills/_shared/README.md +50 -0
- package/templates/skills/_shared/detecting-artifacts.md +90 -0
- package/templates/skills/_shared/drift-recovery.md +98 -0
- package/templates/skills/_shared/extra-dispatch.md +1051 -0
- package/templates/skills/_shared/fable5-override.md +56 -0
- package/templates/skills/_shared/fallback-handoff.md +42 -0
- package/templates/skills/_shared/gh-stack-commands.md +65 -0
- package/templates/skills/_shared/gotchas.md +177 -0
- package/templates/skills/_shared/interview.md +144 -0
- package/templates/skills/_shared/lane-suspend.md +82 -0
- package/templates/skills/_shared/opus5-only.md +131 -0
- package/templates/skills/_shared/pr-templates.md +106 -0
- package/templates/skills/_shared/read-ladder.md +54 -0
- package/templates/skills/_shared/return-validation.md +145 -0
- package/templates/skills/_shared/smoke-gate.md +28 -0
- package/templates/skills/_shared/stack-plan.md +135 -0
- package/templates/skills/_shared/untrusted-input.md +63 -0
- package/templates/skills/context-combiner/SKILL.md +187 -0
- package/templates/skills/context-combiner/schemas/combined-report.md +78 -0
- package/templates/skills/context-combiner/schemas/combined-requirement-spec.md +87 -0
- package/templates/skills/orc/README.md +150 -0
- package/templates/skills/orc/SKILL.md +526 -0
- package/templates/skills/orc/config.md +389 -0
- package/templates/skills/orc/examples/full-run-mock.md +73 -0
- package/templates/skills/orc/references/analyst-gates.md +124 -0
- package/templates/skills/orc/references/effort-and-mode.md +224 -0
- package/templates/skills/orc/references/house-rules.md +20 -0
- package/templates/skills/orc/references/intake.md +120 -0
- package/templates/skills/orc/references/log-protocol.md +39 -0
- package/templates/skills/orc/references/pattern-gate.md +89 -0
- package/templates/skills/orc/references/plan-handoff.md +84 -0
- package/templates/skills/orc/references/preflight-report.md +220 -0
- package/templates/skills/orc/references/security-checklist.md +39 -0
- package/templates/skills/orc/references/stop-and-resume.md +160 -0
- package/templates/skills/orc/references/trace-protocol.md +314 -0
- package/templates/skills/orc/references/ultra-mode.md +123 -0
- package/templates/skills/orc/references/wave-grouping.md +121 -0
- package/templates/skills/orc/references/wiki-consult.md +177 -0
- package/templates/skills/orc/schemas/checkpoint.md +122 -0
- package/templates/skills/orc/schemas/intent-spec.md +42 -0
- package/templates/skills/orc/schemas/planning-output.md +279 -0
- package/templates/skills/orc/subskills/orc-checkpoint/SKILL.md +55 -0
- package/templates/skills/orc/subskills/orc-execution/SKILL.md +72 -0
- package/templates/skills/orc/subskills/orc-execution/core.md +151 -0
- package/templates/skills/orc/subskills/orc-execution/subagent.md +13 -0
- package/templates/skills/orc/subskills/orc-planner/SKILL.md +264 -0
- package/templates/skills/orc/subskills/orc-planner-mini/SKILL.md +121 -0
- package/templates/skills/orc/subskills/orc-pr/SKILL.md +51 -0
- package/templates/skills/orc/subskills/orc-pr/pr.md +22 -0
- package/templates/skills/orc/subskills/orc-pr/stack-gate.md +108 -0
- package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +76 -0
- package/templates/skills/orc/subskills/orc-review-verify/core.md +135 -0
- package/templates/skills/orc/subskills/orc-review-verify/subagent.md +7 -0
- package/templates/skills/orc/subskills/orc-testgen/SKILL.md +45 -0
- package/templates/skills/orc/subskills/orc-testgen/core.md +59 -0
- package/templates/skills/orc/subskills/orc-testgen/subagent.md +7 -0
- package/templates/skills/orc-advisor/SKILL.md +60 -0
- package/templates/skills/orc-aftermath/SKILL.md +136 -0
- package/templates/skills/orc-aftermath/references/report.md +95 -0
- package/templates/skills/orc-analyze/SKILL.md +220 -0
- package/templates/skills/orc-analyze/examples/analyze-mock.md +42 -0
- package/templates/skills/orc-analyze/references/branching.md +51 -0
- package/templates/skills/orc-analyze/references/deep-mode.md +27 -0
- package/templates/skills/orc-analyze/references/thin-input.md +77 -0
- package/templates/skills/orc-analyze/schemas/report-audit.md +83 -0
- package/templates/skills/orc-analyze/schemas/report-prose.md +63 -0
- package/templates/skills/orc-analyze/schemas/report-requirement.md +78 -0
- package/templates/skills/orc-analyze/schemas/requirement-spec.md +77 -0
- package/templates/skills/orc-analyze-mini/SKILL.md +112 -0
- package/templates/skills/orc-analyze-mini/examples/quick-analysis-mock.md +31 -0
- package/templates/skills/orc-boundary/SKILL.md +208 -0
- package/templates/skills/orc-boundary/references/card.md +78 -0
- package/templates/skills/orc-boundary/references/gate.md +113 -0
- package/templates/skills/orc-brainstorm/SKILL.md +339 -0
- package/templates/skills/orc-brainstorm/references/brainstorm-doc.md +133 -0
- package/templates/skills/orc-brainstorm/references/lenses.md +152 -0
- package/templates/skills/orc-budget/SKILL.md +225 -0
- package/templates/skills/orc-budget/references/corpus.md +87 -0
- package/templates/skills/orc-challenge/README.md +142 -0
- package/templates/skills/orc-challenge/SKILL.md +255 -0
- package/templates/skills/orc-challenge/examples/code-module.md +110 -0
- package/templates/skills/orc-challenge/examples/council-full-roster.md +273 -0
- package/templates/skills/orc-challenge/examples/tsd-two-iterations.md +213 -0
- package/templates/skills/orc-challenge/references/conservation.md +107 -0
- package/templates/skills/orc-challenge/references/council.md +315 -0
- package/templates/skills/orc-challenge/references/cycle-state.md +185 -0
- package/templates/skills/orc-challenge/references/dimensions.md +121 -0
- package/templates/skills/orc-challenge/references/fix-brief.md +130 -0
- package/templates/skills/orc-challenge/references/intake.md +171 -0
- package/templates/skills/orc-challenge/references/kinds.md +44 -0
- package/templates/skills/orc-challenge/references/plain-english.md +98 -0
- package/templates/skills/orc-challenge/references/rubric.md +109 -0
- package/templates/skills/orc-challenge/references/sealed-slice.md +97 -0
- package/templates/skills/orc-challenge/references/verdict-doc.md +154 -0
- package/templates/skills/orc-claude/SKILL.md +199 -0
- package/templates/skills/orc-claude/examples/claude-run-mock.md +65 -0
- package/templates/skills/orc-claude/references/refresh.md +76 -0
- package/templates/skills/orc-claude/references/template.md +109 -0
- package/templates/skills/orc-diy/README.md +142 -0
- package/templates/skills/orc-diy/SKILL.md +70 -0
- package/templates/skills/orc-diy/references/blocks/analyze.md +24 -0
- package/templates/skills/orc-diy/references/blocks/execution.md +42 -0
- package/templates/skills/orc-diy/references/blocks/extra.md +55 -0
- package/templates/skills/orc-diy/references/blocks/header.md +55 -0
- package/templates/skills/orc-diy/references/blocks/mock-example.md +22 -0
- package/templates/skills/orc-diy/references/blocks/pattern.md +18 -0
- package/templates/skills/orc-diy/references/blocks/planning.md +34 -0
- package/templates/skills/orc-diy/references/blocks/review.md +18 -0
- package/templates/skills/orc-diy/references/blocks/scoring.md +16 -0
- package/templates/skills/orc-diy/references/blocks/security.md +25 -0
- package/templates/skills/orc-diy/references/blocks/ship.md +25 -0
- package/templates/skills/orc-diy/references/blocks/summary.md +18 -0
- package/templates/skills/orc-diy/references/blocks/testgen.md +17 -0
- package/templates/skills/orc-diy/references/blocks/trace.md +28 -0
- package/templates/skills/orc-diy/references/blocks/verify.md +25 -0
- package/templates/skills/orc-diy/references/blocks/wiki.md +26 -0
- package/templates/skills/orc-diy/references/compile.md +59 -0
- package/templates/skills/orc-diy/references/flow-schema.md +100 -0
- package/templates/skills/orc-diy/references/locked-blocks.md +37 -0
- package/templates/skills/orc-doc/README.md +229 -0
- package/templates/skills/orc-doc/SKILL.md +444 -0
- package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +325 -0
- package/templates/skills/orc-doc/references/chunking.md +527 -0
- package/templates/skills/orc-doc/references/gates.md +311 -0
- package/templates/skills/orc-doc/references/generation-rules.md +122 -0
- package/templates/skills/orc-doc/references/house-rules.md +170 -0
- package/templates/skills/orc-doc/references/import-targets.md +40 -0
- package/templates/skills/orc-doc/references/plain-language.md +66 -0
- package/templates/skills/orc-doc/references/portable-markdown.md +74 -0
- package/templates/skills/orc-doc/references/resume-protocol.md +228 -0
- package/templates/skills/orc-doc/references/templates/collaboration.md +118 -0
- package/templates/skills/orc-doc/references/templates/prd.md +133 -0
- package/templates/skills/orc-doc/references/templates/report.md +102 -0
- package/templates/skills/orc-doc/references/templates/tsd.md +122 -0
- package/templates/skills/orc-doc/references/templates/workflow.md +112 -0
- package/templates/skills/orc-explain/SKILL.md +57 -0
- package/templates/skills/orc-export/SKILL.md +154 -0
- package/templates/skills/orc-fast/SKILL.md +188 -0
- package/templates/skills/orc-grill/SKILL.md +207 -0
- package/templates/skills/orc-grill/references/grill-doc.md +105 -0
- package/templates/skills/orc-handoff/SKILL.md +204 -0
- package/templates/skills/orc-handoff/references/handoff-log.md +67 -0
- package/templates/skills/orc-handoff/references/surfaces.md +88 -0
- package/templates/skills/orc-judge/SKILL.md +82 -0
- package/templates/skills/orc-learn/SKILL.md +156 -0
- package/templates/skills/orc-learn/examples/learn-run-mock.md +61 -0
- package/templates/skills/orc-learn/references/deepen.md +70 -0
- package/templates/skills/orc-learn/references/refresh.md +65 -0
- package/templates/skills/orc-learn/references/template-knowledge.md +83 -0
- package/templates/skills/orc-learn/references/template-learning.md +67 -0
- package/templates/skills/orc-mini/SKILL.md +226 -0
- package/templates/skills/orc-mini/examples/mini-run-mock.md +50 -0
- package/templates/skills/orc-pact/SKILL.md +218 -0
- package/templates/skills/orc-pact/references/gate.md +70 -0
- package/templates/skills/orc-pact/references/ledger.md +99 -0
- package/templates/skills/orc-pattern/SKILL.md +124 -0
- package/templates/skills/orc-pattern/references/INDEX.md +73 -0
- package/templates/skills/orc-pattern/references/be-django.md +80 -0
- package/templates/skills/orc-pattern/references/be-express.md +82 -0
- package/templates/skills/orc-pattern/references/be-fastapi.md +107 -0
- package/templates/skills/orc-pattern/references/be-go.md +96 -0
- package/templates/skills/orc-pattern/references/be-nestjs.md +86 -0
- package/templates/skills/orc-pattern/references/be-postgres.md +98 -0
- package/templates/skills/orc-pattern/references/fe-a11y.md +36 -0
- package/templates/skills/orc-pattern/references/fe-angular.md +87 -0
- package/templates/skills/orc-pattern/references/fe-nextjs.md +65 -0
- package/templates/skills/orc-pattern/references/fe-perf.md +39 -0
- package/templates/skills/orc-pattern/references/fe-react.md +83 -0
- package/templates/skills/orc-pattern/references/fe-vue.md +75 -0
- package/templates/skills/orc-pattern/schemas/pattern-doc.md +62 -0
- package/templates/skills/orc-poly/SKILL.md +216 -0
- package/templates/skills/orc-poly/examples/poly-run-mock.md +51 -0
- package/templates/skills/orc-poly/references/gather.md +70 -0
- package/templates/skills/orc-poly/references/poly-spec.md +84 -0
- package/templates/skills/orc-pr-driver/README.md +349 -0
- package/templates/skills/orc-pr-driver/SKILL.md +167 -0
- package/templates/skills/orc-pr-driver/references/conflict-playbook.md +78 -0
- package/templates/skills/orc-pr-driver/references/green-gate.md +105 -0
- package/templates/skills/orc-pr-driver/references/orc-run-split.md +99 -0
- package/templates/skills/orc-pr-setup/README.md +436 -0
- package/templates/skills/orc-pr-setup/SKILL.md +184 -0
- package/templates/skills/orc-pr-setup/references/certainty-gate.md +66 -0
- package/templates/skills/orc-pr-setup/references/layer-taxonomy.md +67 -0
- package/templates/skills/orc-quick/README.md +423 -0
- package/templates/skills/orc-quick/SKILL.md +306 -0
- package/templates/skills/orc-quick/references/context-doc.md +114 -0
- package/templates/skills/orc-quick/references/dispatch-gate.md +163 -0
- package/templates/skills/orc-quick/references/gh-mode.md +127 -0
- package/templates/skills/orc-retro/SKILL.md +222 -0
- package/templates/skills/orc-retro/examples/retro-mock.md +171 -0
- package/templates/skills/orc-route/SKILL.md +165 -0
- package/templates/skills/orc-verify/SKILL.md +86 -0
- package/templates/skills/orc-verify/examples/verify-mock.md +33 -0
- package/templates/skills/orc-wiki/README.md +325 -0
- package/templates/skills/orc-wiki/SKILL.md +322 -0
- package/templates/skills/orc-wiki/examples/wiki-run-mock.md +37 -0
- package/templates/skills/orc-wiki/references/claude-md-injection.md +61 -0
- package/templates/skills/orc-wiki/references/crosslink-compile.md +39 -0
- package/templates/skills/orc-wiki/references/crosslink-kinds.md +57 -0
- package/templates/skills/orc-wiki/references/crosslink.md +284 -0
- package/templates/skills/orc-wiki/references/extra.md +79 -0
- package/templates/skills/orc-wiki/references/integrity-check.md +86 -0
- package/templates/skills/orc-wiki/references/orientation.md +51 -0
- package/templates/skills/orc-wiki/references/partial-refresh.md +203 -0
- package/templates/skills/orc-wiki/references/pattern-prewarm.md +19 -0
- package/templates/skills/orc-wiki/references/staleness.md +288 -0
- package/templates/skills/orc-wiki/schemas/crosslink-tag.md +166 -0
- package/templates/skills/orc-wiki/schemas/wiki-doc.md +120 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orc-planner-mini
|
|
3
|
+
description: >
|
|
4
|
+
Fast-lane Requirement Planner for ORC-MINI (Sonnet 5, high effort). Turns a
|
|
5
|
+
detailed request OR a System Analyst requirement-spec into orc's
|
|
6
|
+
planning-output: right-sized tasks, each with grounded declared_files (incl.
|
|
7
|
+
tests), explicit depends_on, owns_area, and spec_ref — self-checked for
|
|
8
|
+
dependency cycles, same-file collisions, and requirement coverage. Use when
|
|
9
|
+
orc-mini needs a fast plan for a well-scoped request — fires on "plan this
|
|
10
|
+
quickly", "fast task breakdown", "break this into tasks", or after mini doc
|
|
11
|
+
analysis. Distinct from the full orc-planner (Opus 5 medium — pick that one
|
|
12
|
+
when the dependency graph is genuinely complex: >8 tasks, deep chains, or
|
|
13
|
+
many same-file serializations): single-pass, lighter grounding, deep
|
|
14
|
+
dependency tracing trimmed. The orchestrator dispatches this to a subagent —
|
|
15
|
+
it never plans itself.
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# orc-planner-mini
|
|
19
|
+
|
|
20
|
+
Fast variant of the Requirement Planner, dispatched by orc-mini as a Sonnet 5
|
|
21
|
+
high subagent. Produces the SAME artifact (orc's `schemas/planning-output.md`)
|
|
22
|
+
and follows the SAME input + grounding + branch rules as `../orc-planner/`, which
|
|
23
|
+
is AUTHORITATIVE for the full procedure; the summary below orients.
|
|
24
|
+
|
|
25
|
+
## Procedure (summary)
|
|
26
|
+
|
|
27
|
+
1. **Accept** a detailed request OR an analyst requirement-spec. "Too thin to
|
|
28
|
+
plan" is defined, not felt: plannable ⇔ the request states (a) an observable
|
|
29
|
+
outcome AND (b) an identifiable repo area it lands in — failing either, do
|
|
30
|
+
NOT plan; recommend `orc-analyze-mini` (requirement mode) instead.
|
|
31
|
+
2. **Ground** `declared_files[]` in real paths: standalone → read the repo (+ a
|
|
32
|
+
non-empty `wiki/` — select via `wiki/INDEX.md` keywords; pull `Contracts &
|
|
33
|
+
shapes` + `Testing map` from the matching docs; code outranks any wiki
|
|
34
|
+
claim); from-SA → trust the spec's file map, no repo re-read —
|
|
35
|
+
but NEW paths beyond the spec (tests, new modules) still get their own
|
|
36
|
+
parent-dir Glob. Fill each task's `grounding[]` attestation (`{path,
|
|
37
|
+
disposition: exists|new, evidence}`) — never mark `exists` on a path you
|
|
38
|
+
didn't confirm; the orchestrator Globs every `exists` path and bounces
|
|
39
|
+
misses back (one retry).
|
|
40
|
+
3. **Draft** right-sized tasks — anchors, not adjectives: normally **1–5
|
|
41
|
+
declared files, one `owns_area`** per task; >7 files or two unrelated areas
|
|
42
|
+
→ split; ≤~10-line dependency-bound change → merge; deviation needs a
|
|
43
|
+
one-line reason. Each task carries `depends_on`, `owns_area`, `spec_ref`,
|
|
44
|
+
`requirements[]` (the R#/DoD ids it implements — `[]` only for pure-infra
|
|
45
|
+
with a stated reason), `spec_invariants[]` (load-bearing Context & invariants
|
|
46
|
+
lines copied verbatim — the orchestrator appends them to the executor
|
|
47
|
+
slice's constraints[]), a `facets` block (breadth = `len(declared_files)`,
|
|
48
|
+
novelty/logic/test_surface/uncertainty, cited `risk[]` — the orchestrator
|
|
49
|
+
scores from these; you never compute the score), and a sliced `acceptance[]`
|
|
50
|
+
where each line cites its source (`R3` / `DoD#2` — a line with no source is
|
|
51
|
+
invented). **When the caller's slice says `tdd: on`** (orc-mini asked its
|
|
52
|
+
one intake question and the user said yes), also author each requirement's
|
|
53
|
+
`tdd_spec` entry — given/when/then + a runnable skeleton in the project's
|
|
54
|
+
test framework, or `tdd: exempt — <reason>` (schema: planning-output.md).
|
|
55
|
+
4. **Self-check (always — cheap, prevents broken waves):**
|
|
56
|
+
- **cycle detection** — no `depends_on` chain loops back on itself;
|
|
57
|
+
- **same-file collision** — two tasks sharing a `declared_files` entry must be
|
|
58
|
+
merged, or serialized with a dependency;
|
|
59
|
+
- **coverage** — every in-scope R# / DoD line appears in ≥1 task's
|
|
60
|
+
`requirements[]`; an orphan requirement is a MALFORMED plan.
|
|
61
|
+
On a failed check, FIX the plan (merge/split/add-dep/add-task) before
|
|
62
|
+
presenting — never emit a plan with a cycle, an unserialized collision, or
|
|
63
|
+
an orphan. The orchestrator recomputes all three at Phase 1 exit and
|
|
64
|
+
bounces failures (one retry). Deep dependency tracing is trimmed here.
|
|
65
|
+
5. **Ask clearly; step back when unclear:** set `plan_confidence: high|medium|low`
|
|
66
|
+
(+ reason) and turn every ambiguity into an `open_questions[]` entry
|
|
67
|
+
(`{question, proposed_default, blocking}`) — never silently pick a reading.
|
|
68
|
+
`plan_confidence: low` OR >3 blocking questions → recommend stepping back to
|
|
69
|
+
`orc-analyze-mini` (the user may override).
|
|
70
|
+
6. **Present** the plan once → approve/edit (breakdown/approach only).
|
|
71
|
+
7. **Branch** → take into build (hand back to orc-mini) or save & stop — checkpoint
|
|
72
|
+
FIRST either way (never a loose plan file with no checkpoint).
|
|
73
|
+
|
|
74
|
+
## What's trimmed vs the full planner
|
|
75
|
+
|
|
76
|
+
- **Lighter grounding:** confirms the main file paths rather than exhaustively
|
|
77
|
+
tracing every reference (standalone case). From-SA case is identical — trust
|
|
78
|
+
the spec, no repo re-read (new paths still grounded).
|
|
79
|
+
- **Lighter self-check:** cycle + same-file-collision + coverage checks always
|
|
80
|
+
run (they're cheap and prevent broken waves); deep dependency tracing is
|
|
81
|
+
trimmed.
|
|
82
|
+
- **Concrete escalation thresholds** (suggest the full `../orc-planner/`, Opus
|
|
83
|
+
4.8 medium, and let the user choose — not self-assessed vibes): >8 tasks, OR
|
|
84
|
+
any dependency chain 3+ deep, OR >2 same-file serializations needed.
|
|
85
|
+
- **Model:** Sonnet 5, high effort.
|
|
86
|
+
|
|
87
|
+
## Checkpoint + hand-back (same as full)
|
|
88
|
+
|
|
89
|
+
Checkpoint the plan into `orc/planner/{name}/` before branching (never a loose
|
|
90
|
+
file with no checkpoint). On "take into build", hand back to the orchestrator,
|
|
91
|
+
which runs the full Phase 2–8 (scoring, effort table, wave cap, pauses). The
|
|
92
|
+
mini planner never builds directly.
|
|
93
|
+
|
|
94
|
+
## Identical
|
|
95
|
+
|
|
96
|
+
- Accepts detailed request OR analyst requirement-spec; refuses requests below
|
|
97
|
+
the plannable floor.
|
|
98
|
+
- Grounding provenance recorded only when standalone.
|
|
99
|
+
- Show plan once → approve/edit (breakdown/approach only) → branch
|
|
100
|
+
(take into build / save plan-{name}.md and stop).
|
|
101
|
+
- Plain-language handoffs, dispatched not self-run.
|
|
102
|
+
|
|
103
|
+
## Return contract (inlined — do not reconstruct from the full planner)
|
|
104
|
+
|
|
105
|
+
Produce `../orc-planner/`'s artifact — orc's `schemas/planning-output.md`: every
|
|
106
|
+
task with `declared_files` (incl. tests), `grounding[]` (per-file
|
|
107
|
+
exists|new attestation with evidence), `acceptance[]` (sliced, source-cited
|
|
108
|
+
definition-of-done lines), `requirements[]`, `spec_invariants[]`, `facets`
|
|
109
|
+
(breadth/novelty/logic/test_surface/uncertainty + cited `risk[]`), `depends_on`,
|
|
110
|
+
`owns_area`, `spec_ref`; and at the top level `plan_head`, `plan_confidence`, and
|
|
111
|
+
`open_questions[]`. Checkpoint it into `orc/planner/{name}/` before branching.
|
|
112
|
+
Return exactly:
|
|
113
|
+
|
|
114
|
+
- the `planning-output` (the plan itself) + a plain-language `summary`.
|
|
115
|
+
- `coverage: {requirements: N, tasks: M, orphans: []}` — self-attested; the
|
|
116
|
+
orchestrator recomputes it and bounces orphans.
|
|
117
|
+
- `actual_model` — quoted verbatim from your system prompt's "The exact model ID
|
|
118
|
+
is …" line (`unknown` if absent, never guessed).
|
|
119
|
+
- `actual_effort` — `$CLAUDE_EFFORT`.
|
|
120
|
+
|
|
121
|
+
Never build or spawn.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orc-pr
|
|
3
|
+
description: >
|
|
4
|
+
Ship-phase subskill for ORC Phase 8. Handles commit, push, and PR
|
|
5
|
+
file generation from the team's template (pr.md in this folder). Coordination
|
|
6
|
+
skill: always runs inline. Not for direct user invocation.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# orc-pr
|
|
10
|
+
|
|
11
|
+
## Input slice
|
|
12
|
+
|
|
13
|
+
- ticket, pr_title, target_branch — asked together by the orchestrator
|
|
14
|
+
- changed_files[] / commit_range
|
|
15
|
+
- template_ref = subskills/orc-pr/pr.md — the team's PR template (user-provided)
|
|
16
|
+
- build_green: bool — MUST be true; refuse commit otherwise (hard rule 8)
|
|
17
|
+
- stacked_pr, stacked_pr_loc, stacked_pr_files, stacked_pr_max_layers — the
|
|
18
|
+
stack-gate config (`../../config.md`)
|
|
19
|
+
|
|
20
|
+
## Procedure
|
|
21
|
+
|
|
22
|
+
1. Gate: build_green must be true. If not, return failure — never commit red.
|
|
23
|
+
2. **Stacked-PR gate (load `stack-gate.md` — full `/orc` + `/orc-ultra` only).**
|
|
24
|
+
Measure the change, compare against `stacked_pr_loc` / `stacked_pr_files`, and
|
|
25
|
+
on a tripped threshold ask the ONE P0 question. "Yes" (with a ticket AND a
|
|
26
|
+
resolved PR template) → write `stacked-pr/<slug>/STACK-FROM.md` and hand off to
|
|
27
|
+
`/orc-pr-setup` → `/orc-pr-driver`; anything else (under threshold, `off`,
|
|
28
|
+
declined, no ticket, no template) → continue this procedure as one regular PR.
|
|
29
|
+
3. Show the current branch to the user via the orchestrator before committing.
|
|
30
|
+
4. Commit (message referencing the ticket) → push → generate the PR file:
|
|
31
|
+
- Read pr.md as the template. Fill its sections from the run: intent-spec
|
|
32
|
+
scope, task summary, test results, verify outcome.
|
|
33
|
+
- Filename: run/{ticket}-{sanitized-title}.md
|
|
34
|
+
(lowercase, spaces→hyphens, strip anything unsafe for filenames)
|
|
35
|
+
5. PR targets `target_branch` as base.
|
|
36
|
+
|
|
37
|
+
## Return contract
|
|
38
|
+
|
|
39
|
+
- { pr_file_path, commit_result, push_result, pr_result }
|
|
40
|
+
- `stack_gate`: { tripped: bool, loc, files, decision: `under-threshold` | `off` |
|
|
41
|
+
`declined` | `no-ticket` | `no-template` | `handoff`, slug } — always present in
|
|
42
|
+
full `/orc` / `/orc-ultra`; `handoff` means no PR was created here.
|
|
43
|
+
- failure_reason on any failed step (the why). Malformed = failure to caller.
|
|
44
|
+
|
|
45
|
+
## Template
|
|
46
|
+
|
|
47
|
+
The file `pr.md` in this folder is the team's default PR template. Replace the
|
|
48
|
+
placeholder with your real template — the skill reads whatever is there. Template
|
|
49
|
+
resolution when it is still the placeholder (project `.github/`, `docs/`,
|
|
50
|
+
`CLAUDE.md`, or three recommended options) is
|
|
51
|
+
`../../../_shared/pr-templates.md` — shared with the stacked-PR lanes.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
PLACEHOLDER — replace this entire file with your team's real PR template (md).
|
|
3
|
+
orc-pr reads this file as the template for every generated PR description.
|
|
4
|
+
The structure below is only a fallback so the skill works before you paste yours.
|
|
5
|
+
-->
|
|
6
|
+
|
|
7
|
+
# {pr_title}
|
|
8
|
+
|
|
9
|
+
**Ticket:** {ticket}
|
|
10
|
+
**Target:** {target_branch}
|
|
11
|
+
|
|
12
|
+
## What changed
|
|
13
|
+
{summary of tasks completed, from the run}
|
|
14
|
+
|
|
15
|
+
## Why
|
|
16
|
+
{scope-in from the intent-spec}
|
|
17
|
+
|
|
18
|
+
## Testing
|
|
19
|
+
{tests added/updated, verify result}
|
|
20
|
+
|
|
21
|
+
## Notes
|
|
22
|
+
{P2/P3 findings left unfixed, stale_review flags, anything reviewers should know}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Ship-phase STACKED-PR gate (Phase 8, deterministic)
|
|
2
|
+
|
|
3
|
+
Loaded by `orc-pr` at Phase 8, before the commit/push/PR question. Turns "this
|
|
4
|
+
change is too big for one PR" from a judgment call into a measured gate with ONE
|
|
5
|
+
P0 question.
|
|
6
|
+
|
|
7
|
+
Scope: full `/orc` and `/orc-ultra` only — **never in orc-mini**, orc-fast (the
|
|
8
|
+
fast lane never stops the chat) or orc-diy (flow shape is compile-owned).
|
|
9
|
+
|
|
10
|
+
## Step 1 — measure the change (never estimate)
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
git diff --numstat # unstaged
|
|
14
|
+
git diff --numstat --cached # staged
|
|
15
|
+
git status --short # untracked adds
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
`LoC = additions + deletions` and `files = count`, both **after** removing the
|
|
19
|
+
exclusion list in `../../../_shared/stack-plan.md` (generated code, lockfiles,
|
|
20
|
+
`vendor/`, `node_modules/`, `testdata/`, pure renames). Excluded paths are kept as
|
|
21
|
+
a LISTED bucket, never silently dropped. `test-generator/` deliverables count;
|
|
22
|
+
`mock-examples/` is never staged, so it never counts.
|
|
23
|
+
|
|
24
|
+
## Step 2 — the threshold (config, not vibes)
|
|
25
|
+
|
|
26
|
+
Read from `../../config.md` (← `.claude/orc.config.yaml`):
|
|
27
|
+
|
|
28
|
+
| Key | Default | Meaning here |
|
|
29
|
+
|---|---|---|
|
|
30
|
+
| `stacked_pr` | `ask` | `ask` = P0 question when the threshold trips · `on` = go straight into the stack flow · `off` = never offer, regular PR |
|
|
31
|
+
| `stacked_pr_loc` | 1000 | change LoC **≥ this** → stack candidate (also the per-layer LoC ceiling) |
|
|
32
|
+
| `stacked_pr_files` | 20 | changed files **≥ this** → stack candidate (also the per-layer file ceiling) |
|
|
33
|
+
| `stacked_pr_max_layers` | 6 | soft layer cap the planner honors |
|
|
34
|
+
|
|
35
|
+
**Trigger = `LoC >= stacked_pr_loc` OR `files >= stacked_pr_files`.** One number
|
|
36
|
+
does both jobs on purpose: a change that cannot fit inside ONE layer's budget is
|
|
37
|
+
exactly the change worth stacking.
|
|
38
|
+
|
|
39
|
+
Below the threshold, or `stacked_pr: off` → **no question, no mention**: continue
|
|
40
|
+
the normal ship flow. Emit `GATE stack-gate pass :: under-threshold loc=<n>
|
|
41
|
+
files=<n>` and move on. Above it, print the one-line report either way:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
STACK GATE — <n> LoC · <n> files (excluded: <n> files) → threshold <loc>/<files> TRIPPED
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Step 3 — prerequisites (both required, asked in the SAME round as the P0)
|
|
48
|
+
|
|
49
|
+
1. **Ticket number.** Required — layer branch names and titles derive from it.
|
|
50
|
+
Ask once. No ticket → skip stacking, ship one regular PR.
|
|
51
|
+
2. **PR template.** Resolve per `../../../_shared/pr-templates.md`: the ORC
|
|
52
|
+
template (`pr.md`, only if the team replaced the placeholder) → a project
|
|
53
|
+
template (`.github/`, `docs/`) → a PR-template section in `CLAUDE.md` → else
|
|
54
|
+
RECOMMEND three options (`minimal`, `context-first`, `risk-and-rollback`) and
|
|
55
|
+
let the user pick or paste their own. **Declining every option → skip
|
|
56
|
+
stacking, ship one regular PR** and say so in one line.
|
|
57
|
+
|
|
58
|
+
Neither prerequisite is silently defaulted, and neither is a build failure — both
|
|
59
|
+
degrade to a regular PR.
|
|
60
|
+
|
|
61
|
+
## Step 4 — the P0 question (one question, both answers legitimate)
|
|
62
|
+
|
|
63
|
+
With the threshold tripped and both prerequisites satisfied, ask ONE question
|
|
64
|
+
(`stacked_pr: on` skips the asking and takes "yes"):
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
This change is <n> LoC across <n> files — above the one-PR budget
|
|
68
|
+
(<stacked_pr_loc> LoC / <stacked_pr_files> files).
|
|
69
|
+
|
|
70
|
+
Stack it into reviewable layers?
|
|
71
|
+
[yes] plan the layers (/orc-pr-setup) → build + submit them (/orc-pr-driver).
|
|
72
|
+
<n> layers means <n> full CI runs; each layer is reviewable on its own.
|
|
73
|
+
[no] push one regular PR as usual. ← no penalty, no re-ask
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
"No" → continue the normal ship flow, and never re-ask this run. Emit
|
|
77
|
+
`GATE stack-gate pass :: declined`.
|
|
78
|
+
|
|
79
|
+
## Step 5 — handoff (never inline)
|
|
80
|
+
|
|
81
|
+
The ship phase does NOT plan or cut layers itself. It hands off:
|
|
82
|
+
|
|
83
|
+
1. Verify the build is green (`build_green` — hard rule 10: never stack a red
|
|
84
|
+
build; a red build ends the gate).
|
|
85
|
+
2. Commit the run's work as usual **on the current feature branch** — the
|
|
86
|
+
snapshot the driver splits from (`orc-pr-driver/references/orc-run-split.md`).
|
|
87
|
+
Do not push it as a PR yet.
|
|
88
|
+
3. Write `stacked-pr/<slug>/STACK-FROM.md` per `../../../_shared/stack-plan.md`
|
|
89
|
+
with `STACK-FROM: orc-ship`, the ticket, `ENTRY-MODE: orc-run`, the resolved
|
|
90
|
+
`PR-TEMPLATE`, the measured `SURFACE`, this run's `RUN-DIR` (the driver reads
|
|
91
|
+
the task graph, `declared_files` and verify evidence from it) and
|
|
92
|
+
`BUILD-GREEN: true`.
|
|
93
|
+
4. Tell the user, in this order: run **`/orc-pr-setup`** (plans the layers, asks
|
|
94
|
+
on every uncertain seam, writes `stacked-pr/<slug>/stack-plan.md`), then
|
|
95
|
+
**`/orc-pr-driver`** (branches, per-layer green gate, `gh stack submit`).
|
|
96
|
+
A user who already has a filled plan can go straight to `/orc-pr-driver`.
|
|
97
|
+
5. Emit `GATE stack-gate pass :: handoff ticket=<T> slug=<slug>` and finish the
|
|
98
|
+
ship phase normally (usage report, wiki stale-flag, `FINISH`) — the stack
|
|
99
|
+
itself completes in the two standalone lanes.
|
|
100
|
+
|
|
101
|
+
## Boundaries
|
|
102
|
+
|
|
103
|
+
- The gate **measures and asks**; it never plans layers, never creates a branch
|
|
104
|
+
per layer, never runs `gh stack`.
|
|
105
|
+
- Missing `gh`/`gh-stack`, or a fork, is not this gate's problem to solve — the
|
|
106
|
+
lanes preflight it (`../../../_shared/gh-stack-commands.md`) and fall back to a
|
|
107
|
+
regular PR.
|
|
108
|
+
- One question per run. A declined stack is never re-offered.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orc-review-verify
|
|
3
|
+
description: >
|
|
4
|
+
Review/verify worker for ORC Phases 5–6 (Opus 5 medium). Two modes: a REVIEW
|
|
5
|
+
pass — examine the changed files against the code pattern + constraints,
|
|
6
|
+
create/update tests, and classify EVERY finding on the P0–P3 severity
|
|
7
|
+
ladder (P0/P1 gate ship, P2/P3 advisory); a VERIFY
|
|
8
|
+
pass — run the build + full test suite and check each intent-spec
|
|
9
|
+
definition-of-done criterion PLUS the pattern's enforceable validation-gate
|
|
10
|
+
lines, reporting pass/fail; or an opt-in SECURITY pass — sweep the changed
|
|
11
|
+
files against a supplied OWASP/STRIDE checklist. Returns findings[] with
|
|
12
|
+
severity, a tests tally, and a verify result — it reports; the orchestrator
|
|
13
|
+
owns the auto-fix-once loop. Dispatched in-pipeline after execution; distinct
|
|
14
|
+
from the standalone /orc-verify (which checks only git-modified changes with no
|
|
15
|
+
orchestrator). ALWAYS a spawned subagent — not for direct user invocation.
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# orc-review-verify
|
|
19
|
+
|
|
20
|
+
One entry point: spawned via the Task tool with `subagent.md` framing + the
|
|
21
|
+
slice, which points to `core.md`. `core.md` is the AUTHORITATIVE spec (full input
|
|
22
|
+
slice, both procedures, return contract); the summary below orients — on any
|
|
23
|
+
conflict, `core.md` wins.
|
|
24
|
+
|
|
25
|
+
## What the worker does (summary)
|
|
26
|
+
|
|
27
|
+
- **phase=review:** examine `changed_files[]` against `code_pattern` + `constraints[]`;
|
|
28
|
+
create/update tests for the changed surface; independently re-check each
|
|
29
|
+
`invariants[]` rule AND each enforceable `validation_gate[]` line against the
|
|
30
|
+
diff (a violation is P0), plus any `fe_rules[]` pack rules on FE diffs
|
|
31
|
+
(file:line findings, P1–P3 by impact, never auto-P0); classify EVERY
|
|
32
|
+
finding on the ladder — **P0** (failing tests/build, unmet acceptance
|
|
33
|
+
criteria, runtime errors, invariant violations — caller auto-fixes, no ask),
|
|
34
|
+
**P1** (correctness/security risk, constraint violations — caller asks the
|
|
35
|
+
user before fixing), **P2** (maintainability — advisory fix-batch offer),
|
|
36
|
+
**P3** (cosmetic — advisory, counted). Never fix P2/P3; P0/P1 fixes are the
|
|
37
|
+
caller's call. **Evidence-or-advisory:** every P0–P2 finding carries
|
|
38
|
+
`file:line` + the offending line(s) quoted VERBATIM; an unanchored finding is
|
|
39
|
+
AUTO-P3 (never gates, never triggers a fix) — the caller spot-checks quotes
|
|
40
|
+
before acting on P0/P1.
|
|
41
|
+
- **phase=verify (two halves, v0.33.0):** FIRST the **TDD gate** — run the
|
|
42
|
+
plan's TDD suite (`tdd_suite[]` in the slice) plus the build + full test
|
|
43
|
+
suite; green is the definition-of-done for non-exempt requirements, and each
|
|
44
|
+
red TDD test is a P0 tied to its requirement (the caller owns the
|
|
45
|
+
`tdd_loop_max` repair loop). THEN the **adversarial review** — attack the
|
|
46
|
+
green implementation: edge cases the spec missed, error paths, contract
|
|
47
|
+
violations, race/ordering, workflow breaks (dead wiring, broken commands) —
|
|
48
|
+
findings on the same P0–P3 ladder. Also fold the enforceable
|
|
49
|
+
`validation_gate[]` lines into the criteria set, then check EACH criterion
|
|
50
|
+
individually (pass/fail, nothing invented; an unmet gate line = unmet
|
|
51
|
+
criterion = P0), each with per-criterion `evidence` (the test/output line or
|
|
52
|
+
file:line that proves it); report failures precisely. You don't fix — the
|
|
53
|
+
caller owns the auto-fix-once loop.
|
|
54
|
+
- **phase=security (opt-in):** sweep only `changed_files[]` against the supplied
|
|
55
|
+
`security_checklist[]` (wrap Semgrep if installed, never install it); findings
|
|
56
|
+
on the same ladder (exploitable-in-diff = P0, hardening gap = P1,
|
|
57
|
+
defense-in-depth = P2/P3). Report-only, no `result` verdict.
|
|
58
|
+
|
|
59
|
+
## Return shape (summary — full contract in `core.md`)
|
|
60
|
+
|
|
61
|
+
`{ phase, findings[]{severity: P0|P1|P2|P3, location "file:line", quote (verbatim,
|
|
62
|
+
required P0–P2; unanchored ⇒ AUTO-P3), description, criterion},
|
|
63
|
+
criteria[] (verify only){criterion, result, evidence}, tests{added,updated,passing},
|
|
64
|
+
result (verify only): passed|failed, actual_model, actual_effort, failure_reason }`
|
|
65
|
+
|
|
66
|
+
**Validation checkpoint before returning:** every finding carries a `severity`
|
|
67
|
+
from the P0–P3 ladder; every P0–P2 finding carries `file:line` + a VERBATIM
|
|
68
|
+
`quote` (else downgrade it to P3 yourself);
|
|
69
|
+
verify sets `result` + per-criterion `evidence`; `actual_model` is quoted
|
|
70
|
+
VERBATIM (never inferred). A
|
|
71
|
+
malformed return is treated as failure by the caller.
|
|
72
|
+
|
|
73
|
+
Fixed models (from `../../references/effort-and-mode.md`): review on the OpenSpec/self
|
|
74
|
+
path = Opus 5 medium; review on the Superpowers path is delegated to the
|
|
75
|
+
Superpowers review skill instead (Sonnet 4.6 medium). Verify = Opus 5 medium,
|
|
76
|
+
always this subskill.
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# orc-review-verify — Core (mode-neutral)
|
|
2
|
+
|
|
3
|
+
## Input slice
|
|
4
|
+
|
|
5
|
+
- phase: review | verify | security
|
|
6
|
+
- acceptance_criteria[] — the intent-spec's definition-of-done, verbatim
|
|
7
|
+
(verify checks EXACTLY these; nothing invented)
|
|
8
|
+
- code_pattern — resolved/user-provided style guide, or null (review bare)
|
|
9
|
+
- invariants[] — BLOCKING code-pattern rules to re-check, or empty
|
|
10
|
+
(a violation is a P0 finding)
|
|
11
|
+
- validation_gate[] — the pattern's enforceable acceptance checks (already
|
|
12
|
+
measurability-filtered at reconciliation), or empty.
|
|
13
|
+
Verify treats each line as an acceptance criterion;
|
|
14
|
+
review re-checks them against the diff.
|
|
15
|
+
- fe_rules[] — impact-ordered FE rule-pack rules (a11y/perf) when the
|
|
16
|
+
diff touches FE files, else empty. Findings from these
|
|
17
|
+
are P1–P3 by impact (never automatic P0), always with
|
|
18
|
+
file:line.
|
|
19
|
+
- security_checklist[] — OWASP/STRIDE checklist items (phase=security only),
|
|
20
|
+
else empty
|
|
21
|
+
- tdd_suite[] — (phase=verify, v0.33.0) the plan's materialized TDD
|
|
22
|
+
acceptance tests: {requirement, test_path} per
|
|
23
|
+
non-exempt requirement, plus the run's exemptions
|
|
24
|
+
(`tdd: exempt — <reason>` lines). Empty on a
|
|
25
|
+
whole-run exemption or a pre-v0.33.0 plan.
|
|
26
|
+
- gotchas[] — 0–3 repair-memory entries whose `scope` glob matches
|
|
27
|
+
`changed_files`, or empty. A CHECKLIST, not a rule
|
|
28
|
+
set: "has this change reintroduced a failure this
|
|
29
|
+
project already paid for?" A confirmed hit is a
|
|
30
|
+
normal finding, anchored and severity-classified like
|
|
31
|
+
any other — never an automatic P0 because a gotcha
|
|
32
|
+
named it. Empty is the normal case. Canonical:
|
|
33
|
+
`.claude/skills/_shared/gotchas.md`.
|
|
34
|
+
- changed_files[] — the surface to examine
|
|
35
|
+
- constraints[] — intent-spec hard rules (a violation is a P1 finding)
|
|
36
|
+
- model, effort — informational
|
|
37
|
+
|
|
38
|
+
## Review procedure (phase=review)
|
|
39
|
+
|
|
40
|
+
1. Examine changed_files against code_pattern (if given) and constraints.
|
|
41
|
+
2. Create/update test files and test cases for the changed surface.
|
|
42
|
+
3. Re-check each `invariants[]` rule against the diff independently (don't trust the
|
|
43
|
+
executor's self-attestation) — any violation is a P0 finding. Re-check each
|
|
44
|
+
`validation_gate[]` line the same way — an unmet enforceable line is P0.
|
|
45
|
+
4. Re-check each `fe_rules[]` rule against the FE parts of the diff; emit
|
|
46
|
+
findings with file:line, classified P1–P3 by real impact (a rule-pack hit is
|
|
47
|
+
never automatically P0 — invariants and the gate own that severity).
|
|
48
|
+
5. **Evidence-or-advisory (anti-phantom rule):** every P0–P2 finding MUST carry
|
|
49
|
+
`location` as `file:line` plus `quote` — the offending line(s) copied
|
|
50
|
+
VERBATIM from the file (like `actual_model`: quoted, never reconstructed).
|
|
51
|
+
A finding you cannot anchor to a real line you read this session is
|
|
52
|
+
AUTO-P3 (advisory — it never gates ship and never triggers a fix dispatch).
|
|
53
|
+
The caller spot-checks quotes before acting on P0/P1.
|
|
54
|
+
6. Classify EVERY finding on the P0–P3 ladder:
|
|
55
|
+
- P0 — objective breakage: failing tests, broken build, unmet acceptance
|
|
56
|
+
criteria, runtime errors, invariant violations. Gates ship; the caller
|
|
57
|
+
auto-fixes immediately (no ask).
|
|
58
|
+
- P1 — correctness or security risk, constraint violations (judgment-level
|
|
59
|
+
blockers that don't break the build). Gates ship; the caller asks the user
|
|
60
|
+
before fixing.
|
|
61
|
+
- P2 — maintainability: duplication, missing tests for a changed path,
|
|
62
|
+
unclear structure. Advisory; itemized in the summary as an optional fix-batch.
|
|
63
|
+
- P3 — cosmetic: naming, formatting, length, style. Advisory; counted only.
|
|
64
|
+
7. Never fix P2/P3. P0/P1 fixes are the caller's decision, not yours.
|
|
65
|
+
|
|
66
|
+
## Verify procedure (phase=verify — two halves, v0.33.0)
|
|
67
|
+
|
|
68
|
+
**Half 1 — TDD gate (deterministic):**
|
|
69
|
+
1. Run the build and full test suite — INCLUDING every `tdd_suite[]` test.
|
|
70
|
+
2. Per non-exempt requirement: its TDD test green = that requirement's
|
|
71
|
+
definition-of-done met; red = a P0 finding tied to that requirement
|
|
72
|
+
(`criterion` = the requirement id). Report `tdd: {green: n, red: n,
|
|
73
|
+
exempt: n}` — the caller owns the `tdd_loop_max` repair loop; you never fix.
|
|
74
|
+
An empty `tdd_suite[]` (whole-run exemption / older plan) → skip this half
|
|
75
|
+
and SAY so in the return; never invent tests here.
|
|
76
|
+
|
|
77
|
+
**Half 2 — adversarial review (attack the green implementation):**
|
|
78
|
+
3. Hunt what the spec missed: edge cases (empty/zero/max inputs, unicode,
|
|
79
|
+
pagination edges), error paths (failure of each external call, partial
|
|
80
|
+
writes), contract violations (response shapes, status codes, event
|
|
81
|
+
payloads vs consumers), race/ordering hazards on shared state, and
|
|
82
|
+
workflow breaks — dead wiring (a route/handler/command nothing reaches),
|
|
83
|
+
broken commands, config keys read by nothing. Findings on the P0–P3
|
|
84
|
+
ladder with the same evidence-or-advisory rule (verbatim quote or AUTO-P3).
|
|
85
|
+
|
|
86
|
+
**Criteria sweep (unchanged):**
|
|
87
|
+
4. Fold every `validation_gate[]` line into the criteria set (each enforceable
|
|
88
|
+
line IS an acceptance criterion; the slice only carries enforceable ones —
|
|
89
|
+
measurability was decided at reconciliation, don't re-litigate it).
|
|
90
|
+
5. Check each criterion individually — pass/fail per criterion, each with
|
|
91
|
+
`evidence`: the test name/output line that proves it, or the `file:line`
|
|
92
|
+
that satisfies it (quoted, never asserted from memory). An unmet gate
|
|
93
|
+
line is an unmet criterion (P0).
|
|
94
|
+
6. Report failures precisely (which criterion, what observed). You do not fix;
|
|
95
|
+
the caller owns the auto-fix-once loop.
|
|
96
|
+
|
|
97
|
+
## Security procedure (phase=security — opt-in, config `security_review`)
|
|
98
|
+
|
|
99
|
+
1. Sweep ONLY `changed_files[]` against each `security_checklist[]` item
|
|
100
|
+
(OWASP/STRIDE-derived; supplied in the slice, never invented).
|
|
101
|
+
2. If Semgrep is installed in the environment (`semgrep --version` succeeds),
|
|
102
|
+
run it scoped to the changed files and fold its results in; skip silently
|
|
103
|
+
otherwise — never install tooling.
|
|
104
|
+
3. Findings on the same P0–P3 ladder: a directly exploitable flaw introduced by
|
|
105
|
+
the diff (injection, authz bypass, secret in code) is P0; a hardening gap or
|
|
106
|
+
risky-but-guarded path is P1; defense-in-depth suggestions are P2/P3.
|
|
107
|
+
4. Report only; you never fix. Same return contract (no `result` field —
|
|
108
|
+
security is a findings pass, not a verdict).
|
|
109
|
+
|
|
110
|
+
## Return contract (emit EXACTLY this)
|
|
111
|
+
|
|
112
|
+
- phase
|
|
113
|
+
- findings[]: { severity: P0|P1|P2|P3, location ("file:line" — REQUIRED for
|
|
114
|
+
P0–P2), quote (offending line(s) VERBATIM — REQUIRED for P0–P2;
|
|
115
|
+
missing/unanchored ⇒ the finding is AUTO-P3), description,
|
|
116
|
+
criterion|null }
|
|
117
|
+
- criteria[] (verify only): { criterion, result: pass|fail, evidence — the test
|
|
118
|
+
name/output line or file:line that proves it }
|
|
119
|
+
- tdd (verify only): { green: int, red: int, exempt: int } — the TDD-gate tally
|
|
120
|
+
(omit only when the slice carried no tdd_suite[])
|
|
121
|
+
- tests: { added: int, updated: int, passing: "x/y" }
|
|
122
|
+
- result (verify only): passed | failed
|
|
123
|
+
- actual_model — the model id quoted VERBATIM from your system prompt ("The exact
|
|
124
|
+
model ID is …"); NEVER inferred; `unknown` if absent
|
|
125
|
+
- actual_effort — the value of $CLAUDE_EFFORT (read via Bash)
|
|
126
|
+
- failure_reason — required if the pass itself could not run; else null
|
|
127
|
+
- gotcha_recorded — REQUIRED only when a repair loop CLOSED inside this same run
|
|
128
|
+
and you re-checked it (a P0/P1 you raised and that was fixed; a
|
|
129
|
+
verify criterion that was unmet and is now met): the entry body
|
|
130
|
+
{trigger, symptom, cause, fix, scope}, or `none` + a one-line
|
|
131
|
+
reason. Not required otherwise. A finding left OPEN returns
|
|
132
|
+
`none` — an unsolved failure is not a gotcha. You RETURN it;
|
|
133
|
+
the caller writes the file (`_shared/return-validation.md` §7)
|
|
134
|
+
|
|
135
|
+
Malformed returns are treated as failure by the caller.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# orc-review-verify — Subagent wrapper (orchestrator prepends at spawn)
|
|
2
|
+
|
|
3
|
+
You are an isolated review/verify worker. Examine only what the slice gives
|
|
4
|
+
you. You do not fix anything — you classify, test, and report. Emit the return
|
|
5
|
+
structure from core.md and STOP.
|
|
6
|
+
|
|
7
|
+
[Orchestrator: append the input slice here at spawn time.]
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orc-testgen
|
|
3
|
+
description: >
|
|
4
|
+
Worker subskill for ORC's opt-in Phase 6.5 (Test Authoring). Fires when the user
|
|
5
|
+
opts into writing tests ("write test cases", "generate tests", "author test
|
|
6
|
+
cases for these changes"). Writes test cases as a deliverable — automated test
|
|
7
|
+
files, a manual TEST-PLAN.md, and (for HTTP/API backends) a Postman-importable
|
|
8
|
+
curl bundle. It NEVER runs tests and NEVER gates the ship; the user tests
|
|
9
|
+
manually. ALWAYS invoked as a spawned subagent by the orchestrator. Not for
|
|
10
|
+
direct user invocation.
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# orc-testgen
|
|
14
|
+
|
|
15
|
+
One entry point: spawned via the Task tool with `subagent.md` framing + the
|
|
16
|
+
slice, which points to `core.md` — the AUTHORITATIVE procedure + return contract;
|
|
17
|
+
the summary below orients.
|
|
18
|
+
|
|
19
|
+
## What the worker does (summary)
|
|
20
|
+
|
|
21
|
+
1. Take the slice: changed surface (`actual_files`), the intent-spec's
|
|
22
|
+
definition-of-done (acceptance criteria), touched flows, constraints, detected stack.
|
|
23
|
+
2. Write **automated test files** in the project's framework, covering the changed surface.
|
|
24
|
+
3. Write a manual **TEST-PLAN.md** with two separated sections — "run the automated
|
|
25
|
+
suite" (exact CLI command) and "exercise the real running service" (manual/curl steps).
|
|
26
|
+
4. For an HTTP/API backend, write a Postman-importable **test-cases.http** curl bundle
|
|
27
|
+
(env-var placeholders — never real secrets).
|
|
28
|
+
5. Run NOTHING. Advisory `notes[]` may flag a case the code likely won't satisfy.
|
|
29
|
+
|
|
30
|
+
The manual deliverables (TEST-PLAN.md + test-cases.http) are pinned to
|
|
31
|
+
**`test-generator/<change-slug>/` at the project root** — a visible user
|
|
32
|
+
deliverable, never inside `.claude/` or the run folder (see `core.md`).
|
|
33
|
+
|
|
34
|
+
**Validation checkpoint before returning:** confirm each promised deliverable
|
|
35
|
+
actually exists on disk **at the pinned path** (test files in the project's
|
|
36
|
+
conventions; TEST-PLAN.md and — when the stack exposes HTTP — test-cases.http
|
|
37
|
+
under `test-generator/<change-slug>/`) before emitting the return contract in `core.md`.
|
|
38
|
+
|
|
39
|
+
Fixed model: `orc-test-author-opus-5-med` (Opus 5 medium — authoring good
|
|
40
|
+
integration tests is a judgment task). Opt-in: the orchestrator dispatches this
|
|
41
|
+
only when the user accepts the offer, defaulted from `config.generate_tests`. The
|
|
42
|
+
full lane runs it as Phase 6.5 (after Verify, confirmed at intake); **orc-mini
|
|
43
|
+
also offers it** as an end-of-run ask (only on a GREEN smoke gate). Either lane,
|
|
44
|
+
it never runs tests and never gates the ship. orc-mini still skips full
|
|
45
|
+
review/verify.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# orc-testgen — Core (mode-neutral)
|
|
2
|
+
|
|
3
|
+
A procedure specification: inputs, steps, outputs. Executed by a spawned
|
|
4
|
+
`orc-test-author-opus-5-med` subagent; the orchestrator never runs this
|
|
5
|
+
itself. **Authoring only — RUN NOTHING, GATE NOTHING.** The user tests manually.
|
|
6
|
+
|
|
7
|
+
## Input slice (you receive exactly this)
|
|
8
|
+
|
|
9
|
+
- changed_files[] — the surface the change touched (from the run's actual_files)
|
|
10
|
+
- acceptance_criteria[] — the intent-spec's definition-of-done (the "new behaviour")
|
|
11
|
+
- touched_flows[] — user journeys through the changed code (may be empty)
|
|
12
|
+
- constraints[] — intent-spec hard rules
|
|
13
|
+
- stack — {language, test_framework, is_http_api}; detect if absent
|
|
14
|
+
- test_types[] — subset of {new_behaviour, flow, change, regression}; default all
|
|
15
|
+
- output_conventions — where tests live in this repo
|
|
16
|
+
|
|
17
|
+
## Procedure
|
|
18
|
+
|
|
19
|
+
1. Detect stack: test framework + conventions, and whether the project exposes
|
|
20
|
+
HTTP endpoints (→ `is_http_api`).
|
|
21
|
+
2. Derive a **test matrix** from changed_files + acceptance_criteria + flows —
|
|
22
|
+
one row per case {id, type, target, asserts, external_deps}. Bound regression
|
|
23
|
+
to the diff's blast radius; never test the whole app.
|
|
24
|
+
3. Author **automated test files** in the project's framework/conventions where
|
|
25
|
+
feasible. Match existing test style. These stay in the project's own test
|
|
26
|
+
conventions (`output_conventions`) — do NOT move them.
|
|
27
|
+
4. **Pin the manual-QA output folder.** The two manual deliverables below are
|
|
28
|
+
USER deliverables, not run state — write BOTH to
|
|
29
|
+
**`test-generator/<change-slug>/` at the PROJECT ROOT** (create the folder if
|
|
30
|
+
absent). `<change-slug>` = the run's existing kebab-case run-folder slug (e.g.
|
|
31
|
+
`post-users`). NEVER write them inside `.claude/`, and NEVER inside the run
|
|
32
|
+
folder — a hidden path is invisible for self-QA.
|
|
33
|
+
5. Write **`test-generator/<change-slug>/TEST-PLAN.md`** (manual cases: scenario,
|
|
34
|
+
setup, steps, expected) with two CLEARLY SEPARATED sections:
|
|
35
|
+
- "Run the automated test suite" — the exact CLI command(s), pasted.
|
|
36
|
+
- "Exercise the real running service" — manual steps / curl.
|
|
37
|
+
6. If `is_http_api`: write **`test-generator/<change-slug>/test-cases.http`** —
|
|
38
|
+
one Postman-importable `curl` per endpoint/flow (env-var placeholders for base
|
|
39
|
+
URL + auth; NEVER real secrets). Reference it from TEST-PLAN.md.
|
|
40
|
+
7. Advisory only: note (do not gate) any case the code likely won't satisfy.
|
|
41
|
+
|
|
42
|
+
## Return contract (emit EXACTLY this; the caller validates)
|
|
43
|
+
|
|
44
|
+
- test_matrix[] — the rows above (or counts by type)
|
|
45
|
+
- files_authored[] — automated test files created/updated
|
|
46
|
+
- test_plan_path — path to TEST-PLAN.md; MUST be inside
|
|
47
|
+
`test-generator/<change-slug>/` (any other location is
|
|
48
|
+
a malformed return)
|
|
49
|
+
- curl_bundle_path — path to test-cases.http (also inside
|
|
50
|
+
`test-generator/<change-slug>/`), or null (non-API projects)
|
|
51
|
+
- run_command — exact CLI command(s) to run the authored tests
|
|
52
|
+
- notes[] — advisory gaps noticed while authoring (non-blocking); else []
|
|
53
|
+
- actual_model — model id quoted VERBATIM from your system prompt ("The
|
|
54
|
+
exact model ID is …"); NEVER inferred; `unknown` if absent
|
|
55
|
+
- actual_effort — the value of $CLAUDE_EFFORT (read via Bash)
|
|
56
|
+
- failure_reason — required if you could not author; else null
|
|
57
|
+
|
|
58
|
+
Malformed returns are treated as failure by the caller. Never run tests; never
|
|
59
|
+
spawn subagents.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# orc-testgen — Subagent wrapper (orchestrator prepends at spawn)
|
|
2
|
+
|
|
3
|
+
You are an isolated test-authoring worker. You WRITE test cases from the slice
|
|
4
|
+
below; you never run them, never fix code, never gate the ship. Make manual
|
|
5
|
+
testing easy for the user. Emit the return structure from core.md and STOP.
|
|
6
|
+
|
|
7
|
+
[Orchestrator: append the input slice here at spawn time.]
|