@phuc1403/musketeer 0.4.0 → 0.6.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 (92) hide show
  1. package/INSTALLATION.md +47 -32
  2. package/README.md +49 -49
  3. package/bin/musketeer.js +168 -79
  4. package/manifest.json +303 -292
  5. package/package.json +46 -46
  6. package/src/dotnet-scaffold-copier.js +72 -72
  7. package/src/provisioner/detect.js +113 -93
  8. package/src/self-update.js +77 -73
  9. package/template/.claude/hooks/block-unsafe-adr-title.cjs +72 -70
  10. package/template/.claude/hooks/init-adr-dir.cjs +153 -110
  11. package/template/.claude/hooks/inject-adr-env.cjs +83 -82
  12. package/template/.claude/hooks/lib/adr/command-scan.cjs +107 -0
  13. package/template/.claude/hooks/lib/characteristics/checker.cjs +357 -0
  14. package/template/.claude/hooks/sync-adr-toc.cjs +111 -111
  15. package/template/.claude/hooks/validate-characteristics-hook.cjs +66 -0
  16. package/template/.claude/skills/architecture-characteristic-writer/SKILL.md +197 -99
  17. package/template/.claude/skills/architecture-characteristic-writer/assets/worksheet-template.md +18 -29
  18. package/template/.claude/skills/architecture-characteristic-writer/references/characteristics-catalog.md +22 -88
  19. package/template/.claude/skills/architecture-characteristic-writer/scripts/ranking-table.cjs +171 -0
  20. package/template/dotnet-scaffold/src/__SolutionName__.Api/obj/Debug/net10.0/__SolutionName__.Api.AssemblyInfo.cs +1 -1
  21. package/template/dotnet-scaffold/src/__SolutionName__.Api/obj/Debug/net10.0/__SolutionName__.Api.AssemblyInfoInputs.cache +1 -1
  22. package/template/dotnet-scaffold/src/__SolutionName__.Application/obj/Debug/net10.0/__SolutionName__.Application.AssemblyInfo.cs +1 -1
  23. package/template/dotnet-scaffold/src/__SolutionName__.Application/obj/Debug/net10.0/__SolutionName__.Application.AssemblyInfoInputs.cache +1 -1
  24. package/template/dotnet-scaffold/src/__SolutionName__.Domain/obj/Debug/net10.0/__SolutionName__.Domain.AssemblyInfo.cs +1 -1
  25. package/template/dotnet-scaffold/src/__SolutionName__.Domain/obj/Debug/net10.0/__SolutionName__.Domain.AssemblyInfoInputs.cache +1 -1
  26. package/template/dotnet-scaffold/src/__SolutionName__.Infrastructure/obj/Debug/net10.0/__SolutionName__.Infrastructure.AssemblyInfo.cs +1 -1
  27. package/template/dotnet-scaffold/src/__SolutionName__.Infrastructure/obj/Debug/net10.0/__SolutionName__.Infrastructure.AssemblyInfoInputs.cache +1 -1
  28. package/template/dotnet-scaffold/tests/__SolutionName__.Api.Tests/obj/Debug/net10.0/__SolutionName__.Api.Tests.AssemblyInfo.cs +1 -1
  29. package/template/dotnet-scaffold/tests/__SolutionName__.Api.Tests/obj/Debug/net10.0/__SolutionName__.Api.Tests.AssemblyInfoInputs.cache +1 -1
  30. package/template/dotnet-scaffold/tests/__SolutionName__.Application.Tests/obj/Debug/net10.0/__SolutionName__.Application.Tests.AssemblyInfo.cs +1 -1
  31. package/template/dotnet-scaffold/tests/__SolutionName__.Application.Tests/obj/Debug/net10.0/__SolutionName__.Application.Tests.AssemblyInfoInputs.cache +1 -1
  32. package/template/dotnet-scaffold/tests/__SolutionName__.Domain.Tests/obj/Debug/net10.0/__SolutionName__.Domain.Tests.AssemblyInfo.cs +1 -1
  33. package/template/dotnet-scaffold/tests/__SolutionName__.Domain.Tests/obj/Debug/net10.0/__SolutionName__.Domain.Tests.AssemblyInfoInputs.cache +1 -1
  34. package/template/dotnet-scaffold/tests/__SolutionName__.Infrastructure.Tests/obj/Debug/net10.0/__SolutionName__.Infrastructure.Tests.AssemblyInfo.cs +1 -1
  35. package/template/dotnet-scaffold/tests/__SolutionName__.Infrastructure.Tests/obj/Debug/net10.0/__SolutionName__.Infrastructure.Tests.AssemblyInfoInputs.cache +1 -1
  36. package/template/dotnet-scaffold/src/__SolutionName__.Api/obj/Debug/net10.0/__SolutionName__.Api.assets.cache +0 -0
  37. package/template/dotnet-scaffold/src/__SolutionName__.Api/obj/__SolutionName__.Api.csproj.nuget.dgspec.json +0 -1536
  38. package/template/dotnet-scaffold/src/__SolutionName__.Api/obj/__SolutionName__.Api.csproj.nuget.g.props +0 -16
  39. package/template/dotnet-scaffold/src/__SolutionName__.Api/obj/__SolutionName__.Api.csproj.nuget.g.targets +0 -2
  40. package/template/dotnet-scaffold/src/__SolutionName__.Api/obj/project.assets.json +0 -559
  41. package/template/dotnet-scaffold/src/__SolutionName__.Api/obj/project.nuget.cache +0 -8
  42. package/template/dotnet-scaffold/src/__SolutionName__.Application/obj/Debug/net10.0/__SolutionName__.Application.assets.cache +0 -0
  43. package/template/dotnet-scaffold/src/__SolutionName__.Application/obj/__SolutionName__.Application.csproj.nuget.dgspec.json +0 -690
  44. package/template/dotnet-scaffold/src/__SolutionName__.Application/obj/__SolutionName__.Application.csproj.nuget.g.props +0 -16
  45. package/template/dotnet-scaffold/src/__SolutionName__.Application/obj/__SolutionName__.Application.csproj.nuget.g.targets +0 -2
  46. package/template/dotnet-scaffold/src/__SolutionName__.Application/obj/project.assets.json +0 -376
  47. package/template/dotnet-scaffold/src/__SolutionName__.Application/obj/project.nuget.cache +0 -8
  48. package/template/dotnet-scaffold/src/__SolutionName__.Domain/obj/Debug/net10.0/__SolutionName__.Domain.assets.cache +0 -0
  49. package/template/dotnet-scaffold/src/__SolutionName__.Domain/obj/__SolutionName__.Domain.csproj.nuget.dgspec.json +0 -347
  50. package/template/dotnet-scaffold/src/__SolutionName__.Domain/obj/__SolutionName__.Domain.csproj.nuget.g.props +0 -16
  51. package/template/dotnet-scaffold/src/__SolutionName__.Domain/obj/__SolutionName__.Domain.csproj.nuget.g.targets +0 -2
  52. package/template/dotnet-scaffold/src/__SolutionName__.Domain/obj/project.assets.json +0 -353
  53. package/template/dotnet-scaffold/src/__SolutionName__.Domain/obj/project.nuget.cache +0 -8
  54. package/template/dotnet-scaffold/src/__SolutionName__.Infrastructure/obj/Debug/net10.0/__SolutionName__.Infrastructure.assets.cache +0 -0
  55. package/template/dotnet-scaffold/src/__SolutionName__.Infrastructure/obj/Debug/net10.0/__SolutionName__.Infrastructure.csproj.AssemblyReference.cache +0 -0
  56. package/template/dotnet-scaffold/src/__SolutionName__.Infrastructure/obj/__SolutionName__.Infrastructure.csproj.nuget.dgspec.json +0 -1047
  57. package/template/dotnet-scaffold/src/__SolutionName__.Infrastructure/obj/__SolutionName__.Infrastructure.csproj.nuget.g.props +0 -16
  58. package/template/dotnet-scaffold/src/__SolutionName__.Infrastructure/obj/__SolutionName__.Infrastructure.csproj.nuget.g.targets +0 -7
  59. package/template/dotnet-scaffold/src/__SolutionName__.Infrastructure/obj/project.assets.json +0 -858
  60. package/template/dotnet-scaffold/src/__SolutionName__.Infrastructure/obj/project.nuget.cache +0 -17
  61. package/template/dotnet-scaffold/tests/__SolutionName__.Api.Tests/bin/Debug/net10.0/.msCoverageSourceRootsMapping___SolutionName__.Api.Tests +0 -0
  62. package/template/dotnet-scaffold/tests/__SolutionName__.Api.Tests/obj/Debug/net10.0/__SolutionName__.Api.Tests.assets.cache +0 -0
  63. package/template/dotnet-scaffold/tests/__SolutionName__.Api.Tests/obj/Debug/net10.0/__SolutionName__.Api.Tests.csproj.AssemblyReference.cache +0 -0
  64. package/template/dotnet-scaffold/tests/__SolutionName__.Api.Tests/obj/__SolutionName__.Api.Tests.csproj.nuget.dgspec.json +0 -1908
  65. package/template/dotnet-scaffold/tests/__SolutionName__.Api.Tests/obj/__SolutionName__.Api.Tests.csproj.nuget.g.props +0 -27
  66. package/template/dotnet-scaffold/tests/__SolutionName__.Api.Tests/obj/__SolutionName__.Api.Tests.csproj.nuget.g.targets +0 -16
  67. package/template/dotnet-scaffold/tests/__SolutionName__.Api.Tests/obj/project.assets.json +0 -3283
  68. package/template/dotnet-scaffold/tests/__SolutionName__.Api.Tests/obj/project.nuget.cache +0 -60
  69. package/template/dotnet-scaffold/tests/__SolutionName__.Application.Tests/bin/Debug/net10.0/.msCoverageSourceRootsMapping___SolutionName__.Application.Tests +0 -0
  70. package/template/dotnet-scaffold/tests/__SolutionName__.Application.Tests/obj/Debug/net10.0/__SolutionName__.Application.Tests.assets.cache +0 -0
  71. package/template/dotnet-scaffold/tests/__SolutionName__.Application.Tests/obj/Debug/net10.0/__SolutionName__.Application.Tests.csproj.AssemblyReference.cache +0 -0
  72. package/template/dotnet-scaffold/tests/__SolutionName__.Application.Tests/obj/__SolutionName__.Application.Tests.csproj.nuget.dgspec.json +0 -1055
  73. package/template/dotnet-scaffold/tests/__SolutionName__.Application.Tests/obj/__SolutionName__.Application.Tests.csproj.nuget.g.props +0 -26
  74. package/template/dotnet-scaffold/tests/__SolutionName__.Application.Tests/obj/__SolutionName__.Application.Tests.csproj.nuget.g.targets +0 -11
  75. package/template/dotnet-scaffold/tests/__SolutionName__.Application.Tests/obj/project.assets.json +0 -1662
  76. package/template/dotnet-scaffold/tests/__SolutionName__.Application.Tests/obj/project.nuget.cache +0 -30
  77. package/template/dotnet-scaffold/tests/__SolutionName__.Domain.Tests/bin/Debug/net10.0/.msCoverageSourceRootsMapping___SolutionName__.Domain.Tests +0 -0
  78. package/template/dotnet-scaffold/tests/__SolutionName__.Domain.Tests/obj/Debug/net10.0/__SolutionName__.Domain.Tests.assets.cache +0 -0
  79. package/template/dotnet-scaffold/tests/__SolutionName__.Domain.Tests/obj/Debug/net10.0/__SolutionName__.Domain.Tests.csproj.AssemblyReference.cache +0 -0
  80. package/template/dotnet-scaffold/tests/__SolutionName__.Domain.Tests/obj/__SolutionName__.Domain.Tests.csproj.nuget.dgspec.json +0 -712
  81. package/template/dotnet-scaffold/tests/__SolutionName__.Domain.Tests/obj/__SolutionName__.Domain.Tests.csproj.nuget.g.props +0 -26
  82. package/template/dotnet-scaffold/tests/__SolutionName__.Domain.Tests/obj/__SolutionName__.Domain.Tests.csproj.nuget.g.targets +0 -11
  83. package/template/dotnet-scaffold/tests/__SolutionName__.Domain.Tests/obj/project.assets.json +0 -1644
  84. package/template/dotnet-scaffold/tests/__SolutionName__.Domain.Tests/obj/project.nuget.cache +0 -30
  85. package/template/dotnet-scaffold/tests/__SolutionName__.Infrastructure.Tests/bin/Debug/net10.0/.msCoverageSourceRootsMapping___SolutionName__.Infrastructure.Tests +0 -0
  86. package/template/dotnet-scaffold/tests/__SolutionName__.Infrastructure.Tests/obj/Debug/net10.0/__SolutionName__.Infrastructure.Tests.assets.cache +0 -0
  87. package/template/dotnet-scaffold/tests/__SolutionName__.Infrastructure.Tests/obj/Debug/net10.0/__SolutionName__.Infrastructure.Tests.csproj.AssemblyReference.cache +0 -0
  88. package/template/dotnet-scaffold/tests/__SolutionName__.Infrastructure.Tests/obj/__SolutionName__.Infrastructure.Tests.csproj.nuget.dgspec.json +0 -1412
  89. package/template/dotnet-scaffold/tests/__SolutionName__.Infrastructure.Tests/obj/__SolutionName__.Infrastructure.Tests.csproj.nuget.g.props +0 -26
  90. package/template/dotnet-scaffold/tests/__SolutionName__.Infrastructure.Tests/obj/__SolutionName__.Infrastructure.Tests.csproj.nuget.g.targets +0 -13
  91. package/template/dotnet-scaffold/tests/__SolutionName__.Infrastructure.Tests/obj/project.assets.json +0 -2130
  92. package/template/dotnet-scaffold/tests/__SolutionName__.Infrastructure.Tests/obj/project.nuget.cache +0 -38
