agents-templated 1.2.11 → 1.2.12

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
@@ -119,7 +119,7 @@ program
119
119
  { name: 'Documentation files (agent-docs/)', value: 'docs' },
120
120
  { name: 'Agent rules (.github/instructions/rules/*.mdc)', value: 'rules' },
121
121
  { name: 'Skills (.github/skills/*)', value: 'skills' },
122
- { name: 'AI Agent instructions (Cursor, Copilot, VSCode, Gemini)', value: 'github' }
122
+ { name: 'AI Agent instructions (Cursor, Copilot, Claude, Generic AGENTS)', value: 'github' }
123
123
  ],
124
124
  default: ['all']
125
125
  },
@@ -177,16 +177,16 @@ program
177
177
  );
178
178
  }
179
179
 
180
- // Install AI Agent instructions (Cursor, Copilot, Claude, Gemini)
180
+ // Install AI Agent instructions (Cursor, Copilot, Claude, Generic AGENTS)
181
181
  if (installAll || choices.includes('github')) {
182
182
  console.log(chalk.yellow('Installing AI agent instructions...'));
183
183
  await fs.ensureDir(path.join(targetDir, '.github', 'instructions'));
184
184
  await copyFiles(templateDir, targetDir, ['.cursorrules'], options.force);
185
185
  await writeGeneratedInstructions(targetDir, templateDir, options.force);
186
186
  console.log(chalk.gray(' ✓ Cursor (.cursorrules)'));
187
- console.log(chalk.gray(' ✓ GitHub Copilot (.github/instructions/copilot-instructions.md + compat shim)'));
188
- console.log(chalk.gray(' ✓ Claude (.github/instructions/CLAUDE.md + compat shim)'));
189
- console.log(chalk.gray(' ✓ Google Gemini (.github/instructions/GEMINI.md + compat shim)'));
187
+ console.log(chalk.gray(' ✓ GitHub Copilot (.github/copilot-instructions.md shim)'));
188
+ console.log(chalk.gray(' ✓ Claude (.claude/CLAUDE.md shim)'));
189
+ console.log(chalk.gray(' ✓ Generic AGENTS (AGENTS.MD shim + canonical .github/instructions/AGENTS.md)'));
190
190
  }
191
191
 
192
192
  console.log(chalk.green.bold('\nInstallation complete!\n'));
@@ -241,7 +241,7 @@ program
241
241
  { name: 'Documentation (agent-docs/)', value: 'docs' },
242
242
  { name: 'Agent Rules (security, testing, database, etc.)', value: 'rules' },
243
243
  { name: 'Skills (reusable agent capabilities)', value: 'skills' },
244
- { name: 'AI Agent instructions (Cursor, Copilot, VSCode, Gemini)', value: 'github' }
244
+ { name: 'AI Agent instructions (Cursor, Copilot, Claude, Generic AGENTS)', value: 'github' }
245
245
  ],
