@antomanc/aginit 0.1.0 → 0.2.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 (54) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/LICENSE +1 -1
  3. package/README.md +60 -183
  4. package/THIRD_PARTY_NOTICES.md +5 -0
  5. package/dist/adapters/agents-md.d.ts.map +1 -1
  6. package/dist/adapters/agents-md.js +47 -23
  7. package/dist/adapters/agents-md.js.map +1 -1
  8. package/dist/adapters/browser.js.map +1 -1
  9. package/dist/adapters/git.d.ts.map +1 -1
  10. package/dist/adapters/git.js +2 -0
  11. package/dist/adapters/git.js.map +1 -1
  12. package/dist/adapters/graft.js.map +1 -1
  13. package/dist/adapters/package-manager.js.map +1 -1
  14. package/dist/adapters/skills.d.ts.map +1 -1
  15. package/dist/adapters/skills.js +11 -7
  16. package/dist/adapters/skills.js.map +1 -1
  17. package/dist/cli/doctor.d.ts.map +1 -1
  18. package/dist/cli/doctor.js +10 -7
  19. package/dist/cli/doctor.js.map +1 -1
  20. package/dist/cli/init.js.map +1 -1
  21. package/dist/cli/main.d.ts.map +1 -1
  22. package/dist/cli/main.js +17 -16
  23. package/dist/cli/main.js.map +1 -1
  24. package/dist/cli/new.d.ts +0 -1
  25. package/dist/cli/new.d.ts.map +1 -1
  26. package/dist/cli/new.js +7 -18
  27. package/dist/cli/new.js.map +1 -1
  28. package/dist/cli/wizard.d.ts +0 -4
  29. package/dist/cli/wizard.d.ts.map +1 -1
  30. package/dist/cli/wizard.js +4 -50
  31. package/dist/cli/wizard.js.map +1 -1
  32. package/dist/config/defaults.d.ts +16 -1
  33. package/dist/config/defaults.d.ts.map +1 -1
  34. package/dist/config/defaults.js +79 -10
  35. package/dist/config/defaults.js.map +1 -1
  36. package/dist/config/schema.d.ts +5 -0
  37. package/dist/config/schema.d.ts.map +1 -1
  38. package/dist/config/schema.js.map +1 -1
  39. package/dist/config/validation.d.ts +3 -3
  40. package/dist/config/validation.d.ts.map +1 -1
  41. package/dist/presets/adr.js.map +1 -1
  42. package/dist/utils/fs.js.map +1 -1
  43. package/dist/utils/logger.d.ts.map +1 -1
  44. package/dist/utils/shell.js.map +1 -1
  45. package/package.json +10 -9
  46. package/src/adapters/agents-md.ts +53 -26
  47. package/src/adapters/git.ts +2 -0
  48. package/src/adapters/skills.ts +10 -7
  49. package/src/cli/doctor.ts +8 -6
  50. package/src/cli/main.ts +17 -25
  51. package/src/cli/new.ts +6 -22
  52. package/src/cli/wizard.ts +4 -56
  53. package/src/config/defaults.ts +97 -12
  54. package/src/config/schema.ts +5 -0
