codex-orchestrator 2.0.17 → 2.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +40 -2
  3. package/dist/src/v2/acceptance-proof.d.ts.map +1 -1
  4. package/dist/src/v2/acceptance-proof.js +15 -5
  5. package/dist/src/v2/acceptance-proof.js.map +1 -1
  6. package/dist/src/v2/implementation-report.d.ts +3 -1
  7. package/dist/src/v2/implementation-report.d.ts.map +1 -1
  8. package/dist/src/v2/implementation-report.js +4 -1
  9. package/dist/src/v2/implementation-report.js.map +1 -1
  10. package/dist/src/v2/implementation-reviewer.d.ts +1 -0
  11. package/dist/src/v2/implementation-reviewer.d.ts.map +1 -1
  12. package/dist/src/v2/implementation-reviewer.js +8 -2
  13. package/dist/src/v2/implementation-reviewer.js.map +1 -1
  14. package/dist/src/v2/issue-check-policy.d.ts.map +1 -1
  15. package/dist/src/v2/issue-check-policy.js +25 -9
  16. package/dist/src/v2/issue-check-policy.js.map +1 -1
  17. package/dist/src/v2/run-issue.d.ts +1 -1
  18. package/dist/src/v2/run-issue.d.ts.map +1 -1
  19. package/dist/src/v2/run-issue.js +41 -31
  20. package/dist/src/v2/run-issue.js.map +1 -1
  21. package/dist/src/v2/runtime.d.ts.map +1 -1
  22. package/dist/src/v2/runtime.js +3 -2
  23. package/dist/src/v2/runtime.js.map +1 -1
  24. package/dist/src/v2/validation-progression.d.ts.map +1 -1
  25. package/dist/src/v2/validation-progression.js +3 -0
  26. package/dist/src/v2/validation-progression.js.map +1 -1
  27. package/internal-workflow/docs/agents/coding-skill-routing.md +4 -0
  28. package/internal-workflow/manifest.json +1 -1
  29. package/internal-workflow/profiles/spec_reviewer.toml +1 -1
  30. package/internal-workflow/profiles/standards_reviewer.toml +1 -1
  31. package/internal-workflow/skills/code-review/SKILL.md +5 -0
  32. package/internal-workflow/skills/implement/SKILL.md +11 -9
  33. package/internal-workflow/skills/implement/evals/evals.json +0 -12
  34. package/internal-workflow/skills/plan/SKILL.md +32 -12
  35. package/internal-workflow/skills/plan/agents/openai.yaml +2 -2
  36. package/internal-workflow/skills/plan/evals/evals.json +27 -0
  37. package/internal-workflow/skills/plan-review/SKILL.md +110 -0
  38. package/internal-workflow/skills/plan-review/agents/openai.yaml +6 -0
  39. package/internal-workflow/skills/plan-review/evals/evals.json +57 -0
  40. package/internal-workflow/skills/tickets-orchestrator/SKILL.md +0 -4
  41. package/internal-workflow/skills/to-spec/SKILL.md +4 -2
  42. package/internal-workflow/skills/to-tickets/SKILL.md +30 -24
  43. package/internal-workflow/skills/to-tickets/agents/openai.yaml +1 -1
  44. package/internal-workflow/skills/to-tickets/evals/evals.json +30 -5
  45. package/package.json +1 -1
@@ -30,6 +30,9 @@ The user-facing coding flow is Plan, Implement, Review.
30
30
 
31
31
  - [`$plan`](../../skills/plan/SKILL.md) owns product decisions and multi-ticket
32
32
  planning composition. It is the sole planning-composition entrypoint.
33
+ - [`$plan-review`](../../skills/plan-review/SKILL.md) performs deep adversarial
34
+ read-only review of a settled local plan or complete Parent/ticket packet and
35
+ returns findings to Plan without rewriting the artifact.
33
36
  - [`$implement`](../../skills/implement/SKILL.md) is the single execution owner
34
37
  for clear features, fixes, obvious local edits, and executable tickets.
35
38
  - [`$code-review`](../../skills/code-review/SKILL.md) is the direct Review
@@ -163,6 +166,7 @@ central configuration details:
163
166
  | --- | --- |
164
167
  | Root dialogue, integration, and Git ownership | `root` |
165
168
  | One isolated executable ticket | `implementer` |
169
+ | Deep adversarial review of a settled plan | `plan_reviewer` |
166
170
  | Requirement fidelity and scope drift | `spec_reviewer` |
167
171
  | Correctness and repository standards | `standards_reviewer` |
168
172
  | Bounded repository exploration | `explorer` |
