@vpxa/aikit 0.1.74 → 0.1.76

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 (128) hide show
  1. package/package.json +5 -1
  2. package/packages/cli/dist/index.js +2 -2
  3. package/packages/cli/dist/{init-DQkar6Es.js → init-CuRXmyD9.js} +1 -1
  4. package/packages/cli/dist/scaffold-WMQ2uQ48.js +2 -0
  5. package/packages/cli/dist/{user-CopNWxHP.js → user-vbJwa7x2.js} +1 -1
  6. package/scaffold/dist/adapters/claude-code.mjs +4 -0
  7. package/scaffold/dist/adapters/copilot.mjs +75 -0
  8. package/scaffold/dist/adapters/flows.mjs +1 -0
  9. package/scaffold/dist/adapters/skills.mjs +1 -0
  10. package/scaffold/{compiled → dist/compiled}/flows-data.mjs +304 -446
  11. package/scaffold/{compiled → dist/compiled}/skills-data.mjs +554 -2281
  12. package/scaffold/dist/definitions/agents.mjs +9 -0
  13. package/scaffold/dist/definitions/bodies.mjs +512 -0
  14. package/scaffold/dist/definitions/exclusions.mjs +1 -0
  15. package/scaffold/dist/definitions/hooks.mjs +1 -0
  16. package/scaffold/dist/definitions/models.mjs +1 -0
  17. package/scaffold/dist/definitions/plugins.mjs +1 -0
  18. package/scaffold/dist/definitions/prompts.mjs +225 -0
  19. package/scaffold/dist/definitions/protocols.mjs +835 -0
  20. package/scaffold/dist/definitions/tools.mjs +1 -0
  21. package/packages/cli/dist/scaffold-ukCDW3wQ.js +0 -2
  22. package/scaffold/_preview/agents/Architect-Reviewer-Alpha.agent.md +0 -132
  23. package/scaffold/_preview/agents/Architect-Reviewer-Beta.agent.md +0 -132
  24. package/scaffold/_preview/agents/Code-Reviewer-Alpha.agent.md +0 -112
  25. package/scaffold/_preview/agents/Code-Reviewer-Beta.agent.md +0 -112
  26. package/scaffold/_preview/agents/Debugger.agent.md +0 -412
  27. package/scaffold/_preview/agents/Documenter.agent.md +0 -468
  28. package/scaffold/_preview/agents/Explorer.agent.md +0 -76
  29. package/scaffold/_preview/agents/Frontend.agent.md +0 -440
  30. package/scaffold/_preview/agents/Implementer.agent.md +0 -425
  31. package/scaffold/_preview/agents/Orchestrator.agent.md +0 -452
  32. package/scaffold/_preview/agents/Planner.agent.md +0 -481
  33. package/scaffold/_preview/agents/README.md +0 -57
  34. package/scaffold/_preview/agents/Refactor.agent.md +0 -435
  35. package/scaffold/_preview/agents/Researcher-Alpha.agent.md +0 -151
  36. package/scaffold/_preview/agents/Researcher-Beta.agent.md +0 -152
  37. package/scaffold/_preview/agents/Researcher-Delta.agent.md +0 -153
  38. package/scaffold/_preview/agents/Researcher-Gamma.agent.md +0 -152
  39. package/scaffold/_preview/agents/Security.agent.md +0 -433
  40. package/scaffold/_preview/agents/_shared/architect-reviewer-base.md +0 -104
  41. package/scaffold/_preview/agents/_shared/code-agent-base.md +0 -366
  42. package/scaffold/_preview/agents/_shared/code-reviewer-base.md +0 -87
  43. package/scaffold/_preview/agents/_shared/decision-protocol.md +0 -27
  44. package/scaffold/_preview/agents/_shared/forge-protocol.md +0 -90
  45. package/scaffold/_preview/agents/_shared/researcher-base.md +0 -114
  46. package/scaffold/_preview/agents/templates/adr-template.md +0 -28
  47. package/scaffold/_preview/agents/templates/execution-state.md +0 -26
  48. package/scaffold/_preview/flows/_epilogue/steps/docs-sync/README.md +0 -120
  49. package/scaffold/_preview/flows/aikit-advanced/README.md +0 -70
  50. package/scaffold/_preview/flows/aikit-advanced/steps/design/README.md +0 -178
  51. package/scaffold/_preview/flows/aikit-advanced/steps/execute/README.md +0 -145
  52. package/scaffold/_preview/flows/aikit-advanced/steps/plan/README.md +0 -122
  53. package/scaffold/_preview/flows/aikit-advanced/steps/spec/README.md +0 -121
  54. package/scaffold/_preview/flows/aikit-advanced/steps/task/README.md +0 -119
  55. package/scaffold/_preview/flows/aikit-advanced/steps/verify/README.md +0 -145
  56. package/scaffold/_preview/flows/aikit-basic/README.md +0 -51
  57. package/scaffold/_preview/flows/aikit-basic/steps/assess/README.md +0 -109
  58. package/scaffold/_preview/flows/aikit-basic/steps/design/README.md +0 -116
  59. package/scaffold/_preview/flows/aikit-basic/steps/implement/README.md +0 -131
  60. package/scaffold/_preview/flows/aikit-basic/steps/verify/README.md +0 -123
  61. package/scaffold/_preview/prompts/aikit-ask.prompt.md +0 -13
  62. package/scaffold/_preview/prompts/aikit-debug.prompt.md +0 -15
  63. package/scaffold/_preview/prompts/aikit-design.prompt.md +0 -15
  64. package/scaffold/_preview/prompts/aikit-flow-add.prompt.md +0 -84
  65. package/scaffold/_preview/prompts/aikit-flow-create.prompt.md +0 -80
  66. package/scaffold/_preview/prompts/aikit-flow-manage.prompt.md +0 -24
  67. package/scaffold/_preview/prompts/aikit-implement.prompt.md +0 -17
  68. package/scaffold/_preview/prompts/aikit-plan.prompt.md +0 -15
  69. package/scaffold/_preview/prompts/aikit-review.prompt.md +0 -24
  70. package/scaffold/_preview/skills/adr-skill/SKILL.md +0 -335
  71. package/scaffold/_preview/skills/adr-skill/assets/templates/adr-madr.md +0 -89
  72. package/scaffold/_preview/skills/adr-skill/assets/templates/adr-readme.md +0 -20
  73. package/scaffold/_preview/skills/adr-skill/assets/templates/adr-simple.md +0 -46
  74. package/scaffold/_preview/skills/adr-skill/references/adr-conventions.md +0 -95
  75. package/scaffold/_preview/skills/adr-skill/references/examples.md +0 -193
  76. package/scaffold/_preview/skills/adr-skill/references/review-checklist.md +0 -77
  77. package/scaffold/_preview/skills/adr-skill/references/template-variants.md +0 -52
  78. package/scaffold/_preview/skills/adr-skill/scripts/bootstrap_adr.js +0 -259
  79. package/scaffold/_preview/skills/adr-skill/scripts/new_adr.js +0 -391
  80. package/scaffold/_preview/skills/adr-skill/scripts/set_adr_status.js +0 -169
  81. package/scaffold/_preview/skills/aikit/SKILL.md +0 -754
  82. package/scaffold/_preview/skills/brainstorming/SKILL.md +0 -265
  83. package/scaffold/_preview/skills/brainstorming/spec-document-reviewer-prompt.md +0 -49
  84. package/scaffold/_preview/skills/c4-architecture/SKILL.md +0 -389
  85. package/scaffold/_preview/skills/c4-architecture/references/advanced-patterns.md +0 -552
  86. package/scaffold/_preview/skills/c4-architecture/references/c4-syntax.md +0 -510
  87. package/scaffold/_preview/skills/c4-architecture/references/common-mistakes.md +0 -437
  88. package/scaffold/_preview/skills/c4-architecture/references/html-design-system.md +0 -337
  89. package/scaffold/_preview/skills/c4-architecture/references/html-template.html +0 -627
  90. package/scaffold/_preview/skills/docs/SKILL.md +0 -553
  91. package/scaffold/_preview/skills/docs/references/diataxis-anti-patterns.md +0 -147
  92. package/scaffold/_preview/skills/docs/references/diataxis-compass.md +0 -123
  93. package/scaffold/_preview/skills/docs/references/diataxis-quadrants.md +0 -192
  94. package/scaffold/_preview/skills/docs/references/diataxis-quality.md +0 -76
  95. package/scaffold/_preview/skills/docs/references/diataxis-templates.md +0 -120
  96. package/scaffold/_preview/skills/docs/references/flow-artifacts-guide.md +0 -70
  97. package/scaffold/_preview/skills/docs/references/project-knowledge-gotchas.md +0 -32
  98. package/scaffold/_preview/skills/docs/references/project-knowledge-templates.md +0 -281
  99. package/scaffold/_preview/skills/docs/references/project-knowledge-workflow.md +0 -80
  100. package/scaffold/_preview/skills/frontend-design/SKILL.md +0 -237
  101. package/scaffold/_preview/skills/lesson-learned/SKILL.md +0 -113
  102. package/scaffold/_preview/skills/lesson-learned/references/anti-patterns.md +0 -55
  103. package/scaffold/_preview/skills/lesson-learned/references/se-principles.md +0 -109
  104. package/scaffold/_preview/skills/multi-agents-development/SKILL.md +0 -448
  105. package/scaffold/_preview/skills/multi-agents-development/architecture-review-prompt.md +0 -81
  106. package/scaffold/_preview/skills/multi-agents-development/code-quality-review-prompt.md +0 -91
  107. package/scaffold/_preview/skills/multi-agents-development/implementer-prompt.md +0 -93
  108. package/scaffold/_preview/skills/multi-agents-development/parallel-dispatch-example.md +0 -167
  109. package/scaffold/_preview/skills/multi-agents-development/spec-review-prompt.md +0 -81
  110. package/scaffold/_preview/skills/present/SKILL.md +0 -616
  111. package/scaffold/_preview/skills/react/SKILL.md +0 -309
  112. package/scaffold/_preview/skills/repo-access/SKILL.md +0 -178
  113. package/scaffold/_preview/skills/repo-access/references/error-patterns.md +0 -116
  114. package/scaffold/_preview/skills/repo-access/references/platform-matrix.md +0 -142
  115. package/scaffold/_preview/skills/requirements-clarity/SKILL.md +0 -333
  116. package/scaffold/_preview/skills/session-handoff/SKILL.md +0 -199
  117. package/scaffold/_preview/skills/session-handoff/references/handoff-template.md +0 -139
  118. package/scaffold/_preview/skills/session-handoff/references/resume-checklist.md +0 -80
  119. package/scaffold/_preview/skills/session-handoff/scripts/check_staleness.js +0 -269
  120. package/scaffold/_preview/skills/session-handoff/scripts/create_handoff.js +0 -299
  121. package/scaffold/_preview/skills/session-handoff/scripts/list_handoffs.js +0 -113
  122. package/scaffold/_preview/skills/session-handoff/scripts/validate_handoff.js +0 -241
  123. package/scaffold/_preview/skills/typescript/SKILL.md +0 -405
  124. package/scaffold/adapters/claude-code.mjs +0 -73
  125. package/scaffold/adapters/copilot.mjs +0 -292
  126. package/scaffold/adapters/flows.mjs +0 -27
  127. package/scaffold/adapters/skills.mjs +0 -25
  128. package/scaffold/generate.mjs +0 -92