246
246
  validate: (answer) => {
247
247
  if (answer.length === 0) {
@@ -277,7 +277,7 @@ program
277
277
  { name: 'Documentation (agent-docs/)', value: 'docs', checked: true },
278
278
  { name: 'Agent Rules (security, testing, database, etc.)', value: 'rules', checked: true },
279
279
  { name: 'Skills (reusable agent capabilities)', value: 'skills', checked: true },
280
- { name: 'AI Agent instructions (Cursor, Copilot, VSCode, Gemini)', value: 'github', checked: true }
280
+ { name: 'AI Agent instructions (Cursor, Copilot, Claude, Generic AGENTS)', value: 'github', checked: true }
281
281
  ],
282
282
  validate: (answer) => {
283
283
  if (answer.length === 0) {
@@ -337,17 +337,16 @@ program
337
337
  );
338
338
  }
339
339
 
340
- // Install AI Agent instructions (Cursor, Copilot, VSCode, Gemini)
340
+ // Install AI Agent instructions (Cursor, Copilot, Claude, Generic AGENTS)
341
341
  if (options.github) {
342
342
  console.log(chalk.yellow('Installing AI agent instructions...'));
343
343
  await fs.ensureDir(path.join(targetDir, '.github', 'instructions'));
344
344
  await copyFiles(templateDir, targetDir, ['.cursorrules'], options.force);
345
345
  await writeGeneratedInstructions(targetDir, templateDir, options.force);
346
346
  console.log(chalk.gray(' ✓ Cursor (.cursorrules)'));
347
- console.log(chalk.gray(' ✓ GitHub Copilot (.github/instructions/copilot-instructions.md + compat shim)'));
348
- console.log(chalk.gray(' ✓ Generic AI (.github/instructions/AGENTS.md + compat shim)'));
349
- console.log(chalk.gray(' ✓ Claude (.github/instructions/CLAUDE.md + compat shim)'));
350
- console.log(chalk.gray(' ✓ Google Gemini (.github/instructions/GEMINI.md + compat shim)'));
347
+ console.log(chalk.gray(' ✓ GitHub Copilot (.github/copilot-instructions.md shim)'));
348
+ console.log(chalk.gray(' ✓ Claude (.claude/CLAUDE.md shim)'));
349
+ console.log(chalk.gray(' ✓ Generic AGENTS (AGENTS.MD shim + canonical .github/instructions/AGENTS.md)'));
351
350
  }
352
351
 
353
352
  // Show summary and next steps
@@ -379,7 +378,7 @@ program
379
378
  console.log(chalk.yellow('docs') + ' - Documentation files (agent-docs/ directory)');
380
379
  console.log(chalk.yellow('rules') + ' - Agent rules (.github/instructions/rules/*.mdc)');
381
380
  console.log(chalk.yellow('skills') + ' - Agent skills (.github/skills/*)');
382
- console.log(chalk.yellow('github') + ' - AI Agent instructions (Cursor, Copilot, VSCode, Gemini)');
381
+ console.log(chalk.yellow('github') + ' - AI Agent instructions (Cursor, Copilot, Claude, Generic AGENTS)');
383
382
  console.log(chalk.yellow('all') + ' - All components');
384
383
 
385
384
  console.log(chalk.blue.bold('\n\nAvailable Presets:\n'));
@@ -470,10 +469,8 @@ program
470
469
  // Check generated instruction files and drift
471
470
  const hasInstructionFootprint =
472
471
  await fs.pathExists(path.join(targetDir, '.github', 'instructions')) ||
473
- await fs.pathExists(path.join(targetDir, '.claude', 'rules')) ||
474
- await fs.pathExists(path.join(targetDir, GENERATED_INSTRUCTION_PATHS.compatibility.copilot)) ||
475
472
  await fs.pathExists(path.join(targetDir, GENERATED_INSTRUCTION_PATHS.compatibility.claude)) ||
476
- await fs.pathExists(path.join(targetDir, GENERATED_INSTRUCTION_PATHS.compatibility.gemini)) ||
473
+ await fs.pathExists(path.join(targetDir, GENERATED_INSTRUCTION_PATHS.compatibility.copilot)) ||
477
474
  await fs.pathExists(path.join(targetDir, GENERATED_INSTRUCTION_PATHS.compatibility.generic));
478
475
 
479
476
  if (hasInstructionFootprint) {
@@ -487,9 +484,8 @@ program
487
484
  }
488
485
  }
489
486
 
490
- const canonicalCopilotFile = path.join(targetDir, GENERATED_INSTRUCTION_PATHS.canonical.copilot);
491
487
  const compatCopilotFile = path.join(targetDir, GENERATED_INSTRUCTION_PATHS.compatibility.copilot);