@@ -1 +1 @@
1
- {"evals":{"skill/bug-root-cause-explainer":{"owner":"bug-root-cause-explainer","path":"skills/bug-root-cause-explainer/evals/evals.json"},"skill/code-review":{"owner":"code-review","path":"skills/code-review/evals/evals.json"},"skill/diagnosing-bugs":{"owner":"diagnosing-bugs","path":"skills/diagnosing-bugs/evals/evals.json"},"skill/grilling":{"owner":"grilling","path":"skills/grilling/evals/evals.json"},"skill/implement":{"owner":"implement","path":"skills/implement/evals/evals.json"},"skill/plan":{"owner":"plan","path":"skills/plan/evals/evals.json"},"skill/prototype":{"owner":"prototype","path":"skills/prototype/evals/evals.json"},"skill/research":{"owner":"research","path":"skills/research/evals/evals.json"},"skill/tdd":{"owner":"tdd","path":"skills/tdd/evals/evals.json"},"skill/tickets-orchestrator":{"owner":"tickets-orchestrator","path":"skills/tickets-orchestrator/evals/evals.json"},"skill/to-spec":{"owner":"to-spec","path":"skills/to-spec/evals/evals.json"},"skill/to-tickets":{"owner":"to-tickets","path":"skills/to-tickets/evals/evals.json"}},"files":[{"mode":420,"path":"docs/agents/bug-workflow-routing.md","sha256":"96c35629bdf29fcaf7114bc2835d4ef94ac08d77ae218496c12c2a4e2419734b","size":1709},{"mode":420,"path":"docs/agents/bugfix-quality-gate.md","sha256":"caaed6c923adfe56f4b6dd89222a83493ef4dd4e8bdd2bad694f8a11f93541ae","size":709},{"mode":420,"path":"docs/agents/coding-skill-routing.md","sha256":"14e1d9a47df8282296a34ca3443b0a7a0cb05c9cc4a297dd4e1a9ba0d8d6d598","size":9546},{"mode":420,"path":"docs/agents/confidence-rubric.md","sha256":"42c947db2775380867e7adcfbdbe0f67b8f511b9ddf33a6eef8e1b0e995912c2","size":1883},{"mode":420,"path":"docs/agents/tool-usage.md","sha256":"7e1f52fff6c2a9c573851d682cacf85ef7c22d67c00eb2667ca6f06ec5a6f9b0","size":5069},{"mode":420,"path":"operations/acceptance-proof/SKILL.md","sha256":"c33a04bf8dfcb59982f60b232633b0e48e9de4ec375cd02f52ec71f9fce30de6","size":440},{"mode":420,"path":"operations/code-review/SKILL.md","sha256":"5483d29364ab73d16fd28e8117fae17e300b7ea80235e3ceb5415b296b7defed","size":2594},{"mode":420,"path":"operations/implementation/SKILL.md","sha256":"16f48cd2a1d3c106773ec0af8c13912cb44bf36d50ccef601e0290eeb0262345","size":2102},{"mode":420,"path":"profiles/implementer.toml","sha256":"e0f77690a6308d20f208d5230accb1d23163c73f3df0ea4a81725c8e3ff3b0b5","size":840},{"mode":420,"path":"profiles/review_coordinator.toml","sha256":"ef9197959946e141334c182897e3335d0243f05afd4ad81288a8481e0efd3795","size":681},{"mode":420,"path":"profiles/spec_reviewer.toml","sha256":"2dd198709c887f5b613461d4ae2b04405ff928cf566a43a731a5f51d67d745bb","size":770},{"mode":420,"path":"profiles/standards_reviewer.toml","sha256":"327c477315595dd50489873a05c7aa0c5ff51afb877bb0746d569ff4e33180fb","size":896},{"mode":420,"path":"schemas/code-review-v1.json","sha256":"756d7aecacb47f1a90d63933a8564fca3211a10bb929b804808c395c385499e1","size":2615},{"mode":420,"path":"schemas/implementation-report-v1.json","sha256":"072fb02e64d856053870646ff12d53f355551706c3b5a3a542010b577c452322","size":4412},{"mode":420,"path":"schemas/proof-report-v1.json","sha256":"104db803c066e42ed5493fec7eecc7e3788fce622df33d5ad4016aba7946f8c8","size":21244},{"mode":420,"path":"skills/acceptance-proof/SKILL.md","sha256":"6f2d85dfebfd47b2ec7ede95f2e02417b3f0ad860d333360b040d31e3c609525","size":1777},{"mode":420,"path":"skills/acceptance-proof/agents/openai.yaml","sha256":"d602d9f2e1bf618a71171729c6f354dd137c939cb433bd49afec678360e1189f","size":265},{"mode":420,"path":"skills/acceptance-proof/references/android.md","sha256":"b62fea63f53f79a8978df81608a7c1f48fa9f06084fba8382904a8f8c8dff9bc","size":2940},{"mode":420,"path":"skills/acceptance-proof/references/browser.md","sha256":"ceefa4fd7db475b6162368511c2742b6d9c6af58d48e7d5d8a773ed5cc3938c4","size":2281},{"mode":420,"path":"skills/acceptance-proof/references/ios.md","sha256":"ae18be2632e1f7c3aa0810a1bafafc7760c807b30b1269408825aa14c224d493","size":2486},{"mode":420,"path":"skills/acceptance-proof/tools/ios-lease.mjs","sha256":"6e1e0d95c6a8b2d42c34de05bd4446eac23e3916bffccb027f236b8a8a1809a3","size":13834},{"mode":420,"path":"skills/bug-root-cause-explainer/SKILL.md","sha256":"972305d2d4231b6eb7b39196eb49bc167e0a7f89ab86918ef5ad71a34d9bda43","size":5474},{"mode":420,"path":"skills/bug-root-cause-explainer/agents/openai.yaml","sha256":"a65d3f3b50d38309ef54618e0c00f656ac17a5bee5cc5a5c5faf3bc10954caef","size":403},{"mode":420,"path":"skills/bug-root-cause-explainer/evals/evals.json","sha256":"a2783a1e6be8fd7ca5af3821379cff7a6b8565ae33a8ed194b38573eabba4414","size":656},{"mode":420,"path":"skills/code-review/SKILL.md","sha256":"1940d0ba7cdfe13b51a139e220f6ec4278afdaef16d269dabbedbc8beee86299","size":5319},{"mode":420,"path":"skills/code-review/agents/openai.yaml","sha256":"cfc3d99b7fbe8cfe04ac994acaacf11ae73dcf1da59dcd2c248d779d415c8413","size":314},{"mode":420,"path":"skills/code-review/evals/evals.json","sha256":"2c2704c450a7e250bf869adc4459a5018ab563402a188ba6b53d743040ac7b0d","size":4625},{"mode":420,"path":"skills/code-review/references/standards-smells.md","sha256":"e14cf49716f832ea9e6b43cadcac255b8cf3ffe0712b923e68c7c9a69d46a387","size":2408},{"mode":420,"path":"skills/diagnosing-bugs/SKILL.md","sha256":"95c48af453d9d99fbcd8ceb1335c1794d110d94a7783dec9185f41d71b7e21c6","size":11826},{"mode":420,"path":"skills/diagnosing-bugs/agents/openai.yaml","sha256":"0ae35c16a55e0efa5de2ac756e07a2b058c562a89c53e149145f5de1584e24e6","size":373},{"mode":420,"path":"skills/diagnosing-bugs/evals/evals.json","sha256":"9881149ebe47c9443ff8e7f2dcf02725d742a84806de6e33ec2ba49d31dbc2a2","size":2557},{"mode":420,"path":"skills/diagnosing-bugs/scripts/hitl-loop.template.sh","sha256":"b2932630950e5210075bcd6f850e5accf30c101c5367b29eac3a29b4dd8084c8","size":1164},{"mode":420,"path":"skills/grilling/SKILL.md","sha256":"ff7a5707e1320212c9f9bec18507566ce5eed0eee1a4990e9d09074ca76a335b","size":2552},{"mode":420,"path":"skills/grilling/agents/openai.yaml","sha256":"16acd9a4929237685beb879ad38e6235f02e11475cf2a865c443c4d50997c5d8","size":358},{"mode":420,"path":"skills/grilling/evals/evals.json","sha256":"30c3e7137d296156d74b69ee25640e43c82ae650f0f07ed76f12206b34124c39","size":1778},{"mode":420,"path":"skills/implement/SKILL.md","sha256":"44e20ff864a3545ff5e5ca128b1c720c7195591bfdc83a63a6f663e73d6acf03","size":7725},{"mode":420,"path":"skills/implement/agents/openai.yaml","sha256":"2ef457435557419cb11139b4172813ee0ca711630df81a1192532c7e8cf8006e","size":266},{"mode":420,"path":"skills/implement/evals/evals.json","sha256":"95c264ea8effa7e5e648f3c2d2315088d1f3fc1aed9c7eaaf7d89fbf029601ee","size":7343},{"mode":420,"path":"skills/plan/SKILL.md","sha256":"d3b0c6811f42cca559f77c2bcc7ab055be6bce23ef6b9edac06b8e0e42c57baa","size":3846},{"mode":420,"path":"skills/plan/agents/openai.yaml","sha256":"8fffc0a16f3577c93988233529a671db94a6dea55be0ae3fd29e7a6109ae13cf","size":311},{"mode":420,"path":"skills/plan/evals/evals.json","sha256":"8e480d728f8f4bd8d27fbda04c241f2aaebcffa9f70e9cab4ba46d1e89cec406","size":4092},{"mode":420,"path":"skills/prototype/LOGIC.md","sha256":"1a6a50011e81db9bf786eb98131d5125b4965681cc5c4d5db3b6dd2a39478c07","size":5828},{"mode":420,"path":"skills/prototype/SKILL.md","sha256":"b185dde586efa763c1fc5dec7b44ed54b0b02a07183e95d7658e5dea4d31424b","size":4027},{"mode":420,"path":"skills/prototype/UI.md","sha256":"39d6c54ad1ece13e87157dbb80fdfe7b627d21368d93889d787af6a9be3c1467","size":6798},{"mode":420,"path":"skills/prototype/agents/openai.yaml","sha256":"b84be88538b40eb72f6b819c939b11d92e29dcb2bed91fba7cd67a0ca6ac3bad","size":301},{"mode":420,"path":"skills/prototype/evals/evals.json","sha256":"7619c1c5b41c3c62c870c557623d49d788d6672828f887b31fff2ab3a390a82a","size":2928},{"mode":420,"path":"skills/research/SKILL.md","sha256":"3effbfd0db25f32330fc34887e6c553b2b062ca605f0df98462a207df44b1373","size":4757},{"mode":420,"path":"skills/research/agents/openai.yaml","sha256":"4475cf777225f81a1c45937389d55f2b485b039b36e8378ef6b001e24f3fd1fe","size":254},{"mode":420,"path":"skills/research/evals/evals.json","sha256":"ba1c1f1a9c841ca3d25faebcfe84dd30993a50dbd9d04274e215c2f44a369554","size":1973},{"mode":420,"path":"skills/tdd/SKILL.md","sha256":"c4ef54fe809fb8fa4c55de2810210f9991f85fa442c73797e575d59c9b99d4fe","size":4397},{"mode":420,"path":"skills/tdd/agents/openai.yaml","sha256":"62f91ed072157ada9471fece9e9265a9bb7c9eb07fc1453794f4ccf5d107083c","size":285},{"mode":420,"path":"skills/tdd/evals/evals.json","sha256":"58cfcd7c2fedc80e4f1431e4c52481849522944730639265323516c12c70b905","size":1202},{"mode":420,"path":"skills/tdd/interface-design.md","sha256":"764c5ff0e3fa6b4ab7095eb65ccc7201e090baf19fa16051dfdb72c06d27417d","size":653},{"mode":420,"path":"skills/tdd/mocking.md","sha256":"36891842b9ff463daf1c68e65eb25df6bcc734f476a0d23c930e757c150c7451","size":1817},{"mode":420,"path":"skills/tdd/refactoring.md","sha256":"28e5278dac743bc1a37bf5b5e3beba84fe90c0d63ea59abfb5cc206b8667684e","size":398},{"mode":420,"path":"skills/tdd/tests.md","sha256":"6773173a074569b2e51653bd7b95c097d602dbb4815d1cf1c87344705c4e0d1c","size":2228},{"mode":420,"path":"skills/tickets-orchestrator/SKILL.md","sha256":"161db5cbe9304778f6467f6c5293806cdbded8f56b2cc3c380e79c55215987e1","size":11663},{"mode":420,"path":"skills/tickets-orchestrator/agents/openai.yaml","sha256":"a130bb5c109e9385bdcca4edc583f63c0199fe9673c334ba5e336900e9de606a","size":412},{"mode":420,"path":"skills/tickets-orchestrator/evals/evals.json","sha256":"0f2cb1544f8702dd308c8c1b3a210e3428e36028685c515ab19ab161af1e3d55","size":10076},{"mode":420,"path":"skills/tickets-orchestrator/references/delegate-integrate.md","sha256":"7a9db8963457b5491e7c8b7bc7c1ddac72a3a02053999f0a82aca2917fadfb14","size":5183},{"mode":420,"path":"skills/tickets-orchestrator/references/finish-delivery.md","sha256":"cdcafc0f908ff67c810301934721d006f4b791087b9362e29a41c92e88dd1121","size":4246},{"mode":420,"path":"skills/tickets-orchestrator/references/stop-completion.md","sha256":"21ec3fcfc9acbdc9db040b1cf8a1740cc4e18be1dc8827b7f66edca0d611c3dd","size":3568},{"mode":420,"path":"skills/to-spec/SKILL.md","sha256":"8b213fb2e7b47786b9614c78892f7de0a8c41751ccbe3822ba3f2b524ecab63a","size":6243},{"mode":420,"path":"skills/to-spec/agents/openai.yaml","sha256":"02221785807ff9219a80d71f66759f354c417ee003b1ed56787962220c272e21","size":292},{"mode":420,"path":"skills/to-spec/evals/evals.json","sha256":"fb2e28f6a9df402d8306d27fb04bddaaabc55afcc4373f3b8e579ee3bb38cc28","size":2801},{"mode":420,"path":"skills/to-tickets/SKILL.md","sha256":"6a3faa3a5a2d84cc0a4b588d8b5ddf7989f7f620707b16c1590c5499d5e055ab","size":12951},{"mode":420,"path":"skills/to-tickets/agents/openai.yaml","sha256":"88383101109fef9926340fcea294e5d59c279d81bafe57f1f6a2d0efabdf4b84","size":342},{"mode":420,"path":"skills/to-tickets/evals/evals.json","sha256":"d539ddf0f3d23f6c3c26e19f430a165b45683e5ce0146d1fba450b22098f8e97","size":9286},{"mode":420,"path":"skills/to-tickets/references/publishing-details.md","sha256":"482144c7bef9631e1007845ebe34468eaa435c3f6d6cd3c0d7b34a65bdc6fca6","size":4848}],"generationHash":"c1174457079c9f86ecc0175ce3747059021bb5c7ea699ca496f9c31bf7722976","operations":{"acceptance-proof":{"dependencySkills":[],"entry":"operations/acceptance-proof/SKILL.md","files":["operations/acceptance-proof/SKILL.md","profiles/implementer.toml","schemas/proof-report-v1.json","skills/acceptance-proof/SKILL.md","skills/acceptance-proof/agents/openai.yaml","skills/acceptance-proof/references/android.md","skills/acceptance-proof/references/browser.md","skills/acceptance-proof/references/ios.md","skills/acceptance-proof/tools/ios-lease.mjs"],"id":"acceptance-proof","outputSchema":"schemas/proof-report-v1.json","policy":{"approvalCeiling":"never","cwdClass":"worktree","externalWrite":false,"mcpTools":[],"network":"deny","networkHosts":[],"runnerPostcondition":"proof-only","sandboxMode":"workspace-write","worktreeAccess":"write","writableRootClasses":["worktree"]},"profile":"implementer","resources":[],"reviewers":[],"sourceSkill":"acceptance-proof"},"code-review":{"dependencySkills":[],"entry":"operations/code-review/SKILL.md","files":["docs/agents/confidence-rubric.md","operations/code-review/SKILL.md","profiles/review_coordinator.toml","profiles/spec_reviewer.toml","profiles/standards_reviewer.toml","schemas/code-review-v1.json","skills/code-review/SKILL.md","skills/code-review/agents/openai.yaml","skills/code-review/references/standards-smells.md"],"id":"code-review","outputSchema":"schemas/code-review-v1.json","policy":{"approvalCeiling":"never","cwdClass":"worktree","externalWrite":false,"mcpTools":[],"network":"deny","networkHosts":[],"runnerPostcondition":"report-only","sandboxMode":"read-only","worktreeAccess":"read-only","writableRootClasses":[]},"profile":"review_coordinator","resources":["docs/agents/confidence-rubric.md"],"reviewers":["spec_reviewer","standards_reviewer"],"sourceSkill":"code-review"},"implementation":{"dependencySkills":["diagnosing-bugs","tdd"],"entry":"operations/implementation/SKILL.md","files":["docs/agents/bug-workflow-routing.md","docs/agents/bugfix-quality-gate.md","docs/agents/coding-skill-routing.md","docs/agents/confidence-rubric.md","docs/agents/tool-usage.md","operations/implementation/SKILL.md","profiles/implementer.toml","schemas/implementation-report-v1.json","skills/bug-root-cause-explainer/SKILL.md","skills/bug-root-cause-explainer/agents/openai.yaml","skills/code-review/SKILL.md","skills/code-review/agents/openai.yaml","skills/code-review/references/standards-smells.md","skills/diagnosing-bugs/SKILL.md","skills/diagnosing-bugs/agents/openai.yaml","skills/diagnosing-bugs/scripts/hitl-loop.template.sh","skills/grilling/SKILL.md","skills/grilling/agents/openai.yaml","skills/implement/SKILL.md","skills/implement/agents/openai.yaml","skills/plan/SKILL.md","skills/plan/agents/openai.yaml","skills/prototype/LOGIC.md","skills/prototype/SKILL.md","skills/prototype/UI.md","skills/prototype/agents/openai.yaml","skills/research/SKILL.md","skills/research/agents/openai.yaml","skills/tdd/SKILL.md","skills/tdd/agents/openai.yaml","skills/tdd/interface-design.md","skills/tdd/mocking.md","skills/tdd/refactoring.md","skills/tdd/tests.md","skills/tickets-orchestrator/SKILL.md","skills/tickets-orchestrator/agents/openai.yaml","skills/tickets-orchestrator/references/delegate-integrate.md","skills/tickets-orchestrator/references/finish-delivery.md","skills/tickets-orchestrator/references/stop-completion.md","skills/to-spec/SKILL.md","skills/to-spec/agents/openai.yaml","skills/to-tickets/SKILL.md","skills/to-tickets/agents/openai.yaml","skills/to-tickets/references/publishing-details.md"],"id":"implementation","outputSchema":"schemas/implementation-report-v1.json","policy":{"approvalCeiling":"never","cwdClass":"worktree","externalWrite":false,"mcpTools":[],"network":"deny","networkHosts":[],"runnerPostcondition":"change-set","sandboxMode":"workspace-write","worktreeAccess":"write","writableRootClasses":["worktree"]},"profile":"implementer","resources":["docs/agents/bug-workflow-routing.md","docs/agents/coding-skill-routing.md","docs/agents/tool-usage.md"],"reviewers":[],"sourceSkill":"implement"}},"profiles":{"implementer":"profiles/implementer.toml","review_coordinator":"profiles/review_coordinator.toml","spec_reviewer":"profiles/spec_reviewer.toml","standards_reviewer":"profiles/standards_reviewer.toml"},"skills":{"acceptance-proof":{"dependencySkills":[],"entry":"skills/acceptance-proof/SKILL.md","files":["skills/acceptance-proof/SKILL.md","skills/acceptance-proof/agents/openai.yaml","skills/acceptance-proof/references/android.md","skills/acceptance-proof/references/browser.md","skills/acceptance-proof/references/ios.md","skills/acceptance-proof/tools/ios-lease.mjs"],"metadata":"skills/acceptance-proof/agents/openai.yaml"},"bug-root-cause-explainer":{"dependencySkills":["diagnosing-bugs"],"entry":"skills/bug-root-cause-explainer/SKILL.md","files":["docs/agents/bug-workflow-routing.md","docs/agents/bugfix-quality-gate.md","docs/agents/confidence-rubric.md","skills/bug-root-cause-explainer/SKILL.md","skills/bug-root-cause-explainer/agents/openai.yaml","skills/code-review/SKILL.md","skills/code-review/agents/openai.yaml","skills/code-review/references/standards-smells.md","skills/diagnosing-bugs/SKILL.md","skills/diagnosing-bugs/agents/openai.yaml","skills/diagnosing-bugs/scripts/hitl-loop.template.sh","skills/implement/SKILL.md","skills/implement/agents/openai.yaml","skills/tdd/SKILL.md","skills/tdd/agents/openai.yaml","skills/tdd/interface-design.md","skills/tdd/mocking.md","skills/tdd/refactoring.md","skills/tdd/tests.md"],"metadata":"skills/bug-root-cause-explainer/agents/openai.yaml"},"code-review":{"dependencySkills":[],"entry":"skills/code-review/SKILL.md","files":["skills/code-review/SKILL.md","skills/code-review/agents/openai.yaml","skills/code-review/references/standards-smells.md"],"metadata":"skills/code-review/agents/openai.yaml"},"diagnosing-bugs":{"dependencySkills":[],"entry":"skills/diagnosing-bugs/SKILL.md","files":["docs/agents/bug-workflow-routing.md","docs/agents/bugfix-quality-gate.md","docs/agents/confidence-rubric.md","skills/bug-root-cause-explainer/SKILL.md","skills/bug-root-cause-explainer/agents/openai.yaml","skills/code-review/SKILL.md","skills/code-review/agents/openai.yaml","skills/code-review/references/standards-smells.md","skills/diagnosing-bugs/SKILL.md","skills/diagnosing-bugs/agents/openai.yaml","skills/diagnosing-bugs/scripts/hitl-loop.template.sh","skills/implement/SKILL.md","skills/implement/agents/openai.yaml","skills/tdd/SKILL.md","skills/tdd/agents/openai.yaml","skills/tdd/interface-design.md","skills/tdd/mocking.md","skills/tdd/refactoring.md","skills/tdd/tests.md"],"metadata":"skills/diagnosing-bugs/agents/openai.yaml"},"grilling":{"dependencySkills":[],"entry":"skills/grilling/SKILL.md","files":["skills/grilling/SKILL.md","skills/grilling/agents/openai.yaml"],"metadata":"skills/grilling/agents/openai.yaml"},"implement":{"dependencySkills":[],"entry":"skills/implement/SKILL.md","files":["skills/code-review/SKILL.md","skills/code-review/agents/openai.yaml","skills/code-review/references/standards-smells.md","skills/implement/SKILL.md","skills/implement/agents/openai.yaml","skills/tdd/SKILL.md","skills/tdd/agents/openai.yaml","skills/tdd/interface-design.md","skills/tdd/mocking.md","skills/tdd/refactoring.md","skills/tdd/tests.md"],"metadata":"skills/implement/agents/openai.yaml"},"plan":{"dependencySkills":[],"entry":"skills/plan/SKILL.md","files":["skills/code-review/SKILL.md","skills/code-review/agents/openai.yaml","skills/code-review/references/standards-smells.md","skills/grilling/SKILL.md","skills/grilling/agents/openai.yaml","skills/implement/SKILL.md","skills/implement/agents/openai.yaml","skills/plan/SKILL.md","skills/plan/agents/openai.yaml","skills/research/SKILL.md","skills/research/agents/openai.yaml","skills/tdd/SKILL.md","skills/tdd/agents/openai.yaml","skills/tdd/interface-design.md","skills/tdd/mocking.md","skills/tdd/refactoring.md","skills/tdd/tests.md","skills/to-spec/SKILL.md","skills/to-spec/agents/openai.yaml","skills/to-tickets/SKILL.md","skills/to-tickets/agents/openai.yaml","skills/to-tickets/references/publishing-details.md"],"metadata":"skills/plan/agents/openai.yaml"},"prototype":{"dependencySkills":[],"entry":"skills/prototype/SKILL.md","files":["skills/code-review/SKILL.md","skills/code-review/agents/openai.yaml","skills/code-review/references/standards-smells.md","skills/implement/SKILL.md","skills/implement/agents/openai.yaml","skills/prototype/LOGIC.md","skills/prototype/SKILL.md","skills/prototype/UI.md","skills/prototype/agents/openai.yaml","skills/tdd/SKILL.md","skills/tdd/agents/openai.yaml","skills/tdd/interface-design.md","skills/tdd/mocking.md","skills/tdd/refactoring.md","skills/tdd/tests.md"],"metadata":"skills/prototype/agents/openai.yaml"},"research":{"dependencySkills":[],"entry":"skills/research/SKILL.md","files":["skills/research/SKILL.md","skills/research/agents/openai.yaml"],"metadata":"skills/research/agents/openai.yaml"},"tdd":{"dependencySkills":[],"entry":"skills/tdd/SKILL.md","files":["skills/tdd/SKILL.md","skills/tdd/agents/openai.yaml","skills/tdd/interface-design.md","skills/tdd/mocking.md","skills/tdd/refactoring.md","skills/tdd/tests.md"],"metadata":"skills/tdd/agents/openai.yaml"},"tickets-orchestrator":{"dependencySkills":[],"entry":"skills/tickets-orchestrator/SKILL.md","files":["skills/code-review/SKILL.md","skills/code-review/agents/openai.yaml","skills/code-review/references/standards-smells.md","skills/implement/SKILL.md","skills/implement/agents/openai.yaml","skills/research/SKILL.md","skills/research/agents/openai.yaml","skills/tdd/SKILL.md","skills/tdd/agents/openai.yaml","skills/tdd/interface-design.md","skills/tdd/mocking.md","skills/tdd/refactoring.md","skills/tdd/tests.md","skills/tickets-orchestrator/SKILL.md","skills/tickets-orchestrator/agents/openai.yaml","skills/tickets-orchestrator/references/delegate-integrate.md","skills/tickets-orchestrator/references/finish-delivery.md","skills/tickets-orchestrator/references/stop-completion.md","skills/to-tickets/SKILL.md","skills/to-tickets/agents/openai.yaml","skills/to-tickets/references/publishing-details.md"],"metadata":"skills/tickets-orchestrator/agents/openai.yaml"},"to-spec":{"dependencySkills":[],"entry":"skills/to-spec/SKILL.md","files":["skills/research/SKILL.md","skills/research/agents/openai.yaml","skills/to-spec/SKILL.md","skills/to-spec/agents/openai.yaml","skills/to-tickets/SKILL.md","skills/to-tickets/agents/openai.yaml","skills/to-tickets/references/publishing-details.md"],"metadata":"skills/to-spec/agents/openai.yaml"},"to-tickets":{"dependencySkills":[],"entry":"skills/to-tickets/SKILL.md","files":["skills/research/SKILL.md","skills/research/agents/openai.yaml","skills/to-tickets/SKILL.md","skills/to-tickets/agents/openai.yaml","skills/to-tickets/references/publishing-details.md"],"metadata":"skills/to-tickets/agents/openai.yaml"}},"sourceFingerprint":"d0642c06914fb33b7d0c881550aea801b74d82579b2b52e41fa225d98341074d","version":2}
1
+ {"evals":{"skill/bug-root-cause-explainer":{"owner":"bug-root-cause-explainer","path":"skills/bug-root-cause-explainer/evals/evals.json"},"skill/code-review":{"owner":"code-review","path":"skills/code-review/evals/evals.json"},"skill/diagnosing-bugs":{"owner":"diagnosing-bugs","path":"skills/diagnosing-bugs/evals/evals.json"},"skill/grilling":{"owner":"grilling","path":"skills/grilling/evals/evals.json"},"skill/implement":{"owner":"implement","path":"skills/implement/evals/evals.json"},"skill/plan":{"owner":"plan","path":"skills/plan/evals/evals.json"},"skill/plan-review":{"owner":"plan-review","path":"skills/plan-review/evals/evals.json"},"skill/prototype":{"owner":"prototype","path":"skills/prototype/evals/evals.json"},"skill/research":{"owner":"research","path":"skills/research/evals/evals.json"},"skill/tdd":{"owner":"tdd","path":"skills/tdd/evals/evals.json"},"skill/tickets-orchestrator":{"owner":"tickets-orchestrator","path":"skills/tickets-orchestrator/evals/evals.json"},"skill/to-spec":{"owner":"to-spec","path":"skills/to-spec/evals/evals.json"},"skill/to-tickets":{"owner":"to-tickets","path":"skills/to-tickets/evals/evals.json"}},"files":[{"mode":420,"path":"docs/agents/bug-workflow-routing.md","sha256":"96c35629bdf29fcaf7114bc2835d4ef94ac08d77ae218496c12c2a4e2419734b","size":1709},{"mode":420,"path":"docs/agents/bugfix-quality-gate.md","sha256":"caaed6c923adfe56f4b6dd89222a83493ef4dd4e8bdd2bad694f8a11f93541ae","size":709},{"mode":420,"path":"docs/agents/coding-skill-routing.md","sha256":"5ca43f4f09b9c19549a84740bcd64d1778f50d3ec80e942e8c200f6d2c4858ab","size":9829},{"mode":420,"path":"docs/agents/confidence-rubric.md","sha256":"42c947db2775380867e7adcfbdbe0f67b8f511b9ddf33a6eef8e1b0e995912c2","size":1883},{"mode":420,"path":"docs/agents/tool-usage.md","sha256":"7e1f52fff6c2a9c573851d682cacf85ef7c22d67c00eb2667ca6f06ec5a6f9b0","size":5069},{"mode":420,"path":"operations/acceptance-proof/SKILL.md","sha256":"c33a04bf8dfcb59982f60b232633b0e48e9de4ec375cd02f52ec71f9fce30de6","size":440},{"mode":420,"path":"operations/code-review/SKILL.md","sha256":"5483d29364ab73d16fd28e8117fae17e300b7ea80235e3ceb5415b296b7defed","size":2594},{"mode":420,"path":"operations/implementation/SKILL.md","sha256":"16f48cd2a1d3c106773ec0af8c13912cb44bf36d50ccef601e0290eeb0262345","size":2102},{"mode":420,"path":"profiles/implementer.toml","sha256":"e0f77690a6308d20f208d5230accb1d23163c73f3df0ea4a81725c8e3ff3b0b5","size":840},{"mode":420,"path":"profiles/review_coordinator.toml","sha256":"ef9197959946e141334c182897e3335d0243f05afd4ad81288a8481e0efd3795","size":681},{"mode":420,"path":"profiles/spec_reviewer.toml","sha256":"cd9f692e3d1ba27e25f170258604a5afdd1bb13c8c6f7a1895065700cfde8d04","size":770},{"mode":420,"path":"profiles/standards_reviewer.toml","sha256":"8b976c7e48ced6456e9e0653bef0b0e972e2b57172bef9095da7384f40fae3ef","size":896},{"mode":420,"path":"schemas/code-review-v1.json","sha256":"756d7aecacb47f1a90d63933a8564fca3211a10bb929b804808c395c385499e1","size":2615},{"mode":420,"path":"schemas/implementation-report-v1.json","sha256":"072fb02e64d856053870646ff12d53f355551706c3b5a3a542010b577c452322","size":4412},{"mode":420,"path":"schemas/proof-report-v1.json","sha256":"104db803c066e42ed5493fec7eecc7e3788fce622df33d5ad4016aba7946f8c8","size":21244},{"mode":420,"path":"skills/acceptance-proof/SKILL.md","sha256":"6f2d85dfebfd47b2ec7ede95f2e02417b3f0ad860d333360b040d31e3c609525","size":1777},{"mode":420,"path":"skills/acceptance-proof/agents/openai.yaml","sha256":"d602d9f2e1bf618a71171729c6f354dd137c939cb433bd49afec678360e1189f","size":265},{"mode":420,"path":"skills/acceptance-proof/references/android.md","sha256":"b62fea63f53f79a8978df81608a7c1f48fa9f06084fba8382904a8f8c8dff9bc","size":2940},{"mode":420,"path":"skills/acceptance-proof/references/browser.md","sha256":"ceefa4fd7db475b6162368511c2742b6d9c6af58d48e7d5d8a773ed5cc3938c4","size":2281},{"mode":420,"path":"skills/acceptance-proof/references/ios.md","sha256":"ae18be2632e1f7c3aa0810a1bafafc7760c807b30b1269408825aa14c224d493","size":2486},{"mode":420,"path":"skills/acceptance-proof/tools/ios-lease.mjs","sha256":"6e1e0d95c6a8b2d42c34de05bd4446eac23e3916bffccb027f236b8a8a1809a3","size":13834},{"mode":420,"path":"skills/bug-root-cause-explainer/SKILL.md","sha256":"972305d2d4231b6eb7b39196eb49bc167e0a7f89ab86918ef5ad71a34d9bda43","size":5474},{"mode":420,"path":"skills/bug-root-cause-explainer/agents/openai.yaml","sha256":"a65d3f3b50d38309ef54618e0c00f656ac17a5bee5cc5a5c5faf3bc10954caef","size":403},{"mode":420,"path":"skills/bug-root-cause-explainer/evals/evals.json","sha256":"a2783a1e6be8fd7ca5af3821379cff7a6b8565ae33a8ed194b38573eabba4414","size":656},{"mode":420,"path":"skills/code-review/SKILL.md","sha256":"9d96ba9656d04f9ebb120dcb7caf54361be078c06725ced6bd56749c1b699878","size":5608},{"mode":420,"path":"skills/code-review/agents/openai.yaml","sha256":"cfc3d99b7fbe8cfe04ac994acaacf11ae73dcf1da59dcd2c248d779d415c8413","size":314},{"mode":420,"path":"skills/code-review/evals/evals.json","sha256":"2c2704c450a7e250bf869adc4459a5018ab563402a188ba6b53d743040ac7b0d","size":4625},{"mode":420,"path":"skills/code-review/references/standards-smells.md","sha256":"e14cf49716f832ea9e6b43cadcac255b8cf3ffe0712b923e68c7c9a69d46a387","size":2408},{"mode":420,"path":"skills/diagnosing-bugs/SKILL.md","sha256":"95c48af453d9d99fbcd8ceb1335c1794d110d94a7783dec9185f41d71b7e21c6","size":11826},{"mode":420,"path":"skills/diagnosing-bugs/agents/openai.yaml","sha256":"0ae35c16a55e0efa5de2ac756e07a2b058c562a89c53e149145f5de1584e24e6","size":373},{"mode":420,"path":"skills/diagnosing-bugs/evals/evals.json","sha256":"9881149ebe47c9443ff8e7f2dcf02725d742a84806de6e33ec2ba49d31dbc2a2","size":2557},{"mode":420,"path":"skills/diagnosing-bugs/scripts/hitl-loop.template.sh","sha256":"b2932630950e5210075bcd6f850e5accf30c101c5367b29eac3a29b4dd8084c8","size":1164},{"mode":420,"path":"skills/grilling/SKILL.md","sha256":"ff7a5707e1320212c9f9bec18507566ce5eed0eee1a4990e9d09074ca76a335b","size":2552},{"mode":420,"path":"skills/grilling/agents/openai.yaml","sha256":"16acd9a4929237685beb879ad38e6235f02e11475cf2a865c443c4d50997c5d8","size":358},{"mode":420,"path":"skills/grilling/evals/evals.json","sha256":"30c3e7137d296156d74b69ee25640e43c82ae650f0f07ed76f12206b34124c39","size":1778},{"mode":420,"path":"skills/implement/SKILL.md","sha256":"f29cf5f6373aa6d0ac4bd5877ed64f9589cf6e252f7c5dc2811ca35a519e20f8","size":7933},{"mode":420,"path":"skills/implement/agents/openai.yaml","sha256":"2ef457435557419cb11139b4172813ee0ca711630df81a1192532c7e8cf8006e","size":266},{"mode":420,"path":"skills/implement/evals/evals.json","sha256":"d8ab1bd16d5143231e65213998f47bed516c772427f4aef8542b412287a469a0","size":6828},{"mode":420,"path":"skills/plan-review/SKILL.md","sha256":"d784b2148ea049342f9b0404d0770c8ae6b993fb30c2de6158a67862b6e0cf01","size":5538},{"mode":420,"path":"skills/plan-review/agents/openai.yaml","sha256":"af5c04a2b8007b156ba583813ca3066ec886360acba89a67526a8b2a257b678f","size":325},{"mode":420,"path":"skills/plan-review/evals/evals.json","sha256":"a33ecba7ee4273227b38c31ee7305a2a69047664872ff18636d8e72d00087655","size":2503},{"mode":420,"path":"skills/plan/SKILL.md","sha256":"2e516a040db78ad8f04a4cad2f72bddbfc3ca9763aeaa489c65262d20595bf32","size":5032},{"mode":420,"path":"skills/plan/agents/openai.yaml","sha256":"e1d8b49049df31d0ca9034a74a33e0d3b6051ce7c96d2f0400f31f1f1158823f","size":360},{"mode":420,"path":"skills/plan/evals/evals.json","sha256":"ccbdcc0531645de1c5ea711b40366d805bea3d01cb3667f88a5c38e9e30e82e8","size":5284},{"mode":420,"path":"skills/prototype/LOGIC.md","sha256":"1a6a50011e81db9bf786eb98131d5125b4965681cc5c4d5db3b6dd2a39478c07","size":5828},{"mode":420,"path":"skills/prototype/SKILL.md","sha256":"b185dde586efa763c1fc5dec7b44ed54b0b02a07183e95d7658e5dea4d31424b","size":4027},{"mode":420,"path":"skills/prototype/UI.md","sha256":"39d6c54ad1ece13e87157dbb80fdfe7b627d21368d93889d787af6a9be3c1467","size":6798},{"mode":420,"path":"skills/prototype/agents/openai.yaml","sha256":"b84be88538b40eb72f6b819c939b11d92e29dcb2bed91fba7cd67a0ca6ac3bad","size":301},{"mode":420,"path":"skills/prototype/evals/evals.json","sha256":"7619c1c5b41c3c62c870c557623d49d788d6672828f887b31fff2ab3a390a82a","size":2928},{"mode":420,"path":"skills/research/SKILL.md","sha256":"3effbfd0db25f32330fc34887e6c553b2b062ca605f0df98462a207df44b1373","size":4757},{"mode":420,"path":"skills/research/agents/openai.yaml","sha256":"4475cf777225f81a1c45937389d55f2b485b039b36e8378ef6b001e24f3fd1fe","size":254},{"mode":420,"path":"skills/research/evals/evals.json","sha256":"ba1c1f1a9c841ca3d25faebcfe84dd30993a50dbd9d04274e215c2f44a369554","size":1973},{"mode":420,"path":"skills/tdd/SKILL.md","sha256":"c4ef54fe809fb8fa4c55de2810210f9991f85fa442c73797e575d59c9b99d4fe","size":4397},{"mode":420,"path":"skills/tdd/agents/openai.yaml","sha256":"62f91ed072157ada9471fece9e9265a9bb7c9eb07fc1453794f4ccf5d107083c","size":285},{"mode":420,"path":"skills/tdd/evals/evals.json","sha256":"58cfcd7c2fedc80e4f1431e4c52481849522944730639265323516c12c70b905","size":1202},{"mode":420,"path":"skills/tdd/interface-design.md","sha256":"764c5ff0e3fa6b4ab7095eb65ccc7201e090baf19fa16051dfdb72c06d27417d","size":653},{"mode":420,"path":"skills/tdd/mocking.md","sha256":"36891842b9ff463daf1c68e65eb25df6bcc734f476a0d23c930e757c150c7451","size":1817},{"mode":420,"path":"skills/tdd/refactoring.md","sha256":"28e5278dac743bc1a37bf5b5e3beba84fe90c0d63ea59abfb5cc206b8667684e","size":398},{"mode":420,"path":"skills/tdd/tests.md","sha256":"6773173a074569b2e51653bd7b95c097d602dbb4815d1cf1c87344705c4e0d1c","size":2228},{"mode":420,"path":"skills/tickets-orchestrator/SKILL.md","sha256":"e2a87c81cfda819e10d32e66f2b51ee375105ac607339edb68d01b45d1cbf46f","size":11440},{"mode":420,"path":"skills/tickets-orchestrator/agents/openai.yaml","sha256":"a130bb5c109e9385bdcca4edc583f63c0199fe9673c334ba5e336900e9de606a","size":412},{"mode":420,"path":"skills/tickets-orchestrator/evals/evals.json","sha256":"0f2cb1544f8702dd308c8c1b3a210e3428e36028685c515ab19ab161af1e3d55","size":10076},{"mode":420,"path":"skills/tickets-orchestrator/references/delegate-integrate.md","sha256":"7a9db8963457b5491e7c8b7bc7c1ddac72a3a02053999f0a82aca2917fadfb14","size":5183},{"mode":420,"path":"skills/tickets-orchestrator/references/finish-delivery.md","sha256":"cdcafc0f908ff67c810301934721d006f4b791087b9362e29a41c92e88dd1121","size":4246},{"mode":420,"path":"skills/tickets-orchestrator/references/stop-completion.md","sha256":"21ec3fcfc9acbdc9db040b1cf8a1740cc4e18be1dc8827b7f66edca0d611c3dd","size":3568},{"mode":420,"path":"skills/to-spec/SKILL.md","sha256":"127320aeda9ed85a25cf5b87237ffe9defb4b0c71ed6ec07d0ff1b4a638208be","size":6355},{"mode":420,"path":"skills/to-spec/agents/openai.yaml","sha256":"02221785807ff9219a80d71f66759f354c417ee003b1ed56787962220c272e21","size":292},{"mode":420,"path":"skills/to-spec/evals/evals.json","sha256":"fb2e28f6a9df402d8306d27fb04bddaaabc55afcc4373f3b8e579ee3bb38cc28","size":2801},{"mode":420,"path":"skills/to-tickets/SKILL.md","sha256":"e72ece315b93b0b6225ea7aac4440d33b3ffc03a4df437108879d55d6b483da1","size":13480},{"mode":420,"path":"skills/to-tickets/agents/openai.yaml","sha256":"610b3d183fbd215b3e9b69f60499a737b1f8df3963e4ecb428a1ab183c94eded","size":386},{"mode":420,"path":"skills/to-tickets/evals/evals.json","sha256":"3a254d5ea33918c91e9e8b2b82de7ecb792314d7183ec2e32a375c61211ae05f","size":10409},{"mode":420,"path":"skills/to-tickets/references/publishing-details.md","sha256":"482144c7bef9631e1007845ebe34468eaa435c3f6d6cd3c0d7b34a65bdc6fca6","size":4848}],"generationHash":"5877ccef8a748e2cfcc1eb031bda2eacc4abb6ebc8a2853503ad5bc88dc92ffa","operations":{"acceptance-proof":{"dependencySkills":[],"entry":"operations/acceptance-proof/SKILL.md","files":["operations/acceptance-proof/SKILL.md","profiles/implementer.toml","schemas/proof-report-v1.json","skills/acceptance-proof/SKILL.md","skills/acceptance-proof/agents/openai.yaml","skills/acceptance-proof/references/android.md","skills/acceptance-proof/references/browser.md","skills/acceptance-proof/references/ios.md","skills/acceptance-proof/tools/ios-lease.mjs"],"id":"acceptance-proof","outputSchema":"schemas/proof-report-v1.json","policy":{"approvalCeiling":"never","cwdClass":"worktree","externalWrite":false,"mcpTools":[],"network":"deny","networkHosts":[],"runnerPostcondition":"proof-only","sandboxMode":"workspace-write","worktreeAccess":"write","writableRootClasses":["worktree"]},"profile":"implementer","resources":[],"reviewers":[],"sourceSkill":"acceptance-proof"},"code-review":{"dependencySkills":[],"entry":"operations/code-review/SKILL.md","files":["docs/agents/confidence-rubric.md","operations/code-review/SKILL.md","profiles/review_coordinator.toml","profiles/spec_reviewer.toml","profiles/standards_reviewer.toml","schemas/code-review-v1.json","skills/code-review/SKILL.md","skills/code-review/agents/openai.yaml","skills/code-review/references/standards-smells.md"],"id":"code-review","outputSchema":"schemas/code-review-v1.json","policy":{"approvalCeiling":"never","cwdClass":"worktree","externalWrite":false,"mcpTools":[],"network":"deny","networkHosts":[],"runnerPostcondition":"report-only","sandboxMode":"read-only","worktreeAccess":"read-only","writableRootClasses":[]},"profile":"review_coordinator","resources":["docs/agents/confidence-rubric.md"],"reviewers":["spec_reviewer","standards_reviewer"],"sourceSkill":"code-review"},"implementation":{"dependencySkills":["diagnosing-bugs","tdd"],"entry":"operations/implementation/SKILL.md","files":["docs/agents/bug-workflow-routing.md","docs/agents/bugfix-quality-gate.md","docs/agents/coding-skill-routing.md","docs/agents/confidence-rubric.md","docs/agents/tool-usage.md","operations/implementation/SKILL.md","profiles/implementer.toml","schemas/implementation-report-v1.json","skills/bug-root-cause-explainer/SKILL.md","skills/bug-root-cause-explainer/agents/openai.yaml","skills/code-review/SKILL.md","skills/code-review/agents/openai.yaml","skills/code-review/references/standards-smells.md","skills/diagnosing-bugs/SKILL.md","skills/diagnosing-bugs/agents/openai.yaml","skills/diagnosing-bugs/scripts/hitl-loop.template.sh","skills/grilling/SKILL.md","skills/grilling/agents/openai.yaml","skills/implement/SKILL.md","skills/implement/agents/openai.yaml","skills/plan-review/SKILL.md","skills/plan-review/agents/openai.yaml","skills/plan/SKILL.md","skills/plan/agents/openai.yaml","skills/prototype/LOGIC.md","skills/prototype/SKILL.md","skills/prototype/UI.md","skills/prototype/agents/openai.yaml","skills/research/SKILL.md","skills/research/agents/openai.yaml","skills/tdd/SKILL.md","skills/tdd/agents/openai.yaml","skills/tdd/interface-design.md","skills/tdd/mocking.md","skills/tdd/refactoring.md","skills/tdd/tests.md","skills/tickets-orchestrator/SKILL.md","skills/tickets-orchestrator/agents/openai.yaml","skills/tickets-orchestrator/references/delegate-integrate.md","skills/tickets-orchestrator/references/finish-delivery.md","skills/tickets-orchestrator/references/stop-completion.md","skills/to-spec/SKILL.md","skills/to-spec/agents/openai.yaml","skills/to-tickets/SKILL.md","skills/to-tickets/agents/openai.yaml","skills/to-tickets/references/publishing-details.md"],"id":"implementation","outputSchema":"schemas/implementation-report-v1.json","policy":{"approvalCeiling":"never","cwdClass":"worktree","externalWrite":false,"mcpTools":[],"network":"deny","networkHosts":[],"runnerPostcondition":"change-set","sandboxMode":"workspace-write","worktreeAccess":"write","writableRootClasses":["worktree"]},"profile":"implementer","resources":["docs/agents/bug-workflow-routing.md","docs/agents/coding-skill-routing.md","docs/agents/tool-usage.md"],"reviewers":[],"sourceSkill":"implement"}},"profiles":{"implementer":"profiles/implementer.toml","review_coordinator":"profiles/review_coordinator.toml","spec_reviewer":"profiles/spec_reviewer.toml","standards_reviewer":"profiles/standards_reviewer.toml"},"skills":{"acceptance-proof":{"dependencySkills":[],"entry":"skills/acceptance-proof/SKILL.md","files":["skills/acceptance-proof/SKILL.md","skills/acceptance-proof/agents/openai.yaml","skills/acceptance-proof/references/android.md","skills/acceptance-proof/references/browser.md","skills/acceptance-proof/references/ios.md","skills/acceptance-proof/tools/ios-lease.mjs"],"metadata":"skills/acceptance-proof/agents/openai.yaml"},"bug-root-cause-explainer":{"dependencySkills":["diagnosing-bugs"],"entry":"skills/bug-root-cause-explainer/SKILL.md","files":["docs/agents/bug-workflow-routing.md","docs/agents/bugfix-quality-gate.md","docs/agents/confidence-rubric.md","skills/bug-root-cause-explainer/SKILL.md","skills/bug-root-cause-explainer/agents/openai.yaml","skills/code-review/SKILL.md","skills/code-review/agents/openai.yaml","skills/code-review/references/standards-smells.md","skills/diagnosing-bugs/SKILL.md","skills/diagnosing-bugs/agents/openai.yaml","skills/diagnosing-bugs/scripts/hitl-loop.template.sh","skills/implement/SKILL.md","skills/implement/agents/openai.yaml","skills/tdd/SKILL.md","skills/tdd/agents/openai.yaml","skills/tdd/interface-design.md","skills/tdd/mocking.md","skills/tdd/refactoring.md","skills/tdd/tests.md"],"metadata":"skills/bug-root-cause-explainer/agents/openai.yaml"},"code-review":{"dependencySkills":[],"entry":"skills/code-review/SKILL.md","files":["skills/code-review/SKILL.md","skills/code-review/agents/openai.yaml","skills/code-review/references/standards-smells.md"],"metadata":"skills/code-review/agents/openai.yaml"},"diagnosing-bugs":{"dependencySkills":[],"entry":"skills/diagnosing-bugs/SKILL.md","files":["docs/agents/bug-workflow-routing.md","docs/agents/bugfix-quality-gate.md","docs/agents/confidence-rubric.md","skills/bug-root-cause-explainer/SKILL.md","skills/bug-root-cause-explainer/agents/openai.yaml","skills/code-review/SKILL.md","skills/code-review/agents/openai.yaml","skills/code-review/references/standards-smells.md","skills/diagnosing-bugs/SKILL.md","skills/diagnosing-bugs/agents/openai.yaml","skills/diagnosing-bugs/scripts/hitl-loop.template.sh","skills/implement/SKILL.md","skills/implement/agents/openai.yaml","skills/tdd/SKILL.md","skills/tdd/agents/openai.yaml","skills/tdd/interface-design.md","skills/tdd/mocking.md","skills/tdd/refactoring.md","skills/tdd/tests.md"],"metadata":"skills/diagnosing-bugs/agents/openai.yaml"},"grilling":{"dependencySkills":[],"entry":"skills/grilling/SKILL.md","files":["skills/grilling/SKILL.md","skills/grilling/agents/openai.yaml"],"metadata":"skills/grilling/agents/openai.yaml"},"implement":{"dependencySkills":[],"entry":"skills/implement/SKILL.md","files":["skills/code-review/SKILL.md","skills/code-review/agents/openai.yaml","skills/code-review/references/standards-smells.md","skills/implement/SKILL.md","skills/implement/agents/openai.yaml","skills/tdd/SKILL.md","skills/tdd/agents/openai.yaml","skills/tdd/interface-design.md","skills/tdd/mocking.md","skills/tdd/refactoring.md","skills/tdd/tests.md"],"metadata":"skills/implement/agents/openai.yaml"},"plan":{"dependencySkills":[],"entry":"skills/plan/SKILL.md","files":["skills/code-review/SKILL.md","skills/code-review/agents/openai.yaml","skills/code-review/references/standards-smells.md","skills/grilling/SKILL.md","skills/grilling/agents/openai.yaml","skills/implement/SKILL.md","skills/implement/agents/openai.yaml","skills/plan-review/SKILL.md","skills/plan-review/agents/openai.yaml","skills/plan/SKILL.md","skills/plan/agents/openai.yaml","skills/research/SKILL.md","skills/research/agents/openai.yaml","skills/tdd/SKILL.md","skills/tdd/agents/openai.yaml","skills/tdd/interface-design.md","skills/tdd/mocking.md","skills/tdd/refactoring.md","skills/tdd/tests.md","skills/to-spec/SKILL.md","skills/to-spec/agents/openai.yaml","skills/to-tickets/SKILL.md","skills/to-tickets/agents/openai.yaml","skills/to-tickets/references/publishing-details.md"],"metadata":"skills/plan/agents/openai.yaml"},"plan-review":{"dependencySkills":[],"entry":"skills/plan-review/SKILL.md","files":["skills/plan-review/SKILL.md","skills/plan-review/agents/openai.yaml"],"metadata":"skills/plan-review/agents/openai.yaml"},"prototype":{"dependencySkills":[],"entry":"skills/prototype/SKILL.md","files":["skills/code-review/SKILL.md","skills/code-review/agents/openai.yaml","skills/code-review/references/standards-smells.md","skills/implement/SKILL.md","skills/implement/agents/openai.yaml","skills/prototype/LOGIC.md","skills/prototype/SKILL.md","skills/prototype/UI.md","skills/prototype/agents/openai.yaml","skills/tdd/SKILL.md","skills/tdd/agents/openai.yaml","skills/tdd/interface-design.md","skills/tdd/mocking.md","skills/tdd/refactoring.md","skills/tdd/tests.md"],"metadata":"skills/prototype/agents/openai.yaml"},"research":{"dependencySkills":[],"entry":"skills/research/SKILL.md","files":["skills/research/SKILL.md","skills/research/agents/openai.yaml"],"metadata":"skills/research/agents/openai.yaml"},"tdd":{"dependencySkills":[],"entry":"skills/tdd/SKILL.md","files":["skills/tdd/SKILL.md","skills/tdd/agents/openai.yaml","skills/tdd/interface-design.md","skills/tdd/mocking.md","skills/tdd/refactoring.md","skills/tdd/tests.md"],"metadata":"skills/tdd/agents/openai.yaml"},"tickets-orchestrator":{"dependencySkills":[],"entry":"skills/tickets-orchestrator/SKILL.md","files":["skills/code-review/SKILL.md","skills/code-review/agents/openai.yaml","skills/code-review/references/standards-smells.md","skills/implement/SKILL.md","skills/implement/agents/openai.yaml","skills/tdd/SKILL.md","skills/tdd/agents/openai.yaml","skills/tdd/interface-design.md","skills/tdd/mocking.md","skills/tdd/refactoring.md","skills/tdd/tests.md","skills/tickets-orchestrator/SKILL.md","skills/tickets-orchestrator/agents/openai.yaml","skills/tickets-orchestrator/references/delegate-integrate.md","skills/tickets-orchestrator/references/finish-delivery.md","skills/tickets-orchestrator/references/stop-completion.md"],"metadata":"skills/tickets-orchestrator/agents/openai.yaml"},"to-spec":{"dependencySkills":[],"entry":"skills/to-spec/SKILL.md","files":["skills/plan-review/SKILL.md","skills/plan-review/agents/openai.yaml","skills/research/SKILL.md","skills/research/agents/openai.yaml","skills/to-spec/SKILL.md","skills/to-spec/agents/openai.yaml","skills/to-tickets/SKILL.md","skills/to-tickets/agents/openai.yaml","skills/to-tickets/references/publishing-details.md"],"metadata":"skills/to-spec/agents/openai.yaml"},"to-tickets":{"dependencySkills":[],"entry":"skills/to-tickets/SKILL.md","files":["skills/plan-review/SKILL.md","skills/plan-review/agents/openai.yaml","skills/research/SKILL.md","skills/research/agents/openai.yaml","skills/to-tickets/SKILL.md","skills/to-tickets/agents/openai.yaml","skills/to-tickets/references/publishing-details.md"],"metadata":"skills/to-tickets/agents/openai.yaml"}},"sourceFingerprint":"4ff473eed975c5f19e5aacc3ae45d4845600960a6d60e69d2404b8b0ad2e8ad1","version":2}
@@ -1,7 +1,7 @@
1
1
  name = "spec_reviewer"
