nitm-ai-dev-toolkit 5.0.0 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/README.md +30 -10
  3. package/bin/cli.js +635 -88
  4. package/package.json +1 -1
  5. package/src/monorepo/.agents/skills/factory/SKILL.md +123 -57
  6. package/src/monorepo/{.claude/agents-snippets/factory-approver.md → .agents/skills/factory/roles/approve.md} +3 -3
  7. package/src/monorepo/{.claude/agents-snippets/factory-builder.md → .agents/skills/factory/roles/build.md} +3 -3
  8. package/src/monorepo/{.claude/agents-snippets/factory-reviewer-code.md → .agents/skills/factory/roles/review-code.md} +5 -5
  9. package/src/{repo/.claude/agents-snippets/factory-reviewer-security.md → monorepo/.agents/skills/factory/roles/review-security.md} +4 -4
  10. package/src/monorepo/{.claude/agents-snippets/factory-reviewer-ui.md → .agents/skills/factory/roles/review-ui.md} +6 -6
  11. package/src/monorepo/{.claude/agents-snippets/factory-reviewer-ux.md → .agents/skills/factory/roles/review-ux.md} +6 -6
  12. package/src/monorepo/{.claude/agents-snippets/factory-spec-writer.md → .agents/skills/factory/roles/spec.md} +2 -2
  13. package/src/monorepo/.claude/agents/implementer.agent.md +1 -1
  14. package/src/monorepo/.claude/agents/planner.agent.md +1 -1
  15. package/src/monorepo/.claude/agents/reviewer.agent.md +1 -1
  16. package/src/monorepo/.claude/commands/assign-tasks.md +1 -0
  17. package/src/monorepo/.claude/commands/factory.md +9 -9
  18. package/src/monorepo/.claude/commands/ponytail-review.md +1 -1
  19. package/src/monorepo/.claude/prompt-snippets/assign-tasks.md +13 -3
  20. package/src/monorepo/.claude/prompt-snippets/bootstrap-patch.md +32 -25
  21. package/src/monorepo/.claude/prompt-snippets/bootstrap-upgrade.md +13 -14
  22. package/src/monorepo/.claude/prompt-snippets/bootstrap.md +12 -12
  23. package/src/monorepo/.claude/prompt-snippets/factory.md +5 -5
  24. package/src/monorepo/.claude/prompt-snippets/implement-feature.md +3 -1
  25. package/src/monorepo/.claude/rules-snippets/subagent-workflow.md +2 -2
  26. package/src/monorepo/.cursor/commands/factory.md +9 -9
  27. package/src/monorepo/.github/prompts/factory.prompt.md +9 -9
  28. package/src/monorepo/.opencode/agents/admin-portal.md +1 -4
  29. package/src/monorepo/.opencode/agents/api-specialist.md +1 -4
  30. package/src/monorepo/.opencode/agents/backend-architect.md +1 -4
  31. package/src/monorepo/.opencode/agents/documenter.md +1 -4
  32. package/src/monorepo/.opencode/agents/feature-builder.md +1 -4
  33. package/src/monorepo/.opencode/agents/frontend-developer.md +1 -4
  34. package/src/monorepo/.opencode/agents/green.md +1 -4
  35. package/src/monorepo/.opencode/agents/implementer.md +1 -4
  36. package/src/monorepo/.opencode/agents/planner.md +1 -4
  37. package/src/monorepo/.opencode/agents/red.md +1 -4
  38. package/src/monorepo/.opencode/agents/refactor.md +1 -4
  39. package/src/monorepo/.opencode/agents/researcher.md +1 -4
  40. package/src/monorepo/.opencode/agents/reviewer.md +1 -4
  41. package/src/monorepo/.opencode/agents/tdd.md +1 -4
  42. package/src/monorepo/.opencode/commands/assign-tasks.md +1 -1
  43. package/src/monorepo/.opencode/commands/bootstrap-patch.md +1 -1
  44. package/src/monorepo/.opencode/commands/bootstrap-upgrade.md +1 -1
  45. package/src/monorepo/.opencode/commands/bootstrap.md +1 -1
  46. package/src/monorepo/.opencode/commands/commit-push.md +1 -1
  47. package/src/monorepo/.opencode/commands/constitution.md +1 -1
  48. package/src/monorepo/.opencode/commands/create-skill.md +1 -1
  49. package/src/monorepo/.opencode/commands/factory.md +9 -9
  50. package/src/monorepo/.opencode/commands/implement-feature.md +1 -1
  51. package/src/monorepo/.opencode/commands/implement-fixes.md +1 -1
  52. package/src/monorepo/.opencode/commands/implement.md +1 -1
  53. package/src/monorepo/.opencode/commands/plan.md +1 -1
  54. package/src/monorepo/.opencode/commands/playwright-test.md +1 -1
  55. package/src/monorepo/.opencode/commands/ponytail-audit.md +1 -1
  56. package/src/monorepo/.opencode/commands/ponytail-debt.md +1 -1
  57. package/src/monorepo/.opencode/commands/ponytail-gain.md +1 -1
  58. package/src/monorepo/.opencode/commands/ponytail-help.md +1 -1
  59. package/src/monorepo/.opencode/commands/ponytail-review.md +1 -1
  60. package/src/monorepo/.opencode/commands/ponytail.md +1 -1
  61. package/src/monorepo/.opencode/commands/release-notes.md +1 -1
  62. package/src/monorepo/.opencode/commands/review-pr.md +1 -1
  63. package/src/monorepo/.opencode/commands/review.md +1 -1
  64. package/src/monorepo/.opencode/commands/specify.md +1 -1
  65. package/src/monorepo/.opencode/commands/tasks.md +1 -1
  66. package/src/monorepo/.opencode/opencode.jsonc +1 -2
  67. package/src/monorepo/.opencode/rules/agent-conduct.md +1 -1
  68. package/src/monorepo/.opencode/rules/api-server.md +1 -1
  69. package/src/monorepo/.opencode/rules/coding-standards.md +1 -1
  70. package/src/monorepo/.opencode/rules/component-structure.md +1 -1
  71. package/src/monorepo/.opencode/rules/core-libraries.md +1 -1
  72. package/src/monorepo/.opencode/rules/environment-tooling.md +1 -1
  73. package/src/monorepo/.opencode/rules/logging-comments.md +1 -1
  74. package/src/monorepo/.opencode/rules/logging.md +1 -1
  75. package/src/monorepo/.opencode/rules/prisma-migrations.md +1 -1
  76. package/src/monorepo/.opencode/rules/project-context.md +1 -1
  77. package/src/monorepo/.opencode/rules/server-client-separation.md +1 -1
  78. package/src/monorepo/.opencode/rules/subagent-workflow.md +1 -1
  79. package/src/monorepo/.opencode/rules/testing-quality.md +1 -1
  80. package/src/monorepo/.opencode/rules/ui-accessibility.md +1 -1
  81. package/src/monorepo/.opencode/rules/version-control.md +1 -1
  82. package/src/monorepo/.opencode/rules/what-to-avoid.md +1 -1
  83. package/src/monorepo/AGENTS.md +4 -4
  84. package/src/monorepo/README.md +5 -5
  85. package/src/monorepo/factory/README.md +51 -24
  86. package/src/monorepo/factory/worktree-bootstrap.md +32 -0
  87. package/src/repo/.agents/skills/factory/SKILL.md +122 -56
  88. package/src/repo/{.claude/agents-snippets/factory-approver.md → .agents/skills/factory/roles/approve.md} +3 -3
  89. package/src/repo/{.claude/agents-snippets/factory-builder.md → .agents/skills/factory/roles/build.md} +3 -3
  90. package/src/repo/{.claude/agents-snippets/factory-reviewer-code.md → .agents/skills/factory/roles/review-code.md} +5 -5
  91. package/src/{monorepo/.claude/agents-snippets/factory-reviewer-security.md → repo/.agents/skills/factory/roles/review-security.md} +4 -4
  92. package/src/repo/{.claude/agents-snippets/factory-reviewer-ui.md → .agents/skills/factory/roles/review-ui.md} +6 -6
  93. package/src/repo/{.claude/agents-snippets/factory-reviewer-ux.md → .agents/skills/factory/roles/review-ux.md} +6 -6
  94. package/src/repo/{.claude/agents-snippets/factory-spec-writer.md → .agents/skills/factory/roles/spec.md} +2 -2
  95. package/src/repo/.claude/agents/implementer.agent.md +1 -1
  96. package/src/repo/.claude/agents/planner.agent.md +1 -1
  97. package/src/repo/.claude/agents/reviewer.agent.md +1 -1
  98. package/src/repo/.claude/commands/assign-tasks.md +1 -0
  99. package/src/repo/.claude/commands/factory.md +9 -9
  100. package/src/repo/.claude/commands/ponytail-review.md +1 -1
  101. package/src/repo/.claude/prompt-snippets/assign-tasks.md +13 -3
  102. package/src/repo/.claude/prompt-snippets/bootstrap-patch.md +32 -25
  103. package/src/repo/.claude/prompt-snippets/bootstrap-upgrade.md +17 -17
  104. package/src/repo/.claude/prompt-snippets/bootstrap.md +12 -12
  105. package/src/repo/.claude/prompt-snippets/factory.md +5 -5
  106. package/src/repo/.claude/prompt-snippets/implement-feature.md +3 -1
  107. package/src/repo/.claude/rules-snippets/subagent-workflow.md +2 -2
  108. package/src/repo/.cursor/commands/factory.md +9 -9
  109. package/src/repo/.github/prompts/factory.prompt.md +9 -9
  110. package/src/repo/.opencode/agents/admin-portal.md +1 -4
  111. package/src/repo/.opencode/agents/api-specialist.md +1 -4
  112. package/src/repo/.opencode/agents/backend-architect.md +1 -4
  113. package/src/repo/.opencode/agents/documenter.md +1 -4
  114. package/src/repo/.opencode/agents/feature-builder.md +1 -4
  115. package/src/repo/.opencode/agents/frontend-developer.md +1 -4
  116. package/src/repo/.opencode/agents/green.md +1 -4
  117. package/src/repo/.opencode/agents/implementer.md +1 -4
  118. package/src/repo/.opencode/agents/planner.md +1 -4
  119. package/src/repo/.opencode/agents/red.md +1 -4
  120. package/src/repo/.opencode/agents/refactor.md +1 -4
  121. package/src/repo/.opencode/agents/researcher.md +1 -4
  122. package/src/repo/.opencode/agents/reviewer.md +1 -4
  123. package/src/repo/.opencode/agents/tdd.md +1 -4
  124. package/src/repo/.opencode/commands/assign-tasks.md +1 -1
  125. package/src/repo/.opencode/commands/bootstrap-patch.md +1 -1
  126. package/src/repo/.opencode/commands/bootstrap-upgrade.md +1 -1
  127. package/src/repo/.opencode/commands/bootstrap.md +1 -1
  128. package/src/repo/.opencode/commands/commit-push.md +1 -1
  129. package/src/repo/.opencode/commands/constitution.md +1 -1
  130. package/src/repo/.opencode/commands/create-skill.md +1 -1
  131. package/src/repo/.opencode/commands/factory.md +9 -9
  132. package/src/repo/.opencode/commands/implement-feature.md +1 -1
  133. package/src/repo/.opencode/commands/implement-fixes.md +1 -1
  134. package/src/repo/.opencode/commands/implement.md +1 -1
  135. package/src/repo/.opencode/commands/plan.md +1 -1
  136. package/src/repo/.opencode/commands/playwright-test.md +1 -1
  137. package/src/repo/.opencode/commands/ponytail-audit.md +1 -1
  138. package/src/repo/.opencode/commands/ponytail-debt.md +1 -1
  139. package/src/repo/.opencode/commands/ponytail-gain.md +1 -1
  140. package/src/repo/.opencode/commands/ponytail-help.md +1 -1
  141. package/src/repo/.opencode/commands/ponytail-review.md +1 -1
  142. package/src/repo/.opencode/commands/ponytail.md +1 -1
  143. package/src/repo/.opencode/commands/release-notes.md +1 -1
  144. package/src/repo/.opencode/commands/review-pr.md +1 -1
  145. package/src/repo/.opencode/commands/review.md +1 -1
  146. package/src/repo/.opencode/commands/specify.md +1 -1
  147. package/src/repo/.opencode/commands/tasks.md +1 -1
  148. package/src/repo/.opencode/opencode.jsonc +1 -2
  149. package/src/repo/.opencode/rules/agent-conduct.md +1 -1
  150. package/src/repo/.opencode/rules/api-server.md +1 -1
  151. package/src/repo/.opencode/rules/coding-standards.md +1 -1
  152. package/src/repo/.opencode/rules/component-structure.md +1 -1
  153. package/src/repo/.opencode/rules/core-libraries.md +1 -1
  154. package/src/repo/.opencode/rules/environment-tooling.md +1 -1
  155. package/src/repo/.opencode/rules/logging-comments.md +1 -1
  156. package/src/repo/.opencode/rules/logging.md +1 -1
  157. package/src/repo/.opencode/rules/prisma-migrations.md +1 -1
  158. package/src/repo/.opencode/rules/project-context.md +1 -1
  159. package/src/repo/.opencode/rules/server-client-separation.md +1 -1
  160. package/src/repo/.opencode/rules/subagent-workflow.md +1 -1
  161. package/src/repo/.opencode/rules/testing-quality.md +1 -1
  162. package/src/repo/.opencode/rules/ui-accessibility.md +1 -1
  163. package/src/repo/.opencode/rules/version-control.md +1 -1
  164. package/src/repo/.opencode/rules/what-to-avoid.md +1 -1
  165. package/src/repo/AGENTS.md +4 -4
  166. package/src/repo/README.md +5 -5
  167. package/src/repo/factory/README.md +44 -23
  168. package/src/repo/factory/worktree-bootstrap.md +32 -0
  169. package/src/monorepo/.claude/agents/factory-approver.agent.md +0 -12
  170. package/src/monorepo/.claude/agents/factory-builder.agent.md +0 -12
  171. package/src/monorepo/.claude/agents/factory-reviewer-code.agent.md +0 -12
  172. package/src/monorepo/.claude/agents/factory-reviewer-security.agent.md +0 -12
  173. package/src/monorepo/.claude/agents/factory-reviewer-ui.agent.md +0 -12
  174. package/src/monorepo/.claude/agents/factory-reviewer-ux.agent.md +0 -12
  175. package/src/monorepo/.claude/agents/factory-spec-writer.agent.md +0 -12
  176. package/src/monorepo/.cursor/agents/factory-approver.agent.md +0 -11
  177. package/src/monorepo/.cursor/agents/factory-builder.agent.md +0 -11
  178. package/src/monorepo/.cursor/agents/factory-reviewer-code.agent.md +0 -11
  179. package/src/monorepo/.cursor/agents/factory-reviewer-security.agent.md +0 -11
  180. package/src/monorepo/.cursor/agents/factory-reviewer-ui.agent.md +0 -11
  181. package/src/monorepo/.cursor/agents/factory-reviewer-ux.agent.md +0 -11
  182. package/src/monorepo/.cursor/agents/factory-spec-writer.agent.md +0 -11
  183. package/src/monorepo/.github/agents/factory-approver.agent.md +0 -11
  184. package/src/monorepo/.github/agents/factory-builder.agent.md +0 -11
  185. package/src/monorepo/.github/agents/factory-reviewer-code.agent.md +0 -11
  186. package/src/monorepo/.github/agents/factory-reviewer-security.agent.md +0 -11
  187. package/src/monorepo/.github/agents/factory-reviewer-ui.agent.md +0 -11
  188. package/src/monorepo/.github/agents/factory-reviewer-ux.agent.md +0 -11
  189. package/src/monorepo/.github/agents/factory-spec-writer.agent.md +0 -11
  190. package/src/monorepo/.opencode/agents/factory-approver.md +0 -20
  191. package/src/monorepo/.opencode/agents/factory-builder.md +0 -20
  192. package/src/monorepo/.opencode/agents/factory-reviewer-code.md +0 -20
  193. package/src/monorepo/.opencode/agents/factory-reviewer-security.md +0 -20
  194. package/src/monorepo/.opencode/agents/factory-reviewer-ui.md +0 -20
  195. package/src/monorepo/.opencode/agents/factory-reviewer-ux.md +0 -20
  196. package/src/monorepo/.opencode/agents/factory-spec-writer.md +0 -20
  197. package/src/repo/.claude/agents/factory-approver.agent.md +0 -12
  198. package/src/repo/.claude/agents/factory-builder.agent.md +0 -12
  199. package/src/repo/.claude/agents/factory-reviewer-code.agent.md +0 -12
  200. package/src/repo/.claude/agents/factory-reviewer-security.agent.md +0 -12
  201. package/src/repo/.claude/agents/factory-reviewer-ui.agent.md +0 -12
  202. package/src/repo/.claude/agents/factory-reviewer-ux.agent.md +0 -12
  203. package/src/repo/.claude/agents/factory-spec-writer.agent.md +0 -12
  204. package/src/repo/.cursor/agents/factory-approver.agent.md +0 -11
  205. package/src/repo/.cursor/agents/factory-builder.agent.md +0 -11
  206. package/src/repo/.cursor/agents/factory-reviewer-code.agent.md +0 -11
  207. package/src/repo/.cursor/agents/factory-reviewer-security.agent.md +0 -11
  208. package/src/repo/.cursor/agents/factory-reviewer-ui.agent.md +0 -11
  209. package/src/repo/.cursor/agents/factory-reviewer-ux.agent.md +0 -11
  210. package/src/repo/.cursor/agents/factory-spec-writer.agent.md +0 -11
  211. package/src/repo/.github/agents/factory-approver.agent.md +0 -11
  212. package/src/repo/.github/agents/factory-builder.agent.md +0 -11
  213. package/src/repo/.github/agents/factory-reviewer-code.agent.md +0 -11
  214. package/src/repo/.github/agents/factory-reviewer-security.agent.md +0 -11
  215. package/src/repo/.github/agents/factory-reviewer-ui.agent.md +0 -11
  216. package/src/repo/.github/agents/factory-reviewer-ux.agent.md +0 -11
  217. package/src/repo/.github/agents/factory-spec-writer.agent.md +0 -11
  218. package/src/repo/.opencode/agents/factory-approver.md +0 -20
  219. package/src/repo/.opencode/agents/factory-builder.md +0 -20
  220. package/src/repo/.opencode/agents/factory-reviewer-code.md +0 -20
  221. package/src/repo/.opencode/agents/factory-reviewer-security.md +0 -20
  222. package/src/repo/.opencode/agents/factory-reviewer-ui.md +0 -20
  223. package/src/repo/.opencode/agents/factory-reviewer-ux.md +0 -20
  224. package/src/repo/.opencode/agents/factory-spec-writer.md +0 -20
