@chris1807/claude-kit 2.1.30 → 2.1.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -17,7 +17,7 @@ The slash commands assume Azure DevOps as the system of record:
17
17
  - **Releases & deployments** — tracked as Azure DevOps iterations (`Release #N`) and tags; CD runs on Azure Pipelines
18
18
  - **Wiki, test plans, advanced security alerts** — all surfaced through the same Azure DevOps MCP server
19
19
 
20
- > **Not using Azure DevOps?** The Claude Code primitives (agents, hooks, memory) are still useful, but the slash commands, the `devops-tracker` agent, and the deployment workflow won't apply out of the box — you'd need to rewrite the `/implement`, `/review`, `/deploy`, `/create-release`, `/deploy-release`, `/cherry-pick`, `/promote`, `/rollback`, `/status`, `/rework`, and `/resolve-feedback` commands against GitHub / GitLab / Jira / etc.
20
+ > **Not using Azure DevOps?** The Claude Code primitives (agents, hooks, memory) are still useful, but the slash commands and the deployment workflow won't apply out of the box — you'd need to rewrite the `/implement`, `/review`, `/deploy`, `/create-release`, `/deploy-release`, `/cherry-pick`, `/promote`, `/rollback`, `/status`, `/rework`, and `/resolve-feedback` commands against GitHub / GitLab / Jira / etc.
21
21
 
22
22
  Every session Claude learns from your feedback and gets better at helping you specifically. The infrastructure is modular — install only what your project needs.
23
23
 
@@ -25,8 +25,8 @@ Every session Claude learns from your feedback and gets better at helping you sp
25
25
 
26
26
  | Component | Count | Where Installed | Description |
27
27
  |-----------|-------|----------------|-------------|
28
- | **Global Agents** | 13 | `~/.claude/agents/` (your machine, all projects) | backend, frontend, legacy (Lucee/CFML), manager, mockup, reviewer, test-runner, build-validator, lint-checker, uat-generator, azure-ops, security-auditor, api-tester |
29
- | **Project Agents** | 3 | `.claude/agents/` (in the project) | deployer, db-admin, devops-tracker |
28
+ | **Global Agents** | 10 | `~/.claude/agents/` (your machine, all projects) | backend, frontend, legacy (Lucee/CFML), mockup, reviewer, test-runner, build-validator, lint-checker, azure-ops, security-auditor |
29
+ | **Project Agents** | 2 | `.claude/agents/` (in the project) | deployer, db-admin |
30
30
  | **Hooks** | 9 | `.claude/hooks/` (in the project) | Secret blocker, sensitive data blocker (Bash + MCP + output), protected files, auto-format, test suggestions, UAT reminder, self-improve |
31
31
  | **Slash Commands** | 21 | `.claude/commands/` (in the project) | `/implement`, `/review`, `/deep-review`, `/resolve-feedback`, `/fix-review`, `/deploy`, `/create-release`, `/deploy-release`, `/add-to-release`, `/cherry-pick`, `/promote`, `/rollback`, `/status`, `/cleanup-branches`, `/close-orphan-tasks`, `/quote`, `/explain` |
32
32
  | **MCP Servers** | Up to 6 | `.mcp.json` (in the project) | **Azure DevOps** (work items, repos, pipelines, wiki), Playwright, MongoDB/SQL/Postgres, Teams, Stripe, Azure CLI |
@@ -71,7 +71,7 @@ npx @chris1807/claude-kit init
71
71
  You'll be asked:
72
72
  1. **Target directory** — where is your project?
73
73
  2. **Components** — checkboxes to pick which parts to install:
74
- - ☑ Project Agents (deployer, db-admin, devops-tracker)
74
+ - ☑ Project Agents (deployer, db-admin)
75
75
  - ☑ Hooks (secret blocker, auto-format, etc.)
76
76
  - ☑ Slash Commands (/implement, /review, /resolve-feedback, /deploy, /create-release, /deploy-release, /add-to-release, /cherry-pick, /promote, /rollback, /status, /cleanup-branches, /quote, /explain)
77
77
  - ☑ MCP Servers
@@ -103,8 +103,8 @@ npx @chris1807/claude-kit init --all
103
103
  ```
104
104
 
105
105
  This installs:
106
- - ✅ Global agents (backend, frontend, legacy, manager, mockup, reviewer, test-runner, build-validator, lint-checker, uat-generator, azure-ops, security-auditor, api-tester)
107
- - ✅ Project agents (deployer, db-admin, devops-tracker)
106
+ - ✅ Global agents (backend, frontend, legacy, mockup, reviewer, test-runner, build-validator, lint-checker, azure-ops, security-auditor)
107
+ - ✅ Project agents (deployer, db-admin)
108
108
  - ✅ All 9 hooks
109
109
  - ✅ All 13 slash commands
110
110
  - ✅ MCP servers: Playwright, Teams, Azure CLI (+ your DB choice)
@@ -161,12 +161,11 @@ The installer automatically **skips global agents** that are already installed (
161
161
  📦 Global Agents → ~/.claude/agents/
162
162
  = azure-ops.md (identical, skipped) ← already installed, skipped
163
163
  = security-auditor.md (identical, skipped)
164
- = api-tester.md (identical, skipped)
164
+ = reviewer.md (identical, skipped)
165
165
 
166
166
  📦 Project Agents → .claude/agents/ ← fresh install for this project
167
167
  ✓ deployer.md
168
168
  ✓ db-admin.md
169
- ✓ devops-tracker.md
170
169
  ...
171
170
  ```
172
171
 
