@grimoire-cc/cli 0.8.1 → 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 (61) hide show
  1. package/dist/bin.js +11 -0
  2. package/dist/bin.js.map +1 -1
  3. package/dist/commands/add.js +1 -1
  4. package/dist/commands/add.js.map +1 -1
  5. package/dist/commands/update.d.ts +13 -0
  6. package/dist/commands/update.d.ts.map +1 -0
  7. package/dist/commands/update.js +108 -0
  8. package/dist/commands/update.js.map +1 -0
  9. package/dist/manifest.js +5 -1
  10. package/dist/manifest.js.map +1 -1
  11. package/dist/prompt.d.ts +1 -1
  12. package/dist/prompt.d.ts.map +1 -1
  13. package/dist/prompt.js +41 -5
  14. package/dist/prompt.js.map +1 -1
  15. package/dist/types.d.ts +3 -0
  16. package/dist/types.d.ts.map +1 -1
  17. package/dist/version.d.ts +5 -0
  18. package/dist/version.d.ts.map +1 -0
  19. package/dist/version.js +32 -0
  20. package/dist/version.js.map +1 -0
  21. package/package.json +1 -1
  22. package/packs/dev-pack/agents/{gr.code-reviewer.md → grimoire.code-reviewer.md} +1 -0
  23. package/packs/dev-pack/agents/{gr.tdd-specialist.md → grimoire.tdd-specialist.md} +1 -0
  24. package/packs/dev-pack/grimoire.json +10 -6
  25. package/packs/dev-pack/skills/{gr.conventional-commit → grimoire.conventional-commit}/SKILL.md +1 -0
  26. package/packs/dev-pack/skills/{gr.tdd-specialist → grimoire.tdd-specialist}/SKILL.md +1 -0
  27. package/packs/docs-pack/grimoire.json +2 -1
  28. package/packs/docs-pack/skills/{gr.business-logic-docs → grimoire.business-logic-docs}/SKILL.md +1 -0
  29. package/packs/dotnet-pack/agents/{gr.csharp-code-reviewer.md → grimoire.csharp-code-reviewer.md} +1 -0
  30. package/packs/dotnet-pack/agents/{gr.csharp-coder.md → grimoire.csharp-coder.md} +1 -0
  31. package/packs/dotnet-pack/agents/{gr.dotnet-architect.md → grimoire.dotnet-architect.md} +1 -0
  32. package/packs/dotnet-pack/agents/{gr.dotnet-unit-test-writer.md → grimoire.dotnet-unit-test-writer.md} +1 -0
  33. package/packs/dotnet-pack/grimoire.json +15 -10
  34. package/packs/dotnet-pack/skills/{gr.dotnet-feature-workflow → grimoire.dotnet-feature-workflow}/SKILL.md +1 -0
  35. package/packs/essentials-pack/agents/{gr.fact-checker.md → grimoire.fact-checker.md} +1 -0
  36. package/packs/essentials-pack/grimoire.json +3 -2
  37. package/packs/meta-pack/grimoire.json +6 -3
  38. package/packs/meta-pack/skills/{gr.context-file-guide → grimoire.context-file-guide}/SKILL.md +1 -0
  39. package/packs/meta-pack/skills/{gr.readme-guide → grimoire.readme-guide}/SKILL.md +1 -0
  40. package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/SKILL.md +1 -0
  41. package/packs/ts-pack/grimoire.json +2 -1
  42. package/packs/ts-pack/skills/{gr.modern-typescript → grimoire.modern-typescript}/SKILL.md +1 -0
  43. /package/packs/dev-pack/skills/{gr.tdd-specialist → grimoire.tdd-specialist}/reference/anti-patterns.md +0 -0
  44. /package/packs/dev-pack/skills/{gr.tdd-specialist → grimoire.tdd-specialist}/reference/language-frameworks.md +0 -0
  45. /package/packs/dev-pack/skills/{gr.tdd-specialist → grimoire.tdd-specialist}/reference/tdd-workflow-patterns.md +0 -0
  46. /package/packs/docs-pack/skills/{gr.business-logic-docs → grimoire.business-logic-docs}/references/audit-checklist.md +0 -0
  47. /package/packs/docs-pack/skills/{gr.business-logic-docs → grimoire.business-logic-docs}/references/tier2-template.md +0 -0
  48. /package/packs/meta-pack/skills/{gr.context-file-guide → grimoire.context-file-guide}/scripts/validate-context-file.sh +0 -0
  49. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/examples/brand-guidelines.md +0 -0
  50. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/examples/financial-analysis.md +0 -0
  51. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/reference/best-practices.md +0 -0
  52. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/reference/file-organization.md +0 -0
  53. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/reference/patterns.md +0 -0
  54. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/reference/yaml-spec.md +0 -0
  55. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/scripts/create-skill.sh +0 -0
  56. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/scripts/validate-skill.py +0 -0
  57. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/templates/basic-skill.md +0 -0
  58. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/templates/domain-skill.md +0 -0
  59. /package/packs/ts-pack/skills/{gr.modern-typescript → grimoire.modern-typescript}/reference/modern-features.md +0 -0
  60. /package/packs/ts-pack/skills/{gr.modern-typescript → grimoire.modern-typescript}/reference/patterns-and-idioms.md +0 -0
  61. /package/packs/ts-pack/skills/{gr.modern-typescript → grimoire.modern-typescript}/reference/type-system.md +0 -0
package/dist/bin.js CHANGED
@@ -3,6 +3,7 @@ import { createRequire } from 'node:module';
3
3
  import { defineCommand, runMain } from 'citty';
4
4
  import { runAdd } from './commands/add.js';
5
5
  import { runRemoveInteractive } from './commands/remove.js';
