@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,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orc-checkpoint
|
|
3
|
+
description: >
|
|
4
|
+
Stateless persistence service for ORC — the checkpoint read/write engine. On a
|
|
5
|
+
trigger passed in by the orchestrator (batch_pause | token_limit |
|
|
6
|
+
phase_transition | crash_guard), it atomically writes
|
|
7
|
+
run/{slug}/checkpoint.json, regenerates the 10-line state-of-play.md, then reads
|
|
8
|
+
both back and validates; the read op locates the newest valid checkpoint for a
|
|
9
|
+
fresh-session resume. It makes NO judgment — it never decides WHEN to stop or
|
|
10
|
+
resume (the orchestrator owns that and passes the trigger in). Coordination
|
|
11
|
+
skill: always runs inline (loaded by the orchestrator), never spawned. Not for
|
|
12
|
+
direct user invocation.
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# orc-checkpoint
|
|
16
|
+
|
|
17
|
+
## Boundary (locked in design)
|
|
18
|
+
|
|
19
|
+
- Orchestrator DECIDES: when to checkpoint, when to stop, when/whether to
|
|
20
|
+
resume. These judgments need full run context and never leave the orchestrator.
|
|
21
|
+
- This skill EXECUTES: serialize/write atomically, read/validate back. It makes
|
|
22
|
+
no judgment; the `trigger` is an input, already decided.
|
|
23
|
+
|
|
24
|
+
## Write operation
|
|
25
|
+
|
|
26
|
+
Input: run_state (the checkpoint fields per `../../schemas/checkpoint.md`),
|
|
27
|
+
trigger (batch_pause | token_limit | phase_transition | crash_guard)
|
|
28
|
+
|
|
29
|
+
Minimal `run_state` shape (see `../../schemas/checkpoint.md` for the full field set):
|
|
30
|
+
```json
|
|
31
|
+
{ "run_slug": "merchant-notifications", "phase": 3, "updated_at": "2026-07-10T09:00:00Z",
|
|
32
|
+
"tasks": [ { "id": "T1", "status": "done", "actual_files": ["services/notify.ts"] } ],
|
|
33
|
+
"resume_pointer": "wave 2 of 3", "logging_enabled": true }
|
|
34
|
+
```
|
|
35
|
+
Steps:
|
|
36
|
+
1. Serialize run_state to JSON.
|
|
37
|
+
2. Atomic write: temp file → rename to run/{run-slug}/checkpoint.json.
|
|
38
|
+
3. Regenerate run/{run-slug}/state-of-play.md from the same state (10-line format per
|
|
39
|
+
`../../schemas/checkpoint.md`).
|
|
40
|
+
4. Read back and validate both writes.
|
|
41
|
+
Return: { checkpoint_path, state_of_play_path, written_at, resume_pointer }
|
|
42
|
+
|
|
43
|
+
A failed or unvalidated write returns failure — the caller must NOT stop the
|
|
44
|
+
session on a failed write; it surfaces the failure instead.
|
|
45
|
+
|
|
46
|
+
## Read operation
|
|
47
|
+
|
|
48
|
+
Input: run_id (or "newest")
|
|
49
|
+
Steps: locate the run subfolder, then newest valid checkpoint by updated_at → parse → validate schema.
|
|
50
|
+
Return: { run_state, resume_pointer } or failure if none valid.
|
|
51
|
+
|
|
52
|
+
## What this skill never does
|
|
53
|
+
|
|
54
|
+
- Decide to stop. Announce a pause. Talk to the user. Modify task logic.
|
|
55
|
+
- Write anything other than the two files above.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orc-execution
|
|
3
|
+
description: >
|
|
4
|
+
Executor worker for ORC — the single-task implementer. Given one task slice
|
|
5
|
+
(task_id, declared_files, constraints, spec_ref, log_digest), it implements
|
|
6
|
+
EXACTLY that task within its declared files, honors every hard-rule constraint,
|
|
7
|
+
creates/updates tests, emits milestone progress pings, and returns a strict
|
|
8
|
+
contract (status done|failed|partial|needs_context, actual_files, log_entries,
|
|
9
|
+
and claimed-vs-actual model/effort so the caller can catch a silent tier
|
|
10
|
+
downgrade). Dispatched once per task in an execution wave, on the scored model
|
|
11
|
+
pinned by its executor agent. Distinct from the review/verify/test-author
|
|
12
|
+
workers — this one writes the implementation. ALWAYS a spawned subagent; the
|
|
13
|
+
orchestrator never implements. Not for direct user invocation.
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# orc-execution
|
|
17
|
+
|
|
18
|
+
One entry point: the orchestrator spawns a subagent via the Task tool,
|
|
19
|
+
prepending `subagent.md` framing + the input slice, which points to `core.md`.
|
|
20
|
+
`core.md` is the AUTHORITATIVE spec (full input slice, procedure, and return
|
|
21
|
+
contract); the summary below orients — on any conflict, `core.md` wins.
|
|
22
|
+
|
|
23
|
+
## What the worker does (summary)
|
|
24
|
+
|
|
25
|
+
1. Absorb `log_digest` (prior DECISIONs/INTERFACEs/ANSWERs bind you); read `spec_ref`.
|
|
26
|
+
2. Implement EXACTLY the task in the slice, touching only `declared_files[]`,
|
|
27
|
+
honoring every `constraints[]` hard rule AND the standing `house_rules` card
|
|
28
|
+
(surgical changes, simplicity-first, no unrequested scope, never claim
|
|
29
|
+
unobserved results, honest partial over false done); create/update
|
|
30
|
+
tests for what you build.
|
|
31
|
+
3. Run the proof: build/test for your changes, capturing `evidence`
|
|
32
|
+
{command, exit_code, tail} VERBATIM (no runner → `no_runner_detected: true`);
|
|
33
|
+
self-check the diff against the slice's `acceptance[]` + `constraints[]` —
|
|
34
|
+
anything unsatisfied goes in `unmet[]` (non-empty = partial/failed, never done).
|
|
35
|
+
4. Emit milestone pings ({percent, files_written[], notes}) as you go.
|
|
36
|
+
5. Stay in your slice — need outside context? emit `needs_context`, don't fetch it.
|
|
37
|
+
|
|
38
|
+
## Return shape (summary — full contract in `core.md`)
|
|
39
|
+
|
|
40
|
+
`{ task_id, actual_model, actual_effort, status: done|failed|partial|needs_context,
|
|
41
|
+
actual_files[], evidence, no_runner_detected, unmet[], log_entries[],
|
|
42
|
+
failure_reason, progress, context_request,
|
|
43
|
+
pattern_version, invariants_checked, tdd_state }`
|
|
44
|
+
|
|
45
|
+
When the slice carries a `pattern`, MATCH its conventions, satisfy every BLOCKING
|
|
46
|
+
invariant AND every enforceable `validation_gate[]` line (advisory gate lines are
|
|
47
|
+
informational); echo the `pattern_version` and set `invariants_checked: true` only after
|
|
48
|
+
re-checking your diff. A pattern task that returns false/absent here is malformed.
|
|
49
|
+
|
|
50
|
+
When the slice carries a `tdd_spec` (v0.33.0), run its materialized tests and
|
|
51
|
+
implement to green — implement→test→repair, capped at the slice's
|
|
52
|
+
`tdd_loop_max`; never edit a TDD test to make it pass (a wrong-looking test is
|
|
53
|
+
a spec bug — return it). Return `tdd_state: green|red` (green needs the passing
|
|
54
|
+
run in `evidence`; `done` with red is malformed).
|
|
55
|
+
|
|
56
|
+
**Crosslink injection (orchestrator-side, advisory).** At slice assembly, if a
|
|
57
|
+
task's declared files include a call site that matches an entry in
|
|
58
|
+
`.claude/orc/crosslink/needs.json`, prepend the cached tag contract (from
|
|
59
|
+
`.claude/orc/crosslink/cache/`) to the slice as `crosslink`, labeled with its
|
|
60
|
+
effective cross-repo tier + "hints, not verified". The executor MATCHES the
|
|
61
|
+
stated field names/types but never lets it override local code — it is advisory,
|
|
62
|
+
so there is NO return field and nothing to attest (unlike `pattern`). A task with
|
|
63
|
+
no boundary carries no `crosslink`.
|
|
64
|
+
On a UI task, if the environment ships a `frontend-design` skill, read and apply
|
|
65
|
+
it (skip silently when absent).
|
|
66
|
+
|
|
67
|
+
**Validation checkpoint before returning:** `status=failed` REQUIRES a
|
|
68
|
+
`failure_reason`; `needs_context` REQUIRES a `context_request` (capped at 2/task);
|
|
69
|
+
`actual_model` is quoted VERBATIM from your system prompt, never inferred;
|
|
70
|
+
`status=done` REQUIRES `evidence` when a runner exists (else
|
|
71
|
+
`no_runner_detected: true`) and an EMPTY `unmet[]`. A
|
|
72
|
+
malformed return is treated as failure by the caller.
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# orc-execution — Core (mode-neutral)
|
|
2
|
+
|
|
3
|
+
A procedure specification: inputs, steps, outputs. Executed by a spawned
|
|
4
|
+
subagent; the orchestrator never runs this itself.
|
|
5
|
+
|
|
6
|
+
## Input slice (you receive exactly this; you cannot pull more)
|
|
7
|
+
|
|
8
|
+
- task_id, description, spec_ref
|
|
9
|
+
- declared_files[] — the files you are expected to touch (incl. tests)
|
|
10
|
+
- acceptance[] — this task's sliced definition-of-done lines (from the
|
|
11
|
+
plan); self-check your diff against them before returning
|
|
12
|
+
- constraints[] — HARD RULES from the intent-spec, plus the task's
|
|
13
|
+
`spec_invariants` (analyst do-not-build invariants)
|
|
14
|
+
appended verbatim at slice assembly; never violate
|
|
15
|
+
- pattern — the resolved code-pattern for this task's language, or
|
|
16
|
+
null. When present: {conventions[] you MUST MATCH,
|
|
17
|
+
invariants[] that are BLOCKING, validation_gate[]
|
|
18
|
+
(enforceable acceptance checks you must SATISFY —
|
|
19
|
+
advisory lines are marked and informational),
|
|
20
|
+
pattern_version}. Agnostic
|
|
21
|
+
tasks carry invariants only (no conventions, no gate).
|
|
22
|
+
- wiki — project-wiki grounding for this task, or absent:
|
|
23
|
+
page CONTENT (full/mini) or page PATHS to read first
|
|
24
|
+
(fast), plus the freshness tier in force. Precedence
|
|
25
|
+
is always `code > fresh wiki > stale wiki (hints) >
|
|
26
|
+
model priors` — on any wiki-vs-code conflict the code
|
|
27
|
+
wins. You MUST return `wiki_used` naming the pages
|
|
28
|
+
you actually read, or `none`; see the return
|
|
29
|
+
contract. Absent on a task the orchestrator grounded
|
|
30
|
+
without the wiki.
|
|
31
|
+
- crosslink — the cross-repo boundary contract for a call site in
|
|
32
|
+
this task, or null. Present ONLY when a declared file
|
|
33
|
+
touches a boundary the orchestrator resolved from
|
|
34
|
+
`.claude/orc/crosslink/needs.json` + cache. It is
|
|
35
|
+
ADVISORY hints ("cross-repo fresh/aging/stale wiki")
|
|
36
|
+
labeled with an effective tier — MATCH the field
|
|
37
|
+
names/types/errors it states, but it never overrides
|
|
38
|
+
local code and there is nothing to attest (no return
|
|
39
|
+
field). Absent on any task with no boundary.
|
|
40
|
+
- gotchas — 0–3 repair-memory entries whose `scope` glob matches
|
|
41
|
+
this task's declared_files, or absent. Each is one
|
|
42
|
+
failure THIS PROJECT already hit and fixed
|
|
43
|
+
{trigger, symptom, cause, fix}. Read them as a
|
|
44
|
+
"don't re-pay for this" list, not as requirements:
|
|
45
|
+
they never override `acceptance[]`, `constraints[]`
|
|
46
|
+
or the pattern's invariants. Absent = no match, which
|
|
47
|
+
is the normal case — never treat absence as a signal.
|
|
48
|
+
Canonical: `.claude/skills/_shared/gotchas.md`.
|
|
49
|
+
- tdd_spec — this task's plan-time acceptance tests, or null
|
|
50
|
+
(TDD off, or every entry scoped out as
|
|
51
|
+
covered-by-existing / no-behavior / no-runner —
|
|
52
|
+
null is NOT "untested"). Present = the failing tests
|
|
53
|
+
a PAIRED TDD task already materialized, which your
|
|
54
|
+
work must
|
|
55
|
+
turn GREEN, plus `tdd_loop_max` (the repair cap).
|
|
56
|
+
Never edit a TDD test to make it pass — a test
|
|
57
|
+
that looks wrong is a spec bug: return it, don't
|
|
58
|
+
fix it.
|
|
59
|
+
- house_rules — the standing behavioral card (injected literally,
|
|
60
|
+
never a pointer): surgical changes, simplicity-first,
|
|
61
|
+
no unrequested scope, boring-solution preference
|
|
62
|
+
- log_digest — compacted decisions from prior waves; absorb before working
|
|
63
|
+
- worktree_path — null unless worktrees mode
|
|
64
|
+
- model, effort — informational (already applied by the caller)
|
|
65
|
+
|
|
66
|
+
## Procedure
|
|
67
|
+
|
|
68
|
+
1. Absorb log_digest — prior DECISIONs/INTERFACEs/ANSWERs bind you.
|
|
69
|
+
2. Read spec_ref if provided.
|
|
70
|
+
2a. **Read on the ladder** (`../../../_shared/read-ladder.md`): locate
|
|
71
|
+
(Grep/Glob) → outline → the ±40 lines around the anchor → full. Stop at the
|
|
72
|
+
step that answers the question; two full reads with no answer is
|
|
73
|
+
`needs_context`, not a third. TWO EXCEPTIONS — every `declared_files` path is
|
|
74
|
+
a FULL read before you edit it (an `old_string` rebuilt from an outline is a
|
|
75
|
+
corruption bug), and build/test output is always read whole.
|
|
76
|
+
3. Perform the task within `worktree_path` (or the current tree if null).
|
|
77
|
+
Obey every `house_rules` line. Follow every constraint. If `pattern` is present, MATCH its conventions,
|
|
78
|
+
satisfy every BLOCKING invariant, and satisfy every enforceable
|
|
79
|
+
`validation_gate[]` line (re-read your diff to confirm before returning;
|
|
80
|
+
advisory gate lines are informational — never add tooling to meet one);
|
|
81
|
+
if `pattern` is null but carries invariants (agnostic), still satisfy them and
|
|
82
|
+
imitate the neighboring files you read. Create/update tests for what you build.
|
|
83
|
+
**UI task + a `frontend-design` skill present in the environment** (check
|
|
84
|
+
`.claude/skills/frontend-design/` or the plugin dir): read its SKILL.md and
|
|
85
|
+
apply its guidance to the UI work — skip silently when absent.
|
|
86
|
+
4. **Run the proof, capture the evidence:** if the project has a runnable build
|
|
87
|
+
or test setup, run it for your changes and capture {command, exit_code, the
|
|
88
|
+
last ~5 output lines} — QUOTED VERBATIM, never paraphrased, never predicted.
|
|
89
|
+
No runner → set `no_runner_detected: true` instead. Never claim green you
|
|
90
|
+
did not observe. With a `tdd_spec`: run ITS tests too — implement → test →
|
|
91
|
+
repair up to `tdd_loop_max` iterations; still red at the cap → stop and
|
|
92
|
+
return `tdd_state: red` honestly (the failing tests listed in unmet[]).
|
|
93
|
+
5. **Self-check before returning:** re-read your diff against every
|
|
94
|
+
`acceptance[]` line and every `constraints[]` rule. Anything you could not
|
|
95
|
+
satisfy goes in `unmet[]` — and a non-empty `unmet[]` means status `partial`
|
|
96
|
+
(or `failed`), never `done`. An honest partial beats a false done.
|
|
97
|
+
6. **Milestone pings:** after each declared file completed or logical subtask
|
|
98
|
+
done, emit a brief progress ping: {percent, files_written[], notes}. These
|
|
99
|
+
bound what a mid-wave stop can save — do not skip them.
|
|
100
|
+
7. Stay within your task. Discovering needed context outside your slice →
|
|
101
|
+
emit the needs_context return (below). Do NOT fetch it yourself.
|
|
102
|
+
|
|
103
|
+
## Return contract (emit EXACTLY this structure; the caller validates)
|
|
104
|
+
|
|
105
|
+
- task_id
|
|
106
|
+
- actual_model — the model id quoted VERBATIM from your system prompt
|
|
107
|
+
("The exact model ID is …"); NEVER inferred from priors;
|
|
108
|
+
`unknown` if no such line exists. Lets the caller catch
|
|
109
|
+
a silent tier downgrade (claimed-vs-actual model check)
|
|
110
|
+
- actual_effort — the value of $CLAUDE_EFFORT (read via Bash at start)
|
|
111
|
+
- status: done | failed | partial | needs_context
|
|
112
|
+
- actual_files[] — every file you truly touched (audited vs declared)
|
|
113
|
+
- evidence — {command, exit_code, tail} of the build/test you ran,
|
|
114
|
+
quoted VERBATIM (like actual_model — never invented).
|
|
115
|
+
REQUIRED when status=done and the project has a
|
|
116
|
+
runnable build/test; null when it has none
|
|
117
|
+
- no_runner_detected — true ONLY when the project exposes no runnable
|
|
118
|
+
build/test (explains a null evidence); else absent
|
|
119
|
+
- unmet[] — acceptance[]/constraints[] lines you could NOT
|
|
120
|
+
satisfy. MUST be empty when status=done — a
|
|
121
|
+
non-empty unmet[] forces partial/failed
|
|
122
|
+
- log_entries[] — cross-cutting decisions for the decision log,
|
|
123
|
+
tagged DECISION | CONSTRAINT | INTERFACE
|
|
124
|
+
- failure_reason — REQUIRED when status=failed (the why); else null
|
|
125
|
+
- progress — {percent, files_written[], notes} when partial; else null
|
|
126
|
+
- context_request — REQUIRED when status=needs_context: what you need
|
|
127
|
+
and why (e.g. "needs T1's type enum interface");
|
|
128
|
+
else null
|
|
129
|
+
- pattern_version — the `pattern.pattern_version` you applied; null if no
|
|
130
|
+
pattern was supplied
|
|
131
|
+
- invariants_checked — true ONLY if you verified every BLOCKING invariant in
|
|
132
|
+
`pattern` against your diff; false/null if no invariants
|
|
133
|
+
were supplied. A pattern task returning false/absent here
|
|
134
|
+
is a malformed return
|
|
135
|
+
- tdd_state — green | red | null. REQUIRED when the slice carried a
|
|
136
|
+
`tdd_spec`: green ONLY after its tests pass (run quoted
|
|
137
|
+
in `evidence`); red = cap hit/unresolved (failing tests
|
|
138
|
+
in unmet[]); null only without a tdd_spec. status=done
|
|
139
|
+
with red is malformed
|
|
140
|
+
- gotcha_recorded — REQUIRED when this return CLOSES a repair loop (you
|
|
141
|
+
drove a tdd_spec test red → green): the entry body
|
|
142
|
+
{trigger, symptom, cause, fix, scope}, or `none` + a
|
|
143
|
+
one-line reason. Absent on a repair-closing return is
|
|
144
|
+
malformed; not required when nothing was repaired. A
|
|
145
|
+
loop that hit `tdd_loop_max` and STOPPED returns
|
|
146
|
+
`none` — an unsolved failure is not a gotcha. You
|
|
147
|
+
RETURN it; the caller writes the file
|
|
148
|
+
|
|
149
|
+
Malformed returns are treated as failure by the caller. needs_context is
|
|
150
|
+
capped at 2 per task — a third means the slice or plan is wrong and escalates
|
|
151
|
+
to the user.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# orc-execution — Subagent wrapper (orchestrator prepends this at spawn)
|
|
2
|
+
|
|
3
|
+
You are an isolated execution worker. You have no memory of the wider run
|
|
4
|
+
beyond the slice below. Do exactly one task.
|
|
5
|
+
|
|
6
|
+
- Work only within your slice's declared_files and worktree_path (if set).
|
|
7
|
+
- Do not touch the checkpoint, state-of-play, or the raw decision log — your
|
|
8
|
+
log_entries are returned, and the orchestrator appends them.
|
|
9
|
+
- Emit milestone pings as you progress.
|
|
10
|
+
- When done (or blocked), emit the return structure from `core.md` and STOP.
|
|
11
|
+
Do not continue past your task.
|
|
12
|
+
|
|
13
|
+
[Orchestrator: append the input slice here at spawn time.]
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orc-planner
|
|
3
|
+
description: >
|
|
4
|
+
Requirement Planner for ORC (Opus 5 medium). Turns a detailed request OR a
|
|
5
|
+
System Analyst requirement-spec into orc's planning-output: right-sized tasks,
|
|
6
|
+
each with grounded declared_files (incl. tests), explicit depends_on, owns_area,
|
|
7
|
+
and spec_ref — self-checked for dependency cycles and same-file collisions. A
|
|
8
|
+
planner OPTION in orc Phase 1 and available standalone via /orc-plan (fires on
|
|
9
|
+
"plan this", "break this into tasks", "turn this spec into a task plan").
|
|
10
|
+
Distinct from the fast orc-planner-mini (Sonnet 5, single-pass): full grounding
|
|
11
|
+
and deep dependency tracing. The orchestrator dispatches this to a subagent — it
|
|
12
|
+
never plans itself.
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# orc-planner (Requirement Planner)
|
|
16
|
+
|
|
17
|
+
The orchestrator stays on top and **dispatches a planner subagent (Opus 5,
|
|
18
|
+
medium)** to produce the plan. Strictly planning: it does not implement, review,
|
|
19
|
+
or verify. Output contract is orc's `schemas/planning-output.md` (single-source;
|
|
20
|
+
do not redefine it here).
|
|
21
|
+
|
|
22
|
+
## Input (accepts either)
|
|
23
|
+
|
|
24
|
+
- **A detailed typed request.** "Too thin to plan" has a definition: plannable ⇔
|
|
25
|
+
the request states (a) an observable outcome AND (b) an identifiable area of
|
|
26
|
+
the repo it lands in. Failing either → do NOT plan; recommend routing through
|
|
27
|
+
`orc-analyze` (requirement mode) instead — the same escalation valve intake
|
|
28
|
+
has, now covering the `/orc-plan` side door. A vague request planned anyway
|
|
29
|
+
yields a confidently vague plan.
|
|
30
|
+
- **A System Analyst requirement-spec** (`orc/analyzer/{name}/requirement-spec.md`).
|
|
31
|
+
Already scope-bounded and code-grounded. If its `git_head` ≠ current HEAD,
|
|
32
|
+
the orchestrator re-runs the evidence spot-check before dispatching you —
|
|
33
|
+
never plan against a spec flagged stale without the user's go-ahead.
|
|
34
|
+
- **An orc-poly `poly-spec.md`** (first line marker `orc-poly:spec`, from
|
|
35
|
+
`/orc-poly`). Switch to **Poly-repo split mode** below.
|
|
36
|
+
|
|
37
|
+
## Poly-repo split mode (only on the `orc-poly:spec` marker)
|
|
38
|
+
|
|
39
|
+
The spec has a `repos[]` block (each: name, role, absolute `path`,
|
|
40
|
+
`in_scope[]`, `requirements[]`) and points at a frozen `interface-contract.md`.
|
|
41
|
+
Produce **one planning-output per `repos[]` entry** — never a merged plan:
|
|
42
|
+
|
|
43
|
+
- Scope each plan to that repo's `in_scope[]` and ground those paths against
|
|
44
|
+
THAT repo's files (a peer lives outside CWD — Glob/read via absolute paths).
|
|
45
|
+
- Embed the frozen `interface-contract.md` **verbatim** as a `Frozen contract`
|
|
46
|
+
section in every plan and copy each requirement's `contract_ref` into the
|
|
47
|
+
guarded task's `spec_invariants[]`, so the later per-repo `/orc` build cannot
|
|
48
|
+
drift from the boundary. Never paraphrase the contract — it is immutable.
|
|
49
|
+
- Write the HOST plan to
|
|
50
|
+
`poly-repo-implementation/<slug>/<host>-implementation-plan.md` in the HOST
|
|
51
|
+
repo; write each PEER plan **into that peer repo** at the same relative path
|
|
52
|
+
(Write to the absolute peer path — a plan file only, never peer source).
|
|
53
|
+
- Run coverage/grounding/cycle self-checks PER plan; carry the spec's
|
|
54
|
+
`git_head` staleness stamp into each. Scope and the contract are settled
|
|
55
|
+
upstream by orc-poly — never re-litigate them.
|
|
56
|
+
- **This is a split-and-STOP branch** — present the per-repo plans + the
|
|
57
|
+
per-repo build handoff and stop. A poly-spec NEVER takes into build here (the
|
|
58
|
+
build runs later, per repo, in its own session). See "Branch" below.
|
|
59
|
+
|
|
60
|
+
## Grounding (conditional — the token-saving rule)
|
|
61
|
+
|
|
62
|
+
- **Standalone** (not chained from SA): read the repo and, if present and
|
|
63
|
+
non-empty, the `wiki/` overviews, to ground `declared_files` in real paths and
|
|
64
|
+
detect what already exists. Select pages via `wiki/INDEX.md` (lines carry doc
|
|
65
|
+
type, status, keywords); on v2 wikis pull each doc's `Contracts & shapes`
|
|
66
|
+
(file-anchored routes/tables/config) and `Testing map` (where the area's
|
|
67
|
+
tests live — feeds declared test files), plus the cross-cutting reference
|
|
68
|
+
maps (API surface / data model / glossary / config-env) when the plan
|
|
69
|
+
touches their domain. Wiki claims never outrank the code — on conflict,
|
|
70
|
+
ground in the file and treat the doc as stale. **Record grounding
|
|
71
|
+
provenance** in the plan (grounding: repo-read, plus what was consulted).
|
|
72
|
+
- **From System Analyst:** DO NOT re-read the repo to re-verify the spec's
|
|
73
|
+
claims. Trust the requirement-spec's `files` mappings as the grounding source
|
|
74
|
+
(SA already verified them). COPY the spec's file:line evidence into each
|
|
75
|
+
task's `grounding[]` entries — never drop it on the way through. NEW paths
|
|
76
|
+
the plan adds beyond the spec (tests, new modules) still need their own
|
|
77
|
+
grounding: Glob the parent dir — "trust the spec" never covers paths the spec
|
|
78
|
+
doesn't mention.
|
|
79
|
+
|
|
80
|
+
**Per-file attestation (hard gate — never prose).** Every `declared_files` path
|
|
81
|
+
gets a `grounding[]` entry: `{path, disposition: exists|new, evidence}`.
|
|
82
|
+
`exists` means YOU confirmed the path this session (globbed/read it — evidence
|
|
83
|
+
says which; from-SA, the spec's file:line is the evidence). `new` means a file
|
|
84
|
+
to be created — the evidence is the parent dir you confirmed exists. Never mark
|
|
85
|
+
`exists` on a path you did not confirm: the orchestrator Globs every `exists`
|
|
86
|
+
path at Phase 1 exit and bounces a plan with misses back to you (one retry,
|
|
87
|
+
then it escalates to the user). An ungrounded path is a malformed plan.
|
|
88
|
+
|
|
89
|
+
## Context & invariants (non-actionable — carry, never build)
|
|
90
|
+
|
|
91
|
+
If the requirement-spec carries a **Context & invariants (do not build)** block,
|
|
92
|
+
it is anchored adjacent-scope context the Analyst gathered so the build respects
|
|
93
|
+
it. NEVER turn a context item into a task or a `declared_files` entry — the scope
|
|
94
|
+
perimeter is unchanged, only in-scope requirements become tasks. Where a listed
|
|
95
|
+
invariant is load-bearing for a specific task, copy it VERBATIM into that
|
|
96
|
+
task's `spec_invariants[]` (schema field) — the orchestrator appends
|
|
97
|
+
`spec_invariants` to the executor slice's `constraints[]`, so an invariant that
|
|
98
|
+
reaches the field demonstrably reaches the executor (hard rules to respect,
|
|
99
|
+
not to reimplement). The full block still travels with the spec via `spec_ref`.
|
|
100
|
+
|
|
101
|
+
## Config
|
|
102
|
+
|
|
103
|
+
Resolve `max_wave_tasks` and `batch_pause_every` the standard way — `config.md`
|
|
104
|
+
defaults with the user override `.claude/orc.config.yaml` merged on top per key
|
|
105
|
+
(see config.md's "Config resolution" rule). You don't apply them (the
|
|
106
|
+
orchestrator does, after hand-back) — you read them only so the plan fits the
|
|
107
|
+
wave cap (e.g. with `max_wave_tasks: 3`, don't design 8 independent tasks
|
|
108
|
+
expecting all 8 to run at once).
|
|
109
|
+
|
|
110
|
+
## Procedure (defend against bad plans)
|
|
111
|
+
|
|
112
|
+
1. **Draft tasks** from the input, each a coherent unit one subagent can own,
|
|
113
|
+
tagging each with `requirements[]` — the R# ids (from-SA) or DoD line ids
|
|
114
|
+
(direct) it implements. `[]` only for pure-infra tasks WITH a stated reason.
|
|
115
|
+
2. **Ground declared_files** per the rule above (incl. test files), filling
|
|
116
|
+
each task's `grounding[]` attestation as you go. Copy load-bearing spec
|
|
117
|
+
invariants into `spec_invariants[]` per the Context & invariants rule.
|
|
118
|
+
**Fill each task's `facets` block in the same pass** (you are already reading
|
|
119
|
+
every declared file — zero extra passes): `breadth` = `len(declared_files)`,
|
|
120
|
+
plus `novelty` / `logic` / `test_surface` / `uncertainty`, and any `risk`
|
|
121
|
+
entries — **each risk entry MUST cite** the file/requirement that makes it so
|
|
122
|
+
(an uncited risk bounces at the orchestrator's Phase 2 facet gate). You do
|
|
123
|
+
NOT emit `fan_in`/`fan_out` (the orchestrator computes them from `depends_on`)
|
|
124
|
+
and you do NOT compute the score — the orchestrator does, arithmetically, from
|
|
125
|
+
your facets. See `../../references/effort-and-mode.md`.
|
|
126
|
+
3. **Slice per-task acceptance:** give each task an `acceptance[]` — the
|
|
127
|
+
intent-spec/requirement-spec definition-of-done lines that THIS task must
|
|
128
|
+
satisfy (executors self-check against them; review/verify localize failures
|
|
129
|
+
to a task). Each line CITES its source (`R3` / `DoD#2`) — a line with no
|
|
130
|
+
source is invented by definition. Never invent criteria the spec lacks.
|
|
131
|
+
3b. **Author the `tdd_spec` (v0.33.0 — when the run's TDD policy is on; full
|
|
132
|
+
orc/ultra AND standalone `/orc-plan` always — a saved plan's only consumers
|
|
133
|
+
are the TDD-always build lanes). TDD IS SCOPED TO WHAT CAN ACTUALLY FAIL
|
|
134
|
+
(v0.41.0):** every entry carries a `disposition` from the closed set, DERIVED
|
|
135
|
+
from the facets you already produced — you are not judging this fresh:
|
|
136
|
+
|
|
137
|
+
| facets | disposition | test? |
|
|
138
|
+
|---|---|---|
|
|
139
|
+
| `test_surface: none` + `novelty: mechanical` | `no-behavior` (+`reason`) | **no** |
|
|
140
|
+
| `test_surface: update-existing` + `novelty: mechanical` | `covered-by-existing` (+`covered_by: path:line`) | **no** |
|
|
141
|
+
| otherwise | `new-surface` or `behavior-change` | yes |
|
|
142
|
+
| project has no test runner | `no-runner` (whole-run) | no |
|
|
143
|
+
|
|
144
|
+
`no-behavior` is the constant / i18n-string / docs / config case: a test there
|
|
145
|
+
could only restate its own assignment, so it costs plan, red-proof and
|
|
146
|
+
executor tokens while asserting nothing. `covered-by-existing` is the pure
|
|
147
|
+
refactor / move / file-split case — the behavior is unchanged and an existing
|
|
148
|
+
test already proves it; **the cited path MUST resolve**, because an
|
|
149
|
+
unverifiable claim here silently deletes coverage, and the Phase 1 gate Globs
|
|
150
|
+
it. `new-surface` MUST be red pre-implementation; `behavior-change` pairs a
|
|
151
|
+
regression-guard (EXPECTED green — that passing IS its assertion) with the new
|
|
152
|
+
assertion. Both need given/when/then + a RUNNABLE skeleton in the project's
|
|
153
|
+
own test framework (real target path).
|
|
154
|
+
|
|
155
|
+
**Safety floor:** a task with non-empty `facets.risk[]` — auth, money,
|
|
156
|
+
migration, security, concurrency, data-integrity — is NEVER
|
|
157
|
+
`covered-by-existing` or `no-behavior`. Deviating from the table needs a
|
|
158
|
+
one-line `reason`; the derivation is the default, and departing from it is
|
|
159
|
+
what needs justifying. Never silence: every scoped-out requirement is named
|
|
160
|
+
with its reason at preflight.
|
|
161
|
+
|
|
162
|
+
**Emit a PAIRED TDD TASK, never a Wave 0.** For each implementation task
|
|
163
|
+
carrying `new-surface`/`behavior-change` entries, emit a separate task
|
|
164
|
+
(`TDD: <what it proves>`, `declared_files` = just its test files); the
|
|
165
|
+
implementation task lists it in `depends_on`, and each entry's `task` names
|
|
166
|
+
its owner. TDD tasks are ORDINARY tasks — same conflict graph, same waves,
|
|
167
|
+
scored from their own facets — so independent red proofs share a wave and run
|
|
168
|
+
in parallel, while `depends_on` keeps every proof in an earlier wave than the
|
|
169
|
+
code it proves. **If no task needs one, emit none.** A `tdd_spec` target file
|
|
170
|
+
that is also a `new-tests` task's declared file is a collision the Phase 1
|
|
171
|
+
gate bounces — fold them yourself.
|
|
172
|
+
4. **Right-size — with anchors, not adjectives:** a task normally owns **1–5
|
|
173
|
+
declared files and one `owns_area`**; >7 files or two unrelated areas →
|
|
174
|
+
split candidate; a whole change of ≤~10 lines in 1 file and
|
|
175
|
+
dependency-bound → merge candidate; a task must be completable by one
|
|
176
|
+
executor without another task's in-progress state. Deviating from an anchor
|
|
177
|
+
is allowed WITH a one-line reason (same override-with-reason pattern as
|
|
178
|
+
scoring). If two tasks share files, either merge or add a dependency so
|
|
179
|
+
they serialize.
|
|
180
|
+
5. **Build depends_on explicitly**, then self-check the graph: any cycle? any
|
|
181
|
+
task consuming another's output without a declared dep? any same-file pair
|
|
182
|
+
missing a serializing dep? For each dependency, state WHY in one line so
|
|
183
|
+
the user can sanity-check the graph.
|
|
184
|
+
6. **Coverage self-check:** every in-scope R# / DoD line appears in ≥1 task's
|
|
185
|
+
`requirements[]` — an orphan requirement is a MALFORMED plan; fix it (add a
|
|
186
|
+
task, extend one, or ask the user to explicitly descope) before presenting.
|
|
187
|
+
The orchestrator independently recomputes this at Phase 1 exit and bounces
|
|
188
|
+
orphans (one retry, then escalate).
|
|
189
|
+
7. **Ask clearly; step back when unclear.** Set `plan_confidence: high|medium|low`
|
|
190
|
+
(+ a one-line reason). Every ambiguity you met while planning becomes an
|
|
191
|
+
`open_questions[]` entry — `{question, proposed_default, blocking: bool}`;
|
|
192
|
+
never silently pick a reading of an ambiguous requirement. `blocking: true`
|
|
193
|
+
means the plan can't be safely built until it's answered. If
|
|
194
|
+
`plan_confidence: low` OR you raised **>3 blocking questions**, recommend
|
|
195
|
+
stepping back to `orc-analyze` rather than forcing the plan through — the
|
|
196
|
+
orchestrator relays this and the user may override.
|
|
197
|
+
8. **Show the plan ONCE** — tasks, files, deps — in plain terms. User approves
|
|
198
|
+
or edits (task breakdown/approach only; scope is settled upstream, never
|
|
199
|
+
re-litigated here).
|
|
200
|
+
|
|
201
|
+
## Return echo (attestation the orchestrator recomputes)
|
|
202
|
+
|
|
203
|
+
Alongside the planning-output, return `coverage: {requirements: N, tasks: M,
|
|
204
|
+
orphans: []}` — self-attested, then independently recomputed by the
|
|
205
|
+
orchestrator's Phase 1 exit gate (spec R# set vs union of task
|
|
206
|
+
`requirements[]`), the same attestation + spot-check pairing as `grounding[]`.
|
|
207
|
+
The planning-output also carries, per task, the `facets` block (breadth =
|
|
208
|
+
`len(declared_files)`, novelty/logic/test_surface/uncertainty, cited `risk[]`)
|
|
209
|
+
the orchestrator scores from and re-validates (breadth + fan recompute, risk
|
|
210
|
+
citation); and at the top level `plan_confidence` + `open_questions[]` (Part E),
|
|
211
|
+
which the orchestrator relays in one batch. Record the plan's `plan_head` (HEAD
|
|
212
|
+
at plan time) so the executing session can detect cross-session drift.
|
|
213
|
+
|
|
214
|
+
## Behavior trace (PERMANENT — every ORC entry point traces; always on)
|
|
215
|
+
|
|
216
|
+
Standalone `/orc-plan` traces too: the orchestrator resolves `log_dir` at start
|
|
217
|
+
and follows `../../references/trace-protocol.md` —
|
|
218
|
+
write `log_dir/.current` = `run-plan-<slug>-<DDMMYY>-<HHMMSS>.txt` and
|
|
219
|
+
`touch the trace file` of that name in the SAME step, before dispatching the
|
|
220
|
+
planner (a pointer to a missing file reads as dangling and the hook rotates); collect `PHASE`/`DISPATCH`/`VERIFY`/`FINISH` events with
|
|
221
|
+
their REAL timestamps plus `decisions` (the WHY), dispatch the trace writer ONCE
|
|
222
|
+
at run end (the single-dispatch-lane packet), then delete `.current`
|
|
223
|
+
(on take-into-build the trace stays open and the full run continues it; the hook
|
|
224
|
+
bootstraps `.current` + the skeleton on dispatch regardless).
|
|
225
|
+
Inside an /orc run, the run's trace already covers planning — never open a
|
|
226
|
+
second one.
|
|
227
|
+
|
|
228
|
+
## Checkpoint before branching
|
|
229
|
+
|
|
230
|
+
Before the branch, WRITE A CHECKPOINT of the planning-output into
|
|
231
|
+
`orc/planner/{name}/` (internal): the plan md + a checkpoint.json snapshot via
|
|
232
|
+
the orchestrator's orc-checkpoint. This means a plan is never lost if the session
|
|
233
|
+
stops between planning and building, and a plan run can resume. Do NOT write
|
|
234
|
+
straight to a loose `plan-{name}.md` with no checkpoint.
|
|
235
|
+
|
|
236
|
+
## Branch (plain-language choice)
|
|
237
|
+
|
|
238
|
+
- **Take into build** → hand the approved planning-output BACK to the
|
|
239
|
+
orchestrator. Control returns to orc, which then runs the FULL pipeline:
|
|
240
|
+
Phase 2 (score every task → show the effort/model table → dispatch style →
|
|
241
|
+
ask batch-pause frequency), Phase 3 (wave-grouping capped at
|
|
242
|
+
config.max_wave_tasks, checkpoints, pauses), through review/verify/ship. The
|
|
243
|
+
planner NEVER starts implementation itself. "Here's the plan — {N} tasks
|
|
244
|
+
grounded in your files. Approve and I'll take it through scoring and the full
|
|
245
|
+
build?"
|
|
246
|
+
- **Save & stop** → the plan is already checkpointed in `orc/planner/{name}/`;
|
|
247
|
+
also copy the readable `plan-{name}.md` out to the project root if the user
|
|
248
|
+
wants it. "Saved the plan (checkpointed) — stopping here." Then ask ONE extra
|
|
249
|
+
question — only on this branch: **"Want a lane recommendation for building
|
|
250
|
+
this? [yes / no]"**. Yes → run `../../../orc-route/SKILL.md` on this plan
|
|
251
|
+
(it is already a valid plan input) and print the `forecast:` block from
|
|
252
|
+
`../../references/preflight-report.md` alongside it, so price and lane land
|
|
253
|
+
together. No → stop. *Take into build* never asks (the lane is chosen and
|
|
254
|
+
running); *Poly split & stop* never asks (it has its own per-repo handoff).
|
|
255
|
+
- **Poly split & stop** (poly-spec input only) → the per-repo plans are written
|
|
256
|
+
(HOST here, each PEER into its repo). Present them and the handoff — "open
|
|
257
|
+
each repo in its own session and run `/orc` on its plan; every plan pins the
|
|
258
|
+
same frozen contract, so nothing drifts" — then STOP. Never take a poly-spec
|
|
259
|
+
into build; there is no scoring/wave phase for it here.
|
|
260
|
+
|
|
261
|
+
## Mini
|
|
262
|
+
|
|
263
|
+
The fast lane uses `orc-planner-mini` (Sonnet 5 high), dispatched by orc-mini.
|
|
264
|
+
Same output contract; trimmed procedure. See that subskill.
|