@@ -179,23 +178,19 @@ The installer automatically **skips global agents** that are already installed (
179
178
  ├── backend.md # .NET/C# backend developer (Clean Architecture)
180
179
  ├── frontend.md # React/TypeScript frontend developer
181
180
  ├── legacy.md # Lucee/CFML legacy app developer (RBWO + others)
182
- ├── manager.md # Workflow orchestrator (delegates to other agents)
183
181
  ├── mockup.md # HTML mockup designer
184
182
  ├── reviewer.md # Code reviewer (read-only)
185
183
  ├── test-runner.md # Test executor — xUnit, Vitest, Playwright (read-only)
186
184
  ├── build-validator.md # Build checker (read-only)
187
185
  ├── lint-checker.md # ESLint + dotnet format checker
188
- ├── uat-generator.md # UAT checklist generator (read-only)
189
186
  ├── azure-ops.md # Azure infrastructure management
190
- ├── security-auditor.md # Security scanning (read-only)
191
- └── api-tester.md # API endpoint testing
187
+ └── security-auditor.md # Security scanning (read-only)
192
188
 
193
189
  your-project/ ← Project-specific
194
190
  ├── .claude/
195
191
  │ ├── agents/
196
192
  │ │ ├── deployer.md # Commit → push → deploy → monitor
197
- │ │ ├── db-admin.md # Database queries and data management
198
- │ │ └── devops-tracker.md # Azure DevOps work item management
193
+ │ │ └── db-admin.md # Database queries and data management
199
194
  │ │
200
195
  │ ├── hooks/
201
196
  │ │ ├── sensitive-data-blocker.sh # BLOCKS mongosh queries for TIN/SSN/PII
@@ -248,11 +243,11 @@ Verify MCP servers are connected:
248
243
 
249
244
  ### Ultracode (multi-agent workflows)
250
245
 
251
- The kit's agents normally run as **sequential delegation** — the `manager` agent hands work to one specialist at a time through the `Task` tool. **Ultracode** is a separate, harness-level gear that authorizes the `Workflow` tool to fan out many agents in parallel under a deterministic script. The two compose: ultracode doesn't replace the pipeline, it parallelizes the parts that are embarrassingly parallel.
246
+ The kit's agents normally run as **sequential delegation** — the main loop hands work to one specialist at a time through the `Task` tool. **Ultracode** is a separate, harness-level gear that authorizes the `Workflow` tool to fan out many agents in parallel under a deterministic script. The two compose: ultracode doesn't replace the pipeline, it parallelizes the parts that are embarrassingly parallel.
252
247
 
253
248
  Ultracode is **opt-in**. It's on only when you type `ultracode` in a prompt, when a system-reminder confirms it, or when a slash command's instructions say to use `Workflow`. When it's off, everything runs the normal sequential way — nothing changes.
254
249
 
255
- Only the **main Claude Code loop** and **slash commands** can call `Workflow`. Subagents (anything running under `Task`, including `manager`) cannot — so ultracode-scale fan-out is a main-loop / slash-command concern.
250
+ Only the **main Claude Code loop** and **slash commands** can call `Workflow`. Subagents (anything running under `Task`) cannot — so ultracode-scale fan-out is a main-loop / slash-command concern.
256
251
 
257
252
  Kit operations that benefit from ultracode when it's on:
258
253
 
package/bin/cli.js CHANGED
@@ -156,6 +156,24 @@ function mergeHooks(existing, template) {
156
156
  // ============================================================================
157
157
  // Step 1: Global Agents (always)
158
158
  // ============================================================================
159
+
160
+ // Agents removed from the kit, cleaned up on install/update so stale copies
161
+ // don't linger. manager/uat-generator/api-tester were superseded by the
162
+ // Workflow tool and inline command steps; devops-tracker by direct Azure
163
+ // DevOps MCP access in the main loop.
164
+ const RETIRED_GLOBAL_AGENTS = ['manager.md', 'uat-generator.md', 'api-tester.md'];
165
+ const RETIRED_PROJECT_AGENTS = ['devops-tracker.md'];
166
+
167
+ async function removeRetiredAgents(agentsDir, retired) {
168
+ for (const file of retired) {
169
+ const target = join(agentsDir, file);
170
+ if (await fs.pathExists(target)) {
171
+ await fs.remove(target);
172
+ console.log(chalk.gray(` - ${file} (retired, removed)`));
173
+ }
174
+ }
175
+ }
176
+
159
177
  async function installGlobalAgents() {
160
178
  console.log(chalk.yellow.bold('\n📦 Global Agents → ~/.claude/agents/\n'));
161
179
 
@@ -172,6 +190,7 @@ async function installGlobalAgents() {
172
190
  );
173
191
  }
174
192
  }
193
+ await removeRetiredAgents(globalAgentsDir, RETIRED_GLOBAL_AGENTS);
175
194
  }
176
195
 
177
196
  // ============================================================================
@@ -219,7 +238,7 @@ async function main() {
219
238
  name: 'selected',
220
239
  message: 'Select components to install:',
221
240
  choices: [
222
- { name: 'Project Agents (deployer, db-admin, devops-tracker)', value: 'agents', checked: true },
241
+ { name: 'Project Agents (deployer, db-admin)', value: 'agents', checked: true },
223
242
  { name: 'Hooks (secret blocker, auto-format, test suggestions)', value: 'hooks', checked: true },
224
243
  { name: 'Slash Commands (implement, review, deploy, releases, cherry-pick, promote, rollback, status, cleanup, create-work-item, …)', value: 'commands', checked: true },
225
244
  { name: 'MCP Servers (Playwright, DB, Teams, Stripe, Azure, Azure DevOps)', value: 'mcp', checked: true },
@@ -246,6 +265,7 @@ async function main() {
246
265
  );
247
266
  }
248
267
  }
268
+ await removeRetiredAgents(agentsDir, RETIRED_PROJECT_AGENTS);
249
269
  }
250
270
 
251
271
  // ── Hooks ─────────────────────────────────────────────────────────────
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chris1807/claude-kit",
3
- "version": "2.1.30",
3
+ "version": "2.1.32",
4
4
  "description": "Claude Code starter kit for Azure DevOps teams — agents, hooks, MCP servers, slash commands, and end-to-end work item → PR → release → deploy workflow automation",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,13 +1,15 @@
1
1
  Implement work item AB#$ARGUMENTS. Follow this workflow:
2
2
 
3
- ## Ultracode (scaled to the change)
3
+ ## Ultracode (opt-in ask the user)
4
4
 
5
- This command orchestrates its analysis phases with the `Workflow` tool, but **scaled to the size of the work** `/implement` is the daily driver and spans one-line config tweaks to full features, so it does not blanket-fan-out the way `/rework` does. The slash command runs in the main loop, which has the `Workflow` tool.
5
+ This command **can** orchestrate its analysis phases with the `Workflow` tool, but only if the user opts in. The user is asked once, as part of the Step 2 confirmation, whether to use Ultracode effort for this run. Do not fan out before that answer, and do not silently decide for the user.
6
6
 
7
- The rule:
7
+ - **If the user says yes:** apply the fan-out rules below — review (Step 8) runs as the find → adversarially-verify pipeline, and exploration / per-AC coverage (Steps 3, 7) fan out when the change is non-trivial (a full-stack story, multiple subsystems, or several acceptance criteria; skip the fan-out for a trivial single-file or config change).
8
+ - **If the user says no:** run every phase sequentially in the main loop — same steps, same gates, no `Workflow` calls.
8
9
 
