agents-templated 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/cli.js CHANGED
@@ -10,15 +10,18 @@ const {
10
10
  LAYOUT,
11
11
  resolveRulesDir,
12
12
  resolveSkillsDir,
13
+ resolveSubagentsDir,
13
14
  hasAnyLayout,
14
15
  getLegacyMigrationPlan
15
16
  } = require('../lib/layout');
16
17
  const {
17
- CORE_SOURCE_REL_PATH,
18
- GENERATED_INSTRUCTION_PATHS,
19
- KNOWN_ORPHAN_PATHS,
18
+ CANONICAL_INSTRUCTION_FILE,
19
+ POINTER_FILES,
20
20
  writeGeneratedInstructions,
21
- validateInstructionDrift
21
+ validateInstructionDrift,
22
+ scaffoldSkill,
23
+ scaffoldRule,
24
+ scaffoldSubagent
22
25
  } = require('../lib/instructions');
23
26
 
24
27
  // Resolve the templates directory - works in both dev and installed contexts
@@ -51,6 +54,7 @@ program
51
54
  .option('-r, --rules', 'Install agent rules only')
52
55
  .option('-s, --skills', 'Install skills only')
53
56
  .option('-g, --github', 'Install GitHub Copilot instructions')
57
+ .option('-S, --subagents', 'Install agent subagents only')
54
58
  .option('-p, --preset <name>', 'Use a preset configuration (nextjs, django-react, express-api, fastapi, go-api)')
55
59
  .option('-f, --force', 'Overwrite existing files')
56
60
  .action(async (options) => {
@@ -120,7 +124,8 @@ program
120
124
  { name: 'Documentation files (agent-docs/)', value: 'docs' },
121
125
  { name: 'Agent rules (.github/instructions/rules/*.mdc)', value: 'rules' },
122
126
  { name: 'Skills (.github/skills/*)', value: 'skills' },
123
- { name: 'AI Agent instructions (Cursor, Copilot, Claude, Generic AGENTS)', value: 'github' }
127
+ { name: 'AI Agent instructions (Cursor, Copilot, Claude, Generic AGENTS)', value: 'github' },
128
+ { name: 'Agent subagents (agents/subagents/*.md)', value: 'subagents' }
124
129
  ],
125
130
  default: ['all']
126
131
  },
@@ -142,6 +147,7 @@ program
142
147
  if (options.rules) choices.push('rules');
143
148
  if (options.skills) choices.push('skills');
144
149
  if (options.github) choices.push('github');
150
+ if (options.subagents) choices.push('subagents');
145
151
  }
146
152
 
147
153
  const installAll = choices.includes('all');
@@ -153,7 +159,6 @@ program
153
159
  const targetDocsDir = path.join(targetDir, 'agent-docs');
154
160
  await fs.ensureDir(targetDocsDir);
155
161
  await copyDirectory(sourceDir, targetDocsDir, options.force);
156
- await copyFiles(templateDir, targetDir, [CORE_SOURCE_REL_PATH], options.force);
157
162
  }
158
163
 
159
164
  // Install agent rules
@@ -183,18 +188,28 @@ program
183
188
  console.log(chalk.yellow('Installing AI agent instructions...'));
184
189
  await fs.ensureDir(path.join(targetDir, '.github', 'instructions'));
185
190
  await writeGeneratedInstructions(targetDir, templateDir, options.force);
186
- console.log(chalk.gray(' ✓ Cursor (.cursorrules)'));
187
- console.log(chalk.gray(' ✓ GitHub Copilot (.github/copilot-instructions.md shim)'));
188
- console.log(chalk.gray(' ✓ Claude (CLAUDE.md shim)'));
189
- console.log(chalk.gray(' ✓ Generic AGENTS (AGENTS.MD shim + canonical .github/instructions/AGENTS.md)'));
191
+ console.log(chalk.gray(' ✓ Claude (CLAUDE.md — canonical source)'));
192
+ console.log(chalk.gray(' ✓ GitHub Copilot (.github/copilot-instructions.md pointer)'));
193
+ console.log(chalk.gray(' ✓ Generic AGENTS (AGENTS.MD pointer)'));
194
+ }
195
+
196
+ // Install agent subagents
197
+ if (installAll || choices.includes('subagents')) {
198
+ console.log(chalk.yellow('Installing agent subagents...'));
199
+ await fs.ensureDir(path.join(targetDir, LAYOUT.canonical.subagentsDir));
200
+ await copyDirectory(
201
+ path.join(templateDir, 'agents', 'subagents'),
202
+ path.join(targetDir, LAYOUT.canonical.subagentsDir),
203
+ options.force
204
+ );
190
205
  }
