@garygentry/feature-forge 0.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 (231) hide show
  1. package/LICENSE +21 -0
  2. package/adapters/GENERATION-REPORT.md +128 -0
  3. package/adapters/claude/agents/forge-researcher.md +137 -0
  4. package/adapters/claude/agents/forge-spec-writer.md +115 -0
  5. package/adapters/claude/agents/forge-verifier.md +121 -0
  6. package/adapters/claude/references/epic-manifest-schema.json +120 -0
  7. package/adapters/claude/references/forge-config-schema.json +166 -0
  8. package/adapters/claude/references/pipeline-state-schema.json +110 -0
  9. package/adapters/claude/references/portable-root.md +56 -0
  10. package/adapters/claude/references/process-overview.md +123 -0
  11. package/adapters/claude/references/ralph-loop-contract.md +221 -0
  12. package/adapters/claude/references/shared-conventions.md +144 -0
  13. package/adapters/claude/references/skill-frontmatter.schema.json +17 -0
  14. package/adapters/claude/references/stack-resolution.md +51 -0
  15. package/adapters/claude/references/stacks/_generic.md +90 -0
  16. package/adapters/claude/references/stacks/go.md +138 -0
  17. package/adapters/claude/references/stacks/python.md +163 -0
  18. package/adapters/claude/references/stacks/rust.md +151 -0
  19. package/adapters/claude/references/stacks/typescript.md +111 -0
  20. package/adapters/claude/references/vendor-construct-inventory.md +49 -0
  21. package/adapters/claude/scripts/forge-root.sh +50 -0
  22. package/adapters/claude/skills/forge/SKILL.md +165 -0
  23. package/adapters/claude/skills/forge-0-epic/SKILL.md +303 -0
  24. package/adapters/claude/skills/forge-0-epic/references/edit-mode.md +222 -0
  25. package/adapters/claude/skills/forge-0-epic/references/epic-manifest-subcommands.md +64 -0
  26. package/adapters/claude/skills/forge-1-prd/SKILL.md +121 -0
  27. package/adapters/claude/skills/forge-1-prd/references/prd-template.md +106 -0
  28. package/adapters/claude/skills/forge-2-tech/SKILL.md +198 -0
  29. package/adapters/claude/skills/forge-2-tech/references/stack-discovery-checklist.md +95 -0
  30. package/adapters/claude/skills/forge-3-specs/SKILL.md +154 -0
  31. package/adapters/claude/skills/forge-3-specs/references/spec-archetypes.md +106 -0
  32. package/adapters/claude/skills/forge-3-specs/references/spec-examples.md +71 -0
  33. package/adapters/claude/skills/forge-4-backlog/SKILL.md +146 -0
  34. package/adapters/claude/skills/forge-5-loop/SKILL.md +303 -0
  35. package/adapters/claude/skills/forge-5-loop/references/result-reporting.md +63 -0
  36. package/adapters/claude/skills/forge-5-loop/references/runner-contract.md +214 -0
  37. package/adapters/claude/skills/forge-6-docs/SKILL.md +179 -0
  38. package/adapters/claude/skills/forge-6-docs/references/doc-conventions.md +126 -0
  39. package/adapters/claude/skills/forge-fix/SKILL.md +65 -0
  40. package/adapters/claude/skills/forge-init/SKILL.md +29 -0
  41. package/adapters/claude/skills/forge-verify/SKILL.md +219 -0
  42. package/adapters/claude/skills/forge-verify/references/verification-checklists.md +379 -0
  43. package/adapters/codex/agents/forge-researcher.md +133 -0
  44. package/adapters/codex/agents/forge-spec-writer.md +112 -0
  45. package/adapters/codex/agents/forge-verifier.md +115 -0
  46. package/adapters/codex/agents/openai.yaml +10 -0
  47. package/adapters/codex/references/epic-manifest-schema.json +120 -0
  48. package/adapters/codex/references/forge-config-schema.json +166 -0
  49. package/adapters/codex/references/pipeline-state-schema.json +110 -0
  50. package/adapters/codex/references/portable-root.md +56 -0
  51. package/adapters/codex/references/process-overview.md +123 -0
  52. package/adapters/codex/references/ralph-loop-contract.md +221 -0
  53. package/adapters/codex/references/shared-conventions.md +144 -0
  54. package/adapters/codex/references/skill-frontmatter.schema.json +17 -0
  55. package/adapters/codex/references/stack-resolution.md +51 -0
  56. package/adapters/codex/references/stacks/_generic.md +90 -0
  57. package/adapters/codex/references/stacks/go.md +138 -0
  58. package/adapters/codex/references/stacks/python.md +163 -0
  59. package/adapters/codex/references/stacks/rust.md +151 -0
  60. package/adapters/codex/references/stacks/typescript.md +111 -0
  61. package/adapters/codex/references/vendor-construct-inventory.md +49 -0
  62. package/adapters/codex/scripts/forge-root.sh +50 -0
  63. package/adapters/codex/skills/forge/forge.md +164 -0
  64. package/adapters/codex/skills/forge-0-epic/forge-0-epic.md +302 -0
  65. package/adapters/codex/skills/forge-0-epic/references/edit-mode.md +222 -0
  66. package/adapters/codex/skills/forge-0-epic/references/epic-manifest-subcommands.md +64 -0
  67. package/adapters/codex/skills/forge-1-prd/forge-1-prd.md +120 -0
  68. package/adapters/codex/skills/forge-1-prd/references/prd-template.md +106 -0
  69. package/adapters/codex/skills/forge-2-tech/forge-2-tech.md +197 -0
  70. package/adapters/codex/skills/forge-2-tech/references/stack-discovery-checklist.md +95 -0
  71. package/adapters/codex/skills/forge-3-specs/forge-3-specs.md +153 -0
  72. package/adapters/codex/skills/forge-3-specs/references/spec-archetypes.md +106 -0
  73. package/adapters/codex/skills/forge-3-specs/references/spec-examples.md +71 -0
  74. package/adapters/codex/skills/forge-4-backlog/forge-4-backlog.md +145 -0
  75. package/adapters/codex/skills/forge-5-loop/forge-5-loop.md +302 -0
  76. package/adapters/codex/skills/forge-5-loop/references/result-reporting.md +63 -0
  77. package/adapters/codex/skills/forge-5-loop/references/runner-contract.md +214 -0
  78. package/adapters/codex/skills/forge-6-docs/forge-6-docs.md +178 -0
  79. package/adapters/codex/skills/forge-6-docs/references/doc-conventions.md +126 -0
  80. package/adapters/codex/skills/forge-fix/forge-fix.md +64 -0
  81. package/adapters/codex/skills/forge-init/forge-init.md +29 -0
  82. package/adapters/codex/skills/forge-verify/forge-verify.md +218 -0
  83. package/adapters/codex/skills/forge-verify/references/verification-checklists.md +379 -0
  84. package/adapters/copilot/agents/forge-researcher.md +133 -0
  85. package/adapters/copilot/agents/forge-spec-writer.md +112 -0
  86. package/adapters/copilot/agents/forge-verifier.md +115 -0
  87. package/adapters/copilot/references/epic-manifest-schema.json +120 -0
  88. package/adapters/copilot/references/forge-config-schema.json +166 -0
  89. package/adapters/copilot/references/pipeline-state-schema.json +110 -0
  90. package/adapters/copilot/references/portable-root.md +56 -0
  91. package/adapters/copilot/references/process-overview.md +123 -0
  92. package/adapters/copilot/references/ralph-loop-contract.md +221 -0
  93. package/adapters/copilot/references/shared-conventions.md +144 -0
  94. package/adapters/copilot/references/skill-frontmatter.schema.json +17 -0
  95. package/adapters/copilot/references/stack-resolution.md +51 -0
  96. package/adapters/copilot/references/stacks/_generic.md +90 -0
  97. package/adapters/copilot/references/stacks/go.md +138 -0
  98. package/adapters/copilot/references/stacks/python.md +163 -0
  99. package/adapters/copilot/references/stacks/rust.md +151 -0
  100. package/adapters/copilot/references/stacks/typescript.md +111 -0
  101. package/adapters/copilot/references/vendor-construct-inventory.md +49 -0
  102. package/adapters/copilot/scripts/forge-root.sh +50 -0
  103. package/adapters/copilot/skills/forge/forge.md +164 -0
  104. package/adapters/copilot/skills/forge-0-epic/forge-0-epic.md +302 -0
  105. package/adapters/copilot/skills/forge-0-epic/references/edit-mode.md +222 -0
  106. package/adapters/copilot/skills/forge-0-epic/references/epic-manifest-subcommands.md +64 -0
  107. package/adapters/copilot/skills/forge-1-prd/forge-1-prd.md +120 -0
  108. package/adapters/copilot/skills/forge-1-prd/references/prd-template.md +106 -0
  109. package/adapters/copilot/skills/forge-2-tech/forge-2-tech.md +197 -0
  110. package/adapters/copilot/skills/forge-2-tech/references/stack-discovery-checklist.md +95 -0
  111. package/adapters/copilot/skills/forge-3-specs/forge-3-specs.md +153 -0
  112. package/adapters/copilot/skills/forge-3-specs/references/spec-archetypes.md +106 -0
  113. package/adapters/copilot/skills/forge-3-specs/references/spec-examples.md +71 -0
  114. package/adapters/copilot/skills/forge-4-backlog/forge-4-backlog.md +145 -0
  115. package/adapters/copilot/skills/forge-5-loop/forge-5-loop.md +302 -0
  116. package/adapters/copilot/skills/forge-5-loop/references/result-reporting.md +63 -0
  117. package/adapters/copilot/skills/forge-5-loop/references/runner-contract.md +214 -0
  118. package/adapters/copilot/skills/forge-6-docs/forge-6-docs.md +178 -0
  119. package/adapters/copilot/skills/forge-6-docs/references/doc-conventions.md +126 -0
  120. package/adapters/copilot/skills/forge-fix/forge-fix.md +64 -0
  121. package/adapters/copilot/skills/forge-init/forge-init.md +29 -0
  122. package/adapters/copilot/skills/forge-verify/forge-verify.md +218 -0
  123. package/adapters/copilot/skills/forge-verify/references/verification-checklists.md +379 -0
  124. package/adapters/cursor/agents/forge-researcher.mdc +134 -0
  125. package/adapters/cursor/agents/forge-spec-writer.mdc +113 -0
  126. package/adapters/cursor/agents/forge-verifier.mdc +116 -0
  127. package/adapters/cursor/references/epic-manifest-schema.json +120 -0
  128. package/adapters/cursor/references/forge-config-schema.json +166 -0
  129. package/adapters/cursor/references/pipeline-state-schema.json +110 -0
  130. package/adapters/cursor/references/portable-root.md +56 -0
  131. package/adapters/cursor/references/process-overview.md +123 -0
  132. package/adapters/cursor/references/ralph-loop-contract.md +221 -0
  133. package/adapters/cursor/references/shared-conventions.md +144 -0
  134. package/adapters/cursor/references/skill-frontmatter.schema.json +17 -0
  135. package/adapters/cursor/references/stack-resolution.md +51 -0
  136. package/adapters/cursor/references/stacks/_generic.md +90 -0
  137. package/adapters/cursor/references/stacks/go.md +138 -0
  138. package/adapters/cursor/references/stacks/python.md +163 -0
  139. package/adapters/cursor/references/stacks/rust.md +151 -0
  140. package/adapters/cursor/references/stacks/typescript.md +111 -0
  141. package/adapters/cursor/references/vendor-construct-inventory.md +49 -0
  142. package/adapters/cursor/scripts/forge-root.sh +50 -0
  143. package/adapters/cursor/skills/forge/forge.mdc +165 -0
  144. package/adapters/cursor/skills/forge-0-epic/forge-0-epic.mdc +303 -0
  145. package/adapters/cursor/skills/forge-0-epic/references/edit-mode.md +222 -0
  146. package/adapters/cursor/skills/forge-0-epic/references/epic-manifest-subcommands.md +64 -0
  147. package/adapters/cursor/skills/forge-1-prd/forge-1-prd.mdc +121 -0
  148. package/adapters/cursor/skills/forge-1-prd/references/prd-template.md +106 -0
  149. package/adapters/cursor/skills/forge-2-tech/forge-2-tech.mdc +198 -0
  150. package/adapters/cursor/skills/forge-2-tech/references/stack-discovery-checklist.md +95 -0
  151. package/adapters/cursor/skills/forge-3-specs/forge-3-specs.mdc +154 -0
  152. package/adapters/cursor/skills/forge-3-specs/references/spec-archetypes.md +106 -0
  153. package/adapters/cursor/skills/forge-3-specs/references/spec-examples.md +71 -0
  154. package/adapters/cursor/skills/forge-4-backlog/forge-4-backlog.mdc +146 -0
  155. package/adapters/cursor/skills/forge-5-loop/forge-5-loop.mdc +303 -0
  156. package/adapters/cursor/skills/forge-5-loop/references/result-reporting.md +63 -0
  157. package/adapters/cursor/skills/forge-5-loop/references/runner-contract.md +214 -0
  158. package/adapters/cursor/skills/forge-6-docs/forge-6-docs.mdc +179 -0
  159. package/adapters/cursor/skills/forge-6-docs/references/doc-conventions.md +126 -0
  160. package/adapters/cursor/skills/forge-fix/forge-fix.mdc +65 -0
  161. package/adapters/cursor/skills/forge-init/forge-init.mdc +30 -0
  162. package/adapters/cursor/skills/forge-verify/forge-verify.mdc +219 -0
  163. package/adapters/cursor/skills/forge-verify/references/verification-checklists.md +379 -0
  164. package/adapters/gemini/agents/forge-researcher.md +133 -0
  165. package/adapters/gemini/agents/forge-spec-writer.md +112 -0
  166. package/adapters/gemini/agents/forge-verifier.md +115 -0
  167. package/adapters/gemini/gemini-extension.json +54 -0
  168. package/adapters/gemini/references/epic-manifest-schema.json +120 -0
  169. package/adapters/gemini/references/forge-config-schema.json +166 -0
  170. package/adapters/gemini/references/pipeline-state-schema.json +110 -0
  171. package/adapters/gemini/references/portable-root.md +56 -0
  172. package/adapters/gemini/references/process-overview.md +123 -0
  173. package/adapters/gemini/references/ralph-loop-contract.md +221 -0
  174. package/adapters/gemini/references/shared-conventions.md +144 -0
  175. package/adapters/gemini/references/skill-frontmatter.schema.json +17 -0
  176. package/adapters/gemini/references/stack-resolution.md +51 -0
  177. package/adapters/gemini/references/stacks/_generic.md +90 -0
  178. package/adapters/gemini/references/stacks/go.md +138 -0
  179. package/adapters/gemini/references/stacks/python.md +163 -0
  180. package/adapters/gemini/references/stacks/rust.md +151 -0
  181. package/adapters/gemini/references/stacks/typescript.md +111 -0
  182. package/adapters/gemini/references/vendor-construct-inventory.md +49 -0
  183. package/adapters/gemini/scripts/forge-root.sh +50 -0
  184. package/adapters/gemini/skills/forge/forge.md +164 -0
  185. package/adapters/gemini/skills/forge-0-epic/forge-0-epic.md +302 -0
  186. package/adapters/gemini/skills/forge-0-epic/references/edit-mode.md +222 -0
  187. package/adapters/gemini/skills/forge-0-epic/references/epic-manifest-subcommands.md +64 -0
  188. package/adapters/gemini/skills/forge-1-prd/forge-1-prd.md +120 -0
  189. package/adapters/gemini/skills/forge-1-prd/references/prd-template.md +106 -0
  190. package/adapters/gemini/skills/forge-2-tech/forge-2-tech.md +197 -0
  191. package/adapters/gemini/skills/forge-2-tech/references/stack-discovery-checklist.md +95 -0
  192. package/adapters/gemini/skills/forge-3-specs/forge-3-specs.md +153 -0
  193. package/adapters/gemini/skills/forge-3-specs/references/spec-archetypes.md +106 -0
  194. package/adapters/gemini/skills/forge-3-specs/references/spec-examples.md +71 -0
  195. package/adapters/gemini/skills/forge-4-backlog/forge-4-backlog.md +145 -0
  196. package/adapters/gemini/skills/forge-5-loop/forge-5-loop.md +302 -0
  197. package/adapters/gemini/skills/forge-5-loop/references/result-reporting.md +63 -0
  198. package/adapters/gemini/skills/forge-5-loop/references/runner-contract.md +214 -0
  199. package/adapters/gemini/skills/forge-6-docs/forge-6-docs.md +178 -0
  200. package/adapters/gemini/skills/forge-6-docs/references/doc-conventions.md +126 -0
  201. package/adapters/gemini/skills/forge-fix/forge-fix.md +64 -0
  202. package/adapters/gemini/skills/forge-init/forge-init.md +29 -0
  203. package/adapters/gemini/skills/forge-verify/forge-verify.md +218 -0
  204. package/adapters/gemini/skills/forge-verify/references/verification-checklists.md +379 -0
  205. package/dist/agent-targets.d.ts +70 -0
  206. package/dist/agent-targets.js +111 -0
  207. package/dist/apply.d.ts +49 -0
  208. package/dist/apply.js +246 -0
  209. package/dist/cli.d.ts +94 -0
  210. package/dist/cli.js +508 -0
  211. package/dist/detect.d.ts +45 -0
  212. package/dist/detect.js +72 -0
  213. package/dist/fsutil.d.ts +56 -0
  214. package/dist/fsutil.js +175 -0
  215. package/dist/hash.d.ts +50 -0
  216. package/dist/hash.js +107 -0
  217. package/dist/index.d.ts +8 -0
  218. package/dist/index.js +9 -0
  219. package/dist/manifest.d.ts +72 -0
  220. package/dist/manifest.js +222 -0
  221. package/dist/plan.d.ts +66 -0
  222. package/dist/plan.js +166 -0
  223. package/dist/rauf.d.ts +83 -0
  224. package/dist/rauf.js +118 -0
  225. package/dist/report.d.ts +35 -0
  226. package/dist/report.js +110 -0
  227. package/dist/source.d.ts +69 -0
  228. package/dist/source.js +164 -0
  229. package/dist/types.d.ts +264 -0
  230. package/dist/types.js +57 -0
  231. package/package.json +42 -0