@@ -1,6 +1,6 @@
1
1
  # Factory Reviewer: Security
2
2
 
3
- You audit one round of a job's branch for security problems. You are the `security` lens of the [factory](../../.agents/skills/factory/SKILL.md) pipeline. You run in a fresh context, so judge the diff itself, not the builder's story. You work from the paths block the orchestrator gives you.
3
+ You audit one round of a job's branch for security problems. You are the `security` lens of the [factory](../SKILL.md) pipeline. You run in a fresh context, so judge the diff itself, not the builder's story. You work from the paths block the orchestrator gives you.
4
4
 
5
5
  ## Inputs
6
6
 
@@ -11,7 +11,7 @@ You audit one round of a job's branch for security problems. You are the `securi
11
11
 
12
12
  ## Method
13
13
 
14
- Apply the [security reviewer](../../.agents/skills/security-reviewer/SKILL.md) skill to the diff. Use its OWASP Top 10 checklist and its dispatch template's "what to check" guidance. Limit the audit to what the diff changes or exposes, not the whole codebase.
14
+ Apply the [security reviewer](../../security-reviewer/SKILL.md) skill to the diff. Use its OWASP Top 10 checklist and its dispatch template's "what to check" guidance. Limit the audit to what the diff changes or exposes, not the whole codebase.
15
15
 