191
206
 
192
207
  console.log(chalk.green.bold('\nInstallation complete!\n'));
193
208
  console.log(chalk.cyan('Next steps:'));
194
- console.log(chalk.white(' 1. Review instructions/source/core.md (canonical AI guide)'));
209
+ console.log(chalk.white(' 1. Review CLAUDE.md (canonical AI policy — edit this directly)'));
195
210
  console.log(chalk.white(' 2. Review agent-docs/ARCHITECTURE.md for project guidelines'));
196
- console.log(chalk.white(' 3. Review .github/instructions/ for generated tool-compatible files'));
197
- console.log(chalk.white(' 4. Configure your AI assistant (Cursor, Copilot, etc.)'));
211
+ console.log(chalk.white(' 3. AGENTS.MD and .github/copilot-instructions.md are thin compatibility pointers'));
212
+ console.log(chalk.white(' 4. Configure your AI assistant (Copilot, Claude, etc.)'));
198
213
  console.log(chalk.white(' 5. Adapt the rules to your technology stack\n'));
199
214
 
200
215
  } catch (error) {
@@ -241,7 +256,8 @@ program
241
256
  { name: 'Documentation (agent-docs/)', value: 'docs' },
242
257
  { name: 'Agent Rules (security, testing, database, etc.)', value: 'rules' },
243
258
  { name: 'Skills (reusable agent capabilities)', value: 'skills' },
244
- { name: 'AI Agent instructions (Cursor, Copilot, Claude, Generic AGENTS)', value: 'github' }
259
+ { name: 'AI Agent instructions (Cursor, Copilot, Claude, Generic AGENTS)', value: 'github' },
260
+ { name: 'Agent subagents (agents/subagents/*.md)', value: 'subagents' }
245
261
  ],
246
262
  validate: (answer) => {
247
263
  if (answer.length === 0) {
@@ -277,7 +293,8 @@ program
277
293
  { name: 'Documentation (agent-docs/)', value: 'docs', checked: true },
278
294
  { name: 'Agent Rules (security, testing, database, etc.)', value: 'rules', checked: true },
279
295
  { name: 'Skills (reusable agent capabilities)', value: 'skills', checked: true },
280
- { name: 'AI Agent instructions (Cursor, Copilot, Claude, Generic AGENTS)', value: 'github', checked: true }
296
+ { name: 'AI Agent instructions (Cursor, Copilot, Claude, Generic AGENTS)', value: 'github', checked: true },
297
+ { name: 'Agent subagents (agents/subagents/*.md)', value: 'subagents', checked: true }
281
298
  ],
282
299
  validate: (answer) => {
283
300
  if (answer.length === 0) {
@@ -302,7 +319,8 @@ program
302
319
  docs: componentAnswers.components.includes('docs'),
303
320
  rules: componentAnswers.components.includes('rules'),
304
321
  skills: componentAnswers.components.includes('skills'),
305
- github: componentAnswers.components.includes('github')
322
+ github: componentAnswers.components.includes('github'),
323
+ subagents: componentAnswers.components.includes('subagents')
306
324
  };
307
325
 
308
326
  // Install documentation files
@@ -312,7 +330,6 @@ program
312
330
  const targetDocsDir = path.join(targetDir, 'agent-docs');
313
331
  await fs.ensureDir(targetDocsDir);
314
332
  await copyDirectory(sourceDocsDir, targetDocsDir, options.force);
315
- await copyFiles(templateDir, targetDir, [CORE_SOURCE_REL_PATH], options.force);
316
333
  }
317
334
 
318
335
  // Install agent rules
@@ -342,20 +359,30 @@ program
342
359
  console.log(chalk.yellow('Installing AI agent instructions...'));
343
360
  await fs.ensureDir(path.join(targetDir, '.github', 'instructions'));
344
361
  await writeGeneratedInstructions(targetDir, templateDir, options.force);
345
- console.log(chalk.gray(' ✓ Cursor (.cursorrules)'));
346
- console.log(chalk.gray(' ✓ GitHub Copilot (.github/copilot-instructions.md shim)'));
347
- console.log(chalk.gray(' ✓ Claude (CLAUDE.md shim)'));
348
- console.log(chalk.gray(' ✓ Generic AGENTS (AGENTS.MD shim + canonical .github/instructions/AGENTS.md)'));
362
+ console.log(chalk.gray(' ✓ Claude (CLAUDE.md — canonical source)'));
363
+ console.log(chalk.gray(' ✓ GitHub Copilot (.github/copilot-instructions.md pointer)'));
364
+ console.log(chalk.gray(' ✓ Generic AGENTS (AGENTS.MD pointer)'));
365
+ }
366
+
367
+ // Install agent subagents
368
+ if (options.subagents) {
369
+ console.log(chalk.yellow('Installing agent subagents...'));
370
+ await fs.ensureDir(path.join(targetDir, LAYOUT.canonical.subagentsDir));
371
+ await copyDirectory(
372
+ path.join(templateDir, 'agents', 'subagents'),
373
+ path.join(targetDir, LAYOUT.canonical.subagentsDir),
374
+ options.force
375
+ );
349
376
  }
