chief-clancy 0.8.22 → 0.9.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.
Files changed (94) hide show
  1. package/bin/clancy.js +153 -0
  2. package/package.json +8 -88
  3. package/README.md +0 -292
  4. package/dist/bundle/clancy-afk.js +0 -6
  5. package/dist/bundle/clancy-once.js +0 -239
  6. package/dist/installer/file-ops/file-ops.d.ts +0 -32
  7. package/dist/installer/file-ops/file-ops.d.ts.map +0 -1
  8. package/dist/installer/file-ops/file-ops.js +0 -58
  9. package/dist/installer/file-ops/file-ops.js.map +0 -1
  10. package/dist/installer/hook-installer/hook-installer.d.ts +0 -31
  11. package/dist/installer/hook-installer/hook-installer.d.ts.map +0 -1
  12. package/dist/installer/hook-installer/hook-installer.js +0 -137
  13. package/dist/installer/hook-installer/hook-installer.js.map +0 -1
  14. package/dist/installer/install.d.ts +0 -3
  15. package/dist/installer/install.d.ts.map +0 -1
  16. package/dist/installer/install.js +0 -270
  17. package/dist/installer/install.js.map +0 -1
  18. package/dist/installer/manifest/manifest.d.ts +0 -41
  19. package/dist/installer/manifest/manifest.d.ts.map +0 -1
  20. package/dist/installer/manifest/manifest.js +0 -97
  21. package/dist/installer/manifest/manifest.js.map +0 -1
  22. package/dist/installer/prompts/prompts.d.ts +0 -33
  23. package/dist/installer/prompts/prompts.d.ts.map +0 -1
  24. package/dist/installer/prompts/prompts.js +0 -55
  25. package/dist/installer/prompts/prompts.js.map +0 -1
  26. package/dist/installer/role-filter/role-filter.d.ts +0 -15
  27. package/dist/installer/role-filter/role-filter.d.ts.map +0 -1
  28. package/dist/installer/role-filter/role-filter.js +0 -48
  29. package/dist/installer/role-filter/role-filter.js.map +0 -1
  30. package/dist/installer/ui/ui.d.ts +0 -9
  31. package/dist/installer/ui/ui.d.ts.map +0 -1
  32. package/dist/installer/ui/ui.js +0 -94
  33. package/dist/installer/ui/ui.js.map +0 -1
  34. package/dist/scripts/shared/env-parser/env-parser.d.ts +0 -30
  35. package/dist/scripts/shared/env-parser/env-parser.d.ts.map +0 -1
  36. package/dist/scripts/shared/env-parser/env-parser.js +0 -64
  37. package/dist/scripts/shared/env-parser/env-parser.js.map +0 -1
  38. package/dist/utils/ansi/ansi.d.ts +0 -55
  39. package/dist/utils/ansi/ansi.d.ts.map +0 -1
  40. package/dist/utils/ansi/ansi.js +0 -55
  41. package/dist/utils/ansi/ansi.js.map +0 -1
  42. package/hooks/clancy-branch-guard.js +0 -128
  43. package/hooks/clancy-check-update.js +0 -114
  44. package/hooks/clancy-context-monitor.js +0 -189
  45. package/hooks/clancy-credential-guard.js +0 -120
  46. package/hooks/clancy-drift-detector.js +0 -96
  47. package/hooks/clancy-notification.js +0 -105
  48. package/hooks/clancy-post-compact.js +0 -53
  49. package/hooks/clancy-statusline.js +0 -82
  50. package/hooks/package.json +0 -3
  51. package/registry/boards.json +0 -44
  52. package/src/agents/arch-agent.md +0 -72
  53. package/src/agents/concerns-agent.md +0 -89
  54. package/src/agents/design-agent.md +0 -130
  55. package/src/agents/devils-advocate.md +0 -53
  56. package/src/agents/quality-agent.md +0 -161
  57. package/src/agents/tech-agent.md +0 -92
  58. package/src/agents/verification-gate.md +0 -128
  59. package/src/roles/implementer/commands/dry-run.md +0 -14
  60. package/src/roles/implementer/commands/once.md +0 -17
  61. package/src/roles/implementer/commands/run.md +0 -11
  62. package/src/roles/implementer/workflows/once.md +0 -146
  63. package/src/roles/implementer/workflows/run.md +0 -127
  64. package/src/roles/planner/commands/approve-plan.md +0 -10
  65. package/src/roles/planner/commands/plan.md +0 -20
  66. package/src/roles/planner/workflows/approve-plan.md +0 -535
  67. package/src/roles/planner/workflows/plan.md +0 -536
  68. package/src/roles/reviewer/commands/logs.md +0 -7
  69. package/src/roles/reviewer/commands/review.md +0 -9
  70. package/src/roles/reviewer/commands/status.md +0 -9
  71. package/src/roles/reviewer/workflows/logs.md +0 -104
  72. package/src/roles/reviewer/workflows/review.md +0 -186
  73. package/src/roles/reviewer/workflows/status.md +0 -134
  74. package/src/roles/setup/commands/doctor.md +0 -7
  75. package/src/roles/setup/commands/help.md +0 -80
  76. package/src/roles/setup/commands/init.md +0 -7
  77. package/src/roles/setup/commands/map-codebase.md +0 -16
  78. package/src/roles/setup/commands/settings.md +0 -7
  79. package/src/roles/setup/commands/uninstall.md +0 -5
  80. package/src/roles/setup/commands/update-docs.md +0 -9
  81. package/src/roles/setup/commands/update.md +0 -12
  82. package/src/roles/setup/workflows/doctor.md +0 -124
  83. package/src/roles/setup/workflows/init.md +0 -1073
  84. package/src/roles/setup/workflows/map-codebase.md +0 -125
  85. package/src/roles/setup/workflows/scaffold.md +0 -845
  86. package/src/roles/setup/workflows/settings.md +0 -944
  87. package/src/roles/setup/workflows/uninstall.md +0 -161
  88. package/src/roles/setup/workflows/update-docs.md +0 -92
  89. package/src/roles/setup/workflows/update.md +0 -277
  90. package/src/roles/strategist/commands/approve-brief.md +0 -21
  91. package/src/roles/strategist/commands/brief.md +0 -27
  92. package/src/roles/strategist/workflows/approve-brief.md +0 -834
  93. package/src/roles/strategist/workflows/brief.md +0 -890
  94. package/src/templates/CLAUDE.md +0 -87
