@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.
- package/package.json +5 -1
- package/packages/cli/dist/index.js +2 -2
- package/packages/cli/dist/{init-DQkar6Es.js → init-CuRXmyD9.js} +1 -1
- package/packages/cli/dist/scaffold-WMQ2uQ48.js +2 -0
- package/packages/cli/dist/{user-CopNWxHP.js → user-vbJwa7x2.js} +1 -1
- package/scaffold/dist/adapters/claude-code.mjs +4 -0
- package/scaffold/dist/adapters/copilot.mjs +75 -0
- package/scaffold/dist/adapters/flows.mjs +1 -0
- package/scaffold/dist/adapters/skills.mjs +1 -0
- package/scaffold/{compiled → dist/compiled}/flows-data.mjs +304 -446
- package/scaffold/{compiled → dist/compiled}/skills-data.mjs +554 -2281
- package/scaffold/dist/definitions/agents.mjs +9 -0
- package/scaffold/dist/definitions/bodies.mjs +512 -0
- package/scaffold/dist/definitions/exclusions.mjs +1 -0
- package/scaffold/dist/definitions/hooks.mjs +1 -0
- package/scaffold/dist/definitions/models.mjs +1 -0
- package/scaffold/dist/definitions/plugins.mjs +1 -0
- package/scaffold/dist/definitions/prompts.mjs +225 -0
- package/scaffold/dist/definitions/protocols.mjs +835 -0
- package/scaffold/dist/definitions/tools.mjs +1 -0
- package/packages/cli/dist/scaffold-ukCDW3wQ.js +0 -2
- package/scaffold/_preview/agents/Architect-Reviewer-Alpha.agent.md +0 -132
- package/scaffold/_preview/agents/Architect-Reviewer-Beta.agent.md +0 -132
- package/scaffold/_preview/agents/Code-Reviewer-Alpha.agent.md +0 -112
- package/scaffold/_preview/agents/Code-Reviewer-Beta.agent.md +0 -112
- package/scaffold/_preview/agents/Debugger.agent.md +0 -412
- package/scaffold/_preview/agents/Documenter.agent.md +0 -468
- package/scaffold/_preview/agents/Explorer.agent.md +0 -76
- package/scaffold/_preview/agents/Frontend.agent.md +0 -440
- package/scaffold/_preview/agents/Implementer.agent.md +0 -425
- package/scaffold/_preview/agents/Orchestrator.agent.md +0 -452
- package/scaffold/_preview/agents/Planner.agent.md +0 -481
- package/scaffold/_preview/agents/README.md +0 -57
- package/scaffold/_preview/agents/Refactor.agent.md +0 -435
- package/scaffold/_preview/agents/Researcher-Alpha.agent.md +0 -151
- package/scaffold/_preview/agents/Researcher-Beta.agent.md +0 -152
- package/scaffold/_preview/agents/Researcher-Delta.agent.md +0 -153
- package/scaffold/_preview/agents/Researcher-Gamma.agent.md +0 -152
- package/scaffold/_preview/agents/Security.agent.md +0 -433
- package/scaffold/_preview/agents/_shared/architect-reviewer-base.md +0 -104
- package/scaffold/_preview/agents/_shared/code-agent-base.md +0 -366
- package/scaffold/_preview/agents/_shared/code-reviewer-base.md +0 -87
- package/scaffold/_preview/agents/_shared/decision-protocol.md +0 -27
- package/scaffold/_preview/agents/_shared/forge-protocol.md +0 -90
- package/scaffold/_preview/agents/_shared/researcher-base.md +0 -114
- package/scaffold/_preview/agents/templates/adr-template.md +0 -28
- package/scaffold/_preview/agents/templates/execution-state.md +0 -26
- package/scaffold/_preview/flows/_epilogue/steps/docs-sync/README.md +0 -120
- package/scaffold/_preview/flows/aikit-advanced/README.md +0 -70
- package/scaffold/_preview/flows/aikit-advanced/steps/design/README.md +0 -178
- package/scaffold/_preview/flows/aikit-advanced/steps/execute/README.md +0 -145
- package/scaffold/_preview/flows/aikit-advanced/steps/plan/README.md +0 -122
- package/scaffold/_preview/flows/aikit-advanced/steps/spec/README.md +0 -121
- package/scaffold/_preview/flows/aikit-advanced/steps/task/README.md +0 -119
- package/scaffold/_preview/flows/aikit-advanced/steps/verify/README.md +0 -145
- package/scaffold/_preview/flows/aikit-basic/README.md +0 -51
- package/scaffold/_preview/flows/aikit-basic/steps/assess/README.md +0 -109
- package/scaffold/_preview/flows/aikit-basic/steps/design/README.md +0 -116
- package/scaffold/_preview/flows/aikit-basic/steps/implement/README.md +0 -131
- package/scaffold/_preview/flows/aikit-basic/steps/verify/README.md +0 -123
- package/scaffold/_preview/prompts/aikit-ask.prompt.md +0 -13
- package/scaffold/_preview/prompts/aikit-debug.prompt.md +0 -15
- package/scaffold/_preview/prompts/aikit-design.prompt.md +0 -15
- package/scaffold/_preview/prompts/aikit-flow-add.prompt.md +0 -84
- package/scaffold/_preview/prompts/aikit-flow-create.prompt.md +0 -80
- package/scaffold/_preview/prompts/aikit-flow-manage.prompt.md +0 -24
- package/scaffold/_preview/prompts/aikit-implement.prompt.md +0 -17
- package/scaffold/_preview/prompts/aikit-plan.prompt.md +0 -15
- package/scaffold/_preview/prompts/aikit-review.prompt.md +0 -24
- package/scaffold/_preview/skills/adr-skill/SKILL.md +0 -335
- package/scaffold/_preview/skills/adr-skill/assets/templates/adr-madr.md +0 -89
- package/scaffold/_preview/skills/adr-skill/assets/templates/adr-readme.md +0 -20
- package/scaffold/_preview/skills/adr-skill/assets/templates/adr-simple.md +0 -46
- package/scaffold/_preview/skills/adr-skill/references/adr-conventions.md +0 -95
- package/scaffold/_preview/skills/adr-skill/references/examples.md +0 -193
- package/scaffold/_preview/skills/adr-skill/references/review-checklist.md +0 -77
- package/scaffold/_preview/skills/adr-skill/references/template-variants.md +0 -52
- package/scaffold/_preview/skills/adr-skill/scripts/bootstrap_adr.js +0 -259
- package/scaffold/_preview/skills/adr-skill/scripts/new_adr.js +0 -391
- package/scaffold/_preview/skills/adr-skill/scripts/set_adr_status.js +0 -169
- package/scaffold/_preview/skills/aikit/SKILL.md +0 -754
- package/scaffold/_preview/skills/brainstorming/SKILL.md +0 -265
- package/scaffold/_preview/skills/brainstorming/spec-document-reviewer-prompt.md +0 -49
- package/scaffold/_preview/skills/c4-architecture/SKILL.md +0 -389
- package/scaffold/_preview/skills/c4-architecture/references/advanced-patterns.md +0 -552
- package/scaffold/_preview/skills/c4-architecture/references/c4-syntax.md +0 -510
- package/scaffold/_preview/skills/c4-architecture/references/common-mistakes.md +0 -437
- package/scaffold/_preview/skills/c4-architecture/references/html-design-system.md +0 -337
- package/scaffold/_preview/skills/c4-architecture/references/html-template.html +0 -627
- package/scaffold/_preview/skills/docs/SKILL.md +0 -553
- package/scaffold/_preview/skills/docs/references/diataxis-anti-patterns.md +0 -147
- package/scaffold/_preview/skills/docs/references/diataxis-compass.md +0 -123
- package/scaffold/_preview/skills/docs/references/diataxis-quadrants.md +0 -192
- package/scaffold/_preview/skills/docs/references/diataxis-quality.md +0 -76
- package/scaffold/_preview/skills/docs/references/diataxis-templates.md +0 -120
- package/scaffold/_preview/skills/docs/references/flow-artifacts-guide.md +0 -70
- package/scaffold/_preview/skills/docs/references/project-knowledge-gotchas.md +0 -32
- package/scaffold/_preview/skills/docs/references/project-knowledge-templates.md +0 -281
- package/scaffold/_preview/skills/docs/references/project-knowledge-workflow.md +0 -80
- package/scaffold/_preview/skills/frontend-design/SKILL.md +0 -237
- package/scaffold/_preview/skills/lesson-learned/SKILL.md +0 -113
- package/scaffold/_preview/skills/lesson-learned/references/anti-patterns.md +0 -55
- package/scaffold/_preview/skills/lesson-learned/references/se-principles.md +0 -109
- package/scaffold/_preview/skills/multi-agents-development/SKILL.md +0 -448
- package/scaffold/_preview/skills/multi-agents-development/architecture-review-prompt.md +0 -81
- package/scaffold/_preview/skills/multi-agents-development/code-quality-review-prompt.md +0 -91
- package/scaffold/_preview/skills/multi-agents-development/implementer-prompt.md +0 -93
- package/scaffold/_preview/skills/multi-agents-development/parallel-dispatch-example.md +0 -167
- package/scaffold/_preview/skills/multi-agents-development/spec-review-prompt.md +0 -81
- package/scaffold/_preview/skills/present/SKILL.md +0 -616
- package/scaffold/_preview/skills/react/SKILL.md +0 -309
- package/scaffold/_preview/skills/repo-access/SKILL.md +0 -178
- package/scaffold/_preview/skills/repo-access/references/error-patterns.md +0 -116
- package/scaffold/_preview/skills/repo-access/references/platform-matrix.md +0 -142
- package/scaffold/_preview/skills/requirements-clarity/SKILL.md +0 -333
- package/scaffold/_preview/skills/session-handoff/SKILL.md +0 -199
- package/scaffold/_preview/skills/session-handoff/references/handoff-template.md +0 -139
- package/scaffold/_preview/skills/session-handoff/references/resume-checklist.md +0 -80
- package/scaffold/_preview/skills/session-handoff/scripts/check_staleness.js +0 -269
- package/scaffold/_preview/skills/session-handoff/scripts/create_handoff.js +0 -299
- package/scaffold/_preview/skills/session-handoff/scripts/list_handoffs.js +0 -113
- package/scaffold/_preview/skills/session-handoff/scripts/validate_handoff.js +0 -241
- package/scaffold/_preview/skills/typescript/SKILL.md +0 -405
- package/scaffold/adapters/claude-code.mjs +0 -73
- package/scaffold/adapters/copilot.mjs +0 -292
- package/scaffold/adapters/flows.mjs +0 -27
- package/scaffold/adapters/skills.mjs +0 -25
- 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
|
-
}
|
package/scaffold/generate.mjs
DELETED
|
@@ -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!');
|