chief-clancy 0.4.0 → 0.5.1

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.
@@ -4,6 +4,15 @@
4
4
 
5
5
  Full wizard for setting up Clancy in a project. Follow every step exactly. Do not skip steps or reorder them.
6
6
 
7
+ ### Input handling
8
+
9
+ This workflow runs inside a Claude Code session, not a vanilla terminal. Accept natural language responses alongside numbered options and y/N prompts:
10
+ - Affirmative: "y", "yes", "sure", "go ahead", "yep" → treat as yes
11
+ - Negative: "n", "no", "nah", "skip", "not now" → treat as no
12
+ - Board selection: "jira", "github", "linear" → treat as selecting that board
13
+ - Direct values: if the user types a status name like "Selected for Development" instead of picking option [2], accept it directly
14
+ - If a response is ambiguous, ask for clarification
15
+
7
16
  ---
8
17
 
9
18
  ## Step 1 — Detect project state
@@ -13,9 +22,9 @@ Before asking any questions, silently check:
13
22
  - Is this an existing project? Check for `package.json`, `.git`, `src/`, `app/`, `lib/`
14
23
  - Is a board already configured? Check `.clancy/.env` for `JIRA_BASE_URL`, `GITHUB_TOKEN`, `LINEAR_API_KEY`
15
24
  - Does `CLAUDE.md` already exist? Flag for merge — never overwrite
16
- - Does `.clancy/` already exist? Warn and offer re-init or abort
25
+ - Does `.clancy/.env` already exist? This means init has been completed before — warn and offer re-init or abort. Note: `.clancy/` alone may exist from the installer (runtime scripts) without init having run.
17
26
 
18
- If `.clancy/` exists, output:
27
+ If `.clancy/.env` exists, output:
19
28
 
20
29
  It looks like Clancy is already set up in this project.
21
30
 
@@ -60,9 +69,9 @@ Output:
60
69
 
61
70
  "Chief Wiggum reporting for duty."
62
71
 
63
- Clancy pulls tickets from your Kanban board, implements them, commits, and squash-merges — one ticket per run, fresh context every time.
72
+ Clancy pulls tickets from your Kanban board, plans and implements them, commits, and squash-merges — one ticket per run, fresh context every time.
64
73
 
65
- Let's get you set up.
74
+ Let's get you set up. This takes about 3 minutes (4 steps, then optional extras).
66
75
  ```
67
76
 
68
77
  ---
@@ -122,7 +131,10 @@ Add this label to any issue you want Clancy to work on.
122
131
  **Linear** — ask in this order:
123
132
 
124
133
  1. `Paste your Linear API key: (create one at linear.app/settings/api)`
125
- 2. `What's your Linear team ID? (find it at linear.app/settings/teams click your team, copy the ID from the URL)`
134
+ 2. After verifying the API key (Step Q2b), auto-detect teams by querying `{ teams { nodes { id name } } }`.
135
+ - If exactly 1 team: use it automatically. Show `Using team: {name} ({id})`.
136
+ - If 2+ teams: show a numbered list and let the user pick.
137
+ - If the query fails or returns no teams: fall back to asking manually: `What's your Linear team ID? (find it at linear.app/settings/teams — click your team, copy the ID from the URL)`
126
138
  3. `What label should Clancy filter by? Create a "clancy" label in your Linear team and apply it to issues you want Clancy to implement. [clancy]`
127
139
 
128
140
  If a label is entered: store as `CLANCY_LABEL` in `.clancy/.env`. Always wrap the value in double quotes (e.g. `CLANCY_LABEL="clancy"`).
@@ -147,9 +159,11 @@ On failure, show:
147
159
  Check your credentials in the values you just entered.
148
160
 
149
161
  [1] Re-enter credentials
