@grimoire-cc/cli 0.14.0 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/bin.js +15 -5
  2. package/dist/bin.js.map +1 -1
  3. package/dist/commands/add.d.ts.map +1 -1
  4. package/dist/commands/add.js +2 -0
  5. package/dist/commands/add.js.map +1 -1
  6. package/dist/commands/agent-paths.d.ts +11 -0
  7. package/dist/commands/agent-paths.d.ts.map +1 -0
  8. package/dist/commands/agent-paths.js +69 -0
  9. package/dist/commands/agent-paths.js.map +1 -0
  10. package/dist/commands/agent-skills.d.ts +10 -0
  11. package/dist/commands/agent-skills.d.ts.map +1 -0
  12. package/dist/commands/agent-skills.js +159 -0
  13. package/dist/commands/agent-skills.js.map +1 -0
  14. package/dist/commands/config.d.ts +7 -0
  15. package/dist/commands/config.d.ts.map +1 -0
  16. package/dist/commands/config.js +62 -0
  17. package/dist/commands/config.js.map +1 -0
  18. package/dist/commands/list.d.ts.map +1 -1
  19. package/dist/commands/list.js +237 -75
  20. package/dist/commands/list.js.map +1 -1
  21. package/dist/commands/remove.d.ts.map +1 -1
  22. package/dist/commands/remove.js +2 -0
  23. package/dist/commands/remove.js.map +1 -1
  24. package/dist/commands/update.d.ts +2 -2
  25. package/dist/commands/update.d.ts.map +1 -1
  26. package/dist/commands/update.js +29 -14
  27. package/dist/commands/update.js.map +1 -1
  28. package/dist/enforce.d.ts +8 -10
  29. package/dist/enforce.d.ts.map +1 -1
  30. package/dist/enforce.js +38 -17
  31. package/dist/enforce.js.map +1 -1
  32. package/dist/frontmatter.d.ts +16 -0
  33. package/dist/frontmatter.d.ts.map +1 -0
  34. package/dist/frontmatter.js +74 -0
  35. package/dist/frontmatter.js.map +1 -0
  36. package/dist/grimoire-config.d.ts +16 -0
  37. package/dist/grimoire-config.d.ts.map +1 -0
  38. package/dist/grimoire-config.js +63 -0
  39. package/dist/grimoire-config.js.map +1 -0
  40. package/dist/prompt.d.ts.map +1 -1
  41. package/dist/prompt.js +19 -14
  42. package/dist/prompt.js.map +1 -1
  43. package/dist/remove.d.ts +4 -0
  44. package/dist/remove.d.ts.map +1 -1
  45. package/dist/remove.js +10 -0
  46. package/dist/remove.js.map +1 -1
  47. package/dist/resolve.d.ts.map +1 -1
  48. package/dist/resolve.js +12 -5
  49. package/dist/resolve.js.map +1 -1
  50. package/dist/setup.d.ts.map +1 -1
  51. package/dist/setup.js +4 -8
  52. package/dist/setup.js.map +1 -1
  53. package/package.json +1 -1
  54. package/packs/dev-pack/agents/grimoire.code-reviewer.md +0 -1
  55. package/packs/dev-pack/agents/grimoire.tdd-specialist.md +0 -1
  56. package/packs/dev-pack/grimoire.json +1 -1
  57. package/packs/docs-pack/skills/grimoire.business-logic-docs/SKILL.md +0 -1
  58. package/packs/dotnet-pack/agents/grimoire.csharp-code-reviewer.md +0 -1
  59. package/packs/dotnet-pack/skills/grimoire.dotnet-feature-workflow/SKILL.md +0 -1
  60. package/packs/essentials-pack/agents/grimoire.fact-checker.md +0 -1
  61. package/packs/frontend-pack/agents/grimoire.angular-coder.md +193 -0
  62. package/packs/frontend-pack/grimoire.json +7 -0
  63. package/packs/meta-pack/skills/grimoire.context-file-guide/SKILL.md +0 -1
  64. package/packs/meta-pack/skills/grimoire.readme-guide/SKILL.md +0 -1
  65. package/packs/meta-pack/skills/grimoire.skill-developer/SKILL.md +0 -1
  66. package/packs/ts-pack/skills/grimoire.modern-typescript/SKILL.md +0 -1
  67. package/dist/commands/enforce-agent.d.ts +0 -5
  68. package/dist/commands/enforce-agent.d.ts.map +0 -1
  69. package/dist/commands/enforce-agent.js +0 -94
  70. package/dist/commands/enforce-agent.js.map +0 -1
  71. package/dist/version.d.ts +0 -5
  72. package/dist/version.d.ts.map +0 -1
  73. package/dist/version.js +0 -32
  74. package/dist/version.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"enforce.d.ts","sourceRoot":"","sources":["../src/enforce.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAC5C;AAMD,UAAU,SAAS;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AAWD,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAM/D;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAGhF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAS9F;AAMD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAmB1D;AA4BD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAE/E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,SAAS,SAAS,EAAE,EAC7B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,GAC3C,OAAO,CAMT;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CA8C1F;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAiC3D"}
