create-universal-ai-context 2.5.0 → 2.6.0-final

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +331 -294
  3. package/bin/create-ai-context.js +1507 -775
  4. package/lib/adapters/aider.js +131 -131
  5. package/lib/adapters/antigravity.js +205 -205
  6. package/lib/adapters/claude.js +397 -397
  7. package/lib/adapters/cline.js +125 -125
  8. package/lib/adapters/continue.js +138 -138
  9. package/lib/adapters/copilot.js +131 -131
  10. package/lib/adapters/index.js +78 -78
  11. package/lib/adapters/windsurf.js +138 -138
  12. package/lib/ai-context-generator.js +234 -234
  13. package/lib/ai-orchestrator.js +432 -432
  14. package/lib/call-tracer.js +444 -444
  15. package/lib/content-preservation.js +243 -243
  16. package/lib/cross-tool-sync/file-watcher.js +274 -274
  17. package/lib/cross-tool-sync/index.js +41 -40
  18. package/lib/cross-tool-sync/sync-manager.js +540 -512
  19. package/lib/cross-tool-sync/sync-service.js +297 -297
  20. package/lib/detector.js +726 -726
  21. package/lib/doc-discovery.js +741 -741
  22. package/lib/drift-checker.js +920 -920
  23. package/lib/environment-detector.js +239 -239
  24. package/lib/index.js +399 -399
  25. package/lib/install-hooks.js +82 -82
  26. package/lib/installer.js +419 -419
  27. package/lib/migrate.js +328 -328
  28. package/lib/placeholder.js +632 -632
  29. package/lib/prompts.js +341 -341
  30. package/lib/smart-merge.js +540 -540
  31. package/lib/spinner.js +60 -60
  32. package/lib/static-analyzer.js +729 -729
  33. package/lib/template-coordination.js +148 -148
  34. package/lib/template-populator.js +843 -843
  35. package/lib/template-renderer.js +392 -392
  36. package/lib/utils/fs-wrapper.js +79 -79
  37. package/lib/utils/path-utils.js +60 -60
  38. package/lib/validate.js +155 -155
  39. package/package.json +1 -1
  40. package/templates/AI_CONTEXT.md.template +245 -245
  41. package/templates/base/README.md +260 -257
  42. package/templates/base/RPI_WORKFLOW_PLAN.md +325 -320
  43. package/templates/base/agents/api-developer.md +76 -76
  44. package/templates/base/agents/context-engineer.md +525 -525
  45. package/templates/base/agents/core-architect.md +76 -76
  46. package/templates/base/agents/database-ops.md +76 -76
  47. package/templates/base/agents/deployment-ops.md +76 -76
  48. package/templates/base/agents/integration-hub.md +76 -76
  49. package/templates/base/analytics/README.md +114 -114
  50. package/templates/base/automation/config.json +58 -58
  51. package/templates/base/automation/generators/code-mapper.js +308 -308
  52. package/templates/base/automation/generators/index-builder.js +321 -321
  53. package/templates/base/automation/hooks/post-commit.sh +83 -83
  54. package/templates/base/automation/hooks/pre-commit.sh +103 -103
  55. package/templates/base/ci-templates/README.md +108 -108
  56. package/templates/base/ci-templates/github-actions/context-check.yml +144 -144
  57. package/templates/base/ci-templates/github-actions/validate-docs.yml +105 -105
  58. package/templates/base/commands/analytics.md +238 -238
  59. package/templates/base/commands/auto-sync.md +172 -172
  60. package/templates/base/commands/collab.md +194 -194
  61. package/templates/base/commands/context-optimize.md +226 -0
  62. package/templates/base/commands/help.md +485 -450
  63. package/templates/base/commands/rpi-implement.md +164 -115
  64. package/templates/base/commands/rpi-plan.md +147 -93
  65. package/templates/base/commands/rpi-research.md +145 -88
  66. package/templates/base/commands/session-resume.md +144 -144
  67. package/templates/base/commands/session-save.md +112 -112
  68. package/templates/base/commands/validate-all.md +77 -77
  69. package/templates/base/commands/verify-docs-current.md +86 -86
  70. package/templates/base/config/base.json +57 -57
  71. package/templates/base/config/environments/development.json +13 -13
  72. package/templates/base/config/environments/production.json +17 -17
  73. package/templates/base/config/environments/staging.json +13 -13
  74. package/templates/base/config/local.json.example +21 -21
  75. package/templates/base/context/.meta/generated-at.json +18 -18
  76. package/templates/base/context/ARCHITECTURE_SNAPSHOT.md +156 -156
  77. package/templates/base/context/CODE_TO_WORKFLOW_MAP.md +94 -94
  78. package/templates/base/context/FILE_OWNERSHIP.md +57 -57
  79. package/templates/base/context/INTEGRATION_POINTS.md +92 -92
  80. package/templates/base/context/KNOWN_GOTCHAS.md +195 -195
  81. package/templates/base/context/TESTING_MAP.md +95 -95
  82. package/templates/base/context/WORKFLOW_INDEX.md +129 -129
  83. package/templates/base/context/workflows/WORKFLOW_TEMPLATE.md +294 -294
  84. package/templates/base/indexes/agents/CAPABILITY_MATRIX.md +255 -255
  85. package/templates/base/indexes/agents/CATEGORY_INDEX.md +44 -44
  86. package/templates/base/indexes/code/CATEGORY_INDEX.md +38 -38
  87. package/templates/base/indexes/routing/CATEGORY_INDEX.md +39 -39
  88. package/templates/base/indexes/search/CATEGORY_INDEX.md +39 -39
  89. package/templates/base/indexes/workflows/CATEGORY_INDEX.md +38 -38
  90. package/templates/base/knowledge/README.md +98 -98
  91. package/templates/base/knowledge/sessions/README.md +88 -88
  92. package/templates/base/knowledge/sessions/TEMPLATE.md +150 -150
  93. package/templates/base/knowledge/shared/decisions/0001-adopt-context-engineering.md +144 -144
  94. package/templates/base/knowledge/shared/decisions/README.md +49 -49
  95. package/templates/base/knowledge/shared/decisions/TEMPLATE.md +123 -123
  96. package/templates/base/knowledge/shared/patterns/README.md +62 -62
  97. package/templates/base/knowledge/shared/patterns/TEMPLATE.md +120 -120
  98. package/templates/base/plans/PLAN_TEMPLATE.md +316 -250
  99. package/templates/base/research/RESEARCH_TEMPLATE.md +245 -153
  100. package/templates/base/schemas/agent.schema.json +141 -141
  101. package/templates/base/schemas/anchors.schema.json +54 -54
  102. package/templates/base/schemas/automation.schema.json +93 -93
  103. package/templates/base/schemas/command.schema.json +134 -134
  104. package/templates/base/schemas/hashes.schema.json +40 -40
  105. package/templates/base/schemas/manifest.schema.json +117 -117
  106. package/templates/base/schemas/plan.schema.json +136 -136
  107. package/templates/base/schemas/research.schema.json +115 -115
  108. package/templates/base/schemas/roles.schema.json +34 -34
  109. package/templates/base/schemas/session.schema.json +77 -77
  110. package/templates/base/schemas/settings.schema.json +244 -244
  111. package/templates/base/schemas/staleness.schema.json +53 -53
  112. package/templates/base/schemas/team-config.schema.json +42 -42
  113. package/templates/base/schemas/workflow.schema.json +126 -126
  114. package/templates/base/session/checkpoints/.gitkeep +2 -2
  115. package/templates/base/session/current/state.json +20 -20
  116. package/templates/base/session/history/.gitkeep +2 -2
  117. package/templates/base/settings.json +3 -3
  118. package/templates/base/standards/COMPATIBILITY.md +219 -219
  119. package/templates/base/standards/EXTENSION_GUIDELINES.md +280 -280
  120. package/templates/base/standards/QUALITY_CHECKLIST.md +211 -211
  121. package/templates/base/standards/README.md +66 -66
  122. package/templates/base/sync/anchors.json +6 -6
  123. package/templates/base/sync/hashes.json +6 -6
  124. package/templates/base/sync/staleness.json +10 -10
  125. package/templates/base/team/README.md +168 -168
  126. package/templates/base/team/config.json +79 -79
  127. package/templates/base/team/roles.json +145 -145
  128. package/templates/base/tools/bin/claude-context.js +151 -151
  129. package/templates/base/tools/lib/anchor-resolver.js +276 -276
  130. package/templates/base/tools/lib/config-loader.js +363 -363
  131. package/templates/base/tools/lib/detector.js +350 -350
  132. package/templates/base/tools/lib/diagnose.js +206 -206
  133. package/templates/base/tools/lib/drift-detector.js +373 -373
  134. package/templates/base/tools/lib/errors.js +199 -199
  135. package/templates/base/tools/lib/index.js +36 -36
  136. package/templates/base/tools/lib/init.js +192 -192
  137. package/templates/base/tools/lib/logger.js +230 -230
  138. package/templates/base/tools/lib/placeholder.js +201 -201
  139. package/templates/base/tools/lib/session-manager.js +354 -354
  140. package/templates/base/tools/lib/validate.js +521 -521
  141. package/templates/base/tools/package.json +49 -49
  142. package/templates/handlebars/aider-config.hbs +146 -80
  143. package/templates/handlebars/antigravity.hbs +377 -377
  144. package/templates/handlebars/claude.hbs +183 -183
  145. package/templates/handlebars/cline.hbs +62 -62
  146. package/templates/handlebars/continue-config.hbs +116 -116
  147. package/templates/handlebars/copilot.hbs +130 -130
  148. package/templates/handlebars/partials/gotcha-list.hbs +11 -11
  149. package/templates/handlebars/partials/header.hbs +3 -3
  150. package/templates/handlebars/partials/workflow-summary.hbs +16 -16
  151. package/templates/handlebars/windsurf-rules.hbs +69 -69
  152. package/templates/hooks/post-commit.hbs +28 -29
  153. package/templates/hooks/pre-commit.hbs +46 -46
