create-claude-context 1.0.0 → 1.2.1

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 (117) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +169 -146
  3. package/bin/create-claude-context.js +75 -61
  4. package/lib/ai-orchestrator.js +423 -0
  5. package/lib/call-tracer.js +444 -0
  6. package/lib/detector.js +456 -373
  7. package/lib/environment-detector.js +239 -0
  8. package/lib/index.js +271 -170
  9. package/lib/installer.js +371 -362
  10. package/lib/placeholder.js +269 -208
  11. package/lib/prompts.js +287 -287
  12. package/lib/spinner.js +60 -60
  13. package/lib/static-analyzer.js +729 -0
  14. package/lib/template-populator.js +835 -0
  15. package/lib/validate.js +147 -147
  16. package/package.json +59 -59
  17. package/templates/CLAUDE.md.template +235 -235
  18. package/templates/base/README.md +257 -257
  19. package/templates/base/RPI_WORKFLOW_PLAN.md +320 -320
  20. package/templates/base/agents/api-developer.md +76 -76
  21. package/templates/base/agents/context-engineer.md +525 -525
  22. package/templates/base/agents/core-architect.md +76 -76
  23. package/templates/base/agents/database-ops.md +76 -76
  24. package/templates/base/agents/deployment-ops.md +76 -76
  25. package/templates/base/agents/integration-hub.md +76 -76
  26. package/templates/base/analytics/README.md +114 -114
  27. package/templates/base/automation/config.json +58 -0
  28. package/templates/base/automation/generators/code-mapper.js +308 -0
  29. package/templates/base/automation/generators/index-builder.js +321 -0
  30. package/templates/base/automation/hooks/post-commit.sh +83 -0
  31. package/templates/base/automation/hooks/pre-commit.sh +103 -0
  32. package/templates/base/ci-templates/README.md +108 -108
  33. package/templates/base/ci-templates/github-actions/context-check.yml +144 -144
  34. package/templates/base/ci-templates/github-actions/validate-docs.yml +105 -105
  35. package/templates/base/commands/analytics.md +238 -238
  36. package/templates/base/commands/auto-sync.md +172 -0
  37. package/templates/base/commands/collab.md +194 -194
  38. package/templates/base/commands/help.md +450 -450
  39. package/templates/base/commands/rpi-implement.md +115 -115
  40. package/templates/base/commands/rpi-plan.md +93 -93
  41. package/templates/base/commands/rpi-research.md +88 -88
  42. package/templates/base/commands/session-resume.md +144 -0
  43. package/templates/base/commands/session-save.md +112 -0
  44. package/templates/base/commands/validate-all.md +77 -77
  45. package/templates/base/commands/verify-docs-current.md +86 -86
  46. package/templates/base/config/base.json +57 -57
  47. package/templates/base/config/environments/development.json +13 -13
  48. package/templates/base/config/environments/production.json +17 -17
  49. package/templates/base/config/environments/staging.json +13 -13
  50. package/templates/base/config/local.json.example +21 -21
  51. package/templates/base/context/.meta/generated-at.json +18 -0
  52. package/templates/base/context/ARCHITECTURE_SNAPSHOT.md +156 -156
  53. package/templates/base/context/CODE_TO_WORKFLOW_MAP.md +94 -94
  54. package/templates/base/context/FILE_OWNERSHIP.md +57 -0
  55. package/templates/base/context/INTEGRATION_POINTS.md +92 -0
  56. package/templates/base/context/KNOWN_GOTCHAS.md +195 -195
  57. package/templates/base/context/TESTING_MAP.md +95 -0
  58. package/templates/base/context/WORKFLOW_INDEX.md +129 -129
  59. package/templates/base/context/workflows/WORKFLOW_TEMPLATE.md +294 -294
  60. package/templates/base/indexes/agents/CAPABILITY_MATRIX.md +255 -255
  61. package/templates/base/indexes/agents/CATEGORY_INDEX.md +44 -44
  62. package/templates/base/indexes/code/CATEGORY_INDEX.md +38 -38
  63. package/templates/base/indexes/routing/CATEGORY_INDEX.md +39 -39
  64. package/templates/base/indexes/search/CATEGORY_INDEX.md +39 -39
  65. package/templates/base/indexes/workflows/CATEGORY_INDEX.md +38 -38
  66. package/templates/base/knowledge/README.md +98 -98
  67. package/templates/base/knowledge/sessions/README.md +88 -88
  68. package/templates/base/knowledge/sessions/TEMPLATE.md +150 -150
  69. package/templates/base/knowledge/shared/decisions/0001-adopt-context-engineering.md +144 -144
  70. package/templates/base/knowledge/shared/decisions/README.md +49 -49
  71. package/templates/base/knowledge/shared/decisions/TEMPLATE.md +123 -123
  72. package/templates/base/knowledge/shared/patterns/README.md +62 -62
  73. package/templates/base/knowledge/shared/patterns/TEMPLATE.md +120 -120
  74. package/templates/base/plans/PLAN_TEMPLATE.md +250 -250
  75. package/templates/base/research/RESEARCH_TEMPLATE.md +153 -153
  76. package/templates/base/schemas/agent.schema.json +141 -141
  77. package/templates/base/schemas/anchors.schema.json +54 -0
  78. package/templates/base/schemas/automation.schema.json +93 -0
  79. package/templates/base/schemas/command.schema.json +134 -134
  80. package/templates/base/schemas/hashes.schema.json +40 -0
  81. package/templates/base/schemas/manifest.schema.json +117 -117
  82. package/templates/base/schemas/plan.schema.json +136 -136
  83. package/templates/base/schemas/research.schema.json +115 -115
  84. package/templates/base/schemas/roles.schema.json +34 -0
  85. package/templates/base/schemas/session.schema.json +77 -0
  86. package/templates/base/schemas/settings.schema.json +244 -244
  87. package/templates/base/schemas/staleness.schema.json +53 -0
  88. package/templates/base/schemas/team-config.schema.json +42 -0
  89. package/templates/base/schemas/workflow.schema.json +126 -126
  90. package/templates/base/session/checkpoints/.gitkeep +2 -0
  91. package/templates/base/session/current/state.json +20 -0
  92. package/templates/base/session/history/.gitkeep +2 -0
  93. package/templates/base/settings.json +3 -57
  94. package/templates/base/standards/COMPATIBILITY.md +219 -219
  95. package/templates/base/standards/EXTENSION_GUIDELINES.md +280 -280
  96. package/templates/base/standards/QUALITY_CHECKLIST.md +211 -211
  97. package/templates/base/standards/README.md +66 -66
  98. package/templates/base/sync/anchors.json +6 -0
  99. package/templates/base/sync/hashes.json +6 -0
  100. package/templates/base/sync/staleness.json +10 -0
  101. package/templates/base/team/README.md +168 -168
  102. package/templates/base/team/config.json +79 -79
  103. package/templates/base/team/roles.json +145 -145
  104. package/templates/base/tools/bin/claude-context.js +151 -151
  105. package/templates/base/tools/lib/anchor-resolver.js +276 -0
  106. package/templates/base/tools/lib/config-loader.js +363 -363
  107. package/templates/base/tools/lib/detector.js +350 -350
  108. package/templates/base/tools/lib/diagnose.js +206 -206
  109. package/templates/base/tools/lib/drift-detector.js +373 -0
  110. package/templates/base/tools/lib/errors.js +199 -199
  111. package/templates/base/tools/lib/index.js +36 -24
  112. package/templates/base/tools/lib/init.js +192 -192
  113. package/templates/base/tools/lib/logger.js +230 -230
  114. package/templates/base/tools/lib/placeholder.js +201 -201
  115. package/templates/base/tools/lib/session-manager.js +354 -0
  116. package/templates/base/tools/lib/validate.js +521 -521
  117. package/templates/base/tools/package.json +49 -49