1
+ {"version":3,"file":"enforce.d.ts","sourceRoot":"","sources":["../src/enforce.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAC5C;AAMD,UAAU,SAAS;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AAWD,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAa/D;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAGhF;AAMD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAmB1D;AA4BD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAE/E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,SAAS,SAAS,EAAE,EAC7B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,GAC3C,OAAO,CAMT;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CA8C1F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAkClF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAiC3D"}
package/dist/enforce.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Utilities for the `grimoire enforce-agent` command.
3
- * Manages the enforce flag per agent and the corresponding hook entries in settings.json.
2
+ * Utilities for agent enforcement.
3
+ * Manages enforcement hook entries in settings.json and reads the skills manifest.
4
4
  */
5
5
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
6
6
  import { join } from 'path';
@@ -12,26 +12,17 @@ export function readManifest(projectDir) {
12
12
  if (!existsSync(manifestPath)) {
13
13
  throw new Error(`Manifest not found: ${manifestPath}`);
14
14
  }
15
- return JSON.parse(readFileSync(manifestPath, 'utf-8'));
15
+ const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
16
+ // Strip leftover enforce flags from agent entries (migrated away)
17
+ for (const entry of Object.values(manifest.agents)) {
18
+ delete entry['enforce'];
19
+ }
20
+ return manifest;
16
21
  }
17
22
  export function writeManifest(projectDir, manifest) {
18
23
  const manifestPath = join(projectDir, '.claude', 'skills-manifest.json');
19
24
  writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n');
20
25
  }
21
- /**
22
- * Sets the enforce flag for a named agent in the manifest.
23
- * Throws if the agent has no file_patterns (cannot be enforced without them).
24
- */
25
- export function setEnforce(manifest, agentName, enabled) {
26
- const entry = manifest.agents[agentName];
27
- if (!entry) {
28
- throw new Error(`Agent "${agentName}" not found in manifest`);
29
- }
30
- if (enabled && (!entry.file_patterns || entry.file_patterns.length === 0)) {
31
- throw new Error(`Agent "${agentName}" has no file_patterns — cannot enable enforcement`);
32
- }
33
- manifest.agents[agentName] = { ...entry, enforce: enabled };
34
- }
35
26
  /**
36
27
  * Reads name and description from YAML frontmatter of an agent .md file.
37
28
  */
@@ -132,6 +123,36 @@ export function ensureEnforceHooks(projectDir, agentNames) {
132
123
  settings.hooks = hooks;
133
124
  writeSettings(projectDir, settings);
134
125
  }
126
+ /**
127
+ * Removes SubagentStart/Stop hook entries for a specific agent.
128
+ * Leaves all other hooks (PreToolUse, other agents) intact.
129
+ * No-op if the file or hooks don't exist.
130
+ */
131
+ export function removeSubagentHooksFor(projectDir, agentName) {
132
+ const settings = readSettings(projectDir);
133
+ if (!settings.hooks)
134
+ return;
135
+ const hooks = settings.hooks;
136
+ if (hooks['SubagentStart']) {
137
+ hooks['SubagentStart'] = hooks['SubagentStart'].filter((e) => !(e.matcher === agentName &&
138
+ e.hooks.some((h) => h.command.includes('--subagent-start') && h.command.includes(`--agent=${agentName}`))));
139
+ if (hooks['SubagentStart'].length === 0)
140
+ delete hooks['SubagentStart'];
141
+ }
142
+ if (hooks['SubagentStop']) {
143
+ hooks['SubagentStop'] = hooks['SubagentStop'].filter((e) => !(e.matcher === agentName &&
144
+ e.hooks.some((h) => h.command.includes('--subagent-stop') && h.command.includes(`--agent=${agentName}`))));
145
+ if (hooks['SubagentStop'].length === 0)
146
+ delete hooks['SubagentStop'];
147
+ }
148
+ if (Object.keys(hooks).length > 0) {
149
+ settings.hooks = hooks;
150
+ }
151
+ else {
152
+ delete settings.hooks;
153
+ }
154
+ writeSettings(projectDir, settings);
155
+ }
135
156
  /**
136
157
  * Removes all enforcement-related hook entries from settings.json.
137
158
  * No-op if the file or hooks don't exist.
@@ -1 +1 @@
1
- {"version":3,"file":"enforce.js","sourceRoot":"","sources":["../src/enforce.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enforce.js","sourceRoot":"","sources":["../src/enforce.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Utilities for reading and writing the `skills:` array in agent YAML frontmatter.
3
+ * Pure string functions — no file I/O.
4
+ */
5
+ /**
6
+ * Extracts the `skills:` array from YAML frontmatter in an agent .md file.
7
+ * Returns skill names as a trimmed string array, or `[]` if absent.
8
+ * SYNC: identical logic in packages/router/src/enforce.ts — keep in sync.
9
+ */
10
+ export declare function parseAgentSkills(content: string): string[];
11
+ /**
12
+ * Adds, replaces, or removes the `skills:` block in agent YAML frontmatter.
13
+ * Returns the updated file content with everything else preserved.
14
+ */
15
+ export declare function updateAgentSkills(content: string, skills: string[]): string;
16
+ //# sourceMappingURL=frontmatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAgB1D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CA0C3E"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Utilities for reading and writing the `skills:` array in agent YAML frontmatter.
3
+ * Pure string functions — no file I/O.
4
+ */
5
+ /**
6
+ * Extracts the `skills:` array from YAML frontmatter in an agent .md file.
7
+ * Returns skill names as a trimmed string array, or `[]` if absent.
8
+ * SYNC: identical logic in packages/router/src/enforce.ts — keep in sync.
9
+ */
10
+ export function parseAgentSkills(content) {
11
+ const fm = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
12
+ if (!fm?.[1])
13
+ return [];
14
+ const lines = fm[1].split('\n');
15
+ const skillsIdx = lines.findIndex((l) => /^skills:\s*$/.test(l));
16
+ if (skillsIdx === -1)
17
+ return [];
18
+ const skills = [];
19
+ for (let i = skillsIdx + 1; i < lines.length; i++) {
20
+ const match = lines[i].match(/^\s+-\s+(.+)$/);
21
+ if (!match)
22
+ break;
23
+ const name = match[1].trim();
24
+ if (name)
25
+ skills.push(name);
26
+ }
27
+ return skills;
28
+ }
29
+ /**
30
+ * Adds, replaces, or removes the `skills:` block in agent YAML frontmatter.
31
+ * Returns the updated file content with everything else preserved.
32
+ */
33
+ export function updateAgentSkills(content, skills) {
34
+ const fmMatch = content.match(/^(---\r?\n)([\s\S]*?\r?\n)(---)/);
35
+ if (!fmMatch)
36
+ return content;
37
+ const opening = fmMatch[1];
38
+ const block = fmMatch[2];
39
+ const closing = fmMatch[3];
40
+ const afterFm = content.slice(fmMatch[0].length);
41
+ const lines = block.split('\n');
42
+ // Find existing skills: block boundaries
43
+ const skillsIdx = lines.findIndex((l) => /^skills:\s*$/.test(l));
44
+ let newBlock;
45
+ if (skillsIdx === -1) {
46
+ // No skills: key — insert before end
47
+ if (skills.length === 0)
48
+ return content;
49
+ const skillLines = ['skills:', ...skills.map((s) => ` - ${s}`)];
50
+ // Insert at end of frontmatter lines (last line is empty string from trailing \n)
51
+ const insertAt = lines.length > 0 && lines[lines.length - 1] === '' ? lines.length - 1 : lines.length;
52
+ lines.splice(insertAt, 0, ...skillLines);
53
+ newBlock = lines.join('\n');
54
+ }
55
+ else {
56
+ // Find end of the skills list items
57
+ let endIdx = skillsIdx + 1;
58
+ while (endIdx < lines.length && /^\s+-\s+/.test(lines[endIdx])) {
59
+ endIdx++;
60
+ }
61
+ if (skills.length === 0) {
62
+ // Remove entire skills: block
63
+ lines.splice(skillsIdx, endIdx - skillsIdx);
64
+ }
65
+ else {
66
+ // Replace skills items
67
+ const skillLines = ['skills:', ...skills.map((s) => ` - ${s}`)];
68
+ lines.splice(skillsIdx, endIdx - skillsIdx, ...skillLines);
69
+ }
70
+ newBlock = lines.join('\n');
71
+ }
72
+ return opening + newBlock + closing + afterFm;
73
+ }
74
+ //# sourceMappingURL=frontmatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { InstallItem } from './types.js';
2
+ export interface InstalledEntry {
3
+ version: string;
4
+ pack: string;
5
+ }
6
+ export interface GrimoireConfig {
7
+ enforcement?: boolean;
8
+ installed?: Record<string, InstalledEntry>;
9
+ }
10
+ export declare function readGrimoireConfig(projectDir: string): GrimoireConfig;
11
+ export declare function writeGrimoireConfig(projectDir: string, config: GrimoireConfig): void;
12
+ export declare function recordInstalledVersions(projectDir: string, items: readonly InstallItem[]): void;
13
+ export declare function removeInstalledEntries(projectDir: string, names: readonly string[]): void;
14
+ /** Returns true if `available` semver is strictly newer than `installed`. */
15
+ export declare function isNewer(available: string | undefined, installed: string | undefined): boolean;
16
+ //# sourceMappingURL=grimoire-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grimoire-config.d.ts","sourceRoot":"","sources":["../src/grimoire-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC5C;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAarE;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAIpF;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,SAAS,WAAW,EAAE,GAC5B,IAAI,CAeN;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,IAAI,CAQN;AAED,6EAA6E;AAC7E,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAU7F"}
@@ -0,0 +1,63 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
2
+ import { join } from 'path';
3
+ export function readGrimoireConfig(projectDir) {
4
+ const configPath = join(projectDir, '.claude', 'grimoire.json');
5
+ if (!existsSync(configPath))
6
+ return {};
7
+ try {
8
+ const data = JSON.parse(readFileSync(configPath, 'utf-8'));
9
+ if (data && typeof data === 'object' && !Array.isArray(data)) {
10
+ return data;
11
+ }
12
+ }
13
+ catch {
14
+ // Ignore parse errors — treat as empty
15
+ }
16
+ return {};
17
+ }
18
+ export function writeGrimoireConfig(projectDir, config) {
19
+ const claudeDir = join(projectDir, '.claude');
20
+ mkdirSync(claudeDir, { recursive: true });
21
+ writeFileSync(join(claudeDir, 'grimoire.json'), JSON.stringify(config, null, 2) + '\n');
22
+ }
23
+ export function recordInstalledVersions(projectDir, items) {
24
+ const entries = [];
25
+ for (const item of items) {
26
+ if (item.version && item.pack) {
27
+ entries.push({ name: item.name, version: item.version, pack: item.pack });
28
+ }
29
+ }
30
+ if (entries.length === 0)
31
+ return;
32
+ const config = readGrimoireConfig(projectDir);
33
+ const installed = config.installed ?? {};
34
+ for (const entry of entries) {
35
+ installed[entry.name] = { version: entry.version, pack: entry.pack };
36
+ }
37
+ writeGrimoireConfig(projectDir, { ...config, installed });
38
+ }
39
+ export function removeInstalledEntries(projectDir, names) {
40
+ const config = readGrimoireConfig(projectDir);
41
+ if (!config.installed)
42
+ return;
43
+ for (const name of names) {
44
+ delete config.installed[name];
45
+ }
46
+ writeGrimoireConfig(projectDir, config);
47
+ }
48
+ /** Returns true if `available` semver is strictly newer than `installed`. */
49
+ export function isNewer(available, installed) {
50
+ if (!available || !installed)
51
+ return false;
52
+ const parse = (v) => v.split('.').map((n) => parseInt(n, 10));
53
+ const [a, b] = [parse(available), parse(installed)];
54
+ for (let i = 0; i < Math.max(a.length, b.length); i++) {
55
+ const diff = (a[i] ?? 0) - (b[i] ?? 0);
56
+ if (diff > 0)
57
+ return true;
58
+ if (diff < 0)
59
+ return false;
60
+ }
61
+ return false;
62
+ }
63
+ //# sourceMappingURL=grimoire-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grimoire-config.js","sourceRoot":"","sources":["../src/grimoire-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAa5B,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAY,CAAC;QACtE,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,OAAO,IAAsB,CAAC;QAChC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uCAAuC;IACzC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAkB,EAAE,MAAsB;IAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC9C,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,UAAkB,EAClB,KAA6B;IAE7B,MAAM,OAAO,GAA2D,EAAE,CAAC;IAC3E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEjC,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IACvE,CAAC;IACD,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,UAAkB,EAClB,KAAwB;IAExB,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO;IAE9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,OAAO,CAAC,SAA6B,EAAE,SAA6B;IAClF,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACtE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,IAAI,IAAI,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1B,IAAI,IAAI,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE5F;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAyJvG;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,cAAc,EAAE,SAAS,WAAW,EAAE,GACrC,OAAO,CAAC,kBAAkB,CAAC,CA2C7B"}
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE5F;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA0JvG;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,cAAc,EAAE,SAAS,WAAW,EAAE,GACrC,OAAO,CAAC,kBAAkB,CAAC,CA+C7B"}
package/dist/prompt.js CHANGED
@@ -1,6 +1,5 @@
1
- import { join } from 'path';
2
1
  import * as clack from '@clack/prompts';
3
- import { readFrontmatterVersion, isNewer } from './version.js';
2
+ import { readGrimoireConfig, isNewer } from './grimoire-config.js';
4
3
  /**
5
4
  * Runs a 3-step interactive wizard:
6
5
  * 1. Select packs to install
@@ -39,14 +38,14 @@ export async function runWizard(packs, projectDir) {
39
38
  const chosenPacks = selectedPacks;
40
39
  // Step 2 — Item selection (all pre-selected)
41
40
  const itemOptions = [];
41
+ const config = readGrimoireConfig(projectDir);
42
42
  for (const pack of chosenPacks) {
43
43
  for (const agent of pack.manifest.agents) {
44
44
  const packVersion = agent.version;
45
45
  const label = packVersion
46
46
  ? `[${pack.name} · agent · v${packVersion}] ${agent.name}`
47
47
  : `[${pack.name} · agent] ${agent.name}`;
48
- const installedPath = join(projectDir, '.claude', 'agents', `${agent.name}.md`);
49
- const installedVersion = readFrontmatterVersion(installedPath);
48
+ const installedVersion = config.installed?.[agent.name]?.version;
50
49
  let hint;
51
50
  if (installedVersion !== undefined) {
52
51
  const upToDate = !isNewer(packVersion, installedVersion);
@@ -66,6 +65,7 @@ export async function runWizard(packs, projectDir) {
66
65
  name: agent.name,
67
66
  sourcePath: agent.path,
68
67
  description: agent.description,
68
+ pack: pack.name,
69
69
  ...(packVersion !== undefined && { version: packVersion }),
70
70
  },
71
71
  },
@@ -77,8 +77,7 @@ export async function runWizard(packs, projectDir) {
77
77
  const label = packVersion
78
78
  ? `[${pack.name} · skill · v${packVersion}] ${skill.name}`
79
79
  : `[${pack.name} · skill] ${skill.name}`;
80
- const installedPath = join(projectDir, '.claude', 'skills', skill.name, 'SKILL.md');
81
- const installedVersion = readFrontmatterVersion(installedPath);
80
+ const installedVersion = config.installed?.[skill.name]?.version;
82
81
  let hint;
83
82
  if (installedVersion !== undefined) {
84
83
  const upToDate = !isNewer(packVersion, installedVersion);
@@ -98,6 +97,7 @@ export async function runWizard(packs, projectDir) {
98
97
  name: skill.name,
99
98
  sourcePath: skill.path,
100
99
  description: skill.description,
100
+ pack: pack.name,
101
101
  ...(packVersion !== undefined && { version: packVersion }),
102
102
  },
103
103
  },
@@ -155,15 +155,20 @@ export async function runWizard(packs, projectDir) {
155
155
  export async function runRemoveWizard(installedItems) {
156
156
  const empty = { items: [] };
157
157
  clack.intro('Grimoire Remover');
158
- const itemOptions = installedItems.map((item) => ({
159
- label: item.pack ? `[${item.pack} | ${item.type}] ${item.name}` : `[${item.type}] ${item.name}`,
160
- value: item,
161
- hint: item.description,
162
- }));
163
- const selectedItems = await clack.multiselect({
158
+ const groups = {};
159
+ for (const item of installedItems) {
160
+ const group = item.pack ?? 'other';
161
+ if (!groups[group])
162
+ groups[group] = [];
163
+ groups[group].push({
164
+ label: `[${item.type}] ${item.name}`,
165
+ value: item,
166
+ hint: item.description,
167
+ });
168
+ }
169
+ const selectedItems = await clack.groupMultiselect({
164
170
  message: 'Select items to remove (Space to toggle, Enter to confirm):',
165
- options: itemOptions,
166
- initialValues: [],
171
+ options: groups,
167
172
  required: false,
168
173
  });
169
174
  if (clack.isCancel(selectedItems)) {
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"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"}
package/dist/remove.d.ts CHANGED
@@ -8,6 +8,10 @@ export declare function scanInstalled(projectDir: string): readonly InstallItem[
8
8
  * Removes agent files and skill directories from the project.
9
9
  */
10
10
  export declare function removeItems(items: readonly InstallItem[], projectDir: string): readonly RemoveResult[];
11
+ /**
12
+ * Removes a single item (file + manifest entry) in one call.
13
+ */
14
+ export declare function removeSingleItem(item: InstallItem, projectDir: string): RemoveResult;
11
15
  /**
12
16
  * Converts a PackManifest into InstallItem[] using filesystem-derived names.
13
17
  */
@@ -1 +1 @@
1
- {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../src/remove.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1E;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,WAAW,EAAE,CAwCxE;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,UAAU,EAAE,MAAM,GACjB,SAAS,YAAY,EAAE,CAczB;AAeD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS,WAAW,EAAE,CAsBnF;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE;IACd,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC,GACA,IAAI,CA+CN"}
1
+ {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../src/remove.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1E;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,WAAW,EAAE,CAwCxE;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,UAAU,EAAE,MAAM,GACjB,SAAS,YAAY,EAAE,CAczB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,WAAW,EACjB,UAAU,EAAE,MAAM,GACjB,YAAY,CAKd;AAeD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS,WAAW,EAAE,CAsBnF;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE;IACd,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC,GACA,IAAI,CA+CN"}
package/dist/remove.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync } from 'fs';
2
2
  import { basename, join } from 'path';
3
+ import { removeInstalledEntries } from './grimoire-config.js';
3
4
  /**
4
5
  * Scans the project's .claude/ directory for grimoire-managed agents and skills.
5
6
  * Only items tracked in skills-manifest.json are returned.
@@ -57,6 +58,15 @@ export function removeItems(items, projectDir) {
57
58
  return { item, removed: true };
58
59
  });
59
60
  }
61
+ /**
62
+ * Removes a single item (file + manifest entry) in one call.
63
+ */
64
+ export function removeSingleItem(item, projectDir) {
65
+ const results = removeItems([item], projectDir);
66
+ cleanManifest([item], projectDir);
67
+ removeInstalledEntries(projectDir, [item.name]);
68
+ return results[0];
69
+ }
60
70
  /**
61
71
  * Converts a PackManifest into InstallItem[] using filesystem-derived names.
62
72
  */
@@ -1 +1 @@
1
- {"version":3,"file":"remove.js","sourceRoot":"","sources":["../src/remove.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../src/remove.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAYvD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAO1E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,UAAU,EAAE,CAO3C"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAYvD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAO1E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,UAAU,EAAE,CAa3C"}
package/dist/resolve.js CHANGED
@@ -30,7 +30,7 @@ export function listAvailablePacks(packsDir) {
30
30
  if (!existsSync(dir))
31
31
  return [];
32
32
  return readdirSync(dir, { withFileTypes: true })
33
- .filter((entry) => entry.isDirectory())
33
+ .filter((entry) => entry.isDirectory() && !entry.name.startsWith('.'))
34
34
  .map((entry) => entry.name);
35
35
  }
36
36
  /**
@@ -40,11 +40,18 @@ export function listAvailablePacks(packsDir) {
40
40
  */
41
41
  export function loadAllPacks() {
42
42
  const names = listAvailablePacks();
43
- return names.map((name) => {
43
+ const packs = [];
44
+ for (const name of names) {
44
45
  const dir = resolvePackDir(name);
45
- const manifest = loadManifest(dir);
46
- return { name, dir, manifest };
47
- });
46
+ try {
47
+ const manifest = loadManifest(dir);
48
+ packs.push({ name, dir, manifest });
49
+ }
50
+ catch {
51
+ // Skip directories without a valid grimoire.json
52
+ }
53
+ }
54
+ return packs;
48
55
  }
49
56
  function getPacksDir() {
50
57
  return join(dirname(fileURLToPath(import.meta.url)), '..', 'packs');
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEzC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpE,MAAM,IAAI,KAAK,CACb,SAAS,QAAQ,iCAAiC,IAAI,EAAE,CACzD,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAA6B;IAC9D,MAAM,GAAG,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC;IACtC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhC,OAAO,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SAC7C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEzC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpE,MAAM,IAAI,KAAK,CACb,SAAS,QAAQ,iCAAiC,IAAI,EAAE,CACzD,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAA6B;IAC9D,MAAM,GAAG,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC;IACtC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhC,OAAO,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SAC7C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACrE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,iDAAiD;QACnD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsB/C;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CA6BtD;AAiCD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CA2DlF;AA+CD;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAgBhF"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsB/C;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CA6BtD;AA+BD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAsDlF;AA+CD;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAgBhF"}
package/dist/setup.js CHANGED
@@ -33,7 +33,7 @@ export function mergeSettings(projectDir) {
33
33
  hooks['PreToolUse'] = [];
34
34
  }
35
35
  if (!hasRouterHook(hooks['PreToolUse'])) {
36
- hooks['PreToolUse'].push(makeHookEntry('Edit|Write'));
36
+ hooks['PreToolUse'].push(makeHookEntry('Edit|Write|MultiEdit'));
37
37
  }
38
38
  settings['hooks'] = hooks;
39
39
  writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
@@ -88,21 +88,17 @@ export function mergeManifest(projectDir, packManifest) {
88
88
  manifest.skills.push(entry);
89
89
  }
90
90
  }
91
- // Build set of skill names in this pack for O(1) pairing lookup
92
- const packSkillNames = new Set(packManifest.skills.map((s) => s.name));
93
- // Merge agents — preserve existing entry (enforce flag, file_patterns) when present
91
+ // Merge agents preserve existing entry (file_patterns) when present
94
92
  for (const agent of packManifest.agents) {
95
93
  if (!manifest.agents[agent.name]) {
96
94
  manifest.agents[agent.name] = {};
97
95
  }
96
+ // Strip leftover enforce flags (migrated away)
97
+ delete manifest.agents[agent.name]['enforce'];
98
98
  // Write file_patterns from pack definition when provided
99
99
  if (agent.file_patterns && agent.file_patterns.length > 0) {
100
100
  manifest.agents[agent.name].file_patterns = [...agent.file_patterns];
101
101
  }
102
- // Mark pairing when pack ships a matching <agent-name>-skill
103
- if (packSkillNames.has(`${agent.name}-skill`)) {
104
- manifest.agents[agent.name].has_paired_skill = true;
105
- }
106
102
  }
107
103
  writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n');
108
104
  }