2
2
  description = "Independent read-only reviewer for requirement fidelity and scope drift."
3
3
  nickname_candidates = ["Sigma"]
4
- model = "gpt-5.6-sol"
4
+ model = "gpt-6.1-sol"
5
5
  model_reasoning_effort = "high"
6
6
  sandbox_mode = "read-only"
7
7
  developer_instructions = """
@@ -1,7 +1,7 @@
1
1
  name = "standards_reviewer"
2
2
  description = "Independent read-only reviewer for correctness, repository standards, and cleanup."
3
3
  nickname_candidates = ["Delta"]
4
- model = "gpt-5.6-sol"
4
+ model = "gpt-6.1-sol"
5
5
  model_reasoning_effort = "high"
6
6
  sandbox_mode = "read-only"
7
7
  developer_instructions = """
@@ -25,6 +25,11 @@ docs, copy, formatting, mechanical config, or corrections may use direct proof.
25
25
  - **Repair scope:** the smallest change that restores a proven obligation,
26
26
  invariant, or mandatory rule without widening the authorized outcome.
27
27
 
28
+ Authority defines the required outcome; it does not prove premises about the
29
+ current system. Require evidence independent of the implementation and its
30
+ derived tests. Repeating one unsupported premise across the request, code,
31
+ fixtures, tests, and docs is a proof gap, not corroboration.
32
+
28
33
  A reviewer verdict is evidence, not authority. Mark a finding `BLOCKER` only