6
+ import { runUpdate } from './commands/update.js';
6
7
  import { runLogs } from './commands/logs.js';
7
8
  const require = createRequire(import.meta.url);
8
9
  const { version } = require('../package.json');
@@ -24,6 +25,15 @@ const removeCommand = defineCommand({
24
25
  await runRemoveInteractive(process.cwd());
25
26
  },
26
27
  });
28
+ const updateCommand = defineCommand({
29
+ meta: {
30
+ name: 'update',
31
+ description: 'Check for updates to installed agents and skills',
32
+ },
33
+ async run() {
34
+ await runUpdate(process.cwd());
35
+ },
36
+ });
27
37
  const logsCommand = defineCommand({
28
38
  meta: {
29
39
  name: 'logs',
@@ -64,6 +74,7 @@ const main = defineCommand({
64
74
  subCommands: {
65
75
  add: addCommand,
66
76
  remove: removeCommand,
77
+ update: updateCommand,
67
78
  logs: logsCommand,
68
79
  },
69
80
  });
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,MAAM,UAAU,GAAG,aAAa,CAAC;IAC/B,IAAI,EAAE;QACJ,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,sEAAsE;KACpF;IACD,KAAK,CAAC,GAAG;QACP,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,aAAa,CAAC;IAClC,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kDAAkD;KAChE;IACD,KAAK,CAAC,GAAG;QACP,MAAM,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,aAAa,CAAC;IAChC,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,6CAA6C;KAC3D;IACD,IAAI,EAAE;QACJ,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,+DAA+D;SAC7E;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,yCAAyC;SACvD;KACF;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;YAC1C,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAChD,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,0CAA0C,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG,aAAa,CAAC;IACzB,IAAI,EAAE;QACJ,IAAI,EAAE,UAAU;QAChB,OAAO;QACP,WAAW,EAAE,wDAAwD;KACtE;IACD,WAAW,EAAE;QACX,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,aAAa;QACrB,IAAI,EAAE,WAAW;KAClB;CACF,CAAC,CAAC;AAEH,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ export async function runAdd(cwd) {
17
17
  console.log('No packs available.');
18
18
  return { packs: [], results: [] };
19
19
  }
20
- const wizard = await runWizard(packs);
20
+ const wizard = await runWizard(packs, projectDir);
21
21
  if (wizard.selections.length === 0) {
22
22
  return { packs: [], results: [] };
23
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,GAAwB;IACnD,MAAM,UAAU,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAE7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IAEtC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,UAAU,GAAoB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAA6C,EAAE,CAAC;IAE9D,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC1E,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI;YAC7B,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO;SACpC,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAChC,WAAW,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAmB;QAC9B,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,UAAU;KACpB,CAAC;IAEF,YAAY,CAAC,OAAO,CAAC,CAAC;IAEtB,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,GAAwB;IACnD,MAAM,UAAU,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAE7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAElD,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,UAAU,GAAoB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAA6C,EAAE,CAAC;IAE9D,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC1E,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI;YAC7B,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO;SACpC,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAChC,WAAW,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAmB;QAC9B,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,UAAU;KACpB,CAAC;IAEF,YAAY,CAAC,OAAO,CAAC,CAAC;IAEtB,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { InstallItem } from '../types.js';
2
+ interface UpdateCheckResult {
3
+ readonly item: InstallItem;
4
+ readonly installedVersion: string | undefined;
5
+ readonly availableVersion: string | undefined;
6
+ readonly hasUpdate: boolean;
7
+ readonly packDir: string;
8
+ readonly sourcePath: string;
9
+ }
10
+ export declare function checkUpdates(projectDir: string): readonly UpdateCheckResult[];
11
+ export declare function runUpdate(cwd?: string | undefined): Promise<void>;
12
+ export {};
13
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,UAAU,iBAAiB;IACzB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,iBAAiB,EAAE,CAyD7E;AAED,wBAAsB,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DvE"}
@@ -0,0 +1,108 @@
1
+ import { basename, join } from 'path';
2
+ import * as clack from '@clack/prompts';
3
+ import { scanInstalled } from '../remove.js';
4
+ import { loadAllPacks } from '../resolve.js';
5
+ import { copyItems } from '../copy.js';
6
+ import { printSummary } from '../summary.js';
7
+ import { readFrontmatterVersion, isNewer } from '../version.js';
8
+ export function checkUpdates(projectDir) {
9
+ const installed = scanInstalled(projectDir);
10
+ const packs = loadAllPacks();
11
+ // Build lookup: item name -> { entry version, packDir, sourcePath }
12
+ const packLookup = new Map();
13
+ for (const pack of packs) {
14
+ for (const agent of pack.manifest.agents) {
15
+ const name = basename(agent.path, '.md');
16
+ packLookup.set(name, {
17
+ version: agent.version,
18
+ packDir: pack.dir,
19
+ sourcePath: agent.path,
20
+ });
21
+ }
22
+ for (const skill of pack.manifest.skills) {
23
+ const name = basename(skill.path);
24
+ packLookup.set(name, {
25
+ version: skill.version,
26
+ packDir: pack.dir,
27
+ sourcePath: skill.path,
28
+ });
29
+ }
30
+ }
31
+ return installed.map((item) => {
32
+ const match = packLookup.get(item.name);
33
+ if (!match) {
34
+ return {
35
+ item,
36
+ installedVersion: undefined,
37
+ availableVersion: undefined,
38
+ hasUpdate: false,
39
+ packDir: '',
40
+ sourcePath: '',
41
+ };
42
+ }
43
+ const installedFilePath = item.type === 'agent'
44
+ ? join(projectDir, '.claude', 'agents', `${item.name}.md`)
45
+ : join(projectDir, '.claude', 'skills', item.name, 'SKILL.md');
46
+ const installedVersion = readFrontmatterVersion(installedFilePath);
47
+ const availableVersion = match.version;
48
+ const hasUpdate = isNewer(availableVersion, installedVersion);
49
+ return {
50
+ item,
51
+ installedVersion,
52
+ availableVersion,
53
+ hasUpdate,
54
+ packDir: match.packDir,
55
+ sourcePath: match.sourcePath,
56
+ };
57
+ });
58
+ }
59
+ export async function runUpdate(cwd) {
60
+ const projectDir = cwd ?? process.cwd();
61
+ clack.intro('Grimoire Update');
62
+ const results = checkUpdates(projectDir);
63
+ const outdated = results.filter((r) => r.hasUpdate);
64
+ if (outdated.length === 0) {
65
+ clack.outro('All items are up to date.');
66
+ return;
67
+ }
68
+ const noteLines = outdated.map((r) => ` ${r.item.type} ${r.item.name}: v${r.installedVersion ?? '?'} → v${r.availableVersion ?? '?'}`);
69
+ clack.note(noteLines.join('\n'), 'Updates available');
70
+ const options = outdated.map((r) => ({
71
+ label: `${r.item.name} (${r.item.type})`,
72
+ value: r,
73
+ hint: `v${r.installedVersion ?? '?'} → v${r.availableVersion ?? '?'}`,
74
+ }));
75
+ const selected = await clack.multiselect({
76
+ message: 'Select items to update:',
77
+ options,
78
+ initialValues: outdated,
79
+ required: false,
80
+ });
81
+ if (clack.isCancel(selected)) {
82
+ clack.cancel('Update cancelled.');
83
+ return;
84
+ }
85
+ const chosenResults = selected;
86
+ if (chosenResults.length === 0) {
87
+ clack.outro('Nothing selected.');
88
+ return;
89
+ }
90
+ // Group by packDir
91
+ const byPack = new Map();
92
+ for (const r of chosenResults) {
93
+ let group = byPack.get(r.packDir);
94
+ if (!group) {
95
+ group = { packDir: r.packDir, items: [] };
96
+ byPack.set(r.packDir, group);
97
+ }
98
+ group.items.push({ ...r.item, sourcePath: r.sourcePath });
99
+ }
100
+ const allResults = [];
101
+ for (const { packDir, items } of byPack.values()) {
102
+ const copyResults = copyItems(items, packDir, projectDir);
103
+ allResults.push(...copyResults);
104
+ }
105
+ printSummary({ packs: [], results: allResults });
106
+ clack.outro('Update complete.');
107
+ }
108
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
package/dist/manifest.js CHANGED
@@ -64,10 +64,12 @@ function validateAgentEntry(entry, index) {
64
64
  if (!raw['description'] || typeof raw['description'] !== 'string') {
65
65
  throw new Error(`Agent entry [${index}] must have a "description" string field`);
66
66
  }
67
+ const agentVersion = typeof raw['version'] === 'string' ? raw['version'] : undefined;
67
68
  return {
68
69
  name: raw['name'],
69
70
  path: raw['path'],
70
71
  description: raw['description'],
72
+ ...(agentVersion !== undefined && { version: agentVersion }),
71
73
  };
72
74
  }
73
75
  function validateSkillEntry(entry, index) {
@@ -87,11 +89,13 @@ function validateSkillEntry(entry, index) {
87
89
  const triggers = raw['triggers'] != null
88
90
  ? validateTriggers(raw['triggers'], index)
89
91
  : undefined;
92
+ const skillVersion = typeof raw['version'] === 'string' ? raw['version'] : undefined;
90
93
  return {
91
94
  name: raw['name'],
92
95
  path: raw['path'],
93
96
  description: raw['description'],
94
- triggers,
97
+ ...(triggers !== undefined && { triggers }),
98
+ ...(skillVersion !== undefined && { version: skillVersion }),
95
99
  };
96
100
  }
97
101
  function validateTriggers(triggers, skillIndex) {
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
package/dist/prompt.d.ts CHANGED
@@ -7,7 +7,7 @@ import type { PackOption, InstallItem, WizardResult, RemoveWizardResult } from '
7
7
  *
8
8
  * @returns The wizard result with selected items grouped by pack, or empty on cancel
9
9
  */
10
- export declare function runWizard(packs: readonly PackOption[]): Promise<WizardResult>;
10
+ export declare function runWizard(packs: readonly PackOption[], projectDir: string): Promise<WizardResult>;
11
11
  /**
12
12
  * Runs an interactive removal wizard:
13
13
  * 1. Shows all installed items in a multiselect (unchecked by default)
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AACA,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,GAAG,OAAO,CAAC,YAAY,CAAC,CAqHnF;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":"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"}
package/dist/prompt.js CHANGED
@@ -1,4 +1,6 @@
1
+ import { join } from 'path';
1
2
  import * as clack from '@clack/prompts';
3
+ import { readFrontmatterVersion, isNewer } from './version.js';
2
4
  /**
3
5
  * Runs a 3-step interactive wizard:
4
6
  * 1. Select packs to install
@@ -7,7 +9,7 @@ import * as clack from '@clack/prompts';
7
9
  *
8
10
  * @returns The wizard result with selected items grouped by pack, or empty on cancel
9
11
  */
10
- export async function runWizard(packs) {
12
+ export async function runWizard(packs, projectDir) {
11
13
  const empty = { selections: [], enableAutoActivation: false };
12
14
  clack.intro('Grimoire Installer');
13
15
  // Step 1 — Pack selection
@@ -39,8 +41,24 @@ export async function runWizard(packs) {
39
41
  const itemOptions = [];
40
42
  for (const pack of chosenPacks) {
41
43
  for (const agent of pack.manifest.agents) {
44
+ const packVersion = agent.version;
45
+ const label = packVersion
46
+ ? `[${pack.name} · agent · v${packVersion}] ${agent.name}`
47
+ : `[${pack.name} · agent] ${agent.name}`;
48
+ const installedPath = join(projectDir, '.claude', 'agents', `${agent.name}.md`);
49
+ const installedVersion = readFrontmatterVersion(installedPath);
50
+ let hint;
51
+ if (installedVersion !== undefined) {
52
+ const upToDate = !isNewer(packVersion, installedVersion);
53
+ hint = upToDate
54
+ ? `installed: v${installedVersion} (up to date) · ${agent.description}`
55
+ : `installed: v${installedVersion} · ${agent.description}`;
56
+ }
57
+ else {
58
+ hint = agent.description;
59
+ }
42
60
  itemOptions.push({
43
- label: `[${pack.name} | agent] ${agent.name}`,
61
+ label,
44
62
  value: {
45
63
  pack,
46
64
  item: {
@@ -48,14 +66,31 @@ export async function runWizard(packs) {
48
66
  name: agent.name,
49
67
  sourcePath: agent.path,
50
68
  description: agent.description,
69
+ ...(packVersion !== undefined && { version: packVersion }),
51
70
  },
52
71
  },
53
- hint: agent.description,
72
+ hint,
54
73
  });
55
74
  }
56
75
  for (const skill of pack.manifest.skills) {
76
+ const packVersion = skill.version;
77
+ const label = packVersion
78
+ ? `[${pack.name} · skill · v${packVersion}] ${skill.name}`
79
+ : `[${pack.name} · skill] ${skill.name}`;
80
+ const installedPath = join(projectDir, '.claude', 'skills', skill.name, 'SKILL.md');
81
+ const installedVersion = readFrontmatterVersion(installedPath);
82
+ let hint;
83
+ if (installedVersion !== undefined) {
84
+ const upToDate = !isNewer(packVersion, installedVersion);
85
+ hint = upToDate
86
+ ? `installed: v${installedVersion} (up to date) · ${skill.description}`
87
+ : `installed: v${installedVersion} · ${skill.description}`;
88
+ }
89
+ else {
90
+ hint = skill.description;
91
+ }
57
92
  itemOptions.push({
58
- label: `[${pack.name} | skill] ${skill.name}`,
93
+ label,
59
94
  value: {
60
95
  pack,
61
96
  item: {
@@ -63,9 +98,10 @@ export async function runWizard(packs) {
63
98
  name: skill.name,
64
99
  sourcePath: skill.path,
65
100
  description: skill.description,
101
+ ...(packVersion !== undefined && { version: packVersion }),
66
102
  },
67
103
  },
68
- hint: skill.description,
104
+ hint,
69
105
  });
70
106
  }
71
107
  }
@@ -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/types.d.ts CHANGED
@@ -8,12 +8,14 @@ export interface PackAgentEntry {
8
8
  readonly name: string;
9
9
  readonly path: string;
10
10
  readonly description: string;
11
+ readonly version?: string | undefined;
11
12
  }
12
13
  export interface PackSkillEntry {
13
14
  readonly name: string;
14
15
  readonly path: string;
15
16
  readonly description: string;
16
17
  readonly triggers?: PackSkillTriggers | undefined;
18
+ readonly version?: string | undefined;
17
19
  }
18
20
  export interface PackManifest {
19
21
  readonly name: string;
@@ -29,6 +31,7 @@ export interface InstallItem {
29
31
  readonly pack?: string;
30
32
  /** Display name used as key in skills-manifest.json agents (may differ from filesystem name) */
31
33
  readonly manifestName?: string;
34
+ readonly version?: string | undefined;
32
35
  }
33
36
  export interface PackOption {
34
37
  readonly name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACnD;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,gGAAgG;IAChG,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;QACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;QAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;KACxC,CAAC,CAAC;IACH,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;CACxC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnF,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;CACxC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Reads `version` from YAML frontmatter. Returns undefined if absent/unreadable. */
2
+ export declare function readFrontmatterVersion(filePath: string): string | undefined;
3
+ /** Returns true if `available` semver is strictly newer than `installed`. */
4
+ export declare function isNewer(available: string | undefined, installed: string | undefined): boolean;
5
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAEA,qFAAqF;AACrF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAW3E;AAED,6EAA6E;AAC7E,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAU7F"}
@@ -0,0 +1,32 @@
1
+ import { readFileSync } from 'fs';
2
+ /** Reads `version` from YAML frontmatter. Returns undefined if absent/unreadable. */
3
+ export function readFrontmatterVersion(filePath) {
4
+ let content;
5
+ try {
6
+ content = readFileSync(filePath, 'utf-8');
7
+ }
8
+ catch {
9
+ return undefined;
10
+ }
11
+ const fm = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
12
+ if (!fm)
13
+ return undefined;
14
+ const m = fm[1]?.match(/^version:\s*(.+)$/m);
15
+ return m?.[1]?.trim();
16
+ }
17
+ /** Returns true if `available` semver is strictly newer than `installed`. */
18
+ export function isNewer(available, installed) {
19
+ if (!available || !installed)
20
+ return false;
21
+ const parse = (v) => v.split('.').map((n) => parseInt(n, 10));
22
+ const [a, b] = [parse(available), parse(installed)];
23
+ for (let i = 0; i < Math.max(a.length, b.length); i++) {
24
+ const diff = (a[i] ?? 0) - (b[i] ?? 0);
25
+ if (diff > 0)
26
+ return true;
27
+ if (diff < 0)
28
+ return false;
29
+ }
30
+ return false;
31
+ }
32
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,qFAAqF;AACrF,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IAC1B,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;AACxB,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grimoire-cc/cli",
3
- "version": "0.8.1",
3
+ "version": "0.9.0",
4
4
  "description": "CLI tool for installing Grimoire agent and skill packs",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -4,6 +4,7 @@ description: "Language-agnostic code review specialist. Use immediately after wr
4
4
  tools: Bash, Glob, Grep, Read
5
5
  model: inherit
6
6
  color: cyan
7
+ version: 1.0.0
7
8
  ---
8
9
 
9
10
  You are a senior code reviewer ensuring high standards of code quality, security, and maintainability across any programming language.
@@ -3,6 +3,7 @@ name: grimoire.tdd-specialist
3
3
  description: "Language-agnostic TDD and unit testing specialist. Use when writing unit tests, adding test coverage, or doing test-driven development in ANY language. Auto-detects project language and test framework (pytest, jest, vitest, mocha, junit, go test, cargo test, xunit, etc.). Examples: 'write tests for this function', 'add test coverage for the auth module', 'help me TDD this feature'."
4
4
  tools: Read, Edit, Write, Grep, Glob, Skill, Bash
5
5
  model: inherit
6
+ version: 1.0.0
6
7
  ---
7
8
 
8
9
  # TDD Specialist Agent
@@ -4,20 +4,23 @@
4
4
  "agents": [
5
5
  {
6
6
  "name": "grimoire.code-reviewer",
7
- "path": "agents/gr.code-reviewer.md",
8
- "description": "Language-agnostic code review specialist. Use immediately after writing or modifying code, or when explicitly requested to review code quality, security, performance, and best practices. Works with any programming language — detects language automatically and applies idiomatic conventions."
7
+ "path": "agents/grimoire.code-reviewer.md",
8
+ "description": "Language-agnostic code review specialist. Use immediately after writing or modifying code, or when explicitly requested to review code quality, security, performance, and best practices. Works with any programming language — detects language automatically and applies idiomatic conventions.",
9
+ "version": "1.0.0"
9
10
  },
10
11
  {
11
12
  "name": "grimoire.tdd-specialist",
12
- "path": "agents/gr.tdd-specialist.md",
13
- "description": "Language-agnostic TDD and unit testing specialist. Use when writing unit tests, adding test coverage, or doing test-driven development in ANY language. Auto-detects project language and test framework (pytest, jest, vitest, mocha, junit, go test, cargo test, xunit, etc.). Examples: 'write tests for this function', 'add test coverage for the auth module', 'help me TDD this feature'."
13
+ "path": "agents/grimoire.tdd-specialist.md",
14
+ "description": "Language-agnostic TDD and unit testing specialist. Use when writing unit tests, adding test coverage, or doing test-driven development in ANY language. Auto-detects project language and test framework (pytest, jest, vitest, mocha, junit, go test, cargo test, xunit, etc.). Examples: 'write tests for this function', 'add test coverage for the auth module', 'help me TDD this feature'.",
15
+ "version": "1.0.0"
14
16
  }
15
17
  ],
16
18
  "skills": [
17
19
  {
18
20
  "name": "grimoire.tdd-specialist",
19
- "path": "skills/gr.tdd-specialist",
21
+ "path": "skills/grimoire.tdd-specialist",
20
22
  "description": "Language-agnostic TDD and unit testing specialist. Use when writing unit tests, adding test coverage, doing test-driven development, or setting up test infrastructure in ANY language. Auto-detects project language and test framework.",
23
+ "version": "1.0.0",
21
24
  "triggers": {
22
25
  "keywords": [
23
26
  "tdd",
@@ -53,8 +56,9 @@
53
56
  },
54
57
  {
55
58
  "name": "grimoire.conventional-commit",
56
- "path": "skills/gr.conventional-commit",
59
+ "path": "skills/grimoire.conventional-commit",
57
60
  "description": "Generate git commits following Conventional Commits 1.0.0. Use for /conventional-commit, git commit, or when committing changes.",
61
+ "version": "1.0.0",
58
62
  "triggers": {
59
63
  "keywords": [
60
64
  "conventional-commit",
@@ -3,6 +3,7 @@ name: grimoire.conventional-commit
3
3
  description: "Generate git commits following Conventional Commits 1.0.0. Use for /conventional-commit, git commit, or when committing changes."
4
4
  user-invokable: true
5
5
  disable-model-invocation: false
6
+ version: 1.0.0
6
7
  ---
7
8
 
8
9
  # Git Commit Generator
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: grimoire.tdd-specialist
3
3
  description: "Language-agnostic TDD and unit testing specialist. Use when writing unit tests, adding test coverage, doing test-driven development, or setting up test infrastructure in ANY language. Auto-detects project language and test framework. Supports pytest, jest, vitest, mocha, junit, go test, cargo test, xunit, and more. Triggers: tdd, test-driven, unit test, write tests, test coverage, red-green-refactor."
4
+ version: 1.0.0
4
5
  ---
5
6
 
6
7
  # TDD Specialist
@@ -5,8 +5,9 @@
5
5
  "skills": [
6
6
  {
7
7
  "name": "grimoire.business-logic-docs",
8
- "path": "skills/gr.business-logic-docs",
8
+ "path": "skills/grimoire.business-logic-docs",
9
9
  "description": "Create and maintain structured business logic documentation for AI assistants and developers. Use when documenting business rules, domain knowledge, invariants, workflows, state machines, entity relationships, decision logs, or building a business logic knowledge base.",
10
+ "version": "1.0.0",
10
11
  "triggers": {
11
12
  "keywords": [],
12
13
  "file_extensions": [],
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: grimoire.business-logic-docs
3
3
  description: "Create, update, and audit structured business logic documentation for AI assistants and developers. Use when documenting business rules, domain knowledge, invariants, workflows, state machines, entity relationships, decision logs, building a business logic knowledge base, or reviewing docs for staleness."
4
+ version: 1.0.0
4
5
  ---
5
6
 
6
7
  # Business Logic Documentation
@@ -4,6 +4,7 @@ description: "Expert C#/.NET code review specialist. Use immediately after writi
4
4
  tools: Bash, Glob, Grep, Read, Skill
5
5
  model: inherit
6
6
  color: cyan
7
+ version: 1.0.0
7
8
  ---
8
9
 
9
10
  You are a senior C#/.NET code reviewer ensuring high standards of code quality, security, and maintainability
@@ -4,6 +4,7 @@ description: "Use this agent to implement C# code based on architectural decisio
4
4
  tools: Read, Edit, Write, Skill, Glob, Grep
5
5
  model: sonnet
6
6
  color: yellow
7
+ version: 1.0.0
7
8
  ---
8
9
 
9
10
  You are an expert C# implementation specialist—a mid-to-senior level developer who excels at translating architectural guidance and technical specifications into clean, production-ready code. You have deep expertise in modern C# and the .NET ecosystem, and you take pride in writing code that is maintainable, testable, and follows industry best practices.
@@ -3,6 +3,7 @@ name: grimoire.dotnet-architect
3
3
  description: "Use this agent when you need to write, review, or refactor C# code on the .NET platform following modern best practices. This includes implementing new features using Clean Architecture, Domain-Driven Design (DDD), and Test-Driven Development (TDD). Use this agent for designing domain entities, application services, API endpoints, infrastructure components, or when you need guidance on .NET patterns, SOLID principles, and Microsoft's recommended practices.\\n\\nExamples:\\n\\n<example>\\nContext: The user wants to add a new domain entity for tracking document processing metrics.\\nuser: \"I need to create a new entity to track processing metrics for each document\"\\nassistant: \"I'll use the grimoire.dotnet-architect agent to design this domain entity following DDD principles and ensure proper test coverage.\"\\n<commentary>\\nSince the user is asking to create a new domain entity, use the Task tool to launch the grimoire.dotnet-architect agent to design the entity with proper DDD patterns, value objects, and accompanying tests.\\n</commentary>\\n</example>\\n\\n<example>\\nContext: The user is implementing a new service that needs to follow Clean Architecture.\\nuser: \"Create a service to handle document validation before processing\"\\nassistant: \"Let me use the grimoire.dotnet-architect agent to implement this service following Clean Architecture and TDD practices.\"\\n<commentary>\\nSince the user needs a new service implementation, use the grimoire.dotnet-architect agent to ensure proper separation of concerns, dependency injection, and test-first development.\\n</commentary>\\n</example>\\n\\n<example>\\nContext: The user wants to refactor existing code to improve maintainability.\\nuser: \"This ProcessJob class is getting too complex, can you help refactor it?\"\\nassistant: \"I'll engage the grimoire.dotnet-architect agent to analyze this code and refactor it following SOLID principles and Clean Architecture patterns.\"\\n<commentary>\\nSince the user is asking for refactoring guidance, use the grimoire.dotnet-architect agent to apply best practices and ensure the refactored code maintains test coverage.\\n</commentary>\\n</example>\\n\\n<example>\\nContext: The user needs to implement a new API endpoint.\\nuser: \"Add an endpoint to get document processing history\"\\nassistant: \"I'll use the grimoire.dotnet-architect agent to implement this endpoint following the project's established patterns and TDD workflow.\"\\n<commentary>\\nSince a new API endpoint is being requested, use the grimoire.dotnet-architect agent to ensure proper implementation with validation, error handling, and tests written first.\\n</commentary>\\n</example>"
4
4
  tools: Bash, Glob, Grep, Read, Skill, mcp__plugin_context7_context7__resolve-library-id, mcp__plugin_context7_context7__query-docs, WebSearch, WebFetch
5
5
  model: inherit
6
+ version: 1.0.0
6
7
  ---
7
8
 
8
9
  You are an elite .NET architect and senior software engineer with deep expertise in building enterprise-grade applications using C# and the .NET 8+ platform. You specialize in Clean Architecture, Domain-Driven Design (DDD), and Test-Driven Development (TDD), consistently delivering robust, maintainable, and scalable solutions.
@@ -3,6 +3,7 @@ name: grimoire.dotnet-unit-test-writer
3
3
  description: "Expert .NET unit testing specialist for C#/.NET projects. Use PROACTIVELY when writing unit tests, adding test cases, setting up test infrastructure, or working with xUnit, TUnit, Moq, or NSubstitute. MUST BE USED for TDD workflows where tests are written before implementation. Defaults to xUnit (most universal), recommends TUnit for new .NET 8+ projects."
4
4
  tools: Read, Edit, Write, Grep, Glob, Skill
5
5
  model: sonnet
6
+ version: 1.0.0
6
7
  ---
7
8
 
8
9
  # .NET Unit Test Writer Agent
@@ -4,30 +4,35 @@
4
4
  "agents": [
5
5
  {
6
6
  "name": "grimoire.csharp-code-reviewer",
7
- "path": "agents/gr.csharp-code-reviewer.md",
8
- "description": "Expert C#/.NET code review specialist. Use immediately after writing or modifying C# code, or when explicitly requested to review C#/.NET code quality, security, performance, and best practices. ONLY reviews C# and .NET code - declines reviews of other languages."
7
+ "path": "agents/grimoire.csharp-code-reviewer.md",
8
+ "description": "Expert C#/.NET code review specialist. Use immediately after writing or modifying C# code, or when explicitly requested to review C#/.NET code quality, security, performance, and best practices. ONLY reviews C# and .NET code - declines reviews of other languages.",
9
+ "version": "1.0.0"
9
10
  },
10
11
  {
11
12
  "name": "grimoire.csharp-coder",
12
- "path": "agents/gr.csharp-coder.md",
13
- "description": "Implements C# code based on architectural decisions, predefined plans, or technical specifications. Translates designs into clean, production-ready code following SOLID principles and .NET conventions."
13
+ "path": "agents/grimoire.csharp-coder.md",
14
+ "description": "Implements C# code based on architectural decisions, predefined plans, or technical specifications. Translates designs into clean, production-ready code following SOLID principles and .NET conventions.",
15
+ "version": "1.0.0"
14
16
  },
15
17
  {
16
18
  "name": "grimoire.dotnet-architect",
17
- "path": "agents/gr.dotnet-architect.md",
18
- "description": "Write, review, or refactor C# code on the .NET platform following modern best practices. Implements new features using Clean Architecture, Domain-Driven Design (DDD), and Test-Driven Development (TDD). Designs domain entities, application services, API endpoints, and infrastructure components."
19
+ "path": "agents/grimoire.dotnet-architect.md",
20
+ "description": "Write, review, or refactor C# code on the .NET platform following modern best practices. Implements new features using Clean Architecture, Domain-Driven Design (DDD), and Test-Driven Development (TDD). Designs domain entities, application services, API endpoints, and infrastructure components.",
21
+ "version": "1.0.0"
19
22
  },
20
23
  {
21
24
  "name": "grimoire.dotnet-unit-test-writer",
22
- "path": "agents/gr.dotnet-unit-test-writer.md",
23
- "description": "Expert .NET unit testing specialist for C#/.NET projects. Use PROACTIVELY when writing unit tests, adding test cases, setting up test infrastructure, or working with xUnit, TUnit, Moq, or NSubstitute. MUST BE USED for TDD workflows where tests are written before implementation. Defaults to xUnit (most universal), recommends TUnit for new .NET 8+ projects."
25
+ "path": "agents/grimoire.dotnet-unit-test-writer.md",
26
+ "description": "Expert .NET unit testing specialist for C#/.NET projects. Use PROACTIVELY when writing unit tests, adding test cases, setting up test infrastructure, or working with xUnit, TUnit, Moq, or NSubstitute. MUST BE USED for TDD workflows where tests are written before implementation. Defaults to xUnit (most universal), recommends TUnit for new .NET 8+ projects.",
27
+ "version": "1.0.0"
24
28
  }
25
29
  ],
26
30
  "skills": [
27
31
  {
28
32
  "name": "grimoire.dotnet-feature-workflow",
29
- "path": "skills/gr.dotnet-feature-workflow",
30
- "description": "Orchestrates end-to-end .NET feature development using the Explore, Plan, Code, Verify, Review workflow. Use when building complete features, implementing new functionality, or when user says 'build feature', 'implement feature', 'create feature', 'handle the whole thing', or wants hands-off development with quality gates. Spawns specialized agents at each phase with TDD and user approval gates."
33
+ "path": "skills/grimoire.dotnet-feature-workflow",
34
+ "description": "Orchestrates end-to-end .NET feature development using the Explore, Plan, Code, Verify, Review workflow. Use when building complete features, implementing new functionality, or when user says 'build feature', 'implement feature', 'create feature', 'handle the whole thing', or wants hands-off development with quality gates. Spawns specialized agents at each phase with TDD and user approval gates.",
35
+ "version": "1.0.0"
31
36
  }
32
37
  ]
33
38
  }
@@ -3,6 +3,7 @@ name: grimoire.dotnet-feature-workflow
3
3
  description: "Orchestrates end-to-end .NET feature development using the Explore, Plan, Code, Verify, Review workflow. Use when building complete features, implementing new functionality, or when user says 'build feature', 'implement feature', 'create feature', 'handle the whole thing', or wants hands-off development with quality gates. Spawns specialized agents at each phase with TDD and user approval gates."
4
4
  user-invokable: true
5
5
  disable-model-invocation: true
6
+ version: 1.0.0
6
7
  ---
7
8
 
8
9
  # .NET Feature Development Workflow
@@ -3,6 +3,7 @@ name: grimoire.fact-checker
3
3
  description: "Use this agent when you need to verify the accuracy of written content before publishing or sharing. Invoke when: (1) Drafting is complete and content contains factual claims like statistics, dates, technical specifications, or historical references; (2) Content is ready for final review before publishing; (3) Accuracy is critical for public-facing or decision-making materials. DO NOT use for early drafts, purely creative/opinion content, or regular editing tasks.\\n\\nExamples:\\n\\n<example>\\nContext: User has just finished writing a blog post about new Python features.\\n\\nuser: \"I just finished writing a blog post about Python 3.12's new features. Can you review it?\"\\n\\nassistant: \"I'll use the grimoire.fact-checker agent to verify all the technical claims, release dates, and feature descriptions in your Python 3.12 blog post before you publish it.\"\\n\\n<commentary>\\nSince the user has completed a blog post containing verifiable technical claims that need accuracy verification before publishing, use the Task tool to launch the grimoire.fact-checker agent.\\n</commentary>\\n</example>\\n\\n<example>\\nContext: User mentions they've written documentation with performance benchmarks.\\n\\nuser: \"Here's the performance documentation I wrote with benchmark numbers comparing our API to competitors\"\\n\\nassistant: \"Let me use the grimoire.fact-checker agent to verify those benchmark claims and performance statistics to ensure everything is accurate.\"\\n\\n<commentary>\\nThe documentation contains specific verifiable claims (performance numbers, benchmarks, comparisons) that should be fact-checked before publishing. Use the Task tool to launch the grimoire.fact-checker agent.\\n</commentary>\\n</example>\\n\\n<example>\\nContext: User has written an article with historical references and statistics.\\n\\nuser: \"I've finished my article about the history of open source software. It has dates, statistics, and some quotes from key figures.\"\\n\\nassistant: \"I'll run the grimoire.fact-checker agent to verify the historical dates, statistics, and quote attributions in your article.\"\\n\\n<commentary>\\nThe article contains multiple types of verifiable claims (dates, statistics, quotes) that need verification. Use the Task tool to launch the grimoire.fact-checker agent for comprehensive verification.\\n</commentary>\\n</example>"
4
4
  tools: Read, WebFetch, WebSearch
5
5
  model: inherit
6
+ version: 1.0.0
6
7
  ---
7
8
 
8
9
  You are a meticulous fact-checking expert specializing in verifying claims, statements, and assertions across all types of written content including blog posts, articles, technical documentation, and other text-based materials. Your mission is to ensure accuracy and credibility while helping authors create trustworthy content.
@@ -4,8 +4,9 @@
4
4
  "agents": [
5
5
  {
6
6
  "name": "grimoire.fact-checker",
7
- "path": "agents/gr.fact-checker.md",
8
- "description": "Use this agent when you need to verify the accuracy of written content before publishing or sharing. Invoke when: (1) Drafting is complete and content contains factual claims like statistics, dates, technical specifications, or historical references; (2) Content is ready for final review before publishing; (3) Accuracy is critical for public-facing or decision-making materials."
7
+ "path": "agents/grimoire.fact-checker.md",
8
+ "description": "Use this agent when you need to verify the accuracy of written content before publishing or sharing. Invoke when: (1) Drafting is complete and content contains factual claims like statistics, dates, technical specifications, or historical references; (2) Content is ready for final review before publishing; (3) Accuracy is critical for public-facing or decision-making materials.",
9
+ "version": "1.0.0"
9
10
  }
10
11
  ],
11
12
  "skills": []
@@ -5,8 +5,9 @@
5
5
  "skills": [
6
6
  {
7
7
  "name": "grimoire.context-file-guide",
8
- "path": "skills/gr.context-file-guide",
8
+ "path": "skills/grimoire.context-file-guide",
9
9
  "description": "Best practices for writing CLAUDE.md project context files. Use when creating, reviewing, or improving CLAUDE.md files for Claude Code projects.",
10
+ "version": "1.0.0",
10
11
  "triggers": {
11
12
  "keywords": [],
12
13
  "file_extensions": [],
@@ -24,8 +25,9 @@
24
25
  },
25
26
  {
26
27
  "name": "grimoire.readme-guide",
27
- "path": "skills/gr.readme-guide",
28
+ "path": "skills/grimoire.readme-guide",
28
29
  "description": "Create and review README files following industry best practices. Use for writing new READMEs, improving existing ones, checking README quality, or adding badges.",
30
+ "version": "1.0.0",
29
31
  "triggers": {
30
32
  "keywords": [
31
33
  "readme"
@@ -47,8 +49,9 @@
47
49
  },
48
50
  {
49
51
  "name": "grimoire.skill-developer",
50
- "path": "skills/gr.skill-developer",
52
+ "path": "skills/grimoire.skill-developer",
51
53
  "description": "Create and maintain custom skills for Claude Code following official Anthropic patterns. Use when creating new skills, updating existing skills, or organizing skill documentation.",
54
+ "version": "1.0.0",
52
55
  "triggers": {
53
56
  "keywords": [
54
57
  "skill-developer",
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: grimoire.context-file-guide
3
3
  description: "Best practices for writing CLAUDE.md project context files. Use when creating, reviewing, or improving CLAUDE.md files for Claude Code projects."
4
+ version: 1.0.0
4
5
  ---
5
6
 
6
7
  # CLAUDE.md Best Practices Guide
@@ -3,6 +3,7 @@ name: grimoire.readme-guide
3
3
  description: "Create and review README files following industry best practices. Use for writing new READMEs, improving existing ones, checking README quality, or adding badges. Triggers: readme, documentation, project docs, repository documentation, getting started guide, shields badges."
4
4
  user-invokable: true
5
5
  disable-model-invocation: false
6
+ version: 1.0.0
6
7
  ---
7
8
 
8
9
  # README Guide
@@ -3,6 +3,7 @@ name: grimoire.skill-developer
3
3
  description: Create and maintain custom skills for Claude Code following official Anthropic patterns. Use when creating new skills, updating existing skills, or organizing skill documentation.
4
4
  user-invokable: true
5
5
  disable-model-invocation: false
6
+ version: 1.0.0
6
7
  ---
7
8
 
8
9
  # Skill Developer
@@ -5,8 +5,9 @@
5
5
  "skills": [
6
6
  {
7
7
  "name": "grimoire.modern-typescript",
8
- "path": "skills/gr.modern-typescript",
8
+ "path": "skills/grimoire.modern-typescript",
9
9
  "description": "Modern TypeScript best practices, patterns, and type system mastery for TS 5.7+. Use when writing TypeScript, reviewing TS code, designing types, configuring tsconfig, or asking about TypeScript patterns, generics, type safety, strict mode, idiomatic TypeScript, discriminated unions, branded types, or modern TS features.",
10
+ "version": "1.0.0",
10
11
  "triggers": {
11
12
  "keywords": ["typescript", "tsconfig", "satisfies", "narrowing", "readonly"],
12
13
  "file_extensions": [".ts", ".tsx", ".mts", ".cts"],
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: grimoire.modern-typescript
3
3
  description: "Modern TypeScript best practices, patterns, and type system mastery for TS 5.7+. Use when writing TypeScript, reviewing TS code, designing types, configuring tsconfig, or asking about TypeScript patterns, generics, type safety, strict mode, idiomatic TypeScript, discriminated unions, branded types, or modern TS features."
4
+ version: 1.0.0
4
5
  ---
5
6
 
6
7
  # Modern TypeScript