162
+ [2] Skip verification (configure later via /clancy:settings)
150
163
  ```
151
164
 
152
- If [1]: go back to Q2 and re-ask all Jira questions. If the user wants to abandon setup entirely, they can Ctrl+C.
165
+ If [1]: go back to Q2 and re-ask all Jira questions.
166
+ If [2]: save the unverified credentials and continue with setup. The user can fix them later.
153
167
 
154
168
  **GitHub Issues** — call `GET https://api.github.com/repos/{GITHUB_REPO}` with `Authorization: Bearer {GITHUB_TOKEN}` and `X-GitHub-Api-Version: 2022-11-28`.
155
169
 
@@ -164,9 +178,11 @@ On failure, show:
164
178
  Check your token has `repo` scope and the repo name is correct.
165
179
 
166
180
  [1] Re-enter credentials
181
+ [2] Skip verification (configure later via /clancy:settings)
167
182
  ```
168
183
 
169
- If [1]: go back to Q2 and re-ask all GitHub questions. If the user wants to abandon setup entirely, they can Ctrl+C.
184
+ If [1]: go back to Q2 and re-ask all GitHub questions.
185
+ If [2]: save the unverified credentials and continue with setup.
170
186
 
171
187
  **Linear** — call `POST https://api.linear.app/graphql` with `Authorization: {LINEAR_API_KEY}` (no Bearer prefix) and body `{"query": "{ viewer { id name } }"}`.
172
188
 
@@ -181,11 +197,13 @@ On failure, show:
181
197
  Check your API key at linear.app/settings/api.
182
198
 
183
199
  [1] Re-enter credentials
200
+ [2] Skip verification (configure later via /clancy:settings)
184
201
  ```
185
202
 
186
- If [1]: go back to Q2 and re-ask all Linear questions. If the user wants to abandon setup entirely, they can Ctrl+C.
203
+ If [1]: go back to Q2 and re-ask all Linear questions.
204
+ If [2]: save the unverified credentials and continue with setup.
187
205
 
188
- Never silently continue with unverified credentials — the user must fix their credentials or exit with Ctrl+C.
206
+ Never silently continue with unverified credentials — the user must explicitly choose to re-enter, skip, or exit.
189
207
 
190
208
  ---
191
209
 
@@ -277,6 +295,33 @@ If no: skip the commit silently. The user can commit manually later.
277
295
 
278
296
  ---
279
297
 
298
+ ## Step 4c — Optional roles
299
+
300
+ Clancy includes the Implementer, Reviewer, and Setup roles by default. Optional roles add extra capabilities.
301
+
302
+ ```
303
+ Clancy includes the Implementer, Reviewer, and Setup roles by default.
304
+ You can enable additional roles:
305
+
306
+ [1] Planner — Refine vague tickets into structured implementation plans
307
+
308
+ Enter roles to enable (e.g. 1 or "all") or press Enter to skip:
309
+ ```
310
+
311
+ Accept numbers, role names (e.g. "planner"), "all", or Enter to skip.
312
+
313
+ If any roles are selected:
314
+ - Store as `CLANCY_ROLES="planner"` (comma-separated if multiple) in `.clancy/.env`
315
+ - The selected roles' commands and workflows will be installed on the next `npx chief-clancy` run
316
+
317
+ If skipped (Enter): no `CLANCY_ROLES` line is written — only core roles are installed.
318
+
319
+ The installer reads `CLANCY_ROLES` from `.clancy/.env` to determine which optional role directories to copy. Core roles (implementer, reviewer, setup) are always copied regardless of this setting. After changing `CLANCY_ROLES`, re-run `npx chief-clancy@latest --local` (or `--global`) to apply.
320
+
321
+ Note: as more roles are added in future versions, they appear as additional numbered options here. The flow scales naturally.
322
+
323
+ ---
324
+
280
325
  ## Step 5 — Optional enhancements
281
326
 
282
327
  Output:
@@ -284,13 +329,13 @@ Output:
284
329
  ```
285
330
  Clancy is set up. A few optional enhancements are available:
286
331
 
287
- 1. Figma MCP fetch design specs when tickets include a Figma URL
288
- 2. Playwright screenshot and verify UI after implementing tickets
289
- 3. Notifications post to Slack or Teams when a ticket completes or errors
290
- 4. Max iterations set how many tickets /clancy:run processes per session
332
+ 1. Max iterations set how many tickets /clancy:run processes per session
333
+ 2. Figma MCP fetch design specs when tickets include a Figma URL
334
+ 3. Playwright screenshot and verify UI after implementing tickets
335
+ 4. Notifications post to Slack or Teams when a ticket completes or errors
291
336
 
292
337
  Each takes about 2 minutes to configure, or skip any for now.
293
- You can always add them later by editing .clancy/.env.
338
+ You can always add them later via /clancy:settings.
294
339
 
295
340
  Set up optional enhancements? [y/N]
296
341
  ```
@@ -299,11 +344,26 @@ If no: skip to Step 6.
299
344
 
300
345
  If yes, walk through each in order. After each enhancement (whether configured or skipped), ask before starting the next one: `Set up [enhancement name]? [y/N]`
301
346
 
302
- ### Enhancement 1: Figma MCP
347
+ ### Enhancement 1: Max iterations
348
+
349
+ Output:
350
+
351
+ ```
352
+ How many tickets should /clancy:run process before stopping? [5]
353
+ (You can override this per-session with /clancy:run 20)
354
+ ```
355
+
356
+ Validate the input is a positive integer between 1 and 100. If invalid, re-prompt.
357
+
358
+ Write `MAX_ITERATIONS=<value>` to `.clancy/.env`.
359
+
360
+ ---
361
+
362
+ ### Enhancement 2: Figma MCP
303
363
 
304
364
  Output: `Fetch design context from Figma when tickets include a Figma URL. Set up Figma MCP? [y/N]`
305
365
 
306
- If no: skip to Enhancement 2.
366
+ If no: skip to Enhancement 3.
307
367
 
308
368
  If yes: `Paste your Figma API key: (create one at figma.com/settings → Personal access tokens)`
309
369
 
@@ -313,10 +373,7 @@ If a key is entered:
313
373
  ```
314
374
  ✅ Figma connected: {email}
315
375
 
316
- Note: Figma's API does not expose plan information.
317
- Clancy uses 3 MCP calls per ticket (metadata, design context, screenshot).
318
- Check your plan at figma.com/settings to confirm you have enough MCP calls for your usage.
319
- Pro plans: 200 calls/day (~66 tickets). Starter: 6 calls/month (not suitable for AFK use).
376
+ Note: Check your Figma plan limits at figma.com/settings Clancy uses 3 API calls per ticket.
320
377
 
321
378
  Figma MCP enabled.
322
379
  ```
@@ -329,23 +386,23 @@ Double-check it at figma.com/settings → Personal access tokens.
329
386
  [1] Try a different key
330
387
  [2] Skip Figma for now
331
388
  ```
332
- Never silently continue with an unverified key. If the user picks [1], re-prompt for the key and repeat the verification. If [2], skip to Enhancement 2.
389
+ Never silently continue with an unverified key. If the user picks [1], re-prompt for the key and repeat the verification. If [2], skip to Enhancement 3.
333
390
 
334
391
  Write `FIGMA_API_KEY` to `.clancy/.env`. Add usage note to CLAUDE.md Clancy section.
335
392
 
336
393
  ---
337
394
 
338
- ### Enhancement 2: Playwright visual checks
395
+ ### Enhancement 3: Playwright visual checks
339
396
 
340
- If Figma was configured in Enhancement 1, output:
397
+ If Figma was configured in Enhancement 2, output:
341
398
  `Screenshot and verify UI after implementing tickets — and compare against the Figma design when one was fetched. Set up Playwright visual checks? [y/N]`
342
399
 
