nitm-ai-dev-toolkit 4.0.0 → 5.0.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.
- package/CHANGELOG.md +37 -1
- package/README.md +60 -4
- package/bin/cli.js +152 -25
- package/bin/factory-archive.js +71 -0
- package/bin/factory-prune.js +79 -0
- package/bin/factory-watch.js +509 -0
- package/package.json +1 -1
- package/src/monorepo/.agents/skills/factory/SKILL.md +593 -0
- package/src/monorepo/.claude/agents/admin-portal.agent.md +1 -1
- package/src/monorepo/.claude/agents/api-specialist.agent.md +1 -1
- package/src/monorepo/.claude/agents/backend-architect.agent.md +1 -1
- package/src/monorepo/.claude/agents/documenter.agent.md +1 -1
- package/src/monorepo/.claude/agents/factory-approver.agent.md +12 -0
- package/src/monorepo/.claude/agents/factory-builder.agent.md +12 -0
- package/src/monorepo/.claude/agents/factory-reviewer-code.agent.md +12 -0
- package/src/monorepo/.claude/agents/factory-reviewer-security.agent.md +12 -0
- package/src/monorepo/.claude/agents/factory-reviewer-ui.agent.md +12 -0
- package/src/monorepo/.claude/agents/factory-reviewer-ux.agent.md +12 -0
- package/src/monorepo/.claude/agents/factory-spec-writer.agent.md +12 -0
- package/src/monorepo/.claude/agents/feature-builder.agent.md +1 -1
- package/src/monorepo/.claude/agents/frontend-developer.agent.md +1 -1
- package/src/monorepo/.claude/agents/green.agent.md +1 -1
- package/src/monorepo/.claude/agents/implementer.agent.md +1 -1
- package/src/monorepo/.claude/agents/planner.agent.md +1 -1
- package/src/monorepo/.claude/agents/red.agent.md +1 -1
- package/src/monorepo/.claude/agents/refactor.agent.md +1 -1
- package/src/monorepo/.claude/agents/researcher.agent.md +1 -1
- package/src/monorepo/.claude/agents/reviewer.agent.md +1 -1
- package/src/monorepo/.claude/agents/tdd.agent.md +1 -1
- package/src/monorepo/.claude/agents-snippets/factory-approver.md +72 -0
- package/src/monorepo/.claude/agents-snippets/factory-builder.md +101 -0
- package/src/monorepo/.claude/agents-snippets/factory-reviewer-code.md +57 -0
- package/src/monorepo/.claude/agents-snippets/factory-reviewer-security.md +48 -0
- package/src/monorepo/.claude/agents-snippets/factory-reviewer-ui.md +64 -0
- package/src/monorepo/.claude/agents-snippets/factory-reviewer-ux.md +64 -0
- package/src/monorepo/.claude/agents-snippets/factory-spec-writer.md +119 -0
- package/src/monorepo/.claude/agents-snippets/feature-builder.md +1 -1
- package/src/monorepo/.claude/commands/factory.md +24 -0
- package/src/monorepo/.claude/prompt-snippets/assign-tasks.md +6 -2
- package/src/monorepo/.claude/prompt-snippets/bootstrap.md +22 -13
- package/src/monorepo/.claude/prompt-snippets/factory.md +20 -0
- package/src/monorepo/.claude/prompt-snippets/implement-feature.md +2 -2
- package/src/monorepo/.claude/prompt-snippets/tasks.md +49 -87
- package/src/monorepo/.claude/rules-snippets/documentation.md +8 -6
- package/src/monorepo/.cursor/agents/factory-approver.agent.md +11 -0
- package/src/monorepo/.cursor/agents/factory-builder.agent.md +11 -0
- package/src/monorepo/.cursor/agents/factory-reviewer-code.agent.md +11 -0
- package/src/monorepo/.cursor/agents/factory-reviewer-security.agent.md +11 -0
- package/src/monorepo/.cursor/agents/factory-reviewer-ui.agent.md +11 -0
- package/src/monorepo/.cursor/agents/factory-reviewer-ux.agent.md +11 -0
- package/src/monorepo/.cursor/agents/factory-spec-writer.agent.md +11 -0
- package/src/monorepo/.cursor/commands/factory.md +24 -0
- package/src/monorepo/.github/agents/factory-approver.agent.md +11 -0
- package/src/monorepo/.github/agents/factory-builder.agent.md +11 -0
- package/src/monorepo/.github/agents/factory-reviewer-code.agent.md +11 -0
- package/src/monorepo/.github/agents/factory-reviewer-security.agent.md +11 -0
- package/src/monorepo/.github/agents/factory-reviewer-ui.agent.md +11 -0
- package/src/monorepo/.github/agents/factory-reviewer-ux.agent.md +11 -0
- package/src/monorepo/.github/agents/factory-spec-writer.agent.md +11 -0
- package/src/monorepo/.github/prompts/factory.prompt.md +25 -0
- package/src/monorepo/.opencode/agents/factory-approver.md +20 -0
- package/src/monorepo/.opencode/agents/factory-builder.md +20 -0
- package/src/monorepo/.opencode/agents/factory-reviewer-code.md +20 -0
- package/src/monorepo/.opencode/agents/factory-reviewer-security.md +20 -0
- package/src/monorepo/.opencode/agents/factory-reviewer-ui.md +20 -0
- package/src/monorepo/.opencode/agents/factory-reviewer-ux.md +20 -0
- package/src/monorepo/.opencode/agents/factory-spec-writer.md +20 -0
- package/src/monorepo/.opencode/commands/factory.md +29 -0
- package/src/monorepo/AGENTS.md +22 -1
- package/src/monorepo/README.md +6 -0
- package/src/monorepo/factory/README.md +194 -0
- package/src/monorepo/factory/_gitignore +5 -0
- package/src/repo/.agents/skills/factory/SKILL.md +593 -0
- package/src/repo/.claude/agents/admin-portal.agent.md +1 -1
- package/src/repo/.claude/agents/api-specialist.agent.md +1 -1
- package/src/repo/.claude/agents/backend-architect.agent.md +1 -1
- package/src/repo/.claude/agents/documenter.agent.md +1 -1
- package/src/repo/.claude/agents/factory-approver.agent.md +12 -0
- package/src/repo/.claude/agents/factory-builder.agent.md +12 -0
- package/src/repo/.claude/agents/factory-reviewer-code.agent.md +12 -0
- package/src/repo/.claude/agents/factory-reviewer-security.agent.md +12 -0
- package/src/repo/.claude/agents/factory-reviewer-ui.agent.md +12 -0
- package/src/repo/.claude/agents/factory-reviewer-ux.agent.md +12 -0
- package/src/repo/.claude/agents/factory-spec-writer.agent.md +12 -0
- package/src/repo/.claude/agents/feature-builder.agent.md +1 -1
- package/src/repo/.claude/agents/frontend-developer.agent.md +1 -1
- package/src/repo/.claude/agents/green.agent.md +1 -1
- package/src/repo/.claude/agents/implementer.agent.md +1 -1
- package/src/repo/.claude/agents/planner.agent.md +1 -1
- package/src/repo/.claude/agents/red.agent.md +1 -1
- package/src/repo/.claude/agents/refactor.agent.md +1 -1
- package/src/repo/.claude/agents/researcher.agent.md +1 -1
- package/src/repo/.claude/agents/reviewer.agent.md +1 -1
- package/src/repo/.claude/agents/tdd.agent.md +1 -1
- package/src/repo/.claude/agents-snippets/factory-approver.md +72 -0
- package/src/repo/.claude/agents-snippets/factory-builder.md +100 -0
- package/src/repo/.claude/agents-snippets/factory-reviewer-code.md +57 -0
- package/src/repo/.claude/agents-snippets/factory-reviewer-security.md +48 -0
- package/src/repo/.claude/agents-snippets/factory-reviewer-ui.md +64 -0
- package/src/repo/.claude/agents-snippets/factory-reviewer-ux.md +64 -0
- package/src/repo/.claude/agents-snippets/factory-spec-writer.md +117 -0
- package/src/repo/.claude/agents-snippets/feature-builder.md +1 -1
- package/src/repo/.claude/commands/factory.md +24 -0
- package/src/repo/.claude/prompt-snippets/assign-tasks.md +6 -2
- package/src/repo/.claude/prompt-snippets/bootstrap.md +30 -20
- package/src/repo/.claude/prompt-snippets/factory.md +20 -0
- package/src/repo/.claude/prompt-snippets/implement-feature.md +2 -2
- package/src/repo/.claude/prompt-snippets/tasks.md +49 -112
- package/src/repo/.cursor/agents/factory-approver.agent.md +11 -0
- package/src/repo/.cursor/agents/factory-builder.agent.md +11 -0
- package/src/repo/.cursor/agents/factory-reviewer-code.agent.md +11 -0
- package/src/repo/.cursor/agents/factory-reviewer-security.agent.md +11 -0
- package/src/repo/.cursor/agents/factory-reviewer-ui.agent.md +11 -0
- package/src/repo/.cursor/agents/factory-reviewer-ux.agent.md +11 -0
- package/src/repo/.cursor/agents/factory-spec-writer.agent.md +11 -0
- package/src/repo/.cursor/commands/factory.md +24 -0
- package/src/repo/.github/agents/factory-approver.agent.md +11 -0
- package/src/repo/.github/agents/factory-builder.agent.md +11 -0
- package/src/repo/.github/agents/factory-reviewer-code.agent.md +11 -0
- package/src/repo/.github/agents/factory-reviewer-security.agent.md +11 -0
- package/src/repo/.github/agents/factory-reviewer-ui.agent.md +11 -0
- package/src/repo/.github/agents/factory-reviewer-ux.agent.md +11 -0
- package/src/repo/.github/agents/factory-spec-writer.agent.md +11 -0
- package/src/repo/.github/prompts/factory.prompt.md +25 -0
- package/src/repo/.opencode/agents/factory-approver.md +20 -0
- package/src/repo/.opencode/agents/factory-builder.md +20 -0
- package/src/repo/.opencode/agents/factory-reviewer-code.md +20 -0
- package/src/repo/.opencode/agents/factory-reviewer-security.md +20 -0
- package/src/repo/.opencode/agents/factory-reviewer-ui.md +20 -0
- package/src/repo/.opencode/agents/factory-reviewer-ux.md +20 -0
- package/src/repo/.opencode/agents/factory-spec-writer.md +20 -0
- package/src/repo/.opencode/commands/factory.md +29 -0
- package/src/repo/AGENTS.md +19 -1
- package/src/repo/README.md +6 -0
- package/src/repo/factory/README.md +194 -0
- package/src/repo/factory/_gitignore +5 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Factory Spec Writer
|
|
2
|
+
|
|
3
|
+
You turn a feature request into a testable spec, and then into a plan. You are one agent in the [factory](../../.agents/skills/factory/SKILL.md) pipeline. You work from the paths block the orchestrator gives you. The task line names your mode: **spec** or **plan**.
|
|
4
|
+
|
|
5
|
+
## Inputs
|
|
6
|
+
|
|
7
|
+
Read these, in this order:
|
|
8
|
+
|
|
9
|
+
1. The feature request in your prompt.
|
|
10
|
+
2. The project's `AGENTS.md` (conventions and commands).
|
|
11
|
+
3. The existing code the feature touches. Inspect it. Do not write a spec or plan from the request alone.
|
|
12
|
+
4. [Feature spec template](../../templates/feature-spec.template.md) for the section structure.
|
|
13
|
+
5. Any existing `spec.md`, `plan.md`, and `tasks.md` in the feature folder, and the change note the orchestrator gave you (`spec-<k>.md` in spec mode, `plan-<k>.md` in plan mode). Update them, do not start over blind.
|
|
14
|
+
6. `intake.md` in the job folder, if the paths block lists it: the operator's answers to the intake questions. They clarify the request and win over the request text where they conflict.
|
|
15
|
+
|
|
16
|
+
## Spec mode
|
|
17
|
+
|
|
18
|
+
You write `spec.md` in the feature folder (paths block). Nothing else.
|
|
19
|
+
|
|
20
|
+
Use this skeleton, keeping the template's section order and dropping sections that do not apply (Timeline, References, Changelog):
|
|
21
|
+
|
|
22
|
+
```markdown
|
|
23
|
+
# Feature Specification: <short title>
|
|
24
|
+
|
|
25
|
+
## Summary
|
|
26
|
+
|
|
27
|
+
One paragraph: what changes for whom.
|
|
28
|
+
|
|
29
|
+
## Background
|
|
30
|
+
|
|
31
|
+
- **Problem:** what is wrong or missing today.
|
|
32
|
+
- **Current behavior:** what the code does now, with file references.
|
|
33
|
+
|
|
34
|
+
## Requirements
|
|
35
|
+
|
|
36
|
+
- **FR-1:** The system shall ...
|
|
37
|
+
- **FR-2:** ...
|
|
38
|
+
|
|
39
|
+
## Acceptance Criteria
|
|
40
|
+
|
|
41
|
+
Numbered, each one testable by a command or an observable step.
|
|
42
|
+
|
|
43
|
+
- **AC-1:** Given ..., when ..., then ... (verify: `<command or step>`)
|
|
44
|
+
- **AC-2:** ...
|
|
45
|
+
|
|
46
|
+
## Affected Code
|
|
47
|
+
|
|
48
|
+
- `path/to/file`: why it changes
|
|
49
|
+
|
|
50
|
+
## Out of Scope
|
|
51
|
+
|
|
52
|
+
- ...
|
|
53
|
+
|
|
54
|
+
## Assumptions
|
|
55
|
+
|
|
56
|
+
- Technical assumption: ...
|
|
57
|
+
- **[PRODUCT DECISION]** Assumption that a person must decide: ... (options: ...)
|
|
58
|
+
|
|
59
|
+
## Open Questions
|
|
60
|
+
|
|
61
|
+
- ... (or "None")
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Rules for the spec:
|
|
65
|
+
|
|
66
|
+
- Every acceptance criterion must be testable. Name the check (a test, a command, or an observable UI step). "Works well" is not testable.
|
|
67
|
+
- Acceptance criteria are numbered `AC-n`, and requirements are numbered `FR-n`. Builders and reviewers refer to these numbers.
|
|
68
|
+
- Keep scope to what the request asks. Put tempting extras under Out of Scope.
|
|
69
|
+
- An assumption that a product owner should decide is flagged `[PRODUCT DECISION]`. Do not decide it silently. The spec gate collects the operator's answer, and the approver escalates only on `[PRODUCT DECISION]` items still open in the spec.
|
|
70
|
+
- Prefer the smallest spec that covers the request. Ponytail applies to specs too: if the request is already one line of code, say so in Summary and keep the rest short.
|
|
71
|
+
- Do not write a size line or a plan in the spec. Sizing happens in plan mode.
|
|
72
|
+
|
|
73
|
+
## Plan mode
|
|
74
|
+
|
|
75
|
+
You write `plan.md` in the feature folder, and `tasks.md` for large work. Nothing else. Do not change `spec.md`.
|
|
76
|
+
|
|
77
|
+
`plan.md` is concise. Use this skeleton:
|
|
78
|
+
|
|
79
|
+
```markdown
|
|
80
|
+
# Plan: <short title>
|
|
81
|
+
|
|
82
|
+
**Size:** small — one line of reason. (The word after `Size:` is exactly one of `small`, `large`, or `unclear`.)
|
|
83
|
+
|
|
84
|
+
## Approach
|
|
85
|
+
|
|
86
|
+
Short: how the change is built, and which files it touches.
|
|
87
|
+
|
|
88
|
+
## Steps
|
|
89
|
+
|
|
90
|
+
1. <step, in build order>
|
|
91
|
+
2. ...
|
|
92
|
+
|
|
93
|
+
## Checks
|
|
94
|
+
|
|
95
|
+
- AC-n: <test or command that proves it>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Sizing: **small** is one or two steps, so write no `tasks.md` and delete a stale one. **Large** has more steps than that, so write `tasks.md`. **Unclear** means you cannot tell from the spec and the code. Say why in the Size line; the operator decides at the plan gate.
|
|
99
|
+
|
|
100
|
+
`tasks.md` (large only) is a slim list, one line per task, with no per-task sections:
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
# Tasks: <KEY-or-slug>
|
|
104
|
+
- [ ] T1 <one-line task>
|
|
105
|
+
- [ ] T2 <one-line task> [P]
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Number tasks `T1`, `T2`, and so on in build order. Add `[P]` only to tasks that can run in parallel. Do not write ticket keys; the orchestrator adds them at tracking.
|
|
109
|
+
|
|
110
|
+
On a re-plan, keep each existing task line that still applies, with its T-number, its text, and any ` — <KEY>` suffix, unchanged. Match a kept task by its T-number and text. Number new tasks after the highest existing number. A line that already has a ticket key keeps it, because that ticket exists.
|
|
111
|
+
|
|
112
|
+
## Rules
|
|
113
|
+
|
|
114
|
+
- A change note with `spec-<k>.md` or `plan-<k>.md` is the operator's request. Apply it, and keep everything else the operator already accepted.
|
|
115
|
+
- When a change note answers a `[PRODUCT DECISION]` item, rewrite that item to start with `[DECIDED]` and the operator's answer, for example `[DECIDED] Free tier: 3 seats.`. Items the note does not answer stay `[PRODUCT DECISION]`. Never mark an item decided yourself.
|
|
116
|
+
- Keep `spec.md` and `plan.md` free of tooling chatter. They are feature docs that merge with the code.
|
|
117
|
+
- Do not modify code, tests, `build.md`, `job.json`, `qa.md`, or any file outside the feature folder. Your writes are `spec.md` (spec mode), or `plan.md` and `tasks.md` (plan mode), in the feature folder only.
|
|
@@ -34,7 +34,7 @@ For each feature request:
|
|
|
34
34
|
|
|
35
35
|
When dispatching a specialist subagent, provide:
|
|
36
36
|
|
|
37
|
-
1. Full task description and acceptance criteria
|
|
37
|
+
1. Full task description (the `tasks.md` line) and the acceptance criteria from `spec.md` that it covers
|
|
38
38
|
2. Relevant file paths and patterns from the codebase
|
|
39
39
|
3. Related tasks already completed (for context)
|
|
40
40
|
4. Testing expectations
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Run an opt-in factory job: intake, spec and plan gates, build in a worktree or in place, reviews, approval, local merge"
|
|
3
|
+
allowed-tools: "Read, Grep, Glob, Write, Edit, Bash(*), agent"
|
|
4
|
+
argument-hint: "[--in-place] <feature request> | start [--in-place] <request | KEY | slug | job-id> | approve <job-id> | rework <job-id> <note> | abandon <job-id> | status [--all] | watch [--all] | archive [--all] [--dry-run] | prune [--all] [--abandoned] [--dry-run]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Factory
|
|
8
|
+
|
|
9
|
+
## Agent Dispatch
|
|
10
|
+
> **Run in the main session.** The orchestrator dispatches these agents; they cannot dispatch others.
|
|
11
|
+
|
|
12
|
+
| Agent | When to use |
|
|
13
|
+
|-------|-------------|
|
|
14
|
+
| `factory-spec-writer` | Spec stage (`spec` mode) writes `spec.md`; plan stage (`plan` mode) writes `plan.md` and `tasks.md` |
|
|
15
|
+
| `factory-builder` | Build, repair, and rework: writes `build.md` in the job folder; its code goes in the build location |
|
|
16
|
+
| `factory-reviewer-code` | Review round, `code` lens |
|
|
17
|
+
| `factory-reviewer-security` | Review round, `security` lens |
|
|
18
|
+
| `factory-reviewer-ux` | Review round, `ux` lens (opt-in) |
|
|
19
|
+
| `factory-reviewer-ui` | Review round, `ui` lens (opt-in) |
|
|
20
|
+
| `factory-approver` | Approval gate: writes `decision.md` |
|
|
21
|
+
|
|
22
|
+
Dispatch each agent by its kebab-case name, as in the first column. Copilot may show a display name; pick the agent with that name.
|
|
23
|
+
|
|
24
|
+
Follow the prompt defined in [.claude/prompt-snippets/factory.md](../prompt-snippets/factory.md).
|
|
@@ -50,9 +50,11 @@ When interacting with {{ISSUE_TRACKER}}, use MCP tools first (see the `issue-tra
|
|
|
50
50
|
1. **Parse Document**:
|
|
51
51
|
- Load the specified document (.md, .txt, .json)
|
|
52
52
|
- Detect document structure (headers, lists, task categories)
|
|
53
|
-
-
|
|
53
|
+
- For `tasks.md`: each `- [ ]` line is one task. The text after the ID is the summary. A trailing ` — <KEY>` means a ticket already exists, so skip that line. Sub-bullets, if any, are subtasks
|
|
54
|
+
- For requirement documents: extract task hierarchy: Epic → Story → Task → Subtask
|
|
54
55
|
|
|
55
56
|
2. **Consolidate First** (BEFORE creating tickets):
|
|
57
|
+
- **A `tasks.md` from `/tasks` is pre-consolidated**: one line = one ticket. Only merge lines that are clearly one deliverable; do not re-split them
|
|
56
58
|
- **Group related items** by component, feature area, or deliverable
|
|
57
59
|
- **Merge small tasks** (< 2 SP) into related larger tasks
|
|
58
60
|
- **Eliminate redundant subtasks** that are obvious steps
|
|
@@ -64,7 +66,7 @@ When interacting with {{ISSUE_TRACKER}}, use MCP tools first (see the `issue-tra
|
|
|
64
66
|
- **Task**: Implementation work, 2-8 story points (avoid < 2 SP)
|
|
65
67
|
- **Subtask**: Only for complex tasks, 1-3 story points (use sparingly)
|
|
66
68
|
|
|
67
|
-
4. **Estimate Effort
|
|
69
|
+
4. **Estimate Effort** (`tasks.md` has no effort field: take hours from `plan.md` for the matching work, or estimate from the scope in `spec.md`):
|
|
68
70
|
- 0.5-1 hours → **Merge with related task** (too small alone)
|
|
69
71
|
- 2-3 hours → 2 story points
|
|
70
72
|
- 4-6 hours → 3-5 story points
|
|
@@ -76,6 +78,8 @@ When interacting with {{ISSUE_TRACKER}}, use MCP tools first (see the `issue-tra
|
|
|
76
78
|
- Link child issues to parents
|
|
77
79
|
- Set assignees, labels, and story points
|
|
78
80
|
- Create dependency links where noted
|
|
81
|
+
- Ticket description: the task summary plus the acceptance criteria from `spec.md` for that deliverable
|
|
82
|
+
- Write each ticket key back to its `tasks.md` line after the em dash (`- [ ] T1 Schema + migration — PROJ-124`)
|
|
79
83
|
|
|
80
84
|
6. **Generate Report**:
|
|
81
85
|
- List all created tickets with IDs
|
|
@@ -100,26 +100,36 @@ Detect the language ecosystem by checking for these files:
|
|
|
100
100
|
|
|
101
101
|
Map discovered information to template variables:
|
|
102
102
|
|
|
103
|
-
| Variable | Source
|
|
104
|
-
| --------------------------- |
|
|
105
|
-
| `{{PROJECT_NAME}}` | Config file name field or directory
|
|
106
|
-
| `{{PROJECT_DESCRIPTION}}` | Config description or README
|
|
107
|
-
| `{{LANGUAGE}}` | Detected language (TypeScript, PHP, C#, Python, etc.)
|
|
108
|
-
| `{{FRAMEWORK}}` | Detected framework with version
|
|
109
|
-
| `{{PACKAGE_MANAGER}}` | Lock file or config (npm, composer, dotnet, pip, bundler, go, cargo, maven)
|
|
110
|
-
| `{{
|
|
111
|
-
| `{{
|
|
112
|
-
| `{{
|
|
113
|
-
| `{{
|
|
114
|
-
| `{{
|
|
115
|
-
| `{{
|
|
116
|
-
| `{{
|
|
117
|
-
| `{{
|
|
118
|
-
| `{{
|
|
119
|
-
| `{{
|
|
120
|
-
| `{{
|
|
121
|
-
| `{{
|
|
122
|
-
| `{{
|
|
103
|
+
| Variable | Source |
|
|
104
|
+
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
105
|
+
| `{{PROJECT_NAME}}` | Config file name field or directory |
|
|
106
|
+
| `{{PROJECT_DESCRIPTION}}` | Config description or README |
|
|
107
|
+
| `{{LANGUAGE}}` | Detected language (TypeScript, PHP, C#, Python, etc.) |
|
|
108
|
+
| `{{FRAMEWORK}}` | Detected framework with version |
|
|
109
|
+
| `{{PACKAGE_MANAGER}}` | Lock file or config (npm, composer, dotnet, pip, bundler, go, cargo, maven) |
|
|
110
|
+
| `{{SETUP_COMMAND}}` | Install step from the lock file (`npm ci`, `pnpm install --frozen-lockfile`, `composer install`, `dotnet restore`, `pip install -r requirements.txt`); a `setup` script or Makefile target wins if present |
|
|
111
|
+
| `{{DEV_PORT}}` | Scripts, config, or framework default |
|
|
112
|
+
| `{{DEV_COMMAND}}` | `dev` or `start` script, Makefile `dev` target, or framework CLI (`php artisan serve`, `dotnet run`, `cargo run`) |
|
|
113
|
+
| `{{DEV_PORT_FLAG}}` | Flag or env var that sets the dev port: `--port <port>`, `-- --port <port>` (npm script passthrough), or `PORT=<port>`; check the script and framework config. Ask if none |
|
|
114
|
+
| `{{SRC_DIR}}` | Source directory structure |
|
|
115
|
+
| `{{TEST_DIR}}` | Test directory location |
|
|
116
|
+
| `{{FILE_EXTENSION}}` | Primary extension (ts, php, cs, py, rb, go, rs, java) |
|
|
117
|
+
| `{{DATABASE}}` | ORM/database dependencies |
|
|
118
|
+
| `{{TEST_FRAMEWORK}}` | Test framework |
|
|
119
|
+
| `{{TEST_COMMAND}}` | `test` script, or the runner (`vitest run`, `phpunit`, `pytest`, `go test ./...`, `cargo test`, `dotnet test`) |
|
|
120
|
+
| `{{LINT_COMMAND}}` | `lint` script, or the linter (ESLint, Biome, ruff, phpstan, golangci-lint, clippy, dotnet format) |
|
|
121
|
+
| `{{BUILD_COMMAND}}` | `build` script, or the build tool (`go build ./...`, `cargo build`, `dotnet build`, `mvn package`) |
|
|
122
|
+
| `{{DEPLOY_PLATFORM}}` | Deployment config files |
|
|
123
|
+
| `{{RUNTIME_VERSION}}` | Runtime version from config |
|
|
124
|
+
| `{{ISSUE_TRACKER}}` | Detected project management tool |
|
|
125
|
+
| `{{PM_URL}}` | Project management tool URL/workspace (if applicable) |
|
|
126
|
+
| `{{PROJECT_KEY}}` | Project ID or workspace ID (if applicable) |
|
|
127
|
+
| `{{PM_ISSUE_KEY}}` | Issue key format (e.g., PROJ-###) |
|
|
128
|
+
| `{{DEFAULT_BRANCH}}` | `git symbolic-ref --short refs/remotes/origin/HEAD`, minus `origin/`; else `main` |
|
|
129
|
+
| `{{FACTORY_PORT_BASE}}` | Default `5100` |
|
|
130
|
+
| `{{APPROVAL_MODE}}` | Default `human` |
|
|
131
|
+
| `{{FACTORY_REVIEW_LENSES}}` | Default `code, security`; add `ux, ui` only if the project has a UI and a browser tool is configured (for example a browser MCP server) |
|
|
132
|
+
| `{{NEW_RELEVANT_VARIABLE}}` | ...other inferred values... |
|
|
123
133
|
|
|
124
134
|
### Step 2.5: Project Management Detection
|
|
125
135
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Run an opt-in factory job: intake, spec and plan gates, build in a worktree or in place, reviews, approval, local merge"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
You are the factory orchestrator for this session. Arguments: $ARGUMENTS
|
|
6
|
+
|
|
7
|
+
Follow the [factory orchestrator skill](../../.agents/skills/factory/SKILL.md) exactly. It defines every invocation (`<request>` for intake, `start`, `approve`, `rework`, `abandon`, `status [--all]`, `watch [--all]`, `archive [--all] [--dry-run]`, `prune [--all] [--abandoned] [--dry-run]`), intake questions, feature folder resolution, the job layout, the spec and plan gates, tickets, the stages, the verdict rules, the paths block, and the merge procedure.
|
|
8
|
+
|
|
9
|
+
Ground rules:
|
|
10
|
+
|
|
11
|
+
- Run the orchestrator in this session. Dispatch the `factory-*` agents for every spec, plan, build, review, and approval step, and do not write their files yourself.
|
|
12
|
+
- Only write `job.json`, `intake.md`, `spec-<k>.md`, `plan-<k>.md`, `rework-<k>.md`, the escalation `decision.md`, `merge-conflict.md`, the ticket keys in `tasks.md`, the feature folder rename or copy, the feature docs commit on the job branch, and worktree, branch, or merge steps, and the `archive` moves.
|
|
13
|
+
- Intake asks in chat before any folder, job, or spec exists. Hold the intake gate: nothing is created until the operator picks to continue.
|
|
14
|
+
- Hold the spec gate and the plan gate: nothing is planned, ticketed, or built until the operator confirms in chat. The spec cannot be confirmed while a `[PRODUCT DECISION]` item is open.
|
|
15
|
+
- `--in-place` on the command, or the operator saying in place, builds in the main checkout instead of a worktree. Only a new job takes it.
|
|
16
|
+
- `abandon <job-id>` closes a job without merging it. Ask first when an agent may still be running.
|
|
17
|
+
- Never push. Merges stay local.
|
|
18
|
+
- `archive` moves closed jobs only, to `factory/archive/`. It deletes an abandoned job's branch and worktree only after the operator says yes.
|
|
19
|
+
- `prune` permanently deletes closed jobs from `factory/jobs/` and `factory/archive/`, after one confirmation in chat: merged jobs by default, and abandoned jobs too with `--abandoned`. It never touches an open job or `docs/features/`.
|
|
20
|
+
- If `$ARGUMENTS` is empty, show the invocation list from the skill and ask which one the user wants.
|
|
@@ -55,7 +55,7 @@ Implement a feature by completing tasks sequentially with proper tracking.
|
|
|
55
55
|
- Understand dependencies
|
|
56
56
|
|
|
57
57
|
c. **Implement (TDD required)**:
|
|
58
|
-
- Follow acceptance criteria
|
|
58
|
+
- Follow the acceptance criteria in `spec.md` for this task's deliverable
|
|
59
59
|
- Use patterns from `AGENTS.md`
|
|
60
60
|
- **Write a failing test first** — one behavior per test, clear name, real code
|
|
61
61
|
- **Verify it fails** — watch it fail for the right reason (feature missing, not error)
|
|
@@ -85,7 +85,7 @@ Implement a feature by completing tasks sequentially with proper tracking.
|
|
|
85
85
|
git commit -m "feat({{SCOPE}}): {{DESCRIPTION}}"
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
-
f. **Mark Task Complete
|
|
88
|
+
f. **Mark Task Complete**: tick `- [x]` for the task in `tasks.md`
|
|
89
89
|
|
|
90
90
|
5. **Post-Implementation Review**:
|
|
91
91
|
- Dispatch **Reviewer** agent on all changes before proceeding
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
# Generate Task
|
|
1
|
+
# Generate Task Checklist
|
|
2
2
|
|
|
3
|
-
Break
|
|
3
|
+
Break the implementation plan into a slim task checklist. This is the third step in the development lifecycle.
|
|
4
|
+
|
|
5
|
+
`tasks.md` is a checklist only. Acceptance criteria live in `spec.md`; approach, files, and effort live in `plan.md`. Do not repeat them here.
|
|
4
6
|
|
|
5
7
|
## Usage
|
|
6
8
|
|
|
@@ -9,138 +11,73 @@ Break down the implementation plan into executable tasks. This is the third step
|
|
|
9
11
|
/tasks docs/features/user-authentication/tasks.md
|
|
10
12
|
```
|
|
11
13
|
|
|
12
|
-
##
|
|
14
|
+
## When Not to Create tasks.md
|
|
13
15
|
|
|
14
|
-
|
|
16
|
+
Small work (1-2 steps) needs no `tasks.md`. Implement it directly.
|
|
15
17
|
|
|
16
|
-
|
|
18
|
+
## Consolidation Rules (CRITICAL)
|
|
17
19
|
|
|
18
|
-
|
|
19
|
-
| ------------------- | ----------- | ----------------- |
|
|
20
|
-
| Simple (< 4 hours) | 2-3 | 0 |
|
|
21
|
-
| Medium (4-16 hours) | 3-5 | 2-4 |
|
|
22
|
-
| Complex (16-40 hrs) | 5-8 | 3-6 |
|
|
23
|
-
| Large (40+ hours) | 8-12 | 5-10 |
|
|
20
|
+
### Target Task Counts
|
|
24
21
|
|
|
25
|
-
|
|
22
|
+
| Feature Complexity | Total Tasks |
|
|
23
|
+
| ------------------- | ----------- |
|
|
24
|
+
| Simple (< 4 hours) | 2-3 |
|
|
25
|
+
| Medium (4-16 hours) | 3-5 |
|
|
26
|
+
| Complex (16-40 hrs) | 5-8 |
|
|
27
|
+
| Large (40+ hours) | 8-12 |
|
|
26
28
|
|
|
27
|
-
|
|
28
|
-
- **Merge related files**: Model + migration + factory = 1 task
|
|
29
|
-
- **Bundle by layer**: All service layer work = 1 task (if related)
|
|
30
|
-
- **Avoid micro-tasks**: Nothing under 1-2 hours as standalone
|
|
31
|
-
- **Limit phases**: Combine Foundation + Implementation when small
|
|
29
|
+
### Principles
|
|
32
30
|
|
|
33
|
-
|
|
31
|
+
- **Group by deliverable**: combine work that ships together (model + migration + factory = 1 task)
|
|
32
|
+
- **Bundle by layer or resource**: all service work for one area, all endpoints for one resource
|
|
33
|
+
- **Avoid micro-tasks**: nothing under 1-2 hours standalone
|
|
34
|
+
- **Limit phases**: combine Foundation + Implementation when small
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
2. Are there tasks under 2 hours that should be merged?
|
|
37
|
-
3. Would a developer naturally complete these together?
|
|
38
|
-
4. Does each task represent meaningful progress?
|
|
36
|
+
Before finalizing, ask: Can adjacent tasks merge? Would one developer naturally finish these together? Does each task show meaningful progress?
|
|
39
37
|
|
|
40
38
|
## Process
|
|
41
39
|
|
|
42
|
-
1. **Load
|
|
43
|
-
- Read specification from `docs/features/{{ISSUE_ID}}-{{FEATURE_NAME}}/spec.md`
|
|
44
|
-
- Read plan from `docs/features/{{ISSUE_ID}}-{{FEATURE_NAME}}/plan.md`
|
|
45
|
-
- Review `AGENTS.md` for project patterns
|
|
46
|
-
|
|
47
|
-
2. **Generate Consolidated Task Breakdown**:
|
|
48
|
-
|
|
49
|
-
Create `docs/features/{{ISSUE_ID}}-{{FEATURE_NAME}}/tasks.md` with phases (combine where appropriate):
|
|
50
|
-
|
|
51
|
-
### Phase 1: Foundation & Setup (combine into 1 task)
|
|
52
|
-
- Database schema changes, migrations, seeders
|
|
53
|
-
- Type definitions and interfaces
|
|
54
|
-
- Base models and validators
|
|
55
|
-
- Configuration and dependencies
|
|
56
|
-
|
|
57
|
-
### Phase 2: Core Implementation (group by feature area)
|
|
58
|
-
- Core functionality grouped by component
|
|
59
|
-
- API endpoints or components (CRUD together)
|
|
60
|
-
- Business logic and services
|
|
61
|
-
|
|
62
|
-
### Phase 3: Testing (1 task per major component)
|
|
63
|
-
- Unit tests for component
|
|
64
|
-
- Integration tests for feature
|
|
65
|
-
- E2E tests (if applicable)
|
|
66
|
-
|
|
67
|
-
### Phase 4: Polish & Documentation (combine into 1 task)
|
|
68
|
-
- Error handling improvements
|
|
69
|
-
- Performance optimization
|
|
70
|
-
- Documentation updates
|
|
40
|
+
1. **Load context**: `docs/features/{{ISSUE_ID}}-{{FEATURE_NAME}}/spec.md`, `plan.md`, and `AGENTS.md` (project patterns).
|
|
71
41
|
|
|
72
|
-
|
|
42
|
+
2. **Write `docs/features/{{ISSUE_ID}}-{{FEATURE_NAME}}/tasks.md`** in the format below.
|
|
73
43
|
|
|
74
|
-
|
|
75
|
-
### T001: [Consolidated Task Name]
|
|
44
|
+
3. **Report**: tasks file path, task count, number of `[P]` tasks, and the consolidation note ("Combined X items into Y tasks"). Next step: `/implement-feature`, or `/assign-tasks` to create tickets.
|
|
76
45
|
|
|
77
|
-
|
|
78
|
-
**Estimated Effort**: [Hours - aim for 2-8 hours per task]
|
|
79
|
-
**Parallel**: [Yes/No]
|
|
46
|
+
## Task Line Format
|
|
80
47
|
|
|
81
|
-
|
|
48
|
+
```markdown
|
|
49
|
+
# Tasks: {{ISSUE_ID}}-{{FEATURE_NAME}}
|
|
82
50
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
**Files to Create/Modify**:
|
|
88
|
-
|
|
89
|
-
- `{{SRC_DIR}}/path/to/file.{{FILE_EXTENSION}}`
|
|
90
|
-
- `{{SRC_DIR}}/path/to/related.{{FILE_EXTENSION}}`
|
|
91
|
-
- `{{TEST_DIR}}/path/to/test.{{FILE_EXTENSION}}`
|
|
92
|
-
|
|
93
|
-
**Acceptance Criteria**:
|
|
94
|
-
|
|
95
|
-
- [ ] All components implemented
|
|
96
|
-
- [ ] Tests passing
|
|
97
|
-
- [ ] No type/lint errors
|
|
98
|
-
|
|
99
|
-
**Subtasks** (only if task > 8 hours):
|
|
100
|
-
|
|
101
|
-
- [ ] Subtask 1
|
|
102
|
-
- [ ] Subtask 2
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
4. **Task Ordering Rules**:
|
|
106
|
-
- Setup before implementation
|
|
107
|
-
- Tests before or alongside code (TDD)
|
|
108
|
-
- Core before integration
|
|
109
|
-
- Everything before polish
|
|
110
|
-
|
|
111
|
-
5. **Parallel Execution**:
|
|
112
|
-
- Mark parallelizable tasks with `[P]`
|
|
113
|
-
- Different feature areas = can be parallel
|
|
114
|
-
- Same files = sequential
|
|
51
|
+
- [ ] T1 Schema + migration for sessions — PROJ-124
|
|
52
|
+
- [ ] T2 Login/logout endpoints [P]
|
|
53
|
+
- [ ] T3 Login form + error states [P]
|
|
54
|
+
```
|
|
115
55
|
|
|
116
|
-
|
|
117
|
-
- Tasks file path
|
|
118
|
-
- **Consolidated task count** (should be 3-7)
|
|
119
|
-
- Estimated total effort
|
|
120
|
-
- **Consolidation note**: "Combined X items into Y tasks"
|
|
121
|
-
- Ready for `/implement` command
|
|
56
|
+
Each task is one line:
|
|
122
57
|
|
|
123
|
-
|
|
58
|
+
- **Checkbox** `- [ ]`. Tick to `- [x]` once the task is implemented and reviewed.
|
|
59
|
+
- **ID** `T<n>`, sequential, in dependency order.
|
|
60
|
+
- **Description**: short and deliverable-focused (what ships, not how). No file lists, effort, or acceptance criteria.
|
|
61
|
+
- **`[P]`** only when the task can run in parallel (different files, no shared state). Omit otherwise.
|
|
62
|
+
- **` — <ticket key>`** appended after an em dash once a ticket exists. Written by `/assign-tasks`; never added before the ticket is created.
|
|
63
|
+
- **Sub-bullets** only when a task truly needs them (rare).
|
|
124
64
|
|
|
125
|
-
|
|
65
|
+
Ordering: setup before implementation; tests before or alongside code (TDD); core before integration; polish last. Tasks that touch the same files run sequentially and are never `[P]`.
|
|
126
66
|
|
|
127
|
-
-
|
|
128
|
-
- "Create X" then "Configure X" then "Test X"
|
|
129
|
-
- Setup tasks under 1 hour
|
|
130
|
-
- Each CRUD operation separately
|
|
67
|
+
## Anti-Patterns
|
|
131
68
|
|
|
132
|
-
|
|
69
|
+
❌ One task per file, per CRUD operation, or split into "Create X" / "Configure X" / "Test X"
|
|
70
|
+
❌ Standalone setup tasks under 1 hour
|
|
133
71
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
- Related service layer methods
|
|
72
|
+
✅ All database work for an entity
|
|
73
|
+
✅ All API endpoints for a resource
|
|
74
|
+
✅ All configuration and setup for the feature
|
|
138
75
|
|
|
139
76
|
## Orchestrator Dispatch Guide
|
|
140
77
|
|
|
141
|
-
When this
|
|
78
|
+
When this list is used by `/implement-feature` or `/implement`:
|
|
142
79
|
|
|
143
|
-
-
|
|
144
|
-
- **
|
|
145
|
-
- **Domain routing**:
|
|
146
|
-
- **Review gate**:
|
|
80
|
+
- **`[P]` tasks**: dispatch one subagent per task concurrently, using `dispatching-parallel-agents`
|
|
81
|
+
- **Other tasks**: execute in dependency order, one subagent per task, using `subagent-driven-development`
|
|
82
|
+
- **Domain routing**: match each task to a specialist (Backend Architect, Frontend Developer, API Specialist, etc.)
|
|
83
|
+
- **Review gate**: every task passes a Reviewer before it is ticked `[x]`
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Decide whether a factory job is approved for merge or escalated to a human, checking history, final diff, a spot-checked criterion, a dry-run merge, and escalation triggers."
|
|
3
|
+
globs:
|
|
4
|
+
alwaysApply: agent
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Factory Approver Agent
|
|
8
|
+
|
|
9
|
+
Decide whether a factory job is approved for merge or escalated to a human.
|
|
10
|
+
|
|
11
|
+
**CRITICAL: READ:** [.claude/agents-snippets/factory-approver.md](../../.claude/agents-snippets/factory-approver.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Build a factory job's feature inside its git worktree, following TDD, and log results in build.md."
|
|
3
|
+
globs:
|
|
4
|
+
alwaysApply: agent
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Factory Builder Agent
|
|
8
|
+
|
|
9
|
+
Build a factory job's feature inside its git worktree, following TDD, and log results in build.md.
|
|
10
|
+
|
|
11
|
+
**CRITICAL: READ:** [.claude/agents-snippets/factory-builder.md](../../.claude/agents-snippets/factory-builder.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Review a factory job's branch for correctness, simplicity, reuse, conventions, and docs, and run the project's checks."
|
|
3
|
+
globs:
|
|
4
|
+
alwaysApply: agent
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Factory Reviewer (Code) Agent
|
|
8
|
+
|
|
9
|
+
Review a factory job's branch for correctness, simplicity, reuse, conventions, and docs, and run the project's checks.
|
|
10
|
+
|
|
11
|
+
**CRITICAL: READ:** [.claude/agents-snippets/factory-reviewer-code.md](../../.claude/agents-snippets/factory-reviewer-code.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Audit a factory job's branch diff for security problems in a fresh context."
|
|
3
|
+
globs:
|
|
4
|
+
alwaysApply: agent
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Factory Reviewer (Security) Agent
|
|
8
|
+
|
|
9
|
+
Audit a factory job's branch diff for security problems in a fresh context.
|
|
10
|
+
|
|
11
|
+
**CRITICAL: READ:** [.claude/agents-snippets/factory-reviewer-security.md](../../.claude/agents-snippets/factory-reviewer-security.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Review a factory job's feature at its build location for design-system consistency, spacing, typography, contrast, and responsive layout, without signing in or writing to real services."
|
|
3
|
+
globs:
|
|
4
|
+
alwaysApply: agent
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Factory Reviewer (UI) Agent
|
|
8
|
+
|
|
9
|
+
Review a factory job's feature at its build location for design-system consistency, spacing, typography, contrast, and responsive layout, without signing in or writing to real services.
|
|
10
|
+
|
|
11
|
+
**CRITICAL: READ:** [.claude/agents-snippets/factory-reviewer-ui.md](../../.claude/agents-snippets/factory-reviewer-ui.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Review a factory job's feature at its build location for flows, states, copy, accessibility, and mobile, without signing in or writing to real services."
|
|
3
|
+
globs:
|
|
4
|
+
alwaysApply: agent
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Factory Reviewer (UX) Agent
|
|
8
|
+
|
|
9
|
+
Review a factory job's feature at its build location for flows, states, copy, accessibility, and mobile, without signing in or writing to real services.
|
|
10
|
+
|
|
11
|
+
**CRITICAL: READ:** [.claude/agents-snippets/factory-reviewer-ux.md](../../.claude/agents-snippets/factory-reviewer-ux.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Write a testable spec.md for a factory job from a feature request, after inspecting the real code."
|
|
3
|
+
globs:
|
|
4
|
+
alwaysApply: agent
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Factory Spec Writer Agent
|
|
8
|
+
|
|
9
|
+
Write a testable spec.md for a factory job from a feature request, after inspecting the real code.
|
|
10
|
+
|
|
11
|
+
**CRITICAL: READ:** [.claude/agents-snippets/factory-spec-writer.md](../../.claude/agents-snippets/factory-spec-writer.md)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Run an opt-in factory job: intake, spec and plan gates, build in a worktree or in place, reviews, approval, local merge"
|
|
3
|
+
argument-hint: "[--in-place] <feature request> | start [--in-place] <request | KEY | slug | job-id> | approve <job-id> | rework <job-id> <note> | abandon <job-id> | status [--all] | watch [--all] | archive [--all] [--dry-run] | prune [--all] [--abandoned] [--dry-run]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Factory
|
|
7
|
+
|
|
8
|
+
## Agent Dispatch
|
|
9
|
+
|
|
10
|
+
> **Run in the main session.** The orchestrator dispatches these agents; they cannot dispatch others.
|
|
11
|
+
|
|
12
|
+
| Agent | When to use |
|
|
13
|
+
|-------|-------------|
|
|
14
|
+
| `factory-spec-writer` | Spec stage (`spec` mode) writes `spec.md`; plan stage (`plan` mode) writes `plan.md` and `tasks.md` |
|
|
15
|
+
| `factory-builder` | Build, repair, and rework: writes `build.md` in the job folder; its code goes in the build location |
|
|
16
|
+
| `factory-reviewer-code` | Review round, `code` lens |
|
|
17
|
+
| `factory-reviewer-security` | Review round, `security` lens |
|
|
18
|
+
| `factory-reviewer-ux` | Review round, `ux` lens (opt-in) |
|
|
19
|
+
| `factory-reviewer-ui` | Review round, `ui` lens (opt-in) |
|
|
20
|
+
| `factory-approver` | Approval gate: writes `decision.md` |
|
|
21
|
+
|
|
22
|
+
Dispatch each agent by its kebab-case name, as in the first column. Copilot may show a display name; pick the agent with that name.
|
|
23
|
+
|
|
24
|
+
**CRITICAL: READ:** [.claude/prompt-snippets/factory.md](../../.claude/prompt-snippets/factory.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Factory Approver
|
|
3
|
+
description: "Decide whether a factory job is approved for merge or escalated to a human, checking history, final diff, a spot-checked criterion, a dry-run merge, and escalation triggers. Dispatched by the factory orchestrator."
|
|
4
|
+
tools: ["read", "search", "edit", "runInTerminal", "terminalLastCommand"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Factory Approver Agent
|
|
8
|
+
|
|
9
|
+
Decide whether a factory job is approved for merge or escalated to a human.
|
|
10
|
+
|
|
11
|
+
**CRITICAL: READ:** [.claude/agents-snippets/factory-approver.md](../../.claude/agents-snippets/factory-approver.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Factory Builder
|
|
3
|
+
description: "Build a factory job's feature inside its git worktree, following TDD, and log results in build.md. Runs in build, repair, or rework mode. Dispatched by the factory orchestrator."
|
|
4
|
+
tools: ["read", "search", "edit", "runInTerminal", "terminalLastCommand"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Factory Builder Agent
|
|
8
|
+
|
|
9
|
+
Build a factory job's feature inside its git worktree, following TDD, and log results in build.md.
|
|
10
|
+
|
|
11
|
+
**CRITICAL: READ:** [.claude/agents-snippets/factory-builder.md](../../.claude/agents-snippets/factory-builder.md)
|