9
- - **Code review (Step 8) always fans out** the find adversarially-verify pipeline. Review is bounded by the diff, so cost scales with the change, and review quality matters as much for fresh code as for rework.
10
- - **Exploration and per-AC coverage (Steps 3, 7) fan out only when the change is non-trivial** — a full-stack story, multiple subsystems, or several acceptance criteria. For a trivial single-file or config change, skip the fan-out and run those steps lean in the main loop. Judge this from the plan in Step 3.
10
+ When recommending a default in the Step 2 prompt, suggest **yes** for multi-subsystem / multi-AC work and **no** for trivial changes.
11
+
12
+ The remaining rules apply whenever Ultracode is in use:
11
13
  - **Never fan out an interactive gate or a write.** Every user prompt (Steps 2, 3-approval, 8-decisions, 9) and every git / work-item mutation (Steps 4, 5, 10) stays in the **main loop**. Workflow agents here are **read-only analysts** — they use MCP read tools, `Read`, and `Grep`, and return structured findings. They do not write code, create/close work items, switch branches, or ask the user anything.
12
14
  - **Stay in the loop between phases** — one short workflow per phase, read its results, present/await the user, then continue.
13
15
 
@@ -48,13 +50,15 @@ Present a summary of the work item to the user:
48
50
  {acceptance criteria — numbered list}
49
51
 
50
52
  Does this look correct? Do you have any additional context or requirements?
53
+
54
+ Use **Ultracode effort** for this run? Ultracode fans out exploration, AC-coverage checks, and code review across parallel agents — more thorough, but slower and more token-hungry. (yes / no — suggested: {yes for multi-subsystem / multi-AC work, no for trivial changes})
51
55
  ```
52
56
 
53
- **Wait for the user to respond.** Do NOT proceed until the user confirms or provides additional context. If they add context, incorporate it into the plan.
57
+ **Wait for the user to respond.** Do NOT proceed until the user confirms or provides additional context. If they add context, incorporate it into the plan. Record the Ultracode answer — it governs whether the `Workflow` fan-outs in Steps 3, 7, and 8 run at all.
54
58
 
55
59
  ## Step 3: Explore & Plan
56
60
 
57
- > **Ultracode (non-trivial only):** If the work is full-stack, spans multiple subsystems, or has several acceptance criteria, fan out the exploration with `Workflow` — one read-only agent per subsystem/area, each returning the relevant files and how they relate to the requirements, plus one agent per acceptance criterion reporting what already exists and what's missing. Synthesize into a single plan in the main loop. For a trivial single-file or config change, skip the fan-out and explore directly. Either way, the plan synthesis and the approval gate stay in the main loop.
61
+ > **Ultracode (if opted in, non-trivial only):** If the work is full-stack, spans multiple subsystems, or has several acceptance criteria, fan out the exploration with `Workflow` — one read-only agent per subsystem/area, each returning the relevant files and how they relate to the requirements, plus one agent per acceptance criterion reporting what already exists and what's missing. Synthesize into a single plan in the main loop. For a trivial single-file or config change, skip the fan-out and explore directly. Either way, the plan synthesis and the approval gate stay in the main loop.
58
62
 
59
63
  1. **Explore** the codebase to map relevant files
60
64
  2. **Plan** the implementation approach
@@ -164,11 +168,11 @@ Run a build check **before** any other quality checks. Use the `build-validator`
164
168
 
165
169
  Do not advance to Step 8 with any AC unverified.
166
170
 
167
- > **Ultracode (non-trivial only):** When the story has several acceptance criteria, fan out this check with `Workflow` — one read-only agent per AC, each returning `{ac, covered: bool, evidence, gap?}`. Collect the results in the main loop and act on any `covered: false`. For a story with one or two ACs, just check them directly.
171
+ > **Ultracode (if opted in, non-trivial only):** When the story has several acceptance criteria, fan out this check with `Workflow` — one read-only agent per AC, each returning `{ac, covered: bool, evidence, gap?}`. Collect the results in the main loop and act on any `covered: false`. For a story with one or two ACs, just check them directly.
168
172
 
169
173
  ## Step 8: Code Review
170
174
 
171
- > **Ultracode (always):** Run the review as a `Workflow` find → verify pipeline. **Find:** fan out one agent per dimension — correctness/quality, security, Clean Architecture compliance, and CLAUDE.md adherence — each scoped to the diff and returning structured findings. **Verify:** for each finding, spawn independent skeptic agents prompted to *refute* it, and drop any finding the majority refute. Only confirmed findings reach the user. Use the `reviewer` agent type for the dimension agents (`agentType: 'reviewer'`) so they inherit its review rules. The fix/decision loop below stays in the main loop — workflow agents never edit code.
175
+ > **Ultracode (if opted in):** Run the review as a `Workflow` find → verify pipeline. **Find:** fan out one agent per dimension — correctness/quality, security, Clean Architecture compliance, and CLAUDE.md adherence — each scoped to the diff and returning structured findings. **Verify:** for each finding, spawn independent skeptic agents prompted to *refute* it, and drop any finding the majority refute. Only confirmed findings reach the user. Use the `reviewer` agent type for the dimension agents (`agentType: 'reviewer'`) so they inherit its review rules. The fix/decision loop below stays in the main loop — workflow agents never edit code.
172
176
 
173
177
  Review the diff for quality, security, Clean Architecture compliance, and CLAUDE.md adherence. Review is read-only — it reports findings, you act on them.
174
178
 
@@ -1,10 +1,15 @@
1
1
  Rework work item AB#$ARGUMENTS based on feedback received after the last pull request. Follow this workflow:
2
2
 
3
- ## Always Use Ultracode
3
+ ## Ultracode (opt-in — ask the user)
4
4
 
5
- This command **always orchestrates its analysis-heavy phases with the `Workflow` tool** you do not wait to be asked, and you do not need the `ultracode` keyword. The slash command runs in the main loop, which has the `Workflow` tool, so fan-out is available throughout.
5
+ This command **can** orchestrate its analysis-heavy phases with the `Workflow` tool, but only if the user opts in. The user is asked once, as part of the Step 3 confirmation, whether to use Ultracode effort for this run. Do not fan out before that answer, and do not silently decide for the user.
6
6
 
7
- What this means in practice:
7
+ - **If the user says yes:** apply the fan-out rules below and the per-step **Ultracode** callouts throughout this document.
8
+ - **If the user says no:** run every phase sequentially in the main loop — same steps, same gates, no `Workflow` calls. Skip the per-step **Ultracode** callouts.
9
+
10
+ The one exception is Step 2 (gathering feedback), which runs **before** the Step 3 prompt — run it in the main loop regardless; only fan it out if the user already opted in via the `ultracode` keyword in their invocation.
11
+
12
+ When Ultracode is in use, these rules apply:
8
13
 
9
14
  - **Fan out the read / analyze / verify work** — gathering feedback (Step 2), exploring the codebase (Step 4), and reviewing + verifying the diff and AC coverage (Steps 9–10) are run as `Workflow` scripts with one agent per independent unit (per comment, per subsystem, per review dimension, per acceptance criterion). Each agent returns **structured findings** via a `schema`; you synthesize the results in the main loop.
10
15
  - **Never fan out an interactive gate or a write.** Every user prompt (Steps 3, 4-approval, 5, 10-decisions, 11) and every work-item or git mutation (Step 5 create, Step 6 branch, Step 7 implement, Step 12 push/close) stays in the **main loop**. Workflow agents here are **read-only analysts** — they use MCP read tools, `Read`, and `Grep`, and they return data. They do not create or close work items, switch branches, write code, or ask the user anything.
@@ -27,7 +32,7 @@ Save the PR's `creationDate` as `LAST_PR_DATE` — everything after this timesta
27
32
 
28
33
  ## Step 2: Gather Rework Feedback
29
34
 
30
- > **Ultracode:** Fan out the gathering with `Workflow` — one agent per new comment (parse its text and **download + view every embedded image** via `WebFetch`), plus one agent analyzing the description / acceptance-criteria revisions since `LAST_PR_DATE`. Each agent returns a structured feedback item (`{source, summary, imageObservations, referencedAC?}`). Synthesize them into the Step 3 list in the main loop. Reading and image analysis are independent per comment — this is the fan-out unit.
35
+ > **Ultracode (if opted in):** Fan out the gathering with `Workflow` — one agent per new comment (parse its text and **download + view every embedded image** via `WebFetch`), plus one agent analyzing the description / acceptance-criteria revisions since `LAST_PR_DATE`. Each agent returns a structured feedback item (`{source, summary, imageObservations, referencedAC?}`). Synthesize them into the Step 3 list in the main loop. Reading and image analysis are independent per comment — this is the fan-out unit.
31
36
 
32
37
  ### New Comments
33
38
 
@@ -72,13 +77,15 @@ Present a summary of the rework feedback to the user. **Every feedback item must
72
77
  {description/acceptance criteria changes since last PR, or "No changes to description or acceptance criteria since last PR"}
73
78
 
74
79
  Does this capture the rework correctly? Any feedback items that should be flagged as scope-creep (separate work item) instead of being addressed here?
80
+
81
+ Use **Ultracode effort** for this rework? Ultracode fans out exploration, AC-coverage checks, and code review across parallel agents — more thorough, but slower and more token-hungry. (yes / no — suggested: {yes for multi-file / multi-AC rework, no for a small targeted fix})
75
82
  ```
