@soleri/forge 9.7.2 → 9.8.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.
@@ -117,10 +117,15 @@ export function create${pascalCase(domain)}Facade(vault: Vault): FacadeConfig {
117
117
  `;
118
118
  }
119
119
  export async function installKnowledge(params) {
120
- const { agentPath, bundlePath, generateFacades = true } = params;
120
+ const { agentPath, bundlePath, generateFacades = true, format } = params;
121
121
  const warnings = [];
122
122
  const facadesGenerated = [];
123
123
  const sourceFilesPatched = [];
124
+ // ── File-tree agent path ─────────────────────────────────────────
125
+ if (format === 'filetree') {
126
+ return installKnowledgeFiletree(agentPath, bundlePath);
127
+ }
128
+ // ── TypeScript agent path (existing behavior) ────────────────────
124
129
  // ── Step 1: Validate agent path ──────────────────────────────────
125
130
  const pkgPath = join(agentPath, 'package.json');
126
131
  if (!existsSync(pkgPath)) {
@@ -287,6 +292,107 @@ export async function installKnowledge(params) {
287
292
  summary: summaryParts.join('. ') + '.',
288
293
  };
289
294
  }
295
+ // ---------- File-tree agent installer ----------
296
+ /**
297
+ * Install knowledge bundles into a file-tree agent.
298
+ * Writes to {agentPath}/knowledge/ — no package.json, no src/ patching, no build step.
299
+ * The engine picks up knowledge bundles from this directory at runtime.
300
+ */
301
+ async function installKnowledgeFiletree(agentPath, bundlePath) {
302
+ const warnings = [];
303
+ // Derive agentId from agent.yaml
304
+ let agentId = '';
305
+ const yamlPath = join(agentPath, 'agent.yaml');
306
+ if (existsSync(yamlPath)) {
307
+ try {
308
+ const raw = readFileSync(yamlPath, 'utf-8');
309
+ // Simple extraction — avoid importing yaml parser here
310
+ const idMatch = raw.match(/^id:\s*["']?([^\s"']+)/m);
311
+ if (idMatch)
312
+ agentId = idMatch[1];
313
+ }
314
+ catch {
315
+ // best-effort
316
+ }
317
+ }
318
+ if (!agentId) {
319
+ return fail(agentPath, '', 'No agent.yaml with valid id found — is this a file-tree agent?');
320
+ }
321
+ // Read and validate bundles
322
+ const bundleFiles = collectBundleFiles(bundlePath);
323
+ if (bundleFiles.length === 0) {
324
+ return fail(agentPath, agentId, `No .json bundle files found at ${bundlePath}`);
325
+ }
326
+ const bundles = [];
327
+ const issues = [];
328
+ for (const file of bundleFiles) {
329
+ try {
330
+ const raw = readFileSync(file, 'utf-8');
331
+ const parsed = JSON.parse(raw);
332
+ const fileIssues = validateBundle(parsed, file);
333
+ if (fileIssues.length > 0) {
334
+ issues.push(...fileIssues);
335
+ }
336
+ else {
337
+ bundles.push({ file, bundle: parsed });
338
+ }
339
+ }
340
+ catch (err) {
341
+ issues.push(`${basename(file)}: invalid JSON — ${err instanceof Error ? err.message : String(err)}`);
342
+ }
343
+ }
344
+ if (bundles.length === 0) {
345
+ return fail(agentPath, agentId, `All bundles failed validation:\n${issues.join('\n')}`);
346
+ }
347
+ if (issues.length > 0) {
348
+ warnings.push(...issues);
349
+ }
350
+ // Determine new vs existing domains
351
+ const knowledgeDir = join(agentPath, 'knowledge');
352
+ mkdirSync(knowledgeDir, { recursive: true });
353
+ const existingFiles = readdirSync(knowledgeDir).filter((f) => f.endsWith('.json'));
354
+ const existingDomains = new Set(existingFiles.map((f) => f.replace(/\.json$/, '')));
355
+ const domainsAdded = [];
356
+ const domainsUpdated = [];
357
+ for (const { bundle } of bundles) {
358
+ if (existingDomains.has(bundle.domain)) {
359
+ domainsUpdated.push(bundle.domain);
360
+ }
361
+ else {
362
+ domainsAdded.push(bundle.domain);
363
+ }
364
+ }
365
+ // Copy bundles to knowledge/
366
+ for (const { file, bundle } of bundles) {
367
+ const dest = join(knowledgeDir, `${bundle.domain}.json`);
368
+ copyFileSync(file, dest);
369
+ }
370
+ // No facade generation, no src/ patching, no build step for file-tree agents
371
+ const entriesTotal = bundles.reduce((sum, { bundle }) => sum + bundle.entries.length, 0);
372
+ const summaryParts = [
373
+ `Installed ${bundles.length} bundle(s) with ${entriesTotal} entries into ${agentId} (file-tree)`,
374
+ ];
375
+ if (domainsAdded.length > 0)
376
+ summaryParts.push(`New domains: ${domainsAdded.join(', ')}`);
377
+ if (domainsUpdated.length > 0)
378
+ summaryParts.push(`Updated domains: ${domainsUpdated.join(', ')}`);
379
+ if (warnings.length > 0)
380
+ summaryParts.push(`${warnings.length} warning(s)`);
381
+ return {
382
+ success: true,
383
+ agentPath,
384
+ agentId,
385
+ bundlesInstalled: bundles.length,
386
+ entriesTotal,
387
+ domainsAdded,
388
+ domainsUpdated,
389
+ facadesGenerated: [],
390
+ sourceFilesPatched: [],
391
+ buildOutput: '',
392
+ warnings,
393
+ summary: summaryParts.join('. ') + '.',
394
+ };
395
+ }
290
396
  // ---------- Helpers ----------
291
397
  function fail(agentPath, agentId, message) {
292
398
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge-installer.js","sourceRoot":"","sources":["../src/knowledge-installer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"knowledge-installer.js","sourceRoot":"","sources":["../src/knowledge-installer.ts"],"names":[],"mappings":"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"}
package/dist/lib.d.ts CHANGED
@@ -10,7 +10,7 @@ export { addDomain } from './domain-manager.js';
10
10
  export { patchIndexTs, patchClaudeMdContent } from './patching.js';
11
11
  export type { AgentConfig, AgentConfigInput, SetupTarget, ScaffoldResult, ScaffoldPreview, AgentInfo, InstallKnowledgeResult, AddDomainResult, } from './types.js';
12
12
  export { AgentConfigSchema, SETUP_TARGETS, MODEL_PRESETS } from './types.js';
13
- export { scaffoldFileTree } from './scaffold-filetree.js';
13
+ export { scaffoldFileTree, SKILLS_REGISTRY, ESSENTIAL_SKILLS, resolveSkillsFilter, } from './scaffold-filetree.js';
14
14
  export type { FileTreeScaffoldResult } from './scaffold-filetree.js';
15
15
  export { AgentYamlSchema, TONES } from './agent-schema.js';
16
16
  export type { AgentYaml, AgentYamlInput } from './agent-schema.js';
package/dist/lib.js CHANGED
@@ -10,7 +10,7 @@ export { addDomain } from './domain-manager.js';
10
10
  export { patchIndexTs, patchClaudeMdContent } from './patching.js';
11
11
  export { AgentConfigSchema, SETUP_TARGETS, MODEL_PRESETS } from './types.js';
12
12
  // ─── v7 File-Tree Agent ──────────────────────────────────────────────
13
- export { scaffoldFileTree } from './scaffold-filetree.js';
13
+ export { scaffoldFileTree, SKILLS_REGISTRY, ESSENTIAL_SKILLS, resolveSkillsFilter, } from './scaffold-filetree.js';
14
14
  export { AgentYamlSchema, TONES } from './agent-schema.js';
15
15
  export { composeClaudeMd } from './compose-claude-md.js';
16
16
  export { generateExtensionsIndex, generateExampleOp } from './templates/extensions.js';
package/dist/lib.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAWnE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7E,wEAAwE;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAWnE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7E,wEAAwE;AACxE,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -7,6 +7,18 @@
7
7
  * Replaces the old scaffold() that generated TypeScript projects.
8
8
  */
9
9
  import type { AgentYamlInput } from './agent-schema.js';
10
+ /**
11
+ * Skills classified as essential (always scaffolded by default) or optional
12
+ * (installed on demand via `soleri skills install`).
13
+ */
14
+ export declare const SKILLS_REGISTRY: Record<string, 'essential' | 'optional'>;
15
+ /** Names of essential skills (always scaffolded when skillsFilter is 'essential'). */
16
+ export declare const ESSENTIAL_SKILLS: string[];
17
+ /**
18
+ * Resolve the skill names to scaffold based on the skillsFilter config value.
19
+ * Returns null when all skills should be included (no filtering).
20
+ */
21
+ export declare function resolveSkillsFilter(skillsFilter: 'all' | 'essential' | string[]): string[] | null;
10
22
  export interface FileTreeScaffoldResult {
11
23
  success: boolean;
12
24
  agentDir: string;
@@ -14,6 +14,62 @@ import { AgentYamlSchema } from './agent-schema.js';
14
14
  import { getEngineRulesContent } from './templates/shared-rules.js';
15
15
  import { composeClaudeMd } from './compose-claude-md.js';
16
16
  import { generateSkills } from './templates/skills.js';
17
+ // ─── Skills Registry ─────────────────────────────────────────────────
18
+ /**
19
+ * Skills classified as essential (always scaffolded by default) or optional
20
+ * (installed on demand via `soleri skills install`).
21
+ */
22
+ export const SKILLS_REGISTRY = {
23
+ 'agent-guide': 'essential',
24
+ 'agent-persona': 'essential',
25
+ 'vault-navigator': 'essential',
26
+ 'vault-capture': 'essential',
27
+ 'systematic-debugging': 'essential',
28
+ 'writing-plans': 'essential',
29
+ 'context-resume': 'essential',
30
+ // ─── Optional (installed on demand) ────────────
31
+ 'agent-dev': 'optional',
32
+ 'agent-issues': 'optional',
33
+ 'brain-debrief': 'optional',
34
+ brainstorming: 'optional',
35
+ 'code-patrol': 'optional',
36
+ 'deep-review': 'optional',
37
+ 'deliver-and-ship': 'optional',
38
+ 'discovery-phase': 'optional',
39
+ 'env-setup': 'optional',
40
+ 'executing-plans': 'optional',
41
+ 'finishing-a-development-branch': 'optional',
42
+ 'fix-and-learn': 'optional',
43
+ 'health-check': 'optional',
44
+ 'knowledge-harvest': 'optional',
45
+ 'mcp-doctor': 'optional',
46
+ 'onboard-me': 'optional',
47
+ 'parallel-execute': 'optional',
48
+ retrospective: 'optional',
49
+ 'second-opinion': 'optional',
50
+ 'subagent-driven-development': 'optional',
51
+ 'test-driven-development': 'optional',
52
+ 'using-git-worktrees': 'optional',
53
+ 'vault-curate': 'optional',
54
+ 'vault-smells': 'optional',
55
+ 'verification-before-completion': 'optional',
56
+ 'yolo-mode': 'optional',
57
+ };
58
+ /** Names of essential skills (always scaffolded when skillsFilter is 'essential'). */
59
+ export const ESSENTIAL_SKILLS = Object.entries(SKILLS_REGISTRY)
60
+ .filter(([, tier]) => tier === 'essential')
61
+ .map(([name]) => name);
62
+ /**
63
+ * Resolve the skill names to scaffold based on the skillsFilter config value.
64
+ * Returns null when all skills should be included (no filtering).
65
+ */
66
+ export function resolveSkillsFilter(skillsFilter) {
67
+ if (skillsFilter === 'all')
68
+ return null; // null = include all
69
+ if (skillsFilter === 'essential')
70
+ return ESSENTIAL_SKILLS;
71
+ return skillsFilter; // explicit list
72
+ }
17
73
  const BUILTIN_WORKFLOWS = [
18
74
  {
19
75
  name: 'feature-dev',
@@ -212,6 +268,154 @@ Before crossing a context window boundary — \`/clear\`, context compaction, or
212
268
  `,
213
269
  },
