@devmunna/agent-skillkit 0.1.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 (132) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +147 -0
  3. package/bin/ai-skills.js +5 -0
  4. package/dist/cli/commands/add.d.ts +2 -0
  5. package/dist/cli/commands/add.d.ts.map +1 -0
  6. package/dist/cli/commands/add.js +66 -0
  7. package/dist/cli/commands/add.js.map +1 -0
  8. package/dist/cli/commands/doctor.d.ts +2 -0
  9. package/dist/cli/commands/doctor.d.ts.map +1 -0
  10. package/dist/cli/commands/doctor.js +33 -0
  11. package/dist/cli/commands/doctor.js.map +1 -0
  12. package/dist/cli/commands/init.d.ts +10 -0
  13. package/dist/cli/commands/init.d.ts.map +1 -0
  14. package/dist/cli/commands/init.js +145 -0
  15. package/dist/cli/commands/init.js.map +1 -0
  16. package/dist/cli/commands/list.d.ts +5 -0
  17. package/dist/cli/commands/list.d.ts.map +1 -0
  18. package/dist/cli/commands/list.js +55 -0
  19. package/dist/cli/commands/list.js.map +1 -0
  20. package/dist/cli/commands/update.d.ts +2 -0
  21. package/dist/cli/commands/update.d.ts.map +1 -0
  22. package/dist/cli/commands/update.js +49 -0
  23. package/dist/cli/commands/update.js.map +1 -0
  24. package/dist/cli/commands/validate.d.ts +2 -0
  25. package/dist/cli/commands/validate.d.ts.map +1 -0
  26. package/dist/cli/commands/validate.js +22 -0
  27. package/dist/cli/commands/validate.js.map +1 -0
  28. package/dist/cli/index.d.ts +2 -0
  29. package/dist/cli/index.d.ts.map +1 -0
  30. package/dist/cli/index.js +49 -0
  31. package/dist/cli/index.js.map +1 -0
  32. package/dist/cli/prompts/agent-selector.d.ts +3 -0
  33. package/dist/cli/prompts/agent-selector.d.ts.map +1 -0
  34. package/dist/cli/prompts/agent-selector.js +23 -0
  35. package/dist/cli/prompts/agent-selector.js.map +1 -0
  36. package/dist/cli/prompts/stack-selector.d.ts +3 -0
  37. package/dist/cli/prompts/stack-selector.d.ts.map +1 -0
  38. package/dist/cli/prompts/stack-selector.js +60 -0
  39. package/dist/cli/prompts/stack-selector.js.map +1 -0
  40. package/dist/core/config-manager.d.ts +20 -0
  41. package/dist/core/config-manager.d.ts.map +1 -0
  42. package/dist/core/config-manager.js +107 -0
  43. package/dist/core/config-manager.js.map +1 -0
  44. package/dist/core/detector.d.ts +3 -0
  45. package/dist/core/detector.d.ts.map +1 -0
  46. package/dist/core/detector.js +50 -0
  47. package/dist/core/detector.js.map +1 -0
  48. package/dist/core/doctor.d.ts +12 -0
  49. package/dist/core/doctor.d.ts.map +1 -0
  50. package/dist/core/doctor.js +102 -0
  51. package/dist/core/doctor.js.map +1 -0
  52. package/dist/core/skill-registry.d.ts +11 -0
  53. package/dist/core/skill-registry.d.ts.map +1 -0
  54. package/dist/core/skill-registry.js +174 -0
  55. package/dist/core/skill-registry.js.map +1 -0
  56. package/dist/core/skill-resolver.d.ts +3 -0
  57. package/dist/core/skill-resolver.d.ts.map +1 -0
  58. package/dist/core/skill-resolver.js +36 -0
  59. package/dist/core/skill-resolver.js.map +1 -0
  60. package/dist/core/validator.d.ts +13 -0
  61. package/dist/core/validator.d.ts.map +1 -0
  62. package/dist/core/validator.js +99 -0
  63. package/dist/core/validator.js.map +1 -0
  64. package/dist/generators/agent-installer.d.ts +5 -0
  65. package/dist/generators/agent-installer.d.ts.map +1 -0
  66. package/dist/generators/agent-installer.js +20 -0
  67. package/dist/generators/agent-installer.js.map +1 -0
  68. package/dist/generators/agents-md.d.ts +3 -0
  69. package/dist/generators/agents-md.d.ts.map +1 -0
  70. package/dist/generators/agents-md.js +70 -0
  71. package/dist/generators/agents-md.js.map +1 -0
  72. package/dist/generators/claude-md.d.ts +3 -0
  73. package/dist/generators/claude-md.d.ts.map +1 -0
  74. package/dist/generators/claude-md.js +47 -0
  75. package/dist/generators/claude-md.js.map +1 -0
  76. package/dist/generators/skill-generator.d.ts +5 -0
  77. package/dist/generators/skill-generator.d.ts.map +1 -0
  78. package/dist/generators/skill-generator.js +34 -0
  79. package/dist/generators/skill-generator.js.map +1 -0
  80. package/dist/generators/workflows.d.ts +3 -0
  81. package/dist/generators/workflows.d.ts.map +1 -0
  82. package/dist/generators/workflows.js +57 -0
  83. package/dist/generators/workflows.js.map +1 -0
  84. package/dist/index.d.ts +13 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.js +13 -0
  87. package/dist/index.js.map +1 -0
  88. package/dist/types/index.d.ts +55 -0
  89. package/dist/types/index.d.ts.map +1 -0
  90. package/dist/types/index.js +2 -0
  91. package/dist/types/index.js.map +1 -0
  92. package/dist/utils/file-utils.d.ts +12 -0
  93. package/dist/utils/file-utils.d.ts.map +1 -0
  94. package/dist/utils/file-utils.js +39 -0
  95. package/dist/utils/file-utils.js.map +1 -0
  96. package/dist/utils/logger.d.ts +10 -0
  97. package/dist/utils/logger.d.ts.map +1 -0
  98. package/dist/utils/logger.js +11 -0
  99. package/dist/utils/logger.js.map +1 -0
  100. package/package.json +73 -0
  101. package/skills/clean-architecture/SKILL.md +324 -0
  102. package/skills/express-mvc-prisma/SKILL.md +168 -0
  103. package/skills/express-mvc-prisma/references/auth.md +190 -0
  104. package/skills/express-mvc-prisma/references/boilerplate.md +196 -0
  105. package/skills/express-mvc-prisma/references/error-handling.md +121 -0
  106. package/skills/express-mvc-prisma/references/module-scaffold.md +253 -0
  107. package/skills/express-mvc-prisma/references/prisma-setup.md +97 -0
  108. package/skills/express-mvc-prisma/references/response-helpers.md +157 -0
  109. package/skills/express-mvc-prisma/references/zod-validation.md +157 -0
  110. package/skills/fastify-rest/SKILL.md +287 -0
  111. package/skills/mongoose-odm/SKILL.md +281 -0
  112. package/skills/nextjs-fullstack/SKILL.md +328 -0
  113. package/skills/nextjs-fullstack/references/auth.md +270 -0
  114. package/skills/nextjs-fullstack/references/caching.md +157 -0
  115. package/skills/nextjs-fullstack/references/route-handlers.md +194 -0
  116. package/skills/nextjs-fullstack/references/server-actions.md +214 -0
  117. package/skills/nextjs-fullstack/references/server-components.md +190 -0
  118. package/skills/node-base/SKILL.md +139 -0
  119. package/skills/prisma-orm/SKILL.md +334 -0
  120. package/skills/react-feature-arch/SKILL.md +208 -0
  121. package/skills/react-feature-arch/references/api-layer.md +110 -0
  122. package/skills/react-feature-arch/references/components.md +192 -0
  123. package/skills/react-feature-arch/references/data-fetching.md +198 -0
  124. package/skills/react-feature-arch/references/forms.md +194 -0
  125. package/skills/react-feature-arch/references/routing.md +148 -0
  126. package/skills/react-feature-arch/references/state-management.md +107 -0
  127. package/skills/tailwind-css/SKILL.md +236 -0
  128. package/skills/tailwind-css/references/components.md +340 -0
  129. package/skills/tailwind-css/references/design-tokens.md +230 -0
  130. package/skills/tailwind-css/references/patterns.md +375 -0
  131. package/skills/tailwind-css/references/setup.md +165 -0
  132. package/skills/zod-validation/SKILL.md +267 -0