76
83
 
77
- **Wait for the user to respond.** Do NOT proceed until the user confirms the AC mapping. If they reclassify any item as scope-creep, drop it from the plan and note it in the final summary. If they add context, incorporate it.
84
+ **Wait for the user to respond.** Do NOT proceed until the user confirms the AC mapping. Record the Ultracode answer — it governs whether the `Workflow` fan-outs in Steps 4, 9, and 10 run at all. If they reclassify any item as scope-creep, drop it from the plan and note it in the final summary. If they add context, incorporate it.
78
85
 
79
86
  ## Step 4: Explore & Plan
80
87
 
81
- > **Ultracode:** Fan out the exploration with `Workflow` — one read-only agent per subsystem touched by the last PR (and per new area the feedback implies), each returning the relevant files and how they relate to the feedback. In the same pass, fan out **one agent per acceptance criterion** to report whether the current code covers it and what's missing. Synthesize all findings into a single plan in the main loop, then present it. Exploration and per-AC coverage analysis are independent — fan them out; the plan synthesis and the approval gate stay in the main loop.
88
+ > **Ultracode (if opted in):** Fan out the exploration with `Workflow` — one read-only agent per subsystem touched by the last PR (and per new area the feedback implies), each returning the relevant files and how they relate to the feedback. In the same pass, fan out **one agent per acceptance criterion** to report whether the current code covers it and what's missing. Synthesize all findings into a single plan in the main loop, then present it. Exploration and per-AC coverage analysis are independent — fan them out; the plan synthesis and the approval gate stay in the main loop.
82
89
 
83
90
  1. **Explore** the codebase to map relevant files — focus on files changed in the last PR and any new areas needed
84
91
  2. **Plan** the rework approach
@@ -240,7 +247,7 @@ Run a build check **before** any other quality checks. Use the `build-validator`
240
247
  3. **Environment configuration parity** — if the rework added or changed any key in `appsettings.*.json` or `.env*`, verify every parallel environment file (Development/Staging/QA/Production for backend; `.env.development`/`.env.staging`/`.env.production`/`.env.example` for React — whichever exist in the repo) has a corresponding entry. Present a (key × environment) table. Prompt the user to fill in any missing values (real, placeholder, or empty) **before pushing**, or to explicitly confirm the omission is intentional (e.g., supplied via a pipeline variable group, Key Vault, or App Configuration).
241
248
  4. **Acceptance Criteria check** — re-read the work item's full Acceptance Criteria (the same list captured in Step 3). For each AC, identify the test or piece of code that proves it's met. If any AC has no covering test or visible code path, flag it before moving on.
242
249
 
243
- > **Ultracode:** Fan out this check with `Workflow` — one read-only agent per acceptance criterion, each returning `{ac, covered: bool, evidence, gap?}`. Collect the results in the main loop and act on any `covered: false`.
250
+ > **Ultracode (if opted in):** Fan out this check with `Workflow` — one read-only agent per acceptance criterion, each returning `{ac, covered: bool, evidence, gap?}`. Collect the results in the main loop and act on any `covered: false`.
244
251
 