492
- if (await fs.pathExists(canonicalCopilotFile) || await fs.pathExists(compatCopilotFile)) {
488
+ if (await fs.pathExists(compatCopilotFile)) {
493
489
  passed.push(`✓ GitHub Copilot configuration found`);
494
490
  } else {
495
491
  warnings.push(`⚠ GitHub Copilot configuration missing - run 'agents-templated init --github'`);
@@ -631,6 +627,18 @@ async function hasInstalledTemplates(targetDir) {
631
627
  await fs.pathExists(path.join(targetDir, GENERATED_INSTRUCTION_PATHS.compatibility.generic));
632
628
  }
633
629
 
630
+ async function cleanupLegacyInstructionFiles(targetDir) {
631
+ const legacyFiles = ['CLAUDE.md', 'GEMINI.md'];
632
+
633
+ for (const file of legacyFiles) {
634
+ const filePath = path.join(targetDir, file);
635
+ if (await fs.pathExists(filePath)) {
636
+ await fs.remove(filePath);
637
+ console.log(chalk.green(` ✓ Removed legacy file: ${file}`));
638
+ }
639
+ }
640
+ }
641
+
634
642
  async function updateSelectedComponents(targetDir, templateDir, selectedComponents, overwrite = true) {
635
643
  const components = selectedComponents.includes('all')
636
644
  ? ['docs', 'rules', 'skills', 'github']
@@ -672,6 +680,7 @@ async function updateSelectedComponents(targetDir, templateDir, selectedComponen
672
680
  await fs.ensureDir(path.join(targetDir, '.github', 'instructions'));
673
681
  await copyFiles(templateDir, targetDir, ['.cursorrules'], overwrite);
674
682
  await writeGeneratedInstructions(targetDir, templateDir, overwrite);
683
+ await cleanupLegacyInstructionFiles(targetDir);
675
684
  }
676
685
 
677
686
  if ((components.includes('docs') || components.includes('github')) && !components.includes('github')) {
@@ -854,6 +863,7 @@ program
854
863
 
855
864
  await writeGeneratedInstructions(targetDir, templateDir, true);
856
865
  console.log(chalk.green(' ✓ Regenerated instruction compatibility files'));
866
+ await cleanupLegacyInstructionFiles(targetDir);
857
867
 
858
868
  console.log(chalk.green.bold('\n✅ Updates applied successfully!\n'));
859
869
  console.log(chalk.gray('Backup files created with .backup extension\n'));
package/index.js CHANGED
@@ -69,7 +69,7 @@ async function install(targetDir, options = {}) {
69
69
  );
70
70
  }
71
71
 
72
- // AI Agent instructions (Cursor, Copilot, Claude, Gemini)
72
+ // AI Agent instructions (Cursor, Copilot, Claude)
73
73
  if (installAll || options.github) {
74
74
  await fs.ensureDir(path.join(targetDir, '.github', 'instructions'));
75
75
 
@@ -5,20 +5,12 @@ const CORE_SOURCE_REL_PATH = 'instructions/source/core.md';
5
5
 
6
6
  const GENERATED_INSTRUCTION_PATHS = {
7
7
  canonical: {
8
- generic: '.github/instructions/AGENTS.md',
9
- copilot: '.github/instructions/copilot-instructions.md',
10
- claude: '.github/instructions/CLAUDE.md',
11
- gemini: '.github/instructions/GEMINI.md'
12
- },
13
- styleCompat: {
14
- githubInstructions: '.github/instructions/agents.instructions.md',
15
- claudeRules: '.claude/rules/claude.instructions.md'
8
+ generic: '.github/instructions/AGENTS.md'
16
9
  },
17
10
  compatibility: {
18
11
  generic: 'AGENTS.MD',
19
12
  copilot: '.github/copilot-instructions.md',
20
- claude: 'CLAUDE.md',
21
- gemini: 'GEMINI.md'
13
+ claude: '.claude/CLAUDE.md'
22
14
  }
23
15
  };
24
16
 
@@ -39,22 +31,15 @@ function buildCompatInstruction(toolName, corePath) {
39
31
  const titles = {
40
32
  generic: '# AGENTS Instructions',
41
33
  copilot: '# GitHub Copilot Instructions',
42
- claude: '# Claude Instructions',
43
- gemini: '# Gemini Instructions'
34
+ claude: '# Claude Instructions'
44
35
  };
45
36
 
46
37
  return [
47
38
  `${titles[toolName]}`,
48
39
  '',
49
40
  `Primary policy source: \`${corePath}\`.`,
50
- '',
51
- 'Always apply these mandatory rules:',
52
- '- Security-first implementation (validate inputs, authz/authn, rate limiting).',
53
- '- Testing-first delivery with unit + integration coverage for changed logic.',
54
- '- Strong typing and runtime boundary validation.',
55
- '- Do not expose secrets or sensitive data in logs/errors.',
56
- '',
57
- 'Use the canonical source for full policy and architecture guidance.',
41
+ 'Minimal compatibility stub to reduce duplicated prompt tokens.',
42
+ 'Load rules from the canonical source file above.',
58
43
  ''
59
44
  ].join('\n');
60
45
  }
@@ -64,16 +49,9 @@ function buildGeneratedArtifacts(coreContent) {
64
49
  const files = {};
65
50
 
66
51
  files[GENERATED_INSTRUCTION_PATHS.canonical.generic] = `${buildHeaders('generic')}${coreContent.trim()}\n`;
67
- files[GENERATED_INSTRUCTION_PATHS.canonical.copilot] = `${buildHeaders('copilot')}${buildCompatInstruction('copilot', corePath)}`;
68
- files[GENERATED_INSTRUCTION_PATHS.canonical.claude] = `${buildHeaders('claude')}${buildCompatInstruction('claude', corePath)}`;
69
- files[GENERATED_INSTRUCTION_PATHS.canonical.gemini] = `${buildHeaders('gemini')}${buildCompatInstruction('gemini', corePath)}`;
70
- files[GENERATED_INSTRUCTION_PATHS.styleCompat.githubInstructions] = `${buildHeaders('github-instructions-style')}${buildCompatInstruction('generic', corePath)}`;
71
- files[GENERATED_INSTRUCTION_PATHS.styleCompat.claudeRules] = `${buildHeaders('claude-rules-style')}${buildCompatInstruction('claude', corePath)}`;
72
-
73
52
  files[GENERATED_INSTRUCTION_PATHS.compatibility.generic] = `${buildHeaders('generic-compat')}${buildCompatInstruction('generic', corePath)}`;
74
53
  files[GENERATED_INSTRUCTION_PATHS.compatibility.copilot] = `${buildHeaders('copilot-compat')}${buildCompatInstruction('copilot', corePath)}`;
75
54
  files[GENERATED_INSTRUCTION_PATHS.compatibility.claude] = `${buildHeaders('claude-compat')}${buildCompatInstruction('claude', corePath)}`;
76
- files[GENERATED_INSTRUCTION_PATHS.compatibility.gemini] = `${buildHeaders('gemini-compat')}${buildCompatInstruction('gemini', corePath)}`;
77
55
 
78
56
  return files;
79
57
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agents-templated",
3
- "version": "1.2.11",
3
+ "version": "1.2.12",
4
4
  "description": "Technology-agnostic development template with multi-AI agent support (Cursor, Copilot, VSCode, Gemini), security-first patterns, and comprehensive testing guidelines",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -1,142 +0,0 @@
1
- # Google Gemini AI Instructions
2
-
3
- This project uses enterprise-grade, technology-agnostic development patterns for all Google Gemini AI assistants, whether used through:
4
- - Google AI Studio (aistudio.google.com)
5
- - Gemini IDE extensions
6
- - Gemini API integration
7
- - Other Gemini-powered tools
8
-
9
- ## Quick Start
10
-
11
- - **AI Guide**: See `AGENTS.MD` for comprehensive instructions
12
- - **Architecture**: See `agent-docs/ARCHITECTURE.md` for project guidelines
13
- - **Custom Skills**: See `agents/skills/` directory for domain-specific extensions
14
- - **Detailed Rules**: See `agents/rules/*.mdc` files
15
- - **Available Skills**: Check `agents/skills/` for project-specific skills
16
-
17
- ## Core Development Patterns
18
-
19
- Follow these enterprise-grade patterns for all development work:
20
-
21
- ### 1. Security-First Approach
22
- - **Validate all inputs**: Use schema validation for all user inputs and API requests
23
- - **Authentication**: Implement secure session management and authentication flows
24
- - **Authorization**: Apply role-based access control with proper middleware
25
- - **Rate limiting**: Protect public endpoints from abuse with appropriate rate limiting
26
- - **Error handling**: Never expose sensitive data in error messages or logs
27
- - **Database safety**: Use ORM/ODM patterns exclusively, avoid raw SQL queries
28
- - Reference: `agents/rules/security.mdc`
29
-
30
- ### 2. Testing Requirements
31
- - **Unit tests**: Target 80% coverage for business logic
32
- - **Integration tests**: 15% coverage for API and database operations
33
- - **E2E tests**: 5% coverage for critical user journeys
34
- - All business logic must have appropriate test cases
35
- - Reference: `agents/rules/testing.mdc`
36
-
37
- ### 3. Type Safety & Validation
38
- - Use strong typing systems available in your language of choice
39
- - Implement runtime validation at all API boundaries
40
- - Apply schema validation to form inputs and API requests
41
- - Reference: `agents/rules/core.mdc`
42
-
43
- ### 4. Code Quality Standards
44
- - **Readability**: Clear variable names, proper documentation, logical organization
45
- - **Type safety**: Strict typing throughout, no loose type usage
46
- - **Performance**: Monitor resource usage, implement caching, optimize queries
47
- - **Maintainability**: Modular design, separation of concerns, SOLID principles
48
- - **Accessibility**: WCAG 2.1 AA compliance for all user-facing interfaces
49
- - Reference: `agents/rules/style.mdc`
50
-
51
- ## Agent-Based Development
52
-
53
- This project follows an agent-based pattern where different roles handle different aspects:
54
-
55
- | Agent | Responsibility | Reference |
56
- |-------|-----------------|-----------|
57
- | **FrontendAgent** | UI/Design, components, accessibility, responsive layouts | `agents/rules/frontend.mdc` |
58
- | **BackendAgent** | API routes, business logic, authentication, services | `agents/rules/security.mdc` |
59
- | **DatabaseAgent** | Schema design, migrations, data access, optimization | `agents/rules/database.mdc` |
60
- | **TestAgent** | Testing strategy, coverage, test organization | `agents/rules/testing.mdc` |
61
- | **SecurityAgent** | Security patterns, validation, rate limiting, access control | `agents/rules/security.mdc` |
62
- | **ReviewerAgent** | Code quality, performance, accessibility, architecture | All rules |
63
-
64
- When implementing features, identify which agent responsibility applies and refer to the appropriate rules file.
65
-
66
- ## Deterministic Slash Commands
67
-
68
- - Slash command protocol is defined in `AGENTS.MD` under `Deterministic Slash Command System Standard`.
69
- - Modular command contracts are stored in `agents/commands/`.
70
- - Command mode is strict: unknown or malformed slash commands must return structured error output and stop.
71
- - No conversational fallback is allowed once slash-command mode is entered.
72
- - Destructive actions require explicit confirmation token format: `CONFIRM-DESTRUCTIVE:<target>`.
73
-
74
- ## Technology Stack Independence
75
-
76
- These patterns apply regardless of your tech stack. Adapt them to your chosen framework:
77
-
78
- ### Frontend Frameworks
79
- - **React/Next.js/Vue/Svelte**: Component-based architecture with state management
80
- - **Angular**: Component + service pattern with TypeScript
81
- - **Traditional/Server-rendered**: Progressive enhancement with server-side rendering
82
-
83
- ### Backend Frameworks
84
- - **Node.js**: Express, Fastify, Koa, or Next.js API routes
85
- - **Python**: Django, FastAPI, Flask with ORM patterns
86
- - **Go**: Gin, Echo, Fiber for high-performance APIs
87
- - **Other languages**: Apply patterns to your chosen framework
88
-
89
- ### Database Technologies
90
- - **SQL**: PostgreSQL, MySQL, SQLite with ORM (Prisma, TypeORM, SQLAlchemy, etc.)
91
- - **NoSQL**: MongoDB, DynamoDB with schema validation
92
- - **Cloud-native**: Supabase, Firebase with built-in security
93
-
94
- ## Critical Rules (Never Skip These)
95
-
96
- 1. **Input Validation**: ALL user inputs must be validated with schema validation libraries
97
- 2. **Authentication**: Implement secure authentication with proper session management
98
- 3. **Rate Limiting**: Public endpoints MUST have rate limiting to prevent abuse
99
- 4. **Authorization**: Role-based access control with verified permissions
100
- 5. **Data Safety**: Never expose sensitive information in error responses
101
- 6. **Database Access**: Use ORM/ODM exclusively, never raw queries for user data
102
- 7. **Test Coverage**: Minimum 80% coverage for business logic
103
- 8. **Accessibility**: WCAG 2.1 AA compliance for all user interfaces
104
- 9. **Documentation**: Keep guides updated; code should be self-documenting
105
- 10. **Performance**: Monitor metrics, implement caching, optimize critical paths
106
-
107
- ## File Reference Guide
108
-
109
- | File | Purpose | When to Use |
110
- |------|---------|------------|
111
- | `AGENTS.MD` | Primary AI assistant guide | Always start here |
112
- | `agent-docs/ARCHITECTURE.md` | Architecture and technology stack decisions | Need architectural guidance |
113
- | `AGENTS.MD` | AI assistant guide and patterns | How to work effectively with AI |
114
- | `agents/commands/` | Deterministic slash command contracts | Slash-command execution |
115
- | `agents/rules/core.mdc` | Core development principles | General development questions |
116
- | `agents/rules/security.mdc` | Security patterns and implementations | Building secure features |
117
- | `agents/rules/testing.mdc` | Testing strategy and best practices | Writing tests or test strategy |
118
- | `agents/rules/frontend.mdc` | Frontend patterns and components | Building UI features |
119
- | `agents/rules/database.mdc` | Database and data access patterns | Working with data layers |
120
- | `agents/rules/style.mdc` | Code style and formatting | Code style questions |
121
- | `agents/skills/` | Domain-specific implementations | Looking for reusable patterns |
122
-
123
- ## Workflow Recommendations
124
-
125
- 1. **Read AGENTS.MD** for comprehensive AI assistance guidance
126
- 2. **Read agent-docs/ARCHITECTURE.md** to understand the overall architecture
127
- 3. **Reference AGENTS.MD** for AI working patterns and guidance
128
- 3. **Reference the appropriate rule file** for implementation patterns
129
- 4. **Look in agents/skills/** for domain-specific guidance
130
- 5. **Follow all critical rules** without exception
131
- 6. **Apply patterns consistently** across the codebase
132
-
133
- ## Additional Context
134
-
135
- - This template is **completely technology-agnostic** and works with any programming language
136
- - All patterns are **framework and language-independent**
137
- - The rules can be adapted to your specific tech stack while maintaining the security and quality principles
138
- - Skills in `agents/skills/` provide specific, actionable implementations
139
-
140
- ---
141
-
142
- For best results with Gemini AI assistance, reference the appropriate context from `AGENTS.MD`, `agent-docs/ARCHITECTURE.md`, and the relevant `agents/rules/*.mdc` files in your prompts.