package/manifest.json CHANGED
@@ -1,292 +1,303 @@
1
- {
2
- "version": 1,
3
- "musketeers": {
4
- "core": {
5
- "label": "core",
6
- "description": "Always-on foundation: research, handoff, skill-creator, git (+ git-manager) + statusline, usage-context & format-json hooks.",
7
- "locked": true,
8
- "deps": [],
9
- "files": [
10
- "skills/research/**",
11
- "skills/handoff/**",
12
- "skills/skill-creator/**",
13
- "skills/git/**",
14
- "skills/install.ps1",
15
- "skills/install.sh",
16
- "agents/researcher.md",
17
- "agents/git-manager.md",
18
- "statusline.cjs",
19
- "hooks/usage-context-awareness.cjs",
20
- "hooks/lib/**",
21
- "hooks/format-json-hook.js"
22
- ],
23
- "settings": [
24
- {
25
- "event": "statusLine",
26
- "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/statusline.cjs\"",
27
- "padding": 0
28
- },
29
- {
30
- "event": "UserPromptSubmit",
31
- "matcher": null,
32
- "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/usage-context-awareness.cjs\"",
33
- "order": 1
34
- },
35
- {
36
- "event": "PostToolUse",
37
- "matcher": null,
38
- "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/usage-context-awareness.cjs\"",
39
- "order": 1
40
- },
41
- {
42
- "event": "PostToolUse",
43
- "matcher": "Write|Edit|MultiEdit",
44
- "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/format-json-hook.js\"",
45
- "order": 2
46
- }
47
- ],
48
- "prereqs": ["node", "git", "gh", "python", "venv-anthropic", "claude-cli"]
49
- },
50
- "architecture": {
51
- "label": "architecture",
52
- "description": "DDD architecture authoring: adr-writer, architecture-characteristic-writer, context-map (CML) + validation hook.",
53
- "locked": false,
54
- "deps": [],
55
- "files": [
56
- "skills/adr-writer/**",
57
- "skills/architecture-characteristic-writer/**",
58
- "skills/context-map/**",
59
- "hooks/validate-cml-hook.js",
60
- "hooks/sync-adr-toc.cjs",
61
- "hooks/warn-missing-characteristics.cjs",
62
- "hooks/block-unsafe-adr-title.cjs",
63
- "hooks/init-adr-dir.cjs",
64
- "hooks/inject-adr-env.cjs"
65
- ],
66
- "settings": [
67
- {
68
- "event": "PostToolUse",
69
- "matcher": "Write|Edit|MultiEdit",
70
- "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/validate-cml-hook.js\"",
71
- "order": 1
72
- },
73
- {
74
- "event": "PostToolUse",
75
- "matcher": "Bash",
76
- "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/sync-adr-toc.cjs\"",
77
- "order": 2,
78
- "statusMessage": "Syncing ADR index"
79
- },
80
- {
81
- "event": "PreToolUse",
82
- "matcher": "Bash",
83
- "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/inject-adr-env.cjs\"",
84
- "order": 3,
85
- "statusMessage": "Filling in adr new env vars"
86
- },
87
- {
88
- "event": "PreToolUse",
89
- "matcher": "Bash",
90
- "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/warn-missing-characteristics.cjs\"",
91
- "order": 4
92
- },
93
- {
94
- "event": "PreToolUse",
95
- "matcher": "Bash",
96
- "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/block-unsafe-adr-title.cjs\"",
97
- "order": 5,
98
- "statusMessage": "Checking ADR title safety"
99
- },
100
- {
101
- "event": "PreToolUse",
102
- "matcher": "Bash",
103
- "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/init-adr-dir.cjs\"",
104
- "order": 6,
105
- "statusMessage": "Checking ADR directory setup"
106
- }
107
- ],
108
- "prereqs": ["java", "cm-cli", "adr-tools"]
109
- },
110
- "hallmark": {
111
- "label": "hallmark",
112
- "description": "Hallmark design system: hallmark rubric, hallmark-explore, hallmark-loop + auditor/explorer agents.",
113
- "locked": false,
114
- "deps": [],
115
- "files": [
116
- "skills/hallmark/**",
117
- "skills/hallmark-explore/**",
118
- "skills/hallmark-loop/**",
119
- "agents/hallmark-auditor.md",
120
- "agents/hallmark-explorer.md"
121
- ],
122
- "settings": [],
123
- "prereqs": ["python", "playwright-mcp"]
124
- },
125
- "code-review": {
126
- "label": "code-review",
127
- "description": "Adversarial code review skill + code-reviewer agent (commit / pending / PR modes).",
128
- "locked": false,
129
- "deps": [],
130
- "files": [
131
- "skills/code-review/**",
132
- "agents/code-reviewer.md"
133
- ],
134
- "settings": [],
135
- "prereqs": ["git", "gh"]
136
- },
137
- "dotnet": {
138
- "label": "dotnet",
139
- "description": ".NET extras: tdd, knowledge-crunching + EF migration-guard & CONTEXT auto-load hooks. Muster also always merges 4 quality-gate MSBuild properties into root Directory.Build.props (any dotnet-selected project, set MUSKETEER_SKIP_DOTNET_PROPS=1 to skip) and scaffolds a generic src/tests Clean Architecture skeleton when the project is genuinely blank.",
140
- "locked": false,
141
- "deps": [],
142
- "files": [
143
- "skills/tdd/**",
144
- "skills/knowledge-crunching/**",
145
- "hooks/block-migration-edits.cjs",
146
- "hooks/inject-context.cjs"
147
- ],
148
- "settings": [
149
- {
150
- "event": "PreToolUse",
151
- "matcher": "Write|Edit|MultiEdit",
152
- "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/block-migration-edits.cjs\"",
153
- "order": 1,
154
- "statusMessage": "Checking for EF migration edits"
155
- },
156
- {
157
- "event": "SessionStart",
158
- "matcher": "startup|resume|clear|compact",
159
- "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/inject-context.cjs\"",
160
- "order": 1,
161
- "statusMessage": "Loading domain CONTEXT"
162
- }
163
- ],
164
- "prereqs": []
165
- },
166
- "design-docs": {
167
- "label": "design-docs",
168
- "description": "SessionStart hook that injects architecture/context-map/adr docs/ outputs into context.",
169
- "locked": false,
170
- "deps": [],
171
- "files": [
172
- "hooks/inject-design-docs.cjs"
173
- ],
174
- "settings": [
175
- {
176
- "event": "SessionStart",
177
- "matcher": "startup|resume|clear|compact",
178
- "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/inject-design-docs.cjs\"",
179
- "order": 1,
180
- "statusMessage": "Injecting design artifacts"
181
- }
182
- ],
183
- "prereqs": []
184
- }
185
- },
186
- "prereqs": {
187
- "node": {
188
- "detect": "node --version",
189
- "minVersion": "18",
190
- "kind": "package",
191
- "install": {
192
- "win": "winget install -e --id OpenJS.NodeJS.LTS",
193
- "mac": "brew install node",
194
- "linux": {
195
- "apt": "sudo apt-get install -y nodejs npm",
196
- "dnf": "sudo dnf install -y nodejs",
197
- "pacman": "sudo pacman -S --noconfirm nodejs npm"
198
- }
199
- }
200
- },
201
- "git": {
202
- "detect": "git --version",
203
- "kind": "package",
204
- "install": {
205
- "win": "winget install -e --id Git.Git",
206
- "mac": "brew install git",
207
- "linux": {
208
- "apt": "sudo apt-get install -y git",
209
- "dnf": "sudo dnf install -y git",
210
- "pacman": "sudo pacman -S --noconfirm git"
211
- }
212
- }
213
- },
214
- "python": {
215
- "detect": "python --version",
216
- "minVersion": "3.8",
217
- "kind": "package",
218
- "install": {
219
- "win": "winget install -e --id Python.Python.3.12",
220
- "mac": "brew install python@3.12",
221
- "linux": {
222
- "apt": "sudo apt-get install -y python3 python3-pip python3-venv",
223
- "dnf": "sudo dnf install -y python3 python3-pip",
224
- "pacman": "sudo pacman -S --noconfirm python python-pip"
225
- }
226
- }
227
- },
228
- "venv-anthropic": {
229
- "kind": "venv",
230
- "needs": ["python"]
231
- },
232
- "claude-cli": {
233
- "detect": "claude --version",
234
- "kind": "package",
235
- "install": {
236
- "win": "powershell -NoProfile -Command \"irm https://claude.ai/install.ps1 | iex\"",
237
- "mac": "brew install --cask claude-code",
238
- "linux": "curl -fsSL https://claude.ai/install.sh | bash"
239
- }
240
- },
241
- "java": {
242
- "detect": "java -version",
243
- "minVersion": "8",
244
- "kind": "package",
245
- "install": {
246
- "win": "winget install -e --id Microsoft.OpenJDK.17",
247
- "mac": "brew install --cask temurin",
248
- "linux": {
249
- "apt": "sudo apt-get install -y openjdk-17-jdk",
250
- "dnf": "sudo dnf install -y java-17-openjdk",
251
- "pacman": "sudo pacman -S --noconfirm jdk-openjdk"
252
- }
253
- }
254
- },
255
- "cm-cli": {
256
- "kind": "note",
257
- "needs": ["java"]
258
- },
259
- "adr-tools": {
260
- "detect": "adr config",
261
- "kind": "package",
262
- "needs": ["git"],
263
- "install": {
264
- "mac": "brew install adr-tools",
265
- "linux": {
266
- "apt": "sudo apt-get install -y adr-tools"
267
- }
268
- }
269
- },
270
- "gh": {
271
- "detect": "gh --version",
272
- "kind": "package",
273
- "install": {
274
- "win": "winget install -e --id GitHub.cli",
275
- "mac": "brew install gh",
276
- "linux": {
277
- "apt": "sudo apt-get install -y gh",
278
- "dnf": "sudo dnf install -y gh",
279
- "pacman": "sudo pacman -S --noconfirm github-cli"
280
- }
281
- }
282
- },
283
- "playwright-mcp": {
284
- "kind": "mcp",
285
- "needs": ["node", "claude-cli"]
286
- },
287
- "anthropic-api-key": {
288
- "kind": "secret",
289
- "guideOnly": true
290
- }
291
- }
292
- }
1
+ {
2
+ "version": 1,
3
+ "musketeers": {
4
+ "core": {
5
+ "label": "core",
6
+ "description": "Always-on foundation: research, handoff, skill-creator, git (+ git-manager) + statusline, usage-context & format-json hooks.",
7
+ "locked": true,
8
+ "deps": [],
9
+ "files": [
10
+ "skills/research/**",
11
+ "skills/handoff/**",
12
+ "skills/skill-creator/**",
13
+ "skills/git/**",
14
+ "skills/install.ps1",
15
+ "skills/install.sh",
16
+ "agents/researcher.md",
17
+ "agents/git-manager.md",
18
+ "statusline.cjs",
19
+ "hooks/usage-context-awareness.cjs",
20
+ "hooks/lib/**",
21
+ "hooks/format-json-hook.js"
22
+ ],
23
+ "settings": [
24
+ {
25
+ "event": "statusLine",
26
+ "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/statusline.cjs\"",
27
+ "padding": 0
28
+ },
29
+ {
30
+ "event": "UserPromptSubmit",
31
+ "matcher": null,
32
+ "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/usage-context-awareness.cjs\"",
33
+ "order": 1
34
+ },
35
+ {
36
+ "event": "PostToolUse",
37
+ "matcher": null,
38
+ "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/usage-context-awareness.cjs\"",
39
+ "order": 1
40
+ },
41
+ {
42
+ "event": "PostToolUse",
43
+ "matcher": "Write|Edit|MultiEdit",
44
+ "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/format-json-hook.js\"",
45
+ "order": 2
46
+ }
47
+ ],
48
+ "prereqs": ["node", "git", "gh", "python", "venv-anthropic", "claude-cli"]
49
+ },
50
+ "architecture": {
51
+ "label": "architecture",
52
+ "description": "DDD architecture authoring: adr-writer, architecture-characteristic-writer, context-map (CML) + validation hook.",
53
+ "locked": false,
54
+ "deps": [],
55
+ "files": [
56
+ "skills/adr-writer/**",
57
+ "skills/architecture-characteristic-writer/**",
58
+ "skills/context-map/**",
59
+ "hooks/validate-cml-hook.js",
60
+ "hooks/validate-characteristics-hook.cjs",
61
+ "hooks/lib/characteristics/**",
62
+ "hooks/lib/adr/**",
63
+ "hooks/sync-adr-toc.cjs",
64
+ "hooks/warn-missing-characteristics.cjs",
65
+ "hooks/block-unsafe-adr-title.cjs",
66
+ "hooks/init-adr-dir.cjs",
67
+ "hooks/inject-adr-env.cjs"
68
+ ],
69
+ "settings": [
70
+ {
71
+ "event": "PostToolUse",
72
+ "matcher": "Write|Edit|MultiEdit",
73
+ "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/validate-cml-hook.js\"",
74
+ "order": 1
75
+ },
76
+ {
77
+ "event": "PostToolUse",
78
+ "matcher": "Write|Edit|MultiEdit",
79
+ "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/validate-characteristics-hook.cjs\"",
80
+ "order": 2,
81
+ "statusMessage": "Checking architecture characteristics"
82
+ },
83
+ {
84
+ "event": "PostToolUse",
85
+ "matcher": "Bash",
86
+ "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/sync-adr-toc.cjs\"",
87
+ "order": 2,
88
+ "statusMessage": "Syncing ADR index"
89
+ },
90
+ {
91
+ "event": "PreToolUse",
92
+ "matcher": "Bash",
93
+ "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/inject-adr-env.cjs\"",
94
+ "order": 3,
95
+ "statusMessage": "Filling in adr new env vars"
96
+ },
97
+ {
98
+ "event": "PreToolUse",
99
+ "matcher": "Bash",
100
+ "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/warn-missing-characteristics.cjs\"",
101
+ "order": 4
102
+ },
103
+ {
104
+ "event": "PreToolUse",
105
+ "matcher": "Bash",
106
+ "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/block-unsafe-adr-title.cjs\"",
107
+ "order": 5,
108
+ "statusMessage": "Checking ADR title safety"
109
+ },
110
+ {
111
+ "event": "PreToolUse",
112
+ "matcher": "Bash",
113
+ "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/init-adr-dir.cjs\"",
114
+ "order": 6,
115
+ "statusMessage": "Checking ADR directory setup"
116
+ }
117
+ ],
118
+ "prereqs": ["java", "cm-cli", "adr-tools"]
119
+ },
120
+ "hallmark": {
121
+ "label": "hallmark",
122
+ "description": "Hallmark design system: hallmark rubric, hallmark-explore, hallmark-loop + auditor/explorer agents.",
123
+ "locked": false,
124
+ "deps": [],
125
+ "files": [
126
+ "skills/hallmark/**",
127
+ "skills/hallmark-explore/**",
128
+ "skills/hallmark-loop/**",
129
+ "agents/hallmark-auditor.md",
130
+ "agents/hallmark-explorer.md"
131
+ ],
132
+ "settings": [],
133
+ "prereqs": ["python", "playwright-mcp"]
134
+ },
135
+ "code-review": {
136
+ "label": "code-review",
137
+ "description": "Adversarial code review skill + code-reviewer agent (commit / pending / PR modes).",
138
+ "locked": false,
139
+ "deps": [],
140
+ "files": [
141
+ "skills/code-review/**",
142
+ "agents/code-reviewer.md"
143
+ ],
144
+ "settings": [],
145
+ "prereqs": ["git", "gh"]
146
+ },
147
+ "dotnet": {
148
+ "label": "dotnet",
149
+ "description": ".NET extras: tdd, knowledge-crunching + EF migration-guard & CONTEXT auto-load hooks. Muster also always merges 4 quality-gate MSBuild properties into root Directory.Build.props (any dotnet-selected project, set MUSKETEER_SKIP_DOTNET_PROPS=1 to skip) and scaffolds a generic src/tests Clean Architecture skeleton when the project is genuinely blank.",
150
+ "locked": false,
151
+ "deps": [],
152
+ "files": [
153
+ "skills/tdd/**",
154
+ "skills/knowledge-crunching/**",
155
+ "hooks/block-migration-edits.cjs",
156
+ "hooks/inject-context.cjs"
157
+ ],
158
+ "settings": [
159
+ {
160
+ "event": "PreToolUse",
161
+ "matcher": "Write|Edit|MultiEdit",
162
+ "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/block-migration-edits.cjs\"",
163
+ "order": 1,
164
+ "statusMessage": "Checking for EF migration edits"
165
+ },
166
+ {
167
+ "event": "SessionStart",
168
+ "matcher": "startup|resume|clear|compact",
169
+ "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/inject-context.cjs\"",
170
+ "order": 1,
171
+ "statusMessage": "Loading domain CONTEXT"
172
+ }
173
+ ],
174
+ "prereqs": []
175
+ },
176
+ "design-docs": {
177
+ "label": "design-docs",
178
+ "description": "SessionStart hook that injects architecture/context-map/adr docs/ outputs into context.",
179
+ "locked": false,
180
+ "deps": [],
181
+ "files": [
182
+ "hooks/inject-design-docs.cjs"
183
+ ],
184
+ "settings": [
185
+ {
186
+ "event": "SessionStart",
187
+ "matcher": "startup|resume|clear|compact",
188
+ "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/inject-design-docs.cjs\"",
189
+ "order": 1,
190
+ "statusMessage": "Injecting design artifacts"
191
+ }
192
+ ],
193
+ "prereqs": []
194
+ }
195
+ },
196
+ "prereqs": {
197
+ "node": {
198
+ "detect": "node --version",
199
+ "minVersion": "18",
200
+ "kind": "package",
201
+ "install": {
202
+ "win": "winget install -e --id OpenJS.NodeJS.LTS",
203
+ "mac": "brew install node",
204
+ "linux": {
205
+ "apt": "sudo apt-get install -y nodejs npm",
206
+ "dnf": "sudo dnf install -y nodejs",
207
+ "pacman": "sudo pacman -S --noconfirm nodejs npm"
208
+ }
209
+ }
210
+ },
211
+ "git": {
212
+ "detect": "git --version",
213
+ "kind": "package",
214
+ "install": {
215
+ "win": "winget install -e --id Git.Git",
216
+ "mac": "brew install git",
217
+ "linux": {
218
+ "apt": "sudo apt-get install -y git",
219
+ "dnf": "sudo dnf install -y git",
220
+ "pacman": "sudo pacman -S --noconfirm git"
221
+ }
222
+ }
223
+ },
224
+ "python": {
225
+ "detect": "python --version",
226
+ "minVersion": "3.8",
227
+ "kind": "package",
228
+ "install": {
229
+ "win": "winget install -e --id Python.Python.3.12",
230
+ "mac": "brew install python@3.12",
231
+ "linux": {
232
+ "apt": "sudo apt-get install -y python3 python3-pip python3-venv",
233
+ "dnf": "sudo dnf install -y python3 python3-pip",
234
+ "pacman": "sudo pacman -S --noconfirm python python-pip"
235
+ }
236
+ }
237
+ },
238
+ "venv-anthropic": {
239
+ "kind": "venv",
240
+ "needs": ["python"]
241
+ },
242
+ "claude-cli": {
243
+ "detect": "claude --version",
244
+ "kind": "package",
245
+ "install": {
246
+ "win": "powershell -NoProfile -Command \"irm https://claude.ai/install.ps1 | iex\"",
247
+ "mac": "brew install --cask claude-code",
248
+ "linux": "curl -fsSL https://claude.ai/install.sh | bash"
249
+ }
250
+ },
251
+ "java": {
252
+ "detect": "java -version",
253
+ "minVersion": "8",
254
+ "kind": "package",
255
+ "install": {
256
+ "win": "winget install -e --id Microsoft.OpenJDK.17",
257
+ "mac": "brew install --cask temurin",
258
+ "linux": {
259
+ "apt": "sudo apt-get install -y openjdk-17-jdk",
260
+ "dnf": "sudo dnf install -y java-17-openjdk",
261
+ "pacman": "sudo pacman -S --noconfirm jdk-openjdk"
262
+ }
263
+ }
264
+ },
265
+ "cm-cli": {
266
+ "kind": "note",
267
+ "needs": ["java"]
268
+ },
269
+ "adr-tools": {
270
+ "detect": "adr config",
271
+ "detectShell": "bash",
272
+ "kind": "package",
273
+ "needs": ["git"],
274
+ "install": {
275
+ "mac": "brew install adr-tools",
276
+ "linux": {
277
+ "apt": "sudo apt-get install -y adr-tools"
278
+ }
279
+ }
280
+ },
281
+ "gh": {
282
+ "detect": "gh --version",
283
+ "kind": "package",
284
+ "install": {
285
+ "win": "winget install -e --id GitHub.cli",
286
+ "mac": "brew install gh",
287
+ "linux": {
288
+ "apt": "sudo apt-get install -y gh",
289
+ "dnf": "sudo dnf install -y gh",
290
+ "pacman": "sudo pacman -S --noconfirm github-cli"
291
+ }
292
+ }
293
+ },
294
+ "playwright-mcp": {
295
+ "kind": "mcp",
296
+ "needs": ["node", "claude-cli"]
297
+ },
298
+ "anthropic-api-key": {
299
+ "kind": "secret",
300
+ "guideOnly": true
301
+ }
302
+ }
303
+ }