@@ -1,292 +0,0 @@
1
- /**
2
- * Copilot adapter — generates GitHub Copilot agent files from definitions.
3
- *
4
- * Output format:
5
- * agents/{Name}.agent.md — YAML frontmatter + markdown body
6
- * agents/_shared/{name}.md — Shared protocol files
7
- * agents/templates/execution-state.md
8
- * agents/README.md
9
- * prompts/{name}.prompt.md — YAML frontmatter + markdown body
10
- *
11
- * Copilot-specific conventions:
12
- * - model field appends " (copilot)" suffix
13
- * - tools are listed as YAML array in frontmatter
14
- * - prompts target a specific agent via `agent:` field
15
- * - hooks are embedded in copilot-instructions.md (not separate files)
16
- * - plugins/skills are SKILL.md files in .github/skills/
17
- */
18
-
19
- import { AGENTS } from '../definitions/agents.mjs';
20
- import { AGENT_BODIES } from '../definitions/bodies.mjs';
21
- import { COPILOT_MODELS, VARIANT_GROUPS } from '../definitions/models.mjs';
22
- import { PROMPTS } from '../definitions/prompts.mjs';
23
- import { PROTOCOLS, TEMPLATES } from '../definitions/protocols.mjs';
24
- import { IDE_CAPABILITIES } from '../definitions/tools.mjs';
25
-
26
- // ─── Copilot tool mapping ─────────────────────────────────────────────────
27
-
28
- /** Map abstract IDE capability names to Copilot tool identifiers */
29
- const COPILOT_TOOL_MAP = {
30
- terminal: 'execute/runInTerminal',
31
- problems: 'read/problems',
32
- readFile: 'read/readFile',
33
- lastCommand: 'read/terminalLastCommand',
34
- subagent: 'agent/runSubagent',
35
- createFile: 'edit/createFile',
36
- editFiles: 'edit/editFiles',
37
- rename: 'edit/rename',
38
- createDirectory: 'edit/createDirectory',
39
- search: 'search/changes, search/codebase, search/usages',
40
- web: 'web/fetch, web/githubRepo',
41
- todo: 'todo',
42
- memory: 'vscode/memory',
43
- newWorkspace: 'vscode/newWorkspace',
44
- reviewPlan: 'vscode/reviewPlan',
45
- askQuestions: 'vscode/askQuestions',
46
- resolveMemoryFileUri: 'vscode/resolveMemoryFileUri',
47
- runCommand: 'vscode/runCommand',
48
- switchAgent: 'vscode/switchAgent',
49
- killTerminal: 'execute/killTerminal',
50
- createTask: 'execute/createAndRunTask',
51
- terminalSel: 'read/terminalSelection',
52
- fileSearch: 'search/fileSearch',
53
- listDir: 'search/listDirectory',
54
- textSearch: 'search/textSearch',
55
- searchSubagent: 'search/searchSubagent',
56
- browser:
57
- 'browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog',
58
- };
59
-
60
- function buildToolsYaml(toolRole) {
61
- const capabilities = IDE_CAPABILITIES[toolRole] || [];
62
- const copilotTools = capabilities.map((cap) => COPILOT_TOOL_MAP[cap]).filter(Boolean);
63
- // Use server wildcard instead of listing all 67 tools individually.
64
- // VS Code expands `<server-name>/*` to all tools from that MCP server.
65
- return `[${[...copilotTools, 'aikit/*'].join(', ')}]`;
66
- }
67
-
68
- function copilotModel(agentName) {
69
- const models = COPILOT_MODELS[agentName];
70
- if (!models) return 'Auto (copilot)';
71
- // NOTE: Model array syntax (e.g. [model1, model2]) is experimental and
72
- // requires a VS Code experiment flag to be enabled. For now, we always
73
- // emit the primary (first) model as a plain string.
74
- if (Array.isArray(models)) {
75
- return models[0] || 'Auto (copilot)';
76
- }
77
- return models;
78
- }
79
-
80
- const FLOWS_SECTION = [
81
- '## Flows',
82
- '',
83
- "This project uses aikit's pluggable flow system. Check flow status with the `flow_status` MCP tool.",
84
- "If a flow is active, follow the current step's skill instructions. Advance with `flow_step({ action: 'next' })`.",
85
- 'Use `flow_list` to see available flows and `flow_start` to begin one.',
86
- ].join('\n');
87
-
88
- // ─── Agent file generators ────────────────────────────────────────────────
89
-
90
- function buildAgentTable() {
91
- const rows = [];
92
- for (const [name, def] of Object.entries(AGENTS)) {
93
- if (def.variants) {
94
- for (const suffix of VARIANT_GROUPS[name] || []) {
95
- const fullName = `${name}-${suffix}`;
96
- const models = COPILOT_MODELS[fullName] || COPILOT_MODELS[name];
97
- const model = Array.isArray(models) ? models[0] : models || 'Unknown';
98
- const varDef = def.variants[suffix] || {};
99
- const desc = varDef.description || def.description;
100
- rows.push(`| **${fullName}** | ${desc} | ${model} | ${def.category} |`);
101
- }
102
- } else {
103
- const models = COPILOT_MODELS[name];
104
- const model = Array.isArray(models) ? models[0] : models || 'Unknown';
105
- rows.push(`| **${name}** | ${def.description} | ${model} | ${def.category} |`);
106
- }
107
- }
108
- return `| Agent | Purpose | Model | Category |\n|-------|---------|-------|----------|\n${rows.join('\n')}`;
109
- }
110
-
111
- function generateVariantAgent(roleName, suffix, def) {
112
- const fullName = `${roleName}-${suffix}`;
113
- const varDef = def.variants[suffix] || {};
114
- const model = copilotModel(fullName);
115
- const desc = varDef.description || def.description;
116
- const identity =
117
- varDef.identity ||
118
- (suffix === VARIANT_GROUPS[roleName]?.[0]
119
- ? `, the primary ${roleName} agent.`
120
- : `, a variant of ${roleName}. Same responsibilities, different model perspective.`);
121
-
122
- const sharedContent =
123
- def.sharedBase && PROTOCOLS[def.sharedBase] ? `\n\n${PROTOCOLS[def.sharedBase]}` : '';
124
-
125
- const extra = def.extraBody ? `\n\n${def.extraBody}` : '';
126
- const variantAddendum = varDef.bodyAddendum ? `\n\n${varDef.bodyAddendum}` : '';
127
-
128
- const skillsSection = def.skills?.length
129
- ? `\n\n## Skills (load on demand)\n\n| Skill | When to load |\n|-------|--------------|\n${def.skills.map(([s, w]) => `| ${s} | ${w} |`).join('\n')}`
130
- : '';
131
-
132
- const title = def.title || roleName;
133
-
134
- return `---
135
- description: '${desc}'
136
- ${def.argumentHint ? `argument-hint: "${def.argumentHint}"\n` : ''}tools: ${buildToolsYaml(def.toolRole)}
137
- model: ${model}
138
- ---
139
-
140
- # ${fullName} - ${title}
141
-
142
- You are **${fullName}**${identity}${extra}
143
- ${sharedContent}${variantAddendum}${skillsSection}
144
-
145
- ${FLOWS_SECTION}
146
- `;
147
- }
148
-
149
- function generateSingleAgent(name, def) {
150
- const model = copilotModel(name);
151
- const body =
152
- typeof AGENT_BODIES[name] === 'function'
153
- ? AGENT_BODIES[name](buildAgentTable())
154
- : AGENT_BODIES[name] || '';
155
-
156
- const sharedContent =
157
- def.sharedBase && PROTOCOLS[def.sharedBase] ? `\n\n${PROTOCOLS[def.sharedBase]}` : '';
158
-
159
- const additionalContent = (def.sharedProtocols || [])
160
- .map((key) => (PROTOCOLS[key] ? `\n\n${PROTOCOLS[key]}` : ''))
161
- .join('');
162
-
163
- const title = def.title || name;
164
- const skillsSection = def.skills?.length
165
- ? `\n## Skills (load on demand)\n\n| Skill | When to load |\n|-------|--------------|\n${def.skills.map(([s, w]) => `| ${s} | ${w} |`).join('\n')}\n`
166
- : '';
167
-
168
- return `---
169
- description: '${def.description}'
170
- ${def.argumentHint ? `argument-hint: "${def.argumentHint}"\n` : ''}tools: ${buildToolsYaml(def.toolRole)}
171
- model: ${model}
172
- ---
173
-
174
- # ${name} - ${title}
175
-
176
- You are the **${name}**, ${def.description.toLowerCase().replace(/^./, (c) => c.toLowerCase())}
177
-
178
- ${body}${sharedContent}${additionalContent}${skillsSection}
179
-
180
- ${FLOWS_SECTION}
181
- `;
182
- }
183
-
184
- // ─── Prompt file generator ────────────────────────────────────────────────
185
-
186
- function generatePrompt(_name, def) {
187
- // NOTE: Do NOT emit a `tools:` field in prompt files.
188
- // Prompt `tools:` is an exclusive allowlist in VS Code — it replaces the
189
- // agent's tools entirely. Since prompts only list aikit/* MCP tools (which
190
- // are all deferred), the API rejects with "All tools cannot be deferred."
191
- // Omitting `tools:` lets the prompt inherit the full tool set from `agent:`.
192
- return `---
193
- description: "${def.description}"
194
- agent: "${def.agent}"
195
- ---
196
-
197
- ${def.content}
198
- `;
199
- }
200
-
201
- // ─── README generator ─────────────────────────────────────────────────────
202
-
203
- function generateReadme() {
204
- return `# Agents
205
-
206
- This directory contains AI agent definitions generated by \`@vpxa/aikit init\`.
207
-
208
- ## Agent Roster
209
-
210
- ${buildAgentTable()}
211
-
212
- ## Multi-Model Pattern
213
-
214
- Variant agents (Researcher-Alpha/Beta/Gamma/Delta, Code-Reviewer-Alpha/Beta, Architect-Reviewer-Alpha/Beta) share the same methodology via files in \`_shared/\`. They differ only in which LLM model backs them — enabling multi-model decision analysis and dual-review workflows.
215
-
216
- **Agent names are model-agnostic.** The model behind Alpha/Beta/Gamma/Delta can be changed in \`scaffold/definitions/models.mjs\` without renaming any agent files.
217
-
218
- ## Structure
219
-
220
- \`\`\`
221
- agents/
222
- {Name}.agent.md — Agent definition (YAML frontmatter + instructions)
223
- _shared/ — Shared protocols referenced by multiple agents
224
- code-agent-base.md — Base for all code-modifying agents
225
- researcher-base.md — Base for all Researcher variants
226
- code-reviewer-base.md — Base for all Code-Reviewer variants
227
- architect-reviewer-base.md — Base for all Architect-Reviewer variants
228
- decision-protocol.md — Multi-model decision protocol rules
229
- forge-protocol.md — FORGE quality gate protocol
230
- templates/
231
- execution-state.md — Orchestrator state tracking template
232
- adr-template.md — Architecture Decision Record template
233
- \`\`\`
234
-
235
- ## Regenerating
236
-
237
- To regenerate after changing models or agent definitions:
238
-
239
- \`\`\`bash
240
- cd knowledge-base
241
- node scaffold/generate.mjs
242
- \`\`\`
243
- `;
244
- }
245
-
246
- // ─── Public API ───────────────────────────────────────────────────────────
247
-
248
- /**
249
- * Generate all Copilot scaffold files.
250
- * Returns an array of { path, content } objects.
251
- * The caller (generate.mjs) is responsible for writing them to disk.
252
- */
253
- export function generateCopilot() {
254
- const files = [];
255
-
256
- // Agent files
257
- for (const [name, def] of Object.entries(AGENTS)) {
258
- if (def.variants) {
259
- for (const suffix of VARIANT_GROUPS[name] || []) {
260
- files.push({
261
- path: `agents/${name}-${suffix}.agent.md`,
262
- content: generateVariantAgent(name, suffix, def),
263
- });
264
- }
265
- } else {
266
- files.push({
267
- path: `agents/${name}.agent.md`,
268
- content: generateSingleAgent(name, def),
269
- });
270
- }
271
- }
272
-
273
- // Shared protocols
274
- for (const [name, content] of Object.entries(PROTOCOLS)) {
275
- files.push({ path: `agents/_shared/${name}.md`, content: `${content}\n` });
276
- }
277
-
278
- // Templates
279
- for (const [name, content] of Object.entries(TEMPLATES)) {
280
- files.push({ path: `agents/templates/${name}.md`, content: `${content}\n` });
281
- }
282
-
283
- // README
284
- files.push({ path: 'agents/README.md', content: generateReadme() });
285
-
286
- // Prompts
287
- for (const [name, def] of Object.entries(PROMPTS)) {
288
- files.push({ path: `prompts/aikit-${name}.prompt.md`, content: generatePrompt(name, def) });
289
- }
290
-
291
- return files;
292
- }
@@ -1,27 +0,0 @@
1
- /**
2
- * Flows adapter - generates flow instruction files from compiled definitions.
3
- *
4
- * Flow content is compiled into ../compiled/flows-data.mjs by compile.mjs.
5
- * This adapter provides the generateFlows() function used by the init command.
6
- * Note: flow.json files are NOT included - they are structural metadata
7
- * handled by the flow system.
8
- */
9
-
10
- import { FLOWS } from '../compiled/flows-data.mjs';
11
-
12
- /**
13
- * Generate all flow instruction files for deployment.
14
- * @returns {Array<{path: string, content: string}>}
15
- */
16
- export function generateFlows() {
17
- const output = [];
18
- for (const [flowName, files] of Object.entries(FLOWS)) {
19
- for (const { file, content } of files) {
20
- output.push({
21
- path: `${flowName}/${file}`,
22
- content,
23
- });
24
- }
25
- }
26
- return output;
27
- }
@@ -1,25 +0,0 @@
1
- /**
2
- * Skills adapter - generates skill files from compiled definitions.
3
- *
4
- * Skill content is compiled into ../compiled/skills-data.mjs by compile.mjs.
5
- * This adapter provides the generateSkills() function used by the init command.
6
- */
7
-
8
- import { SKILLS } from '../compiled/skills-data.mjs';
9
-
10
- /**
11
- * Generate all skill files for deployment.
12
- * @returns {Array<{path: string, content: string}>}
13
- */
14
- export function generateSkills() {
15
- const output = [];
16
- for (const [skillName, files] of Object.entries(SKILLS)) {
17
- for (const { file, content } of files) {
18
- output.push({
19
- path: `${skillName}/${file}`,
20
- content,
21
- });
22
- }
23
- }
24
- return output;
25
- }
@@ -1,92 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Scaffold generator — reads definitions, picks adapter, writes files.
4
- *
5
- * Usage:
6
- * node scaffold/generate.mjs # Default: all adapters
7
- * node scaffold/generate.mjs --ide copilot # Copilot only
8
- * node scaffold/generate.mjs --ide claude-code # Claude Code only [stub]
9
- *
10
- * Architecture:
11
- * definitions/ — IDE-agnostic data (agents, models, tools, prompts, hooks, plugins)
12
- * adapters/ — Generator adapters (copilot, claude-code, skills, flows)
13
- * _preview/ — Preview output directory (dev only — `aikit init` uses adapters directly)
14
- */
15
-
16
- import { existsSync, mkdirSync, rmSync, writeFileSync } from 'node:fs';
17
- import { dirname, resolve } from 'node:path';
18
- import { fileURLToPath } from 'node:url';
19
- import { generateClaudeCode } from './adapters/claude-code.mjs';
20
- import { generateCopilot } from './adapters/copilot.mjs';
21
- import { generateFlows } from './adapters/flows.mjs';
22
- import { generateSkills } from './adapters/skills.mjs';
23
-
24
- const __dirname = dirname(fileURLToPath(import.meta.url));
25
-
26
- const ADAPTERS = {
27
- copilot: {
28
- generate: generateCopilot,
29
- outDir: '_preview',
30
- cleanDirs: ['agents', 'prompts', 'commands'],
31
- },
32
- 'claude-code': {
33
- generate: generateClaudeCode,
34
- outDir: 'claude-code',
35
- cleanDirs: ['agents', 'prompts', 'commands'],
36
- },
37
- skills: { generate: generateSkills, outDir: '_preview/skills', cleanDirs: null },
38
- flows: { generate: generateFlows, outDir: '_preview/flows', cleanDirs: null },
39
- };
40
-
41
- // ─── Parse args ───────────────────────────────────────────────────────────
42
-
43
- const args = process.argv.slice(2);
44
- const ideIdx = args.indexOf('--ide');
45
- const targetIde = ideIdx >= 0 ? args[ideIdx + 1] : null;
46
-
47
- const idesToRun = targetIde ? [targetIde] : Object.keys(ADAPTERS);
48
-
49
- // ─── Generate ─────────────────────────────────────────────────────────────
50
-
51
- for (const ide of idesToRun) {
52
- const adapter = ADAPTERS[ide];
53
- if (!adapter) {
54
- console.error(`Unknown IDE: ${ide}. Available: ${Object.keys(ADAPTERS).join(', ')}`);
55
- process.exit(1);
56
- }
57
-
58
- const outDir = resolve(__dirname, adapter.outDir);
59
-
60
- if (adapter.cleanDirs) {
61
- for (const subdir of adapter.cleanDirs) {
62
- const sub = resolve(outDir, subdir);
63
- if (existsSync(sub)) {
64
- rmSync(sub, { recursive: true });
65
- }
66
- }
67
- } else if (existsSync(outDir)) {
68
- rmSync(outDir, { recursive: true });
69
- }
70
-
71
- console.log(`\n─── Generating ${ide} scaffold ───`);
72
-
73
- const files = adapter.generate();
74
-
75
- if (files.length === 0) {
76
- console.log(` (stub — no files generated)`);
77
- continue;
78
- }
79
-
80
- let count = 0;
81
- for (const { path, content } of files) {
82
- const fullPath = resolve(outDir, path);
83
- mkdirSync(dirname(fullPath), { recursive: true });
84
- writeFileSync(fullPath, content, 'utf-8');
85
- console.log(` ${path}`);
86
- count++;
87
- }
88
-
89
- console.log(` → ${count} files written to scaffold/${adapter.outDir}/`);
90
- }
91
-
92
- console.log('\nDone!');