@grimoire-cc/cli 0.8.0 → 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 (71) hide show
  1. package/dist/bin.js +14 -25
  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/remove.d.ts +2 -14
  6. package/dist/commands/remove.d.ts.map +1 -1
  7. package/dist/commands/remove.js +28 -58
  8. package/dist/commands/remove.js.map +1 -1
  9. package/dist/commands/update.d.ts +13 -0
  10. package/dist/commands/update.d.ts.map +1 -0
  11. package/dist/commands/update.js +108 -0
  12. package/dist/commands/update.js.map +1 -0
  13. package/dist/index.d.ts +0 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +0 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/manifest.js +5 -1
  18. package/dist/manifest.js.map +1 -1
  19. package/dist/prompt.d.ts +5 -5
  20. package/dist/prompt.d.ts.map +1 -1
  21. package/dist/prompt.js +51 -64
  22. package/dist/prompt.js.map +1 -1
  23. package/dist/remove.js +2 -2
  24. package/dist/remove.js.map +1 -1
  25. package/dist/types.d.ts +7 -5
  26. package/dist/types.d.ts.map +1 -1
  27. package/dist/version.d.ts +5 -0
  28. package/dist/version.d.ts.map +1 -0
  29. package/dist/version.js +32 -0
  30. package/dist/version.js.map +1 -0
  31. package/package.json +1 -1
  32. package/packs/dev-pack/agents/{gr.code-reviewer.md → grimoire.code-reviewer.md} +2 -1
  33. package/packs/dev-pack/agents/{gr.tdd-specialist.md → grimoire.tdd-specialist.md} +4 -3
  34. package/packs/dev-pack/grimoire.json +14 -10
  35. package/packs/dev-pack/skills/{gr.conventional-commit → grimoire.conventional-commit}/SKILL.md +4 -3
  36. package/packs/dev-pack/skills/{gr.tdd-specialist → grimoire.tdd-specialist}/SKILL.md +3 -2
  37. package/packs/dev-pack/skills/{gr.tdd-specialist → grimoire.tdd-specialist}/reference/language-frameworks.md +1 -1
  38. package/packs/docs-pack/grimoire.json +3 -2
  39. package/packs/docs-pack/skills/{gr.business-logic-docs → grimoire.business-logic-docs}/SKILL.md +2 -1
  40. package/packs/dotnet-pack/agents/{gr.csharp-code-reviewer.md → grimoire.csharp-code-reviewer.md} +2 -1
  41. package/packs/dotnet-pack/agents/{gr.csharp-coder.md → grimoire.csharp-coder.md} +3 -2
  42. package/packs/dotnet-pack/agents/{gr.dotnet-architect.md → grimoire.dotnet-architect.md} +3 -2
  43. package/packs/dotnet-pack/agents/{gr.dotnet-unit-test-writer.md → grimoire.dotnet-unit-test-writer.md} +3 -2
  44. package/packs/dotnet-pack/grimoire.json +19 -33
  45. package/packs/dotnet-pack/skills/{gr.dotnet-feature-workflow → grimoire.dotnet-feature-workflow}/SKILL.md +4 -3
  46. package/packs/essentials-pack/agents/{gr.fact-checker.md → grimoire.fact-checker.md} +3 -2
  47. package/packs/essentials-pack/grimoire.json +4 -3
  48. package/packs/meta-pack/grimoire.json +9 -6
  49. package/packs/meta-pack/skills/{gr.context-file-guide → grimoire.context-file-guide}/SKILL.md +2 -1
  50. package/packs/meta-pack/skills/{gr.readme-guide → grimoire.readme-guide}/SKILL.md +3 -2
  51. package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/SKILL.md +4 -3
  52. package/packs/ts-pack/grimoire.json +3 -2
  53. package/packs/ts-pack/skills/{gr.modern-typescript → grimoire.modern-typescript}/SKILL.md +2 -1
  54. /package/packs/dev-pack/skills/{gr.tdd-specialist → grimoire.tdd-specialist}/reference/anti-patterns.md +0 -0
  55. /package/packs/dev-pack/skills/{gr.tdd-specialist → grimoire.tdd-specialist}/reference/tdd-workflow-patterns.md +0 -0
  56. /package/packs/docs-pack/skills/{gr.business-logic-docs → grimoire.business-logic-docs}/references/audit-checklist.md +0 -0
  57. /package/packs/docs-pack/skills/{gr.business-logic-docs → grimoire.business-logic-docs}/references/tier2-template.md +0 -0
  58. /package/packs/meta-pack/skills/{gr.context-file-guide → grimoire.context-file-guide}/scripts/validate-context-file.sh +0 -0
  59. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/examples/brand-guidelines.md +0 -0
  60. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/examples/financial-analysis.md +0 -0
  61. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/reference/best-practices.md +0 -0
  62. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/reference/file-organization.md +0 -0
  63. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/reference/patterns.md +0 -0
  64. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/reference/yaml-spec.md +0 -0
  65. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/scripts/create-skill.sh +0 -0
  66. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/scripts/validate-skill.py +0 -0
  67. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/templates/basic-skill.md +0 -0
  68. /package/packs/meta-pack/skills/{gr.skill-developer → grimoire.skill-developer}/templates/domain-skill.md +0 -0
  69. /package/packs/ts-pack/skills/{gr.modern-typescript → grimoire.modern-typescript}/reference/modern-features.md +0 -0
  70. /package/packs/ts-pack/skills/{gr.modern-typescript → grimoire.modern-typescript}/reference/patterns-and-idioms.md +0 -0
  71. /package/packs/ts-pack/skills/{gr.modern-typescript → grimoire.modern-typescript}/reference/type-system.md +0 -0
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
  }