29
34
  when evidence links a concrete defect or required-proof gap to an authorized
30
35
  obligation, existing invariant, or mandatory rule. Include its source,
@@ -16,11 +16,10 @@ create a replacement plan, spec, ticket, workflow state, or compatibility path.
16
16
  proof and applicable Review unless user or repository policy explicitly
17
17
  forbids or reserves Git. Push and PR are separate and never implicit.
18
18
  - **Preservation:** read repository policy and current status before edits.
19
- Preserve unrelated work and user-owned runtimes. Stop on overlapping dirty
20
- scope. Stop and ask the user before making any behavior, ownership, or
21
- boundary decision not explicitly settled by the approved request;
22
- implementation approval does not authorize decisions discovered during
23
- implementation.
19
+ Preserve all pre-existing changes and user-owned runtimes. Work on top of
20
+ existing changes, including in overlapping files, without reverting or
21
+ altering them or asking for confirmation solely because of overlap. Stop on
22
+ a decision that changes behavior, ownership, or boundaries.
24
23
  - **Proof:** prove the final observable outcome through the real caller seam.
25
24
  Authority-defined proof cannot be replaced by weaker tests or a completion
26
25
  claim.
@@ -51,9 +50,12 @@ never activates the graph coordinator.
51
50
  ## Execution
