@antomanc/aginit 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +108 -28
  3. package/THIRD_PARTY_NOTICES.md +92 -16
  4. package/dist/adapters/agent-docs.d.ts +32 -0
  5. package/dist/adapters/agent-docs.d.ts.map +1 -0
  6. package/dist/adapters/agent-docs.js +146 -0
  7. package/dist/adapters/agent-docs.js.map +1 -0
  8. package/dist/adapters/agents-md.d.ts +13 -1
  9. package/dist/adapters/agents-md.d.ts.map +1 -1
  10. package/dist/adapters/agents-md.js +137 -120
  11. package/dist/adapters/agents-md.js.map +1 -1
  12. package/dist/adapters/e2e.d.ts +15 -0
  13. package/dist/adapters/e2e.d.ts.map +1 -0
  14. package/dist/adapters/e2e.js +55 -0
  15. package/dist/adapters/e2e.js.map +1 -0
  16. package/dist/adapters/skills.d.ts +5 -0
  17. package/dist/adapters/skills.d.ts.map +1 -1
  18. package/dist/adapters/skills.js +17 -0
  19. package/dist/adapters/skills.js.map +1 -1
  20. package/dist/cli/capabilities.d.ts +17 -0
  21. package/dist/cli/capabilities.d.ts.map +1 -0
  22. package/dist/cli/capabilities.js +149 -0
  23. package/dist/cli/capabilities.js.map +1 -0
  24. package/dist/cli/doctor.d.ts +16 -0
  25. package/dist/cli/doctor.d.ts.map +1 -1
  26. package/dist/cli/doctor.js +90 -70
  27. package/dist/cli/doctor.js.map +1 -1
  28. package/dist/cli/init.js +1 -1
  29. package/dist/cli/init.js.map +1 -1
  30. package/dist/cli/main.d.ts.map +1 -1
  31. package/dist/cli/main.js +117 -20
  32. package/dist/cli/main.js.map +1 -1
  33. package/dist/cli/new.d.ts +15 -1
  34. package/dist/cli/new.d.ts.map +1 -1
  35. package/dist/cli/new.js +157 -68
  36. package/dist/cli/new.js.map +1 -1
  37. package/dist/cli/wizard.d.ts +5 -0
  38. package/dist/cli/wizard.d.ts.map +1 -1
  39. package/dist/cli/wizard.js +104 -102
  40. package/dist/cli/wizard.js.map +1 -1
  41. package/dist/config/defaults.d.ts +14 -6
  42. package/dist/config/defaults.d.ts.map +1 -1
  43. package/dist/config/defaults.js +38 -174
  44. package/dist/config/defaults.js.map +1 -1
  45. package/dist/config/schema.d.ts +14 -0
  46. package/dist/config/schema.d.ts.map +1 -1
  47. package/dist/config/schema.js.map +1 -1
  48. package/dist/config/validation.d.ts +1 -0
  49. package/dist/config/validation.d.ts.map +1 -1
  50. package/dist/config/validation.js +63 -0
  51. package/dist/config/validation.js.map +1 -1
  52. package/dist/detect/index.d.ts +18 -0
  53. package/dist/detect/index.d.ts.map +1 -0
  54. package/dist/detect/index.js +120 -0
  55. package/dist/detect/index.js.map +1 -0
  56. package/dist/index.d.ts +5 -0
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +5 -0
  59. package/dist/index.js.map +1 -1
  60. package/dist/presets/cli.d.ts.map +1 -1
  61. package/dist/presets/cli.js +7 -0
  62. package/dist/presets/cli.js.map +1 -1
  63. package/dist/presets/generic.d.ts.map +1 -1
  64. package/dist/presets/generic.js +4 -1
  65. package/dist/presets/generic.js.map +1 -1
  66. package/dist/presets/testing.d.ts +1 -1
  67. package/dist/presets/testing.d.ts.map +1 -1
  68. package/dist/presets/testing.js +22 -8
  69. package/dist/presets/testing.js.map +1 -1
  70. package/dist/presets/web.d.ts.map +1 -1
  71. package/dist/presets/web.js +5 -2
  72. package/dist/presets/web.js.map +1 -1
  73. package/dist/registry/catalog.d.ts +13 -0
  74. package/dist/registry/catalog.d.ts.map +1 -0
  75. package/dist/registry/catalog.js +544 -0
  76. package/dist/registry/catalog.js.map +1 -0
  77. package/dist/registry/index.d.ts +84 -0
  78. package/dist/registry/index.d.ts.map +1 -0
  79. package/dist/registry/index.js +309 -0
  80. package/dist/registry/index.js.map +1 -0
  81. package/dist/registry/setup.d.ts +14 -0
  82. package/dist/registry/setup.d.ts.map +1 -0
  83. package/dist/registry/setup.js +25 -0
  84. package/dist/registry/setup.js.map +1 -0
  85. package/dist/registry/types.d.ts +115 -0
  86. package/dist/registry/types.d.ts.map +1 -0
  87. package/dist/registry/types.js +2 -0
  88. package/dist/registry/types.js.map +1 -0
  89. package/package.json +3 -2
  90. package/src/adapters/agent-docs.ts +184 -0
  91. package/src/adapters/agents-md.ts +160 -137
  92. package/src/adapters/e2e.ts +58 -0
  93. package/src/adapters/skills.ts +18 -0
  94. package/src/cli/capabilities.ts +176 -0
  95. package/src/cli/doctor.ts +83 -66
  96. package/src/cli/init.ts +1 -1
  97. package/src/cli/main.ts +125 -20
  98. package/src/cli/new.ts +195 -74
  99. package/src/cli/wizard.ts +130 -103
  100. package/src/config/defaults.ts +57 -179
  101. package/src/config/schema.ts +15 -0
  102. package/src/config/validation.ts +56 -0
  103. package/src/detect/index.ts +134 -0
  104. package/src/index.ts +5 -0
  105. package/src/presets/cli.ts +6 -0
  106. package/src/presets/generic.ts +4 -1
  107. package/src/presets/testing.ts +29 -12
  108. package/src/presets/web.ts +4 -2
  109. package/src/registry/catalog.ts +569 -0
  110. package/src/registry/index.ts +395 -0
  111. package/src/registry/setup.ts +40 -0
  112. package/src/registry/types.ts +109 -0