214
270
  ];
271
+ // ─── Example Instruction Files ───────────────────────────────────────
272
+ const INSTRUCTIONS_CONVENTIONS = `# Conventions
273
+
274
+ <!-- Customize this file with your project's naming conventions, coding standards, and rules. -->
275
+ <!-- This file is composed into CLAUDE.md automatically — your agent will follow these rules. -->
276
+
277
+ ## Naming Conventions
278
+
279
+ - Use \`kebab-case\` for file and directory names
280
+ - Use \`camelCase\` for variables and functions
281
+ - Use \`PascalCase\` for classes, types, and interfaces
282
+ - Prefix private helpers with \`_\` (e.g., \`_validateInput\`)
283
+
284
+ ## File Organization
285
+
286
+ - Source code goes in \`src/\`
287
+ - Tests live next to the code they test (\`*.test.ts\`)
288
+ - Shared utilities go in \`src/utils/\`
289
+ - Types and interfaces go in \`src/types/\`
290
+
291
+ ## Code Standards
292
+
293
+ - Every function must have a JSDoc comment explaining its purpose
294
+ - Prefer \`const\` over \`let\`; never use \`var\`
295
+ - Maximum file length: 300 lines — split if larger
296
+ - No default exports — use named exports only
297
+
298
+ ## What to Avoid
299
+
300
+ - Do not add new npm dependencies without approval
301
+ - Do not use \`any\` type — use \`unknown\` and narrow
302
+ - Do not commit commented-out code
303
+ - Do not use hardcoded values — extract to constants or config
304
+ `;
305
+ const INSTRUCTIONS_GETTING_STARTED = `# Getting Started with Instructions
306
+
307
+ This folder contains your agent's custom behavioral rules. Every \`.md\` file here
308
+ is automatically composed into \`CLAUDE.md\` when you run \`soleri dev\`.
309
+
310
+ ## How It Works
311
+
312
+ 1. Create a new \`.md\` file in this folder (e.g., \`api-guidelines.md\`)
313
+ 2. Write your rules, conventions, or guidelines in Markdown
314
+ 3. Run \`soleri dev\` — it watches for changes and regenerates \`CLAUDE.md\`
315
+ 4. Your agent now follows these rules in every conversation
316
+
317
+ ## File Naming
318
+
319
+ - Files are included in **alphabetical order** (prefix with numbers to control order)
320
+ - \`_engine.md\` is auto-generated by Soleri — **do not edit it manually**
321
+ - \`domain.md\` was generated from your agent's domain config
322
+
323
+ ## Tips
324
+
325
+ - Keep each file focused on one topic (conventions, workflows, constraints)
326
+ - Use clear headings — your agent reads these as instructions
327
+ - Add "What to Avoid" sections — agents benefit from explicit anti-patterns
328
+ - See the [Soleri docs](https://soleri.ai/docs) for more examples
329
+ `;
330
+ // ─── Workspace & Routing Seeds ───────────────────────────────────────
331
+ /** Default workspaces seeded based on agent domains. */
332
+ const DOMAIN_WORKSPACE_SEEDS = {
333
+ // Design-related domains
334
+ design: [
335
+ {
336
+ id: 'design',
337
+ name: 'Design',
338
+ description: 'Design system patterns, tokens, and components',
339
+ },
340
+ { id: 'review', name: 'Review', description: 'Design review and accessibility audits' },
341
+ ],
342
+ 'ui-design': [
343
+ { id: 'design', name: 'Design', description: 'UI design patterns, tokens, and components' },
344
+ { id: 'review', name: 'Review', description: 'Design review and accessibility audits' },
345
+ ],
346
+ accessibility: [
347
+ { id: 'design', name: 'Design', description: 'Accessible design patterns and tokens' },
348
+ { id: 'review', name: 'Review', description: 'Accessibility audits and compliance checks' },
349
+ ],
350
+ // Dev-related domains
351
+ architecture: [
352
+ {
353
+ id: 'planning',
354
+ name: 'Planning',
355
+ description: 'Architecture decisions and technical planning',
356
+ },
357
+ { id: 'src', name: 'Source', description: 'Implementation code and modules' },
358
+ { id: 'docs', name: 'Documentation', description: 'Technical documentation and ADRs' },
359
+ ],
360
+ backend: [
361
+ { id: 'planning', name: 'Planning', description: 'Backend architecture and API design' },
362
+ { id: 'src', name: 'Source', description: 'Implementation code and modules' },
363
+ { id: 'docs', name: 'Documentation', description: 'API documentation and guides' },
364
+ ],
365
+ frontend: [
366
+ {
367
+ id: 'planning',
368
+ name: 'Planning',
369
+ description: 'Frontend architecture and component design',
370
+ },
371
+ { id: 'src', name: 'Source', description: 'Implementation code and components' },
372
+ {
373
+ id: 'docs',
374
+ name: 'Documentation',
375
+ description: 'Component documentation and style guides',
376
+ },
377
+ ],
378
+ security: [
379
+ {
380
+ id: 'planning',
381
+ name: 'Planning',
382
+ description: 'Security architecture and threat modeling',
383
+ },
384
+ { id: 'src', name: 'Source', description: 'Security implementations and policies' },
385
+ { id: 'docs', name: 'Documentation', description: 'Security documentation and runbooks' },
386
+ ],
387
+ };
388
+ /** Default routing entries seeded based on agent domains. */
389
+ const DOMAIN_ROUTING_SEEDS = {
390
+ design: [
391
+ { pattern: 'design component', workspace: 'design', skills: ['vault-navigator'] },
392
+ { pattern: 'review design', workspace: 'review', skills: ['deep-review'] },
393
+ ],
394
+ 'ui-design': [
395
+ { pattern: 'design component', workspace: 'design', skills: ['vault-navigator'] },
396
+ { pattern: 'review design', workspace: 'review', skills: ['deep-review'] },
397
+ ],
398
+ architecture: [
399
+ { pattern: 'plan architecture', workspace: 'planning', skills: ['writing-plans'] },
400
+ { pattern: 'implement feature', workspace: 'src', skills: ['test-driven-development'] },
401
+ { pattern: 'write documentation', workspace: 'docs', skills: ['vault-capture'] },
402
+ ],
403
+ backend: [
404
+ { pattern: 'plan API', workspace: 'planning', skills: ['writing-plans'] },
405
+ { pattern: 'implement endpoint', workspace: 'src', skills: ['test-driven-development'] },
406
+ { pattern: 'write docs', workspace: 'docs', skills: ['vault-capture'] },
407
+ ],
408
+ frontend: [
409
+ { pattern: 'plan component', workspace: 'planning', skills: ['writing-plans'] },
410
+ { pattern: 'implement component', workspace: 'src', skills: ['test-driven-development'] },
411
+ { pattern: 'write docs', workspace: 'docs', skills: ['vault-capture'] },
412
+ ],
413
+ security: [
414
+ { pattern: 'threat model', workspace: 'planning', skills: ['writing-plans'] },
415
+ { pattern: 'implement policy', workspace: 'src', skills: ['test-driven-development'] },
416
+ { pattern: 'write runbook', workspace: 'docs', skills: ['vault-capture'] },
417
+ ],
418
+ };
215
419
  // ─── Main Scaffolder ──────────────────────────────────────────────────