343
400
  Otherwise output:
344
401
  `Screenshot and verify UI after implementing tickets. Set up Playwright visual checks? [y/N]`
345
402
 
346
- If no: skip to Enhancement 3.
403
+ If no: skip to Enhancement 4.
347
404
 
348
- If yes, continue:
405
+ If yes, continue. For Storybook users this is about 5 quick questions; without Storybook, 3 questions.
349
406
 
350
407
  **Step 1: Storybook detection**
351
408
 
@@ -431,11 +488,11 @@ Create `.clancy/docs/PLAYWRIGHT.md` — see PLAYWRIGHT.md template in scaffold.m
431
488
 
432
489
  ---
433
490
 
434
- ### Enhancement 3: Slack / Teams notifications
491
+ ### Enhancement 4: Slack / Teams notifications
435
492
 
436
493
  Output: `Post to a channel when a ticket completes or Clancy hits an error. Set up notifications? [y/N]`
437
494
 
438
- If no: skip to Enhancement 4.
495
+ If no: skip to Step 6.
439
496
 
440
497
  If yes: `Paste your Slack or Teams webhook URL:`
441
498
 
@@ -454,19 +511,6 @@ Write `CLANCY_NOTIFY_WEBHOOK=<url>` to `.clancy/.env`.
454
511
 
455
512
  ---
456
513
 
457
- ### Enhancement 4: Max iterations
458
-
459
- Output:
460
-
461
- ```
462
- How many tickets should /clancy:run process before stopping? [5]
463
- (You can override this per-session with /clancy:run 20)
464
- ```
465
-
466
- Write `MAX_ITERATIONS=<value>` to `.clancy/.env`.
467
-
468
- ---
469
-
470
514
  ## Step 6 — Offer map-codebase
471
515
 
472
516
  Output:
@@ -494,5 +538,5 @@ Output:
494
538
  - Config: `.clancy/.env`
495
539
  - CLAUDE.md: updated
496
540
 
497
- "Clancy's on the beat." — Run /clancy:dry-run to preview, /clancy:once to pick up a ticket, or /clancy:run to process the queue.
541
+ "Clancy's on the beat." — Run /clancy:plan to refine backlog tickets, /clancy:dry-run to preview, or /clancy:once to pick up a ticket.
498
542
  ```
@@ -46,7 +46,7 @@ Tell the user agents are running:
46
46
  🚨 Clancy — Map Codebase
47
47
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
48
48
 
49
- "Sending in the task force..." — 5 agents deployed.
49
+ "Sending in the task force..." — 5 agents deployed. Ctrl+C to cancel.
50
50
 
51
51
  🔍 tech → STACK.md, INTEGRATIONS.md
52
52
  🔍 arch → ARCHITECTURE.md
@@ -4,6 +4,14 @@
4
4
 
5
5
  View and change Clancy configuration. Reads `.clancy/.env`, shows current values, and lets the user update any setting interactively. Loops until the user exits. Never modifies anything other than `.clancy/.env`.
6
6
 
7
+ ### Input handling
8
+
9
+ This workflow runs inside a Claude Code session. Accept natural language alongside option codes:
10
+ - "G1", "max iterations", "change iterations" → all resolve to the max iterations setting
11
+ - "enable planner", "R1", "planner" → all resolve to the Planner role toggle
12
+ - "switch board", "S" → switch board flow
13
+ - If a response is ambiguous, ask for clarification
14
+
7
15
  ---
8
16
 
9
17
  ## Step 1 — Preflight
@@ -31,55 +39,72 @@ Source `.clancy/.env` silently. Detect which board is configured:
31
39
 
32
40
  ## Step 3 — Display settings menu
33
41
 
34
- Show all current values. Board-specific settings only appear when that board is configured.
42
+ Show all current values. Board-specific settings only appear when that board is configured. Use stable letter/number mnemonics so options don't shift when boards change.
35
43
 
36
44
  ```
