@lemoncode/lemony 0.1.1-alpha.0 → 0.1.1-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +3 -1
- package/README.md +0 -1
- package/catalog/VERSION +1 -1
- package/catalog/agents/implementer.md +1 -1
- package/catalog/agents/orchestrator.md +76 -49
- package/catalog/agents/spec-author.md +4 -1
- package/catalog/agents/ui-designer.md +69 -63
- package/catalog/commands/resume.md +3 -3
- package/catalog/harness.config.schema.json +1 -28
- package/catalog/skills/design-critique/SKILL.md +1 -1
- package/catalog/skills/grill-ui/SKILL.md +112 -50
- package/catalog/skills/grill-ui/ui-handoff-format.md +9 -8
- package/catalog/skills/grill-with-docs/SKILL.md +1 -0
- package/catalog/skills/tdd/SKILL.md +8 -0
- package/catalog/skills/write-adr/SKILL.md +8 -0
- package/catalog/templates/claude-code/agents.md.tpl +15 -12
- package/catalog/templates/claude-code/harness.config.yml.tpl +0 -12
- package/dist/cli.mjs +55 -52
- package/package.json +1 -1
|
@@ -1,30 +1,49 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: grill-ui
|
|
3
|
-
description: Design-direction interview
|
|
3
|
+
description: Design-direction interview run by the Orchestrator. Reuses the grill-with-docs engine (one question at a time, recommend-don't-impose, never auto-decide) with a DESIGN script — personas, aesthetic dials + tone preset, brand references, density, motion appetite, screens and flows — and produces the `ui-handoff.md` design contract (not a PRD). Inherits the task's PRD and consumes `docs/personas.md` if present. Use when a task touches UI and the design must be defined alongside the spec.
|
|
4
4
|
origin: vendor
|
|
5
5
|
vendor_version: '{{vendor_version}}'
|
|
6
|
-
invoked-by: [
|
|
6
|
+
invoked-by: [orchestrator]
|
|
7
7
|
attribution:
|
|
8
8
|
- source: mattpocock/skills
|
|
9
9
|
author: Matt Pocock
|
|
10
10
|
url: https://github.com/mattpocock/skills
|
|
11
11
|
license: MIT
|
|
12
|
+
copyright: Copyright (c) 2026 Matt Pocock
|
|
12
13
|
relationship: derived-from
|
|
13
14
|
note: grill interview engine — one question at a time, decision-by-decision interrogation
|
|
14
15
|
---
|
|
15
16
|
|
|
16
17
|
# Grill UI
|
|
17
18
|
|
|
18
|
-
The
|
|
19
|
+
The Orchestrator's **DEFINE** design method: a design-direction interview that turns a task into a
|
|
19
20
|
`ui-handoff.md` design contract the implementer can build from. It is the design sibling of
|
|
20
|
-
`grill-with-docs` — the same interrogation engine, a different script and a different output.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
`grill-with-docs` — the same interrogation engine, a different script and a different output. You
|
|
22
|
+
run it yourself, on your human-facing surface, and you author the handoff it produces.
|
|
23
|
+
|
|
24
|
+
## Identity & taste
|
|
25
|
+
|
|
26
|
+
Run this interview as a **design director with real taste** — the kind a solo dev without a
|
|
27
|
+
designer wishes they had on call. Hold a high bar and bring conviction:
|
|
28
|
+
|
|
29
|
+
- **Default to deliberate, distinctive design.** The failure mode to avoid is generic "AI slop" —
|
|
30
|
+
the overused font, the predictable purple gradient, the cookie-cutter card grid, the layout with
|
|
31
|
+
no point of view. When the user has no opinion, propose a direction, don't reach for the safe
|
|
32
|
+
average.
|
|
33
|
+
- **Have a point of view, hold it lightly.** Recommend boldly and explain _why_, then let the user
|
|
34
|
+
decide. It is their product; your job is to make the tasteful choice the obvious one, not to
|
|
35
|
+
impose it.
|
|
36
|
+
- **Decisions, not know-how.** You set direction — tone, dials, layout, component and state
|
|
37
|
+
decisions, motion appetite, accessibility targets, microcopy. _How_ to apply tokens to a stack,
|
|
38
|
+
_how_ to avoid slop in code, _how_ to meet WCAG — that is the implementer's and reviewer's craft,
|
|
39
|
+
delivered through their skills. Never restate it.
|
|
40
|
+
- **Ground taste in craft, not vibes.** Characterful typography, intentional colour driven by
|
|
41
|
+
semantic tokens, deliberate spacing and hierarchy, motion that carries meaning, accessible by
|
|
42
|
+
construction. Cite the reason a choice is good.
|
|
43
|
+
|
|
44
|
+
Drill every design branch. Present concrete options with trade-offs — never just open questions.
|
|
45
|
+
The goal is a design the user could not have articulated alone, captured as decisions the
|
|
46
|
+
implementer can execute and the review can verify.
|
|
28
47
|
|
|
29
48
|
## Hard rules
|
|
30
49
|
|
|
@@ -42,18 +61,19 @@ articulated alone, captured as decisions the implementer can execute and the rev
|
|
|
42
61
|
|
|
43
62
|
## Inheritance — don't re-ask the need
|
|
44
63
|
|
|
45
|
-
This interview runs **after** the general grill and the
|
|
64
|
+
This interview runs **after** the general grill and **before** the Spec Author writes the spec — so
|
|
65
|
+
the design direction it settles can inform the spec. Before the first question:
|
|
46
66
|
|
|
47
|
-
- **Read the task's PRD** (`docs/prds/<topic>-*.md`) and
|
|
48
|
-
|
|
49
|
-
|
|
67
|
+
- **Read the task's PRD** (`docs/prds/<topic>-*.md`). The _what_ and _why_ are already settled there
|
|
68
|
+
— do NOT re-ask them. You are defining the _how it looks and feels_. (The spec doesn't exist yet;
|
|
69
|
+
don't look for it.)
|
|
50
70
|
- **Consume `docs/personas.md` if it exists** — the project's user models. Treat it as input; do not
|
|
51
71
|
re-derive personas the file already states. **If it is absent, ask inline** (the persona branch
|
|
52
|
-
below) and capture the answer in the handoff's §1 — **
|
|
53
|
-
client-owned; the harness only consumes it). When you captured personas inline **because the
|
|
54
|
-
was absent**,
|
|
55
|
-
|
|
56
|
-
|
|
72
|
+
below) and capture the answer in the handoff's §1 — **don't write `docs/personas.md` mid-interview**
|
|
73
|
+
(it is client-owned; the harness only consumes it). When you captured personas inline **because the
|
|
74
|
+
file was absent**, offer at the end to persist them to `docs/personas.md` for future tasks (see
|
|
75
|
+
[Persisting personas](#persisting-personas-when-absent)) — an opt-in offer on your human-facing
|
|
76
|
+
surface, never an unasked write.
|
|
57
77
|
- **Consume `docs/design-tokens.json` if it exists** — the single source of truth for tokens. The
|
|
58
78
|
handoff §11 points at it; you never inline token values.
|
|
59
79
|
- **Read `docs/architecture.md` if it exists** — orient against the system's shape so design
|
|
@@ -67,8 +87,8 @@ section of [ui-handoff-format.md](./ui-handoff-format.md).
|
|
|
67
87
|
|
|
68
88
|
1. **Personas / who it serves** (→ §1). Consume `docs/personas.md` if present; else ask: who uses
|
|
69
89
|
this, in what context, with what constraints (device, expertise, frequency)? Capture only what
|
|
70
|
-
shapes design decisions. If you asked inline because the file was absent,
|
|
71
|
-
|
|
90
|
+
shapes design decisions. If you asked inline because the file was absent, offer to persist them at
|
|
91
|
+
the end ([Persisting personas](#persisting-personas-when-absent)).
|
|
72
92
|
2. **Aesthetic direction** (→ §2). The heart of the interview. Start from an optional **tone
|
|
73
93
|
preset** (`controlled` / `impact` / `innovative`) as shorthand that seeds defaults, then set the
|
|
74
94
|
three explicit **dials** — **variance** (conventional ↔ expressive), **motion** (still ↔
|
|
@@ -91,7 +111,9 @@ section of [ui-handoff-format.md](./ui-handoff-format.md).
|
|
|
91
111
|
10. **Microcopy** (→ §10). The actual words for the task's key labels/messages, **inline**. Voice
|
|
92
112
|
follows §2; no separate copy artifact.
|
|
93
113
|
11. **Tokens** (→ §11). Point at `docs/design-tokens.json`. If the project has no token file yet,
|
|
94
|
-
|
|
114
|
+
don't invent one mid-interview — surface it at the end as an opt-in offer
|
|
115
|
+
([Design-tokens & design-tool on-ramp](#design-tokens--design-tool-on-ramp-when-absent)); if the
|
|
116
|
+
human declines, capture it as an open question.
|
|
95
117
|
|
|
96
118
|
After important branches, offer a checkpoint:
|
|
97
119
|
|
|
@@ -123,37 +145,77 @@ Spec Author's `requirements.md` / `design.md` / `tasks.md`. You **own** it. Use
|
|
|
123
145
|
## Persisting personas (when absent)
|
|
124
146
|
|
|
125
147
|
`docs/personas.md` is **client-owned**: the harness consumes it, never imposes it. So when the
|
|
126
|
-
file was **absent** and you gathered personas inline (§1 above),
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
3. **
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
148
|
+
file was **absent** and you gathered personas inline (§1 above), don't write it mid-interview — the
|
|
149
|
+
choice to keep a persistent user-model doc is the human's. Make it an explicit offer instead:
|
|
150
|
+
|
|
151
|
+
1. **Offer at the end.** Once the design is defined, ask on your human-facing surface whether to
|
|
152
|
+
persist the inline personas to `docs/personas.md` for future tasks. Opt-in, never unasked.
|
|
153
|
+
2. **On yes, write a minimal `docs/personas.md`** from the personas already captured in §1 — the
|
|
154
|
+
client's own words, not an invented cast. Keep it a skeleton the client can grow: one short block
|
|
155
|
+
per persona (who they are, their context/device, expertise, frequency, the goals and constraints
|
|
156
|
+
that shape design). Create `docs/` if absent. This is the client's real content, surfaced from
|
|
157
|
+
their own answers — never a vendor template, never personas the harness guessed.
|
|
158
|
+
3. **On no, write nothing:** the inline personas live on in the handoff's §1 for this task, and the
|
|
159
|
+
next UI task will simply ask again.
|
|
160
|
+
|
|
161
|
+
## Design-tokens & design-tool on-ramp (when absent)
|
|
162
|
+
|
|
163
|
+
`docs/design-tokens.json` and a design-tool connection are **client-owned inputs** — the harness
|
|
164
|
+
consumes them if present and otherwise leaves them alone, the same regime as personas. For a repo
|
|
165
|
+
adopting the harness fresh, that silence is a dead end: no tokens, no way in. So when either is
|
|
166
|
+
**absent**, don't dead-end at a silent open question — make an explicit, opt-in offer at the end, on
|
|
167
|
+
your human-facing surface. Never scaffold or connect unasked.
|
|
168
|
+
|
|
169
|
+
### Tokens absent → offer to scaffold
|
|
170
|
+
|
|
171
|
+
When the project has **no `docs/design-tokens.json`**, offer once, after the design is defined:
|
|
172
|
+
|
|
173
|
+
1. **Offer at the end.** Ask whether to scaffold a starter `docs/design-tokens.json` from the
|
|
174
|
+
direction just defined, or keep it as an open question in §11.
|
|
175
|
+
2. **On yes, derive from the answers.** Build a minimal 3-tier DTCG file (`primitive` → `semantic`
|
|
176
|
+
→ `component`) from what the human actually stated — the colours, type, spacing and radii that
|
|
177
|
+
came out of the aesthetic-direction branch (§2) and the components branch (§5). This is the
|
|
178
|
+
client's own direction, surfaced as tokens — **never a vendor template**, never a palette the
|
|
179
|
+
harness guessed.
|
|
180
|
+
3. **Offer to cover the gaps too.** The interview rarely names every token. Ask a follow-up: for the
|
|
181
|
+
aspects the conversation **did not cover**, do they want a sensible **starter** set generated (a
|
|
182
|
+
neutral scale, default spacing and radii) so the file is usable from day one, or only the tokens
|
|
183
|
+
the answers implied? Opt-in — the human chooses how far to go, and you never pad the file unasked.
|
|
184
|
+
4. **Validate before closing.** After writing, run `lemony design-tokens validate` and fix anything
|
|
185
|
+
it flags, so the scaffolded file is well-formed (3-tier, aliases resolve) — a scaffold that fails
|
|
186
|
+
the validator is worse than none.
|
|
187
|
+
5. **On no, write nothing:** capture the missing token file as an open question in §11, exactly as
|
|
188
|
+
before. The next UI task simply asks again.
|
|
189
|
+
|
|
190
|
+
### No design tool → offer to connect
|
|
191
|
+
|
|
192
|
+
When `docs/design-tokens.json` carries no `com.lemony.design-tool` binding — or there is no tokens
|
|
193
|
+
file at all — offer to **connect a design tool** (e.g. a Figma or Pencil bridge) so tokens can
|
|
194
|
+
round-trip between the repo and the tool:
|
|
195
|
+
|
|
196
|
+
1. **Offer, opt-in.** Ask whether to connect a design tool now, or **stay pure-code** (tokens live
|
|
197
|
+
only in the repo). Most repos are happy pure-code — recommend that unless the human wants a
|
|
198
|
+
visual tool in the loop.
|
|
199
|
+
2. **On yes,** write the `com.lemony.design-tool` binding (the provider) into `docs/design-tokens.json`
|
|
200
|
+
and run the first import to bootstrap tokens from the tool. The `design-tool-sync` skill and the
|
|
201
|
+
`sync-design-tokens` command own the mechanics — you point the human at them; you don't
|
|
202
|
+
re-implement the bridge here.
|
|
203
|
+
3. **Skip gracefully.** If the tool's MCP bridge isn't connected, say so and fall back to the open
|
|
204
|
+
question — never block the interview on an unavailable tool.
|
|
205
|
+
4. **On no, stay pure-code:** write no binding. The design tool is only ever a projection of
|
|
206
|
+
`docs/design-tokens.json`, never a peer source of truth — declining costs nothing.
|
|
145
207
|
|
|
146
208
|
## Pause & Resume
|
|
147
209
|
|
|
148
210
|
Design definition is part of completing the spec, not a separate state. Pausing and resuming use
|
|
149
|
-
the lifecycle
|
|
211
|
+
the lifecycle you already own — don't invent a parallel mechanism:
|
|
150
212
|
|
|
151
|
-
- **Pausing**: write `ui-handoff.md` with `Status: in_progress` and the sections closed so far
|
|
152
|
-
|
|
153
|
-
|
|
213
|
+
- **Pausing**: write `ui-handoff.md` with `Status: in_progress` and the sections closed so far,
|
|
214
|
+
record the sub-state `awaiting design definition` in the task's `progress.md`, and park the task.
|
|
215
|
+
Confirm with the user before ending the turn.
|
|
154
216
|
- **Resuming**: `/resume <id>` re-enters via that sub-state. Read the in-progress `ui-handoff.md`,
|
|
155
217
|
confirm which sections are closed and which branch comes next, then continue.
|
|
156
|
-
- **Completing**: flip `Status: in_progress` → `Status: completed
|
|
218
|
+
- **Completing**: flip `Status: in_progress` → `Status: completed`, then remove the
|
|
157
219
|
`harness:needs-design` flag at/before `spec-ready`.
|
|
158
220
|
|
|
159
221
|
## Tone
|
|
@@ -165,9 +227,9 @@ and conviction — push for a real direction, but the user decides.
|
|
|
165
227
|
## When the design is underspecified
|
|
166
228
|
|
|
167
229
|
If a design decision needs input the PRD left open with more than one valid answer and the user
|
|
168
|
-
can't resolve it in the interview, **
|
|
169
|
-
|
|
170
|
-
|
|
230
|
+
can't resolve it in the interview, **capture it as an open question** in the handoff rather than
|
|
231
|
+
guess, and mark the handoff `Status: in_progress` until it is settled — never close a design on a
|
|
232
|
+
guessed fork.
|
|
171
233
|
|
|
172
234
|
## Cross-references
|
|
173
235
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# `ui-handoff.md` — the design contract
|
|
2
2
|
|
|
3
|
-
The artifact the
|
|
4
|
-
`.claude/state/tasks/<id>/spec/ui-handoff.md`, a sibling of the spec, owned by the UI Designer.
|
|
3
|
+
The artifact the Orchestrator authors at DEFINE (via the `grill-ui` interview) and the implementer builds from when implementing. It lives at
|
|
4
|
+
`.claude/state/tasks/<id>/spec/ui-handoff.md`, a sibling of the spec, owned by the Orchestrator; the UI Designer critiques it at DEFINE and reviews the built UI against it at REVIEW.
|
|
5
5
|
|
|
6
6
|
**It captures DECISIONS and targets, not know-how.** How to apply tokens to a stack, avoid generic
|
|
7
7
|
"AI slop", or meet WCAG lives in the implementer's and reviewer's skills. This file says _what to
|
|
@@ -28,9 +28,9 @@ Every section is **N/A-able** per task: mark a section N/A rather than padding i
|
|
|
28
28
|
|
|
29
29
|
**Status**: in_progress | completed
|
|
30
30
|
|
|
31
|
-
> Owned by the
|
|
32
|
-
> skill; the design QA lens checks the built UI against it at REVIEW.
|
|
33
|
-
> tokens by reference.
|
|
31
|
+
> Owned by the Orchestrator (authored via `grill-ui`). Sibling of the spec. The implementer builds
|
|
32
|
+
> from this via the `build-ui` skill; the design QA lens checks the built UI against it at REVIEW.
|
|
33
|
+
> Decisions-altitude; text-first; tokens by reference.
|
|
34
34
|
|
|
35
35
|
## 1. Personas / users served
|
|
36
36
|
|
|
@@ -86,9 +86,10 @@ Every section is **N/A-able** per task: mark a section N/A rather than padding i
|
|
|
86
86
|
|
|
87
87
|
Reference `docs/design-tokens.json` — the single, client-owned source of truth, a 3-tier
|
|
88
88
|
W3C-DTCG model (`primitive` → `semantic` → `component`). **Never inline token values here; point at
|
|
89
|
-
the file.** If the project has no token file yet,
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
the file.** If the project has no token file yet, the interview offers to scaffold one (derived from
|
|
90
|
+
the answers) or to connect a design tool; if the human declines both, say so and capture it as an
|
|
91
|
+
open question — never invent a token set silently. `lemony design-tokens validate` flags raw
|
|
92
|
+
colours/dimensions in source that should reference a token.
|
|
92
93
|
|
|
93
94
|
## Open questions
|
|
94
95
|
|
|
@@ -5,6 +5,14 @@ origin: vendor
|
|
|
5
5
|
vendor_version: '{{vendor_version}}'
|
|
6
6
|
phase: during-implementation
|
|
7
7
|
invoked-by: [implementer]
|
|
8
|
+
attribution:
|
|
9
|
+
- source: mattpocock/skills
|
|
10
|
+
author: Matt Pocock
|
|
11
|
+
url: https://github.com/mattpocock/skills
|
|
12
|
+
license: MIT
|
|
13
|
+
copyright: Copyright (c) 2026 Matt Pocock
|
|
14
|
+
relationship: derived-from
|
|
15
|
+
note: the red-green cycle, the behavior-over-implementation core principle, the vertical-slice ("tracer bullet") framing, mock-at-system-boundaries guidance, and the ADR three-tests nudge
|
|
8
16
|
---
|
|
9
17
|
|
|
10
18
|
# Test-Driven Development
|
|
@@ -5,6 +5,14 @@ origin: vendor
|
|
|
5
5
|
vendor_version: '{{vendor_version}}'
|
|
6
6
|
invoked-by: [architect]
|
|
7
7
|
trigger-condition: a resolved decision is worth recording (a discovery resolution, or an explicit request)
|
|
8
|
+
attribution:
|
|
9
|
+
- source: mattpocock/skills
|
|
10
|
+
author: Matt Pocock
|
|
11
|
+
url: https://github.com/mattpocock/skills
|
|
12
|
+
license: MIT
|
|
13
|
+
copyright: Copyright (c) 2026 Matt Pocock
|
|
14
|
+
relationship: derived-from
|
|
15
|
+
note: ADR format — the three-tests rubric (hard to reverse / surprising / real trade-off), the record template, and the "what qualifies" guidance
|
|
8
16
|
---
|
|
9
17
|
|
|
10
18
|
# Write ADR
|
|
@@ -57,30 +57,33 @@ A task deserves the harness if it is **specifiable**, **verifiable**, or
|
|
|
57
57
|
`harness:sdd` + `harness:status:spec-in-progress`) and the branch
|
|
58
58
|
`harness/<id>-<slug>`. `<id>` is the GitHub issue number in this build; spec and code
|
|
59
59
|
both live on that branch — nothing touches the default branch until the merge gate.
|
|
60
|
-
3. **
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
60
|
+
3. **UI design (if it touches UI)** — **UI design gate** (§UI design in `orchestrator.md`):
|
|
61
|
+
if the repo has a frontend AND the task touches UI, put `harness:needs-design`, offer the
|
|
62
|
+
design-stop, and on "continue" **run `grill-ui` yourself** (the interactive design
|
|
63
|
+
interview) to author `ui-handoff.md` under `tasks/<id>/spec/`, then dispatch the **UI
|
|
64
|
+
Designer** to **critique** it — resolve its findings before the Spec Author runs.
|
|
65
|
+
4. **Spec** — Spec Author sub-agent (given the `<id>` + branch, and the `ui-handoff.md` if
|
|
66
|
+
one was authored): `prd-to-spec` (→ `requirements.md` EARS + `design.md` + `tasks.md`
|
|
67
|
+
under `tasks/<id>/spec/`) then `spec-to-issue` (fills the issue body — it creates nothing
|
|
68
|
+
and moves no labels).
|
|
69
|
+
5. **Spec-ready + handoff** — remove `harness:needs-design` once `ui-handoff.md` is
|
|
67
70
|
complete (a spec-ready task never carries it), flip to `harness:status:spec-ready`,
|
|
68
71
|
commit and push the task state to the branch. DEFINE can stop here: the spec-ready
|
|
69
72
|
queue (`gh issue list -l harness:status:spec-ready`) is the handoff. Ask: implement
|
|
70
73
|
now or hand off?
|
|
71
|
-
|
|
74
|
+
6. **Approval gate** — run by whoever implements (a RESUME of a spec-ready issue runs
|
|
72
75
|
it). Present the spec; the human approves (or asks for changes → Spec Author
|
|
73
76
|
revises). On approval, flip to `harness:status:in-progress`. The spec, not the code,
|
|
74
77
|
is the source of intent — never self-approve.
|
|
75
|
-
|
|
78
|
+
7. **Implement** — Implementer sub-agent, `tdd` skill, on the branch, keeping
|
|
76
79
|
`.claude/state/tasks/<id>/progress.md` live.
|
|
77
|
-
|
|
80
|
+
8. **Review** — flip to `harness:status:in-review`, open the PR (`gh pr create`,
|
|
78
81
|
branch → default), Reviewer sub-agent reviews it (`senior-review`, fresh context). If
|
|
79
82
|
the task touched UI, the **UI Designer** reviews as a distinct design + a11y lens too
|
|
80
83
|
— either lens rejecting routes back to the Implementer.
|
|
81
|
-
|
|
84
|
+
9. **Merge gate** — never auto-merge. Surface the approved PR; the human merges (or
|
|
82
85
|
authorizes you to). The task stays at `in-review` until merged.
|
|
83
|
-
|
|
86
|
+
10. **Closeout** — `task-closeout`: confirm the merge via `gh`, offer durable discoveries
|
|
84
87
|
to the Architect (`write-adr`, HITL), archive the spec + discoveries to `_archive/<id>/` (drop
|
|
85
88
|
`progress.md`), and land `history.md` + the archival via a dedicated
|
|
86
89
|
`harness/closeout-<id>` PR (`gh pr merge --auto`) — never a direct push to the base.
|
|
@@ -17,20 +17,8 @@ task_storage:
|
|
|
17
17
|
type: github
|
|
18
18
|
repo: {{task_storage_repo}}
|
|
19
19
|
|
|
20
|
-
# Active agents (one `.claude/agents/<role>.md` per entry).
|
|
21
|
-
agents:
|
|
22
|
-
- orchestrator
|
|
23
|
-
- spec-author
|
|
24
|
-
- implementer
|
|
25
|
-
- reviewer
|
|
26
|
-
- architect # always installed; invoked on-demand, outside the linear flow
|
|
27
|
-
# - ui-designer # catalog slot, inactive by default
|
|
28
|
-
|
|
29
20
|
# Paths (relative; defaults shown — declare only overrides).
|
|
30
21
|
paths:
|
|
31
|
-
state: .claude/state
|
|
32
|
-
skills: .claude/skills
|
|
33
|
-
agents: .claude/agents
|
|
34
22
|
# Project-local playbooks (how-to-build patterns). Looked up by convention
|
|
35
23
|
# `<topic>.md`, local then global; the local entry overrides the global one.
|
|
36
24
|
# The require/suggest hooks read these two keys directly on every fire, so a
|