@@ -1,9 +1,43 @@
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
+ */
8
+ export const MATT_POCOCK_SKILLS = [
9
+ // engineering
10
+ 'ask-matt',
11
+ 'code-review',
12
+ 'codebase-design',
13
+ 'diagnosing-bugs',
14
+ 'domain-modeling',
15
+ 'grill-with-docs',
16
+ 'implement',
17
+ 'implement-spec',
18
+ 'improve-codebase-architecture',
19
+ 'pr',
20
+ 'prototype',
21
+ 'research',
22
+ 'retro',
23
+ 'setup-matt-pocock-skills',
24
+ 'tdd',
25
+ 'to-spec',
26
+ 'to-tickets',
27
+ 'triage',
28
+ 'wayfinder',
29
+ 'wizard',
30
+ // productivity
31
+ 'grill-me',
32
+ 'grilling',
33
+ 'handoff',
34
+ 'teach',
35
+ 'to-questionnaire',
36
+ 'wait-what',
37
+ 'writing-for-agents'
38
+ ];
1
39
  export function getDefaultConfig(name, preset, options = {}) {
2
- const specWorkflow = !!options.specWorkflow;
3
40
  const packageManager = options.packageManager || 'pnpm';
4
- const mattSkills = specWorkflow
5
- ? ['tdd', 'code-review', 'diagnosing-bugs', 'to-spec', 'to-tickets', 'implement-spec']
6
- : ['tdd', 'code-review', 'diagnosing-bugs'];
7
41
  switch (preset) {
8
42
  case 'web': {
9
43
  const framework = options.framework || 'none';
@@ -19,11 +53,14 @@ export function getDefaultConfig(name, preset, options = {}) {
19
53
  secondary: 'codex'
20
54
  },
21
55
  skills: {
22
- workflow: specWorkflow ? 'spec' : 'minimal',
23
56
  sources: [
24
57
  {
25
58
  package: 'mattpocock/skills',
26
- skills: mattSkills
59
+ skills: [...MATT_POCOCK_SKILLS]
60
+ },
61
+ {
62
+ package: 'blader/humanizer',
63
+ skills: ['humanizer']
27
64
  },
28
65
  {
29
66
  package: 'pbakaus/impeccable',
@@ -61,11 +98,14 @@ export function getDefaultConfig(name, preset, options = {}) {
61
98
  secondary: 'codex'
62
99
  },
63
100
  skills: {
64
- workflow: specWorkflow ? 'spec' : 'minimal',
65
101
  sources: [
66
102
  {
67
103
  package: 'mattpocock/skills',
68
- skills: mattSkills
104
+ skills: [...MATT_POCOCK_SKILLS]
105
+ },
106
+ {
107
+ package: 'blader/humanizer',
108
+ skills: ['humanizer']
69
109
  }
70
110
  ]
71
111
  },
@@ -95,11 +135,14 @@ export function getDefaultConfig(name, preset, options = {}) {
95
135
  secondary: 'codex'
96
136
  },
97
137
  skills: {
98
- workflow: specWorkflow ? 'spec' : 'minimal',
99
138
  sources: [
100
139
  {
101
140
  package: 'mattpocock/skills',
102
- skills: mattSkills
141
+ skills: [...MATT_POCOCK_SKILLS]
142
+ },
143
+ {
144
+ package: 'blader/humanizer',
145
+ skills: ['humanizer']
103
146
  }
104
147
  ]
105
148
  },
@@ -119,4 +162,30 @@ export function getDefaultConfig(name, preset, options = {}) {
119
162
  };
120
163
  }
121
164
  }
165
+ /** The skill selections that older versions of aginit wrote as defaults. */
166
+ const LEGACY_MATT_SKILL_SELECTIONS = [
167
+ ['tdd', 'code-review', 'diagnosing-bugs'],
168
+ ['tdd', 'code-review', 'diagnosing-bugs', 'to-spec', 'to-tickets', 'implement-spec']
169
+ ];
170
+ function matchesLegacySelection(skills) {
171
+ return LEGACY_MATT_SKILL_SELECTIONS.some((selection) => selection.length === skills.length && selection.every((skill) => skills.includes(skill)));
172
+ }
173
+ /**
174
+ * Bring a saved `skills` section forward to the current standard: install the
175
+ * full stable Matt Pocock set and drop the retired workflow selector.
176
+ *
177
+ * Only the exact selections aginit used to write are migrated, so a project
178
+ * whose skill list was narrowed by hand keeps the list its author chose.
179
+ */
180
+ export function upgradeLegacySkillConfig(skills) {
181
+ const sources = skills.sources.map((source) => source.package === 'mattpocock/skills' && matchesLegacySelection(source.skills)
182
+ ? { ...source, skills: [...MATT_POCOCK_SKILLS] }
183
+ : source);
184
+ const migrated = sources.some((source, index) => source !== skills.sources[index]);
185
+ if (!migrated)
186
+ return skills;
187
+ const upgraded = { ...skills, sources };
188
+ delete upgraded.workflow;
189
+ return upgraded;
190
+ }
122
191
  //# sourceMappingURL=defaults.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAaA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,cAAc;IACd,UAAU;IACV,aAAa;IACb,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,WAAW;IACX,gBAAgB;IAChB,+BAA+B;IAC/B,IAAI;IACJ,WAAW;IACX,UAAU;IACV,OAAO;IACP,0BAA0B;IAC1B,KAAK;IACL,SAAS;IACT,YAAY;IACZ,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,eAAe;IACf,UAAU;IACV,UAAU;IACV,SAAS;IACT,OAAO;IACP,kBAAkB;IAClB,WAAW;IACX,oBAAoB;CACZ,CAAC;AAEX,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,MAAkB,EAClB,OAAO,GAAyB,EAAE;IAElC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC;IAExD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC;YAC9C,MAAM,YAAY,GAAG,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,CAAC;YAElE,OAAO;gBACL,aAAa,EAAE,OAAO;gBACtB,IAAI;gBACJ,MAAM,EAAE,KAAK;gBACb,SAAS;gBACT,cAAc;gBACd,MAAM,EAAE;oBACN,OAAO,EAAE,aAAa;oBACtB,SAAS,EAAE,OAAO;iBACnB;gBACD,MAAM,EAAE;oBACN,OAAO,EAAE;wBACP;4BACE,OAAO,EAAE,mBAAmB;4BAC5B,MAAM,EAAE,CAAC,GAAG,kBAAkB,CAAC;yBAChC;wBACD;4BACE,OAAO,EAAE,kBAAkB;4BAC3B,MAAM,EAAE,CAAC,WAAW,CAAC;yBACtB;wBACD;4BACE,OAAO,EAAE,oBAAoB;4BAC7B,MAAM,EAAE,CAAC,YAAY,CAAC;yBACvB;wBACD;4BACE,OAAO,EAAE,2BAA2B;4BACpC,MAAM,EAAE,CAAC,eAAe,CAAC;yBAC1B;qBACF;iBACF;gBACD,QAAQ,EAAE;oBACR,KAAK,EAAE,IAAI;iBACZ;gBACD,OAAO,EAAE;oBACP,WAAW,EAAE,IAAI;oBACjB,UAAU,EAAE,YAAY;iBACzB;gBACD,IAAI,EAAE;oBACJ,GAAG,EAAE,IAAI;iBACV;gBACD,MAAM,EAAE;oBACN,EAAE,EAAE,IAAI;iBACT;aACF,CAAC;QACJ,CAAC;QAED,KAAK,KAAK;YACR,OAAO;gBACL,aAAa,EAAE,OAAO;gBACtB,IAAI;gBACJ,MAAM,EAAE,KAAK;gBACb,cAAc;gBACd,MAAM,EAAE;oBACN,OAAO,EAAE,aAAa;oBACtB,SAAS,EAAE,OAAO;iBACnB;gBACD,MAAM,EAAE;oBACN,OAAO,EAAE;wBACP;4BACE,OAAO,EAAE,mBAAmB;4BAC5B,MAAM,EAAE,CAAC,GAAG,kBAAkB,CAAC;yBAChC;wBACD;4BACE,OAAO,EAAE,kBAAkB;4BAC3B,MAAM,EAAE,CAAC,WAAW,CAAC;yBACtB;qBACF;iBACF;gBACD,QAAQ,EAAE;oBACR,KAAK,EAAE,IAAI;iBACZ;gBACD,OAAO,EAAE;oBACP,WAAW,EAAE,KAAK;oBAClB,UAAU,EAAE,KAAK;iBAClB;gBACD,IAAI,EAAE;oBACJ,GAAG,EAAE,IAAI;iBACV;gBACD,MAAM,EAAE;oBACN,EAAE,EAAE,IAAI;iBACT;aACF,CAAC;QAEJ,KAAK,SAAS,CAAC;QACf;YACE,OAAO;gBACL,aAAa,EAAE,OAAO;gBACtB,IAAI;gBACJ,MAAM,EAAE,SAAS;gBACjB,cAAc;gBACd,MAAM,EAAE;oBACN,OAAO,EAAE,aAAa;oBACtB,SAAS,EAAE,OAAO;iBACnB;gBACD,MAAM,EAAE;oBACN,OAAO,EAAE;wBACP;4BACE,OAAO,EAAE,mBAAmB;4BAC5B,MAAM,EAAE,CAAC,GAAG,kBAAkB,CAAC;yBAChC;wBACD;4BACE,OAAO,EAAE,kBAAkB;4BAC3B,MAAM,EAAE,CAAC,WAAW,CAAC;yBACtB;qBACF;iBACF;gBACD,QAAQ,EAAE;oBACR,KAAK,EAAE,IAAI;iBACZ;gBACD,OAAO,EAAE;oBACP,WAAW,EAAE,KAAK;oBAClB,UAAU,EAAE,KAAK;iBAClB;gBACD,IAAI,EAAE;oBACJ,GAAG,EAAE,IAAI;iBACV;gBACD,MAAM,EAAE;oBACN,EAAE,EAAE,KAAK;iBACV;aACF,CAAC;IACN,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,MAAM,4BAA4B,GAAe;IAC/C,CAAC,KAAK,EAAE,aAAa,EAAE,iBAAiB,CAAC;IACzC,CAAC,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,CAAC;CACrF,CAAC;AAEF,SAAS,sBAAsB,CAAC,MAAgB;IAC9C,OAAO,4BAA4B,CAAC,IAAI,CACtC,CAAC,SAAS,EAAE,EAAE,CACZ,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAC3F,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAA8B;IAE9B,MAAM,OAAO,GAAwB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACjE,MAAM,CAAC,OAAO,KAAK,mBAAmB,IAAI,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC;QAC7E,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,kBAAkB,CAAC,EAAE;QAChD,CAAC,CAAC,MAAM,CACX,CAAC;IACF,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACnF,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;IAE7B,MAAM,QAAQ,GAA2B,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC;IAChE,OAAO,QAAQ,CAAC,QAAQ,CAAC;IACzB,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -16,6 +16,11 @@ export interface AginitConfig {
16
16
  secondary: string;
17
17
  };
18
18
  skills: {
19
+ /**
20
+ * @deprecated Legacy selector from when only a subset of skills was
21
+ * installed. All standard skills are installed now, so this field is no
22
+ * longer written. It is still accepted so existing configs keep loading.
23
+ */
19
24
  workflow?: 'minimal' | 'spec';
20
25
  sources: SkillSourceConfig[];
21
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AACnD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AACjE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,MAAM,EAAE;QACN,QAAQ,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;QAC9B,OAAO,EAAE,iBAAiB,EAAE,CAAC;KAC9B,CAAC;IACF,QAAQ,EAAE;QACR,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,OAAO,EAAE;QACP,WAAW,EAAE,OAAO,CAAC;QACrB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,IAAI,EAAE;QACJ,GAAG,EAAE,OAAO,CAAC;KACd,CAAC;IACF,MAAM,EAAE;QACN,EAAE,EAAE,OAAO,CAAC;KACb,CAAC;CACH;AAGD,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC;AAE3C,eAAO,MAAM,sBAAsB,uBAAuB,CAAC;AAC3D,eAAO,MAAM,sBAAsB,mBAAmB,CAAC;AACvD,eAAO,MAAM,kBAAkB,uBAAyB,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AACnD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AACjE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,MAAM,EAAE;QACN;;;;WAIG;QACH,QAAQ,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;QAC9B,OAAO,EAAE,iBAAiB,EAAE,CAAC;KAC9B,CAAC;IACF,QAAQ,EAAE;QACR,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,OAAO,EAAE;QACP,WAAW,EAAE,OAAO,CAAC;QACrB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,IAAI,EAAE;QACJ,GAAG,EAAE,OAAO,CAAC;KACd,CAAC;IACF,MAAM,EAAE;QACN,EAAE,EAAE,OAAO,CAAC;KACb,CAAC;CACH;AAGD,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC;AAE3C,eAAO,MAAM,sBAAsB,uBAAuB,CAAC;AAC3D,eAAO,MAAM,sBAAsB,mBAAmB,CAAC;AACvD,eAAO,MAAM,kBAAkB,uBAAyB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAyCA,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAC3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AACvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AA8CA,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAC3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AACvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { AginitConfig } from './schema.js';
2
- export declare const PRESETS: readonly ["web", "cli", "generic"];
3
- export declare const FRAMEWORKS: readonly ["none", "vite", "next", "existing"];
4
- export declare const SUPPORTED_PACKAGE_MANAGERS: readonly ["pnpm", "npm", "yarn", "bun"];
2
+ export declare const PRESETS: readonly ['web', 'cli', 'generic'];
3
+ export declare const FRAMEWORKS: readonly ['none', 'vite', 'next', 'existing'];
4
+ export declare const SUPPORTED_PACKAGE_MANAGERS: readonly ['pnpm', 'npm', 'yarn', 'bun'];
5
5
  export declare function isRecord(value: unknown): value is Record<string, any>;
6
6
  export declare function validateProjectName(name: string): void;
7
7
  export declare function validateUpstreamArgument(value: unknown, label: string): asserts value is string;
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAkD,MAAM,aAAa,CAAC;AAE3F,eAAO,MAAM,OAAO,oCAAqC,CAAC;AAC1D,eAAO,MAAM,UAAU,+CAAgD,CAAC;AACxE,eAAO,MAAM,0BAA0B,yCAA0C,CAAC;AAClF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAErE;AACD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAMtD;AACD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAW/F;AACD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAoC3D;AACD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAYlE;AACD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAgB3E"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAkD,MAAM,aAAa,CAAC;AAE3F,eAAO,MAAM,OAAO,YAAI,KAAK,EAAE,KAAK,EAAE,SAAS,CAAU,CAAC;AAC1D,eAAO,MAAM,UAAU,YAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAU,CAAC;AACxE,eAAO,MAAM,0BAA0B,YAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAU,CAAC;AAClF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAErE;AACD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAMtD;AACD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAW/F;AACD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAoC3D;AACD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAYlE;AACD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAgB3E"}
@@ -1 +1 @@
1
- {"version":3,"file":"adr.js","sourceRoot":"","sources":["../../src/presets/adr.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBxB,CAAC;AAEF,MAAM,UAAU,QAAQ,CACtB,SAAiB,EACjB,UAAkD,EAAE;IAEpD,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,uCAAuC,CAAC,CAAC;IAC7F,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"adr.js","sourceRoot":"","sources":["../../src/presets/adr.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBxB,CAAC;AAEF,MAAM,UAAU,QAAQ,CACtB,SAAiB,EACjB,OAAO,GAA2C,EAAE;IAEpD,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,uCAAuC,CAAC,CAAC;IAC7F,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AASrC,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,MAAM,GAAG,KAAK;IACvD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,GAAG,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,QAAgB,EAChB,OAAe,EACf,UAA4B,EAAE;IAE9B,MAAM,EAAE,SAAS,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAE5E,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,GAAG,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;IACzC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,YAAY,CAAI,QAAgB;IAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,QAAgB,EAChB,IAAa,EACb,UAA4B,EAAE;IAE9B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACrD,OAAO,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AASrC,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,MAAM,GAAG,KAAK;IACvD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,GAAG,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,QAAgB,EAChB,OAAe,EACf,OAAO,GAAqB,EAAE;IAE9B,MAAM,EAAE,SAAS,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAE5E,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,GAAG,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;IACzC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,YAAY,CAAI,QAAgB;IAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,QAAgB,EAChB,IAAa,EACb,OAAO,GAAqB,EAAE;IAE9B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACrD,OAAO,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;gBACL,MAAM;mBACH,MAAM;gBACT,MAAM;iBACL,MAAM;eACR,MAAM;iBACJ,MAAM,SAAS,MAAM,OAAO,MAAM;oBAG/B,MAAM,aAAa,MAAM;CAQ1C,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;IACjB,IAAI,QAAQ,MAAM;IAClB,OAAO,QAAQ,MAAM;IACrB,IAAI,QAAQ,MAAM;IAClB,KAAK,QAAQ,MAAM;IACnB,GAAG,QAAQ,MAAM;IACjB,IAAI,SAAS,MAAM,SAAS,MAAM,OAAO,MAAM;IAG/C,MAAM,UAAU,MAAM,aAAa,MAAM;CAQ1C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@antomanc/aginit",
3
- "version": "0.1.0",
4
- "description": "Minimal, modular AI-first project bootstrapper for T3 Code, Antigravity, and Codex",
3
+ "version": "0.2.0",
4
+ "description": "Minimal, modular AI-first project bootstrapper for AI coding agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -19,6 +19,7 @@
19
19
  "src",
20
20
  "bin",
21
21
  "README.md",
22
+ "CHANGELOG.md",
22
23
  "LICENSE",
23
24
  "THIRD_PARTY_NOTICES.md"
24
25
  ],
@@ -39,7 +40,6 @@
39
40
  "agents",
40
41
  "antigravity",
41
42
  "codex",
42
- "t3-code",
43
43
  "skills",
44
44
  "graft",
45
45
  "bootstrap",
@@ -47,14 +47,14 @@
47
47
  ],
48
48
  "dependencies": {
49
49
  "@clack/prompts": "^1.8.1",
50
- "commander": "^12.1.0",
50
+ "commander": "^15.0.0",
51
51
  "picocolors": "^1.1.1"
52
52
  },
53
53
  "devDependencies": {
54
- "@types/node": "^22.8.0",
55
- "tsx": "^4.19.2",
56
- "typescript": "^5.6.3",
57
- "vitest": "^4.1.11"
54
+ "@types/node": "^22.20.5",
55
+ "tsx": "^4.23.15",
56
+ "typescript": "^7.0.2",
57
+ "vitest": "^5.0.3"
58
58
  },
59
59
  "license": "MIT",
60
60
  "engines": {
@@ -64,8 +64,9 @@
64
64
  "build": "tsc",
65
65
  "watch": "tsc --watch",
66
66
  "test": "vitest run",
67
- "typecheck": "tsc --noEmit",
67
+ "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.test.json",
68
68
  "check": "pnpm typecheck && pnpm test && pnpm build && pnpm audit",
69
+ "check:skills": "node scripts/check-skill-drift.mjs",
69
70
  "smoke": "node scripts/smoke-test.mjs"
70
71
  }
71
72
  }
@@ -31,18 +31,45 @@ export function generateAgentsMarkdown(
31
31
  testE2E = `- Test (E2E / Browser): \`${pmAdapter.runCmd('test:e2e')}\``;
32
32
  }
33
33
 
34
- const selectedSkills = config.skills.sources.flatMap((source) => source.skills);
35
- const engineering = selectedSkills.filter((skill) =>
36
- ['tdd', 'code-review', 'diagnosing-bugs'].includes(skill)
37
- );
34
+ // A source with an empty skill list (or `*`) installs every skill it ships.
35
+ const skillInstalled = (skill: string) =>
36
+ config.skills.sources.some(
37
+ (source) =>
38
+ source.skills.length === 0 || source.skills.includes('*') || source.skills.includes(skill)
39
+ );
40
+ const mattSkills = (() => {
41
+ const source = config.skills.sources.find((s) => s.package === 'mattpocock/skills');
42
+ if (!source) return [];
43
+ return source.skills.length ? source.skills : ['*'];
44
+ })();
45
+ const hasSkills = config.skills.sources.length > 0;
46
+
47
+ const specSkillNames = ['to-spec', 'to-tickets', 'implement-spec'];
48
+ let engineeringCapability = '';
49
+ if (mattSkills.includes('*')) {
50
+ engineeringCapability =
51
+ '- **Engineering**: the full Matt Pocock skill set installed in `.agents/skills/` — start with `ask-matt` to route to the right one.';
52
+ } else if (mattSkills.length) {
53
+ const engineering = mattSkills.filter((skill) => !specSkillNames.includes(skill));
54
+ if (engineering.length) {
55
+ engineeringCapability = `- **Engineering**: ${engineering.map((skill) => '`' + skill + '`').join(', ')}`;
56
+ }
57
+ }
58
+
59
+ let proseCapability = '';
60
+ if (skillInstalled('humanizer')) {
61
+ proseCapability =
62
+ '- **Prose & Copy**: Use `humanizer` skill to eliminate AI writing tells and refine documentation.';
63
+ }
64
+
38
65
  let uiCapability = '';
39
- if (isWeb && selectedSkills.includes('impeccable')) {
66
+ if (isWeb && skillInstalled('impeccable')) {
40
67
  uiCapability =
41
68
  '- **UI & Design**: Use `impeccable` skill for frontend polish, design critique, and token craft.';
42
69
  }
43
70
 
44
71
  let browserCapability = '';
45
- if (hasVisualAgent && selectedSkills.includes('agent-browser')) {
72
+ if (hasVisualAgent && skillInstalled('agent-browser')) {
46
73
  browserCapability =
47
74
  '- **Browser Verification**: Use `agent-browser` skill for interactive inspection and visual QA.';
48
75
  }
@@ -53,12 +80,11 @@ export function generateAgentsMarkdown(
53
80
  '- **Codebase Graph**: Use `graft ask "<query>" --source` or `graft map` for orientation before raw grep.';
54
81
  }
55
82
 
56
- let specWorkflow = '';
57
- if (config.skills.workflow === 'spec' && selectedSkills.includes('to-spec')) {
58
- specWorkflow = '- **Spec & Tickets Workflow**: `to-spec`, `to-tickets`, `implement-spec`';
59
- }
83
+ const specCapability = skillInstalled('to-spec')
84
+ ? '- **Spec & Tickets Workflow**: `to-spec`, `to-tickets`, `implement-spec`'
85
+ : '';
60
86
 
61
- const sections = [
87
+ const sections: Array<string | undefined> = [
62
88
  `# ${config.name}`,
63
89
  '',
64
90
  `AI-first ${config.preset} project configured with \`aginit\`.`,
@@ -70,24 +96,23 @@ export function generateAgentsMarkdown(
70
96
  '',
71
97
  '## Essential Commands',
72
98
  `- Package Manager: \`${pm}\``,
73
- devCommand,
74
- hasCommand('build') ? `- Build: \`${pmAdapter.runCmd('build')}\`` : '',
75
- hasCommand('typecheck') ? `- Typecheck: \`${pmAdapter.runCmd('typecheck')}\`` : '',
76
- hasCommand('test') ? `- Test: \`${pmAdapter.runCmd('test')}\`` : '',
77
- hasCommand('test:unit') ? `- Unit Test: \`${pmAdapter.runCmd('test:unit')}\`` : '',
78
- testE2E,
99
+ devCommand || undefined,
100
+ hasCommand('build') ? `- Build: \`${pmAdapter.runCmd('build')}\`` : undefined,
101
+ hasCommand('typecheck') ? `- Typecheck: \`${pmAdapter.runCmd('typecheck')}\`` : undefined,
102
+ hasCommand('test') ? `- Test: \`${pmAdapter.runCmd('test')}\`` : undefined,
103
+ hasCommand('test:unit') ? `- Unit Test: \`${pmAdapter.runCmd('test:unit')}\`` : undefined,
104
+ testE2E || undefined,
79
105
  '',
80
106
  '## AI Capabilities & Skills',
81
- selectedSkills.length
107
+ hasSkills
82
108
  ? 'Configured skills install into `.agents/skills/` (shared by Antigravity and Codex):'
83
109
  : 'Skills installation is disabled in this configuration.',
84
- engineering.length
85
- ? `- **Engineering**: ${engineering.map((skill) => '\`' + skill + '\`').join(', ')}`
86
- : '',
87
- specWorkflow,
88
- uiCapability,
89
- browserCapability,
90
- graftCapability,
110
+ engineeringCapability || undefined,
111
+ proseCapability || undefined,
112
+ specCapability || undefined,
113
+ uiCapability || undefined,
114
+ browserCapability || undefined,
115
+ graftCapability || undefined,
91
116
  '',
92
117
  '## Bootstrap & First Session',
93
118
  'When the user asks to "bootstrap this project" or kicks off a new initiative:',
@@ -97,9 +122,11 @@ export function generateAgentsMarkdown(
97
122
  ''
98
123
  ];
99
124
 
125
+ // Conditional lines are `undefined` and dropped; `''` entries are the blank
126
+ // separators between sections and must survive.
100
127
  return (
101
128
  sections
102
- .filter((s) => s !== '')
129
+ .filter((s): s is string => s !== undefined)
103
130
  .join('\n')
104
131
  .trim() + '\n'
105
132
  );
@@ -33,6 +33,8 @@ blob-report/
33
33
 
34
34
  # Codebase intelligence cache (graft builds locally, git-ignored)
35
35
  /graft/
36
+ # ripgrep hint graft writes next to that cache; regenerated by \`graft build\`
37
+ .ignore
36
38
  `;
37
39
 
38
40
  export async function setupGit(
@@ -81,25 +81,28 @@ export async function installAllSkills(
81
81
  }
82
82
 
83
83
  export function getInstalledSkills(targetDir: string): string[] {
84
+ // The lockfile only records what the skills CLI installed through aginit;
85
+ // skills added by hand live on disk only, so report the union of both.
86
+ const installed = new Set<string>();
87
+
84
88
  const lockPath = path.join(targetDir, 'skills-lock.json');
85
89
  if (fileExists(lockPath)) {
86
90
  const lock = readJsonFile<SkillsLockFile>(lockPath);
87
- if (lock && lock.skills) {
88
- return Object.keys(lock.skills);
89
- }
91
+ for (const name of Object.keys(lock?.skills ?? {})) installed.add(name);
90
92
  }
91
93
 
92
- // Check .agents/skills directory directly
93
94
  const skillsDir = path.join(targetDir, '.agents', 'skills');
94
95
  if (fileExists(skillsDir)) {
95
96
  try {
96
- return fs.readdirSync(skillsDir).filter((f) => !f.startsWith('.'));
97
+ for (const entry of fs.readdirSync(skillsDir)) {
98
+ if (!entry.startsWith('.')) installed.add(entry);
99
+ }
97
100
  } catch {
98
- return [];
101
+ // Unreadable directory: keep whatever the lockfile reported.
99
102
  }
100
103
  }
101
104
 
102
- return [];
105
+ return [...installed];
103
106
  }
104
107
 
105
108
  export async function updateSkills(
package/src/cli/doctor.ts CHANGED
@@ -198,18 +198,20 @@ export async function runDoctor(targetDir: string = process.cwd()): Promise<void
198
198
 
199
199
  // 9. Installed skills check
200
200
  const installedSkills = getInstalledSkills(targetDir);
201
+ const skillsDisabled = projectConfig !== null && projectConfig.skills.sources.length === 0;
201
202
  checks.push({
202
203
  name: 'Local Agent Skills (.agents/skills/)',
203
204
  category: 'Project Config',
204
- ok: installedSkills.length > 0,
205
- detail:
206
- installedSkills.length > 0
205
+ ok: skillsDisabled || installedSkills.length > 0,
206
+ detail: skillsDisabled
207
+ ? 'Disabled in configuration (skills.sources is empty)'
208
+ : installedSkills.length > 0
207
209
  ? `${installedSkills.length} skills installed: ${installedSkills.join(', ')}`
208
210
  : 'No skills found in .agents/skills/',
209
211
  suggestion:
210
- installedSkills.length === 0
211
- ? 'Run `aginit init` or `npx skills add ...` to install skills'
212
- : undefined
212
+ skillsDisabled || installedSkills.length > 0
213
+ ? undefined
214
+ : 'Run `aginit init` or `npx skills add ...` to install skills'
213
215
  });
214
216
 
215
217
  // Print grouped results
package/src/cli/main.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Command } from 'commander';
2
+ import { readFileSync } from 'node:fs';
2
3
  import { createProject } from './new.js';
3
4
  import { initCurrentDirectory } from './init.js';
4
5
  import { runDoctor } from './doctor.js';
@@ -14,15 +15,26 @@ import {
14
15
  runInteractiveWizard
15
16
  } from './wizard.js';
16
17
 
18
+ /**
19
+ * Read the version from package.json so releases only bump one place.
20
+ * Resolves from `src/cli/main.ts` and from `dist/cli/main.js` alike.
21
+ */
22
+ function readVersion(): string {
23
+ try {
24
+ const pkg = JSON.parse(readFileSync(new URL('../../package.json', import.meta.url), 'utf8'));
25
+ return typeof pkg.version === 'string' ? pkg.version : '0.0.0';
26
+ } catch {
27
+ return '0.0.0';
28
+ }
29
+ }
30
+
17
31
  export function createCliProgram(): Command {
18
32
  const program = new Command();
19
33
 
20
34
  program
21
35
  .name('aginit')
22
- .description(
23
- 'Minimal, modular AI-first project bootstrapper for T3 Code, Antigravity, and Codex'
24
- )
25
- .version('0.1.0');
36
+ .description('Minimal, modular AI-first project bootstrapper for AI coding agents')
37
+ .version(readVersion());
26
38
 
27
39
  // Root action: interactive wizard when in TTY, else display help
28
40
  program.action(async () => {
@@ -40,10 +52,6 @@ export function createCliProgram(): Command {
40
52
  .option('-p, --preset <preset>', 'Project preset: web | cli | generic', 'generic')
41
53
  .option('-f, --framework <framework>', 'Web framework: none | vite | next | existing', 'none')
42
54
  .option('-m, --package-manager <pm>', 'Package manager: pnpm | npm | yarn | bun', 'pnpm')
43
- .option(
44
- '--spec-workflow',
45
- 'Include full spec and tickets skills (to-spec, to-tickets, implement-spec)'
46
- )
47
55
  .option('--no-skills', 'Skip installing AI skills')
48
56
  .option('--no-graft', 'Skip codebase graph (Graft) setup')
49
57
  .option('--no-git', 'Skip git repository initialization')
@@ -53,7 +61,6 @@ export function createCliProgram(): Command {
53
61
  let finalPreset = options.preset;
54
62
  let finalFramework = options.framework;
55
63
  let finalPackageManager = options.packageManager;
56
- let finalSpecWorkflow = options.specWorkflow;
57
64
 
58
65
  if (!finalName) {
59
66
  if (!isInteractive()) {
@@ -71,24 +78,18 @@ export function createCliProgram(): Command {
71
78
  packageManager:
72
79
  command.getOptionValueSource('packageManager') === 'cli'
73
80
  ? (options.packageManager as PackageManager)
74
- : undefined,
75
- specWorkflow:
76
- command.getOptionValueSource('specWorkflow') === 'cli'
77
- ? options.specWorkflow
78
81
  : undefined
79
82
  });
80
83
  finalName = answers.projectName;
81
84
  finalPreset = answers.preset;
82
85
  finalFramework = answers.framework;
83
86
  finalPackageManager = answers.packageManager;
84
- finalSpecWorkflow = answers.specWorkflow;
85
87
  }
86
88
 
87
89
  const complete = await createProject(finalName, {
88
90
  preset: finalPreset as PresetType,
89
91
  framework: finalFramework as WebFramework,
90
92
  packageManager: finalPackageManager as PackageManager,
91
- specWorkflow: finalSpecWorkflow,
92
93
  skills: options.skills,
93
94
  graft: options.graft,
94
95
  git: options.git,
@@ -104,10 +105,6 @@ export function createCliProgram(): Command {
104
105
  .option('-p, --preset <preset>', 'Project preset: web | cli | generic')
105
106
  .option('-f, --framework <framework>', 'Web framework: none | vite | next | existing')
106
107
  .option('-m, --package-manager <pm>', 'Package manager: pnpm | npm | yarn | bun')
107
- .option(
108
- '--spec-workflow',
109
- 'Include full spec and tickets skills (to-spec, to-tickets, implement-spec)'
110
- )
111
108
  .option('--no-skills', 'Skip installing AI skills')
112
109
  .option('--no-graft', 'Skip codebase graph (Graft) setup')
113
110
  .option('--no-git', 'Skip git repository initialization')
@@ -116,32 +113,27 @@ export function createCliProgram(): Command {
116
113
  let finalPreset = options.preset;
117
114
  let finalFramework = options.framework;
118
115
  let finalPackageManager = options.packageManager;
119
- let finalSpecWorkflow = options.specWorkflow;
120
116
 
121
117
  const isPresetExplicit = command.getOptionValueSource('preset') === 'cli';
122
118
  const isFrameworkExplicit = command.getOptionValueSource('framework') === 'cli';
123
119
  const isPmExplicit = command.getOptionValueSource('packageManager') === 'cli';
124
- const isSpecExplicit = command.getOptionValueSource('specWorkflow') === 'cli';
125
120
 
126
121
  const savedConfig = readProjectConfig(process.cwd());
127
122
  if (isInteractive() && !isPresetExplicit && !options.dryRun && !savedConfig) {
128
123
  const answers = await promptInitProject({
129
124
  preset: isPresetExplicit ? (options.preset as PresetType) : undefined,
130
125
  framework: isFrameworkExplicit ? (options.framework as WebFramework) : undefined,
131
- packageManager: isPmExplicit ? (options.packageManager as PackageManager) : undefined,
132
- specWorkflow: isSpecExplicit ? options.specWorkflow : undefined
126
+ packageManager: isPmExplicit ? (options.packageManager as PackageManager) : undefined
133
127
  });
134
128
  finalPreset = answers.preset;
135
129
  finalFramework = answers.framework;
136
130
  finalPackageManager = answers.packageManager;
137
- finalSpecWorkflow = answers.specWorkflow;
138
131
  }
139
132
 
140
133
  const complete = await initCurrentDirectory({
141
134
  preset: finalPreset as PresetType,
142
135
  framework: finalFramework as WebFramework,
143
136
  packageManager: finalPackageManager as PackageManager,
144
- specWorkflow: finalSpecWorkflow,
145
137
  skills: options.skills,
146
138
  graft: options.graft,
147
139
  git: options.git,