chief-clancy 0.8.23 → 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,845 +0,0 @@
1
- # Clancy Scaffold Workflow
2
-
3
- ## Overview
4
-
5
- Shared scaffolding logic used during `/clancy:init`. Not a standalone command.
6
-
7
- ---
8
-
9
- ## Doc templates
10
-
11
- Create these files in `.clancy/docs/` with section headings but no content:
12
-
13
- ### STACK.md
14
- ```markdown
15
- # Stack
16
-
17
- ## Runtime
18
-
19
- ## Package Manager
20
-
21
- ## Frameworks
22
-
23
- ## Key Libraries
24
-
25
- ## Build Tools
26
-
27
- ## Dev Servers
28
-
29
- ## Environment
30
- ```
31
-
32
- ### INTEGRATIONS.md
33
- ```markdown
34
- # Integrations
35
-
36
- ## External APIs
37
-
38
- ## Authentication
39
-
40
- ## Data Storage
41
-
42
- ## Third-party Services
43
-
44
- ## Environment Variables Required
45
- ```
46
-
47
- ### ARCHITECTURE.md
48
- ```markdown
49
- # Architecture
50
-
51
- ## Overview
52
-
53
- ## Directory Structure
54
-
55
- ## Key Modules
56
-
57
- ## Data Flow
58
-
59
- ## API Design
60
-
61
- ## State Management
62
- ```
63
-
64
- ### CONVENTIONS.md
65
- ```markdown
66
- # Conventions
67
-
68
- ## Code Style
69
-
70
- ## Naming Conventions
71
-
72
- ## File Organisation
73
-
74
- ## Component Patterns
75
-
76
- ## Error Handling
77
-
78
- ## Logging
79
- ```
80
-
81
- ### TESTING.md
82
- ```markdown
83
- # Testing
84
-
85
- ## Test Runner
86
-
87
- ## Test Structure
88
-
89
- ## Unit Tests
90
-
91
- ## Integration Tests
92
-
93
- ## E2E Tests
94
-
95
- ## Coverage Expectations
96
- ```
97
-
98
- ### GIT.md
99
- ```markdown
100
- # Git Conventions
101
-
102
- ## Branch Naming
103
-
104
- ## Commit Format
105
-
106
- ## Merge Strategy
107
-
108
- ## Pull Request Process
109
-
110
- ## Versioning
111
- ```
112
-
113
- ### DESIGN-SYSTEM.md
114
- ```markdown
115
- # Design System
116
-
117
- ## Token System
118
-
119
- ## Component Library
120
-
121
- ## Theming
122
-
123
- ## Responsive Breakpoints
124
-
125
- ## Icon System
126
- ```
127
-
128
- ### ACCESSIBILITY.md
129
- ```markdown
130
- # Accessibility
131
-
132
- ## WCAG Level
133
-
134
- ## ARIA Patterns
135
-
136
- ## Keyboard Navigation
137
-
138
- ## Focus Management
139
-
140
- ## Screen Reader Support
141
- ```
142
-
143
- ### DEFINITION-OF-DONE.md
144
- ```markdown
145
- # Definition of Done
146
-
147
- ## Code Quality
148
-
149
- ## Testing
150
-
151
- ## Documentation
152
-
153
- ## Design
154
-
155
- ## Accessibility
156
-
157
- ## Review
158
- ```
159
-
160
- ### CONCERNS.md
161
- ```markdown
162
- # Concerns
163
-
164
- ## Known Tech Debt
165
-
166
- ## Security Considerations
167
-
168
- ## Performance Bottlenecks
169
-
170
- ## Areas to Avoid Changing
171
-
172
- ## Deprecated Patterns
173
- ```
174
-
175
- ---
176
-
177
- ## PLAYWRIGHT.md template
178
-
179
- Create `.clancy/docs/PLAYWRIGHT.md` when `PLAYWRIGHT_ENABLED=true`:
180
-
181
- ```markdown
182
- # Playwright Visual Checks
183
-
184
- Clancy runs visual checks after implementing UI tickets. This file defines
185
- which server to use and how to start it.
186
-
187
- ## Decision Rule
188
-
189
- Apply in order:
190
- 1. If the ticket mentions: route, page, screen, layout, full-page → use **dev server**
191
- 2. If the ticket mentions: component, atom, molecule, organism, variant, story → use **Storybook**
192
- 3. Ambiguous → default to **dev server**
193
-
194
- ## Dev Server
195
-
196
- | Key | Value |
197
- |---|---|
198
- | Start command | `{PLAYWRIGHT_DEV_COMMAND}` |
199
- | Port | `{PLAYWRIGHT_DEV_PORT}` |
200
- | Health check | `http://localhost:{PLAYWRIGHT_DEV_PORT}` |
201
- | Startup wait | {PLAYWRIGHT_STARTUP_WAIT}s (use health check polling, not sleep) |
202
-
203
- ## Storybook
204
-
205
- <!-- Remove this section if Storybook is not used -->
206
-
207
- | Key | Value |
208
- |---|---|
209
- | Start command | `{PLAYWRIGHT_STORYBOOK_COMMAND}` |
210
- | Port | `{PLAYWRIGHT_STORYBOOK_PORT}` |
211
- | Story URL pattern | `http://localhost:{PLAYWRIGHT_STORYBOOK_PORT}/?path=/story/{component-name}` |
212
-
213
- ## Visual Check Process
214
-
215
- 1. Determine which server to use (decision rule above)
216
- 2. Start the server using health check polling — poll every 2s, timeout after {PLAYWRIGHT_STARTUP_WAIT}s
217
- 3. Navigate to the relevant route or story URL
218
- 4. Screenshot the full page
219
- 5. Assess visually — check layout, spacing, colours, responsive behaviour
220
- 6. Check browser console for errors
221
- 7. Fix anything wrong before committing
222
- 8. Kill server by PID, then sweep the port unconditionally
223
- 9. Log result: `YYYY-MM-DD HH:MM | TICKET-KEY | PLAYWRIGHT_PASS|FAIL | dev-server|storybook`
224
-
225
- ## Server Health Check Pattern
226
-
227
- ```bash
228
- # Start server in background
229
- {PLAYWRIGHT_DEV_COMMAND} &
230
- SERVER_PID=$!
231
-
232
- # Poll until ready
233
- MAX_WAIT={PLAYWRIGHT_STARTUP_WAIT}
234
- ELAPSED=0
235
- until curl -s http://localhost:{PLAYWRIGHT_DEV_PORT} >/dev/null 2>&1; do
236
- sleep 2
237
- ELAPSED=$((ELAPSED + 2))
238
- if [ $ELAPSED -ge $MAX_WAIT ]; then
239
- echo "Server did not start within ${MAX_WAIT}s"
240
- kill $SERVER_PID 2>/dev/null
241
- exit 1
242
- fi
243
- done
244
-
245
- # ... run visual check ...
246
-
247
- # Cleanup — kill by PID, then sweep port unconditionally
248
- kill $SERVER_PID 2>/dev/null
249
- lsof -ti:{PLAYWRIGHT_DEV_PORT} | xargs kill -9 2>/dev/null || true
250
- ```
251
- ```
252
-
253
- ---
254
-
255
- ## CLAUDE.md merge logic
256
-
257
- ### If CLAUDE.md does not exist
258
-
259
- Write the full template as `CLAUDE.md` (see `src/templates/CLAUDE.md`).
260
-
261
- ### If CLAUDE.md already exists
262
-
263
- Check for existing `<!-- clancy:start -->` marker:
264
- - Found: Replace everything between `<!-- clancy:start -->` and `<!-- clancy:end -->` with updated content
265
- - Not found: Append the Clancy section to the end of the file
266
-
267
- Never overwrite the entire file. Always preserve existing content.
268
-
269
- ---
270
-
271
- ## .gitignore check
272
-
273
- Read the project's `.gitignore`. If `.clancy/.env` is not present, append:
274
- ```
275
- # Clancy credentials
276
- .clancy/.env
277
- ```
278
-
279
- If no `.gitignore` exists, create one with:
280
- ```
281
- # Clancy credentials
282
- .clancy/.env
283
-
284
- # Dependencies
285
- node_modules/
286
-
287
- # OS
288
- .DS_Store
289
- ```
290
-
291
- ---
292
-
293
- ## .prettierignore check
294
-
295
- Check whether a `.prettierignore` file exists in the project root.
296
-
297
- **If it exists:** read it. If it does not already contain `.clancy/`, append:
298
- ```
299
- # Clancy generated files
300
- .clancy/
301
- .claude/commands/clancy/
302
- ```
303
-
304
- **If it does not exist:** skip — do not create it. Clancy only adds entries to an existing `.prettierignore` so it does not impose Prettier on projects that don't use it.
305
-
306
- ---
307
-
308
- ## Runtime scripts
309
-
310
- The installer copies bundled runtime scripts (`clancy-once.js` and `clancy-afk.js`) directly into `.clancy/` during installation. These are self-contained — they have zero runtime dependency on the `chief-clancy` npm package.
311
-
312
- **Do NOT write or modify these files during init.** They are managed by the installer and updated automatically via `/clancy:update`.
313
-
314
- If the scripts are missing (e.g. upgrading from an older version), tell the user to run:
315
- ```bash
316
- npx -y chief-clancy@latest
317
- ```
318
-
319
- ---
320
-
321
- ## .env.example files
322
-
323
- Write the correct `.env.example` for the chosen board to `.clancy/.env.example`.
324
-
325
- ### Jira
326
-
327
- ```
328
- # Clancy — Jira configuration
329
- # Copy this file to .env and fill in your values.
330
- # Never commit .env to version control.
331
-
332
- # ─── Jira ─────────────────────────────────────────────────────────────────────
333
- JIRA_BASE_URL=https://your-org.atlassian.net
334
- JIRA_USER=your-email@example.com
335
- JIRA_API_TOKEN=your-api-token-from-id.atlassian.com
336
- JIRA_PROJECT_KEY=PROJ
337
-
338
- # ─── Implementation Queue ─────────────────────────────────────────────────────
339
- # Status name for "ready to be picked up" (default: To Do)
340
- # Must be quoted if the status name contains spaces (e.g. "Selected for Development")
341
- CLANCY_JQL_STATUS="To Do"
342
-
343
- # Set to any non-empty value to filter by open sprints (requires Jira Software)
344
- # Remove or leave empty if your project doesn't use sprints
345
- # CLANCY_JQL_SPRINT=true
346
-
347
- # Optional: only pick up tickets with this label. Recommended for mixed backlogs
348
- # where not every ticket is suitable for autonomous implementation (e.g. non-code tasks).
349
- # Create the label in Jira first, then add it to any ticket you want Clancy to pick up.
350
- # CLANCY_LABEL="clancy"
351
-
352
- # ─── Git ──────────────────────────────────────────────────────────────────────
353
- # Base integration branch. Clancy branches from here when a ticket has no parent epic.
354
- # When a ticket has a parent epic, Clancy auto-creates epic/{key} from this branch.
355
- CLANCY_BASE_BRANCH=main
356
-
357
- # ─── Loop ─────────────────────────────────────────────────────────────────────
358
- # Max tickets to process per /clancy:run session (default: 5)
359
- MAX_ITERATIONS=5
360
-
361
- # ─── Model ────────────────────────────────────────────────────────────────────
362
- # Claude model used for each ticket session. Leave unset to use the default.
363
- # Options: claude-opus-4-6 | claude-sonnet-4-6 | claude-haiku-4-5
364
- # CLANCY_MODEL=claude-sonnet-4-6
365
-
366
- # ─── Optional: Figma MCP ──────────────────────────────────────────────────────
367
- # Fetch design specs from Figma when a ticket has a Figma URL in its description
368
- # FIGMA_API_KEY=your-figma-api-key
369
-
370
- # ─── Optional: Playwright visual checks ───────────────────────────────────────
371
- # Run a visual check after implementing UI tickets
372
- # PLAYWRIGHT_ENABLED=true
373
- # PLAYWRIGHT_DEV_COMMAND="yarn dev"
374
- # PLAYWRIGHT_DEV_PORT=5173
375
- # PLAYWRIGHT_STORYBOOK_COMMAND="yarn storybook"
376
- # PLAYWRIGHT_STORYBOOK_PORT=6006
377
- # PLAYWRIGHT_STARTUP_WAIT=15
378
-
379
- # ─── Optional: Status transitions ────────────────────────────────────────────
380
- # Move tickets automatically when Clancy picks up or completes them.
381
- # Set to the Jira transition name (the action label, not the column header).
382
- # In many workflows these match, but check your Jira workflow if transitions fail.
383
- # "Done" can be any transition to a post-implementation status.
384
- # CLANCY_STATUS_IN_PROGRESS="In Progress"
385
- # CLANCY_STATUS_DONE="Done"
386
- # CLANCY_STATUS_REVIEW="In Review" # used when creating a PR instead of merging locally
387
-
388
- # ─── Optional: Git host (PR creation) ───────────────────────────────────────
389
- # When a ticket has no parent epic, Clancy pushes the feature branch and creates
390
- # a pull request instead of squash-merging locally. Requires a git host token.
391
- # GitHub Issues users already have GITHUB_TOKEN above — no extra config needed.
392
- # GITHUB_TOKEN=ghp_your-token # if your git host is GitHub
393
- # GITLAB_TOKEN=glpat-your-token # if your git host is GitLab
394
- # BITBUCKET_USER=your-username # if your git host is Bitbucket
395
- # BITBUCKET_TOKEN=your-app-password # if your git host is Bitbucket
396
- # CLANCY_GIT_PLATFORM=gitlab # override auto-detection (github/gitlab/bitbucket)
397
- # CLANCY_GIT_API_URL=https://gitlab.example.com/api/v4 # self-hosted git API base URL
398
-
399
- # ─── Optional: Pipeline labels ────────────────────────────────────────────────
400
- # Labels that control ticket flow through pipeline stages.
401
- # CLANCY_LABEL_BRIEF marks tickets that have been briefed (awaiting approval).
402
- # CLANCY_LABEL_PLAN marks tickets that need planning.
403
- # CLANCY_LABEL_BUILD marks tickets ready for implementation.
404
- # Deprecated: CLANCY_LABEL (use CLANCY_LABEL_BUILD), CLANCY_PLAN_LABEL (use CLANCY_LABEL_PLAN)
405
- # CLANCY_LABEL_BRIEF="clancy:brief"
406
- # CLANCY_LABEL_PLAN="clancy:plan"
407
- # CLANCY_LABEL_BUILD="clancy:build"
408
-
409
- # ─── Optional: Rework loop ──────────────────────────────────────────────────
410
- # PR-based rework is automatic — when a reviewer leaves inline comments or
411
- # a conversation comment prefixed with "Rework:", Clancy picks it up on the
412
- # next run. No configuration needed.
413
- # CLANCY_MAX_REWORK=3 # Max rework cycles before human intervention (default: 3)
414
-
415
- # ─── Optional: Test-Driven Development ──────────────────────────────────────
416
- # When enabled, Clancy follows red-green-refactor for every behaviour change.
417
- # CLANCY_TDD=true
418
-
419
- # ─── Optional: Grill mode ───────────────────────────────────────────────────
420
- # Controls how /clancy:brief handles clarifying questions before generating a brief.
421
- # "interactive" (default) — asks the human. "afk" — AI-grill resolves autonomously.
422
- # Can also be overridden per-invocation with --afk flag.
423
- # CLANCY_MODE=interactive
424
-
425
- # ─── Optional: Strategist ───────────────────────────────────────────────────
426
- # Issue type for tickets created by /clancy:brief (Jira only, default: Task)
427
- # CLANCY_BRIEF_ISSUE_TYPE="Task"
428
-
429
- # Default parent epic for briefs created from text or file input
430
- # CLANCY_BRIEF_EPIC="PROJ-100"
431
-
432
- # Auto-set on tickets created by /clancy:brief.
433
- # Only affects ticket creation — does not filter the implementation queue.
434
- # CLANCY_COMPONENT="frontend"
435
-
436
- # ─── Optional: Planner queue ─────────────────────────────────────────────────
437
- # Status for backlog tickets that /clancy:plan fetches from (default: Backlog)
438
- # Only used if Planner role is enabled via CLANCY_ROLES
439
- # CLANCY_PLAN_STATUS="Backlog"
440
-
441
- # After approving a plan, transition the ticket to this status (e.g. "To Do")
442
- # CLANCY_STATUS_PLANNED="To Do"
443
-
444
- # ─── Optional: Skip comments ──────────────────────────────────────────────
445
- # When Clancy skips a ticket (irrelevant/infeasible), post a comment explaining why
446
- # Set to "false" to disable skip comments
447
- # CLANCY_SKIP_COMMENTS=true
448
-
449
- # ─── Optional: Reliable autonomous mode ───────────────────────────────────────
450
- # Max self-healing attempts after verification failure (default: 2, range 0-5)
451
- # CLANCY_FIX_RETRIES=2
452
-
453
- # Per-ticket time limit in minutes (default: 30, 0 to disable)
454
- # CLANCY_TIME_LIMIT=30
455
-
456
- # Prevent accidental commits to the base branch (default: true)
457
- # CLANCY_BRANCH_GUARD=true
458
-
459
- # ─── Optional: Quiet hours ───────────────────────────────────────────────────
460
- # Pause AFK runs during these hours (24h format). Handles overnight windows.
461
- # CLANCY_QUIET_START=22:00
462
- # CLANCY_QUIET_END=06:00
463
-
464
- # ─── Optional: Desktop notifications ─────────────────────────────────────────
465
- # Native OS notifications on ticket completion or error (default: true)
466
- # CLANCY_DESKTOP_NOTIFY=true
467
-
468
- # ─── Optional: Notifications ──────────────────────────────────────────────────
469
- # Webhook URL for Slack or Teams notifications on ticket completion
470
- # CLANCY_NOTIFY_WEBHOOK=https://hooks.slack.com/services/your/webhook/url
471
- ```
472
-
473
- ### GitHub Issues
474
-
475
- ```
476
- # Clancy — GitHub Issues configuration
477
- # Copy this file to .env and fill in your values.
478
- # Never commit .env to version control.
479
-
480
- # ─── GitHub Issues ────────────────────────────────────────────────────────────
481
- GITHUB_TOKEN=ghp_your-personal-access-token
482
- GITHUB_REPO=owner/repo-name
483
-
484
- # Recommended: only pick up issues with this label.
485
- # Without this, Clancy picks up all open issues assigned to you.
486
- # Create the label in GitHub first, then add it to any issue you want Clancy to pick up.
487
- # CLANCY_LABEL="clancy"
488
-
489
- # ─── Planner Queue (optional — requires CLANCY_ROLES to include "planner") ───
490
- # Label for backlog issues that /clancy:plan fetches from (default: needs-refinement)
491
- # CLANCY_PLAN_LABEL="needs-refinement"
492
-
493
- # ─── Git ──────────────────────────────────────────────────────────────────────
494
- # Base integration branch. Clancy branches from here when an issue has no milestone.
495
- # When an issue has a milestone, Clancy auto-creates milestone/{slug} from this branch.
496
- CLANCY_BASE_BRANCH=main
497
-
498
- # ─── PR creation ─────────────────────────────────────────────────────────────
499
- # When an issue has no milestone, Clancy pushes the feature branch and creates a
500
- # PR using your GITHUB_TOKEN above. No extra config needed for GitHub Issues users.
501
-
502
- # ─── Loop ─────────────────────────────────────────────────────────────────────
503
- # Max tickets to process per /clancy:run session (default: 20)
504
- MAX_ITERATIONS=20
505
-
506
- # ─── Model ────────────────────────────────────────────────────────────────────
507
- # Claude model used for each ticket session. Leave unset to use the default.
508
- # Options: claude-opus-4-6 | claude-sonnet-4-6 | claude-haiku-4-5
509
- # CLANCY_MODEL=claude-sonnet-4-6
510
-
511
- # ─── Optional: Figma MCP ──────────────────────────────────────────────────────
512
- # Fetch design specs from Figma when a ticket has a Figma URL in its description
513
- # FIGMA_API_KEY=your-figma-api-key
514
-
515
- # ─── Optional: Playwright visual checks ───────────────────────────────────────
516
- # Run a visual check after implementing UI tickets
517
- # PLAYWRIGHT_ENABLED=true
518
- # PLAYWRIGHT_DEV_COMMAND="yarn dev"
519
- # PLAYWRIGHT_DEV_PORT=5173
520
- # PLAYWRIGHT_STORYBOOK_COMMAND="yarn storybook"
521
- # PLAYWRIGHT_STORYBOOK_PORT=6006
522
- # PLAYWRIGHT_STARTUP_WAIT=15
523
-
524
- # ─── Optional: Pipeline labels ────────────────────────────────────────────────
525
- # Labels that control ticket flow through pipeline stages.
526
- # CLANCY_LABEL_BRIEF marks tickets that have been briefed (awaiting approval).
527
- # CLANCY_LABEL_PLAN marks tickets that need planning.
528
- # CLANCY_LABEL_BUILD marks tickets ready for implementation.
529
- # Deprecated: CLANCY_LABEL (use CLANCY_LABEL_BUILD), CLANCY_PLAN_LABEL (use CLANCY_LABEL_PLAN)
530
- # CLANCY_LABEL_BRIEF="clancy:brief"
531
- # CLANCY_LABEL_PLAN="clancy:plan"
532
- # CLANCY_LABEL_BUILD="clancy:build"
533
-
534
- # ─── Optional: Rework loop ──────────────────────────────────────────────────
535
- # PR-based rework is automatic — when a reviewer leaves inline comments or
536
- # a conversation comment prefixed with "Rework:", Clancy picks it up on the
537
- # next run. No configuration needed.
538
- # CLANCY_MAX_REWORK=3 # Max rework cycles before human intervention (default: 3)
539
-
540
- # ─── Optional: Test-Driven Development ──────────────────────────────────────
541
- # When enabled, Clancy follows red-green-refactor for every behaviour change.
542
- # CLANCY_TDD=true
543
-
544
- # ─── Optional: Grill mode ───────────────────────────────────────────────────
545
- # Controls how /clancy:brief handles clarifying questions before generating a brief.
546
- # "interactive" (default) — asks the human. "afk" — AI-grill resolves autonomously.
547
- # Can also be overridden per-invocation with --afk flag.
548
- # CLANCY_MODE=interactive
549
-
550
- # ─── Optional: Strategist ───────────────────────────────────────────────────
551
- # Default parent epic/milestone for briefs created from text or file input
552
- # CLANCY_BRIEF_EPIC="#42"
553
-
554
- # Auto-set on tickets created by /clancy:brief.
555
- # Only affects ticket creation — does not filter the implementation queue.
556
- # CLANCY_COMPONENT="frontend"
557
-
558
- # ─── Optional: Skip comments ──────────────────────────────────────────────
559
- # When Clancy skips a ticket (irrelevant/infeasible), post a comment explaining why
560
- # Set to "false" to disable skip comments
561
- # CLANCY_SKIP_COMMENTS=true
562
-
563
- # ─── Optional: Reliable autonomous mode ───────────────────────────────────────
564
- # Max self-healing attempts after verification failure (default: 2, range 0-5)
565
- # CLANCY_FIX_RETRIES=2
566
-
567
- # Per-ticket time limit in minutes (default: 30, 0 to disable)
568
- # CLANCY_TIME_LIMIT=30
569
-
570
- # Prevent accidental commits to the base branch (default: true)
571
- # CLANCY_BRANCH_GUARD=true
572
-
573
- # ─── Optional: Notifications ──────────────────────────────────────────────────
574
- # Webhook URL for Slack or Teams notifications on ticket completion
575
- # ─── Optional: Quiet hours ───────────────────────────────────────────────────
576
- # CLANCY_QUIET_START=22:00
577
- # CLANCY_QUIET_END=06:00
578
-
579
- # ─── Optional: Desktop notifications ─────────────────────────────────────────
580
- # CLANCY_DESKTOP_NOTIFY=true
581
-
582
- # ─── Optional: Notifications ──────────────────────────────────────────────────
583
- # CLANCY_NOTIFY_WEBHOOK=https://hooks.slack.com/services/your/webhook/url
584
- ```
585
-
586
- ### Shortcut
587
-
588
- ```
589
- # Clancy — Shortcut configuration
590
- # Copy this file to .env and fill in your values.
591
- # Never commit .env to version control.
592
-
593
- # ─── Shortcut ────────────────────────────────────────────────────────────────
594
- SHORTCUT_API_TOKEN=your-api-token
595
-
596
- # Optional: workflow name (default: auto-detect first workflow)
597
- # SHORTCUT_WORKFLOW=Engineering
598
-
599
- # ─── Git ──────────────────────────────────────────────────────────────────────
600
- CLANCY_BASE_BRANCH=main
601
-
602
- # ─── Loop ─────────────────────────────────────────────────────────────────────
603
- MAX_ITERATIONS=5
604
-
605
- # ─── Optional: Git host (PR creation) ───────────────────────────────────────
606
- # GITHUB_TOKEN=ghp_your-token
607
- # GITLAB_TOKEN=glpat-your-token
608
- # BITBUCKET_USER=your-username
609
- # BITBUCKET_TOKEN=your-app-password
610
-
611
- # ─── Optional: Pipeline labels ────────────────────────────────────────────────
612
- # CLANCY_LABEL_BRIEF="clancy:brief"
613
- # CLANCY_LABEL_PLAN="clancy:plan"
614
- # CLANCY_LABEL_BUILD="clancy:build"
615
-
616
- # ─── Optional: Status transitions ────────────────────────────────────────────
617
- # CLANCY_STATUS_IN_PROGRESS="In Progress"
618
- # CLANCY_STATUS_DONE="Done"
619
- # CLANCY_STATUS_REVIEW="In Review"
620
-
621
- # ─── Optional: Quiet hours ───────────────────────────────────────────────────
622
- # CLANCY_QUIET_START=22:00
623
- # CLANCY_QUIET_END=06:00
624
-
625
- # ─── Optional: Desktop notifications ─────────────────────────────────────────
626
- # CLANCY_DESKTOP_NOTIFY=true
627
-
628
- # ─── Optional: Notifications ──────────────────────────────────────────────────
629
- # CLANCY_NOTIFY_WEBHOOK=https://hooks.slack.com/services/your/webhook/url
630
- ```
631
-
632
- ### Notion
633
-
634
- ```
635
- # Clancy — Notion configuration
636
- # Copy this file to .env and fill in your values.
637
- # Never commit .env to version control.
638
-
639
- # ─── Notion ──────────────────────────────────────────────────────────────────
640
- NOTION_TOKEN=your-integration-token
641
- NOTION_DATABASE_ID=your-database-id-32-char-hex
642
-
643
- # Optional: property name overrides (defaults shown)
644
- # CLANCY_NOTION_STATUS=Status
645
- # CLANCY_NOTION_ASSIGNEE=Assignee
646
-
647
- # ─── Git ──────────────────────────────────────────────────────────────────────
648
- CLANCY_BASE_BRANCH=main
649
-
650
- # ─── Loop ─────────────────────────────────────────────────────────────────────
651
- MAX_ITERATIONS=5
652
-
653
- # ─── Optional: Git host (PR creation) ───────────────────────────────────────
654
- # GITHUB_TOKEN=ghp_your-token
655
- # GITLAB_TOKEN=glpat-your-token
656
- # BITBUCKET_USER=your-username
657
- # BITBUCKET_TOKEN=your-app-password
658
-
659
- # ─── Optional: Pipeline labels ────────────────────────────────────────────────
660
- # CLANCY_LABEL_BRIEF="clancy:brief"
661
- # CLANCY_LABEL_PLAN="clancy:plan"
662
- # CLANCY_LABEL_BUILD="clancy:build"
663
-
664
- # ─── Optional: Quiet hours ───────────────────────────────────────────────────
665
- # CLANCY_QUIET_START=22:00
666
- # CLANCY_QUIET_END=06:00
667
-
668
- # ─── Optional: Desktop notifications ─────────────────────────────────────────
669
- # CLANCY_DESKTOP_NOTIFY=true
670
-
671
- # ─── Optional: Notifications ──────────────────────────────────────────────────
672
- # CLANCY_NOTIFY_WEBHOOK=https://hooks.slack.com/services/your/webhook/url
673
- ```
674
-
675
- ### Azure DevOps
676
-
677
- ```
678
- # Clancy — Azure DevOps configuration
679
- # Copy this file to .env and fill in your values.
680
- # Never commit .env to version control.
681
-
682
- # ─── Azure DevOps ────────────────────────────────────────────────────────────
683
- AZDO_ORG=your-organisation
684
- AZDO_PROJECT=your-project
685
- AZDO_PAT=your-personal-access-token
686
-
687
- # ─── Git ──────────────────────────────────────────────────────────────────────
688
- CLANCY_BASE_BRANCH=main
689
-
690
- # ─── Loop ─────────────────────────────────────────────────────────────────────
691
- MAX_ITERATIONS=5
692
-
693
- # ─── Optional: Git host (PR creation) ───────────────────────────────────────
694
- # GITHUB_TOKEN=ghp_your-token
695
- # GITLAB_TOKEN=glpat-your-token
696
- # BITBUCKET_USER=your-username
697
- # BITBUCKET_TOKEN=your-app-password
698
-
699
- # ─── Optional: Pipeline labels ────────────────────────────────────────────────
700
- # CLANCY_LABEL_BRIEF="clancy:brief"
701
- # CLANCY_LABEL_PLAN="clancy:plan"
702
- # CLANCY_LABEL_BUILD="clancy:build"
703
-
704
- # ─── Optional: Status transitions ────────────────────────────────────────────
705
- # CLANCY_STATUS_IN_PROGRESS="Active"
706
- # CLANCY_STATUS_DONE="Closed"
707
- # CLANCY_STATUS_REVIEW="Resolved"
708
-
709
- # ─── Optional: Quiet hours ───────────────────────────────────────────────────
710
- # CLANCY_QUIET_START=22:00
711
- # CLANCY_QUIET_END=06:00
712
-
713
- # ─── Optional: Desktop notifications ─────────────────────────────────────────
714
- # CLANCY_DESKTOP_NOTIFY=true
715
-
716
- # ─── Optional: Notifications ──────────────────────────────────────────────────
717
- # CLANCY_NOTIFY_WEBHOOK=https://hooks.slack.com/services/your/webhook/url
718
- ```
719
-
720
- ### Linear
721
-
722
- ```
723
- # Clancy — Linear configuration
724
- # Copy this file to .env and fill in your values.
725
- # Never commit .env to version control.
726
-
727
- # ─── Linear ───────────────────────────────────────────────────────────────────
728
- LINEAR_API_KEY=lin_api_your-personal-api-key
729
- LINEAR_TEAM_ID=your-team-uuid
730
-
731
- # Optional: only pick up issues with this label. Recommended for mixed backlogs
732
- # where not every issue is suitable for autonomous implementation (e.g. non-code tasks).
733
- # Create the label in Linear first, then add it to any issue you want Clancy to pick up.
734
- # CLANCY_LABEL=clancy
735
-
736
- # ─── Planner Queue (optional — requires CLANCY_ROLES to include "planner") ───
737
- # State type for issues that /clancy:plan fetches from (default: backlog)
738
- # Valid values: backlog, unstarted, started, completed, canceled, triage
739
- # CLANCY_PLAN_STATE_TYPE="backlog"
740
-
741
- # ─── Git ──────────────────────────────────────────────────────────────────────
742
- # Base integration branch. Clancy branches from here when an issue has no parent.
743
- # When an issue has a parent, Clancy auto-creates epic/{key} from this branch.
744
- CLANCY_BASE_BRANCH=main
745
-
746
- # ─── Loop ─────────────────────────────────────────────────────────────────────
747
- # Max tickets to process per /clancy:run session (default: 20)
748
- MAX_ITERATIONS=20
749
-
750
- # ─── Model ────────────────────────────────────────────────────────────────────
751
- # Claude model used for each ticket session. Leave unset to use the default.
752
- # Options: claude-opus-4-6 | claude-sonnet-4-6 | claude-haiku-4-5
753
- # CLANCY_MODEL=claude-sonnet-4-6
754
-
755
- # ─── Optional: Figma MCP ──────────────────────────────────────────────────────
756
- # Fetch design specs from Figma when a ticket has a Figma URL in its description
757
- # FIGMA_API_KEY=your-figma-api-key
758
-
759
- # ─── Optional: Playwright visual checks ───────────────────────────────────────
760
- # Run a visual check after implementing UI tickets
761
- # PLAYWRIGHT_ENABLED=true
762
- # PLAYWRIGHT_DEV_COMMAND="yarn dev"
763
- # PLAYWRIGHT_DEV_PORT=5173
764
- # PLAYWRIGHT_STORYBOOK_COMMAND="yarn storybook"
765
- # PLAYWRIGHT_STORYBOOK_PORT=6006
766
- # PLAYWRIGHT_STARTUP_WAIT=15
767
-
768
- # ─── Optional: Status transitions ────────────────────────────────────────────
769
- # Move issues automatically when Clancy picks up or completes them.
770
- # Set to the exact workflow state name shown in your Linear team settings.
771
- # "Done" can be any post-implementation state (e.g. "Ready for Review", "In Review").
772
- # CLANCY_STATUS_IN_PROGRESS="In Progress"
773
- # CLANCY_STATUS_DONE="Done"
774
- # CLANCY_STATUS_REVIEW="In Review" # used when creating a PR instead of merging locally
775
-
776
- # ─── Optional: Rework loop ──────────────────────────────────────────────────
777
- # PR-based rework is automatic — when a reviewer leaves inline comments or
778
- # a conversation comment prefixed with "Rework:", Clancy picks it up on the
779
- # next run. No configuration needed.
780
- # CLANCY_MAX_REWORK=3 # Max rework cycles before human intervention (default: 3)
781
-
782
- # ─── Optional: Test-Driven Development ──────────────────────────────────────
783
- # When enabled, Clancy follows red-green-refactor for every behaviour change.
784
- # CLANCY_TDD=true
785
-
786
- # ─── Optional: Grill mode ───────────────────────────────────────────────────
787
- # Controls how /clancy:brief handles clarifying questions before generating a brief.
788
- # "interactive" (default) — asks the human. "afk" — AI-grill resolves autonomously.
789
- # Can also be overridden per-invocation with --afk flag.
790
- # CLANCY_MODE=interactive
791
-
792
- # ─── Optional: Strategist ───────────────────────────────────────────────────
793
- # Default parent epic for briefs created from text or file input
794
- # CLANCY_BRIEF_EPIC="ENG-50"
795
-
796
- # Auto-set on tickets created by /clancy:brief.
797
- # Only affects ticket creation — does not filter the implementation queue.
798
- # CLANCY_COMPONENT="frontend"
799
-
800
- # ─── Optional: Git host (PR creation) ───────────────────────────────────────
801
- # When an issue has no parent, Clancy pushes the feature branch and creates a
802
- # pull request instead of squash-merging locally. Requires a git host token.
803
- # GITHUB_TOKEN=ghp_your-token # if your git host is GitHub
804
- # GITLAB_TOKEN=glpat-your-token # if your git host is GitLab
805
- # BITBUCKET_USER=your-username # if your git host is Bitbucket
806
- # BITBUCKET_TOKEN=your-app-password # if your git host is Bitbucket
807
- # CLANCY_GIT_PLATFORM=gitlab # override auto-detection (github/gitlab/bitbucket)
808
- # CLANCY_GIT_API_URL=https://gitlab.example.com/api/v4 # self-hosted git API base URL
809
-
810
- # ─── Optional: Pipeline labels ────────────────────────────────────────────────
811
- # Labels that control ticket flow through pipeline stages.
812
- # CLANCY_LABEL_BRIEF marks tickets that have been briefed (awaiting approval).
813
- # CLANCY_LABEL_PLAN marks tickets that need planning.
814
- # CLANCY_LABEL_BUILD marks tickets ready for implementation.
815
- # Deprecated: CLANCY_LABEL (use CLANCY_LABEL_BUILD), CLANCY_PLAN_LABEL (use CLANCY_LABEL_PLAN)
816
- # CLANCY_LABEL_BRIEF="clancy:brief"
817
- # CLANCY_LABEL_PLAN="clancy:plan"
818
- # CLANCY_LABEL_BUILD="clancy:build"
819
-
820
- # ─── Optional: Reliable autonomous mode ───────────────────────────────────────
821
- # Max self-healing attempts after verification failure (default: 2, range 0-5)
822
- # CLANCY_FIX_RETRIES=2
823
-
824
- # Per-ticket time limit in minutes (default: 30, 0 to disable)
825
- # CLANCY_TIME_LIMIT=30
826
-
827
- # Prevent accidental commits to the base branch (default: true)
828
- # CLANCY_BRANCH_GUARD=true
829
-
830
- # ─── Optional: Skip comments ──────────────────────────────────────────────
831
- # When Clancy skips a ticket (irrelevant/infeasible), post a comment explaining why
832
- # Set to "false" to disable skip comments
833
- # CLANCY_SKIP_COMMENTS=true
834
-
835
- # ─── Optional: Quiet hours ───────────────────────────────────────────────────
836
- # CLANCY_QUIET_START=22:00
837
- # CLANCY_QUIET_END=06:00
838
-
839
- # ─── Optional: Desktop notifications ─────────────────────────────────────────
840
- # CLANCY_DESKTOP_NOTIFY=true
841
-
842
- # ─── Optional: Notifications ──────────────────────────────────────────────────
843
- # Webhook URL for Slack or Teams notifications on ticket completion
844
- # CLANCY_NOTIFY_WEBHOOK=https://hooks.slack.com/services/your/webhook/url
845
- ```