16
16
  Pay particular attention to: input validation at trust boundaries, injection (SQL, command, template, XSS), authentication and authorization checks on new routes, secrets or tokens in code or logs, data exposure in responses and logs, and file handling.
17
17
 
@@ -19,7 +19,7 @@ Do not run exploits against any real service. A local test that demonstrates a f
19
19
 
20
20
  ## Output
21
21
 
22
- You write exactly one file: `<job folder>/round-<N>/review-security.md`. Use this skeleton:
22
+ You do not write files. Your final reply is the report, and the orchestrator saves it as `<job folder>/round-<N>/review-security.md`, so start the reply with the verdict line. Use this skeleton:
23
23
 
24
24
  ```markdown
25
25
  VERDICT: PASS
@@ -45,4 +45,4 @@ The first line must be exactly `VERDICT: PASS` or `VERDICT: CHANGES`.
45
45
 
46
46
  - `CHANGES` needs at least one blocking item, and every blocking item names a concrete exploit path. Theoretical concerns go under non-blocking notes.
47
47
  - A PASS means you checked the diff and found no exploitable issue. It does not mean the code is perfect. Say what you checked.
48
- - Do not edit code or any file other than your review.
48
+ - Do not edit code or any file.
@@ -1,6 +1,6 @@
1
1
  # Factory Reviewer: UI
2
2
 
3
- You look at a job's feature running in the build location and review the visual design: consistency with the existing design system, spacing, typography, contrast, and responsive layout. You are the `ui` lens of the [factory](../../.agents/skills/factory/SKILL.md) pipeline. You work from the paths block the orchestrator gives you.
3
+ You look at a job's feature running in the build location and review the visual design: consistency with the existing design system, spacing, typography, contrast, and responsive layout. You are the `ui` lens of the [factory](../SKILL.md) pipeline. You work from the paths block the orchestrator gives you.
4
4
 
5
5
  ## Safety rules (absolute)
6
6
 
@@ -20,18 +20,18 @@ You look at a job's feature running in the build location and review the visual
20
20
 
21
21
  ## Method
22
22
 
23
- 1. If the feature has no visual surface, write a PASS with the note "No visual change in spec". Stop there.
24
- 2. Start the affected app's dev server from the build location on the ui port, using the filtered dev command and the port flag or env var that `AGENTS.md` documents. If `AGENTS.md` documents none, do not guess and do not use `PORT`. Skip the browser checks, record `Not verified: dev server port` as a blocking item, and write the review. Stop the server if you started one.
23
+ 1. If the feature has no visual surface, report a PASS with the note "No visual change in spec". Stop there.
24
+ 2. Start the affected app's dev server from the build location on the ui port, using the filtered dev command and the port flag or env var that `AGENTS.md` documents. If `AGENTS.md` documents none, do not guess and do not use `PORT`. Skip the browser checks, record `Not verified: dev server port` as a blocking item, and finish the review. Stop the server if you started one.
25
25
  3. Open each affected view with a browser tool. This lens needs a browser tool available to the harness (for example a browser MCP server). Without one, nothing is verified. Check:
26
26
  - **Consistency:** the same components, tokens, and patterns the rest of the app uses. A new one-off style is a blocking item.
27
27
  - **Spacing and typography:** follows the project's scale. No arbitrary values where a token exists.
28
- - **Contrast:** text and interactive elements meet WCAG AA contrast. Follow [UI accessibility](../rules-snippets/ui-accessibility.md).
28
+ - **Contrast:** text and interactive elements meet WCAG AA contrast. Follow [UI accessibility](../../../../.claude/rules-snippets/ui-accessibility.md).
29
29
  - **Responsive:** the layout holds at a narrow and a wide viewport. No overflow, no clipped controls.
30
30
  4. If the browser tooling is not available, or a view cannot be reached safely, say so for each item. Do not guess what the page looks like.
31
31
 
32
32
  ## Output
33
33
 
34
- You write exactly one file: `<job folder>/round-<N>/review-ui.md`. Use this skeleton:
34
+ You do not write files. Your final reply is the report, and the orchestrator saves it as `<job folder>/round-<N>/review-ui.md`, so start the reply with the verdict line. Use this skeleton:
35
35
 
36
36
  ```markdown
37
37
  VERDICT: PASS
@@ -61,4 +61,4 @@ The first line must be exactly `VERDICT: PASS` or `VERDICT: CHANGES`.
61
61
  - `CHANGES` needs at least one blocking item that is specific and actionable.
62
62
  - If something the spec requires was **not verified**, the verdict is `CHANGES` with a blocking item titled `Not verified: <what>`. Do not give a PASS you did not earn. The orchestrator sends the job straight to `needs-human` with no repair, because a builder cannot fix missing verification.
63
63
  - Taste goes under non-blocking notes.
64
- - Do not edit code or any file other than your review.
64
+ - Do not edit code or any file.
@@ -1,6 +1,6 @@
1
1
  # Factory Reviewer: UX
2
2
 
3
- You look at a job's feature running in the build location and review the user experience: flows, states, copy, accessibility, and mobile. You are the `ux` lens of the [factory](../../.agents/skills/factory/SKILL.md) pipeline. You work from the paths block the orchestrator gives you.
3
+ You look at a job's feature running in the build location and review the user experience: flows, states, copy, accessibility, and mobile. You are the `ux` lens of the [factory](../SKILL.md) pipeline. You work from the paths block the orchestrator gives you.
4
4
 
5
5
  ## Safety rules (absolute)
6
6
 
@@ -19,19 +19,19 @@ You look at a job's feature running in the build location and review the user ex
19
19
 
20
20
  ## Method
21
21
 
22
- 1. If the feature has no user-facing surface, write a PASS with the note "No user-facing change in spec". Stop there.
23
- 2. Start the affected app's dev server from the build location on the ux port, using the filtered dev command and the port flag or env var that `AGENTS.md` documents. If `AGENTS.md` documents none, do not guess and do not use `PORT`. Skip the browser checks, record `Not verified: dev server port` as a blocking item, and write the review. Stop the server if you started one.
22
+ 1. If the feature has no user-facing surface, report a PASS with the note "No user-facing change in spec". Stop there.
23
+ 2. Start the affected app's dev server from the build location on the ux port, using the filtered dev command and the port flag or env var that `AGENTS.md` documents. If `AGENTS.md` documents none, do not guess and do not use `PORT`. Skip the browser checks, record `Not verified: dev server port` as a blocking item, and finish the review. Stop the server if you started one.
24
24
  3. Open each affected page or flow with a browser tool. This lens needs a browser tool available to the harness (for example a browser MCP server). Without one, nothing is verified. Check:
25
25
  - **Flows:** each user flow in `spec.md` completes, read-only or on seeded data.
26
26
  - **States:** empty, loading, and error states, not only the happy path.
27
27
  - **Copy:** clear, consistent with the rest of the app, no placeholder text.
28
- - **Accessibility:** keyboard reachable, labels present, focus visible. Follow [UI accessibility](../rules-snippets/ui-accessibility.md).
28
+ - **Accessibility:** keyboard reachable, labels present, focus visible. Follow [UI accessibility](../../../../.claude/rules-snippets/ui-accessibility.md).
29
29
  - **Mobile:** the flow works at a narrow viewport.
30
30
  4. If the browser tooling is not available, or a flow cannot be reached safely, say so for each item. Do not guess what the page looks like.
31
31
 
32
32
  ## Output
33
33
 
34
- You write exactly one file: `<job folder>/round-<N>/review-ux.md`. Use this skeleton:
34
+ You do not write files. Your final reply is the report, and the orchestrator saves it as `<job folder>/round-<N>/review-ux.md`, so start the reply with the verdict line. Use this skeleton:
35
35
 