216
420
  /**
217
421
  * Scaffold a file-tree agent.
@@ -288,10 +492,34 @@ export function scaffoldFileTree(input, outputDir) {
288
492
  'AGENTS.md',
289
493
  'instructions/_engine.md',
290
494
  '',
495
+ '# OS',
496
+ '.DS_Store',
497
+ '',
498
+ '# Editor / IDE state',
499
+ '.obsidian/',
500
+ '.opencode/',
501
+ '',
291
502
  ].join('\n'), filesCreated);
292
503
  // ─── 5. Write engine rules ──────────────────────────────────
293
504
  writeFile(agentDir, 'instructions/_engine.md', getEngineRulesContent(), filesCreated);
294
505
  // ─── 6. Write user instruction files ────────────────────────
506
+ // Generate user.md — user-editable file with priority placement in CLAUDE.md
507
+ const userMdContent = [
508
+ '# Your Custom Rules',
509
+ '',
510
+ 'Add your agent-specific rules, constraints, and preferences here.',
511
+ 'This file gets priority placement in CLAUDE.md — it appears before engine rules.',
512
+ '',
513
+ '## Examples of what to put here:',
514
+ '- Project-specific conventions',
515
+ '- Communication preferences',
516
+ '- Domain expertise to emphasize',
517
+ '- Things to always/never do',
518
+ '',
519
+ 'Delete these instructions and replace with your own content.',
520
+ '',
521
+ ].join('\n');
522
+ writeFile(agentDir, 'instructions/user.md', userMdContent, filesCreated);
295
523
  // Generate domain-specific instruction file if agent has specialized domains
296
524
  if (config.domains.length > 0) {
297
525
  const domainLines = [
@@ -306,6 +534,9 @@ export function scaffoldFileTree(input, outputDir) {
306
534
  ];
307
535
  writeFile(agentDir, 'instructions/domain.md', domainLines.join('\n'), filesCreated);
308
536
  }
537
+ // ─── 6b. Write example instruction files ─────────────────────
538
+ writeFile(agentDir, 'instructions/conventions.md', INSTRUCTIONS_CONVENTIONS, filesCreated);
539
+ writeFile(agentDir, 'instructions/getting-started.md', INSTRUCTIONS_GETTING_STARTED, filesCreated);
309
540
  // ─── 7. Write workflows ─────────────────────────────────────
310
541
  for (const wf of BUILTIN_WORKFLOWS) {
311
542
  writeFile(agentDir, `workflows/${wf.name}/prompt.md`, wf.prompt, filesCreated);
@@ -313,7 +544,11 @@ export function scaffoldFileTree(input, outputDir) {
313
544
  writeFile(agentDir, `workflows/${wf.name}/tools.yaml`, wf.tools, filesCreated);
314
545
  }
315
546
  // ─── 8. Copy bundled skills (with placeholder substitution) ─
316
- const skills = generateSkills({ id: config.id });
547
+ const resolvedSkills = resolveSkillsFilter(config.skillsFilter);
548
+ const skills = generateSkills({
549
+ id: config.id,
550
+ skills: resolvedSkills ?? undefined,
551
+ });
317
552
  for (const [relativePath, content] of skills) {
318
553
  mkdirSync(join(agentDir, dirname(relativePath)), { recursive: true });
319
554
  writeFile(agentDir, relativePath, content, filesCreated);
@@ -331,7 +566,27 @@ export function scaffoldFileTree(input, outputDir) {
331
566
  writeFile(agentDir, `knowledge/${domain}.json`, JSON.stringify(bundle, null, 2) + '\n', filesCreated);
332
567
  totalSeeded += starterEntries.length;
333
568
  }
334
- // ─── 9. Generate CLAUDE.md ──────────────────────────────────
569
+ // ─── 9b. Create workspace directories with CONTEXT.md ──────
570
+ // Resolve workspaces: use explicit config or seed from domains
571
+ const resolvedWorkspaces = resolveWorkspaces(config);
572
+ if (resolvedWorkspaces.length > 0) {
573
+ for (const ws of resolvedWorkspaces) {
574
+ const wsDir = join(agentDir, 'workspaces', ws.id);
575
+ mkdirSync(wsDir, { recursive: true });
576
+ const contextContent = [
577
+ `# ${ws.name}`,
578
+ '',
579
+ ws.description,
580
+ '',
581
+ '## Instructions',
582
+ '',
583
+ `<!-- Add workspace-specific instructions here for the "${ws.name}" context. -->`,
584
+ '',
585
+ ].join('\n');
586
+ writeFile(agentDir, `workspaces/${ws.id}/${ws.contextFile ?? 'CONTEXT.md'}`, contextContent, filesCreated);
587
+ }
588
+ }
589
+ // ─── 10. Generate CLAUDE.md ──────────────────────────────────
335
590
  const { content: claudeMd } = composeClaudeMd(agentDir);
336
591
  writeFile(agentDir, 'CLAUDE.md', claudeMd, filesCreated);
337
592
  // ─── 10. Summary ────────────────────────────────────────────
@@ -411,12 +666,87 @@ function buildAgentYaml(config) {
411
666
  setup.model = config.setup.model;
412
667
  if (Object.keys(setup).length > 0)
413
668
  yaml.setup = setup;
669
+ // Skills filter — only include if not the default ('essential')
670
+ if (config.skillsFilter && config.skillsFilter !== 'essential') {
671
+ yaml.skillsFilter = config.skillsFilter;
672
+ }
673
+ // Workspaces
674
+ const resolvedWs = resolveWorkspaces(config);
675
+ if (resolvedWs.length > 0) {
676
+ yaml.workspaces = resolvedWs.map((ws) => Object.assign({ id: ws.id, name: ws.name, description: ws.description }, ws.contextFile !== `CONTEXT.md` ? { contextFile: ws.contextFile } : {}));
677
+ }
678
+ // Routing
679
+ const resolvedRouting = resolveRouting(config);
680
+ if (resolvedRouting.length > 0) {
681
+ yaml.routing = resolvedRouting.map((r) => Object.assign({ pattern: r.pattern, workspace: r.workspace }, r.context.length > 0 ? { context: r.context } : {}, r.skills.length > 0 ? { skills: r.skills } : {}));
682
+ }
414
683
  // Packs
415
684
  if (config.packs && config.packs.length > 0) {
416
685
  yaml.packs = config.packs;
417
686
  }
418
687
  return yaml;
419
688
  }
689
+ // ─── Workspace & Routing Helpers ─────────────────────────────────────
690
+ /**
691
+ * Resolve workspaces: use explicit config or seed from domains.
692
+ * Deduplicates by workspace id.
693
+ */
694
+ function resolveWorkspaces(config) {
695
+ // If explicitly defined, use those
696
+ if (config.workspaces && config.workspaces.length > 0) {
697
+ return config.workspaces.map((ws) => ({
698
+ id: ws.id,
699
+ name: ws.name,
700
+ description: ws.description,
701
+ contextFile: ws.contextFile ?? 'CONTEXT.md',
702
+ }));
703
+ }
704
+ // Otherwise, seed from domains
705
+ const seen = new Set();
706
+ const workspaces = [];
707
+ for (const domain of config.domains) {
708
+ const seeds = DOMAIN_WORKSPACE_SEEDS[domain];
709
+ if (!seeds)
710
+ continue;
711
+ for (const seed of seeds) {
712
+ if (seen.has(seed.id))
713
+ continue;
714
+ seen.add(seed.id);
715
+ workspaces.push({ ...seed, contextFile: 'CONTEXT.md' });
716
+ }
717
+ }
718
+ return workspaces;
719
+ }
720
+ /**
721
+ * Resolve routing entries: use explicit config or seed from domains.
722
+ * Deduplicates by pattern string.
723
+ */
724
+ function resolveRouting(config) {
725
+ // If explicitly defined, use those
726
+ if (config.routing && config.routing.length > 0) {
727
+ return config.routing.map((r) => ({
728
+ pattern: r.pattern,
729
+ workspace: r.workspace,
730
+ context: r.context ?? [],
731
+ skills: r.skills ?? [],
732
+ }));
733
+ }
734
+ // Otherwise, seed from domains
735
+ const seen = new Set();
736
+ const routes = [];
737
+ for (const domain of config.domains) {
738
+ const seeds = DOMAIN_ROUTING_SEEDS[domain];
739
+ if (!seeds)
740
+ continue;
741
+ for (const seed of seeds) {
742
+ if (seen.has(seed.pattern))
743
+ continue;
744
+ seen.add(seed.pattern);
745
+ routes.push({ ...seed, context: [] });
746
+ }
747
+ }
748
+ return routes;
749
+ }
420
750
  // ─── Starter Pack Helpers ────────────────────────────────────────────
421
751
  /** Domain aliases — map agent domains to starter pack directories. */
422
752
  const DOMAIN_TO_STARTER = {