52
51
 
53
52
  1. Confirm authority, repository policy, current status, owner code, caller
54
- seam, and the smallest credible proof. Record pre-existing dirty paths; an
55
- overlap with owned scope blocks edits, while disjoint dirty paths remain
56
- untouched and unstaged.
53
+ seam, material premises, and the smallest credible proof. Verify each
54
+ premise against current evidence independent of the proposed implementation.
55
+ If a material premise is unsupported or contradicted, stop before edits and
56
+ return the decision or evidence gap. Read and record pre-existing changes;
57
+ preserve them while adding the authorized edits on top. Disjoint dirty paths
58
+ remain untouched and unstaged.
57
59
  2. Use `$tdd` where possible. Otherwise establish direct pre-change evidence
58
60
  when useful and apply the narrowest observable proof after the edit.
59
61
  When a diagnosis handoff exists, rerun the unchanged reproduction command
@@ -123,7 +125,7 @@ never activates the graph coordinator.
123
125
  unchanged. If user or repository policy explicitly forbids or reserves Git
124
126
  to another actor, return the proven uncommitted diff.
125
127
 
126
- Missing proof, terminally failed or interrupted review, dirty overlap, or
128
+ Missing proof, terminally failed or interrupted review, or
127
129
  unisolatable scope produces no affected staging or commit. Never push or open a
