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,119 @@
|
|
|
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. The `AGENTS.md` of each affected app or package, for its patterns and commands.
|
|
13
|
+
5. [Feature spec template](../../templates/feature-spec.template.md) for the section structure.
|
|
14
|
+
6. Any existing `spec.md`, `plan.md`, and `tasks.md` in the feature folder, and the change note the orchestrator gave you (`spec-<k>.md` in spec mode, `plan-<k>.md` in plan mode). Update them, do not start over blind.
|
|
15
|
+
7. `intake.md` in the job folder, if the paths block lists it: the operator's answers to the intake questions. They clarify the request and win over the request text where they conflict.
|
|
16
|
+
|
|
17
|
+
## Spec mode
|
|
18
|
+
|
|
19
|
+
You write `spec.md` in the feature folder (paths block). Nothing else.
|
|
20
|
+
|
|
21
|
+
Use this skeleton, keeping the template's section order and dropping sections that do not apply (Timeline, References, Changelog):
|
|
22
|
+
|
|
23
|
+
```markdown
|
|
24
|
+
# Feature Specification: <short title>
|
|
25
|
+
|
|
26
|
+
## Summary
|
|
27
|
+
|
|
28
|
+
One paragraph: what changes for whom.
|
|
29
|
+
|
|
30
|
+
## Background
|
|
31
|
+
|
|
32
|
+
- **Problem:** what is wrong or missing today.
|
|
33
|
+
- **Current behavior:** what the code does now, with file references.
|
|
34
|
+
|
|
35
|
+
## Requirements
|
|
36
|
+
|
|
37
|
+
- **FR-1:** The system shall ...
|
|
38
|
+
- **FR-2:** ...
|
|
39
|
+
|
|
40
|
+
## Acceptance Criteria
|
|
41
|
+
|
|
42
|
+
Numbered, each one testable by a command or an observable step.
|
|
43
|
+
|
|
44
|
+
- **AC-1:** Given ..., when ..., then ... (verify: `<command or step>`)
|
|
45
|
+
- **AC-2:** ...
|
|
46
|
+
|
|
47
|
+
## Affected Code
|
|
48
|
+
|
|
49
|
+
- `path/to/file`: why it changes
|
|
50
|
+
|
|
51
|
+
## Out of Scope
|
|
52
|
+
|
|
53
|
+
- ...
|
|
54
|
+
|
|
55
|
+
## Assumptions
|
|
56
|
+
|
|
57
|
+
- Technical assumption: ...
|
|
58
|
+
- **[PRODUCT DECISION]** Assumption that a person must decide: ... (options: ...)
|
|
59
|
+
|
|
60
|
+
## Open Questions
|
|
61
|
+
|
|
62
|
+
- ... (or "None")
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Rules for the spec:
|
|
66
|
+
|
|
67
|
+
- Every acceptance criterion must be testable. Name the check (a test, a command, or an observable UI step). "Works well" is not testable.
|
|
68
|
+
- Acceptance criteria are numbered `AC-n`, and requirements are numbered `FR-n`. Builders and reviewers refer to these numbers.
|
|
69
|
+
- Keep scope to what the request asks. Put tempting extras under Out of Scope.
|
|
70
|
+
- 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.
|
|
71
|
+
- 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.
|
|
72
|
+
- Do not write a size line or a plan in the spec. Sizing happens in plan mode.
|
|
73
|
+
|
|
74
|
+
## Plan mode
|
|
75
|
+
|
|
76
|
+
You write `plan.md` in the feature folder, and `tasks.md` for large work. Nothing else. Do not change `spec.md`.
|
|
77
|
+
|
|
78
|
+
`plan.md` is concise. Use this skeleton:
|
|
79
|
+
|
|
80
|
+
```markdown
|
|
81
|
+
# Plan: <short title>
|
|
82
|
+
|
|
83
|
+
**Size:** small — one line of reason. (The word after `Size:` is exactly one of `small`, `large`, or `unclear`.)
|
|
84
|
+
|
|
85
|
+
## Approach
|
|
86
|
+
|
|
87
|
+
Short: how the change is built, and which files it touches.
|
|
88
|
+
|
|
89
|
+
## Steps
|
|
90
|
+
|
|
91
|
+
1. <step, in build order>
|
|
92
|
+
2. ...
|
|
93
|
+
|
|
94
|
+
## Checks
|
|
95
|
+
|
|
96
|
+
- AC-n: <test or command that proves it>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
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.
|
|
100
|
+
|
|
101
|
+
`tasks.md` (large only) is a slim list, one line per task, with no per-task sections:
|
|
102
|
+
|
|
103
|
+
```markdown
|
|
104
|
+
# Tasks: <KEY-or-slug>
|
|
105
|
+
- [ ] T1 <one-line task>
|
|
106
|
+
- [ ] T2 <one-line task> [P]
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
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.
|
|
110
|
+
|
|
111
|
+
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.
|
|
112
|
+
|
|
113
|
+
## Rules
|
|
114
|
+
|
|
115
|
+
- 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.
|
|
116
|
+
- 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.
|
|
117
|
+
- Name every affected app and package in the plan's Steps and in the spec's Affected Code (`apps/<app>/...` or `packages/<pkg>/...`). If a shared package changes, list its downstream consumers too, so the build and reviews test them.
|
|
118
|
+
- Keep `spec.md` and `plan.md` free of tooling chatter. They are feature docs that merge with the code.
|
|
119
|
+
- 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).
|
|
@@ -48,9 +48,11 @@ When interacting with {{ISSUE_TRACKER}}, use MCP tools first (see the `issue-tra
|
|
|
48
48
|
1. **Parse Document**:
|
|
49
49
|
- Load the specified document (.md, .txt, .json)
|
|
50
50
|
- Detect document structure (headers, lists, task categories)
|
|
51
|
-
-
|
|
51
|
+
- For `tasks.md`: each `- [ ]` line is one task. The text after the ID is the summary. A trailing ` — <KEY>` means a ticket already exists, so skip that line. Sub-bullets, if any, are subtasks
|
|
52
|
+
- For requirement documents: extract task hierarchy: Epic → Story → Task → Subtask
|
|
52
53
|
|
|
53
54
|
2. **Consolidate & Classify** (do this BEFORE creating tickets):
|
|
55
|
+
- **A `tasks.md` from `/tasks` is pre-consolidated**: one line = one ticket. Only merge lines that are clearly one deliverable; do not re-split them
|
|
54
56
|
- **Group related items** by component, feature area, or deliverable
|
|
55
57
|
- **Merge small tasks** (< 2 SP) into related larger tasks
|
|
56
58
|
- **Eliminate redundant subtasks** that are obvious steps
|
|
@@ -62,7 +64,7 @@ When interacting with {{ISSUE_TRACKER}}, use MCP tools first (see the `issue-tra
|
|
|
62
64
|
- **Task**: Implementation work, 2-8 story points (avoid < 2 SP tasks)
|
|
63
65
|
- **Subtask**: Only for complex tasks needing breakdown, 1-3 story points
|
|
64
66
|
|
|
65
|
-
4. **Estimate Effort
|
|
67
|
+
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`):
|
|
66
68
|
- 0.5-1 hours → Merge with related task (too small alone)
|
|
67
69
|
- 2-3 hours → 2 story points
|
|
68
70
|
- 4-6 hours → 3-5 story points
|
|
@@ -74,6 +76,8 @@ When interacting with {{ISSUE_TRACKER}}, use MCP tools first (see the `issue-tra
|
|
|
74
76
|
- Link child issues to parents
|
|
75
77
|
- Set assignees, labels, and story points
|
|
76
78
|
- Create dependency links where noted
|
|
79
|
+
- Ticket description: the task summary plus the acceptance criteria from `spec.md` for that deliverable
|
|
80
|
+
- Write each ticket key back to its `tasks.md` line after the em dash (`- [ ] T1 Schema + migration — PROJ-124`)
|
|
77
81
|
|
|
78
82
|
6. **Generate Report**:
|
|
79
83
|
- List all created tickets with IDs
|
|
@@ -49,19 +49,28 @@ You are helping to bootstrap AI instructions for this monorepo by analyzing the
|
|
|
49
49
|
|
|
50
50
|
2. **Infer Root-Level Variables**:
|
|
51
51
|
|
|
52
|
-
| Variable
|
|
53
|
-
|
|
|
54
|
-
| `{{PROJECT_NAME}}`
|
|
55
|
-
| `{{PROJECT_DESCRIPTION}}`
|
|
56
|
-
| `{{LANGUAGE}}`
|
|
57
|
-
| `{{PACKAGE_MANAGER}}`
|
|
58
|
-
| `{{
|
|
59
|
-
| `{{
|
|
60
|
-
| `{{
|
|
61
|
-
| `{{
|
|
62
|
-
| `{{
|
|
63
|
-
| `{{
|
|
64
|
-
| `{{
|
|
52
|
+
| Variable | How to Infer |
|
|
53
|
+
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
54
|
+
| `{{PROJECT_NAME}}` | Root config name or directory name |
|
|
55
|
+
| `{{PROJECT_DESCRIPTION}}` | Root config description |
|
|
56
|
+
| `{{LANGUAGE}}` | Detected ecosystem |
|
|
57
|
+
| `{{PACKAGE_MANAGER}}` | Lock file or config (pnpm, composer, dotnet, etc.) |
|
|
58
|
+
| `{{SETUP_COMMAND}}` | Root install from the lock file (`pnpm install --frozen-lockfile`, `npm ci`, `yarn install --immutable`); a root `setup` script wins if present |
|
|
59
|
+
| `{{BUILD_SYSTEM}}` | Build tool (Turborepo, Nx, MSBuild, Maven, etc.) |
|
|
60
|
+
| `{{DEFAULT_BRANCH}}` | `git symbolic-ref --short refs/remotes/origin/HEAD`, minus `origin/`; else `main` |
|
|
61
|
+
| `{{TEST_FRAMEWORK}}` | Common test framework across packages |
|
|
62
|
+
| `{{DEV_COMMAND}}` | Root dev script or task (`turbo run dev`, `nx run-many -t serve`) |
|
|
63
|
+
| `{{DEV_PORT_FLAG}}` | Port flag or env var the root dev command passes to apps (`--port <port>`, `PORT=<port>`); check each app config. Ask if none |
|
|
64
|
+
| `{{TEST_COMMAND}}` | Root test script or task (`turbo run test`, `nx run-many -t test`) |
|
|
65
|
+
| `{{LINT_COMMAND}}` | Root lint script or task (`turbo run lint`, `nx run-many -t lint`) |
|
|
66
|
+
| `{{BUILD_COMMAND}}` | Root build script or task (`turbo run build`, `nx run-many -t build`) |
|
|
67
|
+
| `{{ISSUE_TRACKER}}` | Detected project management tool |
|
|
68
|
+
| `{{PM_URL}}` | Project management URL (if applicable) |
|
|
69
|
+
| `{{PROJECT_KEY}}` | Project/workspace ID (if applicable) |
|
|
70
|
+
| `{{PM_ISSUE_KEY}}` | Issue key format (e.g., PROJ-###, #42) |
|
|
71
|
+
| `{{FACTORY_PORT_BASE}}` | Default `5100` |
|
|
72
|
+
| `{{APPROVAL_MODE}}` | Default `human` |
|
|
73
|
+
| `{{FACTORY_REVIEW_LENSES}}` | Default `code, security`; add `ux, ui` only if the project has a UI and a browser tool is configured (for example a browser MCP server) |
|
|
65
74
|
|
|
66
75
|
3. **Analyze Apps**:
|
|
67
76
|
|
|
@@ -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.
|
|
@@ -56,7 +56,7 @@ Implement a feature by completing tasks sequentially with proper tracking.
|
|
|
56
56
|
|
|
57
57
|
c. **Implement (TDD required)**:
|
|
58
58
|
|
|
59
|
-
- Follow acceptance criteria
|
|
59
|
+
- Follow the acceptance criteria in `spec.md` for this task's deliverable
|
|
60
60
|
- Use patterns from `AGENTS.md`
|
|
61
61
|
- **Write a failing test first** — one behavior per test, clear name, real code
|
|
62
62
|
- **Verify it fails** — watch it fail for the right reason (feature missing, not error)
|
|
@@ -79,7 +79,7 @@ Implement a feature by completing tasks sequentially with proper tracking.
|
|
|
79
79
|
git commit -m "feat({{SCOPE}}): {{DESCRIPTION}}"
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
-
f. **Mark Task Complete
|
|
82
|
+
f. **Mark Task Complete**: tick `- [x]` for the task in `tasks.md`
|
|
83
83
|
|
|
84
84
|
5. **Post-Implementation Review**:
|
|
85
85
|
- Dispatch **Reviewer** agent on all changes before proceeding
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
You are helping to break down a feature into actionable tasks.
|
|
2
2
|
|
|
3
|
+
`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
|
+
|
|
3
5
|
## Your Task
|
|
4
6
|
|
|
5
7
|
1. **Load context**:
|
|
@@ -7,102 +9,62 @@ You are helping to break down a feature into actionable tasks.
|
|
|
7
9
|
- Read the plan in `apps/{{APP_NAME}}/docs/features/{{ISSUE_ID}}-{{FEATURE_NAME}}/plan.md` (if exists)
|
|
8
10
|
- Review `AGENTS.md` for project patterns
|
|
9
11
|
|
|
10
|
-
2. **Break down into tasks** (aim for 3-7 total
|
|
11
|
-
- **Setup**:
|
|
12
|
-
- **Core**:
|
|
13
|
-
- **Tests**:
|
|
14
|
-
- **Polish**:
|
|
15
|
-
|
|
16
|
-
3. **
|
|
17
|
-
- **Group related work**:
|
|
18
|
-
- **Merge small tasks**:
|
|
19
|
-
- **
|
|
20
|
-
- **
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
12
|
+
2. **Break down into tasks** (aim for 3-7 total; never exceed 10):
|
|
13
|
+
- **Setup**: dependencies, configuration, scaffolding (combine into 1 task)
|
|
14
|
+
- **Core**: main implementation, grouped by component or feature area
|
|
15
|
+
- **Tests**: unit and integration tests (1 task per component)
|
|
16
|
+
- **Polish**: documentation, cleanup, optimization (combine into 1 task)
|
|
17
|
+
|
|
18
|
+
3. **Consolidation rules** (CRITICAL):
|
|
19
|
+
- **Group related work**: combine tasks that touch the same files or feature area
|
|
20
|
+
- **Merge small tasks**: anything under 2 hours folds into related work
|
|
21
|
+
- **Bundle by outcome**: group by what gets delivered, not individual steps
|
|
22
|
+
- **Keep each task inside one app**. Cross-app work: shared package task first, then app tasks
|
|
23
|
+
|
|
24
|
+
4. **Create the task list** at `apps/{{APP_NAME}}/docs/features/{{ISSUE_ID}}-{{FEATURE_NAME}}/tasks.md`:
|
|
25
|
+
|
|
26
|
+
```markdown
|
|
27
|
+
# Tasks: {{ISSUE_ID}}-{{FEATURE_NAME}}
|
|
28
|
+
|
|
29
|
+
- [ ] T1 Setup: dependencies and configuration
|
|
30
|
+
- [ ] T2 Models, services, and endpoints for sessions
|
|
31
|
+
- [ ] T3 Session tests [P]
|
|
32
|
+
- [ ] T4 Docs and cleanup
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Each task is one line:
|
|
36
|
+
- **Checkbox** `- [ ]`. Tick to `- [x]` once the task is implemented and reviewed.
|
|
37
|
+
- **ID** `T<n>`, sequential, in dependency order.
|
|
38
|
+
- **Description**: short and deliverable-focused (what ships, not how). No file lists, effort, or acceptance criteria.
|
|
39
|
+
- **`[P]`** only when the task can run in parallel (different files, no shared state). Omit otherwise.
|
|
40
|
+
- **` — <ticket key>`** appended after an em dash once a ticket exists. Written by `/assign-tasks`; never added before the ticket is created.
|
|
41
|
+
- **Sub-bullets** only when a task truly needs them (rare).
|
|
42
|
+
|
|
43
|
+
5. **Task ordering**:
|
|
33
44
|
- Setup before implementation
|
|
34
45
|
- Tests before or alongside code (TDD)
|
|
35
46
|
- Core features before integrations
|
|
36
|
-
-
|
|
37
|
-
|
|
38
|
-
6. **Create task list**:
|
|
39
|
-
- Output to `apps/{{APP_NAME}}/docs/features/{{ISSUE_ID}}-{{FEATURE_NAME}}/tasks.md`
|
|
40
|
-
- Each task should be specific and actionable
|
|
41
|
-
- Include file paths where relevant
|
|
42
|
-
|
|
43
|
-
## Task Template
|
|
44
|
-
|
|
45
|
-
```markdown
|
|
46
|
-
# Tasks: {{FEATURE_NAME}}
|
|
47
|
-
|
|
48
|
-
**Complexity**: Simple | Medium | Complex
|
|
49
|
-
**Estimated Total**: X hours
|
|
50
|
-
**Task Count**: X tasks
|
|
51
|
-
|
|
52
|
-
## T001: Setup & Configuration
|
|
53
|
-
|
|
54
|
-
- Install dependencies and configure environment
|
|
55
|
-
- Create file structure and scaffolding
|
|
56
|
-
- **Files**: `package.json`, `{{CONFIG_DIR}}/*`
|
|
57
|
-
|
|
58
|
-
## T002: Core Implementation - [Feature Area]
|
|
47
|
+
- Polish last
|
|
48
|
+
- Tasks touching the same files run sequentially and are never `[P]`
|
|
59
49
|
|
|
60
|
-
|
|
61
|
-
- **Files**: `{{SRC_DIR}}/models/*`, `{{SRC_DIR}}/services/*`
|
|
62
|
-
- **Subtasks** (only if complex):
|
|
63
|
-
- Model and database layer
|
|
64
|
-
- Business logic and services
|
|
65
|
-
- API/Controller layer
|
|
66
|
-
|
|
67
|
-
## T003 [P]: Testing
|
|
68
|
-
|
|
69
|
-
- Add unit and integration tests for all components
|
|
70
|
-
- **Files**: `{{TEST_DIR}}/*`
|
|
71
|
-
|
|
72
|
-
## T004: Polish & Documentation
|
|
73
|
-
|
|
74
|
-
- Update documentation, error handling, and cleanup
|
|
75
|
-
- **Files**: `README.md`, `docs/*`
|
|
76
|
-
```
|
|
50
|
+
6. **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.
|
|
77
51
|
|
|
78
52
|
## Anti-Patterns to Avoid
|
|
79
53
|
|
|
80
|
-
❌
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
- "Create X" then "Configure X" then "Test X" (combine them)
|
|
84
|
-
- Minor changes that take < 30 minutes
|
|
85
|
-
- Obvious steps like "commit code" or "run linter"
|
|
86
|
-
|
|
87
|
-
✅ **Do combine into single tasks**:
|
|
88
|
-
|
|
89
|
-
- All model/migration/factory work for an entity
|
|
90
|
-
- Related API endpoints that share logic
|
|
91
|
-
- All configuration and environment setup
|
|
92
|
-
- Documentation updates across multiple files
|
|
93
|
-
|
|
94
|
-
## Notes
|
|
54
|
+
❌ One task per file in a feature
|
|
55
|
+
❌ "Create X" then "Configure X" then "Test X"
|
|
56
|
+
❌ Minor changes under 30 minutes, or obvious steps like "commit code" or "run linter"
|
|
95
57
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
58
|
+
✅ All model, migration, and factory work for an entity
|
|
59
|
+
✅ Related API endpoints that share logic
|
|
60
|
+
✅ All configuration and environment setup
|
|
61
|
+
✅ Documentation updates across multiple files
|
|
100
62
|
|
|
101
63
|
## Orchestrator Dispatch Guide
|
|
102
64
|
|
|
103
|
-
When this
|
|
65
|
+
When this list is used by `/implement-feature` or `/implement`:
|
|
104
66
|
|
|
105
|
-
-
|
|
106
|
-
- **
|
|
107
|
-
- **Domain routing**:
|
|
108
|
-
- **Review gate**:
|
|
67
|
+
- **`[P]` tasks**: dispatch one subagent per task concurrently, using `dispatching-parallel-agents`
|
|
68
|
+
- **Other tasks**: execute in dependency order, one subagent per task, using `subagent-driven-development`
|
|
69
|
+
- **Domain routing**: match each task to a specialist (Backend Architect, Frontend Developer, API Specialist, etc.)
|
|
70
|
+
- **Review gate**: every task passes a Reviewer before it is ticked `[x]`
|
|
@@ -8,13 +8,15 @@ This monorepo uses a **distributed documentation strategy** where app-specific d
|
|
|
8
8
|
|
|
9
9
|
**App-specific documentation** must live in respective app folders:
|
|
10
10
|
|
|
11
|
-
- **{{APP_1}} Features** → `apps/{{APP_1}}/docs/features
|
|
12
|
-
- **{{APP_2}} Features** → `apps/{{APP_2}}/docs/features
|
|
11
|
+
- **{{APP_1}} Features** → `apps/{{APP_1}}/docs/features/<feature>/`
|
|
12
|
+
- **{{APP_2}} Features** → `apps/{{APP_2}}/docs/features/<feature>/`
|
|
13
13
|
- **{{APP_1}} Fixes** → `apps/{{APP_1}}/docs/fixes/`
|
|
14
14
|
- **{{APP_2}} Fixes** → `apps/{{APP_2}}/docs/fixes/`
|
|
15
15
|
- **Shared Package Features** → `packages/{{PACKAGE_NAME}}/docs/features/`
|
|
16
16
|
- **Shared Package Fixes** → `packages/{{PACKAGE_NAME}}/docs/fixes/`
|
|
17
17
|
|
|
18
|
+
**Factory features are root-scoped.** The factory pipeline runs from the monorepo root, so features it runs live at root `docs/features/<feature>/` (for example `docs/features/PROJ-1234-onboarding/`). Other features stay in their app or package folder as listed above. `<feature>` is the per-run feature folder name: `<KEY>-<slug>`, or `<slug>` when there is no ticket.
|
|
19
|
+
|
|
18
20
|
**Root `docs/` folder** is ONLY for monorepo-wide documentation:
|
|
19
21
|
|
|
20
22
|
- Architecture decisions affecting multiple apps (`docs/architecture/`)
|
|
@@ -81,12 +83,12 @@ If the monorepo includes a documentation app (e.g., Docus, Nuxt Content, Docusau
|
|
|
81
83
|
|
|
82
84
|
Each app maintains its own feature documentation:
|
|
83
85
|
|
|
84
|
-
**Location:** `apps/{{APP_NAME}}/docs/features
|
|
86
|
+
**Location:** `apps/{{APP_NAME}}/docs/features/<feature>/`
|
|
85
87
|
|
|
86
88
|
**Required Files:**
|
|
87
89
|
|
|
88
90
|
```
|
|
89
|
-
apps/{{APP_1}}/docs/features
|
|
91
|
+
apps/{{APP_1}}/docs/features/<feature>/
|
|
90
92
|
├── spec.md # Functional specification
|
|
91
93
|
├── plan.md # Implementation plan
|
|
92
94
|
└── [optional] # Code examples, component diagrams
|
|
@@ -160,8 +162,8 @@ Before running `git commit`, verify ALL items that apply to your change:
|
|
|
160
162
|
|
|
161
163
|
**All changes:**
|
|
162
164
|
|
|
163
|
-
- [ ] **Features**: `docs/features
|
|
164
|
-
- [ ] **Features**: `docs/features
|
|
165
|
+
- [ ] **Features**: `docs/features/<feature>/spec.md` exists and reflects the current implementation
|
|
166
|
+
- [ ] **Features**: `docs/features/<feature>/plan.md` is updated if scope changed
|
|
165
167
|
- [ ] **Fixes**: Entry added to `apps/{{APP_NAME}}/docs/fixes/{{YYYY-MM}}.md` (or complex fix folder created)
|
|
166
168
|
- [ ] **Breaking changes**: `CHANGELOG.md` updated
|
|
167
169
|
- [ ] **Architectural decisions**: ADR created in `docs/architecture/` if a significant choice was made
|
|
@@ -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)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Factory Reviewer Code
|
|
3
|
+
description: "Review a factory job's branch for correctness, simplicity, reuse, conventions, and docs, and run the project's checks. Dispatched by the factory orchestrator."
|
|
4
|
+
tools: ["read", "search", "edit", "runInTerminal", "terminalLastCommand"]
|
|
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)
|