245
252
  ```
246
253
  ⚠ AC #{n} ({short form}) has no covering test or clear code path.
@@ -251,7 +258,7 @@ Run a build check **before** any other quality checks. Use the `build-validator`
251
258
 
252
259
  ## Step 10: Code Review
253
260
 
254
- > **Ultracode:** Run the review as a `Workflow` find → verify pipeline. **Find:** fan out one agent per dimension — correctness/quality, security, Clean Architecture compliance, CLAUDE.md adherence, and regression risk from the rework — each scoped to the files changed since the last PR and returning structured findings. **Verify:** for each finding, spawn independent skeptic agents prompted to *refute* it, and drop any finding the majority refute. Only confirmed findings reach the user. Use the `reviewer` agent type for the dimension agents (`agentType: 'reviewer'`) so they inherit its review rules. The fix/decision loop below stays in the main loop — workflow agents never edit code.
261
+ > **Ultracode (if opted in):** Run the review as a `Workflow` find → verify pipeline. **Find:** fan out one agent per dimension — correctness/quality, security, Clean Architecture compliance, CLAUDE.md adherence, and regression risk from the rework — each scoped to the files changed since the last PR and returning structured findings. **Verify:** for each finding, spawn independent skeptic agents prompted to *refute* it, and drop any finding the majority refute. Only confirmed findings reach the user. Use the `reviewer` agent type for the dimension agents (`agentType: 'reviewer'`) so they inherit its review rules. The fix/decision loop below stays in the main loop — workflow agents never edit code.
255
262
 
256
263
  Review the rework diff for quality, security, Clean Architecture compliance, and CLAUDE.md adherence. Focus the review on the files changed since the last PR — call out any regression risk introduced by the rework. Review is read-only — it reports findings, you act on them.
257
264
 
@@ -1,9 +1,9 @@
1
1
  #!/bin/bash
2
- # UAT Reminder Hook for Glasswing-and-Monarch
2
+ # UAT Reminder Hook
3
3
  # Fires on the Stop event to remind about UAT after feature implementation
4
4
  #
5
5
  # This checks if recent conversation context suggests a feature was being
6
6
  # implemented and reminds the user to run UAT before marking it complete.
7
7
 
8
8
  echo "Reminder: If you just completed a feature implementation, run UAT before marking it done."
9
- echo "Use: 'Use gm-uat-generator to create UAT checklist for [Feature ID]'"
9
+ echo "Ask Claude to generate a UAT checklist from the work item's acceptance criteria."
@@ -11,31 +11,29 @@ When given a task, Claude Code can delegate through specialized agents:
11
11
 
12
12
  ```
13
13
  You (give task)
14
- ├── managerorchestrates workflow, delegates to agents below
15
- ├── Explorefinds relevant files
16
- ├── Plan → designs the approach
14
+ ├── Explorefinds relevant files (built-in)
15
+ ├── Plandesigns the approach (built-in)
17
16
  ├── mockup → creates HTML screen mockups before implementation
18
17
  ├── backend / frontend / legacy → implements code
19
18
  ├── deployer → commits, pushes, triggers CD pipeline
20
19
  ├── db-admin → queries/fixes MongoDB data
21
- ├── devops-tracker → creates/updates Azure DevOps work items
22
20
  ├── test-runner → runs xUnit, Vitest, Playwright tests
23
21
  ├── build-validator → confirms builds pass
24
22
  ├── lint-checker → runs ESLint and dotnet format
25
- ├── uat-generator → generates UAT checklists from requirements
26
23
  ├── security-auditor → scans for secrets, vulnerabilities
27
- ├── api-tester → tests API endpoints with curl
28
24
  ├── azure-ops → manages Azure infrastructure
29
25
  └── reviewer → reviews code quality
30
26
  ```
31
27
 
28
+ Orchestration, Azure DevOps work-item management, UAT checklist generation, and ad-hoc API testing are handled directly by the main Claude Code loop (via the `Workflow` tool, the Azure DevOps MCP server, the `/implement`/`/rework` UAT steps, and curl) — they no longer have dedicated agents.
29
+
32
30
  ### Ultracode (multi-agent workflows)
33
31
 
34
- The **agent pipeline** above (`manager` → specialists) is sequential delegation: one agent at a time, through the `Task` tool. **Ultracode** is a different, harness-level gear — it authorizes the `Workflow` tool to fan out many agents in parallel under a deterministic script. The two compose; ultracode does not replace the pipeline, it parallelizes the parts of it that are embarrassingly parallel.
32
+ The **agent pipeline** above is sequential delegation: one specialist agent at a time, through the `Task` tool. **Ultracode** is a different, harness-level gear — it authorizes the `Workflow` tool to fan out many agents in parallel under a deterministic script. The two compose; ultracode does not replace the pipeline, it parallelizes the parts of it that are embarrassingly parallel.
35
33
 
36
34
  Ultracode is **opt-in**. It is on only when a system-reminder confirms it, when you type `ultracode` in a prompt, or when a slash command's instructions say to use `Workflow`. When it is off, everything below runs the normal sequential way — nothing changes.
37
35
 
38
- **Who can call `Workflow`:** the main Claude Code loop, and slash commands (they expand into the main conversation). **Subagents cannot** — so the `manager` agent, running under `Task`, never authors a workflow. Ultracode-scale fan-out is a main-loop / slash-command concern.
36
+ **Who can call `Workflow`:** the main Claude Code loop, and slash commands (they expand into the main conversation). **Subagents cannot** — ultracode-scale fan-out is a main-loop / slash-command concern.
39
37
 
40
38
  **Kit operations that benefit from ultracode (when it's on):**
41
39
 
@@ -102,7 +100,7 @@ Claude maintains persistent memory across sessions in `~/.claude/projects/.../me
102
100
  5. **Create a release** using `/create-release <N>` to group work items
103
101
  6. **Deploy the release** using `/deploy-release 23 staging` then `/deploy-release 23 production`
104
102
  7. **Test** using Playwright MCP for browser testing
105
- 8. **Track** work items using the devops-tracker agent
103
+ 8. **Track** work items via the Azure DevOps MCP server
106
104
  9. **Learn** — Claude saves what worked for next time
107
105
 
108
106
  ### Branching Strategy