350
377
 
351
378
  // Show summary and next steps
352
379
  console.log(chalk.green.bold('\n✅ Installation complete!\n'));
353
380
 
354
381
  console.log(chalk.cyan('\n📚 Next Steps:\n'));
355
- console.log(chalk.white(' 1. Review instructions/source/core.md (canonical AI guide)'));
382
+ console.log(chalk.white(' 1. Review CLAUDE.md (canonical AI policy — edit this directly)'));
356
383
  console.log(chalk.white(' 2. Review agent-docs/ARCHITECTURE.md for project guidelines'));
357
- console.log(chalk.white(' 3. Review .github/instructions/ for generated tool-compatible files'));
358
- console.log(chalk.white(' 4. Customize .github/instructions/rules/*.mdc for your tech stack'));
384
+ console.log(chalk.white(' 3. AGENTS.MD and .github/copilot-instructions.md are thin pointers to CLAUDE.md'));
385
+ console.log(chalk.white(' 4. Customize agents/rules/*.mdc for your tech stack'));
359
386
 
360
387
  console.log(chalk.cyan('\n🔒 Security Reminder:\n'));
361
388
  console.log(chalk.white(' • Review agents/rules/security.mdc'));
@@ -378,6 +405,7 @@ program
378
405
  console.log(chalk.yellow('rules') + ' - Agent rules (.github/instructions/rules/*.mdc)');
379
406
  console.log(chalk.yellow('skills') + ' - Agent skills (.github/skills/*)');
380
407
  console.log(chalk.yellow('github') + ' - AI Agent instructions (Cursor, Copilot, Claude, Generic AGENTS)');
408
+ console.log(chalk.yellow('subagents') + ' - Agent subagents (agents/subagents/*.md)');
381
409
  console.log(chalk.yellow('all') + ' - All components');
382
410
 
383
411
  console.log(chalk.blue.bold('\n\nAvailable Presets:\n'));
@@ -402,12 +430,12 @@ program
402
430
  let warnings = [];
403
431
  let passed = [];
404
432
 
405
- // Check canonical source file
406
- const coreSourcePath = path.join(targetDir, CORE_SOURCE_REL_PATH);
407
- if (await fs.pathExists(coreSourcePath)) {
408
- passed.push(`✓ ${CORE_SOURCE_REL_PATH} found`);
433
+ // Check canonical instruction file
434
+ const claudePath = path.join(targetDir, CANONICAL_INSTRUCTION_FILE);
435
+ if (await fs.pathExists(claudePath)) {
436
+ passed.push(`✓ ${CANONICAL_INSTRUCTION_FILE} found (canonical policy source)`);
409
437
  } else {
410
- warnings.push(`⚠ ${CORE_SOURCE_REL_PATH} missing - run 'agents-templated init --docs'`);
438
+ warnings.push(`⚠ ${CANONICAL_INSTRUCTION_FILE} missing - run 'agents-templated init --github'`);
411
439
  }
412
440
 
413
441
  const docFiles = ['ARCHITECTURE.md'];
@@ -465,43 +493,32 @@ program
465
493
  warnings.push(`⚠ ${LAYOUT.canonical.skillsDir} directory missing - run 'agents-templated init --skills'`);
466
494
  }