37
45
  🚨 Clancy — Settings
38
46
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
39
47
 
40
- "Welcome to headquarters." — .clancy/.env
48
+ "Welcome to headquarters."
41
49
 
42
50
  General
43
- [1] Max iterations {MAX_ITERATIONS:-5} tickets per /clancy:run session
44
- [2] Claude model {CLANCY_MODEL:-default} model used for each ticket session
45
- [3] Base branch {CLANCY_BASE_BRANCH:-main}
51
+ [G1] Max iterations {MAX_ITERATIONS:-5} tickets per /clancy:run session
52
+ [G2] Claude model {CLANCY_MODEL:-default} model used for each ticket session
53
+ [G3] Base branch {CLANCY_BASE_BRANCH:-main}
46
54
 
47
55
  {If Jira:}
48
56
  Jira
49
- [4] Queue status {CLANCY_JQL_STATUS:-To Do}
50
- [5] Sprint filter {on if CLANCY_JQL_SPRINT set, else off}
51
- [6] Label filter {CLANCY_LABEL if set, else off — only pick up tickets with this label}
52
- [7] Pickup status {CLANCY_STATUS_IN_PROGRESS if set, else off — move ticket on pickup}
53
- [8] Done status {CLANCY_STATUS_DONE if set, else off — move ticket on completion}
57
+ [B1] Queue status {CLANCY_JQL_STATUS:-To Do}
58
+ [B2] Sprint filter {on if CLANCY_JQL_SPRINT set, else off}
59
+ [B3] Label filter {CLANCY_LABEL if set, else off}
60
+ [B4] Pickup status {CLANCY_STATUS_IN_PROGRESS if set, else off}
61
+ [B5] Done status {CLANCY_STATUS_DONE if set, else off}
62
+
63
+ {If GitHub:}
64
+ GitHub
65
+ (No board-specific settings — labels are managed in GitHub directly)
54
66
 
55
67
  {If Linear:}
56
68
  Linear
57
- [4] Label filter {CLANCY_LABEL if set, else off — only pick up issues with this label}
58
- [5] Pickup status {CLANCY_STATUS_IN_PROGRESS if set, else off — move issue on pickup}
59
- [6] Done status {CLANCY_STATUS_DONE if set, else off — move issue on completion}
69
+ [B1] Label filter {CLANCY_LABEL if set, else off}
70
+ [B2] Pickup status {CLANCY_STATUS_IN_PROGRESS if set, else off}
71
+ [B3] Done status {CLANCY_STATUS_DONE if set, else off}
72
+
73
+ Roles
74
+ [R1] Planner {✅ enabled / ─ disabled}
75
+
76
+ {If Planner enabled:}
77
+ Planner
78
+ {If Jira:}
79
+ [P1] Plan queue status {CLANCY_PLAN_STATUS:-Backlog}
80
+ {If GitHub:}
81
+ [P1] Plan label {CLANCY_PLAN_LABEL:-needs-refinement}
82
+ {If Linear:}
83
+ [P1] Plan state type {CLANCY_PLAN_STATE_TYPE:-backlog}
60
84
 
61
- Optional enhancements
62
- [{N}] Figma MCP {enabled if FIGMA_API_KEY set, else not set}
63
- [{N}] Playwright {enabled if PLAYWRIGHT_ENABLED=true, else off}
64
- [{N}] Notifications {configured if CLANCY_NOTIFY_WEBHOOK set, else not set}
85
+ Integrations
86
+ [I1] Figma MCP {enabled if FIGMA_API_KEY set, else not set}
87
+ [I2] Playwright {enabled if PLAYWRIGHT_ENABLED=true, else off}
88
+ [I3] Notifications {configured if CLANCY_NOTIFY_WEBHOOK set, else not set}
65
89
 