@@ -0,0 +1,544 @@
1
+ /**
2
+ * The stable skill set from mattpocock/skills installed by default:
3
+ * every skill in the `engineering` and `productivity` categories.
4
+ *
5
+ * The `misc` (rarely used) and `in-progress` categories are deliberately
6
+ * excluded. Re-evaluate when the upstream repository reshuffles categories
7
+ * (`pnpm check:skills` reports drift).
8
+ */
9
+ export const MATT_POCOCK_SKILLS = [
10
+ // engineering
11
+ 'ask-matt',
12
+ 'code-review',
13
+ 'codebase-design',
14
+ 'diagnosing-bugs',
15
+ 'domain-modeling',
16
+ 'grill-with-docs',
17
+ 'implement',
18
+ 'implement-spec',
19
+ 'improve-codebase-architecture',
20
+ 'pr',
21
+ 'prototype',
22
+ 'research',
23
+ 'retro',
24
+ 'setup-matt-pocock-skills',
25
+ 'tdd',
26
+ 'to-spec',
27
+ 'to-tickets',
28
+ 'triage',
29
+ 'wayfinder',
30
+ 'wizard',
31
+ // productivity
32
+ 'grill-me',
33
+ 'grilling',
34
+ 'handoff',
35
+ 'teach',
36
+ 'to-questionnaire',
37
+ 'wait-what',
38
+ 'writing-for-agents'
39
+ ];
40
+ export const SUPERPOWERS_SKILLS = [
41
+ 'brainstorming',
42
+ 'dispatching-parallel-agents',
43
+ 'executing-plans',
44
+ 'finishing-a-development-branch',
45
+ 'receiving-code-review',
46
+ 'requesting-code-review',
47
+ 'subagent-driven-development',
48
+ 'systematic-debugging',
49
+ 'test-driven-development',
50
+ 'using-git-worktrees',
51
+ 'using-superpowers',
52
+ 'verification-before-completion',
53
+ 'writing-plans',
54
+ 'writing-skills'
55
+ ];
56
+ const UI_PLATFORMS = ['web', 'mobile-native', 'mobile-rn'];
57
+ const MOBILE_PLATFORMS = ['mobile-native', 'mobile-rn'];
58
+ const code = (command, fallback) => '`' + (command ?? fallback) + '`';
59
+ const isMobile = (ctx) => ctx.platform === 'mobile-native' || ctx.platform === 'mobile-rn';
60
+ const uiDriverName = (ctx) => ctx.has('agent-device') ? 'agent-device' : ctx.has('agent-browser') ? 'agent-browser' : null;
61
+ export const CATALOG = [
62
+ // ── Codebase graph ────────────────────────────────────────────────────────
63
+ {
64
+ id: 'graft',
65
+ name: 'Graft',
66
+ description: 'Codebase context graph: graft map / ask --source / skeleton / callers',
67
+ category: 'codebase-graph',
68
+ author: 'NanoNets / Trail (graft contributors)',
69
+ repoUrl: 'https://github.com/trailhq/Trail-Code',
70
+ license: 'MIT',
71
+ supportedPlatforms: ['all'],
72
+ requiresNodeInProjectRoot: false,
73
+ default: true,
74
+ install: [
75
+ { kind: 'binary', bin: 'graft', install: 'npm install -g @nanonets/graft' },
76
+ { kind: 'setup', setup: 'graft' }
77
+ ],
78
+ doctor: [{ kind: 'file', path: 'graft/INDEX.md', fix: 'graft build' }],
79
+ routing: {
80
+ task: 'Codebase exploration & impact analysis',
81
+ read: '`graft ask "<query>" --source` / `graft skeleton <file>` (see the Graft section)'
82
+ },
83
+ rebuttals: [
84
+ {
85
+ excuse: "I'll grep/read the whole folder to understand the module.",
86
+ rule: 'Forbidden. Query `graft ask "<query>" --source` or `graft callers <symbol>` first to save context tokens.'
87
+ }
88
+ ]
89
+ },
90
+ // ── Methodology (exactly one) ─────────────────────────────────────────────
91
+ {
92
+ id: 'pocock',
93
+ name: 'Matt Pocock skills',
94
+ description: 'tdd, grill-me, to-spec, to-tickets, implement-spec, code-review, diagnosing-bugs, ...',
95
+ category: 'methodology',
96
+ author: 'Matt Pocock',
97
+ repoUrl: 'https://github.com/mattpocock/skills',
98
+ license: 'MIT',
99
+ supportedPlatforms: ['all'],
100
+ requiresNodeInProjectRoot: false,
101
+ default: true,
102
+ install: [{ kind: 'skills-sh', repo: 'mattpocock/skills', skills: [...MATT_POCOCK_SKILLS] }],
103
+ guide: {
104
+ doc: 'workflows',
105
+ render: () => [
106
+ '## Methodology: Matt Pocock skills',
107
+ 'Not sure which skill fits? Start with `ask-matt`; it routes to the right one.',
108
+ '',
109
+ '| Phase | Skills |',
110
+ '| --- | --- |',
111
+ '| Clarify intent | `grill-me`, `grill-with-docs`, `wait-what` |',
112
+ '| Specify & plan | `to-spec`, `to-tickets`, `domain-modeling`, `codebase-design` |',
113
+ '| Build | `tdd`, `implement`, `implement-spec`, `prototype` |',
114
+ '| Debug | `diagnosing-bugs`, `triage` |',
115
+ '| Review & ship | `code-review`, `pr`, `retro`, `handoff` |'
116
+ ].join('\n')
117
+ }
118
+ },
119
+ {
120
+ id: 'superpowers',
121
+ name: 'Superpowers',
122
+ description: 'Socratic brainstorming, plan/execute loops, subagent review, git worktree workflow',
123
+ category: 'methodology',
124
+ author: 'Jesse Vincent (obra)',
125
+ repoUrl: 'https://github.com/obra/superpowers',
126
+ license: 'MIT',
127
+ supportedPlatforms: ['all'],
128
+ requiresNodeInProjectRoot: false,
129
+ install: [{ kind: 'skills-sh', repo: 'obra/superpowers', skills: [...SUPERPOWERS_SKILLS] }],
130
+ guide: {
131
+ doc: 'workflows',
132
+ render: () => [
133
+ '## Methodology: Superpowers',
134
+ 'Start every task with `using-superpowers`; it decides which skill applies.',
135
+ '',
136
+ '| Phase | Skills |',
137
+ '| --- | --- |',
138
+ '| Clarify intent | `brainstorming` |',
139
+ '| Plan | `writing-plans`, `using-git-worktrees` |',
140
+ '| Build | `test-driven-development`, `executing-plans`, `subagent-driven-development`, `dispatching-parallel-agents` |',
141
+ '| Debug | `systematic-debugging` |',
142
+ '| Review & ship | `requesting-code-review`, `receiving-code-review`, `verification-before-completion`, `finishing-a-development-branch` |'
143
+ ].join('\n')
144
+ }
145
+ },
146
+ {
147
+ id: 'minimal',
148
+ name: 'Minimal',
149
+ description: 'Discipline core only (ponytail, karpathy-guidelines, rebuttals); no slash-command suite',
150
+ category: 'methodology',
151
+ author: 'aginit',
152
+ repoUrl: 'https://github.com/antomanc/aginit',
153
+ license: 'MIT',
154
+ supportedPlatforms: ['all'],
155
+ requiresNodeInProjectRoot: false,
156
+ install: [],
157
+ guide: {
158
+ doc: 'workflows',
159
+ render: () => [
160
+ '## Methodology: minimal',
161
+ 'No workflow suite is installed. Plan in small verifiable steps, write the failing test first,',
162
+ 'and lean on the discipline skills below.'
163
+ ].join('\n')
164
+ }
165
+ },
166
+ // ── Discipline (default core) ─────────────────────────────────────────────
167
+ {
168
+ id: 'ponytail',
169
+ name: 'ponytail',
170
+ description: 'Smallest complete change; cuts over-engineering',
171
+ category: 'discipline',
172
+ author: 'Dietrich Gebert',
173
+ repoUrl: 'https://github.com/DietrichGebert/ponytail',
174
+ license: 'MIT',
175
+ supportedPlatforms: ['all'],
176
+ requiresNodeInProjectRoot: false,
177
+ default: true,
178
+ install: [{ kind: 'skills-sh', repo: 'dietrichgebert/ponytail', skills: ['ponytail'] }],
179
+ routing: { task: 'Scoping or simplifying a change', read: '`ponytail` skill' }
180
+ },
181
+ {
182
+ id: 'karpathy-guidelines',
183
+ name: 'Karpathy guidelines',
184
+ description: 'Think before coding, simplicity first, surgical changes, goal-driven execution',
185
+ category: 'discipline',
186
+ author: 'Jiayuan Zhang (forrestchang)',
187
+ repoUrl: 'https://github.com/multica-ai/andrej-karpathy-skills',
188
+ license: 'MIT (declared in SKILL.md)',
189
+ supportedPlatforms: ['all'],
190
+ requiresNodeInProjectRoot: false,
191
+ default: true,
192
+ install: [
193
+ {
194
+ kind: 'skills-sh',
195
+ repo: 'multica-ai/andrej-karpathy-skills',
196
+ skills: ['karpathy-guidelines']
197
+ }
198
+ ]
199
+ },
200
+ {
201
+ id: 'humanizer',
202
+ name: 'humanizer',
203
+ description: 'Strips AI writing tells from docs and copy',
204
+ category: 'discipline',
205
+ author: 'Siqi Chen (blader)',
206
+ repoUrl: 'https://github.com/blader/humanizer',
207
+ license: 'MIT',
208
+ supportedPlatforms: ['all'],
209
+ requiresNodeInProjectRoot: false,
210
+ default: true,
211
+ install: [{ kind: 'skills-sh', repo: 'blader/humanizer', skills: ['humanizer'] }],
212
+ routing: { task: 'Prose & Copy (docs, README, UI text)', read: '`humanizer` skill' }
213
+ },
214
+ // ── Design ────────────────────────────────────────────────────────────────
215
+ {
216
+ id: 'impeccable',
217
+ name: 'Impeccable',
218
+ description: 'Design language & anti-slop review: PRODUCT.md, DESIGN.md, /impeccable commands',
219
+ category: 'design',
220
+ author: 'Paul Bakaus',
221
+ repoUrl: 'https://github.com/pbakaus/impeccable',
222
+ license: 'Apache-2.0',
223
+ supportedPlatforms: [...UI_PLATFORMS],
224
+ requiresNodeInProjectRoot: false,
225
+ default: true,
226
+ install: [{ kind: 'skills-sh', repo: 'pbakaus/impeccable', skills: ['impeccable'] }],
227
+ routing: {
228
+ task: 'UI/UX design system, anti-slop review',
229
+ read: '`DESIGN.md` + `.agents/skills/impeccable`'
230
+ },
231
+ guide: {
232
+ doc: 'ui-verification',
233
+ render: (ctx) => {
234
+ const driver = uiDriverName(ctx);
235
+ return [
236
+ '## Design review with Impeccable',
237
+ '- No `PRODUCT.md` yet? Run `/impeccable init`: it interviews you and records the product and',
238
+ ` platform${isMobile(ctx) ? ' (`ios`, `android` or `adaptive`, which loads its native-platform references)' : ''}.`,
239
+ '- No `DESIGN.md`? Run `/impeccable document` to derive it from the existing code.',
240
+ `- Before shipping UI: \`/impeccable audit <screen>\`, fix the findings, then \`/impeccable polish <screen>\`.`,
241
+ driver
242
+ ? `- Give both commands evidence: a snapshot and screenshot of the screen taken with ${driver} (loop above).`
243
+ : '- Give both commands evidence: a screenshot of the running UI.',
244
+ isMobile(ctx)
245
+ ? '- Native checklist: 44pt/48dp touch targets, safe areas, platform navigation patterns, Dynamic Type / font scaling.'
246
+ : undefined
247
+ ]
248
+ .filter((line) => line !== undefined)
249
+ .join('\n');
250
+ }
251
+ }
252
+ },
253
+ // ── UI drivers ────────────────────────────────────────────────────────────
254
+ {
255
+ id: 'agent-browser',
256
+ name: 'agent-browser',
257
+ description: 'Browser automation CLI over accessibility-tree snapshots (@e1 refs)',
258
+ category: 'ui-driver',
259
+ author: 'Vercel Labs',
260
+ repoUrl: 'https://github.com/vercel-labs/agent-browser',
261
+ license: 'Apache-2.0',
262
+ supportedPlatforms: ['web'],
263
+ requiresNodeInProjectRoot: false,
264
+ default: true,
265
+ install: [
266
+ { kind: 'skills-sh', repo: 'vercel-labs/agent-browser', skills: ['agent-browser'] },
267
+ { kind: 'binary', bin: 'agent-browser', install: 'npm i -g agent-browser && agent-browser install' },
268
+ { kind: 'setup', setup: 'agent-browser' }
269
+ ],
270
+ rebuttals: [
271
+ {
272
+ excuse: "It's a small UI tweak, visual verification isn't needed.",
273
+ rule: 'Forbidden. Run agent-browser, inspect the snapshot/screenshot, and confirm zero console/runtime errors (`agent-browser errors`).'
274
+ }
275
+ ],
276
+ guide: {
277
+ doc: 'ui-verification',
278
+ render: (ctx) => [
279
+ '## Web: agent-browser loop',
280
+ `Start the app (${code(ctx.commands.dev, 'your dev server')}), then:`,
281
+ '```bash',
282
+ 'agent-browser open http://localhost:3000 # your dev URL',
283
+ 'agent-browser snapshot -i # interactive elements as @e refs',
284
+ 'agent-browser click @e2 # act on a ref from the snapshot',
285
+ 'agent-browser fill @e3 "test@example.com"',
286
+ 'agent-browser snapshot -i # verify the new state',
287
+ 'agent-browser errors && agent-browser console # must be clean',
288
+ 'agent-browser screenshot ui.png',
289
+ 'agent-browser close',
290
+ '```',
291
+ 'Exploratory QA: `agent-browser skills get dogfood` loads the dogfood bug-bash workflow.'
292
+ ].join('\n')
293
+ }
294
+ },
295
+ {
296
+ id: 'agent-device',
297
+ name: 'agent-device',
298
+ description: 'iOS Simulator / Android Emulator automation over the native accessibility tree',
299
+ category: 'ui-driver',
300
+ author: 'Callstack',
301
+ repoUrl: 'https://github.com/callstack/agent-device',
302
+ license: 'MIT',
303
+ supportedPlatforms: [...MOBILE_PLATFORMS],
304
+ requiresNodeInProjectRoot: false,
305
+ default: true,
306
+ install: [
307
+ { kind: 'skills-sh', repo: 'callstack/agent-device', skills: ['agent-device'] },
308
+ { kind: 'binary', bin: 'agent-device', install: 'npm install -g agent-device@latest' }
309
+ ],
310
+ rebuttals: [
311
+ {
312
+ excuse: "It's a small UI tweak, visual verification isn't needed.",
313
+ rule: 'Forbidden. Run agent-device on the simulator/emulator, inspect the snapshot/screenshot, and confirm no runtime errors.'
314
+ }
315
+ ],
316
+ guide: {
317
+ doc: 'ui-verification',
318
+ render: () => [
319
+ '## Mobile: agent-device loop',
320
+ 'Boot a simulator/emulator and install a debug build first (`agent-device doctor` checks the setup).',
321
+ '```bash',
322
+ 'agent-device open <bundle-or-package-id> --platform ios # or --platform android',
323
+ 'agent-device snapshot -i # interactive elements as @e refs',
324
+ 'agent-device press @e2 --settle # act, then read the printed diff',
325
+ 'agent-device fill @e7 "Ada" --settle',
326
+ 'agent-device screenshot ./screen.png',
327
+ 'agent-device close',
328
+ '```',
329
+ 'Save a flow that works as an `.ad` replay script for CI: `agent-device help workflow` links the replay guide.'
330
+ ].join('\n')
331
+ }
332
+ },
333
+ {
334
+ id: 'chrome-devtools-mcp',
335
+ name: 'Chrome DevTools MCP',
336
+ description: 'Deep web debugging: network waterfall, performance traces, memory heap',
337
+ category: 'ui-driver',
338
+ author: 'Google Chrome DevTools team',
339
+ repoUrl: 'https://github.com/ChromeDevTools/chrome-devtools-mcp',
340
+ license: 'Apache-2.0',
341
+ supportedPlatforms: ['web'],
342
+ requiresNodeInProjectRoot: false,
343
+ addon: true,
344
+ install: [
345
+ { kind: 'skills-sh', repo: 'ChromeDevTools/chrome-devtools-mcp', skills: ['chrome-devtools'] }
346
+ ],
347
+ guide: {
348
+ doc: 'ui-verification',
349
+ render: () => [
350
+ '## Deep debugging: Chrome DevTools MCP',
351
+ 'For network, performance traces and memory leaks, use the `chrome-devtools` skill. It needs the MCP',
352
+ 'server registered once in your agent, e.g. `claude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest`.'
353
+ ].join('\n')
354
+ }
355
+ },
356
+ {
357
+ id: 'browserskill',
358
+ name: 'BrowserSkill',
359
+ description: "Drives the user's real, logged-in Chrome for OAuth/2FA flows",
360
+ category: 'ui-driver',
361
+ author: 'Tencent',
362
+ repoUrl: 'https://github.com/Tencent/BrowserSkill',
363
+ license: 'MIT',
364
+ supportedPlatforms: ['web'],
365
+ requiresNodeInProjectRoot: false,
366
+ addon: true,
367
+ install: [
368
+ { kind: 'skills-sh', repo: 'Tencent/BrowserSkill', skills: ['browser-skill'] },
369
+ {
370
+ kind: 'binary',
371
+ bin: 'bsk',
372
+ install: 'curl -fsSL https://raw.githubusercontent.com/Tencent/BrowserSkill/main/install.sh | sh (plus the browser extension)'
373
+ }
374
+ ],
375
+ guide: {
376
+ doc: 'ui-verification',
377
+ render: () => [
378
+ '## Authenticated flows: BrowserSkill',
379
+ "When a flow needs a real login (OAuth, 2FA), use the `browser-skill` skill: it borrows the user's Chrome",
380
+ 'session through `bsk` instead of automating credentials. Check `bsk status` first.'
381
+ ].join('\n')
382
+ }
383
+ },
384
+ // ── Testing engines ───────────────────────────────────────────────────────
385
+ {
386
+ id: 'vitest',
387
+ name: 'Vitest',
388
+ description: 'Unit tests for TypeScript/JavaScript projects',
389
+ category: 'testing-engine',
390
+ author: 'Vitest team',
391
+ repoUrl: 'https://github.com/vitest-dev/vitest',
392
+ license: 'MIT',
393
+ supportedPlatforms: ['web', 'cli', 'backend', 'mobile-rn'],
394
+ requiresNodeInProjectRoot: true,
395
+ install: [],
396
+ guide: {
397
+ doc: 'testing',
398
+ render: (ctx) => [
399
+ '## Unit tests: Vitest',
400
+ `- Run: ${code(ctx.commands.unitTest ?? ctx.commands.test, 'vitest run')}`,
401
+ '- Tests live next to the code they cover or in `tests/`, named `*.test.ts`.',
402
+ '- Write the failing test first, then the code. Mock only process boundaries (network, shell, clock).'
403
+ ].join('\n')
404
+ }
405
+ },
406
+ {
407
+ id: 'native',
408
+ name: 'Native test runner',
409
+ description: "Delegates tests to the host toolchain (flutter test, gradlew test, swift test, cargo test, pytest, ...)",
410
+ category: 'testing-engine',
411
+ author: 'aginit',
412
+ repoUrl: 'https://github.com/antomanc/aginit',
413
+ license: 'MIT',
414
+ supportedPlatforms: ['all'],
415
+ requiresNodeInProjectRoot: false,
416
+ install: [],
417
+ guide: {
418
+ doc: 'testing',
419
+ render: (ctx) => [
420
+ `## Unit & integration tests: ${ctx.stack} toolchain`,
421
+ `- Run: ${code(ctx.commands.test, 'the project test command')}`,
422
+ ctx.commands.lint ? `- Static checks: \`${ctx.commands.lint}\`` : undefined,
423
+ '- Write the failing test first, then the code. Keep tests next to the module they cover, following the toolchain convention.'
424
+ ]
425
+ .filter((line) => line !== undefined)
426
+ .join('\n')
427
+ }
428
+ },
429
+ {
430
+ id: 'playwright',
431
+ name: 'Playwright',
432
+ description: 'Deterministic browser end-to-end tests',
433
+ category: 'testing-engine',
434
+ author: 'Microsoft Corporation',
435
+ repoUrl: 'https://github.com/microsoft/playwright',
436
+ license: 'Apache-2.0',
437
+ supportedPlatforms: ['web'],
438
+ requiresNodeInProjectRoot: true,
439
+ install: [],
440
+ guide: {
441
+ doc: 'testing',
442
+ render: (ctx) => [
443
+ '## Browser E2E: Playwright',
444
+ `- Run: ${code(ctx.commands.e2e, 'playwright test')} (specs in \`e2e/\`, config in \`playwright.config.ts\`).`,
445
+ '- Replace the skipped starter spec with a real flow as soon as the first screen exists.'
446
+ ].join('\n')
447
+ }
448
+ },
449
+ {
450
+ id: 'e2e',
451
+ name: 'e2e',
452
+ description: 'Natural-language + assertion E2E tests for web and mobile with a zero-cost replay cache',
453
+ category: 'testing-engine',
454
+ author: 'TesterArmy',
455
+ repoUrl: 'https://github.com/tester-army/e2e',
456
+ license: 'Apache-2.0',
457
+ supportedPlatforms: ['all'],
458
+ requiresNodeInProjectRoot: false,
459
+ install: [
460
+ { kind: 'skills-sh', repo: 'tester-army/e2e', skills: ['e2e'], optional: true },
461
+ { kind: 'setup', setup: 'e2e' }
462
+ ],
463
+ rebuttals: [
464
+ {
465
+ excuse: 'Unit tests pass, so the feature works.',
466
+ rule: 'Insufficient. Unit tests do not verify wiring or rendering. Run or update the e2e flow before marking complete.'
467
+ }
468
+ ],
469
+ guide: {
470
+ doc: 'testing',
471
+ render: (ctx) => {
472
+ const dir = ctx.e2eDir;
473
+ const prefix = dir ? `cd ${dir} && ` : '';
474
+ const docs = `${dir ? dir + '/' : ''}node_modules/e2e/docs`;
475
+ return [
476
+ '## E2E: tester-army/e2e',
477
+ dir
478
+ ? `This project is not a Node project, so e2e lives in its own workspace, \`${dir}/\`; the project root has no \`package.json\`.`
479
+ : 'e2e is configured at the project root (`e2e.config.ts`, tests in `tests/*.e2e.ts`).',
480
+ `- Install once: \`${prefix}npm install\``,
481
+ `- Run: \`${prefix}npx e2e run\` against ${isMobile(ctx) ? 'a booted simulator/emulator with the app installed' : 'the running dev server'}.`,
482
+ `- Before writing a test, read the offline docs in \`${docs}\` (\`core-concepts.mdx\`, \`agent-steps.mdx\`, \`cache.mdx\`) rather than guessing the API.`,
483
+ '- Tests mix `agent.act()` / `agent.assert()` steps with ordinary `expect` assertions. An agent step that a later',
484
+ ' assertion verifies is recorded in `.e2e/cache/`, and later runs replay it with no model calls until the UI changes.',
485
+ `- Set a model for agent steps in \`${dir ? dir + '/' : ''}e2e.config.ts\`; tests without agent steps need no model.`
486
+ ].join('\n');
487
+ }
488
+ }
489
+ },
490
+ // ── Context guards (add-ons) ──────────────────────────────────────────────
491
+ {
492
+ id: 'context-mode',
493
+ name: 'context-mode',
494
+ description: 'Sandboxes large tool output (test/build logs) so it stays out of the context window',
495
+ category: 'context-guard',
496
+ author: 'Mert Köseoğlu (mksglu)',
497
+ repoUrl: 'https://github.com/mksglu/context-mode',
498
+ license: 'Elastic-2.0 (source-available)',
499
+ supportedPlatforms: ['all'],
500
+ requiresNodeInProjectRoot: false,
501
+ addon: true,
502
+ install: [
503
+ { kind: 'skills-sh', repo: 'mksglu/context-mode', skills: ['context-mode'] },
504
+ { kind: 'binary', bin: 'context-mode', install: 'npm install -g context-mode' }
505
+ ],
506
+ guide: {
507
+ doc: 'workflows',
508
+ render: () => [
509
+ '## Context guard: context-mode',
510
+ 'Run long builds and test suites through context-mode so only the summary enters your context',
511
+ '(`context-mode` skill). Register its MCP server once: `claude mcp add context-mode -- npx -y context-mode`.'
512
+ ].join('\n')
513
+ }
514
+ },
515
+ {
516
+ id: 'worktrunk',
517
+ name: 'Worktrunk',
518
+ description: 'Git worktree manager for parallel agents (wt)',
519
+ category: 'context-guard',
520
+ author: 'Maximilian Roos (max-sixty)',
521
+ repoUrl: 'https://github.com/max-sixty/worktrunk',
522
+ license: 'MIT OR Apache-2.0',
523
+ supportedPlatforms: ['all'],
524
+ requiresNodeInProjectRoot: false,
525
+ addon: true,
526
+ install: [
527
+ { kind: 'skills-sh', repo: 'max-sixty/worktrunk', skills: ['worktrunk'] },
528
+ {
529
+ kind: 'binary',
530
+ bin: 'wt',
531
+ install: 'brew install worktrunk (or cargo install worktrunk) && wt config shell install'
532
+ }
533
+ ],
534
+ guide: {
535
+ doc: 'workflows',
536
+ render: () => [
537
+ '## Parallel agents: Worktrunk',
538
+ 'Give each parallel agent its own worktree: `wt switch --create <branch>`, merge back with `wt merge`',
539
+ '(`worktrunk` skill).'
540
+ ].join('\n')
541
+ }
542
+ }
543
+ ];
544
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/registry/catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import type { AginitConfig, SkillSourceConfig, WebFramework } from '../config/schema.js';
2
+ import { CapabilityDescriptor, CustomCapabilityConfig, DoctorCheck, Platform, Stack } from './types.js';
3
+ export * from './types.js';
4
+ export { CATALOG, MATT_POCOCK_SKILLS, SUPERPOWERS_SKILLS } from './catalog.js';
5
+ export declare const PLATFORMS: Platform[];
6
+ export declare const TESTING_CHOICES: readonly ['e2e', 'playwright', 'vitest', 'native'];
7
+ export type TestingChoice = (typeof TESTING_CHOICES)[number];
8
+ /** Profile options from the CLI (`--platform`, `--methodology`, ...). */
9
+ export interface ProfileFlags {
10
+ platform?: Platform;
11
+ methodology?: string;
12
+ design?: string;
13
+ testing?: TestingChoice;
14
+ uiDriver?: string;
15
+ addons?: string[];
16
+ addSkills?: string[];
17
+ without?: string[];
18
+ }
19
+ export declare function hasProfileFlags(flags: ProfileFlags): boolean;
20
+ /** Add a capability to the built-in catalog (programmatic API and tests). */
21
+ export declare function registerCapability(descriptor: CapabilityDescriptor): void;
22
+ export declare function customToDescriptor(custom: CustomCapabilityConfig): CapabilityDescriptor;
23
+ /** The built-in catalog plus the project's custom capabilities. */
24
+ export declare function catalogFor(config?: Pick<AginitConfig, 'customCapabilities'> | null): CapabilityDescriptor[];
25
+ export declare function findCapability(id: string, config?: Pick<AginitConfig, 'customCapabilities'> | null): CapabilityDescriptor | undefined;
26
+ export declare function isNodeStack(stack: Stack): boolean;
27
+ export declare function supports(capability: CapabilityDescriptor, platform: Platform): boolean;
28
+ interface ProfileContext {
29
+ platform: Platform;
30
+ stack: Stack;
31
+ framework?: WebFramework;
32
+ /** false when aginit will not scaffold Vitest (a generic preset over an existing package.json). */
33
+ harness?: boolean;
34
+ }
35
+ /** Capabilities enabled by default for a platform and stack. */
36
+ export declare function defaultCapabilities(ctx: ProfileContext): string[];
37
+ /** Capability id for a `--add-skill owner/repo` value. */
38
+ export declare function customCapabilityFromRepo(repo: string): CustomCapabilityConfig;
39
+ export interface ResolveInput extends ProfileContext {
40
+ /** Previously saved capabilities; flags are applied on top of them. */
41
+ base?: string[];
42
+ /** The platform the base was resolved for; a different platform re-derives defaults. */
43
+ basePlatform?: Platform;
44
+ flags?: ProfileFlags;
45
+ custom?: CustomCapabilityConfig[];
46
+ }
47
+ export interface ResolvedProfile {
48
+ capabilities: string[];
49
+ customCapabilities: CustomCapabilityConfig[];
50
+ disabledCapabilities: string[];
51
+ }
52
+ /**
53
+ * Turn a platform, a stack and the profile flags into the list of capability
54
+ * ids to save. Explicit flags replace the pick in their category; everything
55
+ * else keeps the saved choice (or the platform default on a fresh project).
56
+ */
57
+ export declare function resolveCapabilities(input: ResolveInput, disabled?: string[]): ResolvedProfile;
58
+ /** Skill sources that install the given capabilities. */
59
+ export declare function sourcesFor(capabilities: CapabilityDescriptor[]): SkillSourceConfig[];
60
+ /**
61
+ * Capabilities a config written before v2 (no `capabilities` field) uses:
62
+ * the ones whose skills it installs, plus Graft and its test harness.
63
+ */
64
+ export declare function inferCapabilities(config: AginitConfig): string[];
65
+ /** The capabilities a project config turns on. */
66
+ export declare function activeCapabilities(config: AginitConfig): CapabilityDescriptor[];
67
+ export declare function activeIds(config: AginitConfig): Set<string>;
68
+ /** A fresh config section for a resolved profile. */
69
+ export declare function applyResolvedProfile(config: AginitConfig, profile: ResolvedProfile, options: {
70
+ skills: boolean;
71
+ previous?: string[];
72
+ }): AginitConfig;
73
+ export interface DerivedCheck {
74
+ capability: CapabilityDescriptor;
75
+ check: DoctorCheck;
76
+ }
77
+ /**
78
+ * Doctor checks for a capability: its declared ones plus one per skill and
79
+ * binary. Optional skills are checked only when their source is configured.
80
+ */
81
+ export declare function doctorChecks(capability: CapabilityDescriptor, sources?: SkillSourceConfig[]): DoctorCheck[];
82
+ /** Where e2e lives: the project root for Node projects, an isolated workspace otherwise. */
83
+ export declare function e2eDirFor(stack: Stack): string;
84
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"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"}