467
495
 
468
- // Check generated instruction files and drift
469
- const hasInstructionFootprint =
470
- await fs.pathExists(path.join(targetDir, '.github', 'instructions')) ||
471
- await fs.pathExists(path.join(targetDir, GENERATED_INSTRUCTION_PATHS.compatibility.claude)) ||
472
- await fs.pathExists(path.join(targetDir, GENERATED_INSTRUCTION_PATHS.compatibility.copilot)) ||
473
- await fs.pathExists(path.join(targetDir, GENERATED_INSTRUCTION_PATHS.compatibility.generic));
496
+ // Check subagents
497
+ const subagentsDir = path.join(targetDir, LAYOUT.canonical.subagentsDir);
498
+ if (await fs.pathExists(subagentsDir)) {
499
+ const subagents = (await fs.readdir(subagentsDir)).filter(f => f.endsWith('.md') && f !== 'README.md');
500
+ passed.push(`✓ ${subagents.length} subagents installed in ${LAYOUT.canonical.subagentsDir}`);
501
+ } else {
502
+ warnings.push(`⚠ ${LAYOUT.canonical.subagentsDir} directory missing - run 'agents-templated init --subagents'`);
503
+ }
474
504
 
475
- if (hasInstructionFootprint) {
476
- const instructionDrift = await validateInstructionDrift(targetDir);
477
- if (instructionDrift.missingCore) {
478
- issues.push(`✗ Canonical instruction source missing - run 'agents-templated init --docs --github'`);
479
- } else if (instructionDrift.driftFiles.length > 0) {
480
- issues.push(`✗ Generated instruction files are out of sync: ${instructionDrift.driftFiles.join(', ')}`);
481
- } else {
482
- passed.push('✓ Generated instruction files are in sync with canonical source');
483
- }
484
- if (instructionDrift.orphanedPolicyFiles && instructionDrift.orphanedPolicyFiles.length > 0) {
485
- issues.push(
486
- `✗ Orphaned policy files detected (contain duplicated content, should be deleted): ` +
487
- `${instructionDrift.orphanedPolicyFiles.join(', ')} — run 'agents-templated update --github' to remove`
488
- );
489
- }
505
+ // Check instruction pointer files and drift
506
+ const instructionDrift = await validateInstructionDrift(targetDir);
507
+ if (instructionDrift.missingCanonical) {
508
+ issues.push(`✗ CLAUDE.md missing - run 'agents-templated init --github'`);
509
+ } else if (instructionDrift.driftFiles.length > 0) {
510
+ warnings.push(`⚠ Pointer files out of sync: ${instructionDrift.driftFiles.join(', ')} — run 'agents-templated update --github'`);
511
+ } else {
512
+ passed.push('✓ AGENTS.MD and .github/copilot-instructions.md are in sync');
490
513
  }
491
514
 
492
- const compatCopilotFile = path.join(targetDir, GENERATED_INSTRUCTION_PATHS.compatibility.copilot);
515
+ const compatCopilotFile = path.join(targetDir, POINTER_FILES.copilot);
493
516
  if (await fs.pathExists(compatCopilotFile)) {
494
517
  passed.push(`✓ GitHub Copilot configuration found`);
495
518
  } else {
496
519
  warnings.push(`⚠ GitHub Copilot configuration missing - run 'agents-templated init --github'`);
497
520
  }
498
521
 
499
- // Check for .cursorrules (if using Cursor)
500
- const cursorrules = path.join(targetDir, '.cursorrules');
501
- if (await fs.pathExists(cursorrules)) {
502
- passed.push(`✓ .cursorrules file found (Cursor IDE)`);
503
- }
504
-
505
522
  // Check for .gitignore
506
523
  const gitignore = path.join(targetDir, '.gitignore');
507
524
  if (await fs.pathExists(gitignore)) {
@@ -628,15 +645,16 @@ async function copyDirectory(sourceDir, targetDir, force = false) {
628
645
 
629
646
  async function hasInstalledTemplates(targetDir) {
630
647
  return await hasAnyLayout(targetDir) ||
631
- await fs.pathExists(path.join(targetDir, CORE_SOURCE_REL_PATH)) ||
632
- await fs.pathExists(path.join(targetDir, GENERATED_INSTRUCTION_PATHS.compatibility.generic));
648
+ await fs.pathExists(path.join(targetDir, CANONICAL_INSTRUCTION_FILE)) ||
649
+ await fs.pathExists(path.join(targetDir, POINTER_FILES.agents));
633
650
  }
634
651
 
635
652
  async function cleanupLegacyInstructionFiles(targetDir) {
636
653
  // Files removed in v2.0.0: orphaned wrappers that contained duplicated policy
637
654
  // content and were not managed/validated by the generator.
638
655
  const legacyFiles = [
639
- ...KNOWN_ORPHAN_PATHS,
656
+ '.cursorrules',
657
+ '.github/instructions/AGENTS.md',
640
658
  // Pre-v1.2.13 paths
641
659
  '.claude/CLAUDE.md'
642
660
  ];
@@ -652,7 +670,7 @@ async function cleanupLegacyInstructionFiles(targetDir) {
652
670
 
653
671
  async function updateSelectedComponents(targetDir, templateDir, selectedComponents, overwrite = true) {
654
672
  const components = selectedComponents.includes('all')
655
- ? ['docs', 'rules', 'skills', 'github']
673
+ ? ['docs', 'rules', 'skills', 'github', 'subagents']
656
674
  : selectedComponents;
657
675
 
658
676
  if (components.includes('docs')) {
@@ -663,7 +681,6 @@ async function updateSelectedComponents(targetDir, templateDir, selectedComponen
663
681
  path.join(targetDir, 'agent-docs'),
664
682
  overwrite
665
683
  );
666
- await copyFiles(templateDir, targetDir, [CORE_SOURCE_REL_PATH], overwrite);
667
684
  }
668
685
 
669
686
  if (components.includes('rules')) {
@@ -693,6 +710,16 @@ async function updateSelectedComponents(targetDir, templateDir, selectedComponen
693
710
  await cleanupLegacyInstructionFiles(targetDir);
694
711
  }
695
712
 
713
+ if (components.includes('subagents')) {
714
+ console.log(chalk.yellow('Updating agent subagents...'));
715
+ await fs.ensureDir(path.join(targetDir, LAYOUT.canonical.subagentsDir));
716
+ await copyDirectory(
717
+ path.join(templateDir, 'agents', 'subagents'),
718
+ path.join(targetDir, LAYOUT.canonical.subagentsDir),
719
+ overwrite
720
+ );
721
+ }
722
+
696
723
  if ((components.includes('docs') || components.includes('github')) && !components.includes('github')) {
697
724
  await writeGeneratedInstructions(targetDir, templateDir, overwrite);
698
725
  }
@@ -727,6 +754,7 @@ program
727
754
  .option('-r, --rules', 'Update agent rules only')
728
755
  .option('-s, --skills', 'Update skills only')
729
756
  .option('-g, --github', 'Update AI agent instruction files only')
757
+ .option('-S, --subagents', 'Update agent subagents only')
730
758
  .option('-c, --check-only', 'Only check for updates, don\'t install')
731
759
  .option('-f, --force', 'Force overwrite files during update')
732
760
  .action(async (options) => {
@@ -786,6 +814,7 @@ program
786
814
  if (options.all || options.rules) selectedComponents.push('rules');
787
815
  if (options.all || options.skills) selectedComponents.push('skills');
788
816
  if (options.all || options.github) selectedComponents.push('github');
817
+ if (options.all || options.subagents) selectedComponents.push('subagents');
789
818
 
790
819
  console.log(chalk.blue('📦 Updating selected components...\n'));
791
820
 
@@ -798,7 +827,7 @@ program
798
827
  // List potential updates
799
828
  const updates = [];
800
829
  const checkFiles = [
801
- { targetFile: CORE_SOURCE_REL_PATH, templateFile: CORE_SOURCE_REL_PATH, component: 'root' },
830
+ { targetFile: CANONICAL_INSTRUCTION_FILE, templateFile: CANONICAL_INSTRUCTION_FILE, component: 'root' },
802
831
  { targetFile: 'agent-docs/ARCHITECTURE.md', templateFile: 'agent-docs/ARCHITECTURE.md', component: 'docs' },
803
832
  { targetFile: `${LAYOUT.canonical.rulesDir}/security.mdc`, templateFile: 'agents/rules/security.mdc', component: 'rules' },
804
833
  { targetFile: `${LAYOUT.canonical.rulesDir}/testing.mdc`, templateFile: 'agents/rules/testing.mdc', component: 'rules' },
@@ -935,7 +964,6 @@ program
935
964
 
936
965
  // Check AI assistant configs
937
966
  const configs = [
938
- { file: '.cursorrules', name: 'Cursor IDE' },
939
967
  { file: '.github/copilot-instructions.md', name: 'GitHub Copilot' }
940
968
  ];
941
969
 
@@ -961,8 +989,56 @@ program
961
989
  console.log(chalk.blue('\n📚 Quick Tips:\n'));
962
990
  console.log(chalk.white(' • Run "agents-templated validate" to check setup'));
963
991
  console.log(chalk.white(' • Run "agents-templated wizard" for guided setup'));
964
- console.log(chalk.white(' • Review .github/instructions/rules/security.mdc for security patterns\n'));
992
+ console.log(chalk.white(' • Review agents/rules/security.mdc for security patterns\n'));
993
+
994
+ } catch (error) {
995
+ console.error(chalk.red('Error:'), error.message);
996
+ process.exit(1);
997
+ }
998
+ });
999
+
1000
+ program
1001
+ .command('new-skill <name>')
1002
+ .description('Scaffold a new skill in agents/skills/<name>/SKILL.md')
1003
+ .action(async (name) => {
1004
+ try {
1005
+ const targetDir = process.cwd();
1006
+ const relPath = await scaffoldSkill(targetDir, name);
1007
+ console.log(chalk.green(`\n+ ${relPath}\n`));
1008
+ console.log(chalk.gray('Fill in Trigger Conditions, Workflow, and Output Contract.'));
1009
+ console.log(chalk.gray('Then add it to the Reference Index in CLAUDE.md.\n'));
1010
+ } catch (error) {
1011
+ console.error(chalk.red('Error:'), error.message);
1012
+ process.exit(1);
1013
+ }
1014
+ });
965
1015
 
1016
+ program
1017
+ .command('new-rule <name>')
1018
+ .description('Scaffold a new rule in agents/rules/<name>.mdc')
1019
+ .action(async (name) => {
1020
+ try {
1021
+ const targetDir = process.cwd();
1022
+ const relPath = await scaffoldRule(targetDir, name);
1023
+ console.log(chalk.green(`\n+ ${relPath}\n`));
1024
+ console.log(chalk.gray('Fill in Purpose and Requirements sections.'));
1025
+ console.log(chalk.gray('Then add it to the Reference Index in CLAUDE.md.\n'));
1026
+ } catch (error) {
1027
+ console.error(chalk.red('Error:'), error.message);
1028
+ process.exit(1);
1029
+ }
1030
+ });
1031
+
1032
+ program
1033
+ .command('new-subagent <name>')
1034
+ .description('Scaffold a new subagent in agents/subagents/<name>.md')
1035
+ .action(async (name) => {
1036
+ try {
1037
+ const targetDir = process.cwd();
1038
+ const relPath = await scaffoldSubagent(targetDir, name);
1039
+ console.log(chalk.green(`\n+ ${relPath}\n`));
1040
+ console.log(chalk.gray('Fill in Activation Conditions, Workflow, and Output Format.'));
1041
+ console.log(chalk.gray('Then add it to the Subagent modules table in CLAUDE.md.\n'));
966
1042
  } catch (error) {
967
1043
  console.error(chalk.red('Error:'), error.message);
968
1044
  process.exit(1);
package/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  const fs = require('fs-extra');
2
2
  const path = require('path');
3
3
  const { LAYOUT } = require('./lib/layout');
4
- const { CORE_SOURCE_REL_PATH, writeGeneratedInstructions } = require('./lib/instructions');
4
+ const { CANONICAL_INSTRUCTION_FILE, writeGeneratedInstructions } = require('./lib/instructions');
5
5
 
6
6
  /**
7
7
  * Programmatic API for agents-templated
@@ -29,8 +29,7 @@ async function install(targetDir, options = {}) {
29
29
  if (installAll || options.docs) {
30
30
  files.push(
31
31
  'agent-docs/ARCHITECTURE.md',
32
- 'agent-docs/README.md',
33
- CORE_SOURCE_REL_PATH
32
+ 'agent-docs/README.md'
34
33
  );
35
34
  }
36
35