66
- [{N}] Switch board currently: {Jira / GitHub Issues / Linear}
67
- [{N}] Exit
90
+ [S] Switch board currently: {Jira / GitHub Issues / Linear}
91
+ [D] Save as defaults save current settings for all future projects
92
+ [X] Exit
68
93
 
69
94
  Which setting would you like to change?
70
95
  ```
71
96
 
72
- Number each option sequentially. Show only the board-specific section that matches the configured board. If Jira: show [4] queue status, [5] sprint, [6] label, [7] pickup status, [8] done status. If Linear: show [4] label, [5] pickup status, [6] done status. If GitHub: no board-specific options.
97
+ Accept the user's response as a code (e.g. "G1", "R1"), a setting name (e.g. "max iterations", "model"), or a natural language description (e.g. "change the model", "enable planner"). If ambiguous, clarify. Show only the board-specific section that matches the configured board. The Planner section only appears when the Planner role is enabled.
73
98
 
74
99
  ---
75
100
 
76
101
  ## Step 4 — Handle each selection
77
102
 
78
- After the user picks a number, handle it as below. After saving, print `✅ Saved.` and loop back to Step 3 to show the updated menu.
103
+ After the user picks an option (by code, name, or description), handle it as below. After saving, print `✅ Saved.` and loop back to Step 3 to show the updated menu.
79
104
 
80
105
  ---
81
106
 
82
- ### [1] Max iterations
107
+ ### [G1] Max iterations
83
108
 
84
109
  ```
85
110
  Max iterations — current: {value}
@@ -89,11 +114,13 @@ How many tickets should /clancy:run process per session?
89
114
  [2] Enter a different number
90
115
  ```
91
116
 
117
+ Validate the input is a positive integer between 1 and 100. If invalid, re-prompt.
118
+
92
119
  Write `MAX_ITERATIONS=<value>` to `.clancy/.env`.
93
120
 
94
121
  ---
95
122
 
96
- ### [2] Claude model
123
+ ### [G2] Claude model
97
124
 
98
125
  ```
99
126
  Claude model — current: {value or "default"}
@@ -111,7 +138,7 @@ Otherwise: write `CLANCY_MODEL=<value>` to `.clancy/.env`.
111
138
 
112
139
  ---
113
140
 
114
- ### [3] Base branch
141
+ ### [G3] Base branch
115
142
 
116
143
  ```
117
144
  Base branch — current: {value}
@@ -124,7 +151,7 @@ Write `CLANCY_BASE_BRANCH=<value>` to `.clancy/.env`.
124
151
 
125
152
  ---
126
153
 
127
- ### [4] Jira status filter (Jira only)
154
+ ### [B1] Jira status filter (Jira only)
128
155
 
129
156
  ```
130
157
  Jira status filter — current: {value}
@@ -139,7 +166,7 @@ Write `CLANCY_JQL_STATUS=<value>` to `.clancy/.env`.
139
166
 
140
167
  ---
141
168
 
142
- ### [5] Jira sprint filter (Jira only)
169
+ ### [B2] Jira sprint filter (Jira only)
143
170
 
144
171
  ```
145
172
  Jira sprint filter — current: {on / off}
@@ -154,7 +181,7 @@ If off: remove `CLANCY_JQL_SPRINT` from `.clancy/.env` (or comment it out).
154
181
 
155
182
  ---
156
183
 
157
- ### [6] Jira label filter (Jira only)
184
+ ### [B3] Jira label filter (Jira only)
158
185
 
159
186
  ```
160
187
  Jira label filter — current: {label name or "off"}
@@ -171,7 +198,7 @@ If [2]: remove `CLANCY_LABEL` from `.clancy/.env`.
171
198
 
172
199
  ---
173
200
 
174
- ### [7] Jira In Progress status (Jira only)
201
+ ### [B4] Jira In Progress status (Jira only)
175
202
 