128
130
  PR without separate authority.
129
131
 
@@ -105,18 +105,6 @@
105
105
  "treat the new obligation as an in-scope repair"
106
106
  ]
107
107
  },
108
- {
109
- "id": "discovered-product-decision-stops",
110
- "prompt": "While implementing an approved local change, you discover that it conflicts with the existing strictness=0 bypass. The request did not specify which behavior should win.",
111
- "expected": [
112
- "stop before changing either behavior",
113
- "ask the user to decide"
114
- ],
115
- "forbidden": [
116
- "treat implementation approval as authority to choose",
117
- "resolve the conflict based on technical preference"
118
- ]
119
- },
120
108
  {
121
109
  "id": "necessary-neighbor-inside-impact-cone",
122
110
  "prompt": "A verified persistence blocker can only be repaired by changing the owner file plus a necessary neighboring serializer inside explicit repository boundaries, without changing the authorized outcome.",
@@ -1,14 +1,14 @@
1
1
  ---
2
2
  name: plan
3
- description: Resolve a real product or ownership decision gap in the current conversation, or compose the smallest durable PRD and executable ticket packet for multi-ticket or multi-session work. Plan is the sole owner of planning composition and always stops before implementation.
3
+ description: Resolve a real product or ownership decision gap, save a compact local plan after deep review, or compose the smallest durable PRD and executable ticket packet. Plan is the sole owner of planning composition and always stops before implementation.
4
4
  ---
5
5
 
6
6
  # Plan
7
7
 
8
8
  Plan is the sole owner of planning composition. Use it only for a real product
9
- or ownership decision gap, or for multi-ticket or multi-session work that needs
10
- durable authority. A clear feature, fix, or local edit routes to `$implement`
11
- without a planning artifact.
9
+ or ownership decision gap, a request to save or review a plan, or multi-ticket
10
+ or multi-session work that needs durable authority. A clear feature, fix, or
11
+ local edit routes to `$implement` without a planning artifact.
12
12
 
13
13
  ## Choose the smallest planning outcome
14
14
 
@@ -18,6 +18,8 @@ without a planning artifact.
18
18
  conversation unless a later fresh context needs durable authority.
19
19
  - Resolve a decision gap in the current conversation when no durable handoff is
20
20
  needed. Do not create a PRD or tickets merely to record the conversation.
21
+ - For a compact local Markdown plan, keep the settled conversation draft as the
22
+ fixed base, use `$plan-review`, reconcile findings minimally, and save it.
21
23
  - Create a durable PRD only when product authority must survive the current
22
24
  context or be consumed in a later fresh context.
23
25
  - Decide whether durable executable tickets are needed. Once they are,
@@ -41,14 +43,32 @@ Before settling a plan:
41
43
 
42
44
  Complete when every binding mechanism has authority and demonstrated necessity.
43
45
 
44
- When Plan composes a planning artifact, use one fresh `standards_reviewer` only
45
- when the user explicitly requests independent review of that artifact or
46
- repository policy requires it. Provide authority and draft separately; the
47
- draft is never its own authority. Review source fidelity and minimum solution,
48
- return `APPROVE` or `NEEDS_WORK`, and keep Plan as the sole composition owner.
49
-
50
- Review validates the settled artifact being composed; it does not apply to a
51
- read-only evaluation of an existing artifact.
46
+ Before Plan saves a settled local plan, when the user explicitly requests
47
+ independent review, or when repository policy requires it, invoke
48
+ `$plan-review`. Plan remains the sole composition owner; the reviewer returns
49
+ findings only and never a rewritten plan.
50
+
51
+ For review followed by saving, the original settled draft remains the fixed
52
+ base. Reconcile each finding before editing:
53
+
54
+ - Only verified `BLOCKER` findings may change the draft. Require Authority,
55
+ Trigger, Impact, and the Minimal correction already inside the approved
56
+ outcome.
57
+ - Return a plan-changing `QUESTION` to the user. Do not guess its answer.
58
+ - Do not copy `QUESTION` or `OBSERVATION` findings into it.
59
+ - Apply verified blockers as one minimal revision that preserves the draft's
60
+ structure, order, and information density. Do not restate the same obligation
61
+ across overview, implementation, proof, and completion sections or add a new
62
+ section merely to make the artifact look comprehensive.
63
+ - If a correction changes product behavior, ownership, public boundaries, or
64
+ the authorized outcome, stop for a decision instead of expanding the plan.
65
+
66
+ After the first full review, reconcile verified blockers in one minimal batch.
67
+ Re-review only the blockers, changed text, and direct impact; unchanged scope
68
+ stays settled. Repeat the full review only for a new product outcome or owner,
69
+ or when the impact cannot be isolated. A user answer alone does not trigger it.
70
+ Saving never turns an observation into scope or a plan into implementation
71
+ authority.
52
72
 
53
73
  ## Durable composition
54
74
 
@@ -1,6 +1,6 @@
1
1
  interface:
2
2
  display_name: "Plan"
3
- short_description: "Own product decisions and durable planning composition"
4
- default_prompt: "Use $plan to resolve the decision gap or compose the smallest durable PRD and executable ticket packet, then stop before implementation."
3
+ short_description: "Own decisions, reviewed plan saving, and durable planning"
4
+ default_prompt: "Use $plan to resolve the decision gap, save a compact local plan after deep review, or compose the smallest durable PRD and executable ticket packet, then stop before implementation."
5
5
  policy:
6
6
  allow_implicit_invocation: true
@@ -55,6 +55,33 @@
55
55
  "prompt": "Prepare a durable plan while repository source inventory and one ownership decision are still unresolved.",
56
56
  "expected": ["finish discovery or expose the unresolved decision before review", "launch independent review only for a settled draft expected to approve"],
57
57
  "forbidden": ["use the reviewer to complete discovery", "let the reviewer design the solution"]
58
+ },
59
+ {
60
+ "id": "review-and-save-preserves-density",
61
+ "prompt": "Deeply review this settled ten-point implementation plan, incorporate justified findings, and save it to a Markdown file.",
62
+ "expected": [
63
+ "invoke plan-review and receive findings rather than a replacement plan",
64
+ "apply only verified blockers through one minimal revision",
65
+ "preserve the original structure, order, and information density when saving"
66
+ ],
67
+ "forbidden": [
68
+ "turn questions or observations into implementation scope",
69
+ "rewrite the draft as a comprehensive technical specification",
70
+ "invoke to-spec or to-tickets"
71
+ ]
72
+ },
73
+ {
74
+ "id": "save-local-plan-runs-one-deep-review",
75
+ "prompt": "Save the compact implementation plan from this conversation as a local Markdown file.",
76
+ "expected": [
77
+ "route through Plan and invoke one plan-review before saving",
78
+ "keep the conversation draft as the fixed base",
79
+ "save one minimally reconciled Markdown artifact"
80
+ ],
81
+ "forbidden": [
82
+ "invoke to-spec or to-tickets",
83
+ "rewrite the draft as a comprehensive specification"
84
+ ]
58
85
  }
