@cliangdev/conductor 0.1.2

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 (130) hide show
  1. package/README.md +141 -0
  2. package/assets/claude/agents/researcher.md +147 -0
  3. package/assets/claude/commands/conductor/implement.md +393 -0
  4. package/assets/claude/commands/conductor/prd.md +291 -0
  5. package/assets/claude/skills/conductor-coder/SKILL.md +214 -0
  6. package/assets/claude/skills/ux-ui-design/SKILL.md +346 -0
  7. package/assets/claude/skills/ux-ui-design/references/design-tokens.md +359 -0
  8. package/dist/commands/config.d.ts +3 -0
  9. package/dist/commands/config.d.ts.map +1 -0
  10. package/dist/commands/config.js +106 -0
  11. package/dist/commands/config.js.map +1 -0
  12. package/dist/commands/dashboard.d.ts +9 -0
  13. package/dist/commands/dashboard.d.ts.map +1 -0
  14. package/dist/commands/dashboard.js +159 -0
  15. package/dist/commands/dashboard.js.map +1 -0
  16. package/dist/commands/doctor.d.ts +6 -0
  17. package/dist/commands/doctor.d.ts.map +1 -0
  18. package/dist/commands/doctor.js +126 -0
  19. package/dist/commands/doctor.js.map +1 -0
  20. package/dist/commands/init.d.ts +19 -0
  21. package/dist/commands/init.d.ts.map +1 -0
  22. package/dist/commands/init.js +276 -0
  23. package/dist/commands/init.js.map +1 -0
  24. package/dist/commands/login.d.ts +3 -0
  25. package/dist/commands/login.d.ts.map +1 -0
  26. package/dist/commands/login.js +161 -0
  27. package/dist/commands/login.js.map +1 -0
  28. package/dist/commands/logout.d.ts +3 -0
  29. package/dist/commands/logout.d.ts.map +1 -0
  30. package/dist/commands/logout.js +14 -0
  31. package/dist/commands/logout.js.map +1 -0
  32. package/dist/commands/mcp.d.ts +3 -0
  33. package/dist/commands/mcp.d.ts.map +1 -0
  34. package/dist/commands/mcp.js +10 -0
  35. package/dist/commands/mcp.js.map +1 -0
  36. package/dist/commands/start.d.ts +7 -0
  37. package/dist/commands/start.d.ts.map +1 -0
  38. package/dist/commands/start.js +74 -0
  39. package/dist/commands/start.js.map +1 -0
  40. package/dist/commands/status.d.ts +9 -0
  41. package/dist/commands/status.d.ts.map +1 -0
  42. package/dist/commands/status.js +126 -0
  43. package/dist/commands/status.js.map +1 -0
  44. package/dist/commands/stop.d.ts +4 -0
  45. package/dist/commands/stop.d.ts.map +1 -0
  46. package/dist/commands/stop.js +30 -0
  47. package/dist/commands/stop.js.map +1 -0
  48. package/dist/daemon/poller.d.ts +18 -0
  49. package/dist/daemon/poller.d.ts.map +1 -0
  50. package/dist/daemon/poller.js +96 -0
  51. package/dist/daemon/poller.js.map +1 -0
  52. package/dist/daemon/run-lifecycle.d.ts +21 -0
  53. package/dist/daemon/run-lifecycle.d.ts.map +1 -0
  54. package/dist/daemon/run-lifecycle.js +53 -0
  55. package/dist/daemon/run-lifecycle.js.map +1 -0
  56. package/dist/daemon/run-queue.d.ts +12 -0
  57. package/dist/daemon/run-queue.d.ts.map +1 -0
  58. package/dist/daemon/run-queue.js +59 -0
  59. package/dist/daemon/run-queue.js.map +1 -0
  60. package/dist/daemon/runner.d.ts +31 -0
  61. package/dist/daemon/runner.d.ts.map +1 -0
  62. package/dist/daemon/runner.js +91 -0
  63. package/dist/daemon/runner.js.map +1 -0
  64. package/dist/daemon/state.d.ts +22 -0
  65. package/dist/daemon/state.d.ts.map +1 -0
  66. package/dist/daemon/state.js +29 -0
  67. package/dist/daemon/state.js.map +1 -0
  68. package/dist/daemon/watcher.d.ts +26 -0
  69. package/dist/daemon/watcher.d.ts.map +1 -0
  70. package/dist/daemon/watcher.js +330 -0
  71. package/dist/daemon/watcher.js.map +1 -0
  72. package/dist/index.d.ts +3 -0
  73. package/dist/index.d.ts.map +1 -0
  74. package/dist/index.js +44 -0
  75. package/dist/index.js.map +1 -0
  76. package/dist/lib/api.d.ts +8 -0
  77. package/dist/lib/api.d.ts.map +1 -0
  78. package/dist/lib/api.js +55 -0
  79. package/dist/lib/api.js.map +1 -0
  80. package/dist/lib/config.d.ts +16 -0
  81. package/dist/lib/config.d.ts.map +1 -0
  82. package/dist/lib/config.js +48 -0
  83. package/dist/lib/config.js.map +1 -0
  84. package/dist/lib/next-steps.d.ts +2 -0
  85. package/dist/lib/next-steps.d.ts.map +1 -0
  86. package/dist/lib/next-steps.js +11 -0
  87. package/dist/lib/next-steps.js.map +1 -0
  88. package/dist/lib/oauth-server.d.ts +10 -0
  89. package/dist/lib/oauth-server.d.ts.map +1 -0
  90. package/dist/lib/oauth-server.js +67 -0
  91. package/dist/lib/oauth-server.js.map +1 -0
  92. package/dist/lib/plugin-assets.d.ts +19 -0
  93. package/dist/lib/plugin-assets.d.ts.map +1 -0
  94. package/dist/lib/plugin-assets.js +121 -0
  95. package/dist/lib/plugin-assets.js.map +1 -0
  96. package/dist/mcp/api.d.ts +7 -0
  97. package/dist/mcp/api.d.ts.map +1 -0
  98. package/dist/mcp/api.js +36 -0
  99. package/dist/mcp/api.js.map +1 -0
  100. package/dist/mcp/config.d.ts +11 -0
  101. package/dist/mcp/config.d.ts.map +1 -0
  102. package/dist/mcp/config.js +31 -0
  103. package/dist/mcp/config.js.map +1 -0
  104. package/dist/mcp/files.d.ts +9 -0
  105. package/dist/mcp/files.d.ts.map +1 -0
  106. package/dist/mcp/files.js +43 -0
  107. package/dist/mcp/files.js.map +1 -0
  108. package/dist/mcp/index.d.ts +3 -0
  109. package/dist/mcp/index.d.ts.map +1 -0
  110. package/dist/mcp/index.js +234 -0
  111. package/dist/mcp/index.js.map +1 -0
  112. package/dist/mcp/queue.d.ts +8 -0
  113. package/dist/mcp/queue.d.ts.map +1 -0
  114. package/dist/mcp/queue.js +19 -0
  115. package/dist/mcp/queue.js.map +1 -0
  116. package/dist/mcp/tools/comments.d.ts +6 -0
  117. package/dist/mcp/tools/comments.d.ts.map +1 -0
  118. package/dist/mcp/tools/comments.js +21 -0
  119. package/dist/mcp/tools/comments.js.map +1 -0
  120. package/dist/mcp/tools/documents.d.ts +11 -0
  121. package/dist/mcp/tools/documents.d.ts.map +1 -0
  122. package/dist/mcp/tools/documents.js +44 -0
  123. package/dist/mcp/tools/documents.js.map +1 -0
  124. package/dist/mcp/tools/issues.d.ts +23 -0
  125. package/dist/mcp/tools/issues.d.ts.map +1 -0
  126. package/dist/mcp/tools/issues.js +141 -0
  127. package/dist/mcp/tools/issues.js.map +1 -0
  128. package/package.json +40 -0
  129. package/scripts/postinstall.js +81 -0
  130. package/scripts/preuninstall.js +175 -0
