chief-clancy 0.1.7 → 0.2.0-beta.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/README.md +18 -7
- package/bin/install.js +61 -109
- package/hooks/clancy-check-update.js +71 -0
- package/hooks/clancy-context-monitor.js +101 -0
- package/hooks/clancy-statusline.js +82 -0
- package/package.json +2 -1
- package/src/commands/dry-run.md +14 -0
- package/src/commands/help.md +2 -1
- package/src/commands/once.md +4 -0
- package/src/templates/.env.example.jira +6 -0
- package/src/templates/.env.example.linear +6 -0
- package/src/templates/CLAUDE.md +12 -5
- package/src/templates/scripts/clancy-once-github.sh +27 -3
- package/src/templates/scripts/clancy-once-linear.sh +71 -3
- package/src/templates/scripts/clancy-once.sh +66 -3
- package/src/workflows/init.md +1 -1
- package/src/workflows/once.md +16 -0
- package/src/workflows/scaffold.md +176 -9
- package/src/workflows/settings.md +73 -42
- package/src/workflows/uninstall.md +26 -2
- package/src/workflows/update.md +0 -28
|
@@ -46,10 +46,14 @@ Jira
|
|
|
46
46
|
[4] Queue status {CLANCY_JQL_STATUS:-To Do}
|
|
47
47
|
[5] Sprint filter {on if CLANCY_JQL_SPRINT set, else off}
|
|
48
48
|
[6] Label filter {CLANCY_LABEL if set, else off — only pick up tickets with this label}
|
|
49
|
+
[7] Pickup status {CLANCY_STATUS_IN_PROGRESS if set, else off — move ticket on pickup}
|
|
50
|
+
[8] Done status {CLANCY_STATUS_DONE if set, else off — move ticket on completion}
|
|
49
51
|
|
|
50
52
|
{If Linear:}
|
|
51
53
|
Linear
|
|
52
54
|
[4] Label filter {CLANCY_LABEL if set, else off — only pick up issues with this label}
|
|
55
|
+
[5] Pickup status {CLANCY_STATUS_IN_PROGRESS if set, else off — move issue on pickup}
|
|
56
|
+
[6] Done status {CLANCY_STATUS_DONE if set, else off — move issue on completion}
|
|
53
57
|
|
|
54
58
|
Optional enhancements
|
|
55
59
|
[{N}] Figma MCP {enabled if FIGMA_API_KEY set, else not set}
|
|
@@ -62,7 +66,7 @@ Optional enhancements
|
|
|
62
66
|
Which setting would you like to change?
|
|
63
67
|
```
|
|
64
68
|
|
|
65
|
-
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. If Linear: show [4] label. If GitHub: no board-specific options.
|
|
69
|
+
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.
|
|
66
70
|
|
|
67
71
|
---
|
|
68
72
|
|
|
@@ -164,6 +168,40 @@ If [2]: remove `CLANCY_LABEL` from `.clancy/.env`.
|
|
|
164
168
|
|
|
165
169
|
---
|
|
166
170
|
|
|
171
|
+
### [7] Jira In Progress status (Jira only)
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
Jira In Progress status — current: {value or "off"}
|
|
175
|
+
When set, Clancy moves a ticket to this status when it starts working on it.
|
|
176
|
+
Must match the exact column name shown in your Jira board.
|
|
177
|
+
|
|
178
|
+
[1] Set status name
|
|
179
|
+
[2] Off (do not transition on pickup)
|
|
180
|
+
[3] Cancel
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
If [1]: prompt `What status name should Clancy use for In Progress? (e.g. In Progress, In Dev, Doing)` then write `CLANCY_STATUS_IN_PROGRESS=<value>` to `.clancy/.env`.
|
|
184
|
+
If [2]: remove `CLANCY_STATUS_IN_PROGRESS` from `.clancy/.env`.
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
### [8] Jira Done status (Jira only)
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
Jira Done status — current: {value or "off"}
|
|
192
|
+
When set, Clancy moves a ticket to this status after completing it.
|
|
193
|
+
Must match the exact column name shown in your Jira board.
|
|
194
|
+
|
|
195
|
+
[1] Set status name
|
|
196
|
+
[2] Off (do not transition on completion)
|
|
197
|
+
[3] Cancel
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
If [1]: prompt `What status name should Clancy use for Done? (e.g. Done, Complete, Closed)` then write `CLANCY_STATUS_DONE=<value>` to `.clancy/.env`.
|
|
201
|
+
If [2]: remove `CLANCY_STATUS_DONE` from `.clancy/.env`.
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
167
205
|
### [4] Linear label filter (Linear only)
|
|
168
206
|
|
|
169
207
|
```
|
|
@@ -181,6 +219,40 @@ If [2]: remove `CLANCY_LABEL` from `.clancy/.env`.
|
|
|
181
219
|
|
|
182
220
|
---
|
|
183
221
|
|
|
222
|
+
### [5] Linear In Progress status (Linear only)
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
Linear In Progress status — current: {value or "off"}
|
|
226
|
+
When set, Clancy moves an issue to this workflow state when it starts working on it.
|
|
227
|
+
Must match the exact state name shown in your Linear board column header.
|
|
228
|
+
|
|
229
|
+
[1] Set state name
|
|
230
|
+
[2] Off (do not transition on pickup)
|
|
231
|
+
[3] Cancel
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
If [1]: prompt `What workflow state name should Clancy use for In Progress? (e.g. In Progress, In Dev, Doing)` then write `CLANCY_STATUS_IN_PROGRESS=<value>` to `.clancy/.env`.
|
|
235
|
+
If [2]: remove `CLANCY_STATUS_IN_PROGRESS` from `.clancy/.env`.
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
### [6] Linear Done status (Linear only)
|
|
240
|
+
|
|
241
|
+
```
|
|
242
|
+
Linear Done status — current: {value or "off"}
|
|
243
|
+
When set, Clancy moves an issue to this workflow state after completing it.
|
|
244
|
+
Must match the exact state name shown in your Linear board column header.
|
|
245
|
+
|
|
246
|
+
[1] Set state name
|
|
247
|
+
[2] Off (do not transition on completion)
|
|
248
|
+
[3] Cancel
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
If [1]: prompt `What workflow state name should Clancy use for Done? (e.g. Done, Complete, Closed)` then write `CLANCY_STATUS_DONE=<value>` to `.clancy/.env`.
|
|
252
|
+
If [2]: remove `CLANCY_STATUS_DONE` from `.clancy/.env`.
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
184
256
|
### Figma MCP
|
|
185
257
|
|
|
186
258
|
```
|
|
@@ -336,50 +408,9 @@ When updating a value:
|
|
|
336
408
|
|
|
337
409
|
---
|
|
338
410
|
|
|
339
|
-
### Save as global defaults
|
|
340
|
-
|
|
341
|
-
At the bottom of the settings menu (before Exit), show:
|
|
342
|
-
|
|
343
|
-
```
|
|
344
|
-
[{N}] Save as defaults save current settings for all future projects
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
When selected:
|
|
348
|
-
|
|
349
|
-
1. Read the current `.clancy/.env` and extract only the non-credential, non-board-specific settings:
|
|
350
|
-
- `MAX_ITERATIONS`
|
|
351
|
-
- `CLANCY_MODEL`
|
|
352
|
-
- `CLANCY_BASE_BRANCH`
|
|
353
|
-
- `PLAYWRIGHT_ENABLED`
|
|
354
|
-
- `PLAYWRIGHT_STARTUP_WAIT`
|
|
355
|
-
|
|
356
|
-
2. Write these to `~/.clancy/defaults.json`:
|
|
357
|
-
```json
|
|
358
|
-
{
|
|
359
|
-
"MAX_ITERATIONS": "5",
|
|
360
|
-
"CLANCY_MODEL": "claude-sonnet-4-6",
|
|
361
|
-
"CLANCY_BASE_BRANCH": "main"
|
|
362
|
-
}
|
|
363
|
-
```
|
|
364
|
-
|
|
365
|
-
3. Print: `✓ Defaults saved to ~/.clancy/defaults.json — new projects will inherit these settings.`
|
|
366
|
-
|
|
367
|
-
4. Loop back to the settings menu.
|
|
368
|
-
|
|
369
|
-
**Never save credentials, board-specific settings (status filter, sprint, label), or webhook URLs to global defaults.**
|
|
370
|
-
|
|
371
|
-
---
|
|
372
|
-
|
|
373
|
-
## Step 6 — Load global defaults during init
|
|
374
|
-
|
|
375
|
-
When `/clancy:init` creates `.clancy/.env`, check if `~/.clancy/defaults.json` exists. If so, pre-populate the `.env` with those values instead of the built-in defaults. The user's answers during init still take priority — defaults are only used for settings that init doesn't ask about (max iterations, model, etc.).
|
|
376
|
-
|
|
377
|
-
---
|
|
378
|
-
|
|
379
411
|
## Notes
|
|
380
412
|
|
|
381
413
|
- All changes are written to `.clancy/.env` immediately after confirmation
|
|
382
414
|
- Switching boards verifies credentials before making any changes — nothing is written if verification fails
|
|
383
415
|
- `/clancy:init` remains available for a full re-setup (re-scaffolds scripts and docs)
|
|
384
416
|
- This command never restarts any servers or triggers any ticket processing
|
|
385
|
-
- Global defaults (`~/.clancy/defaults.json`) are optional — if the file doesn't exist, built-in defaults are used
|
|
@@ -35,9 +35,33 @@ Continue? (yes / no)
|
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
- `no` → print "Nothing removed." and stop
|
|
38
|
-
- `yes` →
|
|
38
|
+
- `yes` → proceed to remove commands, workflows, hooks, and settings entries (Steps 2a–2c)
|
|
39
39
|
|
|
40
|
-
If "Both" was chosen in Step 1: confirm once for both, remove
|
|
40
|
+
If "Both" was chosen in Step 1: confirm once for both, remove everything for both locations.
|
|
41
|
+
|
|
42
|
+
### Step 2a — Remove command and workflow directories
|
|
43
|
+
|
|
44
|
+
Delete both the commands directory and the workflows directory for the chosen location(s):
|
|
45
|
+
- Project-local: `.claude/commands/clancy/` and `.claude/clancy/`
|
|
46
|
+
- Global: `~/.claude/commands/clancy/` and `~/.claude/clancy/`
|
|
47
|
+
|
|
48
|
+
Print: `✓ Clancy commands removed from [location].`
|
|
49
|
+
|
|
50
|
+
### Step 2b — Remove hooks
|
|
51
|
+
|
|
52
|
+
For each location being removed, delete these hook files if they exist:
|
|
53
|
+
- Project-local: `.claude/hooks/clancy-check-update.js`, `.claude/hooks/clancy-statusline.js`, `.claude/hooks/clancy-context-monitor.js`
|
|
54
|
+
- Global: `~/.claude/hooks/clancy-check-update.js`, `~/.claude/hooks/clancy-statusline.js`, `~/.claude/hooks/clancy-context-monitor.js`
|
|
55
|
+
|
|
56
|
+
Then remove the Clancy hook registrations from the corresponding `settings.json` (`.claude/settings.json` for local, `~/.claude/settings.json` for global):
|
|
57
|
+
- Remove any entry in `hooks.SessionStart` whose `command` contains `clancy-check-update`
|
|
58
|
+
- Remove any entry in `hooks.PostToolUse` whose `command` contains `clancy-context-monitor`
|
|
59
|
+
- Remove the `statusLine` key if its `command` value contains `clancy-statusline`
|
|
60
|
+
- If removing an entry leaves a `hooks.SessionStart` or `hooks.PostToolUse` array empty, remove the key entirely
|
|
61
|
+
|
|
62
|
+
Also remove the update check cache if it exists: `~/.claude/cache/clancy-update-check.json`
|
|
63
|
+
|
|
64
|
+
If `settings.json` does not exist or cannot be parsed, skip silently — do not create or overwrite it.
|
|
41
65
|
|
|
42
66
|
---
|
|
43
67
|
|
package/src/workflows/update.md
CHANGED
|
@@ -108,9 +108,6 @@ Extract only the entries between the installed version and the latest version. D
|
|
|
108
108
|
- `.claude/commands/clancy/` will be replaced
|
|
109
109
|
- `.claude/clancy/workflows/` will be replaced
|
|
110
110
|
|
|
111
|
-
If you've modified any Clancy files directly, they'll be automatically backed up
|
|
112
|
-
to `.claude/clancy/local-patches/` before overwriting.
|
|
113
|
-
|
|
114
111
|
Your project files are preserved:
|
|
115
112
|
- `.clancy/` project folder (scripts, docs, .env, progress log) ✓
|
|
116
113
|
- `CLAUDE.md` ✓
|
|
@@ -170,31 +167,6 @@ View full changelog: github.com/Pushedskydiver/clancy/blob/main/CHANGELOG.md
|
|
|
170
167
|
|
|
171
168
|
---
|
|
172
169
|
|
|
173
|
-
## Step 6 — Check for local patches
|
|
174
|
-
|
|
175
|
-
After the update completes, check if the installer backed up any locally modified files:
|
|
176
|
-
|
|
177
|
-
Check for `.claude/clancy/local-patches/backup-meta.json` (local install) or `~/.claude/clancy/local-patches/backup-meta.json` (global install).
|
|
178
|
-
|
|
179
|
-
**If patches were found:**
|
|
180
|
-
|
|
181
|
-
```
|
|
182
|
-
Local patches were backed up before the update.
|
|
183
|
-
Your modified files are in .claude/clancy/local-patches/
|
|
184
|
-
|
|
185
|
-
To review what changed:
|
|
186
|
-
Compare each file in local-patches/ against its counterpart in
|
|
187
|
-
.claude/commands/clancy/ or .claude/clancy/workflows/ and manually
|
|
188
|
-
reapply any customisations you want to keep.
|
|
189
|
-
|
|
190
|
-
Backed up files:
|
|
191
|
-
{list from backup-meta.json}
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
**If no patches:** Continue normally (no message needed).
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
170
|
## Notes
|
|
199
171
|
|
|
200
172
|
- If the user installed globally, the update applies globally
|