package/lib/installer.js CHANGED
@@ -1,419 +1,419 @@
1
- /**
2
- * AI Context Engineering - File Installer
3
- *
4
- * Handles copying template files and creating directory structure.
5
- * Supports multiple AI tools: Claude, Copilot, Cline, Antigravity.
6
- */
7
-
8
- const fs = require('fs');
9
- const path = require('path');
10
-
11
- /**
12
- * Context directory name (universal)
13
- */
14
- const AI_CONTEXT_DIR = '.ai-context';
15
-
16
- /**
17
- * Root context file name (universal)
18
- */
19
- const AI_CONTEXT_FILE = 'AI_CONTEXT.md';
20
-
21
- /**
22
- * Directory structure for .ai-context/
23
- */
24
- const DIRECTORY_STRUCTURE = [
25
- 'agents',
26
- 'automation',
27
- 'automation/generators',
28
- 'automation/hooks',
29
- 'commands',
30
- 'config',
31
- 'config/environments',
32
- 'context',
33
- 'context/workflows',
34
- 'context/.meta',
35
- 'federation',
36
- 'federation/registry',
37
- 'indexes',
38
- 'indexes/agents',
39
- 'indexes/code',
40
- 'indexes/routing',
41
- 'indexes/search',
42
- 'indexes/workflows',
43
- 'knowledge',
44
- 'knowledge/sessions',
45
- 'knowledge/shared',
46
- 'knowledge/shared/decisions',
47
- 'knowledge/shared/patterns',
48
- 'plans',
49
- 'plans/active',
50
- 'plans/completed',
51
- 'research',
52
- 'research/active',
53
- 'research/completed',
54
- 'schemas',
55
- 'session',
56
- 'session/current',
57
- 'session/history',
58
- 'session/checkpoints',
59
- 'standards',
60
- 'sync',
61
- 'team',
62
- 'ci-templates',
63
- 'ci-templates/github-actions',
64
- 'tools',
65
- 'tools/bin',
66
- 'tools/lib',
67
- ];
68
-
69
- /**
70
- * Create the .ai-context directory structure
71
- */
72
- async function createDirectoryStructure(targetDir, config = {}) {
73
- const contextDir = path.join(targetDir, AI_CONTEXT_DIR);
74
-
75
- // Create main .ai-context directory
76
- if (!fs.existsSync(contextDir)) {
77
- fs.mkdirSync(contextDir, { recursive: true });
78
- }
79
-
80
- let dirsCreated = 0;
81
-
82
- // Filter directories based on features
83
- let dirsToCreate = [...DIRECTORY_STRUCTURE];
84
-
85
- if (!config.features?.ci) {
86
- dirsToCreate = dirsToCreate.filter(d => !d.startsWith('ci-templates'));
87
- }
88
- if (!config.features?.team) {
89
- dirsToCreate = dirsToCreate.filter(d => !d.startsWith('team') && !d.includes('knowledge'));
90
- }
91
- if (!config.features?.analytics) {
92
- dirsToCreate = dirsToCreate.filter(d => !d.startsWith('analytics'));
93
- }
94
- if (!config.monorepo) {
95
- // Keep federation directory but it won't be heavily populated
96
- }
97
-
98
- // Create each directory
99
- for (const dir of dirsToCreate) {
100
- const fullPath = path.join(contextDir, dir);
101
- if (!fs.existsSync(fullPath)) {
102
- fs.mkdirSync(fullPath, { recursive: true });
103
- dirsCreated++;
104
- }
105
- }
106
-
107
- return dirsCreated;
108
- }
109
-
110
- /**
111
- * Copy template files from the bundled templates
112
- */
113
- async function copyTemplates(targetDir, config = {}) {
114
- const contextDir = path.join(targetDir, AI_CONTEXT_DIR);
115
- const templatesDir = path.join(__dirname, '..', 'templates', 'base');
116
-
117
- let filesCopied = 0;
118
-
119
- // Check if templates exist
120
- if (!fs.existsSync(templatesDir)) {
121
- // If no bundled templates, create minimal files
122
- filesCopied = await createMinimalFiles(contextDir, config);
123
- return filesCopied;
124
- }
125
-
126
- // Copy all files from templates
127
- filesCopied = await copyDirectory(templatesDir, contextDir);
128
-
129
- return filesCopied;
130
- }
131
-
132
- /**
133
- * Recursively copy a directory
134
- */
135
- async function copyDirectory(src, dest) {
136
- let count = 0;
137
-
138
- if (!fs.existsSync(src)) {
139
- return count;
140
- }
141
-
142
- const entries = fs.readdirSync(src, { withFileTypes: true });
143
-
144
- for (const entry of entries) {
145
- const srcPath = path.join(src, entry.name);
146
- const destPath = path.join(dest, entry.name);
147
-
148
- if (entry.isDirectory()) {
149
- if (!fs.existsSync(destPath)) {
150
- fs.mkdirSync(destPath, { recursive: true });
151
- }
152
- count += await copyDirectory(srcPath, destPath);
153
- } else {
154
- // Copy file
155
- fs.copyFileSync(srcPath, destPath);
156
- count++;
157
- }
158
- }
159
-
160
- return count;
161
- }
162
-
163
- /**
164
- * Create minimal files when no templates are bundled
165
- */
166
- async function createMinimalFiles(contextDir, config = {}) {
167
- let count = 0;
168
-
169
- // README.md
170
- const readmeContent = `# .ai-context Configuration - ${config.projectName || 'Project'}
171
-
172
- This directory contains the AI Context Engineering system.
173
-
174
- ## Supported AI Tools
175
-
176
- - **Claude Code** - Full context in AI_CONTEXT.md
177
- - **GitHub Copilot** - .github/copilot-instructions.md
178
- - **Cline** - .clinerules
179
- - **Antigravity** - .agent/ directory
180
-
181
- ## Quick Start
182
-
183
- 1. Load workflow index: Read \`.ai-context/context/WORKFLOW_INDEX.md\`
184
- 2. Use RPI workflow: /rpi-research → /rpi-plan → /rpi-implement
185
- 3. Validate changes: /verify-docs-current
186
-
187
- ## Configuration
188
-
189
- - **Agents**: ${config.features?.agents ? '6 specialized agents' : 'disabled'}
190
- - **Commands**: ${config.features?.rpi ? 'RPI workflow + validation' : 'basic'}
191
- - **Context Budget**: 200k tokens max, target <40%
192
-
193
- *Generated by create-ai-context v2.0*
194
- `;
195
- fs.writeFileSync(path.join(contextDir, 'README.md'), readmeContent);
196
- count++;
197
-
198
- // settings.json
199
- const settingsContent = {
200
- '$schema': './schemas/settings.schema.json',
201
- version: '2.0.0',
202
- project: {
203
- name: config.projectName || 'my-project',
204
- status: 'development'
205
- },
206
- context: {
207
- maxTokens: 200000,
208
- targetUtilization: 0.4
209
- },
210
- aiTools: {
211
- claude: { enabled: true },
212
- copilot: { enabled: true },
213
- cline: { enabled: true },
214
- antigravity: { enabled: false }
215
- },
216
- validation: {
217
- lineAccuracyThreshold: 60,
218
- onCommit: true
219
- }
220
- };
221
- fs.writeFileSync(
222
- path.join(contextDir, 'settings.json'),
223
- JSON.stringify(settingsContent, null, 2)
224
- );
225
- count++;
226
-
227
- // WORKFLOW_INDEX.md
228
- const workflowIndexContent = `# Workflow Index
229
-
230
- ## Primary Workflows
231
-
232
- | Workflow | Entry Point | Description |
233
- |----------|-------------|-------------|
234
- | *To be discovered* | - | Run static analysis or AI to populate |
235
-
236
- ## Quick Reference
237
-
238
- - Use \`/rpi-research\` to discover workflows
239
- - Use \`@context-engineer\` for Claude-enhanced setup
240
-
241
- *Run analysis to populate this index.*
242
- `;
243
- fs.writeFileSync(
244
- path.join(contextDir, 'context', 'WORKFLOW_INDEX.md'),
245
- workflowIndexContent
246
- );
247
- count++;
248
-
249
- // RPI_WORKFLOW_PLAN.md
250
- const rpiContent = `# RPI (Research, Plan, Implement) Workflow
251
-
252
- ## Phase 1: RESEARCH (/rpi-research)
253
- - Explore codebase using parallel agents
254
- - Output: Research document in \`.ai-context/research/active/\`
255
-
256
- ## Phase 2: PLAN (/rpi-plan)
257
- - Create implementation blueprint with file:line precision
258
- - Output: Plan document in \`.ai-context/plans/active/\`
259
-
260
- ## Phase 3: IMPLEMENT (/rpi-implement)
261
- - Execute with atomic changes
262
- - ONE CHANGE → ONE TEST → ONE COMMIT
263
-
264
- ## Context Budget
265
- - Research: 25-30%
266
- - Plan: 20-25%
267
- - Implement: 30-40%
268
- `;
269
- fs.writeFileSync(path.join(contextDir, 'RPI_WORKFLOW_PLAN.md'), rpiContent);
270
- count++;
271
-
272
- // Create placeholder files for research and plans
273
- const researchTemplate = `# Research Template
274
-
275
- Use this template for RPI Research phase.
276
-
277
- ## Objective
278
- [What you're researching]
279
-
280
- ## Files Explored
281
- | File | Lines | Findings |
282
- |------|-------|----------|
283
-
284
- ## Summary
285
- [150 words max]
286
- `;
287
- fs.writeFileSync(
288
- path.join(contextDir, 'research', 'RESEARCH_TEMPLATE.md'),
289
- researchTemplate
290
- );
291
- count++;
292
-
293
- const planTemplate = `# Plan Template
294
-
295
- Use this template for RPI Plan phase.
296
-
297
- ## Research Summary
298
- [From Phase 1]
299
-
300
- ## Files to Modify
301
- | File | Lines | Change | Risk |
302
- |------|-------|--------|------|
303
-
304
- ## Steps
305
- 1. Step 1
306
- 2. Step 2
307
-
308
- ## Rollback Plan
309
- - Revert: \`git revert HEAD\`
310
- `;
311
- fs.writeFileSync(
312
- path.join(contextDir, 'plans', 'PLAN_TEMPLATE.md'),
313
- planTemplate
314
- );
315
- count++;
316
-
317
- return count;
318
- }
319
-
320
- /**
321
- * Create AI_CONTEXT.md at project root
322
- */
323
- async function createAiContextMd(targetDir, config = {}, techStack = {}) {
324
- const aiContextPath = path.join(targetDir, AI_CONTEXT_FILE);
325
-
326
- // Check for template
327
- const templatePath = path.join(__dirname, '..', 'templates', 'AI_CONTEXT.md.template');
328
-
329
- let content;
330
-
331
- if (fs.existsSync(templatePath)) {
332
- content = fs.readFileSync(templatePath, 'utf8');
333
- } else {
334
- // Create minimal AI_CONTEXT.md
335
- content = `# AI_CONTEXT.md - ${config.projectName || 'Project'}
336
-
337
- This file provides guidance to AI coding assistants when working with this repository.
338
-
339
- ---
340
-
341
- ## Project Identity
342
-
343
- **Platform:** ${config.projectName || 'Project'} application
344
- **Tech Stack:** ${techStack.summary || techStack.stack || 'Not detected'}
345
- **Status:** Development
346
-
347
- ---
348
-
349
- ## Essential Commands
350
-
351
- ### Development
352
- \`\`\`bash
353
- ${techStack.commands?.install || 'npm install'}
354
- ${techStack.commands?.dev || 'npm run dev'}
355
- \`\`\`
356
-
357
- ### Testing
358
- \`\`\`bash
359
- ${techStack.commands?.test || 'npm test'}
360
- \`\`\`
361
-
362
- ---
363
-
364
- ## Navigation Rules
365
-
366
- ### High-Level Task
367
- 1. Start: [.ai-context/context/WORKFLOW_INDEX.md](./.ai-context/context/WORKFLOW_INDEX.md)
368
- 2. Load relevant workflow
369
- 3. Implement with context
370
-
371
- ### Feature Development
372
- 1. /rpi-research - Explore codebase
373
- 2. /rpi-plan - Create blueprint
374
- 3. /rpi-implement - Execute with tests
375
-
376
- ---
377
-
378
- ## Documentation System
379
-
380
- **Navigation:** 3-level chain (AI_CONTEXT.md → Category → Domain → Detail)
381
- **Validation:** Run /verify-docs-current after modifications
382
- **RPI Workflow:** /rpi-research → /rpi-plan → /rpi-implement
383
-
384
- See: [.ai-context/RPI_WORKFLOW_PLAN.md](./.ai-context/RPI_WORKFLOW_PLAN.md)
385
-
386
- ---
387
-
388
- ## AI Tools Configuration
389
-
390
- This context is optimized for:
391
- - **Claude Code** - Full context reading
392
- - **GitHub Copilot** - See \`.github/copilot-instructions.md\`
393
- - **Cline** - See \`.clinerules\`
394
- - **Antigravity** - See \`.agent/\` directory
395
-
396
- ---
397
-
398
- *Generated by create-ai-context v2.0*
399
- `;
400
- }
401
-
402
- fs.writeFileSync(aiContextPath, content);
403
- }
404
-
405
- /**
406
- * Legacy alias for backward compatibility
407
- */
408
- const createClaudeMd = createAiContextMd;
409
-
410
- module.exports = {
411
- createDirectoryStructure,
412
- copyTemplates,
413
- createAiContextMd,
414
- createClaudeMd, // Legacy alias
415
- DIRECTORY_STRUCTURE,
416
- AI_CONTEXT_DIR,
417
- AI_CONTEXT_FILE,
418
- copyDirectory, // Export for use by adapters
419
- };
1
+ /**
2
+ * AI Context Engineering - File Installer
3
+ *
4
+ * Handles copying template files and creating directory structure.
5
+ * Supports multiple AI tools: Claude, Copilot, Cline, Antigravity.
6
+ */
7
+
8
+ const fs = require('fs');
9
+ const path = require('path');
10
+
11
+ /**
12
+ * Context directory name (universal)
13
+ */
14
+ const AI_CONTEXT_DIR = '.ai-context';
15
+
16
+ /**
17
+ * Root context file name (universal)
18
+ */
19
+ const AI_CONTEXT_FILE = 'AI_CONTEXT.md';
20
+
21
+ /**
22
+ * Directory structure for .ai-context/
23
+ */
24
+ const DIRECTORY_STRUCTURE = [
25
+ 'agents',
26
+ 'automation',
27
+ 'automation/generators',
28
+ 'automation/hooks',
29
+ 'commands',
30
+ 'config',
31
+ 'config/environments',
32
+ 'context',
33
+ 'context/workflows',
34
+ 'context/.meta',
35
+ 'federation',
36
+ 'federation/registry',
37
+ 'indexes',
38
+ 'indexes/agents',
39
+ 'indexes/code',
40
+ 'indexes/routing',
41
+ 'indexes/search',
42
+ 'indexes/workflows',
43
+ 'knowledge',
44
+ 'knowledge/sessions',
45
+ 'knowledge/shared',
46
+ 'knowledge/shared/decisions',
47
+ 'knowledge/shared/patterns',
48
+ 'plans',
49
+ 'plans/active',
50
+ 'plans/completed',
51
+ 'research',
52
+ 'research/active',
53
+ 'research/completed',
54
+ 'schemas',
55
+ 'session',
56
+ 'session/current',
57
+ 'session/history',
58
+ 'session/checkpoints',
59
+ 'standards',
60
+ 'sync',
61
+ 'team',
62
+ 'ci-templates',
63
+ 'ci-templates/github-actions',
64
+ 'tools',
65
+ 'tools/bin',
66
+ 'tools/lib',
67
+ ];
68
+
69
+ /**
70
+ * Create the .ai-context directory structure
71
+ */
72
+ async function createDirectoryStructure(targetDir, config = {}) {
73
+ const contextDir = path.join(targetDir, AI_CONTEXT_DIR);
74
+
75
+ // Create main .ai-context directory
76
+ if (!fs.existsSync(contextDir)) {
77
+ fs.mkdirSync(contextDir, { recursive: true });
78
+ }
79
+
80
+ let dirsCreated = 0;
81
+
82
+ // Filter directories based on features
83
+ let dirsToCreate = [...DIRECTORY_STRUCTURE];
84
+
85
+ if (!config.features?.ci) {
86
+ dirsToCreate = dirsToCreate.filter(d => !d.startsWith('ci-templates'));
87
+ }
88
+ if (!config.features?.team) {
89
+ dirsToCreate = dirsToCreate.filter(d => !d.startsWith('team') && !d.includes('knowledge'));
90
+ }
91
+ if (!config.features?.analytics) {
92
+ dirsToCreate = dirsToCreate.filter(d => !d.startsWith('analytics'));
93
+ }
94
+ if (!config.monorepo) {
95
+ // Keep federation directory but it won't be heavily populated
96
+ }
97
+
98
+ // Create each directory
99
+ for (const dir of dirsToCreate) {
100
+ const fullPath = path.join(contextDir, dir);
101
+ if (!fs.existsSync(fullPath)) {
102
+ fs.mkdirSync(fullPath, { recursive: true });
103
+ dirsCreated++;
104
+ }
105
+ }
106
+
107
+ return dirsCreated;
108
+ }
109
+
110
+ /**
111
+ * Copy template files from the bundled templates
112
+ */
113
+ async function copyTemplates(targetDir, config = {}) {
114
+ const contextDir = path.join(targetDir, AI_CONTEXT_DIR);
115
+ const templatesDir = path.join(__dirname, '..', 'templates', 'base');
116
+
117
+ let filesCopied = 0;
118
+
119
+ // Check if templates exist
120
+ if (!fs.existsSync(templatesDir)) {
121
+ // If no bundled templates, create minimal files
122
+ filesCopied = await createMinimalFiles(contextDir, config);
123
+ return filesCopied;
124
+ }
125
+
126
+ // Copy all files from templates
127
+ filesCopied = await copyDirectory(templatesDir, contextDir);
128
+
129
+ return filesCopied;
130
+ }
131
+
132
+ /**
133
+ * Recursively copy a directory
134
+ */
135
+ async function copyDirectory(src, dest) {
136
+ let count = 0;
137
+
138
+ if (!fs.existsSync(src)) {
139
+ return count;
140
+ }
141
+
142
+ const entries = fs.readdirSync(src, { withFileTypes: true });
143
+
144
+ for (const entry of entries) {
145
+ const srcPath = path.join(src, entry.name);
146
+ const destPath = path.join(dest, entry.name);
147
+
148
+ if (entry.isDirectory()) {
149
+ if (!fs.existsSync(destPath)) {
150
+ fs.mkdirSync(destPath, { recursive: true });
151
+ }
152
+ count += await copyDirectory(srcPath, destPath);
153
+ } else {
154
+ // Copy file
155
+ fs.copyFileSync(srcPath, destPath);
156
+ count++;
157
+ }
158
+ }
159
+
160
+ return count;
161
+ }
162
+
163
+ /**
164
+ * Create minimal files when no templates are bundled
165
+ */
166
+ async function createMinimalFiles(contextDir, config = {}) {
167
+ let count = 0;
168
+
169
+ // README.md
170
+ const readmeContent = `# .ai-context Configuration - ${config.projectName || 'Project'}
171
+
172
+ This directory contains the AI Context Engineering system.
173
+
174
+ ## Supported AI Tools
175
+
176
+ - **Claude Code** - Full context in AI_CONTEXT.md
177
+ - **GitHub Copilot** - .github/copilot-instructions.md
178
+ - **Cline** - .clinerules
179
+ - **Antigravity** - .agent/ directory
180
+
181
+ ## Quick Start
182
+
183
+ 1. Load workflow index: Read \`.ai-context/context/WORKFLOW_INDEX.md\`
184
+ 2. Use RPI workflow: /rpi-research → /rpi-plan → /rpi-implement
185
+ 3. Validate changes: /verify-docs-current
186
+
187
+ ## Configuration
188
+
189
+ - **Agents**: ${config.features?.agents ? '6 specialized agents' : 'disabled'}
190
+ - **Commands**: ${config.features?.rpi ? 'RPI workflow + validation' : 'basic'}
191
+ - **Context Budget**: 200k tokens max, target <40%
192
+
193
+ *Generated by create-ai-context v2.0*
194
+ `;
195
+ fs.writeFileSync(path.join(contextDir, 'README.md'), readmeContent);
196
+ count++;
197
+
198
+ // settings.json
199
+ const settingsContent = {
200
+ '$schema': './schemas/settings.schema.json',
201
+ version: '2.0.0',
202
+ project: {
203
+ name: config.projectName || 'my-project',
204
+ status: 'development'
205
+ },
206
+ context: {
207
+ maxTokens: 200000,
208
+ targetUtilization: 0.4
209
+ },
210
+ aiTools: {
211
+ claude: { enabled: true },
212
+ copilot: { enabled: true },
213
+ cline: { enabled: true },
214
+ antigravity: { enabled: false }
215
+ },
216
+ validation: {
217
+ lineAccuracyThreshold: 60,
218
+ onCommit: true
219
+ }
220
+ };
221
+ fs.writeFileSync(
222
+ path.join(contextDir, 'settings.json'),
223
+ JSON.stringify(settingsContent, null, 2)
224
+ );
225
+ count++;
226
+
227
+ // WORKFLOW_INDEX.md
228
+ const workflowIndexContent = `# Workflow Index
229
+
230
+ ## Primary Workflows
231
+
232
+ | Workflow | Entry Point | Description |
233
+ |----------|-------------|-------------|
234
+ | *To be discovered* | - | Run static analysis or AI to populate |
235
+
236
+ ## Quick Reference
237
+
238
+ - Use \`/rpi-research\` to discover workflows
239
+ - Use \`@context-engineer\` for Claude-enhanced setup
240
+
241
+ *Run analysis to populate this index.*
242
+ `;
243
+ fs.writeFileSync(
244
+ path.join(contextDir, 'context', 'WORKFLOW_INDEX.md'),
245
+ workflowIndexContent
246
+ );
247
+ count++;
248
+
249
+ // RPI_WORKFLOW_PLAN.md
250
+ const rpiContent = `# RPI (Research, Plan, Implement) Workflow
251
+
252
+ ## Phase 1: RESEARCH (/rpi-research)
253
+ - Explore codebase using parallel agents
254
+ - Output: Research document in \`.ai-context/research/active/\`
255
+
256
+ ## Phase 2: PLAN (/rpi-plan)
257
+ - Create implementation blueprint with file:line precision
258
+ - Output: Plan document in \`.ai-context/plans/active/\`
259
+
260
+ ## Phase 3: IMPLEMENT (/rpi-implement)
261
+ - Execute with atomic changes
262
+ - ONE CHANGE → ONE TEST → ONE COMMIT
263
+
264
+ ## Context Budget
265
+ - Research: 25-30%
266
+ - Plan: 20-25%
267
+ - Implement: 30-40%
268
+ `;
269
+ fs.writeFileSync(path.join(contextDir, 'RPI_WORKFLOW_PLAN.md'), rpiContent);
270
+ count++;
271
+
272
+ // Create placeholder files for research and plans
273
+ const researchTemplate = `# Research Template
274
+
275
+ Use this template for RPI Research phase.
276
+
277
+ ## Objective
278
+ [What you're researching]
279
+
280
+ ## Files Explored
281
+ | File | Lines | Findings |
282
+ |------|-------|----------|
283
+
284
+ ## Summary
285
+ [150 words max]
286
+ `;
287
+ fs.writeFileSync(
288
+ path.join(contextDir, 'research', 'RESEARCH_TEMPLATE.md'),
289
+ researchTemplate
290
+ );
291
+ count++;
292
+
293
+ const planTemplate = `# Plan Template
294
+
295
+ Use this template for RPI Plan phase.
296
+
297
+ ## Research Summary
298
+ [From Phase 1]
299
+
300
+ ## Files to Modify
301
+ | File | Lines | Change | Risk |
302
+ |------|-------|--------|------|
303
+
304
+ ## Steps
305
+ 1. Step 1
306
+ 2. Step 2
307
+
308
+ ## Rollback Plan
309
+ - Revert: \`git revert HEAD\`
310
+ `;
311
+ fs.writeFileSync(
312
+ path.join(contextDir, 'plans', 'PLAN_TEMPLATE.md'),
313
+ planTemplate
314
+ );
315
+ count++;
316
+
317
+ return count;
318
+ }
319
+
320
+ /**
321
+ * Create AI_CONTEXT.md at project root
322
+ */
323
+ async function createAiContextMd(targetDir, config = {}, techStack = {}) {
324
+ const aiContextPath = path.join(targetDir, AI_CONTEXT_FILE);
325
+
326
+ // Check for template
327
+ const templatePath = path.join(__dirname, '..', 'templates', 'AI_CONTEXT.md.template');
328
+
329
+ let content;
330
+
331
+ if (fs.existsSync(templatePath)) {
332
+ content = fs.readFileSync(templatePath, 'utf8');
333
+ } else {
334
+ // Create minimal AI_CONTEXT.md
335
+ content = `# AI_CONTEXT.md - ${config.projectName || 'Project'}
336
+
337
+ This file provides guidance to AI coding assistants when working with this repository.
338
+
339
+ ---
340
+
341
+ ## Project Identity
342
+
343
+ **Platform:** ${config.projectName || 'Project'} application
344
+ **Tech Stack:** ${techStack.summary || techStack.stack || 'Not detected'}
345
+ **Status:** Development
346
+
347
+ ---
348
+
349
+ ## Essential Commands
350
+
351
+ ### Development
352
+ \`\`\`bash
353
+ ${techStack.commands?.install || 'npm install'}
354
+ ${techStack.commands?.dev || 'npm run dev'}
355
+ \`\`\`
356
+
357
+ ### Testing
358
+ \`\`\`bash
359
+ ${techStack.commands?.test || 'npm test'}
360
+ \`\`\`
361
+
362
+ ---
363
+
364
+ ## Navigation Rules
365
+
366
+ ### High-Level Task
367
+ 1. Start: [.ai-context/context/WORKFLOW_INDEX.md](./.ai-context/context/WORKFLOW_INDEX.md)
368
+ 2. Load relevant workflow
369
+ 3. Implement with context
370
+
371
+ ### Feature Development
372
+ 1. /rpi-research - Explore codebase
373
+ 2. /rpi-plan - Create blueprint
374
+ 3. /rpi-implement - Execute with tests
375
+
376
+ ---
377
+
378
+ ## Documentation System
379
+
380
+ **Navigation:** 3-level chain (AI_CONTEXT.md → Category → Domain → Detail)
381
+ **Validation:** Run /verify-docs-current after modifications
382
+ **RPI Workflow:** /rpi-research → /rpi-plan → /rpi-implement
383
+
384
+ See: [.ai-context/RPI_WORKFLOW_PLAN.md](./.ai-context/RPI_WORKFLOW_PLAN.md)
385
+
386
+ ---
387
+
388
+ ## AI Tools Configuration
389
+
390
+ This context is optimized for:
391
+ - **Claude Code** - Full context reading
392
+ - **GitHub Copilot** - See \`.github/copilot-instructions.md\`
393
+ - **Cline** - See \`.clinerules\`
394
+ - **Antigravity** - See \`.agent/\` directory
395
+
396
+ ---
397
+
398
+ *Generated by create-ai-context v2.0*
399
+ `;
400
+ }
401
+
402
+ fs.writeFileSync(aiContextPath, content);
403
+ }
404
+
405
+ /**
406
+ * Legacy alias for backward compatibility
407
+ */
408
+ const createClaudeMd = createAiContextMd;
409
+
410
+ module.exports = {
411
+ createDirectoryStructure,
412
+ copyTemplates,
413
+ createAiContextMd,
414
+ createClaudeMd, // Legacy alias
415
+ DIRECTORY_STRUCTURE,
416
+ AI_CONTEXT_DIR,
417
+ AI_CONTEXT_FILE,
418
+ copyDirectory, // Export for use by adapters
419
+ };