176
203
  ```
177
204
  Jira In Progress status — current: {value or "off"}
@@ -188,7 +215,7 @@ If [2]: remove `CLANCY_STATUS_IN_PROGRESS` from `.clancy/.env`.
188
215
 
189
216
  ---
190
217
 
191
- ### [8] Jira Done status (Jira only)
218
+ ### [B5] Jira Done status (Jira only)
192
219
 
193
220
  ```
194
221
  Jira Done status — current: {value or "off"}
@@ -205,7 +232,7 @@ If [2]: remove `CLANCY_STATUS_DONE` from `.clancy/.env`.
205
232
 
206
233
  ---
207
234
 
208
- ### [4] Linear label filter (Linear only)
235
+ ### [B1] Linear label filter (Linear only)
209
236
 
210
237
  ```
211
238
  Linear label filter — current: {label name or "off"}
@@ -222,7 +249,7 @@ If [2]: remove `CLANCY_LABEL` from `.clancy/.env`.
222
249
 
223
250
  ---
224
251
 
225
- ### [5] Linear In Progress status (Linear only)
252
+ ### [B2] Linear In Progress status (Linear only)
226
253
 
227
254
  ```
228
255
  Linear In Progress status — current: {value or "off"}
@@ -239,7 +266,7 @@ If [2]: remove `CLANCY_STATUS_IN_PROGRESS` from `.clancy/.env`.
239
266
 
240
267
  ---
241
268
 
242
- ### [6] Linear Done status (Linear only)
269
+ ### [B3] Linear Done status (Linear only)
243
270
 
244
271
  ```
245
272
  Linear Done status — current: {value or "off"}
@@ -256,7 +283,79 @@ If [2]: remove `CLANCY_STATUS_DONE` from `.clancy/.env`.
256
283
 
257
284
  ---
258
285
 
259
- ### Figma MCP
286
+ ### [R1] Planner role
287
+
288
+ ```
289
+ Planner role — currently: {enabled / disabled}
290
+ The Planner refines vague backlog tickets into structured implementation plans.
291
+ Commands: /clancy:plan, /clancy:approve
292
+
293
+ [1] Enable
294
+ [2] Disable
295
+ [3] Cancel
296
+ ```
297
+
298
+ If enabling:
299
+ - Add `planner` to `CLANCY_ROLES` in `.clancy/.env` (create the key if it doesn't exist, append if other roles are listed)
300
+ - Show `✅ Planner role enabled. Re-run the installer to apply: npx chief-clancy@latest --local (or --global)`
301
+
302
+ If disabling:
303
+ - Remove `planner` from `CLANCY_ROLES` in `.clancy/.env` (if empty after removal, remove the line entirely)
304
+ - Keep planner-specific settings (CLANCY_PLAN_STATUS, etc.) in `.clancy/.env` so re-enabling is frictionless
305
+ - Show `✅ Planner role disabled. Re-run the installer to apply: npx chief-clancy@latest --local (or --global)`
306
+
307
+ ---
308
+
309
+ ### [P1] Plan queue status (Jira only)
310
+
311
+ ```
312
+ Plan queue status — current: {value or "Backlog"}
313
+ Which Jira status should /clancy:plan fetch backlog tickets from?
314
+ Common values: Backlog, To Refine, Unrefined
315
+
316
+ [1] Backlog (default)
317
+ [2] Enter a different value
318
+ ```
319
+
320
+ If [1]: remove `CLANCY_PLAN_STATUS` from `.clancy/.env` (uses default).
321
+ If [2]: prompt `What status name should /clancy:plan fetch from?` then write `CLANCY_PLAN_STATUS=<value>` to `.clancy/.env`.
322
+
323
+ ---
324
+
325
+ ### [P1] Plan label (GitHub only)
326
+
327
+ ```
328
+ Plan label — current: {value or "needs-refinement"}
329
+ Which label marks issues for /clancy:plan to refine?
330
+ Create this label in GitHub first if it doesn't exist.
331
+
332
+ [1] needs-refinement (default)
333
+ [2] Enter a different label name
334
+ ```
335
+
336
+ If [1]: remove `CLANCY_PLAN_LABEL` from `.clancy/.env` (uses default).
337
+ If [2]: prompt `What label should /clancy:plan filter by?` then write `CLANCY_PLAN_LABEL=<value>` to `.clancy/.env`.
338
+
339
+ ---
340
+
341
+ ### [P1] Plan state type (Linear only)
342
+
343
+ ```
344
+ Plan state type — current: {value or "backlog"}
345
+ Which Linear state type should /clancy:plan fetch issues from?
346
+
347
+ [1] backlog (default)
348
+ [2] triage
349
+ [3] Enter a different value
350
+ ```
351
+
352
+ If [1]: remove `CLANCY_PLAN_STATE_TYPE` from `.clancy/.env` (uses default).
353
+ If [2]: write `CLANCY_PLAN_STATE_TYPE=triage` to `.clancy/.env`.
354
+ If [3]: prompt `What state type should /clancy:plan fetch from?` then write `CLANCY_PLAN_STATE_TYPE=<value>` to `.clancy/.env`.
355
+
356
+ ---
357
+
358
+ ### [I1] Figma MCP
260
359
 
261
360
  ```