@@ -0,0 +1,174 @@
1
+ export const SKILL_CATALOG = {
2
+ 'node-base': {
3
+ name: 'node-base',
4
+ version: '1.0.0',
5
+ description: 'Base Node.js standards — async patterns, env config, project conventions',
6
+ category: 'base',
7
+ stack: ['node'],
8
+ depends: [],
9
+ tags: ['node', 'base', 'javascript', 'typescript'],
10
+ },
11
+ 'express-mvc-prisma': {
12
+ name: 'express-mvc-prisma',
13
+ version: '2.0.0',
14
+ description: 'Express v5 + Prisma v5 + Zod v4 — 4-file module pattern, JWT auth, async error propagation',
15
+ category: 'backend',
16
+ stack: ['express', 'prisma', 'postgresql', 'zod', 'jwt'],
17
+ depends: ['node-base'],
18
+ tags: ['express', 'express-v5', 'mvc', 'rest-api', 'prisma', 'postgresql', 'zod-v4'],
19
+ },
20
+ 'fastify-rest': {
21
+ name: 'fastify-rest',
22
+ version: '1.0.0',
23
+ description: 'Fastify REST API with schema validation, plugins, hooks, and performance patterns',
24
+ category: 'backend',
25
+ stack: ['fastify'],
26
+ depends: ['node-base'],
27
+ tags: ['fastify', 'rest-api', 'performance', 'plugins'],
28
+ },
29
+ 'prisma-orm': {
30
+ name: 'prisma-orm',
31
+ version: '2.0.0',
32
+ description: 'Prisma v5 — schema conventions, migrations, transactions, query optimization, seeding',
33
+ category: 'database',
34
+ stack: ['prisma', 'postgresql'],
35
+ depends: [],
36
+ tags: ['prisma', 'prisma-v5', 'orm', 'postgresql', 'database', 'migrations'],
37
+ },
38
+ 'mongoose-odm': {
39
+ name: 'mongoose-odm',
40
+ version: '1.0.0',
41
+ description: 'Mongoose ODM — schema design, virtuals, indexes, population, aggregation',
42
+ category: 'database',
43
+ stack: ['mongoose', 'mongodb'],
44
+ depends: [],
45
+ tags: ['mongoose', 'mongodb', 'odm', 'nosql'],
46
+ },
47
+ 'zod-validation': {
48
+ name: 'zod-validation',
49
+ version: '1.0.0',
50
+ description: 'Zod schema validation — request parsing, env config, type inference, transforms',
51
+ category: 'validation',
52
+ stack: ['zod'],
53
+ depends: [],
54
+ tags: ['zod', 'validation', 'typescript', 'schema'],
55
+ },
56
+ 'tailwind-css': {
57
+ name: 'tailwind-css',
58
+ version: '1.0.0',
59
+ description: 'Tailwind CSS v4 — CSS-first config, @theme tokens, CVA components, dark mode, animations, container queries',
60
+ category: 'frontend',
61
+ stack: ['tailwind', 'css'],
62
+ depends: [],
63
+ tags: ['tailwind', 'tailwind-v4', 'css', 'design-system', 'components', 'dark-mode', 'shadcn'],
64
+ },
65
+ 'react-feature-arch': {
66
+ name: 'react-feature-arch',
67
+ version: '2.0.0',
68
+ description: 'React 19 + TanStack Query v5 + Zustand v5 + React Router v7 — feature-based architecture',
69
+ category: 'frontend',
70
+ stack: ['react', 'typescript', 'vite'],
71
+ depends: [],
72
+ tags: ['react', 'react-19', 'tanstack-query', 'zustand', 'react-router-v7', 'frontend', 'spa'],
73
+ },
74
+ 'nextjs-fullstack': {
75
+ name: 'nextjs-fullstack',
76
+ version: '2.0.0',
77
+ description: 'Next.js 15 — App Router, Server Components, Server Actions, use cache, after(), Auth.js v5',
78
+ category: 'frontend',
79
+ stack: ['nextjs', 'react', 'typescript', 'prisma'],
80
+ depends: [],
81
+ tags: ['nextjs', 'nextjs-15', 'app-router', 'server-components', 'server-actions', 'fullstack'],
82
+ },
83
+ 'clean-architecture': {
84
+ name: 'clean-architecture',
85
+ version: '1.0.0',
86
+ description: 'Clean Architecture layers — entities, use cases, adapters, dependency inversion',
87
+ category: 'architecture',
88
+ stack: [],
89
+ depends: [],
90
+ tags: ['clean-architecture', 'ddd', 'solid', 'use-cases', 'entities'],
91
+ },
92
+ };
93
+ export const STACK_SKILL_MAP = {
94
+ express: ['express-mvc-prisma', 'node-base'],
95
+ fastify: ['fastify-rest', 'node-base'],
96
+ node: ['node-base'],
97
+ prisma: ['prisma-orm'],
98
+ postgresql: ['prisma-orm'],
99
+ mongoose: ['mongoose-odm'],
100
+ mongodb: ['mongoose-odm'],
101
+ zod: ['zod-validation'],
102
+ react: ['react-feature-arch'],
103
+ tailwind: ['tailwind-css'],
104
+ tailwindcss: ['tailwind-css'],
105
+ 'tailwind-css': ['tailwind-css'],
106
+ next: ['nextjs-fullstack'],
107
+ nextjs: ['nextjs-fullstack'],
108
+ 'next.js': ['nextjs-fullstack'],
109
+ clean: ['clean-architecture'],
110
+ 'clean-architecture': ['clean-architecture'],
111
+ };
112
+ export const SKILL_PROFILES = {
113
+ 'express-prisma': {
114
+ name: 'express-prisma',
115
+ description: 'Express REST API with Prisma, Zod validation, and Node.js base rules',
116
+ stacks: ['express', 'prisma', 'zod'],
117
+ skills: ['express-mvc-prisma', 'prisma-orm', 'zod-validation', 'node-base'],
118
+ },
119
+ 'fastify-api': {
120
+ name: 'fastify-api',
121
+ description: 'Fastify REST API with Node.js base rules',
122
+ stacks: ['fastify'],
123
+ skills: ['fastify-rest', 'node-base'],
124
+ },
125
+ 'next-fullstack': {
126
+ name: 'next-fullstack',
127
+ description: 'Next.js full-stack app with Prisma and Tailwind',
128
+ stacks: ['nextjs', 'prisma', 'tailwind'],
129
+ skills: ['nextjs-fullstack', 'prisma-orm', 'tailwind-css'],
130
+ },
131
+ 'react-spa': {
132
+ name: 'react-spa',
133
+ description: 'React SPA with feature architecture and Tailwind',
134
+ stacks: ['react', 'tailwind'],
135
+ skills: ['react-feature-arch', 'tailwind-css'],
136
+ },
137
+ mern: {
138
+ name: 'mern',
139
+ description: 'MongoDB, React, and Node.js application',
140
+ stacks: ['mongodb', 'react', 'node'],
141
+ skills: ['mongoose-odm', 'react-feature-arch', 'node-base'],
142
+ },
143
+ 'node-base': {
144
+ name: 'node-base',
145
+ description: 'Generic Node.js project standards',
146
+ stacks: ['node'],
147
+ skills: ['node-base'],
148
+ },
149
+ };
150
+ export function getSkillMeta(name) {
151
+ return SKILL_CATALOG[name];
152
+ }
153
+ export function getAllSkills() {
154
+ return Object.values(SKILL_CATALOG);
155
+ }
156
+ export function getSkillsByCategory(category) {
157
+ return getAllSkills().filter((s) => s.category === category);
158
+ }
159
+ export function getSkillProfile(name) {
160
+ return SKILL_PROFILES[name];
161
+ }
162
+ export function getAllProfiles() {
163
+ return Object.values(SKILL_PROFILES);
164
+ }
165
+ export function mapStackToSkills(stackItems) {
166
+ const skills = new Set();
167
+ for (const item of stackItems) {
168
+ const mapped = STACK_SKILL_MAP[item.toLowerCase()];
169
+ if (mapped)
170
+ mapped.forEach((s) => skills.add(s));
171
+ }
172
+ return [...skills];
173
+ }
174
+ //# sourceMappingURL=skill-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-registry.js","sourceRoot":"","sources":["../../src/core/skill-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SkillResolution } from '../types/index.js';
2
+ export declare function resolveSkills(requested: string[]): SkillResolution;
3
+ //# sourceMappingURL=skill-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-resolver.d.ts","sourceRoot":"","sources":["../../src/core/skill-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,eAAe,CAuClE"}
@@ -0,0 +1,36 @@
1
+ import { SKILL_CATALOG } from './skill-registry.js';
2
+ export function resolveSkills(requested) {
3
+ const resolved = new Set();
4
+ const missing = [];
5
+ const conflicts = [];
6
+ const resolve = (name) => {
7
+ if (resolved.has(name))
8
+ return;
9
+ if (!SKILL_CATALOG[name]) {
10
+ if (!missing.includes(name))
11
+ missing.push(name);
12
+ return;
13
+ }
14
+ const skill = SKILL_CATALOG[name];
15
+ // Resolve dependencies first (depth-first)
16
+ for (const dep of skill.depends ?? []) {
17
+ resolve(dep);
18
+ }
19
+ // Check conflicts
20
+ for (const conflict of skill.conflicts ?? []) {
21
+ if (resolved.has(conflict)) {
22
+ conflicts.push(`"${name}" conflicts with "${conflict}"`);
23
+ }
24
+ }
25
+ resolved.add(name);
26
+ };
27
+ for (const name of requested) {
28
+ resolve(name);
29
+ }
30
+ return {
31
+ ordered: [...resolved],
32
+ missing,
33
+ conflicts,
34
+ };
35
+ }
36
+ //# sourceMappingURL=skill-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-resolver.js","sourceRoot":"","sources":["../../src/core/skill-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,UAAU,aAAa,CAAC,SAAmB;IAC/C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,MAAM,OAAO,GAAG,CAAC,IAAY,EAAQ,EAAE;QACrC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO;QAE/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAElC,2CAA2C;QAC3C,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;QAED,kBAAkB;QAClB,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YAC7C,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3B,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,qBAAqB,QAAQ,GAAG,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC;QACtB,OAAO;QACP,SAAS;KACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ export type ValidationLevel = 'error' | 'warning';
2
+ export interface ValidationIssue {
3
+ level: ValidationLevel;
4
+ message: string;
5
+ file?: string;
6
+ }
7
+ export interface ValidationResult {
8
+ issues: ValidationIssue[];
9
+ errors: number;
10
+ warnings: number;
11
+ }
12
+ export declare function validatePackageSkills(): Promise<ValidationResult>;
13
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/core/validator.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,SAAS,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CA6EvE"}
@@ -0,0 +1,99 @@
1
+ import path from 'path';
2
+ import fs from 'fs-extra';
3
+ import { SKILL_CATALOG } from './skill-registry.js';
4
+ import { skillsSourceDir } from '../utils/file-utils.js';
5
+ export async function validatePackageSkills() {
6
+ const issues = [];
7
+ const root = skillsSourceDir();
8
+ const catalogNames = Object.keys(SKILL_CATALOG);
9
+ if (!(await fs.pathExists(root))) {
10
+ issues.push({ level: 'error', message: `Skills directory not found: ${root}` });
11
+ return summarize(issues);
12
+ }
13
+ const folderNames = await listSkillFolders(root);
14
+ for (const name of catalogNames) {
15
+ const meta = SKILL_CATALOG[name];
16
+ const folder = path.join(root, name);
17
+ const skillPath = path.join(folder, 'SKILL.md');
18
+ if (!(await fs.pathExists(folder))) {
19
+ issues.push({ level: 'error', message: `Catalog skill has no folder: ${name}` });
20
+ continue;
21
+ }
22
+ if (!(await fs.pathExists(skillPath))) {
23
+ issues.push({ level: 'error', message: `Skill is missing SKILL.md: ${name}`, file: skillPath });
24
+ continue;
25
+ }
26
+ const content = await fs.readFile(skillPath, 'utf-8');
27
+ const frontMatter = parseFrontMatter(content);
28
+ for (const field of ['name', 'version', 'description']) {
29
+ if (!frontMatter[field]) {
30
+ issues.push({
31
+ level: 'error',
32
+ message: `SKILL.md front matter missing "${field}": ${name}`,
33
+ file: skillPath,
34
+ });
35
+ }
36
+ }
37
+ if (frontMatter.name && frontMatter.name !== meta.name) {
38
+ issues.push({
39
+ level: 'error',
40
+ message: `Front matter name "${frontMatter.name}" does not match catalog "${meta.name}"`,
41
+ file: skillPath,
42
+ });
43
+ }
44
+ for (const dep of meta.depends ?? []) {
45
+ if (!SKILL_CATALOG[dep]) {
46
+ issues.push({ level: 'error', message: `Skill "${name}" depends on unknown skill "${dep}"` });
47
+ }
48
+ }
49
+ for (const reference of extractReferencePaths(content)) {
50
+ const referencePath = path.join(folder, reference);
51
+ if (!(await fs.pathExists(referencePath))) {
52
+ issues.push({
53
+ level: 'error',
54
+ message: `Missing referenced file "${reference}" in skill "${name}"`,
55
+ file: skillPath,
56
+ });
57
+ }
58
+ }
59
+ }
60
+ for (const folderName of folderNames) {
61
+ if (!SKILL_CATALOG[folderName]) {
62
+ issues.push({
63
+ level: 'warning',
64
+ message: `Skill folder is not listed in catalog: ${folderName}`,
65
+ file: path.join(root, folderName),
66
+ });
67
+ }
68
+ }
69
+ return summarize(issues);
70
+ }
71
+ async function listSkillFolders(root) {
72
+ const entries = await fs.readdir(root, { withFileTypes: true });
73
+ return entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort();
74
+ }
75
+ function parseFrontMatter(content) {
76
+ if (!content.startsWith('---\n'))
77
+ return {};
78
+ const end = content.indexOf('\n---', 4);
79
+ if (end < 0)
80
+ return {};
81
+ const frontMatter = content.slice(4, end);
82
+ const fields = {};
83
+ for (const line of frontMatter.split('\n')) {
84
+ const match = /^([a-zA-Z0-9_-]+):\s*(.*)$/.exec(line);
85
+ if (match)
86
+ fields[match[1]] = match[2].trim();
87
+ }
88
+ return fields;
89
+ }
90
+ function extractReferencePaths(content) {
91
+ const matches = content.matchAll(/references\/[a-zA-Z0-9._/-]+\.md/g);
92
+ return [...new Set([...matches].map((match) => match[0]))];
93
+ }
94
+ function summarize(issues) {
95
+ const errors = issues.filter((issue) => issue.level === 'error').length;
96
+ const warnings = issues.filter((issue) => issue.level === 'warning').length;
97
+ return { issues, errors, warnings };
98
+ }
99
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/core/validator.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAgBzD,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEhD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,+BAA+B,IAAI,EAAE,EAAE,CAAC,CAAC;QAChF,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAEjD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAEhD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,gCAAgC,IAAI,EAAE,EAAE,CAAC,CAAC;YACjF,SAAS;QACX,CAAC;QAED,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,8BAA8B,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAChG,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE9C,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,OAAO;oBACd,OAAO,EAAE,kCAAkC,KAAK,MAAM,IAAI,EAAE;oBAC5D,IAAI,EAAE,SAAS;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,sBAAsB,WAAW,CAAC,IAAI,6BAA6B,IAAI,CAAC,IAAI,GAAG;gBACxF,IAAI,EAAE,SAAS;aAChB,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,IAAI,+BAA+B,GAAG,GAAG,EAAE,CAAC,CAAC;YAChG,CAAC;QACH,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;YACvD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACnD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,OAAO;oBACd,OAAO,EAAE,4BAA4B,SAAS,eAAe,IAAI,GAAG;oBACpE,IAAI,EAAE,SAAS;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,0CAA0C,UAAU,EAAE;gBAC/D,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC1C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1F,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACxC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,KAAK;YAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAe;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,SAAS,CAAC,MAAyB;IAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IACxE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { AgentInstallTarget, AiAgent } from '../types/index.js';
2
+ export declare function installSkillsForAgents(skillNames: string[], targets: AgentInstallTarget[]): Promise<void>;
3
+ export declare function agentLabel(agent: AiAgent): string;
4
+ export declare function agentLabels(agents: AiAgent[]): string;
5
+ //# sourceMappingURL=agent-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-installer.d.ts","sourceRoot":"","sources":["../../src/generators/agent-installer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AASrE,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,kBAAkB,EAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEjD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAErD"}
@@ -0,0 +1,20 @@
1
+ import path from 'path';
2
+ import { installSkills } from './skill-generator.js';
3
+ import { logger } from '../utils/logger.js';
4
+ const AGENT_LABELS = {
5
+ claude: 'Claude Code',
6
+ codex: 'Codex',
7
+ };
8
+ export async function installSkillsForAgents(skillNames, targets) {
9
+ for (const target of targets) {
10
+ logger.step(`Installing for ${AGENT_LABELS[target.agent]} → ${path.relative(process.cwd(), target.skillsDir)}`);
11
+ await installSkills(skillNames, target.skillsDir);
12
+ }
13
+ }
14
+ export function agentLabel(agent) {
15
+ return AGENT_LABELS[agent];
16
+ }
17
+ export function agentLabels(agents) {
18
+ return agents.map(agentLabel).join(', ');
19
+ }
20
+ //# sourceMappingURL=agent-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-installer.js","sourceRoot":"","sources":["../../src/generators/agent-installer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,YAAY,GAA4B;IAC5C,MAAM,EAAE,aAAa;IACrB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAoB,EACpB,OAA6B;IAE7B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CACT,kBAAkB,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CACrG,CAAC;QACF,MAAM,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAiB;IAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { InstalledSkill } from '../types/index.js';
2
+ export declare function generateAgentsMd(projectRoot: string, installedSkills: InstalledSkill[], skillsRelDir: string, workflowsRelDir: string): Promise<void>;
3
+ //# sourceMappingURL=agents-md.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-md.d.ts","sourceRoot":"","sources":["../../src/generators/agents-md.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKxD,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,cAAc,EAAE,EACjC,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,CAMf"}
@@ -0,0 +1,70 @@
1
+ import path from 'path';
2
+ import fs from 'fs-extra';
3
+ import { logger } from '../utils/logger.js';
4
+ const MARKER_START = '<!-- ai-skills:agents:start -->';
5
+ const MARKER_END = '<!-- ai-skills:agents:end -->';
6
+ export async function generateAgentsMd(projectRoot, installedSkills, skillsRelDir, workflowsRelDir) {
7
+ const agentsPath = path.join(projectRoot, 'AGENTS.md');
8
+ const existing = await readExisting(agentsPath);
9
+ const block = buildAgentsBlock(installedSkills, skillsRelDir, workflowsRelDir);
10
+ await fs.writeFile(agentsPath, mergeBlock(existing, block), 'utf-8');
11
+ logger.step(`AGENTS.md updated (${installedSkills.length} skill reference(s))`);
12
+ }
13
+ function buildAgentsBlock(skills, skillsRelDir, workflowsRelDir) {
14
+ const refs = skills
15
+ .map((skill) => `- ${skill.name}: ${skillsRelDir}/${skill.name}/SKILL.md`)
16
+ .join('\n');
17
+ return [
18
+ MARKER_START,
19
+ '# Agent Instructions',
20
+ '',
21
+ 'Use the installed AI development skills and workflows for this project.',
22
+ '',
23
+ '## Skill Loading',
24
+ '',
25
+ '- Read only the skills relevant to the current task.',
26
+ '- Prefer the project codebase and installed skill rules over generic assumptions.',
27
+ '- Open referenced files only when the current task needs that detail.',
28
+ '',
29
+ '## Installed Skills',
30
+ '',
31
+ refs || '- No skills installed yet.',
32
+ '',
33
+ '## Workflows',
34
+ '',
35
+ `- Feature work: ${workflowsRelDir}/implement-feature.md`,
36
+ `- Bug fixes: ${workflowsRelDir}/fix-bug.md`,
37
+ `- Code review: ${workflowsRelDir}/code-review.md`,
38
+ `- Refactors: ${workflowsRelDir}/refactor.md`,
39
+ '',
40
+ '## Guardrails',
41
+ '',
42
+ '- Inspect existing patterns before editing.',
43
+ '- Keep changes scoped to the user request.',
44
+ '- Do not add dependencies, files, or abstractions unless they are needed.',
45
+ '- Do not invent APIs, schemas, routes, or project conventions.',
46
+ '- Run the cheapest relevant verification before final response.',
47
+ '- Clearly report any verification that could not be run.',
48
+ '',
49
+ MARKER_END,
50
+ ].join('\n');
51
+ }
52
+ async function readExisting(filePath) {
53
+ try {
54
+ return await fs.readFile(filePath, 'utf-8');
55
+ }
56
+ catch {
57
+ return '';
58
+ }
59
+ }
60
+ function mergeBlock(existing, block) {
61
+ if (existing.includes(MARKER_START)) {
62
+ const re = new RegExp(`${escapeRegex(MARKER_START)}[\\s\\S]*?${escapeRegex(MARKER_END)}`, 'g');
63
+ return existing.replace(re, block);
64
+ }
65
+ return `${existing.trimEnd()}${existing.trim() ? '\n\n' : ''}${block}\n`;
66
+ }
67
+ function escapeRegex(str) {
68
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
69
+ }
70
+ //# sourceMappingURL=agents-md.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../../src/generators/agents-md.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,MAAM,YAAY,GAAG,iCAAiC,CAAC;AACvD,MAAM,UAAU,GAAG,+BAA+B,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,WAAmB,EACnB,eAAiC,EACjC,YAAoB,EACpB,eAAuB;IAEvB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;IAC/E,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IACrE,MAAM,CAAC,IAAI,CAAC,uBAAuB,eAAe,CAAC,MAAM,sBAAsB,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,gBAAgB,CACvB,MAAwB,EACxB,YAAoB,EACpB,eAAuB;IAEvB,MAAM,IAAI,GAAG,MAAM;SAChB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,IAAI,WAAW,CAAC;SACzE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;QACL,YAAY;QACZ,sBAAsB;QACtB,EAAE;QACF,yEAAyE;QACzE,EAAE;QACF,kBAAkB;QAClB,EAAE;QACF,sDAAsD;QACtD,mFAAmF;QACnF,uEAAuE;QACvE,EAAE;QACF,qBAAqB;QACrB,EAAE;QACF,IAAI,IAAI,4BAA4B;QACpC,EAAE;QACF,cAAc;QACd,EAAE;QACF,mBAAmB,eAAe,uBAAuB;QACzD,gBAAgB,eAAe,aAAa;QAC5C,kBAAkB,eAAe,iBAAiB;QAClD,gBAAgB,eAAe,cAAc;QAC7C,EAAE;QACF,eAAe;QACf,EAAE;QACF,6CAA6C;QAC7C,4CAA4C;QAC5C,2EAA2E;QAC3E,gEAAgE;QAChE,iEAAiE;QACjE,0DAA0D;QAC1D,EAAE;QACF,UAAU;KACX,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB,EAAE,KAAa;IACjD,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,IAAI,MAAM,CACnB,GAAG,WAAW,CAAC,YAAY,CAAC,aAAa,WAAW,CAAC,UAAU,CAAC,EAAE,EAClE,GAAG,CACJ,CAAC;QACF,OAAO,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;AAC3E,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { InstalledSkill } from '../types/index.js';
2
+ export declare function generateClaudeMd(projectRoot: string, installedSkills: InstalledSkill[], skillsRelDir: string): Promise<void>;
3
+ //# sourceMappingURL=claude-md.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-md.d.ts","sourceRoot":"","sources":["../../src/generators/claude-md.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKxD,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,cAAc,EAAE,EACjC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAOf"}
@@ -0,0 +1,47 @@
1
+ import path from 'path';
2
+ import fs from 'fs-extra';
3
+ import { logger } from '../utils/logger.js';
4
+ const MARKER_START = '<!-- ai-skills:start -->';
5
+ const MARKER_END = '<!-- ai-skills:end -->';
6
+ export async function generateClaudeMd(projectRoot, installedSkills, skillsRelDir) {
7
+ const claudeMdPath = path.join(projectRoot, 'CLAUDE.md');
8
+ const existing = await readExisting(claudeMdPath);
9
+ const block = buildSkillsBlock(installedSkills, skillsRelDir);
10
+ const updated = mergeBlock(existing, block);
11
+ await fs.writeFile(claudeMdPath, updated, 'utf-8');
12
+ logger.step(`CLAUDE.md updated (${installedSkills.length} skill reference(s))`);
13
+ }
14
+ function buildSkillsBlock(skills, skillsRelDir) {
15
+ const refs = skills
16
+ .map((s) => `@${skillsRelDir}/${s.name}/SKILL.md`)
17
+ .join('\n');
18
+ return [
19
+ MARKER_START,
20
+ '## AI Development Skills',
21
+ '',
22
+ '> Auto-managed by ai-skills. To update run: `npx ai-skills update`',
23
+ '',
24
+ refs,
25
+ '',
26
+ MARKER_END,
27
+ ].join('\n');
28
+ }
29
+ async function readExisting(filePath) {
30
+ try {
31
+ return await fs.readFile(filePath, 'utf-8');
32
+ }
33
+ catch {
34
+ return '# Project Instructions\n\n';
35
+ }
36
+ }
37
+ function mergeBlock(existing, block) {
38
+ if (existing.includes(MARKER_START)) {
39
+ const re = new RegExp(`${escapeRegex(MARKER_START)}[\\s\\S]*?${escapeRegex(MARKER_END)}`, 'g');
40
+ return existing.replace(re, block);
41
+ }
42
+ return `${existing.trimEnd()}\n\n${block}\n`;
43
+ }
44
+ function escapeRegex(str) {
45
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
46
+ }
47
+ //# sourceMappingURL=claude-md.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../../src/generators/claude-md.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAChD,MAAM,UAAU,GAAG,wBAAwB,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,WAAmB,EACnB,eAAiC,EACjC,YAAoB;IAEpB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,gBAAgB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,CAAC,IAAI,CAAC,uBAAuB,eAAe,CAAC,MAAM,sBAAsB,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAwB,EAAE,YAAoB;IACtE,MAAM,IAAI,GAAG,MAAM;SAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,YAAY,IAAI,CAAC,CAAC,IAAI,WAAW,CAAC;SACjD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;QACL,YAAY;QACZ,0BAA0B;QAC1B,EAAE;QACF,oEAAoE;QACpE,EAAE;QACF,IAAI;QACJ,EAAE;QACF,UAAU;KACX,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,4BAA4B,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB,EAAE,KAAa;IACjD,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,IAAI,MAAM,CACnB,GAAG,WAAW,CAAC,YAAY,CAAC,aAAa,WAAW,CAAC,UAAU,CAAC,EAAE,EAClE,GAAG,CACJ,CAAC;QACF,OAAO,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AAC/C,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function installSkill(skillName: string, outputDir: string): Promise<void>;
2
+ export declare function installSkills(skillNames: string[], outputDir: string): Promise<void>;
3
+ export declare function getInstalledSkillDirs(outputDir: string): Promise<string[]>;
4
+ export declare function skillVersion(name: string): string;
5
+ //# sourceMappingURL=skill-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-generator.d.ts","sourceRoot":"","sources":["../../src/generators/skill-generator.ts"],"names":[],"mappings":"AAMA,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAetF;AAED,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK1F;AAED,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAOhF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD"}
@@ -0,0 +1,34 @@
1
+ import path from 'path';
2
+ import fs from 'fs-extra';
3
+ import { skillSourceDir } from '../utils/file-utils.js';
4
+ import { logger } from '../utils/logger.js';
5
+ import { getSkillMeta } from '../core/skill-registry.js';
6
+ export async function installSkill(skillName, outputDir) {
7
+ const sourcePath = skillSourceDir(skillName);
8
+ const destPath = path.join(outputDir, skillName);
9
+ if (!(await fs.pathExists(sourcePath))) {
10
+ throw new Error(`Skill "${skillName}" source not found at: ${sourcePath}\n` +
11
+ `Ensure you are using a published version of ai-skills or run from the package root.`);
12
+ }
13
+ await fs.copy(sourcePath, destPath, { overwrite: true });
14
+ logger.step(`Installed: ${skillName} → ${path.relative(process.cwd(), destPath)}`);
15
+ }
16
+ export async function installSkills(skillNames, outputDir) {
17
+ await fs.ensureDir(outputDir);
18
+ for (const name of skillNames) {
19
+ await installSkill(name, outputDir);
20
+ }
21
+ }
22
+ export async function getInstalledSkillDirs(outputDir) {
23
+ try {
24
+ const entries = await fs.readdir(outputDir, { withFileTypes: true });
25
+ return entries.filter((e) => e.isDirectory()).map((e) => e.name);
26
+ }
27
+ catch {
28
+ return [];
29
+ }
30
+ }
31
+ export function skillVersion(name) {
32
+ return getSkillMeta(name)?.version ?? '1.0.0';
33
+ }
34
+ //# sourceMappingURL=skill-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-generator.js","sourceRoot":"","sources":["../../src/generators/skill-generator.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,SAAiB,EAAE,SAAiB;IACrE,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEjD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,UAAU,SAAS,0BAA0B,UAAU,IAAI;YAC3D,qFAAqF,CACtF,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,CAAC,IAAI,CACT,cAAc,SAAS,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,CACxE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAoB,EAAE,SAAiB;IACzE,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,SAAiB;IAC3D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC;AAChD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function generateWorkflows(projectRoot: string): Promise<void>;
2
+ export declare function workflowNames(): string[];
3
+ //# sourceMappingURL=workflows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/generators/workflows.ts"],"names":[],"mappings":"AA+CA,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS1E;AAED,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC"}