@@ -0,0 +1,121 @@
1
+ ---
2
+ # GENERATED — DO NOT EDIT. Source: skills/forge-1-prd/SKILL.md. Regenerate: python3 scripts/build-adapters.py
3
+ description: Create a requirements PRD for a feature through structured interview. Use when user runs /feature-forge:forge-1-prd or explicitly asks to start the forge pipeline for a new feature. Do NOT trigger for general requirements discussions, project scoping outside forge, or PRD questions unrelated to the forge pipeline.
4
+ globs: []
5
+ alwaysApply: false
6
+ ---
7
+
8
+ # forge-1-prd — Requirements Interviewer
9
+
10
+ Create a thorough, requirements-only PRD through relentless structured interviewing. The PRD captures WHAT the feature must do, not HOW it will be built.
11
+
12
+ ## Prerequisites
13
+
14
+ Read and follow `references/shared-conventions.md` for feature name validation, configuration reading, and force mode handling before proceeding.
15
+
16
+ ## Step 1: Read Configuration and Check State
17
+
18
+ ### Branch Setup (if using git)
19
+ If `gitCommitAfterStage` is true and the project uses git, use `AskUserQuestion` to offer: "Want me to create a `forge/{feature}` branch for this pipeline? (Recommended — keeps forge work isolated.)" If yes, create and checkout the branch before proceeding.
20
+
21
+ Set the working directory by invoking the **Feature Directory Resolution** block in `references/shared-conventions.md`, which yields `{resolvedFeatureDir}`. Note one PRD-specific caveat: at PRD time a brand-new standalone feature may have NO directory yet, so resolution is expected to fail `not-found` for a never-started standalone feature — in that case forge-1 creates `{specsDir}/{feature}/` as today. For an epic member the directory already exists (created empty by forge-0-epic with an `epic` back-pointer), so resolution succeeds and yields the nested path.
22
+
23
+ If `.pipeline-state.json` exists for this feature and `forge-1-prd` is already marked complete, use `AskUserQuestion` to warn: "A PRD already exists for '{feature}'. Continuing will create a new version. Proceed?"
24
+
25
+ ## Step 2: Examine Existing Context
26
+
27
+ Before starting the interview, invoke the **Epic Context Injection** block in `references/shared-conventions.md`. This block self-gates: it skips entirely if the feature has no `epic` back-pointer, so standalone behavior is unchanged. If this feature is an epic member, the injected charter's `exposes`/`consumes` are requirement inputs — every contract obligation must appear as a REQ in the PRD.
28
+
29
+ 1. **Check the project structure**: Read the project's build configuration and dependency manifests to understand what modules/packages exist. Look for `package.json`, `pyproject.toml`, `go.mod`, `Cargo.toml`, `pom.xml`, workspace configs, or equivalent.
30
+ 2. **Check existing specs**: Look at `{specsDir}/` for other features' PRDs to understand conventions and the overall system
31
+ 3. **Check existing docs**: Look at the docs directory for architecture documentation
32
+ 4. **Note integration surfaces**: Identify which existing packages might be relevant to this feature
33
+
34
+ This context helps you ask informed questions and spot gaps the user might not think of.
35
+
36
+ ## Step 3: Conduct the Interview
37
+
38
+ Interview the user relentlessly. Your goal is to extract complete, unambiguous requirements.
39
+
40
+ Read `references/prd-template.md` for the interview structure and question categories. Cover every category. Don't rush — missing a requirement now costs 10x to fix later.
41
+
42
+ ### CRITICAL GUARDRAIL: No Technology Decisions
43
+
44
+ The PRD is EXCLUSIVELY about requirements. You MUST enforce this boundary:
45
+
46
+ **When the user says something like:**
47
+ - "I want to use Zod for validation" → Capture as: "Runtime schema validation with type inference is required." Note their Zod preference as a constraint but not a requirement.
48
+ - "We'll store it in Drizzle/PostgreSQL" → Capture as: "Persistent storage required for X data with Y query patterns."
49
+ - "I want a React component that..." → Capture as: "A user interface is required that allows users to..."
50
+ - "We should use WebSockets for..." → Capture as: "Real-time updates are required when X changes, with latency under Y."
51
+ - "I want a REST API" → Capture as: "An HTTP-accessible interface is required for X operations"
52
+ - "We need a microservice for X" → Capture as: "X must be independently deployable and scalable"
53
+ - "Use a queue for Y" → Capture as: "Y must be processed asynchronously with guaranteed delivery"
54
+
55
+ **When YOU start drifting into technology:**
56
+ If you catch yourself writing about specific libraries, API designs, database schemas, or implementation patterns — STOP. Ask yourself: "Is this a requirement or an implementation choice?" Rewrite it as the underlying requirement.
57
+
58
+ **The one exception:** When a technology choice IS the requirement (e.g., "must integrate with the existing @repo/auth package" or "must work with our Hono backend"). These are constraints, and they belong in the Constraints section of the PRD, clearly labeled as such.
59
+
60
+ A technology constraint is valid when it stems from organizational mandate, existing infrastructure, or team expertise — not from preference. Ask "Why must it be X specifically?" If the answer is "because we already run X in production," that's a legitimate constraint. If the answer is "because it's fast," capture the performance requirement instead.
61
+
62
+ ### Interview Approach
63
+
64
+ **Turn structure:** Output your analysis or context as regular text, then use `AskUserQuestion` for the actual questions. NEVER put questions in your text output — they MUST go through `AskUserQuestion`.
65
+
66
+ **Pacing:** Cover one topic area at a time, asking 2-3 related questions per `AskUserQuestion` call. After receiving answers, probe deeper on anything incomplete before moving to the next topic. Signal progress in your text before the next question batch.
67
+
68
+ **Question strategies** (use these as content for `AskUserQuestion`, not as inline prose):
69
+ - Probe deeper after each answer: failure modes, stakeholders, minimum viable version
70
+ - Challenge assumptions: which users specifically, what does "fast" mean quantitatively
71
+ - Identify edge cases: empty input, concurrent access, scale
72
+ - Capture non-functional requirements: performance, security, accessibility, observability
73
+ - Ask about what's OUT of scope — as important as what's in scope
74
+
75
+ **Completion criteria:** The interview is complete when:
76
+ 1. Every category in `references/prd-template.md` has been covered with at least one question
77
+ 2. The user has confirmed there's nothing else to add
78
+ 3. You can draft every PRD section without leaving TBD placeholders
79
+
80
+ Before moving to Step 4, summarize your coverage as text, then use `AskUserQuestion` to ask: "Anything I'm missing?"
81
+
82
+ **Parking lot:** If the user raises a concern that belongs to a different pipeline stage, acknowledge it and note it in the pipeline state's `notes` field: "Good point — I've noted that for the [tech spec/implementation specs]. Let's continue with [current stage]."
83
+
84
+ ## Step 4: Write the PRD
85
+
86
+ Once the interview is thorough, write `{resolvedFeatureDir}/PRD.md` following the structure in `references/prd-template.md`.
87
+
88
+ Every requirement MUST have a unique ID (e.g., REQ-AUTH-01, REQ-PERF-01). These IDs are referenced by all downstream documents.
89
+
90
+ ## Step 5: Review with User
91
+
92
+ Present the complete PRD to the user. Ask:
93
+ - "Does this capture everything? Any requirements missing?"
94
+ - "Are the priorities correct?"
95
+ - "Anything in here that should be out of scope?"
96
+
97
+ Use `AskUserQuestion` to collect this feedback.
98
+
99
+ Iterate until the user confirms the PRD is complete.
100
+
101
+ ## Step 6: Update Pipeline State and Commit
102
+
103
+ Write pipeline state conforming to `references/pipeline-state-schema.json`.
104
+
105
+ 1. Create or update `{resolvedFeatureDir}/.pipeline-state.json`:
106
+ - Set `currentStage` to `forge-2-tech`
107
+ - Set `stages.forge-1-prd.version` to 1 (or increment if revising)
108
+ - Record `artifacts`, `completedAt`
109
+ - Set `stages.forge-1-prd.basedOnVersions` to `{}` (no upstream dependencies)
110
+ - Check downstream stages (`forge-2-tech`, `forge-3-specs`, `forge-4-backlog`, `forge-5-loop`, `forge-6-docs`). If any have `basedOnVersions` referencing an older version of `forge-1-prd`, set their status to `stale`.
111
+ 2. Use `AskUserQuestion` to ask: "Anything you want to note before we wrap? (preserved across sessions)"
112
+ - If yes, store in the `notes` field
113
+ 3. If `gitCommitAfterStage` is true, follow the Git Commit Protocol in `references/shared-conventions.md`: stage files, attempt commit with message `"{commitPrefix}({feature}): complete PRD v{n}"`, then set `stages.forge-1-prd.status` to `complete` with commit hash only on success. If commit fails, leave status as `in-progress`.
114
+ 5. Tell the user: "PRD complete. Next steps:\n - `/feature-forge:forge-verify {feature}` to verify the PRD\n - `/feature-forge:forge-2-tech {feature}` to start the tech spec\n - `/feature-forge:forge {feature}` to see full pipeline status"
115
+
116
+ ## Gotchas
117
+
118
+ - Users often front-load their feature description with tech decisions because that's how engineers think. Gently but firmly redirect to requirements. Don't be preachy about it — just reframe what they said.
119
+ - If the user provides a very detailed initial description, don't skip the interview. Use their description as a starting point but probe for what's missing. Long descriptions often have big gaps in edge cases and non-functional requirements.
120
+ - Don't number requirements sequentially across categories (REQ-01, REQ-02...). Use category prefixes (REQ-AUTH-01, REQ-PERF-01) so inserting new requirements doesn't require renumbering.
121
+ - The PRD should be readable by a non-technical stakeholder. If a section requires deep technical knowledge to understand, it probably belongs in the tech spec, not the PRD.
@@ -0,0 +1,106 @@
1
+ # PRD Template and Interview Guide
2
+
3
+ This reference defines the standard PRD structure and the interview questions to cover for each section.
4
+
5
+ ## PRD Document Structure
6
+
7
+ ```markdown
8
+ # {Feature Name} — Product Requirements Document
9
+
10
+ ## 1. Problem Statement
11
+ What problem does this feature solve? Who has this problem? Why does it matter now?
12
+
13
+ ## 2. User Stories
14
+ As a [role], I want [capability], so that [benefit].
15
+ - Include primary actors and secondary actors
16
+ - Include admin/operator stories, not just end-user stories
17
+
18
+ ## 3. Functional Requirements
19
+
20
+ ### 3.1 {Capability Area}
21
+ - REQ-{CAT}-01: {Requirement description}
22
+ - Priority: P0 (must have) | P1 (should have) | P2 (nice to have)
23
+ - Notes: {Any clarification}
24
+
25
+ ### 3.2 {Another Capability Area}
26
+ ...
27
+
28
+ ## 4. Non-Functional Requirements
29
+
30
+ ### 4.1 Performance
31
+ - REQ-PERF-01: ...
32
+
33
+ ### 4.2 Security
34
+ - REQ-SEC-01: ...
35
+
36
+ ### 4.3 Observability
37
+ - REQ-OBS-01: ...
38
+
39
+ ### 4.4 Accessibility
40
+ - REQ-A11Y-01: ...
41
+
42
+ ### 4.5 Scalability
43
+ - REQ-SCALE-01: ...
44
+
45
+ ## 5. Constraints
46
+ Technical, organizational, or external constraints that must be respected.
47
+ (This is where technology mandates go — e.g., "must integrate with existing @repo/auth package")
48
+
49
+ ## 6. Out of Scope
50
+ Explicitly list what this feature will NOT do in this version.
51
+
52
+ ## 7. Open Questions
53
+ Unresolved items that need answers before or during implementation.
54
+
55
+ ## 8. Success Criteria
56
+ How do we know this feature is done and working correctly?
57
+ ```
58
+
59
+ ## Interview Question Categories
60
+
61
+ Cover ALL of these areas during the interview. Don't move on until each is addressed.
62
+
63
+ ### Core Understanding
64
+ - What is the feature in one sentence?
65
+ - Who are the primary users? Secondary users? Admins/operators?
66
+ - What workflow or process does this support?
67
+ - What exists today that this replaces or augments?
68
+
69
+ ### Functional Depth
70
+ - Walk me through the happy path end to end
71
+ - What are the key data entities involved?
72
+ - What inputs does the system accept? What are valid/invalid inputs?
73
+ - What outputs does the system produce?
74
+ - What states can things be in? What transitions are allowed?
75
+ - What happens when the user makes a mistake?
76
+
77
+ ### Error and Edge Cases
78
+ - What happens when X is unavailable?
79
+ - What if two users do Y at the same time?
80
+ - What happens with empty inputs? Huge inputs? Malformed inputs?
81
+ - What does partial failure look like?
82
+ - How should the system recover from crashes mid-operation?
83
+
84
+ ### Integration
85
+ - What existing parts of the system does this interact with?
86
+ - What data does it need from other features?
87
+ - What data does it provide to other features?
88
+ - Are there external systems or APIs involved?
89
+
90
+ ### Non-Functional
91
+ - What's the expected load? (requests/sec, concurrent users, data volume)
92
+ - What are the latency requirements?
93
+ - What security considerations exist? (authn, authz, data sensitivity)
94
+ - What needs to be logged, monitored, or alerted on?
95
+ - Are there accessibility requirements?
96
+
97
+ ### Scope and Priority
98
+ - What's the minimum viable version of this?
99
+ - What would you cut if you had to ship in half the time?
100
+ - What's explicitly NOT part of this feature?
101
+ - Are there follow-up features that depend on decisions made here?
102
+
103
+ ### Success
104
+ - How do you know this feature is working correctly?
105
+ - What would a user complain about if we got it wrong?
106
+ - Are there quantitative targets? (latency < Xms, uptime > Y%)
@@ -0,0 +1,198 @@
1
+ ---
2
+ # GENERATED — DO NOT EDIT. Source: skills/forge-2-tech/SKILL.md. Regenerate: python3 scripts/build-adapters.py
3
+ description: Create a technical specification from an existing PRD in the forge pipeline. Use when user runs /feature-forge:forge-2-tech or asks to create a tech spec for a forge feature after PRD completion. Do NOT trigger for general technical design discussions, architecture reviews, or tech specs outside the forge pipeline.
4
+ globs: []
5
+ alwaysApply: false
6
+ ---
7
+
8
+ # forge-2-tech — Technical Specification Driver
9
+
10
+ Create a thorough technical specification by interviewing the user about technology decisions, grounded in PRD requirements.
11
+
12
+ ## Prerequisites
13
+
14
+ Read and follow `references/shared-conventions.md` for feature name validation, configuration reading, and force mode handling before proceeding.
15
+
16
+ ## Step 1: Validate Prerequisites
17
+
18
+ **Resolve the feature directory first** via the **Feature Directory Resolution** block in `references/shared-conventions.md`, setting `{resolvedFeatureDir}`.
19
+
20
+ **Prerequisite check:** Read `{resolvedFeatureDir}/.pipeline-state.json`. If not in force mode and `forge-1-prd` is not `complete`, STOP and tell the user: "The PRD for '{feature}' isn't complete yet. Run `/feature-forge:forge-1-prd {feature}` first."
21
+
22
+ Read `{resolvedFeatureDir}/PRD.md` into context. This is your foundation — every technology decision must trace back to a PRD requirement.
23
+
24
+ After reading the PRD, invoke the **Epic Context Injection** block in `references/shared-conventions.md`. It self-gates on the resolved feature's `epic` back-pointer: for a standalone feature it is a no-op; for an epic member it loads EPIC.md, this feature's charter, and the completed direct dependencies' specs into context before the research and interview.
25
+
26
+ ## Step 2: Examine Existing Context
27
+
28
+ Before interviewing, you need to understand the existing codebase. This involves reading many files across the project, which consumes context.
29
+
30
+ ### Recommended: Delegate to forge-researcher Subagent
31
+
32
+ Spawn the `forge-researcher` subagent via the Agent tool to scan the codebase. Pass a prompt like: "Research the codebase for planning the {feature} feature. Focus on integration points, established patterns, and relevant packages."
33
+
34
+ If this feature belongs to an epic, also add to the dispatch prompt: "If this feature belongs to an epic, also account for these epic contracts: {paste this feature's `consumes` and the `exposes` of its direct deps}, and the completed dependency tech-specs at {paths}. Do not re-research transitive deps." This threads epic context into the researcher without changing the agent's behavior.
35
+
36
+ The researcher runs in its own context window, reads the project structure, and returns a concise integration report. This keeps your main conversation context clean for the interactive interview.
37
+
38
+ **Single vs. parallel research.** For a small or well-understood codebase, **one**
39
+ researcher is the right default. For a **large codebase or uncertain scope** (many
40
+ packages, several integration surfaces, monorepo), dispatch **multiple `forge-researcher`
41
+ subagents in parallel — a single message with multiple Agent calls** (the
42
+ `superpowers:dispatching-parallel-agents` pattern), each scoped to a **disjoint focus**
43
+ so they don't re-read the same ground:
44
+ - one on **project structure & conventions** (layout, build, naming, error/test patterns),
45
+ - one per **major integration area / subsystem** the feature touches (its exports, types,
46
+ public API),
47
+ - optionally one on **existing feature specs & in-progress conflicts**.
48
+
49
+ Each returns its own report; **you merge them** into a single integration picture for the
50
+ interview. This cuts latency and deepens coverage versus one researcher sweeping
51
+ everything serially. No agent change is needed — `forge-researcher` already returns a
52
+ self-contained report; just give each instance a narrower focus.
53
+
54
+ If the `forge-researcher` subagent is not available, perform the research inline (steps below).
55
+
56
+ ### Manual Research (fallback)
57
+
58
+ 1. **Read the PRD thoroughly**: Understand all requirements and constraints
59
+ 2. **Check for project-level stack decisions**: Look for `.claude/references/stack-decisions.md` in the project root. If present, read it — these are established technology choices that should be respected unless there's a strong reason to deviate.
60
+ 3. **Read the plugin's default stack reference**: Read `references/stack-discovery-checklist.md` for general stack context (only if no project-level override exists)
61
+ 4. **Examine the existing codebase**: Look at `package.json` files, existing packages, directory structure, and established patterns. Understand what conventions are already in place.
62
+ 5. **Review other features' tech specs**: Check `{specsDir}/*/tech-spec.md` and `{specsDir}/*/*/tech-spec.md` (depth-2, to find nested epic members) for consistency in approach and to identify shared infrastructure. Apply the **feature-shaped-dir bound**: only treat a directory as a feature if it directly contains a `.pipeline-state.json` (filter matches whose parent directory holds one, or enumerate members via the helper). A flat-only tree has no depth-2 feature dirs, so this gains no new matches there (REQ-COMPAT-01).
63
+ 6. **Identify integration points**: For each existing package that this feature touches, read its exports, types, and public API. Document these as constraints.
64
+
65
+ ### Stack Detection and Persistence
66
+
67
+ After researching the codebase, identify the primary stack (language, build tool, package manager, framework). Read `references/stack-resolution.md` for the full resolution protocol.
68
+
69
+ 1. Check if `forge.config.json` already has a `stack` field — if so, use it
70
+ 2. Otherwise, detect from project files and use `AskUserQuestion` to confirm: "I detected this as a {stack} project. Correct?"
71
+ 3. Update `forge.config.json` with `stack`, `typeCheckCommand`, and `testCommand`
72
+ 4. Verify that a matching stack profile exists at `references/stacks/{stack}.md`. If it does, load it for stack-specific guidance during this and all subsequent stages. If no profile exists, inform the user: "No dedicated profile for {stack}. Using generic fallback — spec conventions, verification checks, and examples will be language-neutral. Consider creating a project-level override at `.claude/references/stack-decisions.md`." Then load `references/stacks/_generic.md`.
73
+
74
+ ## Step 3: Conduct the Interview
75
+
76
+ Interview the user about technology decisions. Unlike the PRD interview, here you SHOULD discuss specific technologies, libraries, patterns, and architecture.
77
+
78
+ ### Interview Approach
79
+
80
+ **Turn structure:** Output your research findings, analysis, or technical proposals as regular text. Then use `AskUserQuestion` for the actual questions. NEVER put questions in your text output — they MUST go through `AskUserQuestion`.
81
+
82
+ **Pacing:** Present 1-2 decision areas per `AskUserQuestion` call and STOP to wait for the user's response before continuing. After receiving answers, probe deeper on anything incomplete before moving to the next topic. Signal progress in your text before the next question batch. Do NOT dump all decision areas in a single message — the interview is a conversation, not a document.
83
+
84
+ **First message pattern:** Output the research summary as text, then use `AskUserQuestion` to confirm the stack and ask about the first decision area (typically package/module structure). Wait for the user to respond before proceeding to subsequent areas.
85
+
86
+ **Question strategies** (use these as content for `AskUserQuestion`, not as inline prose):
87
+ - For each PRD requirement, propose a technical approach and ask for confirmation or alternatives
88
+ - Proactively suggest approaches consistent with the established stack
89
+ - Challenge over-engineering: does the feature need this, or is a simpler approach sufficient?
90
+ - Ask about every integration point and how the feature interacts with existing modules
91
+
92
+ **Parking lot:** If the user raises a concern that belongs to a different pipeline stage (e.g., backlog granularity, documentation format), acknowledge it and note it in the pipeline state's `notes` field: "Good point — I've noted that for the [specs/backlog/docs stage]. Let's continue with the tech spec."
93
+
94
+ ### Key Decision Areas to Cover
95
+
96
+ Work through these areas across multiple turns, grouping related areas (1-2 per message):
97
+
98
+ - **Package/module structure**: Where does this live in the project? What are its exports? (For non-monorepo projects, this becomes module organization — where the code lives, how it's organized, and what its exports are.)
99
+ - **Data model**: What are the key entities, their schemas, and storage approach?
100
+ - **API design**: What endpoints or interfaces does this expose?
101
+ - **Dependencies**: What external and internal packages are needed?
102
+ - **Patterns**: Which established patterns from the codebase apply here?
103
+ - **Error handling**: How are errors surfaced, propagated, and recovered from?
104
+ - **Testing strategy**: Unit, integration, e2e — what approach for this feature?
105
+ - **Configuration**: What's configurable? How is it configured?
106
+ - **Migration/deployment**: Any special rollout considerations?
107
+
108
+ ### Requirement Traceability
109
+
110
+ Every technical decision MUST reference the PRD requirement(s) it addresses. Use the format:
111
+
112
+ ```
113
+ ### JWT-based Session Tokens (REQ-AUTH-01, REQ-SEC-02)
114
+ Sessions will use signed JWT tokens with...
115
+ ```
116
+
117
+ If you find yourself writing a technical section that doesn't trace to any PRD requirement, STOP and ask: "I'm about to specify X, but I can't find a PRD requirement for it. Should we add one, or is this unnecessary?"
118
+
119
+ ## Step 4: Integration Analysis (Required)
120
+
121
+ Before finalizing the tech spec, this section is MANDATORY:
122
+
123
+ 1. List every existing package this feature depends on
124
+ 2. List every existing package that will need to import from this feature
125
+ 3. For each integration point, document:
126
+ - Which types or contracts are shared
127
+ - How data flows between packages
128
+ - Any patterns established by existing code that must be followed
129
+ - The EXACT function signatures and import paths verified from source code. If you cannot locate an expected export, note explicitly: "WARNING: Could not locate X export in {module} — verify this exists before implementing."
130
+ 4. Check for potential conflicts with in-progress features (other spec directories)
131
+
132
+ ## Step 5: Write the Tech Spec
133
+
134
+ Write `{resolvedFeatureDir}/tech-spec.md` with this structure:
135
+
136
+ ```markdown
137
+ # {Feature Name} — Technical Specification
138
+
139
+ ## 1. Overview
140
+ Brief technical summary and key architectural decisions.
141
+
142
+ ## 2. Module Structure
143
+ Project location, directory layout, public API surface.
144
+
145
+ ## 3. Technical Decisions
146
+ ### 3.1 {Decision Area} (REQ-XXX-NN)
147
+ Decision, rationale, alternatives considered.
148
+
149
+ ## 4. Data Model
150
+ Schemas, types, storage approach.
151
+
152
+ ## 5. API Design
153
+ Endpoints, interfaces, contracts.
154
+
155
+ ## 6. Integration Points
156
+ How this feature connects to existing packages.
157
+
158
+ ## 7. Error Handling
159
+ Error types, propagation, recovery.
160
+
161
+ ## 8. Testing Approach
162
+ Strategy, tooling, coverage targets.
163
+
164
+ ## 9. Dependencies
165
+ External packages, internal packages, version constraints.
166
+
167
+ ## 10. Open Technical Questions
168
+ Unresolved technical decisions.
169
+ ```
170
+
171
+ ## Step 6: Review with User
172
+
173
+ Present the complete tech spec. Ask:
174
+ - "Does this capture all the technical decisions correctly?"
175
+ - "Any patterns from the existing codebase I missed?"
176
+ - "Are the integration points complete?"
177
+
178
+ Use `AskUserQuestion` to collect this feedback.
179
+
180
+ ## Step 7: Update Pipeline State and Commit
181
+
182
+ Write pipeline state conforming to `references/pipeline-state-schema.json`.
183
+
184
+ 1. Update `{resolvedFeatureDir}/.pipeline-state.json`:
185
+ - Set `currentStage` to `forge-3-specs`
186
+ - Record `artifacts`, `completedAt`, `version`
187
+ - Set `stages.forge-2-tech.basedOnVersions` to `{"forge-1-prd": <current forge-1-prd version>}`
188
+ - Check downstream stages (forge-3-specs, forge-4-backlog, forge-5-loop, forge-6-docs). If any have `basedOnVersions` referencing an older version of forge-2-tech, set their status to `stale`
189
+ 2. Use `AskUserQuestion` to ask about notes to persist
190
+ 3. If `gitCommitAfterStage` is true, follow the Git Commit Protocol in `references/shared-conventions.md`: stage files, attempt commit with message `"{commitPrefix}({feature}): complete tech-spec v{n}"`, then set `stages.forge-2-tech.status` to `complete` with commit hash only on success. If commit fails, leave status as `in-progress`.
191
+ 5. Tell the user: "Tech spec complete. Next steps:\n - `/feature-forge:forge-verify {feature}` to verify the tech spec\n - `/feature-forge:forge-3-specs {feature}` to create implementation specs\n - `/feature-forge:forge {feature}` to see full pipeline status"
192
+
193
+ ## Gotchas
194
+
195
+ - Don't duplicate the PRD. The tech spec answers HOW, not WHAT. If you find yourself restating requirements, reference them by ID instead.
196
+ - When the user's stack decisions differ from what you'd recommend, document their choice AND note your concern as an "Alternatives Considered" item — don't silently override their preference.
197
+ - Integration points are the #1 source of implementation surprises. Spend extra time here. Read the actual code of packages this feature touches, don't just guess at their APIs.
198
+ - If the existing codebase has inconsistent patterns (it happens), call it out and ask which pattern should be followed for this feature.
@@ -0,0 +1,95 @@
1
+ # Stack Discovery Checklist (Plugin Default)
2
+
3
+ This file contains a default stack discovery protocol for the feature-forge plugin. Projects can override this by placing a `stack-decisions.md` in `.claude/references/` at the project root.
4
+
5
+ ## Note to Agent
6
+
7
+ This is a DISCOVERY PROTOCOL — it helps you identify what stack the project uses. It is NOT a set of decisions. Always check `.claude/references/stack-decisions.md` first — if present, it takes precedence.
8
+
9
+ After discovering the stack, check if `references/stacks/{stack}.md` exists in the plugin for stack-specific guidance. See `references/stack-resolution.md` for the full resolution protocol.
10
+
11
+ ## Purpose
12
+
13
+ This is a default discovery guide for understanding a project's technology stack. Projects should create `.claude/references/stack-decisions.md` with their actual stack decisions, which takes precedence over this checklist.
14
+
15
+ ## Stack Discovery Protocol
16
+
17
+ ### 1. Identify the Primary Language and Runtime
18
+
19
+ Check for project manifests:
20
+ - `package.json` → Node.js / Bun (JavaScript/TypeScript)
21
+ - `pyproject.toml`, `setup.py`, `setup.cfg` → Python
22
+ - `go.mod` → Go
23
+ - `Cargo.toml` → Rust
24
+ - `pom.xml`, `build.gradle`, `build.gradle.kts` → Java / Kotlin
25
+ - `*.csproj`, `*.sln` → .NET (C#/F#)
26
+ - `mix.exs` → Elixir
27
+ - `Gemfile` → Ruby
28
+ - `Package.swift` → Swift
29
+
30
+ ### 2. Identify the Package Manager
31
+
32
+ Check for lock files:
33
+ - `bun.lockb` → Bun
34
+ - `pnpm-lock.yaml` → pnpm
35
+ - `package-lock.json` → npm
36
+ - `yarn.lock` → Yarn
37
+ - `uv.lock` → uv
38
+ - `poetry.lock` → Poetry
39
+ - `go.sum` → Go modules
40
+ - `Cargo.lock` → Cargo
41
+
42
+ ### 3. Identify Project Structure
43
+
44
+ Check for monorepo/workspace configurations:
45
+ - `turbo.json` → Turborepo
46
+ - `nx.json` → Nx
47
+ - `lerna.json` → Lerna
48
+ - `pnpm-workspace.yaml` → pnpm workspaces
49
+ - `pants.toml` → Pants (Python/Go/Java)
50
+ - `go.work` → Go workspaces
51
+ - `Cargo.toml` with `[workspace]` → Cargo workspaces
52
+
53
+ If none found, this is likely a single-project repository.
54
+
55
+ ### 4. Identify Frameworks and Libraries
56
+
57
+ Examine the dependency manifest for:
58
+ - **Web frameworks**: Hono, Express, Fastify, FastAPI, Django, Flask, Gin, Actix, Spring Boot, etc.
59
+ - **Frontend**: React, Vue, Svelte, Solid, etc.
60
+ - **Database/ORM**: Drizzle, Prisma, SQLAlchemy, GORM, Diesel, etc.
61
+ - **Validation**: Zod, Pydantic, etc.
62
+ - **Testing**: Vitest, pytest, go test, etc.
63
+
64
+ ### 5. Identify Build and Type Checking
65
+
66
+ - Check for CI config (`.github/workflows/`, `Makefile`, `justfile`) to find build, test, and type check commands
67
+ - Check `package.json` scripts, `pyproject.toml` `[tool.*]` sections, or `Makefile` targets
68
+
69
+ ## How to Create a Project-Level Override
70
+
71
+ Create `.claude/references/stack-decisions.md` in your project root with your specific stack decisions. See `references/stacks/typescript.md` or `references/stacks/python.md` for stack-specific examples of what to include.
72
+
73
+ ```markdown
74
+ # Stack Decisions
75
+
76
+ ## Runtime & Build
77
+ - [Language and version]
78
+ - [Package manager]
79
+ - [Build tool / monorepo orchestration if applicable]
80
+
81
+ ## Backend
82
+ - [Web framework]
83
+ - [Database / ORM]
84
+ - [Validation library]
85
+
86
+ ## Frontend (if applicable)
87
+ - [UI framework]
88
+ - [Component library]
89
+ - [Styling approach]
90
+
91
+ ## Conventions
92
+ - [Testing framework and approach]
93
+ - [Type checking / linting command]
94
+ - [Module organization patterns]
95
+ ```