package/lib/index.js CHANGED
@@ -1,170 +1,271 @@
1
- /**
2
- * Main orchestrator for create-claude-context
3
- *
4
- * Handles the full installation flow:
5
- * 1. Interactive prompts (or defaults)
6
- * 2. Directory structure creation
7
- * 3. Template copying
8
- * 4. Tech stack detection
9
- * 5. Placeholder replacement
10
- * 6. Validation
11
- * 7. Plugin installation (optional)
12
- */
13
-
14
- const path = require('path');
15
- const fs = require('fs');
16
- const chalk = require('chalk');
17
- const { runPrompts, getDefaults } = require('./prompts');
18
- const { createSpinner } = require('./spinner');
19
- const {
20
- createDirectoryStructure,
21
- copyTemplates,
22
- createClaudeMd
23
- } = require('./installer');
24
- const { detectTechStack } = require('./detector');
25
- const { replacePlaceholders } = require('./placeholder');
26
- const { validateInstallation } = require('./validate');
27
-
28
- /**
29
- * Main entry point
30
- */
31
- async function run(options = {}) {
32
- const {
33
- projectName,
34
- skipPrompts = false,
35
- installPlugin = true,
36
- template,
37
- initGit = true,
38
- dryRun = false,
39
- verbose = false
40
- } = options;
41
-
42
- // Determine target directory
43
- const targetDir = projectName
44
- ? path.resolve(process.cwd(), projectName)
45
- : process.cwd();
46
-
47
- const projectNameResolved = projectName || path.basename(targetDir);
48
-
49
- // Get configuration (prompts or defaults)
50
- let config;
51
- if (skipPrompts) {
52
- config = await getDefaults(targetDir, template);
53
- } else {
54
- config = await runPrompts(targetDir, template);
55
- }
56
-
57
- config.projectName = projectNameResolved;
58
- config.targetDir = targetDir;
59
- config.installPlugin = installPlugin && config.installPlugin;
60
- config.initGit = initGit;
61
- config.dryRun = dryRun;
62
- config.verbose = verbose;
63
-
64
- if (dryRun) {
65
- console.log(chalk.yellow('\n--dry-run mode: No changes will be made\n'));
66
- console.log('Configuration:', JSON.stringify(config, null, 2));
67
- return;
68
- }
69
-
70
- // Phase 1: Create target directory if needed
71
- const spinner = createSpinner();
72
-
73
- if (projectName && !fs.existsSync(targetDir)) {
74
- spinner.start('Creating project directory...');
75
- fs.mkdirSync(targetDir, { recursive: true });
76
- spinner.succeed(`Created project directory: ${projectNameResolved}`);
77
- }
78
-
79
- // Phase 2: Create .claude directory structure
80
- spinner.start('Creating .claude directory structure...');
81
- const dirsCreated = await createDirectoryStructure(targetDir, config);
82
- spinner.succeed(`Created .claude directory structure (${dirsCreated} directories)`);
83
-
84
- // Phase 3: Copy template files
85
- spinner.start('Copying template files...');
86
- const filesCopied = await copyTemplates(targetDir, config);
87
- spinner.succeed(`Copied ${filesCopied} template files`);
88
-
89
- // Phase 4: Detect technology stack
90
- spinner.start('Detecting technology stack...');
91
- const techStack = await detectTechStack(targetDir);
92
- spinner.succeed(`Detected: ${techStack.summary || 'Generic project'}`);
93
-
94
- // Phase 5: Replace placeholders
95
- spinner.start('Populating templates with project info...');
96
- const placeholdersReplaced = await replacePlaceholders(targetDir, {
97
- ...config,
98
- techStack
99
- });
100
- spinner.succeed(`Replaced ${placeholdersReplaced} placeholders`);
101
-
102
- // Phase 6: Create CLAUDE.md at root
103
- spinner.start('Creating CLAUDE.md...');
104
- await createClaudeMd(targetDir, config, techStack);
105
- spinner.succeed('Created CLAUDE.md at project root');
106
-
107
- // Phase 7: Validate installation
108
- spinner.start('Validating installation...');
109
- const validation = await validateInstallation(targetDir);
110
- if (validation.passed) {
111
- spinner.succeed('All validations passed');
112
- } else {
113
- spinner.warn(`Validation completed with ${validation.warnings} warnings`);
114
- }
115
-
116
- // Phase 8: Install Claude Code plugin (optional)
117
- if (config.installPlugin) {
118
- spinner.start('Installing Claude Code plugin...');
119
- // Plugin installation would use: npx claude-plugins install claude-context-engineering
120
- // For now, we'll note it as a next step
121
- spinner.succeed('Plugin ready (install with: /plugin install claude-context-engineering)');
122
- }
123
-
124
- // Phase 9: Initialize git (optional)
125
- if (config.initGit && !fs.existsSync(path.join(targetDir, '.git'))) {
126
- spinner.start('Initializing git repository...');
127
- try {
128
- const { execSync } = require('child_process');
129
- execSync('git init', { cwd: targetDir, stdio: 'pipe' });
130
- spinner.succeed('Initialized git repository');
131
- } catch (e) {
132
- spinner.warn('Could not initialize git (git may not be installed)');
133
- }
134
- }
135
-
136
- // Success message
137
- showSuccess(config, techStack);
138
- }
139
-
140
- /**
141
- * Display success message with next steps
142
- */
143
- function showSuccess(config, techStack) {
144
- const boxWidth = 59;
145
-
146
- console.log(`
147
- ${chalk.green('╔' + '═'.repeat(boxWidth) + '╗')}
148
- ${chalk.green('║')} ${chalk.bold.white('✓ Context Engineering Initialized Successfully!')} ${chalk.green('║')}
149
- ${chalk.green('╚' + '═'.repeat(boxWidth) + '╝')}
150
-
151
- ${chalk.bold('Created:')}
152
- ${chalk.cyan('•')} .claude/ ${chalk.gray('(context engineering system)')}
153
- ${chalk.cyan('•')} CLAUDE.md ${chalk.gray('(AI navigation guide)')}
154
-
155
- ${chalk.bold('Available Commands:')}
156
- ${chalk.cyan('•')} /rpi-research ${chalk.gray('Research a feature')}
157
- ${chalk.cyan('•')} /rpi-plan ${chalk.gray('Create implementation plan')}
158
- ${chalk.cyan('•')} /rpi-implement ${chalk.gray('Execute with documentation')}
159
- ${chalk.cyan('•')} /validate-all ${chalk.gray('Run validation suite')}
160
-
161
- ${chalk.bold('Next Steps:')}
162
- ${chalk.white('1.')} Review ${chalk.cyan('CLAUDE.md')} and customize for your project
163
- ${chalk.white('2.')} Run: ${chalk.cyan('@context-engineer "Discover workflows for this codebase"')}
164
- ${chalk.white('3.')} Use ${chalk.cyan('/rpi-research')} for your first feature
165
-
166
- ${chalk.gray('Documentation: https://github.com/SireJeff/claude-context-engineering-template')}
167
- `);
168
- }
169
-
170
- module.exports = { run };
1
+ /**
2
+ * Main orchestrator for create-claude-context
3
+ *
4
+ * Handles the full installation flow:
5
+ * 1. Interactive prompts (or defaults)
6
+ * 2. Directory structure creation
7
+ * 3. Template copying
8
+ * 4. Environment detection (Claude Code or standalone)
9
+ * 5. Tech stack detection
10
+ * 6. Deep codebase analysis
11
+ * 7. Template population with real data
12
+ * 8. Placeholder replacement
13
+ * 9. AI orchestration (if in Claude Code)
14
+ * 10. Validation
15
+ * 11. Plugin installation (optional)
16
+ * 12. Git initialization (optional)
17
+ */
18
+
19
+ const path = require('path');
20
+ const fs = require('fs');
21
+ const chalk = require('chalk');
22
+ const { runPrompts, getDefaults } = require('./prompts');
23
+ const { createSpinner } = require('./spinner');
24
+ const {
25
+ createDirectoryStructure,
26
+ copyTemplates,
27
+ createClaudeMd
28
+ } = require('./installer');
29
+ const { detectTechStack } = require('./detector');
30
+ const { replacePlaceholders } = require('./placeholder');
31
+ const { validateInstallation } = require('./validate');
32
+
33
+ // New modules for context engineering initialization
34
+ const { detectEnvironment, forceMode, getEnvironmentDescription } = require('./environment-detector');
35
+ const { analyzeCodebase } = require('./static-analyzer');
36
+ const {
37
+ createInitializationRequest,
38
+ generateAgentInstructions,
39
+ isInitializationPending
40
+ } = require('./ai-orchestrator');
41
+ const { populateAllTemplates } = require('./template-populator');
42
+
43
+ /**
44
+ * Main entry point
45
+ */
46
+ async function run(options = {}) {
47
+ const {
48
+ projectName,
49
+ skipPrompts = false,
50
+ installPlugin = true,
51
+ template,
52
+ initGit = true,
53
+ dryRun = false,
54
+ verbose = false,
55
+ // New options for context engineering
56
+ forceAi = false,
57
+ forceStatic = false,
58
+ analyzeOnly = false
59
+ } = options;
60
+
61
+ // Determine target directory
62
+ const targetDir = projectName
63
+ ? path.resolve(process.cwd(), projectName)
64
+ : process.cwd();
65
+
66
+ const projectNameResolved = projectName || path.basename(targetDir);
67
+ const claudeDir = path.join(targetDir, '.claude');
68
+
69
+ // Get configuration (prompts or defaults)
70
+ let config;
71
+ if (skipPrompts) {
72
+ config = await getDefaults(targetDir, template);
73
+ } else {
74
+ config = await runPrompts(targetDir, template);
75
+ }
76
+
77
+ config.projectName = projectNameResolved;
78
+ config.targetDir = targetDir;
79
+ config.installPlugin = installPlugin && config.installPlugin;
80
+ config.initGit = initGit;
81
+ config.dryRun = dryRun;
82
+ config.verbose = verbose;
83
+
84
+ if (dryRun) {
85
+ console.log(chalk.yellow('\n--dry-run mode: No changes will be made\n'));
86
+ console.log('Configuration:', JSON.stringify(config, null, 2));
87
+ return;
88
+ }
89
+
90
+ // Phase 1: Create target directory if needed
91
+ const spinner = createSpinner();
92
+
93
+ if (projectName && !fs.existsSync(targetDir)) {
94
+ spinner.start('Creating project directory...');
95
+ fs.mkdirSync(targetDir, { recursive: true });
96
+ spinner.succeed(`Created project directory: ${projectNameResolved}`);
97
+ }
98
+
99
+ // Phase 2: Detect execution environment
100
+ spinner.start('Detecting execution environment...');
101
+ let env;
102
+ if (forceAi) {
103
+ env = forceMode('full-ai');
104
+ } else if (forceStatic) {
105
+ env = forceMode('standalone');
106
+ } else {
107
+ env = detectEnvironment();
108
+ }
109
+ spinner.succeed(`Environment: ${getEnvironmentDescription(env)}`);
110
+
111
+ // Phase 3: Create .claude directory structure
112
+ spinner.start('Creating .claude directory structure...');
113
+ const dirsCreated = await createDirectoryStructure(targetDir, config);
114
+ spinner.succeed(`Created .claude directory structure (${dirsCreated} directories)`);
115
+
116
+ // Phase 4: Copy template files
117
+ spinner.start('Copying template files...');
118
+ const filesCopied = await copyTemplates(targetDir, config);
119
+ spinner.succeed(`Copied ${filesCopied} template files`);
120
+
121
+ // Phase 5: Detect technology stack
122
+ spinner.start('Detecting technology stack...');
123
+ const techStack = await detectTechStack(targetDir);
124
+ config.techStack = techStack;
125
+ spinner.succeed(`Detected: ${techStack.summary || 'Generic project'}`);
126
+
127
+ // Phase 6: Deep codebase analysis
128
+ spinner.start('Analyzing codebase...');
129
+ let analysis;
130
+ try {
131
+ analysis = await analyzeCodebase(targetDir, { techStack });
132
+ const summary = analysis.summary || {};
133
+ spinner.succeed(
134
+ `Analyzed: ${summary.totalFiles || 0} files, ` +
135
+ `${summary.entryPointCount || 0} entry points, ` +
136
+ `${summary.workflowCount || 0} workflows`
137
+ );
138
+ } catch (error) {
139
+ spinner.warn(`Analysis partial: ${error.message}`);
140
+ analysis = { workflows: [], entryPoints: [], architecture: {}, techStack };
141
+ }
142
+
143
+ // Add tech stack to analysis
144
+ analysis.techStack = techStack;
145
+
146
+ // Phase 7: Create CLAUDE.md at root (before population)
147
+ spinner.start('Creating CLAUDE.md...');
148
+ await createClaudeMd(targetDir, config, techStack);
149
+ spinner.succeed('Created CLAUDE.md at project root');
150
+
151
+ // Phase 8: Populate templates with real data
152
+ spinner.start('Populating templates with analysis results...');
153
+ let populationResults;
154
+ try {
155
+ populationResults = await populateAllTemplates(claudeDir, analysis, config);
156
+ const counts = {
157
+ populated: populationResults.populated?.length || 0,
158
+ created: populationResults.created?.length || 0,
159
+ errors: populationResults.errors?.length || 0
160
+ };
161
+ if (counts.errors > 0) {
162
+ spinner.warn(`Populated ${counts.populated} files, created ${counts.created} workflows (${counts.errors} errors)`);
163
+ } else {
164
+ spinner.succeed(`Populated ${counts.populated} files, created ${counts.created} workflow docs`);
165
+ }
166
+ } catch (error) {
167
+ spinner.warn(`Population partial: ${error.message}`);
168
+ populationResults = { populated: [], created: [], errors: [error.message] };
169
+ }
170
+
171
+ // Phase 9: Replace remaining placeholders
172
+ spinner.start('Replacing remaining placeholders...');
173
+ const placeholdersReplaced = await replacePlaceholders(targetDir, {
174
+ ...config,
175
+ techStack,
176
+ analysis
177
+ });
178
+ spinner.succeed(`Replaced ${placeholdersReplaced} placeholders`);
179
+
180
+ // Phase 10: AI Orchestration (if in Claude Code environment)
181
+ if (env.mode === 'full-ai' || env.mode === 'hybrid') {
182
+ spinner.start('Preparing AI initialization request...');
183
+ try {
184
+ createInitializationRequest(claudeDir, config);
185
+ generateAgentInstructions(claudeDir, analysis, config);
186
+ spinner.succeed('Created INIT_REQUEST.md for @context-engineer');
187
+ } catch (error) {
188
+ spinner.warn(`AI setup skipped: ${error.message}`);
189
+ }
190
+ }
191
+
192
+ // Phase 11: Validate installation
193
+ spinner.start('Validating installation...');
194
+ const validation = await validateInstallation(targetDir);
195
+ if (validation.passed) {
196
+ spinner.succeed('All validations passed');
197
+ } else {
198
+ spinner.warn(`Validation completed with ${validation.warnings} warnings`);
199
+ }
200
+
201
+ // Phase 12: Install Claude Code plugin (optional)
202
+ if (config.installPlugin) {
203
+ spinner.start('Installing Claude Code plugin...');
204
+ spinner.succeed('Plugin ready (install with: /plugin install claude-context-engineering)');
205
+ }
206
+
207
+ // Phase 13: Initialize git (optional)
208
+ if (config.initGit && !fs.existsSync(path.join(targetDir, '.git'))) {
209
+ spinner.start('Initializing git repository...');
210
+ try {
211
+ const { execSync } = require('child_process');
212
+ execSync('git init', { cwd: targetDir, stdio: 'pipe' });
213
+ spinner.succeed('Initialized git repository');
214
+ } catch (e) {
215
+ spinner.warn('Could not initialize git (git may not be installed)');
216
+ }
217
+ }
218
+
219
+ // Success message (mode-aware)
220
+ showSuccess(config, techStack, env, analysis, populationResults);
221
+ }
222
+
223
+ /**
224
+ * Display success message with next steps
225
+ */
226
+ function showSuccess(config, techStack, env, analysis, populationResults) {
227
+ const boxWidth = 59;
228
+ const isAiMode = env.mode === 'full-ai' || env.mode === 'hybrid';
229
+ const workflowCount = analysis?.workflows?.length || 0;
230
+ const entryPointCount = analysis?.entryPoints?.length || 0;
231
+
232
+ console.log(`
233
+ ${chalk.green('╔' + '═'.repeat(boxWidth) + '╗')}
234
+ ${chalk.green('║')} ${chalk.bold.white('✓ Context Engineering Initialized Successfully!')} ${chalk.green('║')}
235
+ ${chalk.green('╚' + '═'.repeat(boxWidth) + '╝')}
236
+
237
+ ${chalk.bold('Analysis Results:')}
238
+ ${chalk.cyan('•')} Entry Points: ${chalk.white(entryPointCount)} discovered
239
+ ${chalk.cyan('•')} Workflows: ${chalk.white(workflowCount)} documented
240
+ ${chalk.cyan('•')} Mode: ${chalk.white(env.mode)}
241
+
242
+ ${chalk.bold('Created:')}
243
+ ${chalk.cyan('•')} .claude/ ${chalk.gray('(context engineering system)')}
244
+ ${chalk.cyan('•')} CLAUDE.md ${chalk.gray('(AI navigation guide)')}
245
+ ${workflowCount > 0 ? ` ${chalk.cyan('•')} ${workflowCount} workflow docs ${chalk.gray('(auto-generated)')}` : ''}
246
+
247
+ ${chalk.bold('Available Commands:')}
248
+ ${chalk.cyan('•')} /rpi-research ${chalk.gray('Research a feature')}
249
+ ${chalk.cyan('•')} /rpi-plan ${chalk.gray('Create implementation plan')}
250
+ ${chalk.cyan('•')} /rpi-implement ${chalk.gray('Execute with documentation')}
251
+ ${chalk.cyan('•')} /validate-all ${chalk.gray('Run validation suite')}
252
+ `);
253
+
254
+ if (isAiMode) {
255
+ console.log(`${chalk.bold.yellow('AI Initialization Pending:')}
256
+ ${chalk.white('Run this command in Claude Code to complete:')}
257
+ ${chalk.cyan('@context-engineer "Complete initialization using INIT_REQUEST.md"')}
258
+ `);
259
+ } else {
260
+ console.log(`${chalk.bold('Next Steps:')}
261
+ ${chalk.white('1.')} Review ${chalk.cyan('CLAUDE.md')} and customize for your project
262
+ ${chalk.white('2.')} Review generated workflow docs in ${chalk.cyan('.claude/context/workflows/')}
263
+ ${chalk.white('3.')} Run ${chalk.cyan('@context-engineer "Enhance documentation"')} for AI analysis
264
+ `);
265
+ }
266
+
267
+ console.log(`${chalk.gray('Documentation: https://github.com/SireJeff/claude-context-engineering-template')}
268
+ `);
269
+ }
270
+
271
+ module.exports = { run };