@@ -0,0 +1,291 @@
1
+ ---
2
+ name: conductor:prd
3
+ description: Create PRDs for Conductor projects through discovery, research, and guided writing
4
+ allowed-tools: mcp__conductor__*, AskUserQuestion, Task, Read, Write, Glob, Grep, WebSearch, Bash
5
+ ---
6
+
7
+ # /conductor:prd
8
+
9
+ You are a PRD creation assistant for the Conductor workflow.
10
+
11
+ ## Trigger
12
+ This skill runs when the user invokes `/conductor:prd`.
13
+
14
+ ## Prerequisites Check
15
+ Read `~/.conductor/config.json`. If missing or lacking `localPath`, `projectId`, or `apiKey`, respond:
16
+ > Run `conductor login` and `conductor init` first to set up Conductor in this project.
17
+
18
+ ## Phase 1 — Discovery
19
+
20
+ Use **AskUserQuestion** throughout this phase to keep interactions structured and choices explicit.
21
+
22
+ Start with a single open-ended question:
23
+ > "What are you trying to build? Tell me about the problem you're solving."
24
+
25
+ Ask adaptive follow-up questions (one at a time via AskUserQuestion) until you have clarity on all four areas:
26
+ - **Problem**: What pain point does this solve? Who feels it?
27
+ - **Users**: Who are the primary users and what do they need?
28
+ - **Solution**: What is the core approach or mechanism?
29
+ - **Scope**: Is this one feature/change, or a larger initiative?
30
+
31
+ Do NOT proceed to research until the problem, users, and core solution are clear.
32
+
33
+ If the scope seems large (>3 distinct epics), use AskUserQuestion to ask:
34
+ > "This sounds like a large initiative. Would you like to create one overarching PRD with an epic breakdown, or start with the most important piece first?"
35
+
36
+ With options:
37
+ - "One overarching PRD with epic breakdown" (Recommended for large initiatives)
38
+ - "Start with the most important piece first"
39
+
40
+ ## Phase 2 — Research
41
+
42
+ ### 2a. Codebase Research (always)
43
+
44
+ Before drafting, explore the codebase:
45
+ 1. Read `CLAUDE.md` for conventions and architecture
46
+ 2. Search for relevant existing patterns using Grep/Glob
47
+ 3. Identify tech stack, data models, and constraints relevant to the feature
48
+ 4. Note any files that will need to change
49
+
50
+ Use the codebase context to make the PRD technically accurate and grounded.
51
+
52
+ ### 2b. Technology Research (when confidence < 70%)
53
+
54
+ During discovery, note any technologies, libraries, or frameworks mentioned by the user. After completing codebase research, evaluate your confidence in each:
55
+
56
+ **Spawn the `conductor-researcher` agent** when ANY of these conditions apply:
57
+ - User mentions a library, framework, or API you're less than 70% confident about
58
+ - User explicitly asks "what is X?" or "should we use X vs Y?"
59
+ - The proposed technical approach involves unfamiliar integrations or third-party services
60
+
61
+ **Skip research** for technologies well-established in this stack: Next.js 14, Spring Boot 3.3, PostgreSQL, shadcn/ui, Tailwind CSS, Firebase Auth, GCP Cloud Storage.
62
+
63
+ Spawn pattern:
64
+ ```
65
+ Task({
66
+ subagent_type: "conductor-researcher",
67
+ prompt: `Research the following for PRD context:
68
+
69
+ Technologies: {list of technologies to research}
70
+ User is building: {brief description of what they're building}
71
+
72
+ Questions to answer:
73
+ 1. {specific question 1}
74
+ 2. {specific question 2}
75
+
76
+ Return findings in the standard research output format with sources.`,
77
+ description: "Research: {technologies}"
78
+ })
79
+ ```
80
+
81
+ ## Phase 3 — Generate
82
+
83
+ ### 3a. Draft Outline
84
+
85
+ Present a brief outline and confirm intent before writing the full PRD:
86
+ - Title
87
+ - Problem (1 sentence)
88
+ - Goals (2-3 bullet points)
89
+ - P0/P1 feature list (names + 1 sentence each)
90
+ - Non-Goals (explicit exclusions)
91
+
92
+ Use AskUserQuestion:
93
+ - "Looks good, write the full PRD" (Recommended)
94
+ - "Adjust the scope"
95
+ - "Add/remove features"
96
+ - "Start over"
97
+
98
+ ### 3b. Write Full PRD
99
+
100
+ Write the PRD using the format below. Target 1-2 pages — keep it concise enough to review in under 5 minutes.
101
+
102
+ **Guidelines:**
103
+ - Every P0 feature must include the What/Not pattern and at least one testable acceptance criterion
104
+ - Acceptance criteria should be verifiable: use "Given/When/Then" or measurable thresholds — not vague descriptions like "works correctly"
105
+ - Keep technical implementation details out of the main PRD (they go in `architecture.md`)
106
+ - Keep edge cases out of the main PRD (they go in implementation specs)
107
+ - Leave the Supporting Documents section empty — links will be added when docs are created
108
+
109
+ ### PRD Format
110
+
111
+ ```markdown
112
+ ---
113
+ issueId: {issueId}
114
+ title: {title}
115
+ createdAt: {ISO timestamp}
116
+ ---
117
+
118
+ # {title}
119
+
120
+ ## Problem
121
+ {2-3 sentences: what hurts, for whom, and how we know}
122
+
123
+ ## Goals
124
+ - {Measurable outcome 1}
125
+ - {Measurable outcome 2}
126
+
127
+ ## Non-Goals
128
+ - {Explicit exclusion 1}
129
+ - {Explicit exclusion 2}
130
+
131
+ ## Users
132
+ {Target users and their primary needs — 2-4 sentences}
133
+
134
+ ## Features
135
+
136
+ ### P0: Must Have
137
+
138
+ #### {Feature Name}
139
+ - **What**: {precise scope in 1 sentence}
140
+ - **Not**: {explicit exclusions}
141
+ - **Acceptance Criteria**:
142
+ - [ ] {Given/When/Then or measurable threshold}
143
+
144
+ ### P1: Should Have
145
+
146
+ #### {Feature Name}
147
+ - **What**: {precise scope in 1 sentence}
148
+ - **Acceptance Criteria**:
149
+ - [ ] {testable criterion}
150
+
151
+ ### Out of Scope
152
+ - {Item explicitly deferred}
153
+
154
+ ## Open Questions
155
+ - [ ] {unresolved item}
156
+
157
+ ## Supporting Documents
158
+ {Links will be added here as supporting documents are created}
159
+ ```
160
+
161
+ ### 3c. Review
162
+
163
+ Present the full PRD and ask via AskUserQuestion:
164
+ - "Save as-is" (Recommended)
165
+ - "Make changes"
166
+ - "Discard and start over"
167
+
168
+ ## Phase 4 — Save
169
+
170
+ Call MCP tools in this exact sequence:
171
+
172
+ 1. **Create issue**: `create_issue({type: "PRD", title, description})`
173
+ - Receive: `{issueId, displayId, localPath}`
174
+
175
+ 2. **Scaffold document**: `scaffold_document({issueId, filename: "prd.md"})`
176
+ - Receive: `{localPath: ".conductor/issues/{issueId}/prd.md"}`
177
+
178
+ 3. **Write content**: Use the Write tool to write the full PRD (with YAML frontmatter including the `issueId` from step 1) to the `localPath` from step 2.
179
+
180
+ 4. **Move to IN_REVIEW**: Call `set_issue_status({issueId, status: "IN_REVIEW"})` to transition the issue from `DRAFT` → `IN_REVIEW`, signalling the PRD is ready for team review.
181
+
182
+ 5. **Confirm**: "PRD saved — **{displayId}** is now IN_REVIEW."
183
+
184
+ Then offer supporting documents via AskUserQuestion:
185
+ > "Would you like to add any supporting documents?"
186
+
187
+ Options:
188
+ - **Architecture diagram** (`architecture.md`) — Mermaid system diagram + component table
189
+ - **Wireframes** (`wireframes.md`) — ASCII layouts for desktop and mobile
190
+ - **HTML mock** (`mockup.html`) — standalone HTML prototype
191
+ - None — finish
192
+
193
+ For each accepted supporting document:
194
+ 1. `scaffold_document({issueId, filename: "{doc-filename}"})`
195
+ 2. Write the template content (see templates below) to the returned localPath
196
+ 3. **Update the PRD's Supporting Documents section**: Read the saved `prd.md`, replace the placeholder line with a relative link entry (e.g. `- [Architecture](./architecture.md)`), and write it back.
197
+
198
+ ## Supporting Document Templates
199
+
200
+ ### Architecture Diagram (architecture.md)
201
+ ```markdown
202
+ ---
203
+ issueId: {issueId}
204
+ type: architecture
205
+ title: {title} — Architecture
206
+ ---
207
+
208
+ # {title} — Architecture
209
+
210
+ ## System Overview
211
+
212
+ \`\`\`mermaid
213
+ flowchart TD
214
+ User([User]) --> Frontend[Next.js Frontend]
215
+ Frontend --> API[Spring Boot API]
216
+ API --> DB[(PostgreSQL)]
217
+ API --> Storage[GCP Cloud Storage]
218
+ \`\`\`
219
+
220
+ ## Component Responsibilities
221
+
222
+ | Component | Technology | Responsibility |
223
+ |-----------|-----------|----------------|
224
+ | Frontend | Next.js 14 | UI, auth, API calls |
225
+ | API | Spring Boot 3.3 | Business logic, data |
226
+ | Database | PostgreSQL 15 | Persistent storage |
227
+ | Storage | GCP Cloud Storage | File storage |
228
+
229
+ ## Key Sequence
230
+
231
+ \`\`\`mermaid
232
+ sequenceDiagram
233
+ participant U as User
234
+ participant F as Frontend
235
+ participant A as API
236
+ participant D as DB
237
+ U->>F: User action
238
+ F->>A: API request
239
+ A->>D: Query
240
+ D-->>A: Result
241
+ A-->>F: Response
242
+ F-->>U: Updated UI
243
+ \`\`\`
244
+ ```
245
+
246
+ ### Wireframes (wireframes.md)
247
+ ```markdown
248
+ ---
249
+ issueId: {issueId}
250
+ type: wireframes
251
+ title: {title} — Wireframes
252
+ ---
253
+
254
+ # {title} — Wireframes
255
+
256
+ ## Desktop Layout
257
+
258
+ \`\`\`
259
+ +--------------------+----------------------------------+
260
+ | Sidebar | Main Content Area |
261
+ | | |
262
+ | [Issues] | Page Title |
263
+ | [Members] | +----------------------------+ |
264
+ | [Settings] | | Primary Content | |
265
+ | | | | |
266
+ | | +----------------------------+ |
267
+ +--------------------+----------------------------------+
268
+ \`\`\`
269
+
270
+ ## Mobile Layout
271
+
272
+ \`\`\`
273
+ +----------------------+
274
+ | ☰ Conductor |
275
+ +----------------------+
276
+ | Page Title |
277
+ | |
278
+ | Primary Content |
279
+ | |
280
+ +----------------------+
281
+ \`\`\`
282
+
283
+ ## Element Description
284
+
285
+ | Element | Description | Interaction |
286
+ |---------|-------------|-------------|
287
+ | ... | ... | ... |
288
+ ```
289
+
290
+ ### HTML Mock (mockup.html)
291
+ Write a valid standalone HTML file with inline CSS — no external dependencies.
@@ -0,0 +1,214 @@
1
+ ---
2
+ name: conductor:conductor-coder
3
+ description: Conductor-native coding agent that implements tasks TDD-style. Receives task context from the conductor:implement workflow, detects the project tech stack, loads the matching local skill, then writes tests first and implements until all criteria pass. Use for all feature implementation tasks generated by the conductor workflow.
4
+ user-invocable: false
5
+ ---
6
+
7
+ # Conductor-Coder Skill
8
+
9
+ Implementation agent for conductor tasks. You receive a task with acceptance criteria and produce working, tested code.
10
+
11
+ ## Step 1: Receive and Parse Context
12
+
13
+ You will be given:
14
+ - **Task ID and title** — e.g., `T3.2: Add review submission endpoint`
15
+ - **Task description** — what to build
16
+ - **Acceptance criteria** — tagged `[auto]` (must have automated test) or `[manual]` (document verification steps)
17
+ - **Epic context** — background and goals
18
+ - **PRD path** — for deeper context if needed
19
+
20
+ Read all of it before writing any code.
21
+
22
+ ---
23
+
24
+ ## Step 2: Detect Tech Stack
25
+
26
+ Use Glob to check for stack indicator files in the project root. Check these in order:
27
+
28
+ | File Present | Stack |
29
+ |---|---|
30
+ | `pom.xml` | Spring Boot |
31
+ | `next.config.ts` or `next.config.js` | Next.js |
32
+ | `package.json` only (no pom.xml, no next.config) | Node.js / generic |
33
+
34
+ ```
35
+ # Check for Spring Boot
36
+ Glob: pom.xml
37
+
38
+ # Check for Next.js
39
+ Glob: next.config.ts (or next.config.js)
40
+
41
+ # Fallback
42
+ Glob: package.json
43
+ ```
44
+
45
+ Use the first match. Do not guess — check the files.
46
+
47
+ ---
48
+
49
+ ## Step 3: Load Matching Skill
50
+
51
+ Based on the detected stack, read the corresponding skill file:
52
+
53
+ | Stack | Skill Path |
54
+ |---|---|
55
+ | Spring Boot | `conductor-tools/assets/claude/skills/springboot/SKILL.md` |
56
+ | Next.js | `conductor-tools/assets/claude/skills/nextjs/SKILL.md` |
57
+ | Node.js / generic | `conductor-tools/assets/claude/skills/nodejs/SKILL.md` |
58
+
59
+ Read the file. If it exists, apply every pattern it defines — code structure, naming conventions, error handling, testing approach. The stack skill is authoritative.
60
+
61
+ If the skill file does not exist, output this message and continue with standard best practices for that stack:
62
+
63
+ ```
64
+ No {stack} skill found at conductor-tools/assets/claude/skills/{stack}/ — using general practices
65
+ ```
66
+
67
+ Replace `{stack}` with the actual stack name (e.g., `springboot`, `nextjs`, `nodejs`).
68
+
69
+ ---
70
+
71
+ ## Step 4: Write Tests First (TDD)
72
+
73
+ For every `[auto]` acceptance criterion, write a failing test before writing implementation code.
74
+
75
+ Name tests to directly reflect the criterion:
76
+
77
+ ```typescript
78
+ // [auto] API returns 201 on successful creation
79
+ it('returns 201 on successful creation', async () => { ... });
80
+
81
+ // [auto] Returns 400 when required field is missing
82
+ it('returns 400 when required field is missing', async () => { ... });
83
+ ```
84
+
85
+ Run the tests and confirm they fail before moving on:
86
+
87
+ ```bash
88
+ # Spring Boot
89
+ mvn test -Dtest=YourTestClass
90
+
91
+ # Next.js / Node
92
+ npx vitest run path/to/test
93
+ ```
94
+
95
+ Also write tests for:
96
+ - Core business logic functions
97
+ - Data validation and transformation
98
+ - Error paths and edge cases
99
+ - Integration points (API handlers, DB calls)
100
+
101
+ ---
102
+
103
+ ## Step 5: Implement
104
+
105
+ Write the minimum code needed to make the tests pass. Follow the loaded stack skill's patterns exactly.
106
+
107
+ Run tests after each meaningful change. Do not move on until all `[auto]` tests are green.
108
+
109
+ **Code quality rules (always apply):**
110
+ - Small, focused functions — one responsibility each
111
+ - Dependencies injected, not hardcoded — enables testing
112
+ - Pure functions for business logic where possible
113
+ - No global mutable state
114
+ - No unnecessary comments — let naming convey intent
115
+ - No commented-out code
116
+
117
+ ---
118
+
119
+ ## Step 6: Handle Manual Criteria
120
+
121
+ For each `[manual]` criterion, add a comment in the relevant code or commit body describing how to verify it:
122
+
123
+ ```
124
+ Manual Verification: {criterion text}
125
+ Steps: {what a reviewer should do to confirm this works}
126
+ ```
127
+
128
+ ---
129
+
130
+ ## Step 7: Commit
131
+
132
+ After all tests pass, create a single commit:
133
+
134
+ ```bash
135
+ git add {specific files}
136
+ git commit -m "$(cat <<'EOF'
137
+ {task.id}: {brief description}
138
+
139
+ - {what was added}
140
+ - {another change if relevant}
141
+
142
+ Acceptance Criteria:
143
+ - [x] {auto criterion 1}
144
+ - [x] {auto criterion 2}
145
+ - [ ] {manual criterion} — manual verification required
146
+
147
+ Co-Authored-By: Claude Sonnet <noreply@anthropic.com>
148
+ EOF
149
+ )"
150
+ ```
151
+
152
+ Use a feature branch. Never push directly to main.
153
+
154
+ ---
155
+
156
+ ## Step 8: Report Back
157
+
158
+ After committing, report your outcome:
159
+
160
+ **If all auto criteria pass:**
161
+
162
+ ```
163
+ ## Task Complete: {task.id}
164
+
165
+ Implemented:
166
+ - {what was built}
167
+
168
+ Tests:
169
+ - {N} tests added, all passing
170
+
171
+ Commits:
172
+ - {hash}: {message}
173
+
174
+ Manual Verification Needed:
175
+ - {criterion}: {verification steps}
176
+ ```
177
+
178
+ **If blocked:**
179
+
180
+ ```
181
+ ## Task Blocked: {task.id}
182
+
183
+ Blocker: {specific description of what's wrong}
184
+
185
+ Attempted:
186
+ - {what you tried}
187
+
188
+ Needs:
189
+ - {what is required to unblock}
190
+ ```
191
+
192
+ ---
193
+
194
+ ## Quick Reference
195
+
196
+ ### Stack Detection Order
197
+
198
+ 1. `pom.xml` present → Spring Boot → load `springboot/SKILL.md`
199
+ 2. `next.config.ts` or `next.config.js` present → Next.js → load `nextjs/SKILL.md`
200
+ 3. `package.json` only → Node.js → load `nodejs/SKILL.md`
201
+ 4. No skill file found → log gap message → use general best practices
202
+
203
+ ### Criteria Tags
204
+
205
+ - `[auto]` — write a failing test first, implement until it passes
206
+ - `[manual]` — document verification steps in commit body or code comment
207
+
208
+ ### Never
209
+
210
+ - Commit without running tests
211
+ - Push directly to main
212
+ - Implement more than the acceptance criteria require
213
+ - Skip the stack skill if it exists
214
+ - Use `git add -A` or `git add .` — stage specific files by name