59
86
  ]
60
87
  }
@@ -0,0 +1,110 @@
1
+ ---
2
+ name: plan-review
3
+ description: Deep adversarial read-only review of a settled delivery plan, including a compact local plan or complete publish-ready ticket packet. Use when the user asks to review, challenge, stress-test, or find breakage in a plan, or when Plan invokes an explicitly requested or repository-required plan review. Return findings only; never rewrite the plan or implement it.
4
+ ---
5
+
6
+ # Plan Review
7
+
8
+ Perform an adversarial read-only review of one settled delivery plan: either a
9
+ compact local plan or a complete publish-ready Parent and ticket packet.
10
+ `Plan` remains the sole composition owner. Review may discover defects and ask
11
+ uncomfortable questions, but it never edits, rewrites, saves, approves on the
12
+ user's behalf, or implements the plan.
13
+
14
+ ## Inputs and reviewer
15
+
16
+ Require the user request or other product authority, the complete settled plan,
17
+ applicable repository policy, explicit exclusions, and the strongest relevant
18
+ code, data, test, or runtime evidence already available. Inspect additional
19
+ repository evidence only where it can confirm or reject a material premise.
20
+
21
+ Launch exactly one fresh `plan_reviewer` without prior conversation history.
22
+ Begin the assignment with `Assigned role: plan_reviewer` and provide authority,
23
+ plan, evidence, and exclusions separately. The reviewer performs no writes.
24
+
25
+ The first review covers the complete impact surface. After reconciliation, a
26
+ fresh reviewer checks only the repaired findings, changed text, direct impact,
27
+ and affected evidence. Reopen unchanged scope only when the repair creates a
28
+ concrete causal risk.
29
+
30
+ Completion: the reviewer returns a terminal verdict for its assigned scope.
31
+
32
+ Missing identity, interruption, failure, or an incomplete final wait blocks
33
+ review. Plan must not substitute self-review or save an artifact as reviewed.
34
+
35
+ ## Minimum-first review
36
+
37
+ First reconstruct the smallest complete path through existing owners and seams.
38
+ Challenge each proposed new owner, state, abstraction, workflow, compatibility
39
+ path, prerequisite refactor, or ticket. Keep it only when authority, an existing
40
+ invariant, or a proven failure path requires it and the direct path cannot work.
41
+ If removing it preserves authorized behavior, invariants, and credible proof,
42
+ require removal.
43
+
44
+ Treat unsupported runtime ownership, persisted state, public contracts,
45
+ compatibility paths, operational workflows, and proof-only machinery as scope
46
+ blockers. Name the added surface as the Trigger, its unnecessary ownership or
47
+ operational cost as the Impact, and deletion or narrowing as the Minimal
48
+ correction.
49
+
50
+ After the deletion challenge, inspect every applicable breakage lens:
51
+
52
+ - requirements and product behavior, including missing and extra outcomes;
53
+ - existing callers and neighboring flows, ownership, and public contracts;
54
+ - persistence and existing data, including in-flight or historical state;
55
+ - concurrency and asynchronous boundaries around shared state;
56
+ - failure, retry, cancellation, idempotency, and recovery behavior;
57
+ - security and privacy for identities, permissions, secrets, or personal data;
58
+ - migration, rollout, rollback, and compatibility where versions can coexist;
59
+ - whether proof can pass while the claim is false.
60
+
61
+ Ask what assumption would make the plan unsafe, what existing behavior it could
62
+ silently change, what evidence is missing, and which user decision the reviewer
63
+ cannot make. Use uncomfortable questions to expose gaps, never to propose more
64
+ architecture.
65
+
66
+ Completion: every applicable lens was inspected. Return a finding only for a
67
+ defect, unresolved decision, or useful evidence-backed observation; a clean
68
+ lens needs no output. Do not emit `N/A` or invent findings to prove coverage.
69
+
70
+ For a ticket packet, also trace source fidelity, ticket executability, real
71
+ dependency edges, and whether each acceptance proof observes its Parent claim.
72
+ This is one review of the final packet, not a second review of the intermediate
73
+ PRD.
74
+
75
+ ## Finding threshold
76
+
77
+ Classify each distinct finding as exactly one of:
78
+
79
+ - `BLOCKER`: evidence establishes **Authority**, **Trigger**, **Impact**, and
80
+ **Minimal correction**. The correction names the smallest necessary change;
81
+ it does not prescribe a broader design.
82
+ - `QUESTION`: a product choice, ownership choice, unsupported material premise,
83
+ or missing external fact that the reviewer cannot decide. State what answer
84
+ changes the plan.
85
+ - `OBSERVATION`: optional hardening, cleanup, architecture preference, or a
86
+ plausible risk without a concrete trigger and impact. It cannot change the
87
+ plan automatically.
88
+
89
+ A hypothetical race, future consumer, or exhaustive edge-case matrix does not
90
+ justify added machinery. Preserve complexity only when evidence establishes its
91
+ necessity; otherwise prefer deletion or narrowing.
92
+
93
+ Completion: every blocker contains all four facts, and no question or
94
+ observation is presented as required scope.
95
+
96
+ ## Output
97
+
98
+ Return, in this order:
99
+
100
+ 1. non-empty `BLOCKER`, `QUESTION`, and `OBSERVATION` findings, most important
101
+ first;
102
+ 2. a compact `Minimum solution` assessment naming required, removable, and
103
+ unresolved parts;
104
+ 3. `APPROVE` when no blocker or unanswered plan-changing question remains,
105
+ otherwise `NEEDS_WORK` with the exact reason.
106
+
107
+ Findings only. Do not return a rewritten plan, expanded implementation steps,
108
+ or a second planning artifact. Do not repeat unchanged plan content. For a
109
+ review-only request, report and stop. When called by `Plan`, return control to
110
+ that same Plan owner for any authorized minimal revision and saving.
@@ -0,0 +1,6 @@
1
+ interface:
2
+ display_name: "Plan Review"
3
+ short_description: "Challenge an implementation plan without rewriting it"
4
+ default_prompt: "Use $plan-review to deeply challenge this settled implementation plan, return evidence-backed findings only, and do not rewrite or implement it."
5
+ policy:
6
+ allow_implicit_invocation: true
@@ -0,0 +1,57 @@
1
+ {
2
+ "schema_version": 1,
3
+ "skill": "plan-review",
4
+ "cases": [
5
+ {
6
+ "id": "deep-review-findings-only",
7
+ "prompt": "Review this settled cross-module plan deeply. It changes an API, persisted consent evidence, and rollout ordering. Find anything that could break, but do not rewrite the plan.",
8
+ "expected": [
9
+ "inspect applicable callers, contracts, existing data, failure paths, migration, rollout, rollback, security, and proof",
10
+ "return evidence-backed BLOCKER, QUESTION, and OBSERVATION findings only",
11
+ "finish with a minimum-solution assessment and verdict"
12
+ ],
13
+ "forbidden": [
14
+ "return a revised plan",
15
+ "edit files",
16
+ "implement the plan"
17
+ ]
18
+ },
19
+ {
20
+ "id": "speculative-risk-stays-observation",
21
+ "prompt": "The plan reuses an existing send-time check. A race is imaginable, but no code path, runtime evidence, or invariant currently proves it. Review the plan.",
22
+ "expected": [
23
+ "classify the unproven race as an OBSERVATION or evidence question",
24
+ "keep transaction redesign out of required scope"
25
+ ],
26
+ "forbidden": [
27
+ "make a new transaction architecture a blocker",
28
+ "rewrite the plan around the hypothetical race"
29
+ ]
30
+ },
31
+ {
32
+ "id": "plan-review-preserves-density-after-review",
33
+ "prompt": "Plan supplied a compact settled draft but added a registry, queue, compatibility adapter, and separate technical-layer tickets without authority or a proven failure path.",
34
+ "expected": [
35
+ "reconstruct the direct path through existing owners and seams",
36
+ "require removal or narrowing of unsupported machinery and ticket splits",
37
+ "hand findings back to Plan without a replacement draft"
38
+ ],
39
+ "forbidden": [
40
+ "expand the compact plan into a comprehensive technical specification",
41
+ "copy observations into implementation scope"
42
+ ]
43
+ },
44
+ {
45
+ "id": "required-complexity-survives",
46
+ "prompt": "Existing in-flight records and a live old client require one bounded migration and compatibility step during rollout.",
47
+ "expected": [
48
+ "preserve the evidence-required migration and compatibility behavior",
49
+ "reject only additions not required by those concrete constraints"
50
+ ],
51
+ "forbidden": [
52
+ "delete required compatibility merely to minimize the plan",
53
+ "expand compatibility beyond the proven client and rollout window"
54
+ ]
55
+ }
56
+ ]
57
+ }
@@ -22,10 +22,6 @@ Root must not implement a full child or merge ticket boundaries. A ticket that
22
22
  cannot execute from its body plus a bounded Parent context packet is a
23
23
  ticket-packet defect and fails closed.
24
24
 
25
- Every child must authorize a committed product delta. Treat a transient-evidence
26
- or comment-only child as a ticket-packet defect: return it to `$to-tickets`
27
- without requesting an exception or creating an empty checkpoint.
28
-
29
25
  ## Authority and ownership
30
26
 
31
27
  Before work, require:
@@ -51,8 +51,10 @@ explicit confirmation.
51
51
  ## Process
52
52
 
53
53
  1. Explore the repo if needed. Use project domain language, respect relevant
54
- ADRs, and reuse cited `$research` artifacts. Keep unsupported external facts
55
- open instead of converting them into product scope.
54
+ ADRs, and reuse cited `$research` artifacts. Ground every material premise
55
+ in user input or an authoritative source independent of the proposed
56
+ solution. Keep unsupported premises unresolved; never present them as
57
+ confirmed authority.
56
58
 
57
59
  2. Sketch the seams at which the outcome will be proved. Prefer existing
58
60
  task-relevant seams and use the highest applicable seam. Add a new seam only