chief-clancy 0.3.9 → 0.5.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.
- package/README.md +9 -3
- package/dist/bundle/clancy-once.js +23 -23
- package/dist/installer/file-ops/file-ops.d.ts +1 -1
- package/dist/installer/file-ops/file-ops.js +1 -1
- package/dist/installer/install.js +121 -26
- package/dist/installer/install.js.map +1 -1
- package/dist/schemas/env.d.ts +16 -0
- package/dist/schemas/env.d.ts.map +1 -1
- package/dist/schemas/env.js +4 -0
- package/dist/schemas/env.js.map +1 -1
- package/package.json +5 -3
- package/src/roles/planner/commands/approve.md +7 -0
- package/src/roles/planner/commands/plan.md +9 -0
- package/src/roles/planner/workflows/approve.md +237 -0
- package/src/roles/planner/workflows/plan.md +399 -0
- package/src/{workflows → roles/reviewer/workflows}/logs.md +14 -6
- package/src/{workflows → roles/reviewer/workflows}/review.md +7 -1
- package/src/{commands → roles/setup/commands}/help.md +25 -6
- package/src/{workflows → roles/setup/workflows}/init.md +83 -39
- package/src/{workflows → roles/setup/workflows}/map-codebase.md +1 -1
- package/src/{workflows → roles/setup/workflows}/settings.md +137 -44
- package/src/{workflows → roles/setup/workflows}/update-docs.md +5 -2
- package/src/{workflows → roles/setup/workflows}/update.md +29 -25
- package/src/templates/.env.example.github +9 -0
- package/src/templates/.env.example.jira +9 -0
- package/src/templates/.env.example.linear +9 -0
- package/src/templates/CLAUDE.md +4 -1
- /package/src/{commands → roles/implementer/commands}/dry-run.md +0 -0
- /package/src/{commands → roles/implementer/commands}/once.md +0 -0
- /package/src/{commands → roles/implementer/commands}/run.md +0 -0
- /package/src/{workflows → roles/implementer/workflows}/once.md +0 -0
- /package/src/{workflows → roles/implementer/workflows}/run.md +0 -0
- /package/src/{commands → roles/reviewer/commands}/logs.md +0 -0
- /package/src/{commands → roles/reviewer/commands}/review.md +0 -0
- /package/src/{commands → roles/reviewer/commands}/status.md +0 -0
- /package/src/{workflows → roles/reviewer/workflows}/status.md +0 -0
- /package/src/{commands → roles/setup/commands}/doctor.md +0 -0
- /package/src/{commands → roles/setup/commands}/init.md +0 -0
- /package/src/{commands → roles/setup/commands}/map-codebase.md +0 -0
- /package/src/{commands → roles/setup/commands}/settings.md +0 -0
- /package/src/{commands → roles/setup/commands}/uninstall.md +0 -0
- /package/src/{commands → roles/setup/commands}/update-docs.md +0 -0
- /package/src/{commands → roles/setup/commands}/update.md +0 -0
- /package/src/{workflows → roles/setup/workflows}/doctor.md +0 -0
- /package/src/{workflows → roles/setup/workflows}/scaffold.md +0 -0
- /package/src/{workflows → roles/setup/workflows}/uninstall.md +0 -0
|
@@ -25,7 +25,7 @@ export declare function fileHash(filePath: string): string;
|
|
|
25
25
|
*
|
|
26
26
|
* @example
|
|
27
27
|
* ```ts
|
|
28
|
-
* copyDir('src/commands', '/home/user/.claude/commands/clancy');
|
|
28
|
+
* copyDir('src/roles/implementer/commands', '/home/user/.claude/commands/clancy');
|
|
29
29
|
* ```
|
|
30
30
|
*/
|
|
31
31
|
export declare function copyDir(src: string, dest: string): void;
|
|
@@ -31,7 +31,7 @@ export function fileHash(filePath) {
|
|
|
31
31
|
*
|
|
32
32
|
* @example
|
|
33
33
|
* ```ts
|
|
34
|
-
* copyDir('src/commands', '/home/user/.claude/commands/clancy');
|
|
34
|
+
* copyDir('src/roles/implementer/commands', '/home/user/.claude/commands/clancy');
|
|
35
35
|
* ```
|
|
36
36
|
*/
|
|
37
37
|
export function copyDir(src, dest) {
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* copies commands and workflows, inlines workflow references for global installs,
|
|
7
7
|
* detects and backs up user-modified files, and registers hooks in Claude settings.
|
|
8
8
|
*/
|
|
9
|
-
import { copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync, } from 'node:fs';
|
|
9
|
+
import { copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, unlinkSync, writeFileSync, } from 'node:fs';
|
|
10
10
|
import { createRequire } from 'node:module';
|
|
11
11
|
import { dirname, join } from 'node:path';
|
|
12
12
|
import { fileURLToPath } from 'node:url';
|
|
@@ -14,6 +14,7 @@ import { copyDir } from '../installer/file-ops/file-ops.js';
|
|
|
14
14
|
import { installHooks } from '../installer/hook-installer/hook-installer.js';
|
|
15
15
|
import { backupModifiedFiles, buildManifest, detectModifiedFiles, } from '../installer/manifest/manifest.js';
|
|
16
16
|
import { ask, choose, closePrompts } from '../installer/prompts/prompts.js';
|
|
17
|
+
import { loadClancyEnv } from '../scripts/shared/env-parser/env-parser.js';
|
|
17
18
|
import { blue, bold, cyan, dim, green, red } from '../utils/ansi/ansi.js';
|
|
18
19
|
// ---------------------------------------------------------------------------
|
|
19
20
|
// Paths
|
|
@@ -22,8 +23,7 @@ const __filename = fileURLToPath(import.meta.url);
|
|
|
22
23
|
const __dirname = dirname(__filename);
|
|
23
24
|
const require = createRequire(import.meta.url);
|
|
24
25
|
const PKG = require('../../package.json');
|
|
25
|
-
const
|
|
26
|
-
const WORKFLOWS_SRC = join(__dirname, '..', '..', 'src', 'workflows');
|
|
26
|
+
const ROLES_SRC = join(__dirname, '..', '..', 'src', 'roles');
|
|
27
27
|
const HOOKS_SRC = join(__dirname, '..', '..', 'hooks');
|
|
28
28
|
const BUNDLE_SRC = join(__dirname, '..', 'bundle');
|
|
29
29
|
const _homeDir = process.env.HOME ?? process.env.USERPROFILE;
|
|
@@ -59,7 +59,7 @@ function printBanner() {
|
|
|
59
59
|
/**
|
|
60
60
|
* Print the post-install success message with available commands.
|
|
61
61
|
*/
|
|
62
|
-
function printSuccess() {
|
|
62
|
+
function printSuccess(enabledRoles) {
|
|
63
63
|
console.log('');
|
|
64
64
|
console.log(green(' ✓ Clancy installed successfully.'));
|
|
65
65
|
console.log('');
|
|
@@ -68,23 +68,56 @@ function printSuccess() {
|
|
|
68
68
|
console.log(` 2. Run: ${cyan('/clancy:init')}`);
|
|
69
69
|
console.log('');
|
|
70
70
|
console.log(' Commands available:');
|
|
71
|
-
|
|
72
|
-
const
|
|
73
|
-
[
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
[
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
71
|
+
const OPTIONAL_GROUPS = new Set(['planner']);
|
|
72
|
+
const groups = [
|
|
73
|
+
[
|
|
74
|
+
'Planner',
|
|
75
|
+
[
|
|
76
|
+
['/clancy:plan', 'Refine backlog tickets into plans'],
|
|
77
|
+
['/clancy:approve', 'Promote plan to ticket description'],
|
|
78
|
+
],
|
|
79
|
+
],
|
|
80
|
+
[
|
|
81
|
+
'Implementer',
|
|
82
|
+
[
|
|
83
|
+
['/clancy:once', 'Pick up one ticket and stop'],
|
|
84
|
+
['/clancy:run', 'Run Clancy in loop mode'],
|
|
85
|
+
['/clancy:dry-run', 'Preview next ticket without changes'],
|
|
86
|
+
],
|
|
87
|
+
],
|
|
88
|
+
[
|
|
89
|
+
'Reviewer',
|
|
90
|
+
[
|
|
91
|
+
['/clancy:review', 'Score next ticket and get recommendations'],
|
|
92
|
+
['/clancy:status', 'Show next tickets without running'],
|
|
93
|
+
['/clancy:logs', 'Display progress log'],
|
|
94
|
+
],
|
|
95
|
+
],
|
|
96
|
+
[
|
|
97
|
+
'Setup & Maintenance',
|
|
98
|
+
[
|
|
99
|
+
['/clancy:init', 'Set up Clancy in your project'],
|
|
100
|
+
['/clancy:map-codebase', 'Scan codebase with 5 parallel agents'],
|
|
101
|
+
['/clancy:settings', 'View and change configuration'],
|
|
102
|
+
['/clancy:doctor', 'Diagnose your setup'],
|
|
103
|
+
['/clancy:update-docs', 'Refresh codebase documentation'],
|
|
104
|
+
['/clancy:update', 'Update Clancy to latest version'],
|
|
105
|
+
['/clancy:uninstall', 'Remove Clancy from your project'],
|
|
106
|
+
['/clancy:help', 'Show all commands'],
|
|
107
|
+
],
|
|
108
|
+
],
|
|
85
109
|
];
|
|
86
|
-
for (const [
|
|
87
|
-
|
|
110
|
+
for (const [group, cmds] of groups) {
|
|
111
|
+
const key = group.toLowerCase();
|
|
112
|
+
if (OPTIONAL_GROUPS.has(key) &&
|
|
113
|
+
enabledRoles !== null &&
|
|
114
|
+
!enabledRoles.has(key))
|
|
115
|
+
continue;
|
|
116
|
+
console.log('');
|
|
117
|
+
console.log(` ${bold(group)}`);
|
|
118
|
+
for (const [cmd, desc] of cmds) {
|
|
119
|
+
console.log(` ${cyan(cmd.padEnd(22))} ${dim(desc)}`);
|
|
120
|
+
}
|
|
88
121
|
}
|
|
89
122
|
console.log('');
|
|
90
123
|
}
|
|
@@ -120,6 +153,67 @@ function inlineWorkflows(commandsDir, workflowsDir) {
|
|
|
120
153
|
}
|
|
121
154
|
}
|
|
122
155
|
// ---------------------------------------------------------------------------
|
|
156
|
+
// Role directory copying
|
|
157
|
+
// ---------------------------------------------------------------------------
|
|
158
|
+
/** Roles that are always installed regardless of CLANCY_ROLES. */
|
|
159
|
+
const CORE_ROLES = new Set(['implementer', 'reviewer', 'setup']);
|
|
160
|
+
/**
|
|
161
|
+
* Parse the CLANCY_ROLES env var from `.clancy/.env` in the current project.
|
|
162
|
+
*
|
|
163
|
+
* Returns a Set of enabled optional role names, or null if no `.clancy/.env`
|
|
164
|
+
* exists yet (first install — install all roles as a safe default).
|
|
165
|
+
*
|
|
166
|
+
* When `.clancy/.env` exists but CLANCY_ROLES is unset or empty, returns an
|
|
167
|
+
* empty Set so optional roles are truly opt-in.
|
|
168
|
+
*/
|
|
169
|
+
function parseEnabledRoles() {
|
|
170
|
+
const env = loadClancyEnv(process.cwd());
|
|
171
|
+
if (!env)
|
|
172
|
+
return null;
|
|
173
|
+
const roles = env.CLANCY_ROLES;
|
|
174
|
+
if (!roles)
|
|
175
|
+
return new Set();
|
|
176
|
+
return new Set(roles
|
|
177
|
+
.split(',')
|
|
178
|
+
.map((r) => r.trim().toLowerCase())
|
|
179
|
+
.filter(Boolean));
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Copy files from role subdirectories into a flat destination directory.
|
|
183
|
+
*
|
|
184
|
+
* Walks `src/roles/{role}/{subdir}/` for each role and copies all files
|
|
185
|
+
* flat into `dest`. Core roles (implementer, reviewer, setup) are always
|
|
186
|
+
* copied. Optional roles (planner, etc.) are only copied if listed in
|
|
187
|
+
* the CLANCY_ROLES env var, or if no .clancy/.env exists yet (first install).
|
|
188
|
+
*
|
|
189
|
+
* @param rolesDir - The roles source directory (`src/roles/`).
|
|
190
|
+
* @param subdir - The subdirectory within each role (`commands` or `workflows`).
|
|
191
|
+
* @param dest - The flat destination directory.
|
|
192
|
+
* @param enabledRoles - Set of enabled optional roles, or null to install all (first install).
|
|
193
|
+
*/
|
|
194
|
+
function copyRoleFiles(rolesDir, subdir, dest, enabledRoles) {
|
|
195
|
+
mkdirSync(dest, { recursive: true });
|
|
196
|
+
const roles = readdirSync(rolesDir, { withFileTypes: true }).filter((d) => d.isDirectory());
|
|
197
|
+
for (const role of roles) {
|
|
198
|
+
const srcDir = join(rolesDir, role.name, subdir);
|
|
199
|
+
if (!existsSync(srcDir))
|
|
200
|
+
continue;
|
|
201
|
+
// Core roles always install; optional roles need explicit opt-in
|
|
202
|
+
if (!CORE_ROLES.has(role.name) && enabledRoles !== null) {
|
|
203
|
+
if (!enabledRoles.has(role.name)) {
|
|
204
|
+
// Remove previously-installed files for disabled optional roles
|
|
205
|
+
for (const file of readdirSync(srcDir)) {
|
|
206
|
+
const target = join(dest, file);
|
|
207
|
+
if (existsSync(target))
|
|
208
|
+
unlinkSync(target);
|
|
209
|
+
}
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
copyDir(srcDir, dest);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// ---------------------------------------------------------------------------
|
|
123
217
|
// CLI flag parsing
|
|
124
218
|
// ---------------------------------------------------------------------------
|
|
125
219
|
/**
|
|
@@ -178,8 +272,7 @@ async function main() {
|
|
|
178
272
|
}
|
|
179
273
|
// Validate source directories — guards against corrupted npm package
|
|
180
274
|
for (const [label, src] of [
|
|
181
|
-
['
|
|
182
|
-
['Workflows', WORKFLOWS_SRC],
|
|
275
|
+
['Roles', ROLES_SRC],
|
|
183
276
|
['Runtime bundles', BUNDLE_SRC],
|
|
184
277
|
]) {
|
|
185
278
|
if (!existsSync(src)) {
|
|
@@ -237,9 +330,11 @@ async function main() {
|
|
|
237
330
|
console.log(green(`\n ✓ ${allModified.length} modified file(s) backed up to local-patches/`));
|
|
238
331
|
}
|
|
239
332
|
}
|
|
240
|
-
// Copy commands and workflows
|
|
241
|
-
|
|
242
|
-
|
|
333
|
+
// Copy commands and workflows from role directories (flat output)
|
|
334
|
+
// Global installs always include all roles (no per-project .env to read)
|
|
335
|
+
const enabledRoles = dest === GLOBAL_DEST ? null : parseEnabledRoles();
|
|
336
|
+
copyRoleFiles(ROLES_SRC, 'commands', dest, enabledRoles);
|
|
337
|
+
copyRoleFiles(ROLES_SRC, 'workflows', workflowsDest, enabledRoles);
|
|
243
338
|
// Inline workflows for global installs
|
|
244
339
|
if (dest === GLOBAL_DEST) {
|
|
245
340
|
inlineWorkflows(dest, workflowsDest);
|
|
@@ -268,7 +363,7 @@ async function main() {
|
|
|
268
363
|
claudeConfigDir,
|
|
269
364
|
hooksSourceDir: HOOKS_SRC,
|
|
270
365
|
});
|
|
271
|
-
printSuccess();
|
|
366
|
+
printSuccess(enabledRoles);
|
|
272
367
|
}
|
|
273
368
|
catch (err) {
|
|
274
369
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/installer/install.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/installer/install.ts"],"names":[],"mappings":"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"}
|
package/dist/schemas/env.d.ts
CHANGED
|
@@ -14,6 +14,10 @@ export declare const sharedEnvSchema: z.ZodMiniObject<{
|
|
|
14
14
|
MAX_ITERATIONS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
15
15
|
PLAYWRIGHT_ENABLED: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
16
16
|
PLAYWRIGHT_DEV_PORT: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
17
|
+
CLANCY_ROLES: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
18
|
+
CLANCY_PLAN_STATUS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
19
|
+
CLANCY_PLAN_LABEL: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
20
|
+
CLANCY_PLAN_STATE_TYPE: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
17
21
|
}, z.core.$strip>;
|
|
18
22
|
export declare const jiraEnvSchema: z.ZodMiniObject<{
|
|
19
23
|
CLANCY_BASE_BRANCH: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
@@ -25,6 +29,10 @@ export declare const jiraEnvSchema: z.ZodMiniObject<{
|
|
|
25
29
|
MAX_ITERATIONS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
26
30
|
PLAYWRIGHT_ENABLED: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
27
31
|
PLAYWRIGHT_DEV_PORT: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
32
|
+
CLANCY_ROLES: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
33
|
+
CLANCY_PLAN_STATUS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
34
|
+
CLANCY_PLAN_LABEL: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
35
|
+
CLANCY_PLAN_STATE_TYPE: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
28
36
|
JIRA_BASE_URL: z.ZodMiniString<string>;
|
|
29
37
|
JIRA_USER: z.ZodMiniString<string>;
|
|
30
38
|
JIRA_API_TOKEN: z.ZodMiniString<string>;
|
|
@@ -42,6 +50,10 @@ export declare const githubEnvSchema: z.ZodMiniObject<{
|
|
|
42
50
|
MAX_ITERATIONS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
43
51
|
PLAYWRIGHT_ENABLED: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
44
52
|
PLAYWRIGHT_DEV_PORT: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
53
|
+
CLANCY_ROLES: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
54
|
+
CLANCY_PLAN_STATUS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
55
|
+
CLANCY_PLAN_LABEL: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
56
|
+
CLANCY_PLAN_STATE_TYPE: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
45
57
|
GITHUB_TOKEN: z.ZodMiniString<string>;
|
|
46
58
|
GITHUB_REPO: z.ZodMiniString<string>;
|
|
47
59
|
}, z.core.$strip>;
|
|
@@ -55,6 +67,10 @@ export declare const linearEnvSchema: z.ZodMiniObject<{
|
|
|
55
67
|
MAX_ITERATIONS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
56
68
|
PLAYWRIGHT_ENABLED: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
57
69
|
PLAYWRIGHT_DEV_PORT: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
70
|
+
CLANCY_ROLES: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
71
|
+
CLANCY_PLAN_STATUS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
72
|
+
CLANCY_PLAN_LABEL: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
73
|
+
CLANCY_PLAN_STATE_TYPE: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
58
74
|
LINEAR_API_KEY: z.ZodMiniString<string>;
|
|
59
75
|
LINEAR_TEAM_ID: z.ZodMiniString<string>;
|
|
60
76
|
}, z.core.$strip>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/schemas/env.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAU9B,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/schemas/env.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAU9B,eAAO,MAAM,eAAe;;;;;;;;;;;;;;iBAc1B,CAAC;AAIH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;iBAOxB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;iBAG1B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;iBAG1B,CAAC;AAIH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAIxD,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAClC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,SAAS,CAAA;CAAE,GACtC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,SAAS,CAAA;CAAE,CAAC"}
|
package/dist/schemas/env.js
CHANGED
|
@@ -19,6 +19,10 @@ export const sharedEnvSchema = z.object({
|
|
|
19
19
|
MAX_ITERATIONS: z.optional(z.string()),
|
|
20
20
|
PLAYWRIGHT_ENABLED: z.optional(z.string()),
|
|
21
21
|
PLAYWRIGHT_DEV_PORT: z.optional(z.string()),
|
|
22
|
+
CLANCY_ROLES: z.optional(z.string()),
|
|
23
|
+
CLANCY_PLAN_STATUS: z.optional(z.string()),
|
|
24
|
+
CLANCY_PLAN_LABEL: z.optional(z.string()),
|
|
25
|
+
CLANCY_PLAN_STATE_TYPE: z.optional(z.string()),
|
|
22
26
|
});
|
|
23
27
|
// ─── Board-specific schemas ──────────────────────────────────────────────────
|
|
24
28
|
export const jiraEnvSchema = z.extend(sharedEnvSchema, {
|
package/dist/schemas/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/schemas/env.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAE9B,4DAA4D;AAC5D,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAElD,2BAA2B;AAC3B,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAE5D,gFAAgF;AAEhF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1C,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,qBAAqB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7C,yBAAyB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjD,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1C,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACtC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1C,mBAAmB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/schemas/env.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAE9B,4DAA4D;AAC5D,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAElD,2BAA2B;AAC3B,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAE5D,gFAAgF;AAEhF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1C,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,qBAAqB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7C,yBAAyB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjD,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1C,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACtC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1C,mBAAmB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3C,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1C,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzC,sBAAsB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC/C,CAAC,CAAC;AAEH,gFAAgF;AAEhF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE;IACrD,aAAa,EAAE,OAAO;IACtB,SAAS,EAAE,QAAQ;IACnB,cAAc,EAAE,QAAQ;IACxB,gBAAgB,EAAE,QAAQ;IAC1B,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzC,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC1C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE;IACvD,YAAY,EAAE,QAAQ;IACtB,WAAW,EAAE,QAAQ;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE;IACvD,cAAc,EAAE,QAAQ;IACxB,cAAc,EAAE,QAAQ;CACzB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chief-clancy",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Autonomous, board-driven development for Claude Code — scaffolds docs, integrates Kanban boards, runs tickets in a loop.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude",
|
|
@@ -31,8 +31,7 @@
|
|
|
31
31
|
"files": [
|
|
32
32
|
"dist/",
|
|
33
33
|
"hooks/",
|
|
34
|
-
"src/
|
|
35
|
-
"src/workflows/",
|
|
34
|
+
"src/roles/",
|
|
36
35
|
"src/agents/",
|
|
37
36
|
"src/templates/",
|
|
38
37
|
"registry/"
|
|
@@ -61,6 +60,9 @@
|
|
|
61
60
|
"engines": {
|
|
62
61
|
"node": ">=22.0.0"
|
|
63
62
|
},
|
|
63
|
+
"overrides": {
|
|
64
|
+
"tinyexec": "1.0.2"
|
|
65
|
+
},
|
|
64
66
|
"devDependencies": {
|
|
65
67
|
"@eslint/js": "^10.0.1",
|
|
66
68
|
"@trivago/prettier-plugin-sort-imports": "^6.0.2",
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# /clancy:approve
|
|
2
|
+
|
|
3
|
+
Promote an approved Clancy plan to the ticket description. Requires a ticket key argument (e.g. `/clancy:approve PROJ-123`).
|
|
4
|
+
|
|
5
|
+
@.claude/clancy/workflows/approve.md
|
|
6
|
+
|
|
7
|
+
Follow the approve workflow above. Fetch the plan comment, confirm with the user, and append it to the ticket description.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# /clancy:plan
|
|
2
|
+
|
|
3
|
+
Fetch backlog tickets from the board, explore the codebase, and generate structured implementation plans. Plans are posted as comments on the ticket for human review.
|
|
4
|
+
|
|
5
|
+
Accepts an optional numeric argument for batch mode (`/clancy:plan 3`) and `--force` to re-plan tickets that already have a plan.
|
|
6
|
+
|
|
7
|
+
@.claude/clancy/workflows/plan.md
|
|
8
|
+
|
|
9
|
+
Follow the plan workflow above. For each ticket: run the feasibility scan, explore the codebase, generate the plan, and post it as a comment. Do not implement anything — planning only.
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
# Clancy Approve Workflow
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Promote an approved Clancy plan from a ticket comment to the ticket description. The plan is appended below the existing description, never replacing it.
|
|
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.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Step 2 — Parse argument
|
|
22
|
+
|
|
23
|
+
The user must provide a ticket key as an argument (e.g. `/clancy:approve PROJ-123`).
|
|
24
|
+
|
|
25
|
+
If no key is provided:
|
|
26
|
+
```
|
|
27
|
+
Usage: /clancy:approve PROJ-123
|
|
28
|
+
```
|
|
29
|
+
Stop.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Step 3 — Fetch the plan comment
|
|
34
|
+
|
|
35
|
+
Detect board from `.clancy/.env` and fetch comments for the specified ticket.
|
|
36
|
+
|
|
37
|
+
### Jira
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
RESPONSE=$(curl -s \
|
|
41
|
+
-u "$JIRA_USER:$JIRA_API_TOKEN" \
|
|
42
|
+
-H "Accept: application/json" \
|
|
43
|
+
"$JIRA_BASE_URL/rest/api/3/issue/$TICKET_KEY/comment")
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### GitHub
|
|
47
|
+
|
|
48
|
+
First, determine the issue number from the ticket key (strip the `#` prefix if present):
|
|
49
|
+
|
|
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/$ISSUE_NUMBER/comments")
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Linear
|
|
58
|
+
|
|
59
|
+
```graphql
|
|
60
|
+
query {
|
|
61
|
+
issue(id: "<issue-id>") {
|
|
62
|
+
id identifier title description
|
|
63
|
+
comments { nodes { body createdAt } }
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
For Linear, the user provides the issue identifier (e.g. `ENG-42`). Look up the issue by identifier to get the internal ID and comments:
|
|
69
|
+
|
|
70
|
+
```graphql
|
|
71
|
+
query {
|
|
72
|
+
issueSearch(query: "$IDENTIFIER", first: 5) {
|
|
73
|
+
nodes {
|
|
74
|
+
id identifier title description
|
|
75
|
+
comments { nodes { body createdAt } }
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Important:** `issueSearch` is a fuzzy text search. After fetching results, verify the returned issue's `identifier` field exactly matches the provided key (case-insensitive). If no exact match is found in the results, report: `❌ Issue {KEY} not found. Check the identifier and try again.`
|
|
82
|
+
|
|
83
|
+
Search the comments for the most recent one containing `## Clancy Implementation Plan`.
|
|
84
|
+
|
|
85
|
+
If no plan comment is found:
|
|
86
|
+
```
|
|
87
|
+
❌ No Clancy plan found for {KEY}. Run /clancy:plan first.
|
|
88
|
+
```
|
|
89
|
+
Stop.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Step 3b — Check for existing plan in description
|
|
94
|
+
|
|
95
|
+
Before confirming, check if the ticket description already contains `## Clancy Implementation Plan`.
|
|
96
|
+
|
|
97
|
+
If it does:
|
|
98
|
+
```
|
|
99
|
+
⚠️ This ticket's description already contains a Clancy plan.
|
|
100
|
+
Continuing will add a duplicate.
|
|
101
|
+
|
|
102
|
+
[1] Continue anyway
|
|
103
|
+
[2] Cancel
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
If the user picks [2], stop: `Cancelled. No changes made.`
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Step 4 — Confirm
|
|
111
|
+
|
|
112
|
+
Display a summary and ask for confirmation:
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
🚨 Clancy — Approve
|
|
116
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
117
|
+
|
|
118
|
+
[{KEY}] {Title}
|
|
119
|
+
Size: {S/M/L} | {N} affected files
|
|
120
|
+
Planned: {date from plan}
|
|
121
|
+
|
|
122
|
+
Promote this plan to the ticket description? [Y/n]
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
If the user declines, stop:
|
|
126
|
+
```
|
|
127
|
+
Cancelled. No changes made.
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Step 5 — Update ticket description
|
|
133
|
+
|
|
134
|
+
Append the plan below the existing description with a separator. Never overwrite the original description.
|
|
135
|
+
|
|
136
|
+
The updated description follows this format:
|
|
137
|
+
```
|
|
138
|
+
{existing description}
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
{full plan content}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Jira — PUT issue
|
|
146
|
+
|
|
147
|
+
Fetch the current description first:
|
|
148
|
+
```bash
|
|
149
|
+
CURRENT=$(curl -s \
|
|
150
|
+
-u "$JIRA_USER:$JIRA_API_TOKEN" \
|
|
151
|
+
-H "Accept: application/json" \
|
|
152
|
+
"$JIRA_BASE_URL/rest/api/3/issue/$TICKET_KEY?fields=description")
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Merge the existing ADF description with a `rule` node (horizontal rule) and the plan content as new ADF nodes. Then update:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
curl -s \
|
|
159
|
+
-u "$JIRA_USER:$JIRA_API_TOKEN" \
|
|
160
|
+
-X PUT \
|
|
161
|
+
-H "Content-Type: application/json" \
|
|
162
|
+
-H "Accept: application/json" \
|
|
163
|
+
"$JIRA_BASE_URL/rest/api/3/issue/$TICKET_KEY" \
|
|
164
|
+
-d '{"fields": {"description": <merged ADF>}}'
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
If ADF construction fails for the plan content, wrap the plan in a `codeBlock` node as fallback.
|
|
168
|
+
|
|
169
|
+
### GitHub — PATCH issue
|
|
170
|
+
|
|
171
|
+
Fetch the current body:
|
|
172
|
+
```bash
|
|
173
|
+
CURRENT=$(curl -s \
|
|
174
|
+
-H "Authorization: Bearer $GITHUB_TOKEN" \
|
|
175
|
+
-H "X-GitHub-Api-Version: 2022-11-28" \
|
|
176
|
+
"https://api.github.com/repos/$GITHUB_REPO/issues/$ISSUE_NUMBER")
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Append the plan:
|
|
180
|
+
```bash
|
|
181
|
+
curl -s \
|
|
182
|
+
-H "Authorization: Bearer $GITHUB_TOKEN" \
|
|
183
|
+
-H "X-GitHub-Api-Version: 2022-11-28" \
|
|
184
|
+
-X PATCH \
|
|
185
|
+
"https://api.github.com/repos/$GITHUB_REPO/issues/$ISSUE_NUMBER" \
|
|
186
|
+
-d '{"body": "<existing body>\n\n---\n\n<plan>"}'
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### Linear — issueUpdate mutation
|
|
190
|
+
|
|
191
|
+
Fetch the current description:
|
|
192
|
+
```graphql
|
|
193
|
+
query { issue(id: "$ISSUE_ID") { description } }
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Update with appended plan:
|
|
197
|
+
```graphql
|
|
198
|
+
mutation {
|
|
199
|
+
issueUpdate(
|
|
200
|
+
id: "$ISSUE_ID"
|
|
201
|
+
input: { description: "<existing>\n\n---\n\n<plan>" }
|
|
202
|
+
) { success }
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Step 6 — Confirm and log
|
|
209
|
+
|
|
210
|
+
On success:
|
|
211
|
+
```
|
|
212
|
+
✅ Plan promoted to description for [{KEY}].
|
|
213
|
+
|
|
214
|
+
Move [{KEY}] to your implementation queue (e.g. "To Do") so /clancy:once picks it up.
|
|
215
|
+
|
|
216
|
+
"Book 'em, Lou." — The ticket is ready for /clancy:once.
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Append to `.clancy/progress.txt`:
|
|
220
|
+
```
|
|
221
|
+
YYYY-MM-DD HH:MM | {KEY} | APPROVE | —
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
On failure:
|
|
225
|
+
```
|
|
226
|
+
❌ Failed to update description for [{KEY}]. Check your board permissions.
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Notes
|
|
232
|
+
|
|
233
|
+
- This command only appends — it never overwrites the existing ticket description
|
|
234
|
+
- If the ticket has multiple plan comments, the most recent one is used
|
|
235
|
+
- The plan content is taken verbatim from the comment — no regeneration
|
|
236
|
+
- Step 3b checks for existing plans in the description to prevent accidental duplication
|
|
237
|
+
- The ticket key is case-insensitive — accept `PROJ-123`, `proj-123`, or `#123` (GitHub)
|