@@ -1,186 +0,0 @@
1
- # Clancy Review Workflow
2
-
3
- ## Overview
4
-
5
- Fetch the next ticket from the board and score how well-specified it is. Returns a confidence score (0–100%) and actionable recommendations. Does not implement anything.
6
-
7
- ---
8
-
9
- ## Step 1 — Preflight checks
10
-
11
- 1. Check `.clancy/` exists and `.clancy/.env` is present. If not:
12
- ```
13
- .clancy/ not found. Run /clancy:init to set up Clancy first.
14
- ```
15
- Stop.
16
-
17
- 2. Source `.clancy/.env` and check board credentials are present (same vars checked by `/clancy:status`).
18
-
19
- ---
20
-
21
- ## Step 2 — Fetch next ticket
22
-
23
- Detect board from `.clancy/.env` and fetch with `maxResults=1`. The query must match the once-runner exactly — what review shows is what run would pick up.
24
-
25
- **Jira:** Build JQL using the same clauses as the once-runner:
26
- - Sprint clause: include `AND sprint in openSprints()` if `CLANCY_JQL_SPRINT` is set
27
- - Label clause: include `AND labels = "$CLANCY_LABEL"` if `CLANCY_LABEL` is set
28
- - `CLANCY_JQL_STATUS` defaults to `To Do` if not set
29
-
30
- Full JQL: `project=$JIRA_PROJECT_KEY [AND sprint in openSprints()] [AND labels = "$CLANCY_LABEL"] AND assignee=currentUser() AND status="$CLANCY_JQL_STATUS" ORDER BY priority ASC`
31
-
32
- Use the POST `/rest/api/3/search/jql` endpoint (the old GET `/rest/api/3/search` was removed Aug 2025):
33
-
34
- ```bash
35
- RESPONSE=$(curl -s \
36
- -u "$JIRA_USER:$JIRA_API_TOKEN" \
37
- -X POST \
38
- -H "Content-Type: application/json" \
39
- -H "Accept: application/json" \
40
- "$JIRA_BASE_URL/rest/api/3/search/jql" \
41
- -d '{"jql": "<jql as above>", "maxResults": 1, "fields": ["summary", "description", "issuelinks", "parent", "customfield_10014"]}')
42
- ```
43
-
44
- **GitHub Issues:** First resolve the authenticated username (don't use `@me` — it breaks with fine-grained PATs):
45
- `GITHUB_USERNAME=$(curl -s -H "Authorization: Bearer $GITHUB_TOKEN" https://api.github.com/user | jq -r '.login')`
46
- Then: `GET /repos/$GITHUB_REPO/issues?state=open&assignee=$GITHUB_USERNAME&labels=clancy&per_page=1` — filter out PRs (entries with `pull_request` key).
47
-
48
- **Linear:** GraphQL `viewer.assignedIssues` with `filter: { state: { type: { eq: "unstarted" } }, team: { id: { eq: "$LINEAR_TEAM_ID" } }[, labels: { name: { eq: "$CLANCY_LABEL" } }] }` (label clause only if `CLANCY_LABEL` is set), `first: 1`, `orderBy: priority`
49
-
50
- Fetch full ticket content: summary, description (full text), acceptance criteria (if present), epic/parent info, blockers/issue links.
51
-
52
- If no tickets found:
53
- ```
54
- 🚨 Clancy — Review
55
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
56
-
57
- No tickets in the queue. Nothing to review.
58
-
59
- "Quiet. Too quiet." — Check your board or run /clancy:status.
60
- ```
61
- Stop.
62
-
63
- ---
64
-
65
- ## Step 3 — Score against 7 criteria
66
-
67
- Score each criterion as pass / warn / fail using the rubric below. Compute weighted confidence score.
68
-
69
- ### Scoring rubric
70
-
71
- | # | Criterion | Weight | Pass | Warn | Fail |
72
- |---|---|---|---|---|---|
73
- | 1 | Summary clarity | 10% | Specific, scopeable | Vague but workable | Too broad or meaningless |
74
- | 2 | Description quality | 15% | Explains what + why | What only, no why | Missing or one-liner |
75
- | 3 | Acceptance criteria | 25% | Concrete + testable | Present but vague | Missing entirely |
76
- | 4 | Figma URL (UI tickets only) | 15% | URL present in description | — | UI ticket, no Figma URL |
77
- | 5 | Scope realism | 15% | Single focused deliverable | Multiple deliverables or borderline | Too large, "and also" tasks, or spans unrelated systems |
78
- | 6 | Dependencies stated | 5% | Blockers explicit | — | No mention of dependencies |
79
- | 7 | Clancy executability | 15% | Purely codebase work | Mostly codebase, minor external touch | Requires work outside the codebase |
80
-
81
- **Criterion 7 — Clancy executability:** Score as Fail if the ticket primarily requires any of the following — Clancy cannot do these from within the codebase:
82
- - **External system admin:** "in Google Analytics", "in Salesforce", "in HubSpot", "in the AWS console", "in Jira admin", "in the app store dashboard"
83
- - **Human process steps:** "get sign-off from", "send an email to customers", "coordinate with", "schedule a meeting", "announce to users"
84
- - **Production ops (non-repo):** "deploy to production", "rotate the API keys in prod", "scale the fleet", "restart the service" — unless the ticket is purely about CI/CD config files that live in the repo
85
- - **Non-code deliverables:** "write a runbook", "update the wiki", "create a presentation", "document in Confluence"
86
-
87
- Score as Warn if the ticket is mostly codebase work but has an incidental external touch (e.g. "add a new event to the existing analytics tracking" — the code change is in the repo, even if the event appears in a dashboard).
88
-
89
- **Tech stack coherence (part of criterion 7):** If `.clancy/docs/STACK.md` exists, read it and check the ticket against the documented stack. If the ticket mentions a technology or platform not in the documented stack that appears to be an external service (not a new dependency to install), score criterion 7 as Warn and note the mismatch explicitly.
90
-
91
- **Figma criterion:** Only applies if the ticket description mentions UI, components, screens, design, or visual elements. Backend/API/config tickets skip criterion 4 and redistribute its 15% weight proportionally across the remaining criteria.
92
-
93
- **Figma URL quality checks:**
94
- - URL present but points to file root (no `node-id`) → warn: recommend scoping to specific frame
95
- - `FIGMA_API_KEY` not configured but UI ticket has Figma URL → warn: link will be ignored at runtime
96
-
97
- **Scope realism — additional Fail signals:**
98
- - Ticket contains multiple distinct deliverables ("and also", "additionally", "while you're at it", "as well as")
99
- - Ticket implies setting up new infrastructure from scratch where none exists in the repo (new database, new service, new deployment pipeline)
100
- - Ticket references 4+ unrelated subsystems that would each require deep separate context
101
-
102
- **Score calculation:**
103
- - Pass = full weight
104
- - Warn = half weight
105
- - Fail = zero weight
106
- - Sum all weighted scores → overall percentage
107
-
108
- **Hard gate — executability override:** If criterion 7 scores Fail, cap the verdict at "Needs work" regardless of the calculated score. A ticket that requires work outside the codebase cannot be run reliably no matter how well it is specified.
109
-
110
- ---
111
-
112
- ## Step 4 — Generate recommendations
113
-
114
- For each warn or fail criterion, generate a specific, actionable recommendation — specific to this ticket, not generic advice.
115
-
116
- Good: "Add a Figma URL to the ticket description — this ticket mentions updating the profile header component"
117
- Bad: "Ensure design specs are provided"
118
-
119
- ---
120
-
121
- ## Step 5 — Display output
122
-
123
- ```
124
- 🚨 Clancy — Review
125
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
126
-
127
- [{TICKET-KEY}] {Summary}
128
-
129
- Confidence: {score}% — {badge} {band label}
130
-
131
- {for each criterion:}
132
- ✅ {criterion name} — {pass reason}
133
- ⚠️ {criterion name} — {warn reason}
134
- → {specific recommendation}
135
- ❌ {criterion name} — {fail reason}
136
- → {specific recommendation}
137
-
138
- {verdict line}
139
-
140
- {sign-off quote}
141
- ```
142
-
143
- ### Confidence bands
144
-
145
- | Score | Badge | Label | Verdict action |
146
- |---|---|---|---|
147
- | 85–100% | 🟢 | Ready | "Run with confidence." |
148
- | 65–84% | 🟡 | Good to go with caveats | "Review the warnings above, then run /clancy:once." |
149
- | 40–64% | 🟠 | Needs work | "Address the ❌ items in the ticket, then re-run /clancy:review." |
150
- | 0–39% | 🔴 | Not ready | "This ticket needs significant rework before Clancy can implement it reliably." |
151
-
152
- **Executability override:** If criterion 7 (Clancy executability) scores Fail, ignore the calculated band and show:
153
- ```
154
- 🔴 Verdict: Not ready for Clancy
155
- This ticket requires work outside the codebase — Clancy can only implement code changes.
156
- Update the ticket to focus on the codebase side, or remove it from the queue.
157
-
158
- "This is Papa Bear. Put out an APB for a better ticket spec."
159
- ```
160
-
161
- ### Sign-off quotes per band
162
-
163
- Append a Wiggum-themed quote after the verdict to add personality. Never suggest bypassing the review on low-confidence tickets:
164
-
165
- - **🟢 Ready:** `"Bake 'em away, toys." — Run /clancy:once to pick it up.`
166
- - **🟡 Good to go:** `"I'd rather let Herman go. I don't think we've got enough to nail him." — Fix the warnings, then run /clancy:once.`
167
- - **🟠 Needs work:** `"Uh, no. You got the wrong number. This is 9-1... 2." — Update the ticket, then re-run /clancy:review.`
168
- - **🔴 Not ready:** `"This is Papa Bear. Put out an APB for a better ticket spec." — Rework the ticket first.`
169
-
170
- ---
171
-
172
- ## Step 6 — Log the review
173
-
174
- Append to `.clancy/progress.txt`:
175
- ```
176
- YYYY-MM-DD HH:MM | {TICKET-KEY} | REVIEW | {score}%
177
- ```
178
-
179
- ---
180
-
181
- ## Notes
182
-
183
- - Recommendations are specific to this ticket — never generic
184
- - The verdict always suggests a next step — never leaves the user without a clear action
185
- - Re-running `/clancy:review` multiple times is safe — the score may improve as the ticket is updated
186
- - Do not implement anything — Claude is invoked for analysis only
@@ -1,134 +0,0 @@
1
- # Clancy Status Workflow
2
-
3
- ## Overview
4
-
5
- Read-only board check. Fetches the next 3 tickets Clancy would pick up and displays them. No side effects whatsoever — no git operations, no file writes, no ticket claiming.
6
-
7
- ---
8
-
9
- ## Step 1 — Preflight checks
10
-
11
- 1. Check `.clancy/` exists and `.clancy/.env` is present.
12
- 2. Source `.clancy/.env` and check board credentials are present.
13
- 3. On any missing config, show a specific error and stop:
14
- ```
15
- Missing config. Run /clancy:init to set up Clancy.
16
- ```
17
-
18
- ---
19
-
20
- ## Step 2 — Detect board and fetch tickets
21
-
22
- Detect board from `.clancy/.env`:
23
-
24
- **Jira:**
25
-
26
- Build the JQL string first using the same clauses as the once-runner:
27
- - Sprint clause: include `AND sprint in openSprints()` if `CLANCY_JQL_SPRINT` is set
28
- - Label clause: include `AND labels = "$CLANCY_LABEL"` if `CLANCY_LABEL` is set
29
- - `CLANCY_JQL_STATUS` defaults to `To Do` if not set
30
-
31
- Full JQL (with both optional clauses shown):
32
- `project=$JIRA_PROJECT_KEY [AND sprint in openSprints()] [AND labels = "$CLANCY_LABEL"] AND assignee=currentUser() AND status="$CLANCY_JQL_STATUS" ORDER BY priority ASC`
33
-
34
- ```bash
35
- RESPONSE=$(curl -s \
36
- -u "$JIRA_USER:$JIRA_API_TOKEN" \
37
- -X POST \
38
- -H "Content-Type: application/json" \
39
- -H "Accept: application/json" \
40
- "$JIRA_BASE_URL/rest/api/3/search/jql" \
41
- -d '{"jql": "<jql as above>", "maxResults": 3, "fields": ["summary", "parent", "customfield_10014", "status"]}')
42
- ```
43
-
44
- **GitHub Issues:**
45
- First resolve the authenticated username (don't use `@me` — it breaks with fine-grained PATs):
46
- ```bash
47
- GITHUB_USERNAME=$(curl -s -H "Authorization: Bearer $GITHUB_TOKEN" https://api.github.com/user | jq -r '.login')
48
- ```
49
- Then fetch issues:
50
- ```bash
51
- RESPONSE=$(curl -s \
52
- -H "Authorization: Bearer $GITHUB_TOKEN" \
53
- -H "X-GitHub-Api-Version: 2022-11-28" \
54
- "https://api.github.com/repos/$GITHUB_REPO/issues?state=open&assignee=$GITHUB_USERNAME&labels=clancy&per_page=3")
55
- # Filter out PRs (entries with pull_request key)
56
- ```
57
-
58
- **Linear:**
59
-
60
- Build the filter — `CLANCY_LABEL` is optional:
61
- - Base filter: `state: { type: { eq: "unstarted" } }, team: { id: { eq: "$LINEAR_TEAM_ID" } }`
62
- - If `CLANCY_LABEL` is set: add `labels: { name: { eq: "$CLANCY_LABEL" } }` to the filter
63
-
64
- ```graphql
65
- query {
66
- viewer {
67
- assignedIssues(
68
- filter: { state: { type: { eq: "unstarted" } }, team: { id: { eq: "$LINEAR_TEAM_ID" } } [, labels: { name: { eq: "$CLANCY_LABEL" } }] }
69
- first: 3
70
- orderBy: priority
71
- ) {
72
- nodes { id identifier title parent { identifier title } }
73
- }
74
- }
75
- }
76
- ```
77
-
78
- ---
79
-
80
- ## Step 3 — Display
81
-
82
- If tickets found, display:
83
- ```
84
- 🚨 Clancy — Status
85
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
86
-
87
- Next up:
88
-
89
- 1. [{TICKET-KEY}] {Summary}
90
- Epic: {epic key} — {epic title}
91
- Status: {status}
92
-
93
- 2. [{TICKET-KEY}] {Summary}
94
- Epic: {epic key} — {epic title}
95
- Status: {status}
96
-
97
- 3. [{TICKET-KEY}] {Summary}
98
- Epic: {epic key} — {epic title}
99
- Status: {status}
100
-
101
- "Let me check the dispatch..." — Run /clancy:once to pick up #1, or /clancy:run to process the queue.
102
- ```
103
-
104
- If no tickets found:
105
- ```
106
- 🚨 Clancy — Status
107
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
108
-
109
- No tickets found in the current queue.
110
-
111
- "Quiet. Too quiet." — Check your board or run /clancy:init to verify your config.
112
- ```
113
-
114
- If API call fails, show the error clearly:
115
- ```
116
- 🚨 Clancy — Status
117
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
118
-
119
- ❌ Board API error: {error message}
120
-
121
- Tips:
122
- - Check your credentials in .clancy/.env
123
- - For Jira: ensure you have VPN access if required
124
- - Run /clancy:init to reconfigure
125
- ```
126
-
127
- ---
128
-
129
- ## Notes
130
-
131
- - Show up to 3 tickets. If only 1 or 2 are available, show those.
132
- - Omit "Epic:" line if no epic/parent data is present for that ticket.
133
- - This command is strictly read-only. No git ops, no file writes, no Claude invocation for analysis.
134
- - The query used here must be identical to the one used by the once-runner — what status shows is exactly what run would pick up.
@@ -1,7 +0,0 @@
1
- # /clancy:doctor
2
-
3
- Diagnose your Clancy setup — test every configured integration and report what's working, what's broken, and how to fix it.
4
-
5
- @.claude/clancy/workflows/doctor.md
6
-
7
- Run the doctor workflow as documented above.
@@ -1,80 +0,0 @@
1
- # /clancy:help
2
-
3
- List all Clancy commands with descriptions.
4
-
5
- Display the following:
6
-
7
- ---
8
-
9
- ## Clancy — autonomous, board-driven development for Claude Code
10
-
11
- Named after Chief Clancy Wiggum (Ralph's dad, The Simpsons). Built on the Ralph technique
12
- coined by Geoffrey Huntley (ghuntley.com/ralph/). Clancy extends that foundation with board
13
- integration (6 boards), structured codebase docs, and a git workflow built for team development.
14
-
15
- **Supported boards:** Jira, GitHub Issues, Linear, Shortcut, Notion, Azure DevOps
16
-
17
- ### Planner *(optional — enable via `CLANCY_ROLES=planner` in `.clancy/.env`)*
18
-
19
- | Command | Description |
20
- |---|---|
21
- | `/clancy:plan` | Refine backlog tickets into structured implementation plans |
22
- | `/clancy:plan 3` | Plan up to 3 tickets in batch mode |
23
- | `/clancy:plan PROJ-123` | Plan a specific ticket by key (also `#42`, `ENG-42`) |
24
- | `/clancy:plan --fresh` | Discard any existing plan and start from scratch |
25
- | `/clancy:approve-plan` | Promote an approved plan to the ticket description |
26
-
27
- ### Strategist *(optional — enable via `CLANCY_ROLES=strategist` in `.clancy/.env`)*
28
-
29
- | Command | Description |
30
- |---|---|
31
- | `/clancy:brief` | Generate a strategic brief (research + grill + decomposition) |
32
- | `/clancy:approve-brief` | Convert a brief into tickets on the board |
33
-
34
- ### Implementer
35
-
36
- | Command | Description |
37
- |---|---|
38
- | `/clancy:once` | Pick up one ticket and stop — good for first runs and debugging |
39
- | `/clancy:run` | Run in loop mode until queue is empty or MAX_ITERATIONS hit |
40
- | `/clancy:run 20` | Same, but override MAX_ITERATIONS to 20 for this session |
41
- | `/clancy:dry-run` | Preview next ticket without making any changes |
42
-
43
- ### Reviewer
44
-
45
- | Command | Description |
46
- |---|---|
47
- | `/clancy:review` | Score next ticket (0–100%) with actionable recommendations |
48
- | `/clancy:status` | Show next tickets without running — read-only board check |
49
- | `/clancy:logs` | Format and display .clancy/progress.txt |
50
-
51
- ### Setup & Maintenance
52
-
53
- | Command | Description |
54
- |---|---|
55
- | `/clancy:init` | Wizard — choose board, collect config, scaffold everything, offer map-codebase |
56
- | `/clancy:settings` | View and change configuration — model, iterations, board, and more |
57
- | `/clancy:doctor` | Diagnose your setup — test every integration and report what's broken |
58
- | `/clancy:map-codebase` | Full 5-agent parallel codebase scan, writes all 10 docs |
59
- | `/clancy:update-docs` | Incremental refresh — re-runs agents for changed areas only |
60
- | `/clancy:update` | Update Clancy to latest version via npx |
61
- | `/clancy:uninstall` | Remove Clancy commands — optionally remove `.clancy/` too |
62
- | `/clancy:help` | This screen |
63
-
64
- ### How it works
65
-
66
- 1. Run `/clancy:init` to connect your Kanban board and scaffold .clancy/
67
- 2. Run `/clancy:map-codebase` to generate codebase docs (or say yes during init)
68
- 3. Run `/clancy:dry-run` to preview the first ticket, then `/clancy:once` to run it — then go AFK with `/clancy:run`
69
-
70
- Clancy picks one ticket per loop, fresh context every iteration. No context rot.
71
-
72
- ### Links
73
-
74
- - GitHub: github.com/Pushedskydiver/clancy
75
- - Issues: github.com/Pushedskydiver/clancy/issues
76
- - Lineage: ghuntley.com/ralph/
77
-
78
- ---
79
-
80
- Show this output exactly. Do not add, remove, or reformat any content.
@@ -1,7 +0,0 @@
1
- # /clancy:init
2
-
3
- Set up Clancy in your project — choose your Kanban board, collect config, scaffold scripts and docs, and optionally scan your codebase.
4
-
5
- @.claude/clancy/workflows/init.md
6
-
7
- Run the full init wizard as documented in the workflow above. Follow every step exactly.
@@ -1,16 +0,0 @@
1
- # /clancy:map-codebase
2
-
3
- Scan your codebase with 5 parallel specialist agents and write 10 structured docs to .clancy/docs/.
4
-
5
- Agents run simultaneously:
6
- - tech — STACK.md, INTEGRATIONS.md
7
- - arch — ARCHITECTURE.md
8
- - quality — CONVENTIONS.md, TESTING.md, GIT.md, DEFINITION-OF-DONE.md
9
- - design — DESIGN-SYSTEM.md, ACCESSIBILITY.md
10
- - concerns — CONCERNS.md
11
-
12
- Takes approximately 2 minutes for a typical codebase.
13
-
14
- @.claude/clancy/workflows/map-codebase.md
15
-
16
- Run the 5-agent scan as documented in the workflow above. Spawn all agents simultaneously.
@@ -1,7 +0,0 @@
1
- # /clancy:settings
2
-
3
- View and change Clancy configuration without re-running init.
4
-
5
- @.claude/clancy/workflows/settings.md
6
-
7
- Run the settings workflow as documented above.
@@ -1,5 +0,0 @@
1
- /clancy:uninstall
2
-
3
- Remove Clancy's slash commands from this project or your global Claude Code installation.
4
-
5
- @.claude/clancy/workflows/uninstall.md
@@ -1,9 +0,0 @@
1
- # /clancy:update-docs
2
-
3
- Incrementally refresh .clancy/docs/ — re-runs only the agents covering areas that have changed since the last scan.
4
-
5
- Faster than a full map-codebase when you've made targeted changes (new dependency, design system update, new test strategy, etc.).
6
-
7
- @.claude/clancy/workflows/update-docs.md
8
-
9
- Run the incremental update as documented in the workflow above.
@@ -1,12 +0,0 @@
1
- # /clancy:update
2
-
3
- Update Clancy itself to the latest version via npx and show what changed.
4
-
5
- This re-runs the installer, which copies the latest command files from the npm package into your .claude/commands/clancy/ directory. Your .clancy/ project folder (scripts, docs, progress log) is never touched.
6
-
7
- **Supported flags:**
8
- - `--afk` — skip the confirmation prompt and auto-approve the update (for autonomous setups)
9
-
10
- @.claude/clancy/workflows/update.md
11
-
12
- Run the update as documented in the workflow above. If `--afk` is passed, skip all confirmation prompts.
@@ -1,124 +0,0 @@
1
- ## Update check
2
-
3
- Before doing anything else, check for updates:
4
-
5
- 1. Run: `npm show chief-clancy version`
6
- 2. Read the installed version from the Clancy `package.json`
7
- 3. If a newer version exists, print: `ℹ️ Clancy v{current} → v{latest} available. Run /clancy:update to upgrade.` then continue normally.
8
- 4. If already on latest, continue silently.
9
- 5. If the npm check fails for any reason (offline, network error), continue silently. Never block on this.
10
-
11
- ---
12
-
13
- # Clancy Doctor Workflow
14
-
15
- ## Overview
16
-
17
- Diagnose your Clancy setup — test every configured integration and report what's working, what's broken, and how to fix it. Never modifies any files or state.
18
-
19
- ---
20
-
21
- ## Step 1 — Check install
22
-
23
- - Verify Clancy commands are installed (`.claude/commands/clancy/` or `~/.claude/commands/clancy/`)
24
- - Read installed version from `package.json` in the commands directory
25
- - Print: `✅ Clancy v{version} installed ({location})`
26
-
27
- ---
28
-
29
- ## Step 2 — Check prerequisites
30
-
31
- Test each required binary:
32
-
33
- | Binary | Check | Fix hint |
34
- |---|---|---|
35
- | `node` | `command -v node` | Install Node.js 22+ |
36
- | `git` | `command -v git` | Install git for your OS |
37
-
38
- Print `✅` or `❌` for each.
39
-
40
- ---
41
-
42
- ## Step 3 — Check project setup
43
-
44
- - `.clancy/` exists → `✅ .clancy/ found`
45
- - `.clancy/clancy-once.js` exists → `✅ clancy-once.js`
46
- - `.clancy/clancy-afk.js` exists → `✅ clancy-afk.js`
47
- - `.clancy/.env` exists → `✅ .clancy/.env found`
48
- - `.clancy/docs/` has non-empty files → `✅ codebase docs present ({N} files)`
49
-
50
- If `.clancy/` is missing: `❌ .clancy/ not found — run /clancy:init`
51
- If `.clancy/.env` is missing: `❌ .clancy/.env not found — run /clancy:init`
52
-
53
- ---
54
-
55
- ## Step 4 — Check board credentials
56
-
57
- Source `.clancy/.env` and detect which board is configured:
58
-
59
- **Jira** — if `JIRA_BASE_URL` is set:
60
- 1. Check all required vars are non-empty: `JIRA_BASE_URL`, `JIRA_USER`, `JIRA_API_TOKEN`, `JIRA_PROJECT_KEY`
61
- 2. Ping: `GET {JIRA_BASE_URL}/rest/api/3/project/{JIRA_PROJECT_KEY}` with basic auth
62
- 3. Report HTTP status with specific guidance for each failure code
63
-
64
- **GitHub Issues** — if `GITHUB_TOKEN` is set:
65
- 1. Check: `GITHUB_TOKEN`, `GITHUB_REPO`
66
- 2. Ping: `GET https://api.github.com/repos/{GITHUB_REPO}` with bearer token
67
- 3. Report status
68
-
69
- **Linear** — if `LINEAR_API_KEY` is set:
70
- 1. Check: `LINEAR_API_KEY`, `LINEAR_TEAM_ID`
71
- 2. Ping: `POST https://api.linear.app/graphql` with `{ viewer { id } }` — no Bearer prefix
72
- 3. Report status
73
-
74
- ---
75
-
76
- ## Step 5 — Check optional integrations
77
-
78
- **Figma** — if `FIGMA_API_KEY` is set:
79
- - Call `GET https://api.figma.com/v1/me` with `X-Figma-Token: $FIGMA_API_KEY`
80
- - On success: print `✅ Figma connected — {email}`
81
- - On 403: print `❌ Figma authentication failed. Check FIGMA_API_KEY in .clancy/.env.`
82
- - Note: Figma's API does not expose plan information — check your plan at figma.com/settings
83
-
84
- **Playwright** — if `PLAYWRIGHT_ENABLED=true`:
85
- - Check `.clancy/docs/PLAYWRIGHT.md` exists
86
- - Verify `PLAYWRIGHT_DEV_COMMAND` and `PLAYWRIGHT_DEV_PORT` are set
87
- - Check port is not currently in use (just a status, not a blocker)
88
-
89
- **Notifications** — if `CLANCY_NOTIFY_WEBHOOK` is set:
90
- - Detect platform from URL (Slack/Teams)
91
- - Send a test ping: `"Clancy doctor — webhook test from {project dir}"`
92
- - Report success or failure
93
-
94
- ---
95
-
96
- ## Step 6 — Summary
97
-
98
- ```
99
- 🚨 Clancy — Doctor
100
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
101
-
102
- {N} checks passed, {N} warnings, {N} failures
103
-
104
- ✅ Clancy v0.1.0 installed (global)
105
- ✅ node, git — all present
106
- ✅ .clancy/ set up — 10 docs present
107
- ✅ Jira connected — PROJ reachable
108
- ✅ Figma connected — alex@example.com (check plan at figma.com/settings)
109
- ❌ PLAYWRIGHT_STORYBOOK_PORT — not set in .clancy/.env
110
-
111
- Fix the ❌ items, then run /clancy:once to verify end-to-end.
112
-
113
- "We've got a 415 in progress — a config disturbance."
114
- ```
115
-
116
- If all checks pass:
117
- ```
118
- 🚨 Clancy — Doctor
119
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
120
-
121
- All {N} checks passed.
122
-
123
- "Nothing to see here, folks. Move along." — Run /clancy:once to pick up your first ticket.
124
- ```