@@ -111,58 +147,19 @@ export async function runWizard(packs) {
111
147
  }
112
148
  /**
113
149
  * Runs an interactive removal wizard:
114
- * 1. Shows all installed pack items in a multiselect (unchecked by default)
150
+ * 1. Shows all installed items in a multiselect (unchecked by default)
115
151
  * 2. Confirms removal
116
152
  *
117
- * @returns The wizard result with selected items grouped by pack, or empty on cancel
153
+ * @returns The wizard result with selected items, or empty on cancel
118
154
  */
119
- export async function runRemoveWizard(packs, installedNames) {
120
- const empty = { selections: [] };
155
+ export async function runRemoveWizard(installedItems) {
156
+ const empty = { items: [] };
121
157
  clack.intro('Grimoire Remover');
122
- // Build options from pack items that are actually installed
123
- const itemOptions = [];
124
- for (const pack of packs) {
125
- for (const agent of pack.manifest.agents) {
126
- const fsName = agent.path.replace(/^agents\//, '').replace(/\.md$/, '');
127
- if (!installedNames.has(fsName))
128
- continue;
129
- itemOptions.push({
130
- label: `[${pack.name} | agent] ${agent.name}`,
131
- value: {
132
- pack,
133
- item: {
134
- type: 'agent',
135
- name: fsName,
136
- sourcePath: agent.path,
137
- description: agent.description,
138
- },
139
- },
140
- hint: agent.description,
141
- });
142
- }
143
- for (const skill of pack.manifest.skills) {
144
- const fsName = skill.path.replace(/^skills\//, '');
145
- if (!installedNames.has(fsName))
146
- continue;
147
- itemOptions.push({
148
- label: `[${pack.name} | skill] ${skill.name}`,
149
- value: {
150
- pack,
151
- item: {
152
- type: 'skill',
153
- name: fsName,
154
- sourcePath: skill.path,
155
- description: skill.description,
156
- },
157
- },
158
- hint: skill.description,
159
- });
160
- }
161
- }
162
- if (itemOptions.length === 0) {
163
- clack.outro('No installed pack items found.');
164
- return empty;
165
- }
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
+ }));
166
163
  const selectedItems = await clack.multiselect({
167
164
  message: 'Select items to remove (Space to toggle, Enter to confirm):',
168
165
  options: itemOptions,
@@ -187,16 +184,6 @@ export async function runRemoveWizard(packs, installedNames) {
187
184
  return empty;
188
185
  }
189
186
  clack.outro('Selection complete.');
190
- // Group items by pack
191
- const groupMap = new Map();
192
- for (const { pack, item } of chosenItems) {
193
- let group = groupMap.get(pack.name);
194
- if (!group) {
195
- group = { packDir: pack.dir, manifest: pack.manifest, items: [] };
196
- groupMap.set(pack.name, group);
197
- }
198
- group.items.push(item);
199
- }
200
- return { selections: [...groupMap.values()] };
187
+ return { items: chosenItems };
201
188
  }
202
189
  //# sourceMappingURL=prompt.js.map
@@ -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.js CHANGED
@@ -87,8 +87,8 @@ export function cleanManifest(items, projectDir, manifestNames) {
87
87
  const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
88
88
  // Build path-based removal set for skills
89
89
  const removedSkillPaths = new Set(items.filter((i) => i.type === 'skill').map((i) => `.claude/skills/${i.name}`));
90
- // Build agent removal set from both filesystem names and manifest names
91
- const removedAgentNames = new Set(items.filter((i) => i.type === 'agent').map((i) => i.name));
90
+ // Build agent removal set: prefer manifestName (display key) over filesystem name
91
+ const removedAgentNames = new Set(items.filter((i) => i.type === 'agent').map((i) => i.manifestName ?? i.name));
92
92
  if (manifestNames?.agentNames) {
93
93
  for (const name of manifestNames.agentNames) {
94
94
  removedAgentNames.add(name);
@@ -1 +1 @@
1
- {"version":3,"file":"remove.js","sourceRoot":"","sources":["../src/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACvG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGtC;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,MAAM,KAAK,GAAkB,EAAE,CAAC;IAEhC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;oBAC3B,UAAU,EAAE,EAAE;oBACd,WAAW,EAAE,EAAE;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACxC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,KAAK;oBACX,UAAU,EAAE,EAAE;oBACd,WAAW,EAAE,EAAE;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,KAA6B,EAC7B,UAAkB;IAElB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,UAAU,GACd,IAAI,CAAC,IAAI,KAAK,OAAO;YACnB,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC;YAC1D,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC;QAED,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC;AAoBD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,YAA0B;IACzD,MAAM,KAAK,GAAkB,EAAE,CAAC;IAEhC,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;YACjC,UAAU,EAAE,EAAE;YACd,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;YAC1B,UAAU,EAAE,EAAE;YACd,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,KAA6B,EAC7B,UAAkB,EAClB,aAGC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAC;IACzE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO;IAEtC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAmB,CAAC;IAEnF,0CAA0C;IAC1C,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC,CAC/E,CAAC;IAEF,wEAAwE;IACxE,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC3D,CAAC;IACF,IAAI,aAAa,EAAE,UAAU,EAAE,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;YAC5C,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,sFAAsF;IACtF,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAU,CAAC;IACpD,IAAI,aAAa,EAAE,UAAU,EAAE,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;YAC5C,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,IAAI,iBAAiB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAoB,EAAE,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACf,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,uBAAuB;IACvB,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACrC,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,gDAAgD;IAChD,IAAI,yBAAyB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACvC,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACzD,WAAW,CAAC,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,MAAM,CAC1D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CACzC,CAAC;YACF,WAAW,CAAC,iBAAiB,GAAG,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAClE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CACzC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../src/remove.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;
@@ -26,6 +28,10 @@ export interface InstallItem {
26
28
  readonly name: string;
27
29
  readonly sourcePath: string;
28
30
  readonly description: string;
31
+ readonly pack?: string;
32
+ /** Display name used as key in skills-manifest.json agents (may differ from filesystem name) */
33
+ readonly manifestName?: string;
34
+ readonly version?: string | undefined;
29
35
  }
30
36
  export interface PackOption {
31
37
  readonly name: string;
@@ -60,10 +66,6 @@ export interface RemoveSummary {
60
66
  readonly results: readonly RemoveResult[];
61
67
  }
62
68
  export interface RemoveWizardResult {
63
- readonly selections: ReadonlyArray<{
64
- readonly packDir: string;
65
- readonly manifest: PackManifest;
66
- readonly items: readonly InstallItem[];
67
- }>;
69
+ readonly items: readonly InstallItem[];
68
70
  }
69
71
  //# sourceMappingURL=types.d.ts.map
@@ -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;CAC9B;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,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;CACJ"}
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.0",
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",
@@ -1,9 +1,10 @@
1
1
  ---
2
- name: grimoire:code-reviewer
2
+ name: grimoire.code-reviewer
3
3
  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."
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.
@@ -1,8 +1,9 @@
1
1
  ---
2
- name: grimoire:tdd-specialist
2
+ 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
@@ -11,7 +12,7 @@ You are a language-agnostic test-driven development expert. You write clean, mai
11
12
 
12
13
  ## MANDATORY: Load Skill First
13
14
 
14
- **IMMEDIATELY** invoke `Skill(grimoire:tdd-specialist)` at the start of every task. This skill contains all testing patterns, framework detection logic, language-specific templates, and TDD principles you must follow.
15
+ **IMMEDIATELY** invoke `Skill(grimoire.tdd-specialist)` at the start of every task. This skill contains all testing patterns, framework detection logic, language-specific templates, and TDD principles you must follow.
15
16
 
16
17
  The skill provides:
17
18
 
@@ -41,4 +42,4 @@ After loading the skill:
41
42
  - ALWAYS follow the patterns and templates from the skill
42
43
  - ALWAYS detect and match existing project conventions
43
44
  - ONLY write test code, never production implementations
44
- - For C#/.NET projects, check if `grimoire:dotnet-unit-testing` skill is available and defer to it
45
+ - For C#/.NET projects, check if `grimoire.dotnet-unit-testing` skill is available and defer to it
@@ -3,21 +3,24 @@
3
3
  "version": "1.0.0",
4
4
  "agents": [
5
5
  {
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."
6
+ "name": "grimoire.code-reviewer",
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
- "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'."
12
+ "name": "grimoire.tdd-specialist",
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
- "name": "grimoire:tdd-specialist",
19
- "path": "skills/gr.tdd-specialist",
20
+ "name": "grimoire.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",
@@ -52,9 +55,10 @@
52
55
  }
53
56
  },
54
57
  {
55
- "name": "grimoire:conventional-commit",
56
- "path": "skills/gr.conventional-commit",
58
+ "name": "grimoire.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",
@@ -1,8 +1,9 @@
1
1
  ---
2
- name: grimoire:conventional-commit
2
+ 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
- user_invocable: true
5
- disable-model-invocation: true
4
+ user-invokable: true
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
- name: grimoire:tdd-specialist
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
@@ -40,7 +41,7 @@ If no existing tests, infer from config:
40
41
  - **Python**: Check for `pytest` in dependencies or `[tool.pytest]` in `pyproject.toml`. Default: pytest.
41
42
  - **Go**: Built-in `testing` package. Check for `testify` in `go.mod`.
42
43
  - **Rust**: Built-in `#[test]`. Check for `mockall` in `Cargo.toml`.
43
- - **C#/.NET**: Check `.csproj` for xUnit/NUnit/MSTest references. **If `grimoire:dotnet-unit-testing` skill is available, defer to it.**
44
+ - **C#/.NET**: Check `.csproj` for xUnit/NUnit/MSTest references. **If `grimoire.dotnet-unit-testing` skill is available, defer to it.**
44
45
  - **Java/Kotlin**: Check for JUnit 5 (`junit-jupiter`), Mockito in build files. Default: JUnit 5 + Mockito.
45
46
  - **Ruby**: Check for `rspec` or `minitest` in Gemfile. Default: RSpec.
46
47
 
@@ -294,7 +294,7 @@ class OrderServiceTest {
294
294
 
295
295
  ## C# / .NET
296
296
 
297
- **If the `grimoire:dotnet-unit-testing` skill is available, defer to it for full C#/.NET guidance.** It provides comprehensive xUnit, TUnit, Moq, and NSubstitute patterns.
297
+ **If the `grimoire.dotnet-unit-testing` skill is available, defer to it for full C#/.NET guidance.** It provides comprehensive xUnit, TUnit, Moq, and NSubstitute patterns.
298
298
 
299
299
  ### Quick Reference (when dotnet skill is unavailable)
300
300
 
@@ -4,9 +4,10 @@
4
4
  "agents": [],
5
5
  "skills": [
6
6
  {
7
- "name": "grimoire:business-logic-docs",
8
- "path": "skills/gr.business-logic-docs",
7
+ "name": "grimoire.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
- name: grimoire:business-logic-docs
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
@@ -1,9 +1,10 @@
1
1
  ---
2
- name: grimoire:csharp-code-reviewer
2
+ name: grimoire.csharp-code-reviewer
3
3
  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."
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
@@ -1,9 +1,10 @@
1
1
  ---
2
- name: grimoire:csharp-coder
3
- description: "Use this agent to implement C# code based on architectural decisions, predefined plans, or technical specifications. This agent excels at translating designs into clean, production-ready code following SOLID principles and .NET conventions—you provide the direction, it writes the code. Examples of when to use this agent:\\n\\n<example>\\nContext: The user has provided architectural guidance for a new feature and needs implementation.\\nuser: \"I need you to implement a repository pattern for our User entity. Use EF Core, make it async, and ensure it follows our existing patterns. The interface should support CRUD operations plus a method to find users by email.\"\\nassistant: \"I'll use the grimoire:csharp-coder agent to implement this repository pattern based on your specifications.\"\\n<commentary>\\nSince the user has provided clear architectural direction (repository pattern, EF Core, async) and needs implementation, use the grimoire:csharp-coder agent to write the code.\\n</commentary>\\n</example>\\n\\n<example>\\nContext: The user has designed an API endpoint structure and needs the implementation.\\nuser: \"Implement a REST controller for order management. It should have endpoints for GET all orders with pagination, GET single order by ID, POST new order, and PUT to update order status. Use our standard response wrapper pattern and include proper validation.\"\\nassistant: \"I'll launch the grimoire:csharp-coder agent to implement this OrderController based on your API design.\"\\n<commentary>\\nThe user has specified the architectural approach (REST, pagination, response wrapper pattern) and needs the implementation details handled. Use the grimoire:csharp-coder agent.\\n</commentary>\\n</example>\\n\\n<example>\\nContext: The user wants to refactor existing code following a specific pattern they've chosen.\\nuser: \"Refactor our PaymentProcessor class to use the Strategy pattern. We need strategies for CreditCard, PayPal, and BankTransfer. I want the strategies injected via DI.\"\\nassistant: \"I'll use the grimoire:csharp-coder agent to refactor the PaymentProcessor using the Strategy pattern as you've specified.\"\\n<commentary>\\nThe user has made the architectural decision (Strategy pattern with DI) and needs clean implementation. The grimoire:csharp-coder agent will handle the code structure and quality.\\n</commentary>\\n</example>\\n\\n<example>\\nContext: The user provides a technical specification for a service layer component.\\nuser: \"Create a NotificationService that can send emails and SMS. Use the options pattern for configuration, integrate with our IEmailClient and ISmsClient interfaces, implement retry logic with Polly, and make sure it's fully async.\"\\nassistant: \"I'll engage the grimoire:csharp-coder agent to implement this NotificationService following your technical specifications.\"\\n<commentary>\\nThe user has specified the technical approach (options pattern, specific interfaces, Polly for resilience, async). Use the grimoire:csharp-coder agent for implementation.\\n</commentary>\\n</example>"
2
+ name: grimoire.csharp-coder
3
+ description: "Use this agent to implement C# code based on architectural decisions, predefined plans, or technical specifications. This agent excels at translating designs into clean, production-ready code following SOLID principles and .NET conventions—you provide the direction, it writes the code. Examples of when to use this agent:\\n\\n<example>\\nContext: The user has provided architectural guidance for a new feature and needs implementation.\\nuser: \"I need you to implement a repository pattern for our User entity. Use EF Core, make it async, and ensure it follows our existing patterns. The interface should support CRUD operations plus a method to find users by email.\"\\nassistant: \"I'll use the grimoire.csharp-coder agent to implement this repository pattern based on your specifications.\"\\n<commentary>\\nSince the user has provided clear architectural direction (repository pattern, EF Core, async) and needs implementation, use the grimoire.csharp-coder agent to write the code.\\n</commentary>\\n</example>\\n\\n<example>\\nContext: The user has designed an API endpoint structure and needs the implementation.\\nuser: \"Implement a REST controller for order management. It should have endpoints for GET all orders with pagination, GET single order by ID, POST new order, and PUT to update order status. Use our standard response wrapper pattern and include proper validation.\"\\nassistant: \"I'll launch the grimoire.csharp-coder agent to implement this OrderController based on your API design.\"\\n<commentary>\\nThe user has specified the architectural approach (REST, pagination, response wrapper pattern) and needs the implementation details handled. Use the grimoire.csharp-coder agent.\\n</commentary>\\n</example>\\n\\n<example>\\nContext: The user wants to refactor existing code following a specific pattern they've chosen.\\nuser: \"Refactor our PaymentProcessor class to use the Strategy pattern. We need strategies for CreditCard, PayPal, and BankTransfer. I want the strategies injected via DI.\"\\nassistant: \"I'll use the grimoire.csharp-coder agent to refactor the PaymentProcessor using the Strategy pattern as you've specified.\"\\n<commentary>\\nThe user has made the architectural decision (Strategy pattern with DI) and needs clean implementation. The grimoire.csharp-coder agent will handle the code structure and quality.\\n</commentary>\\n</example>\\n\\n<example>\\nContext: The user provides a technical specification for a service layer component.\\nuser: \"Create a NotificationService that can send emails and SMS. Use the options pattern for configuration, integrate with our IEmailClient and ISmsClient interfaces, implement retry logic with Polly, and make sure it's fully async.\"\\nassistant: \"I'll engage the grimoire.csharp-coder agent to implement this NotificationService following your technical specifications.\"\\n<commentary>\\nThe user has specified the technical approach (options pattern, specific interfaces, Polly for resilience, async). Use the grimoire.csharp-coder agent for implementation.\\n</commentary>\\n</example>"
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.
@@ -1,8 +1,9 @@
1
1
  ---
2
- name: grimoire:dotnet-architect
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>"
2
+ name: grimoire.dotnet-architect
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.
@@ -1,8 +1,9 @@
1
1
  ---
2
- name: grimoire:dotnet-unit-test-writer
2
+ 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
@@ -11,7 +12,7 @@ You are an expert .NET unit testing agent. You write clean, maintainable, and co
11
12
 
12
13
  ## MANDATORY: Load Skill First
13
14
 
14
- **IMMEDIATELY** invoke `Skill(grimoire:dotnet-unit-testing)` at the start of every task. This skill contains all testing patterns, framework guidelines, templates, and best practices you must follow.
15
+ **IMMEDIATELY** invoke `Skill(grimoire.dotnet-unit-testing)` at the start of every task. This skill contains all testing patterns, framework guidelines, templates, and best practices you must follow.
15
16
 
16
17
  The skill provides:
17
18