262
361
  Figma MCP — current: {enabled / not set}
@@ -271,7 +370,7 @@ If [2]: remove `FIGMA_API_KEY` from `.clancy/.env`.
271
370
 
272
371
  ---
273
372
 
274
- ### Playwright
373
+ ### [I2] Playwright
275
374
 
276
375
  ```
277
376
  Playwright visual checks — current: {enabled / off}
@@ -288,7 +387,7 @@ If [2] Disable: set `PLAYWRIGHT_ENABLED=false` in `.clancy/.env`.
288
387
 
289
388
  ---
290
389
 
291
- ### Notifications
390
+ ### [I3] Notifications
292
391
 
293
392
  ```
294
393
  Notifications — current: {configured / not set}
@@ -303,7 +402,7 @@ If [2]: remove `CLANCY_NOTIFY_WEBHOOK` from `.clancy/.env`.
303
402
 
304
403
  ---
305
404
 
306
- ### Switch board
405
+ ### [S] Switch board
307
406
 
308
407
  Show which board is currently active, then offer the other two:
309
408
 
@@ -394,7 +493,7 @@ Then loop back to the main settings menu.
394
493
 
395
494
  ---
396
495
 
397
- ### Exit
496
+ ### [X] Exit
398
497
 
399
498
  Print nothing extra. Stop.
400
499
 
@@ -411,13 +510,7 @@ When updating a value:
411
510
 
412
511
  ---
413
512
 
414
- ### Save as global defaults
415
-
416
- At the bottom of the settings menu (before Exit), show:
417
-
418
- ```
419
- [{N}] Save as defaults save current settings for all future projects
420
- ```
513
+ ### [D] Save as global defaults
421
514
 
422
515
  When selected:
423
516
 
@@ -50,6 +50,9 @@ If `PLAYWRIGHT_ENABLED=true` and the tech agent is re-running: verify `PLAYWRIGH
50
50
  ## Step 3 — Confirm before running
51
51
 
52
52
  ```
53
+ 🚨 Clancy — Update Docs
54
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
55
+
53
56
  Based on your changes, I'll re-run:
54
57
  - {agent list}
55
58
 
@@ -81,9 +84,9 @@ git commit -m "docs(clancy): update-docs — refresh .clancy/docs/"
81
84
  ## Step 6 — Final message
82
85
 
83
86
  ```
84
- Docs updated.
87
+ Docs updated — {N} files refreshed.
85
88
 
86
89
  Updated: {file list}
87
90
 
88
- Run /clancy:once or /clancy:run when ready.
91
+ "Case files updated." — Run /clancy:once or /clancy:run when ready.
89
92
  ```