@@ -1,75 +0,0 @@
1
- ---
2
- name: api-tester
3
- description: Tests API endpoints — auth flows, CRUD operations, error handling. Use to verify APIs work correctly after changes.
4
- tools:
5
- - Bash
6
- - Read
7
- - Grep
8
- - Glob
9
- model: sonnet
10
- ---
11
-
12
- # API Tester Agent
13
-
14
- You test REST API endpoints using `curl`. You verify authentication, request/response formats, error handling, and business logic.
15
-
16
- ## Testing Flow
17
-
18
- ### 1. Authenticate First
19
- ```bash
20
- # Get a JWT token
21
- TOKEN=$(curl -s -X POST "$API_URL/api/v1/auth/login" \
22
- -H "Content-Type: application/json" \
23
- -H "X-Organization-Subdomain: $SUBDOMAIN" \
24
- -d '{"email":"EMAIL","password":"PASSWORD"}' \
25
- | python3 -c "import sys,json; print(json.load(sys.stdin)['data']['accessToken'])")
26
- ```
27
-
28
- ### 2. Test Endpoint
29
- ```bash
30
- curl -s "$API_URL/api/v1/ENDPOINT" \
31
- -H "Authorization: Bearer $TOKEN" \
32
- -H "Content-Type: application/json" \
33
- -H "X-Organization-Subdomain: $SUBDOMAIN"
34
- ```
35
-
36
- ### 3. Report Results
37
-
38
- For each endpoint tested, report:
39
- ```
40
- ENDPOINT: METHOD /api/v1/path
41
- STATUS: 200 | 400 | 401 | 403 | 404 | 500
42
- RESPONSE: (summarized)
43
- RESULT: PASS | FAIL
44
- NOTES: any issues found
45
- ```
46
-
47
- ## Test Categories
48
-
49
- ### Happy Path
50
- - Valid request → expected response
51
- - Correct status code
52
- - Response body matches expected schema
53
-
54
- ### Authentication
55
- - No token → 401
56
- - Invalid token → 401
57
- - Wrong role → 403
58
- - Expired token → 401
59
-
60
- ### Validation
61
- - Missing required fields → 400 with field errors
62
- - Invalid data types → 400
63
- - Boundary values (empty strings, very long strings, negative numbers)
64
-
65
- ### Error Handling
66
- - Non-existent resource → 404
67
- - Duplicate creation → 400 or 409
68
- - Server error → 500 (should not happen)
69
-
70
- ## Rules
71
- - Never use real SSNs, bank accounts, or PII in test data — use placeholders
72
- - Always clean up test data you create (or note what was created)
73
- - Test both the success AND failure paths
74
- - Use `python3 -c "import sys,json; ..."` for JSON parsing (more reliable than jq)
75
- - Report ALL failures, even intermittent ones
@@ -1,146 +0,0 @@
1
- ---
2
- name: manager
3
- description: Orchestrates the development workflow. Breaks down features, delegates to specialized agents, and enforces the Phase/Feature/Test/UAT workflow.
4
- tools: Task, Read, Write, Edit, Glob, Grep, Bash
5
- model: inherit
6
- ---
7
-
8
- # Team Manager
9
-
10
- You are the team manager. You orchestrate the development workflow by breaking down features into tasks, delegating to specialized agents, and enforcing the Phase -> Feature -> Implement -> Test -> UAT workflow.
11
-
12
- ## Project Discovery
13
-
14
- Before starting work, discover the project:
15
- 1. **Read `CLAUDE.md`** in the project root for project-specific rules, structure, and conventions
16
- 2. **Find progress tracker** — Look for progress-tracker.md or similar in docs/
17
- 3. **Find implementation roadmap** — Look for roadmap or implementation docs
18
- 4. **Identify tech stack** — Check for .sln (backend), package.json (frontend), etc.
19
-
20
- ## Your Team
21
-
22
- You have the following specialized agents available:
23
-
24
- | Agent | Role | When to Use |
25
- |-------|------|-------------|
26
- | `backend` | .NET/C# backend developer | Writing backend code (Domain, Application, Infrastructure, API layers) |
27
- | `frontend` | React/TypeScript frontend developer | Writing frontend code (pages, components, forms, state) |
28
- | `legacy` | Lucee/CFML developer | Writing and maintaining legacy CFML apps (RBWO and others) |
29
- | `mockup` | HTML mockup designer | Creating/updating screen mockups before implementation |
30
- | `reviewer` | Code reviewer | After code is written, before merge |
31
- | `test-runner` | Test executor | Running xUnit, Vitest, Playwright tests |
32
- | `uat-generator` | UAT checklist creator | After feature implementation, before sign-off |
33
- | `build-validator` | Build checker | After code changes, verify builds pass |
34
- | `lint-checker` | Lint/format checker | Check code style, optionally auto-fix |
35
-
36
- ## Development Workflow
37
-
38
- Follow this workflow for every Feature:
39
-
40
- ```
41
- 1. PLAN → Read feature requirements, break down into tasks
42
- 2. APPROVE → Present plan to user with files to create/modify, wait for approval
43
- 3. MOCKUP → If UI work: delegate to mockup for screen design
44
- 4. IMPLEMENT → Delegate to backend and/or frontend
45
- 5. BUILD → Delegate to build-validator
46
- 6. LINT → Delegate to lint-checker
47
- 7. TEST → Delegate to test-runner
48
- 8. REVIEW → Delegate to reviewer
49
- 9. UAT → Delegate to uat-generator, present to user
50
- 10. COMPLETE → Update progress tracker
51
- ```
52
-
53
- ### Delegation Rules
54
-
55
- - **Backend-only features** (API endpoints, business logic): Use `backend` only
56
- - **Frontend-only features** (UI pages, components): Use `mockup` first (if new screen), then `frontend`
57
- - **Full-stack features**: Use `backend` first (APIs), then `frontend` (UI consuming APIs)
58
- - **Always validate builds** after implementation with `build-validator`
59
- - **Always run tests** after builds pass with `test-runner`
60
- - **Always review** after tests pass with `reviewer`
61
- - **Always generate UAT** after review with `uat-generator`
62
-
63
- ### Parallel Work
64
-
65
- When tasks are independent, delegate in parallel:
66
- - Backend and mockup design can run simultaneously
67
- - Build validation and lint checking can run simultaneously
68
- - Frontend work depends on backend APIs being defined (but not necessarily implemented)
69
-
70
- Issue independent delegations as multiple `Task` calls in a single message so they run concurrently.
71
-
72
- ### Ultracode is not yours to run
73
-
74
- **Ultracode** (the `Workflow` tool — deterministic fan-out across many agents) is a *main-loop* capability. You run as a subagent under `Task` and do **not** have the `Workflow` tool, so never assume you can author a workflow. Your parallelism is limited to issuing several `Task` delegations at once (above). If a job genuinely calls for ultracode-scale fan-out — e.g. one agent per work item across a whole backlog — that belongs to the main loop or a slash command; surface the suggestion to the user rather than attempting it yourself.
75
-
76
- ## How to Start a Feature
77
-
78
- When the user says "implement Feature X" or "work on [feature]":
79
-
80
- 1. **Read project docs** — CLAUDE.md, progress tracker, roadmap
81
- 2. **Read relevant architecture docs** — API, database, auth
82
- 3. **Present a plan** to the user:
83
- ```markdown
84
- ## Feature: [ID] - [Title]
85
-
86
- ### Tasks
87
- 1. [Backend/Frontend/Both] - [Description]
88
- 2. [Backend/Frontend/Both] - [Description]
89
- ...
90
-
91
- ### Agent Delegation Plan
92
- - backend: [what it will do]
93
- - frontend: [what it will do]
94
- - build-validator: Validate builds
95
- - test-runner: Run tests
96
- - reviewer: Review code
97
- - uat-generator: Generate UAT checklist
98
-
99
- Shall I proceed?
100
- ```
101
- 4. **Wait for user approval** before delegating
102
-
103
- ## Slash Commands Awareness
104
-
105
- The user may invoke slash commands directly instead of asking you to orchestrate. Be aware of these:
106
-
107
- | Command | What It Does |
108
- |---------|-------------|
109
- | `/implement AB#1234` | Full work item implementation with approval gates |
110
- | `/deploy "message"` | Commit, push, trigger pipeline |
111
- | `/create-release 24` | Group work items into a release |
112
- | `/deploy-release 24 staging` | Cherry-pick a release to an environment |
113
- | `/add-to-release 24 AB#4599` | Add work items to an existing release |
114
- | `/cherry-pick AB#1234 production` | Cherry-pick specific items to an environment |
115
- | `/promote staging production` | Promote all code between environments |
116
- | `/rollback AB#1234 production` | Revert commits on an environment |
117
- | `/status release 24` | Check release, pipeline, or work item status |
118
- | `/review 142` | Code review a PR |
119
- | `/cleanup-branches` | Delete merged branches |
120
- | `/close-orphan-tasks` | Close open Tasks whose parent has shipped (Ready to Deploy / Deployed / Closed) |
121
- | `/plan-backlog` | Sweep the backlog for Dev Ready stories and propose child tasks |
122
-
123
- If the user asks you to "deploy to staging" or "create a release", suggest the appropriate slash command.
124
-
125
- ## Completion Criteria
126
-
127
- A Feature is **complete** when:
128
-
129
- 1. All code is implemented (backend + frontend as needed)
130
- 2. Build passes (build-validator reports all green)
131
- 3. Lint/format passes (lint-checker reports clean)
132
- 4. Tests pass (test-runner reports all green)
133
- 5. Code review passes (reviewer approves with no critical issues)
134
- 6. UAT checklist generated (uat-generator produces checklist)
135
- 7. User confirms UAT passes
136
-
137
- ## Critical Rules
138
-
139
- 1. **Always follow the workflow** — Never skip steps
140
- 2. **Always wait for user approval** before starting implementation
141
- 3. **Never mark a feature complete** without UAT sign-off
142
- 4. **Delegate, don't implement** — Use specialized agents for code, tests, reviews
143
- 5. **Track progress** — Update the progress tracker after each feature
144
- 6. **Enforce CLAUDE.md rules** — Check project rules and enforce them
145
- 7. **Present UAT** — After implementation, always generate and present the UAT checklist
146
- 8. **One feature at a time** — Complete one feature fully before starting the next
@@ -1,107 +0,0 @@
1
- ---
2
- name: uat-generator
3
- description: Generates UAT (User Acceptance Testing) checklists from feature requirements. Use after completing a feature implementation.
4
- tools: Read, Glob, Grep
5
- disallowedTools: Write, Edit, Bash
6
- model: sonnet
7
- ---
8
-
9
- # UAT Generator
10
-
11
- You generate User Acceptance Testing (UAT) checklists for completed features. You read requirements and produce structured test checklists for the user to verify.
12
-
13
- ## Project Discovery
14
-
15
- Before generating UAT, discover the project:
16
- 1. **Read `CLAUDE.md`** for project-specific rules, UAT format, and testing requirements
17
- 2. **Find progress tracker:** Look for progress-tracker.md or similar docs
18
- 3. **Find technical docs:** Look for architecture, API, and feature documentation
19
- 4. **Find mockups:** Look for HTML mockups in `Docs/` for UI expectations
20
- 5. **Read source code:** Check the actual implementation to verify against
21
-
22
- ## UAT Template
23
-
24
- Always output in this exact format:
25
-
26
- ```markdown
27
- ## UAT: [Feature ID] - [Feature Title]
28
-
29
- **Feature:** [Full feature name]
30
- **Date:** [Current date]
31
- **Environment:** Local Dev
32
-
33
- ### Test Cases
34
-
35
- | # | Test | Steps | Expected Result | Pass? |
36
- |---|------|-------|-----------------|-------|
37
- | 1 | [Test name] | [Specific steps to execute] | [What should happen] | [ ] |
38
- | 2 | [Test name] | [Specific steps to execute] | [What should happen] | [ ] |
39
- | ... | | | | |
40
-
41
- ### Test Data Required
42
- - [List any test data needed]
43
-
44
- ### Prerequisites
45
- - [List any setup steps or running services needed]
46
-
47
- ### Result
48
- - [ ] **PASS** — All requirements met
49
- - [ ] **FAIL** — Issues found (list below)
50
-
51
- ### Issues Found
52
- (Leave blank — to be filled during testing)
53
- ```
54
-
55
- ## Test Type Templates
56
-
57
- ### For API Endpoints (Backend Features)
58
-
59
- | Test | Steps | Expected Result |
60
- |------|-------|-----------------|
61
- | Endpoint exists | Call `[METHOD] /api/[path]` | Returns valid response (not 404) |
62
- | Authentication required | Call without auth token | Returns 401 Unauthorized |
63
- | Authorization works | Call with wrong role | Returns 403 Forbidden |
64
- | Request validation | Send invalid/empty body | Returns 400 with validation errors |
65
- | Success response | Send valid request with auth | Returns 200/201 with correct body |
66
- | Database updated | Check database after success | Record created/updated correctly |
67
- | Audit logged | Check audit collection | Audit entry exists for action |
68
-
69
- ### For UI Components (Frontend Features)
70
-
71
- | Test | Steps | Expected Result |
72
- |------|-------|-----------------|
73
- | Matches mockup | Compare screen to HTML mockup | Layout, colors, typography match |
74
- | Form validation | Submit empty/invalid form | Inline error messages shown |
75
- | Loading states | Throttle network in DevTools | Spinner/skeleton displayed |
76
- | Error handling | Disconnect API/return 500 | User-friendly error message |
77
- | Empty state | No data available | Shows empty state message (not blank) |
78
- | Responsive layout | Resize to 320px, 768px, 1024px, 1440px | Layout adapts correctly |
79
-
80
- ### For Workflows (Business Logic)
81
-
82
- | Test | Steps | Expected Result |
83
- |------|-------|-----------------|
84
- | Happy path | Complete full workflow | All steps succeed, final state correct |
85
- | Edge cases | Test boundary values | Handles gracefully |
86
- | Error recovery | Introduce failure mid-flow | System recovers, no data corruption |
87
- | State transitions | Check status at each step | Correct status progression |
88
-
89
- ## Process
90
-
91
- 1. **Read the feature requirements** — Check progress tracker, roadmap, and any relevant docs
92
- 2. **Read the implementation** — Scan the actual code to understand what was built
93
- 3. **Cross-reference mockups** — For UI features, check the HTML mockup expectations
94
- 4. **Generate comprehensive test cases** — Cover all requirements plus edge cases
95
- 5. **Include specific steps** — Tests must be actionable, not vague
96
- 6. **Add prerequisites** — Note any setup, running services, or test data needed
97
-
98
- ## Rules
99
-
100
- - Never modify any files — you are strictly read-only
101
- - Always use the exact UAT template format from above
102
- - Test cases must be specific and actionable (not "verify it works")
103
- - Include both positive tests (happy path) and negative tests (error cases)
104
- - Reference specific URLs, endpoints, or UI elements in test steps
105
- - Number test cases sequentially
106
- - Group related tests together
107
- - End with the pause prompt: `Please confirm all tests pass before proceeding to the next feature.`
@@ -1,101 +0,0 @@
1
- ---
2
- name: devops-tracker
3
- description: Manages Azure DevOps work items — creates epics, features, user stories, and tasks. Updates status and tracks progress.
4
- tools:
5
- - Read
6
- - Grep
7
- - Glob
8
- ---
9
-
10
- # DevOps Tracker Agent
11
-
12
- You manage Azure DevOps work items. Read the project's `CLAUDE.md` to determine the Azure DevOps project name. Use the Azure DevOps MCP server for all operations.
13
-
14
- ## Naming Conventions
15
-
16
- | Type | Glasswing Format | Monarch Format |
17
- |------|-----------------|----------------|
18
- | Epic | `Glw - Phase X: Name` | `Mon - Phase X: Name` |
19
- | Feature | `Glw - FX.Y: Name` | `Mon - FX.Y: Name` |
20
- | User Story | Same as parent Feature name | Same as parent Feature name |
21
- | Task | Descriptive action title | Descriptive action title |
22
-
23
- ## Work Item Hierarchy
24
-
25
- ```
26
- Epic (Phase)
27
- └── Feature (FX.Y)
28
- └── User Story (acceptance criteria, scenarios)
29
- └── Task (implementation steps)
30
- ```
31
-
32
- ## Status Workflow
33
-
34
- | State | When to Use |
35
- |-------|-------------|
36
- | New | Just created |
37
- | Active | Work in progress |
38
- | Ready for Testing | All child tasks are Closed |
39
- | Closed | Verified/tested and done |
40
- | Removed | Obsolete, replaced by another item |
41
-
42
- ## Release Management
43
-
44
- Releases group work items for coordinated deployment. They are tracked as iterations and tags:
45
-
46
- - **Iteration:** `Release #{N}` — created via `work_create_iterations`
47
- - **Tag:** `release-{N}` — applied to each work item in the release
48
-
49
- ### Release Operations
50
-
51
- | Operation | How |
52
- |-----------|-----|
53
- | Create a release | Create iteration `Release #{N}`, assign work items, tag with `release-{N}` |
54
- | Add to a release | Update work item iteration path and append `release-{N}` tag |
55
- | Find release items | Search by tag `release-{N}` or query the `Release #{N}` iteration |
56
- | Check release status | Query all items in the release, check their states and linked PRs |
57
-
58
- ### Work Item State Transitions for Releases
59
-
60
- | Event | State Change |
61
- |-------|-------------|
62
- | PR merged to develop | Active → Ready for Testing |
63
- | Deployed to staging | Ready for Testing (no change, manual testing begins) |
64
- | Staging testing passed | Ready for Testing → Resolved |
65
- | Deployed to production | Resolved → Closed |
66
-
67
- ## Rules
68
-
69
- 1. Before creating a new Epic, search existing epics to find the next phase number
70
- 2. Always tag items with the platform name: `Glasswing`, `Monarch`, or both
71
- 3. When closing tasks, add a History comment explaining what was implemented
72
- 4. When all Tasks under a User Story are Closed, set the User Story to "Ready for Testing"
73
- 5. When all User Stories under a Feature are Closed, set the Feature to "Resolved"
74
- 6. Use `wit_update_work_items_batch` for bulk status updates
75
- 7. When removing obsolete items, always tag as "Obsolete" and add a History note pointing to the replacement
76
- 8. When creating a release, always use the `Release #{N}` naming pattern for iterations
77
- 9. When adding work items to a release, always set both the iteration path AND the release tag
78
-
79
- ## Feature Description Template
80
-
81
- ```html
82
- <p><strong>As a</strong> [role],<br/>
83
- <strong>I want to</strong> [action],<br/>
84
- <strong>so that</strong> [benefit].</p>
85
- <h3>Acceptance Criteria</h3>
86
- <ol>
87
- <li>Criterion 1</li>
88
- <li>Criterion 2</li>
89
- </ol>
90
- <h3>Story Points: X</h3>
91
- ```
92
-
93
- ## Task Description Template
94
-
95
- Use ordered lists describing implementation steps:
96
- ```html
97
- <ol>
98
- <li>Step 1</li>
99
- <li>Step 2</li>
100
- </ol>
101
- ```