36
36
  ```markdown
37
37
  VERDICT: PASS
@@ -61,4 +61,4 @@ The first line must be exactly `VERDICT: PASS` or `VERDICT: CHANGES`.
61
61
  - `CHANGES` needs at least one blocking item that is specific and actionable.
62
62
  - If something the spec requires was **not verified**, the verdict is `CHANGES` with a blocking item titled `Not verified: <what>`. Do not give a PASS you did not earn. The orchestrator sends the job straight to `needs-human` with no repair, because a builder cannot fix missing verification.
63
63
  - Taste goes under non-blocking notes.
64
- - Do not edit code or any file other than your review.
64
+ - Do not edit code or any file.
@@ -1,6 +1,6 @@
1
1
  # Factory Spec Writer
2
2
 
3
- You turn a feature request into a testable spec, and then into a plan. You are one agent in the [factory](../../.agents/skills/factory/SKILL.md) pipeline. You work from the paths block the orchestrator gives you. The task line names your mode: **spec** or **plan**.
3
+ You turn a feature request into a testable spec, and then into a plan. You are one agent in the [factory](../SKILL.md) pipeline. You work from the paths block the orchestrator gives you. The task line names your mode: **spec** or **plan**.
4
4
 
5
5
  ## Inputs
6
6
 
@@ -10,7 +10,7 @@ Read these, in this order:
10
10
  2. The project's `AGENTS.md` (conventions and commands).
11
11
  3. The existing code the feature touches. Inspect it. Do not write a spec or plan from the request alone.
12
12
  4. The `AGENTS.md` of each affected app or package, for its patterns and commands.
13
- 5. [Feature spec template](../../templates/feature-spec.template.md) for the section structure.
13
+ 5. [Feature spec template](../../../../templates/feature-spec.template.md) for the section structure.
14
14
  6. Any existing `spec.md`, `plan.md`, and `tasks.md` in the feature folder, and the change note the orchestrator gave you (`spec-<k>.md` in spec mode, `plan-<k>.md` in plan mode). Update them, do not start over blind.
15
15
  7. `intake.md` in the job folder, if the paths block lists it: the operator's answers to the intake questions. They clarify the request and win over the request text where they conflict.
16
16
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: implementer
3
3
  description: "Implement code changes for a specific task. Follow TDD, write tests alongside code, and self-review before reporting completion."
4
- tools: ["Read", "Grep", "Write", "Edit", "Bash(*)"]
4
+ tools: ["Read", "Grep", "Glob", "Write", "Edit", "Bash(*)"]
5
5
  user-invocable: false
6
6
  ---
7
7
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: planner
3
3
  description: "Break down feature requests into implementation tasks. Read specifications, analyze codebase patterns, and produce structured plans with dependencies."
4
- tools: ["Read", "Grep", "Write", "Bash(*)"]
4
+ tools: ["Read", "Grep", "Glob", "Write", "Bash(*)"]
5
5
  user-invocable: false
6
6
  ---
7
7
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: reviewer
3
3
  description: "Review code changes for correctness, code quality, security, and adherence to project patterns. Provide actionable feedback with specific file and line references. Use immediately after writing or modifying code, or as a quality gate in orchestrated workflows."
4
- tools: ["Read", "Grep", "Bash(*)"]
4
+ tools: ["Read", "Grep", "Glob", "Bash(*)"]
5
5
  ---
6
6
 
7
7
  # Reviewer Agent
@@ -7,6 +7,7 @@ argument-hint: "requirements or task file path"
7
7
  # Create Tickets from Requirements
8
8
 
9
9
  ## Agent Dispatch
10
+
10
11
  > **Recommended agent:** `fixer`
11
12
  > Task assignment and execution
12
13
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: "Run an opt-in factory job: intake, spec and plan gates, build in a worktree or in place, reviews, approval, local merge"
2
+ description: "Run an opt-in factory job: intake, spec and plan gates, build in a worktree or in place, reviews, approval, merge (local, or a merge request on the forge)"
3
3
  allowed-tools: "Read, Grep, Glob, Write, Edit, Bash(*), agent"
4
4
  argument-hint: "[--in-place] <feature request> | start [--in-place] <request | KEY | slug | job-id> | approve <job-id> | rework <job-id> <note> | abandon <job-id> | status [--all] | watch [--all] | archive [--all] [--dry-run] | prune [--all] [--abandoned] [--dry-run]"
5
5
  ---
@@ -11,14 +11,14 @@ argument-hint: "[--in-place] <feature request> | start [--in-place] <request | K
11
11
 
12
12
  | Agent | When to use |
13
13
  |-------|-------------|
14
- | `factory-spec-writer` | Spec stage (`spec` mode) writes `spec.md`; plan stage (`plan` mode) writes `plan.md` and `tasks.md` |
15
- | `factory-builder` | Build, repair, and rework: writes `build.md` in the job folder; its code goes in the build location |
16
- | `factory-reviewer-code` | Review round, `code` lens |
17
- | `factory-reviewer-security` | Review round, `security` lens |
18
- | `factory-reviewer-ux` | Review round, `ux` lens (opt-in) |
19
- | `factory-reviewer-ui` | Review round, `ui` lens (opt-in) |
20
- | `factory-approver` | Approval gate: writes `decision.md` |
14
+ | `planner` | Spec writer. Spec stage (`spec` mode) writes `spec.md`; plan stage (`plan` mode) writes `plan.md` and `tasks.md`. Brief: `.agents/skills/factory/roles/spec.md` |
15
+ | `implementer` | Builder. Build, repair, and rework: writes `build.md` in the job folder; its code goes in the build location. Brief: `.agents/skills/factory/roles/build.md` |
16
+ | `reviewer` | Code reviewer. Review round, `code` lens. Brief: `.agents/skills/factory/roles/review-code.md` |
17
+ | `reviewer` | Security reviewer, fresh context. Review round, `security` lens. Brief: `.agents/skills/factory/roles/review-security.md` |
18
+ | `reviewer` | UX reviewer. Review round, `ux` lens (opt-in). Brief: `.agents/skills/factory/roles/review-ux.md` |
19
+ | `reviewer` | UI reviewer. Review round, `ui` lens (opt-in). Brief: `.agents/skills/factory/roles/review-ui.md` |
20
+ | `reviewer` | Approver, fresh context. Approval gate: returns the decision, which the orchestrator saves as `decision.md`. Brief: `.agents/skills/factory/roles/approve.md` |
21
21
 
22
- Dispatch each agent by its kebab-case name, as in the first column. Copilot may show a display name; pick the agent with that name.
22
+ Dispatch each native agent by the name in the first column, and tell it to read the brief in the last column first. Reviewers and the approver return their report, and the orchestrator saves it. Copilot may show a display name; pick the agent with that name.
23
23
 
24
24
  Follow the prompt defined in [.claude/prompt-snippets/factory.md](../prompt-snippets/factory.md).
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  description: Review changes for over-engineering — find what can be deleted
3
- allowed-tools: "Read, Grep"
3
+ allowed-tools: "Read, Grep, Bash(git diff:*), Bash(git status:*), Bash(git show:*)"
4
4
  argument-hint: "no arguments required"
5
5
  ---
6
6
 
@@ -48,11 +48,17 @@ When interacting with {{ISSUE_TRACKER}}, use MCP tools first (see the `issue-tra
48
48
  1. **Parse Document**:
49
49
  - Load the specified document (.md, .txt, .json)
50
50
  - Detect document structure (headers, lists, task categories)
51
- - For `tasks.md`: each `- [ ]` line is one task. The text after the ID is the summary. A trailing ` — <KEY>` means a ticket already exists, so skip that line. Sub-bullets, if any, are subtasks
51
+ - For `tasks.md`, detect the format first:
52
+ - **Slim** (has `- [ ] T<n>` or `- [x] T<n>` lines): each such line is one task. The text after the ID is the summary. Sub-bullets, if any, are subtasks. A line already has a ticket only when it ends with ` — {{PROJECT_KEY}}-<digits>`; skip it then. Any other ` — ` suffix (e.g. ` — depends on T3`) is a note, not a key: keep the line
53
+ - **Legacy** (no slim lines; has `#{2,4} T<n>` headings, e.g. `## T01`, `### T001`): each `T<n>` heading is one task. Checkboxes beneath it are subtasks: put them in the ticket description, never as separate tickets. Skip a heading that contains `{{PROJECT_KEY}}-<digits>` anywhere (e.g. `## T001 (PROJ-256): …`); it already has a ticket
54
+ - **Mixed** (slim lines and legacy headings): treat as slim and say in the report that the headings were ignored
55
+ - **Neither**: treat as a requirement document
56
+ - Keys are always `{{PROJECT_KEY}}-<digits>`. Nothing else counts as a key
52
57
  - For requirement documents: extract task hierarchy: Epic → Story → Task → Subtask
53
58
 
54
59
  2. **Consolidate & Classify** (do this BEFORE creating tickets):
55
- - **A `tasks.md` from `/tasks` is pre-consolidated**: one line = one ticket. Only merge lines that are clearly one deliverable; do not re-split them
60
+ - **A slim `tasks.md` from `/tasks` is pre-consolidated**: one line = one ticket. Only merge lines that are clearly one deliverable; do not re-split them
61
+ - **A legacy `tasks.md` is not pre-consolidated**: one heading = one ticket. Never merge or re-split headings. If the count exceeds the Maximum Ticket Counts, stop and ask before creating anything
56
62
  - **Group related items** by component, feature area, or deliverable
57
63
  - **Merge small tasks** (< 2 SP) into related larger tasks
58
64
  - **Eliminate redundant subtasks** that are obvious steps
@@ -77,10 +83,12 @@ When interacting with {{ISSUE_TRACKER}}, use MCP tools first (see the `issue-tra
77
83
  - Set assignees, labels, and story points
78
84
  - Create dependency links where noted
79
85
  - Ticket description: the task summary plus the acceptance criteria from `spec.md` for that deliverable
80
- - Write each ticket key back to its `tasks.md` line after the em dash (`- [ ] T1 Schema + migration — PROJ-124`)
86
+ - **Slim `tasks.md`**: append ` — <KEY>` at the end of the task's line, after any notes (`- [ ] T1 Schema + migration — PROJ-124`)
87
+ - **Legacy `tasks.md`**: never write back. Record heading → ticket key in the report instead
81
88
 
82
89
  6. **Generate Report**:
83
90
  - List all created tickets with IDs
91
+ - **Legacy `tasks.md`**: heading → ticket key mapping, plus headings skipped because they already had a key
84
92
  - Show hierarchy and relationships
85
93
  - Report total story points
86
94
  - **Show consolidation summary**: "Merged X items into Y tickets"
@@ -149,6 +157,8 @@ Creating tickets...
149
157
 
150
158
  ## Document Format Support
151
159
 
160
+ **Legacy `tasks.md` worked example**: a file with 45 `## T<n>` / `### T<n>` headings and 266 checkboxes plans **45 tickets**, not 266. Each ticket's description lists that heading's checkboxes. If 2 headings already carry a `{{PROJECT_KEY}}-<digits>` key, plan 43. Do not modify the file; report the heading → key mapping.
161
+
152
162
  **Markdown Headers**:
153
163
 
154
164
  ```markdown
@@ -1,10 +1,10 @@
1
- You are helping to patch AI instructions by comparing against supported toolkit v4.x templates from the ai-assisted-dev-toolkit repository's `v4.x` branch and merging updates into this project.
1
+ You are helping to patch AI instructions by comparing against the published toolkit templates for the target version (4.0.0 or later) from npm or the ai-assisted-dev-toolkit repository's `<version>` git tag, and merging updates into this project.
2
2
 
3
3
  ## OpenCode version preflight (before any changes)
4
4
 
5
5
  - Confirm OpenCode use from actual session/runtime evidence or ask the user; directory presence alone is not proof. If only other harnesses are used, skip this preflight and all OpenCode steps.
6
- - For confirmed OpenCode use, run `opencode --version` before any project writes. Trim output and parse numeric major/minor/patch components, accepting an optional leading `v`; toolkit 4.x requires `major >= 2`.
7
- - If OpenCode V1 (`major < 2`) is detected, **STOP** before customizing/migrating OpenCode files or writing `.toolkit-version` as `4.0.0`. Ask the user to upgrade OpenCode to V2 or remain on toolkit 3.x.
6
+ - For confirmed OpenCode use, run `opencode --version` before any project writes. Trim output and parse numeric major/minor/patch components, accepting an optional leading `v`; toolkit 4.0.0 and later require `major >= 2`.
7
+ - If OpenCode V1 (`major < 2`) is detected, **STOP** before customizing/migrating OpenCode files or writing `.toolkit-version` as 4.0.0 or later. Ask the user to upgrade OpenCode to V2 or remain on toolkit 3.x.
8
8
  - If the CLI is missing, fails, or output is unparseable, **STOP OpenCode steps** and leave the version marker unchanged; ask the user to confirm/install a supported OpenCode version, then rerun this check. Never assume V2.
9
9
  - If oh-my-opencode-slim >=3.0.0 is used or planned, require OpenCode >=2.0.7 (compare version components numerically); otherwise **STOP** before changes and ask to upgrade. Proceed only after this gate passes.
10
10
 
@@ -23,6 +23,8 @@ You are helping to patch AI instructions by comparing against supported toolkit
23
23
  /bootstrap-patch --category commands,prompts
24
24
  ```
25
25
 
26
+ The CLI runs the same patch flow without an AI session: `npx nitm-ai-dev-toolkit patch --dry-run` previews changes, `--only <categories>` and `--exclude <categories>` narrow the scope, and `npx nitm-ai-dev-toolkit upgrade@<version>` (or `--version <version>`) pins the target version. Pinning a version does not skip the gates in Step 1.
27
+
26
28
  ## Process
27
29
 
28
30
  **Codex invocation and scope:** `/bootstrap-patch` is not a native Codex command. Ask Codex to read and follow this snippet as a task document. Identify the actual harness from session/runtime evidence or ask; scaffold directories do not prove use. Codex targets root/nested `AGENTS.md`, `.agents/skills/`, and optional `.codex/config.toml`. Include `.github/instructions/` and `.claude/rules-snippets/` solely as AGENTS-linked standards and their wrapper sources for Codex-scoped installs, not automatically loaded rules or evidence of Copilot/Claude use. Only include other harness command, agent, and config categories when those harnesses are confirmed in use.
@@ -31,33 +33,38 @@ You are helping to patch AI instructions by comparing against supported toolkit
31
33
 
32
34
  1. **Fetch Latest Templates**:
33
35
 
34
- Fetch only the supported `v4.x` source branch:
36
+ **Resolve versions before any download.**
37
+ - **Installed version**: read `.toolkit-version` in the project root. If it is missing or unparseable, **STOP** and ask the user to confirm the installed version; absence alone does not prove a pre-3.0 installation.
38
+ - **Target version**: use the version the user pinned (`upgrade@<version>` or `--version <version>` in the CLI, or the version given to this task), validated as SemVer `X.Y.Z`. Otherwise use the latest published version from `npm view nitm-ai-dev-toolkit version`. If npm is unreachable or the output is unparseable, **STOP** and ask. Never guess a version.
39
+
40
+ **Fetch the matching release.** Try Option A first and use Option B only if `npm pack` fails (for example, the version is not on npm). Each download goes into a new, empty directory:
35
41
 
36
42
  ```bash
37
43
  set -e
38
- TOOLKIT_TEMP=$(mktemp -d)
39
- git clone --depth 1 --branch v4.x https://github.com/ninjasitm/ai-assisted-dev-toolkit.git "$TOOLKIT_TEMP"
44
+ TOOLKIT_TEMP=$(mktemp -d) # removed in step 6
45
+ mkdir "$TOOLKIT_TEMP/pack" "$TOOLKIT_TEMP/unpacked"
46
+ # Option A (preferred): the published package, the same artifact users install
47
+ if (cd "$TOOLKIT_TEMP/pack" && npm pack "nitm-ai-dev-toolkit@<version>"); then
48
+ tar -xzf "$TOOLKIT_TEMP/pack/nitm-ai-dev-toolkit-<version>.tgz" -C "$TOOLKIT_TEMP/unpacked"
49
+ SOURCE_ROOT="$TOOLKIT_TEMP/unpacked/package"
50
+ else
51
+ # Option B (fallback): the git tag for that release (tags have no "v" prefix)
52
+ git clone --depth 1 --branch "<version>" https://github.com/ninjasitm/ai-assisted-dev-toolkit.git "$TOOLKIT_TEMP/git"
53
+ SOURCE_ROOT="$TOOLKIT_TEMP/git"
54
+ fi
40
55
  ```
41
56
 
42
- **Source availability gate:** If the clone fails or `v4.x` is unavailable (for example, not yet published), **STOP** before diff/apply/version marking. Do not fall back to the default branch or V3, and do not push/publish a branch to unblock this task; ask for an approved available v4.x source.
57
+ **Source availability gate:** If both `npm pack` and the tag clone fail (the version is unpublished and the tag is missing), **STOP** before diff/apply/version marking. Do not fall back to the default branch, another version, or an older major, and do not publish anything to unblock this task; ask for an available source version.
43
58
 
44
- Determine the correct source path based on project structure:
45
- - **Single repo**: Use `$TOOLKIT_TEMP/src/repo/`
46
- - **Monorepo**: Use `$TOOLKIT_TEMP/src/monorepo/`
59
+ Determine the correct source path based on project structure, under `$SOURCE_ROOT`:
60
+ - **Single repo**: `$SOURCE_ROOT/src/repo/`
61
+ - **Monorepo**: `$SOURCE_ROOT/src/monorepo/`
47
62
 
48
63
  Detection heuristic:
49
64
  - If `apps/` and `packages/` directories exist at root → monorepo
50
65
  - Otherwise → single repo
51
66
 
52
- **Detect Toolkit Version:**
53
-
54
- Check for a `.toolkit-version` file in the project root:
55
- - If exists: Read the version string (e.g., `2.0.10`, `3.0.0`)
56
- - If missing: Verify the installed version or legacy state with the user; absence alone does not prove a pre-3.0 installation
57
-
58
- Read the toolkit's version from the `version` field in `$TOOLKIT_TEMP/package.json` to compare; `.toolkit-version` tracks the target project's installed version.
59
-
60
- **Source version guard (before diff/apply/version marking):** Parse source/target versions as SemVer and compare them (major/minor/patch numerically). If the fetched package's major is not `4`, or its version is older than the target `.toolkit-version`, **STOP** without diffing, applying changes, or updating the marker. Unknown/unparseable versions must also **STOP** and ask rather than guess. Never auto-downgrade.
67
+ **Source version gate (before diff/apply/version marking):** Read the `version` field in `$SOURCE_ROOT/package.json` and parse it as SemVer. The fetched version must equal the target version exactly, its major must be greater than or equal to the installed major from `.toolkit-version`, and it must not be older than the installed `.toolkit-version`. If any check fails, or a version is unknown or unparseable, **STOP** without diffing, applying changes, or updating the marker. Never auto-downgrade, and never hard-code a major.
61
68
 
62
69
  **Version Comparison:**
63
70
  - **Same version**: No structural changes expected
@@ -98,11 +105,11 @@ You are helping to patch AI instructions by comparing against supported toolkit
98
105
 
99
106
  Follow official V2 [migration](https://opencode.ai/v2/docs/migrate-v1), [config](https://opencode.ai/v2/docs/config), [agents](https://opencode.ai/v2/docs/agents), and [plugins](https://opencode.ai/v2/docs/build/plugins) docs. The published schema may describe V1; neither it nor a V1 API fetch validates native V2. Plural keys are intentional.
100
107
 
101
- - Use `agents`/`system`, `request.body.temperature`, ordered `permissions` (`action`/`resource`/`effect`, `shell`/`subagent`, last match wins), `commands`/`subagent`, `plugins` with `{ "package": "…", "options": {} }`, skill-directory arrays, and `mcp.servers` with inverse `disabled` and `timeout.catalog`/`timeout.execution`.
108
+ - Use `agents`/`system`, ordered `permissions` (`action`/`resource`/`effect`, `shell`/`subagent`, last match wins), `commands`/`subagent`, `plugins` with `{ "package": "…", "options": {} }`, skill-directory arrays, and `mcp.servers` with inverse `disabled` and `timeout.catalog`/`timeout.execution`.
102
109
  - The version preflight must pass before changes. Back up V1 before native conversion (converted files are incompatible with V1). Preserve models/providers/user-global plugins. Only with approval, merge `"plugins": ["oh-my-opencode-slim@3.0.0"]` locally. Slim's separate strict schema keeps `prompt`/`permission`/`variant`; do not host-migrate it or silently upgrade the separate external starter.
103
- - **Ponytail replacement (plan here; apply after backup and approval in Step 5):** Remove only known obsolete toolkit-owned `.opencode/plugins/ponytail.js`, `.opencode/plugins/ponytail.mjs`, and `.opencode/plugins/ponytail.ts` copies. Preserve unrelated local plugins. Merge/deduplicate the author's native V2 `@dietrichgebert/ponytail@4.12.0` registration in the local `plugins` array where appropriate, retaining other registrations/options; do not edit global config. Keep `opentmux` commented as V1-only. Do not port local APIs or add bridges; runtime integration is untested. Native local discovery needs no duplicate registration.
104
- - `instructions` entries are accepted but not loaded; ambient root/nested `AGENTS.md` works. `@refs` are ordinary text: explicitly read snippets. `request.body.temperature` remains in config, but the current runner does not send it. Preserve `lsp: true`; use workspace lint/typecheck/compiler commands (no V2 LSP tools/diagnostics currently).
105
- - `--env opencode` supplies minimal shared references without other harness activation. Activate on the next run/restart and report only installed-V2 checks actually run, not assumed runtime validation. Publishing 4.0.0 has not been executed.
110
+ - **Obsolete Ponytail cleanup (plan here; apply after backup and approval in Step 5):** Remove only known obsolete toolkit-owned `.opencode/plugins/ponytail.js`, `.opencode/plugins/ponytail.mjs`, and `.opencode/plugins/ponytail.ts` copies. Preserve unrelated local plugins. The OpenCode Ponytail plugin is installed globally by the operator; never add it to project config. If it is not installed globally, tell the operator to install it globally. Do not edit global config. Keep `opentmux` commented as V1-only. Do not port local APIs or add bridges; runtime integration is untested.
111
+ - Ambient root/nested `AGENTS.md` works. `instructions` entries load only when the runtime injects them (OpenChamber does; other hosts may not), so do not rely on them: write explicit "Read and follow" wrappers regardless. `@refs` are ordinary text: explicitly read snippets. Do not set a temperature; the current runner does not send one. Preserve `lsp: true`; use workspace lint/typecheck/compiler commands (no V2 LSP tools/diagnostics currently).
112
+ - `--env opencode` supplies minimal shared references without other harness activation. Activate on the next run/restart and report only installed-V2 checks actually run, not assumed runtime validation.
106
113
 
107
114
  3. **Diff Analysis** (parallelizable — dispatch one subagent per category):
108
115
 
@@ -174,8 +181,8 @@ You are helping to patch AI instructions by comparing against supported toolkit
174
181
  a. **New files**: Copy directly from template
175
182
  b. **Updated files (no customization)**: Replace with template version
176
183
  c. **Updated files (customized)**: Apply structural additions while preserving project values
177
- d. **OpenCode plugins**: Apply only the approved Ponytail replacement above after backing up the known obsolete toolkit copies and local config; preserve all unrelated local/global plugins.
178
- e. **Toolkit version**: Update `.toolkit-version` to the fetched toolkit version (`4.0.0` for this migration) only after the approved migration and OpenCode preflight pass (or OpenCode is confirmed out of scope).
184
+ d. **OpenCode plugins**: Apply only the approved obsolete Ponytail cleanup above after backing up the known obsolete toolkit copies and local config; preserve all unrelated local/global plugins. Never add Ponytail to project config.
185
+ e. **Toolkit version**: Keep the `.toolkit-version` value the CLI writes for the verified target version (the installed package version, 4.0.0 or later; never hard-coded) only after the approved migration and OpenCode preflight pass (or OpenCode is confirmed out of scope).
179
186
  f. **Git commit**: Stage and commit all changes with message:
180
187
  ```bash
181
188
  git add -A
@@ -1,12 +1,12 @@
1
1
  # Bootstrap Upgrade — Monorepo
2
2
 
3
- Upgrade this monorepo to toolkit 4.0.0, including native OpenCode V2 for confirmed OpenCode users. For pre-3.0 installations, also migrate inline content to snippet-based architecture. Only modify confirmed harness targets; preserve unrelated harness/Codex behavior.
3
+ Upgrade this monorepo to toolkit <version> (the installed package version), including native OpenCode V2 for confirmed OpenCode users (toolkit 4.0.0 and later). For pre-3.0 installations, also migrate inline content to snippet-based architecture. Only modify confirmed harness targets; preserve unrelated harness/Codex behavior.
4
4
 
5
5
  ## OpenCode version preflight (before any changes)
6
6
 
7
7
  - Confirm OpenCode use from actual session/runtime evidence or ask the user; directory presence alone is not proof. If only other harnesses are used, skip this preflight and all OpenCode steps.
8
- - For confirmed OpenCode use, run `opencode --version` before any project writes. Trim output and parse numeric major/minor/patch components, accepting an optional leading `v`; toolkit 4.x requires `major >= 2`.
9
- - If OpenCode V1 (`major < 2`) is detected, **STOP** before customizing/migrating OpenCode files or writing `.toolkit-version` as `4.0.0`. Ask the user to upgrade OpenCode to V2 or remain on toolkit 3.x.
8
+ - For confirmed OpenCode use, run `opencode --version` before any project writes. Trim output and parse numeric major/minor/patch components, accepting an optional leading `v`; toolkit 4.0.0 and later require `major >= 2`.
9
+ - If OpenCode V1 (`major < 2`) is detected, **STOP** before customizing/migrating OpenCode files or writing `.toolkit-version` as 4.0.0 or later. Ask the user to upgrade OpenCode to V2 or remain on toolkit 3.x.
10
10
  - If the CLI is missing, fails, or output is unparseable, **STOP OpenCode steps** and leave the version marker unchanged; ask the user to confirm/install a supported OpenCode version, then rerun this check. Never assume V2.
11
11
  - If oh-my-opencode-slim >=3.0.0 is used or planned, require OpenCode >=2.0.7 (compare version components numerically); otherwise **STOP** before changes and ask to upgrade. Proceed only after this gate passes.
12
12
 
@@ -21,7 +21,7 @@ Read `.toolkit-version` and select the route before dispatching agents or changi
21
21
 
22
22
  ## OpenCode migration guardrails
23
23
 
24
- Back up V1; native-converted files are incompatible with V1. Preserve models/providers/user-global plugins. Templates register the author's native V2 package `@dietrichgebert/ponytail@4.12.0`; obsolete toolkit-local Ponytail copies are replaced only after backup and approval (Step 7), with no API port or bridge. Keep `opentmux` commented as V1-only. Only with approval, merge pinned `"plugins": ["oh-my-opencode-slim@3.0.0"]` locally without replacing other registrations. Slim's separate strict schema retains `prompt`/`permission`/`variant`; do not host-migrate it or silently upgrade the separate external starter. Activate on the next run/restart; plugin/runtime integration is untested and publishing 4.0.0 has not been executed.
24
+ Back up V1; native-converted files are incompatible with V1. Preserve models/providers/user-global plugins. The OpenCode Ponytail plugin (`@dietrichgebert/ponytail`) is installed globally by the operator and is never registered by templates or project config; obsolete toolkit-local Ponytail copies are removed only after backup and approval (Step 7), with no API port or bridge. Keep `opentmux` commented as V1-only. Only with approval, merge pinned `"plugins": ["oh-my-opencode-slim@3.0.0"]` locally without replacing other registrations. Slim's separate strict schema retains `prompt`/`permission`/`variant`; do not host-migrate it or silently upgrade the separate external starter. Activate on the next run/restart; plugin/runtime integration is untested.
25
25
 
26
26
  ## Orchestrator Checkpoint
27
27
 
@@ -71,7 +71,7 @@ Back up V1; native-converted files are incompatible with V1. Preserve models/pro
71
71
  5. **Present summary and ask for confirmation**:
72
72
 
73
73
  ```markdown
74
- ## 🔄 Monorepo Upgrade: toolkit v4.0.0
74
+ ## 🔄 Monorepo Upgrade: toolkit <version>
75
75
 
76
76
  **Selected route**: verified legacy | v3 native OpenCode
77
77
 
@@ -81,7 +81,7 @@ Back up V1; native-converted files are incompatible with V1. Preserve models/pro
81
81
  - Confirmed OpenCode only: merge native V2 host files and approved missing wrappers (Step 7)
82
82
  - Verified legacy only: approved hook installation and verified identical duplicate skill cleanup (Steps 8–10); preserve custom skills
83
83
  - Merge only applicable missing documentation and validate the selected route; v3 keeps existing snippet bodies/frontmatter unchanged
84
- - Write `.toolkit-version` with `4.0.0` after the approved migration
84
+ - Keep the `.toolkit-version` the CLI writes (installed package version, 4.0.0 or later) after the approved migration
85
85
 
86
86
  ### Monorepo-specific changes
87
87
 
@@ -264,18 +264,17 @@ For the v3 route, merge only relevant native OpenCode host fields; preserve exis
264
264
  "$schema": "https://opencode.ai/config.json",
265
265
  "instructions": ["AGENTS.md", ".opencode/rules/*.md"],
266
266
  "skills": [".agents/skills"],
267
- "plugins": ["@dietrichgebert/ponytail@4.12.0"],
268
267
  "lsp": true
269
268
  }
270
269
  ```
271
270
 
272
- Follow official V2 [migration](https://opencode.ai/v2/docs/migrate-v1), [config](https://opencode.ai/v2/docs/config), [agents](https://opencode.ai/v2/docs/agents), and [plugins](https://opencode.ai/v2/docs/build/plugins) docs. The published schema may describe V1; do not use it or a V1 API fetch as native V2 validation authority. Use `agents`/JSON `system` (Markdown bodies for file agents), `request.body.temperature`, ordered `permissions` (`action`/`resource`/`effect`, `shell`/`subagent`, last match wins), `commands`/`subagent`, `plugins` with `{ "package": "…", "options": {} }`, skill-directory arrays, and `mcp.servers` with inverse `disabled` and `timeout.catalog`/`timeout.execution`.
271
+ Follow official V2 [migration](https://opencode.ai/v2/docs/migrate-v1), [config](https://opencode.ai/v2/docs/config), [agents](https://opencode.ai/v2/docs/agents), and [plugins](https://opencode.ai/v2/docs/build/plugins) docs. The published schema may describe V1; do not use it or a V1 API fetch as native V2 validation authority. Use `agents`/JSON `system` (Markdown bodies for file agents), ordered `permissions` (`action`/`resource`/`effect`, `shell`/`subagent`, last match wins), `commands`/`subagent`, `plugins` with `{ "package": "…", "options": {} }`, skill-directory arrays, and `mcp.servers` with inverse `disabled` and `timeout.catalog`/`timeout.execution`.
273
272
 
274
- `instructions` entries are accepted but not loaded; ambient root/nested `AGENTS.md` works. `@refs` are ordinary text, not attachments: wrappers must explicitly tell agents to read referenced snippets. `request.body.temperature` remains in config, but the current runner does not send it. Preserve `lsp: true`; use workspace lint/typecheck/compiler commands (no current V2 LSP tools/diagnostics). `--env opencode` supplies minimal shared references without other harness activation. Verify using installed V2 after the next run/restart; report only checks actually run.
273
+ Ambient root/nested `AGENTS.md` works. `instructions` entries load only when the runtime injects them (OpenChamber does; other hosts may not), so do not rely on them: write explicit "Read and follow" wrappers regardless. `@refs` are ordinary text, not attachments: wrappers must explicitly tell agents to read referenced snippets. Do not set a temperature; the current runner does not send one. Preserve `lsp: true`; use workspace lint/typecheck/compiler commands (no current V2 LSP tools/diagnostics). `--env opencode` supplies minimal shared references without other harness activation. Verify using installed V2 after the next run/restart; report only checks actually run.
275
274
 
276
275
  2. **Replace obsolete toolkit Ponytail (backup and approval only)**:
277
276
  - Back up the local config and known obsolete toolkit-owned `.opencode/plugins/ponytail.js`, `.opencode/plugins/ponytail.mjs`, and `.opencode/plugins/ponytail.ts` copies; obtain approval before removing only those copies. Preserve unrelated local plugins.
278
- - Merge/deduplicate the author's native V2 `@dietrichgebert/ponytail@4.12.0` package in the local `plugins` array where appropriate, preserving other registrations/options. Do not edit global config or overwrite global plugins. Keep `opentmux` commented as V1-only; do not copy local Ponytail source, port APIs, or introduce bridges. Native local discovery needs no duplicate explicit registration; runtime integration remains untested.
277
+ - The OpenCode Ponytail plugin (`@dietrichgebert/ponytail`) is installed globally by the operator. Never add or pin it in the local `plugins` array. Check whether it is installed globally; if not, tell the operator to install it globally. Do not edit global config or overwrite global plugins. Keep `opentmux` commented as V1-only; do not copy local Ponytail source, port APIs, or introduce bridges. Runtime integration remains untested.
279
278
 
280
279
  3. Create `.opencode/commands/*.md` — one thin wrapper per `.claude/commands/*.md`:
281
280
 
@@ -379,7 +378,7 @@ If `CLAUDE.md` is an applicable confirmed harness target, merge only missing rel
379
378
 
380
379
  ### Step 12: Create .toolkit-version File
381
380
 
382
- Write `4.0.0` to `.toolkit-version` only after the approved migration and OpenCode preflight pass (or OpenCode is confirmed out of scope).
381
+ Keep the `.toolkit-version` value the CLI writes (the installed package version, 4.0.0 or later); do not write `4.0.0` by hand. Only after the approved migration and OpenCode preflight pass (or OpenCode is confirmed out of scope). If the file is missing, run `npx nitm-ai-dev-toolkit patch` to record it.
383
382
 
384
383
  ### Step 13: Validation
385
384
 
@@ -399,7 +398,7 @@ If `--verbose`: log each check result.
399
398
  Include only operations/checks actually performed for the selected route; omit legacy extraction/cleanup rows on v3 and never pre-mark skipped checks as passed.
400
399
 
401
400
  ```markdown
402
- ## ✅ Monorepo Upgrade Complete: v4.0.0
401
+ ## ✅ Monorepo Upgrade Complete: toolkit <version>
403
402
 
404
403
  ### Build System: {{BUILD_SYSTEM}}
405
404
 
@@ -435,7 +434,7 @@ Include only operations/checks actually performed for the selected route; omit l
435
434
  | File | Purpose |
436
435
  | -------------------------- | -------------------------- |
437
436
  | `.opencode/opencode.jsonc` | OpenCode configuration |
438
- | `.toolkit-version` | Version tracking (`4.0.0`) |
437
+ | `.toolkit-version` | Version tracking (installed package version) |
439
438
 
440
439
  ### Validation Results
441
440
 
@@ -464,7 +463,7 @@ Include only operations/checks actually performed for the selected route; omit l
464
463
 
465
464
  ```bash
466
465
  git add -A
467
- git commit -m "chore: upgrade AI instructions to toolkit v4.0.0"
466
+ git commit -m "chore: upgrade AI instructions to toolkit <version>"
468
467
  ```
469
468
 
470
469
  ## Error Handling
@@ -5,8 +5,8 @@ You are helping to bootstrap AI instructions for this monorepo by analyzing the
5
5
  ## OpenCode version preflight (before any changes)
6
6
 
7
7
  - Confirm OpenCode use from actual session/runtime evidence or ask the user; directory presence alone is not proof. If only other harnesses are used, skip this preflight and all OpenCode steps.
8
- - For confirmed OpenCode use, run `opencode --version` before any project writes. Trim output and parse numeric major/minor/patch components, accepting an optional leading `v`; toolkit 4.x requires `major >= 2`.
9
- - If OpenCode V1 (`major < 2`) is detected, **STOP** before customizing/migrating OpenCode files or writing `.toolkit-version` as `4.0.0`. Ask the user to upgrade OpenCode to V2 or remain on toolkit 3.x.
8
+ - For confirmed OpenCode use, run `opencode --version` before any project writes. Trim output and parse numeric major/minor/patch components, accepting an optional leading `v`; toolkit 4.0.0 and later require `major >= 2`.
9
+ - If OpenCode V1 (`major < 2`) is detected, **STOP** before customizing/migrating OpenCode files or writing `.toolkit-version` as 4.0.0 or later. Ask the user to upgrade OpenCode to V2 or remain on toolkit 3.x.
10
10
  - If the CLI is missing, fails, or output is unparseable, **STOP OpenCode steps** and leave the version marker unchanged; ask the user to confirm/install a supported OpenCode version, then rerun this check. Never assume V2.
11
11
  - If oh-my-opencode-slim >=3.0.0 is used or planned, require OpenCode >=2.0.7 (compare version components numerically); otherwise **STOP** before changes and ask to upgrade. Proceed only after this gate passes.
12
12
 
@@ -68,9 +68,9 @@ You are helping to bootstrap AI instructions for this monorepo by analyzing the
68
68
  | `{{PM_URL}}` | Project management URL (if applicable) |
69
69
  | `{{PROJECT_KEY}}` | Project/workspace ID (if applicable) |
70
70
  | `{{PM_ISSUE_KEY}}` | Issue key format (e.g., PROJ-###, #42) |
71
- | `{{FACTORY_PORT_BASE}}` | Default `5100` |
72
- | `{{APPROVAL_MODE}}` | Default `human` |
73
- | `{{FACTORY_REVIEW_LENSES}}` | Default `code, security`; add `ux, ui` only if the project has a UI and a browser tool is configured (for example a browser MCP server) |
71
+ | `{{FACTORY_PORT_BASE}}` | Only if Factory is installed. Default `5100` |
72
+ | `{{APPROVAL_MODE}}` | Only if Factory is installed. Default `human` |
73
+ | `{{FACTORY_REVIEW_LENSES}}` | Only if Factory is installed. Default `code, security`; add `ux, ui` only if the project has a UI and a browser tool is configured (for example a browser MCP server) |
74
74
 
75
75
  3. **Analyze Apps**:
76
76
 
@@ -178,25 +178,25 @@ You are helping to bootstrap AI instructions for this monorepo by analyzing the
178
178
 
179
179
  Follow official V2 [migration](https://opencode.ai/v2/docs/migrate-v1), [config](https://opencode.ai/v2/docs/config), [agents](https://opencode.ai/v2/docs/agents), and [plugins](https://opencode.ai/v2/docs/build/plugins) docs, not V1 API/schema fetches. The published schema may describe V1; do not reject native plural keys based on it.
180
180
 
181
- - After the version preflight passes, use `agents`/JSON `system` (Markdown bodies for file agents), `request.body.temperature`, ordered `permissions` (`action`/`resource`/`effect`, `shell`/`subagent`, last match wins), `commands`/`subagent`, `plugins` with `{ "package": "…", "options": {} }`, skill-directory arrays, and `mcp.servers` with inverse `disabled` and `timeout.catalog`/`timeout.execution`.
181
+ - After the version preflight passes, use `agents`/JSON `system` (Markdown bodies for file agents), ordered `permissions` (`action`/`resource`/`effect`, `shell`/`subagent`, last match wins), `commands`/`subagent`, `plugins` with `{ "package": "…", "options": {} }`, skill-directory arrays, and `mcp.servers` with inverse `disabled` and `timeout.catalog`/`timeout.execution`.
182
182
  - Back up V1; native-converted files are incompatible with V1. Merge rather than clobber models/providers/user-global plugins. Only with approval, merge pinned `"plugins": ["oh-my-opencode-slim@3.0.0"]` locally. Slim's separate strict schema retains `prompt`/`permission`/`variant`; do not host-migrate it or silently upgrade the separate external starter.
183
- - Templates register the author's native V2 package `@dietrichgebert/ponytail@4.12.0` locally; no local Ponytail source is bundled or ported. Keep `opentmux` commented as V1-only. Native local discovery needs no duplicate registration; do not introduce API ports or bridges or claim tested runtime integration.
184
- - Config `instructions` entries are not loaded; ambient root/nested `AGENTS.md` works. `@refs` are ordinary text: explicitly read snippets. `request.body.temperature` remains in config, but the current runner does not send it. Preserve `lsp: true`; use workspace lint/typecheck/compiler commands (no V2 LSP tools/diagnostics currently).
185
- - `--env opencode` supplies minimal shared references without other harness activation. Activate on the next run/restart; report only checks actually run with installed V2. Scaffold/placeholder checks are not runtime validation; publishing 4.0.0 has not been executed.
183
+ - The OpenCode Ponytail plugin (`@dietrichgebert/ponytail`, the author's native V2 package) is installed globally by the operator. Templates do not register or pin it, and no local Ponytail source is bundled or ported. Keep `opentmux` commented as V1-only. Do not introduce API ports or bridges or claim tested runtime integration.
184
+ - Ambient root/nested `AGENTS.md` works. Config `instructions` entries load only when the runtime injects them (OpenChamber does; other hosts may not), so do not rely on them: write explicit "Read and follow" wrappers regardless. `@refs` are ordinary text: explicitly read snippets. Do not set a temperature; the current runner does not send one. Preserve `lsp: true`; use workspace lint/typecheck/compiler commands (no V2 LSP tools/diagnostics currently).
185
+ - `--env opencode` supplies minimal shared references without other harness activation. Activate on the next run/restart; report only checks actually run with installed V2. Scaffold/placeholder checks are not runtime validation.
186
186
 
187
187
  **Ponytail pre-activation cleanup (confirmed OpenCode use only):**
188
188
 
189
189
  1. In this bootstrap flow, inspect `.opencode/plugins/ponytail.js`, `.opencode/plugins/ponytail.mjs`, and `.opencode/plugins/ponytail.ts` for existing-target leftovers. Verify obsolete toolkit ownership from contents/provenance, not filename alone; absent paths need no deletion. Preserve unrelated/custom plugins and global config.
190
190
  2. Back up the local config and verified obsolete toolkit copies, obtain explicit removal approval, then remove ONLY those copies. Do not automatically delete files in the CLI or remove custom plugins.
191
- 3. With approval, merge/deduplicate upstream `@dietrichgebert/ponytail@4.12.0` registration locally where appropriate, preserving other registrations/options and leaving global config untouched. No API port or bridge.
191
+ 3. Never add `@dietrichgebert/ponytail` to project `.opencode/opencode.jsonc`. Check whether it is installed globally; if not, tell the operator to install it globally and leave global and project config untouched. No API port or bridge.
192
192
  4. If any present copy's ownership or safe removal is unverified, or required removal approval is denied, **STOP OpenCode activation and migration completion**; leave `.toolkit-version` unchanged and report blocked, not complete. Proceed/restart only after this gate passes; runtime integration remains untested.
193
193
 
194
194
  **Create Toolkit Version File:**
195
195
 
196
- Create a `.toolkit-version` file in the project root with the current toolkit version only after the OpenCode preflight and Ponytail cleanup gate pass (or OpenCode is confirmed out of scope):
196
+ Confirm `.toolkit-version` in the project root. The CLI writes it on install and patch with the installed package version. For toolkit 4.0.0 or later, keep the value the CLI wrote; do not write it by hand or overwrite it with a hard-coded version. If it is missing, run `npx nitm-ai-dev-toolkit patch` only after the OpenCode preflight and Ponytail cleanup gate pass (or OpenCode is confirmed out of scope). Expected form:
197
197
 
198
198
  ```
199
- 4.0.0
199
+ <installed package version, for example 5.0.0>
200
200
  ```
201
201
 
202
202
  This file enables `bootstrap-patch` to detect version changes and apply migrations automatically.
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: "Run an opt-in factory job: intake, spec and plan gates, build in a worktree or in place, reviews, approval, local merge"
2
+ description: "Run an opt-in factory job: intake, spec and plan gates, build in a worktree or in place, reviews, approval, merge (local, or a merge request on the forge)"
3
3
  ---
4
4
 
5
5
  You are the factory orchestrator for this session. Arguments: $ARGUMENTS
@@ -8,13 +8,13 @@ Follow the [factory orchestrator skill](../../.agents/skills/factory/SKILL.md) e
8
8
 
9
9
  Ground rules:
10
10
 
11
- - Run the orchestrator in this session. Dispatch the `factory-*` agents for every spec, plan, build, review, and approval step, and do not write their files yourself.
12
- - Only write `job.json`, `intake.md`, `spec-<k>.md`, `plan-<k>.md`, `rework-<k>.md`, the escalation `decision.md`, `merge-conflict.md`, the ticket keys in `tasks.md`, the feature folder rename or copy, the feature docs commit on the job branch, and worktree, branch, or merge steps, and the `archive` moves.
11
+ - Run the orchestrator in this session. Dispatch the native agents (`planner`, `implementer`, `reviewer`, see the skill's Subagent dispatch) for every spec, plan, build, review, and approval step, and do not write their files yourself. Reviewers and the approver return their reports, which you save.
12
+ - Only write `job.json`, `intake.md`, `spec-<k>.md`, `plan-<k>.md`, `rework-<k>.md`, the review files and `decision.md` from the reviewer and approver replies, the escalation `decision.md`, `merge-conflict.md`, `bootstrap.md`, the ticket keys in `tasks.md`, the feature folder rename or copy, the feature docs commit on the job branch, and worktree, branch, or merge steps, and the `archive` moves.
13
13
  - Intake asks in chat before any folder, job, or spec exists. Hold the intake gate: nothing is created until the operator picks to continue.
14
14
  - Hold the spec gate and the plan gate: nothing is planned, ticketed, or built until the operator confirms in chat. The spec cannot be confirmed while a `[PRODUCT DECISION]` item is open.
15
15
  - `--in-place` on the command, or the operator saying in place, builds in the main checkout instead of a worktree. Only a new job takes it.
16
16
  - `abandon <job-id>` closes a job without merging it. Ask first when an agent may still be running.
17
- - Never push. Merges stay local.
17
+ - Local merges never push. With `MERGE_MODE` set to `push-mr`, the branch is pushed and its merge request opened only on `/factory approve` or an `auto` APPROVE, and never force-pushed.
18
18
  - `archive` moves closed jobs only, to `factory/archive/`. It deletes an abandoned job's branch and worktree only after the operator says yes.
19
- - `prune` permanently deletes closed jobs from `factory/jobs/` and `factory/archive/`, after one confirmation in chat: merged jobs by default, and abandoned jobs too with `--abandoned`. It never touches an open job or `docs/features/`.
19
+ - `prune` permanently deletes closed jobs from `factory/jobs/` and `factory/archive/`, after one confirmation in chat: merged jobs by default, and abandoned jobs too with `--abandoned`. It never touches an open job or the feature folders.
20
20
  - If `$ARGUMENTS` is empty, show the invocation list from the skill and ask which one the user wants.
@@ -79,7 +79,9 @@ Implement a feature by completing tasks sequentially with proper tracking.
79
79
  git commit -m "feat({{SCOPE}}): {{DESCRIPTION}}"
80
80
  ```
81
81
 
82
- f. **Mark Task Complete**: tick `- [x]` for the task in `tasks.md`
82
+ f. **Mark Task Complete**:
83
+ - Slim `tasks.md`: tick `- [x]` on the task's line
84
+ - Legacy `tasks.md`: tick `- [x]` only on checkboxes under the current task's heading (until the next heading). Never tick checkboxes under other headings. If that heading has no checkboxes, report "no checkboxes under <heading>; nothing ticked" and continue
83
85
 
84
86
  5. **Post-Implementation Review**:
85
87
  - Dispatch **Reviewer** agent on all changes before proceeding