create-universal-ai-context 2.0.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.
Files changed (136) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +171 -0
  3. package/bin/create-ai-context.js +337 -0
  4. package/lib/adapters/antigravity.js +160 -0
  5. package/lib/adapters/claude.js +122 -0
  6. package/lib/adapters/cline.js +111 -0
  7. package/lib/adapters/copilot.js +117 -0
  8. package/lib/adapters/index.js +69 -0
  9. package/lib/ai-context-generator.js +234 -0
  10. package/lib/ai-orchestrator.js +431 -0
  11. package/lib/call-tracer.js +444 -0
  12. package/lib/detector.js +726 -0
  13. package/lib/environment-detector.js +239 -0
  14. package/lib/index.js +310 -0
  15. package/lib/installer.js +418 -0
  16. package/lib/migrate.js +319 -0
  17. package/lib/placeholder.js +541 -0
  18. package/lib/prompts.js +287 -0
  19. package/lib/spinner.js +60 -0
  20. package/lib/static-analyzer.js +729 -0
  21. package/lib/template-populator.js +843 -0
  22. package/lib/template-renderer.js +382 -0
  23. package/lib/validate.js +155 -0
  24. package/package.json +70 -0
  25. package/templates/AI_CONTEXT.md.template +245 -0
  26. package/templates/base/README.md +257 -0
  27. package/templates/base/RPI_WORKFLOW_PLAN.md +320 -0
  28. package/templates/base/agents/api-developer.md +76 -0
  29. package/templates/base/agents/context-engineer.md +525 -0
  30. package/templates/base/agents/core-architect.md +76 -0
  31. package/templates/base/agents/database-ops.md +76 -0
  32. package/templates/base/agents/deployment-ops.md +76 -0
  33. package/templates/base/agents/integration-hub.md +76 -0
  34. package/templates/base/analytics/README.md +114 -0
  35. package/templates/base/automation/config.json +58 -0
  36. package/templates/base/automation/generators/code-mapper.js +308 -0
  37. package/templates/base/automation/generators/index-builder.js +321 -0
  38. package/templates/base/automation/hooks/post-commit.sh +83 -0
  39. package/templates/base/automation/hooks/pre-commit.sh +103 -0
  40. package/templates/base/ci-templates/README.md +108 -0
  41. package/templates/base/ci-templates/github-actions/context-check.yml +144 -0
  42. package/templates/base/ci-templates/github-actions/validate-docs.yml +105 -0
  43. package/templates/base/commands/analytics.md +238 -0
  44. package/templates/base/commands/auto-sync.md +172 -0
  45. package/templates/base/commands/collab.md +194 -0
  46. package/templates/base/commands/help.md +450 -0
  47. package/templates/base/commands/rpi-implement.md +115 -0
  48. package/templates/base/commands/rpi-plan.md +93 -0
  49. package/templates/base/commands/rpi-research.md +88 -0
  50. package/templates/base/commands/session-resume.md +144 -0
  51. package/templates/base/commands/session-save.md +112 -0
  52. package/templates/base/commands/validate-all.md +77 -0
  53. package/templates/base/commands/verify-docs-current.md +86 -0
  54. package/templates/base/config/base.json +57 -0
  55. package/templates/base/config/environments/development.json +13 -0
  56. package/templates/base/config/environments/production.json +17 -0
  57. package/templates/base/config/environments/staging.json +13 -0
  58. package/templates/base/config/local.json.example +21 -0
  59. package/templates/base/context/.meta/generated-at.json +18 -0
  60. package/templates/base/context/ARCHITECTURE_SNAPSHOT.md +156 -0
  61. package/templates/base/context/CODE_TO_WORKFLOW_MAP.md +94 -0
  62. package/templates/base/context/FILE_OWNERSHIP.md +57 -0
  63. package/templates/base/context/INTEGRATION_POINTS.md +92 -0
  64. package/templates/base/context/KNOWN_GOTCHAS.md +195 -0
  65. package/templates/base/context/TESTING_MAP.md +95 -0
  66. package/templates/base/context/WORKFLOW_INDEX.md +129 -0
  67. package/templates/base/context/workflows/WORKFLOW_TEMPLATE.md +294 -0
  68. package/templates/base/indexes/agents/CAPABILITY_MATRIX.md +255 -0
  69. package/templates/base/indexes/agents/CATEGORY_INDEX.md +44 -0
  70. package/templates/base/indexes/code/CATEGORY_INDEX.md +38 -0
  71. package/templates/base/indexes/routing/CATEGORY_INDEX.md +39 -0
  72. package/templates/base/indexes/search/CATEGORY_INDEX.md +39 -0
  73. package/templates/base/indexes/workflows/CATEGORY_INDEX.md +38 -0
  74. package/templates/base/knowledge/README.md +98 -0
  75. package/templates/base/knowledge/sessions/README.md +88 -0
  76. package/templates/base/knowledge/sessions/TEMPLATE.md +150 -0
  77. package/templates/base/knowledge/shared/decisions/0001-adopt-context-engineering.md +144 -0
  78. package/templates/base/knowledge/shared/decisions/README.md +49 -0
  79. package/templates/base/knowledge/shared/decisions/TEMPLATE.md +123 -0
  80. package/templates/base/knowledge/shared/patterns/README.md +62 -0
  81. package/templates/base/knowledge/shared/patterns/TEMPLATE.md +120 -0
  82. package/templates/base/plans/PLAN_TEMPLATE.md +250 -0
  83. package/templates/base/plans/active/.gitkeep +0 -0
  84. package/templates/base/plans/completed/.gitkeep +0 -0
  85. package/templates/base/research/RESEARCH_TEMPLATE.md +153 -0
  86. package/templates/base/research/active/.gitkeep +0 -0
  87. package/templates/base/research/completed/.gitkeep +0 -0
  88. package/templates/base/schemas/agent.schema.json +141 -0
  89. package/templates/base/schemas/anchors.schema.json +54 -0
  90. package/templates/base/schemas/automation.schema.json +93 -0
  91. package/templates/base/schemas/command.schema.json +134 -0
  92. package/templates/base/schemas/hashes.schema.json +40 -0
  93. package/templates/base/schemas/manifest.schema.json +117 -0
  94. package/templates/base/schemas/plan.schema.json +136 -0
  95. package/templates/base/schemas/research.schema.json +115 -0
  96. package/templates/base/schemas/roles.schema.json +34 -0
  97. package/templates/base/schemas/session.schema.json +77 -0
  98. package/templates/base/schemas/settings.schema.json +244 -0
  99. package/templates/base/schemas/staleness.schema.json +53 -0
  100. package/templates/base/schemas/team-config.schema.json +42 -0
  101. package/templates/base/schemas/workflow.schema.json +126 -0
  102. package/templates/base/session/checkpoints/.gitkeep +2 -0
  103. package/templates/base/session/current/state.json +20 -0
  104. package/templates/base/session/history/.gitkeep +2 -0
  105. package/templates/base/settings.json +3 -0
  106. package/templates/base/standards/COMPATIBILITY.md +219 -0
  107. package/templates/base/standards/EXTENSION_GUIDELINES.md +280 -0
  108. package/templates/base/standards/QUALITY_CHECKLIST.md +211 -0
  109. package/templates/base/standards/README.md +66 -0
  110. package/templates/base/sync/anchors.json +6 -0
  111. package/templates/base/sync/hashes.json +6 -0
  112. package/templates/base/sync/staleness.json +10 -0
  113. package/templates/base/team/README.md +168 -0
  114. package/templates/base/team/config.json +79 -0
  115. package/templates/base/team/roles.json +145 -0
  116. package/templates/base/tools/bin/claude-context.js +151 -0
  117. package/templates/base/tools/lib/anchor-resolver.js +276 -0
  118. package/templates/base/tools/lib/config-loader.js +363 -0
  119. package/templates/base/tools/lib/detector.js +350 -0
  120. package/templates/base/tools/lib/diagnose.js +206 -0
  121. package/templates/base/tools/lib/drift-detector.js +373 -0
  122. package/templates/base/tools/lib/errors.js +199 -0
  123. package/templates/base/tools/lib/index.js +36 -0
  124. package/templates/base/tools/lib/init.js +192 -0
  125. package/templates/base/tools/lib/logger.js +230 -0
  126. package/templates/base/tools/lib/placeholder.js +201 -0
  127. package/templates/base/tools/lib/session-manager.js +354 -0
  128. package/templates/base/tools/lib/validate.js +521 -0
  129. package/templates/base/tools/package.json +49 -0
  130. package/templates/handlebars/antigravity.hbs +337 -0
  131. package/templates/handlebars/claude.hbs +184 -0
  132. package/templates/handlebars/cline.hbs +63 -0
  133. package/templates/handlebars/copilot.hbs +131 -0
  134. package/templates/handlebars/partials/gotcha-list.hbs +11 -0
  135. package/templates/handlebars/partials/header.hbs +3 -0
  136. package/templates/handlebars/partials/workflow-summary.hbs +16 -0
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: deployment-ops
3
+ version: "1.0.0"
4
+ displayName: "Deployment Operations"
5
+ description: "CI/CD pipeline management, infrastructure as code, and deployment automation specialist"
6
+ category: "deployment"
7
+ complexity: "high"
8
+ context_budget: "~45K tokens"
9
+ capabilities:
10
+ - "ci-cd-pipeline-design"
11
+ - "infrastructure-as-code"
12
+ - "deployment-strategies"
13
+ - "environment-management"
14
+ - "monitoring-and-rollback"
15
+ workflows:
16
+ - "deployment"
17
+ - "infrastructure"
18
+ - "ci-cd"
19
+ commands: ["/rpi-research", "/rpi-plan", "/rpi-implement", "/validate-all"]
20
+ dependencies:
21
+ agents: []
22
+ commands: []
23
+ hooks:
24
+ pre_invoke: null
25
+ post_invoke: "verify-docs-current"
26
+ examples:
27
+ - invocation: '@deployment-ops "Document deployment pipeline"'
28
+ description: "Create CI/CD documentation"
29
+ - invocation: '@deployment-ops "Review infrastructure configuration"'
30
+ description: "Audit IaC files and configurations"
31
+ - invocation: '@deployment-ops "Plan rollback strategy"'
32
+ description: "Design safe rollback procedures"
33
+ ---
34
+
35
+ # Deployment Ops Agent
36
+
37
+ **Purpose:** CI/CD pipeline management, infrastructure as code, and deployment automation
38
+
39
+ ## Capabilities
40
+
41
+ This agent specializes in:
42
+ - **Pipeline design and optimization** - Creating and optimizing CI/CD pipelines
43
+ - **Infrastructure as code** - Managing cloud infrastructure with Terraform, CloudFormation, etc.
44
+ - **Deployment strategies** - Implementing blue-green, canary, rolling deployments
45
+ - **Environment management** - Managing development, staging, and production environments
46
+ - **Monitoring and rollback** - Implementing monitoring and automatic rollback strategies
47
+
48
+ ## Usage
49
+
50
+ After template initialization, this agent will be generated based on your deployment requirements. It will:
51
+ 1. Analyze your existing deployment pipelines
52
+ 2. Create comprehensive deployment documentation
53
+ 3. Identify potential reliability issues
54
+ 4. Provide recommendations for deployment optimization
55
+
56
+ ## Example Commands
57
+
58
+ ```bash
59
+ @deployment-ops "Document deployment pipeline for [environment]"
60
+ @deployment-ops "Validate infrastructure as code for [service]"
61
+ @deployment-ops "Generate rollback strategy for [deployment]"
62
+ ```
63
+
64
+ ## Integration Points
65
+
66
+ This agent integrates with:
67
+ - Workflow documentation
68
+ - API design (for deployment endpoints)
69
+ - Monitoring and alerting
70
+ - Security validation
71
+
72
+ ## Validation
73
+
74
+ - Pipeline reliability checks
75
+ - Infrastructure consistency validation
76
+ - Deployment strategy verification
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: integration-hub
3
+ version: "1.0.0"
4
+ displayName: "Integration Hub"
5
+ description: "External service integration, third-party API management, and webhook handling specialist"
6
+ category: "integration"
7
+ complexity: "medium-high"
8
+ context_budget: "~40K tokens"
9
+ capabilities:
10
+ - "third-party-api-integration"
11
+ - "webhook-handling"
12
+ - "authentication-management"
13
+ - "rate-limiting-implementation"
14
+ - "error-handling-patterns"
15
+ workflows:
16
+ - "external-services"
17
+ - "webhooks"
18
+ - "integrations"
19
+ commands: ["/rpi-research", "/rpi-plan", "/rpi-implement"]
20
+ dependencies:
21
+ agents: []
22
+ commands: []
23
+ hooks:
24
+ pre_invoke: null
25
+ post_invoke: "verify-docs-current"
26
+ examples:
27
+ - invocation: '@integration-hub "Document integration with [service]"'
28
+ description: "Create integration documentation"
29
+ - invocation: '@integration-hub "Analyze webhook endpoints"'
30
+ description: "Review webhook security and reliability"
31
+ - invocation: '@integration-hub "Review authentication flows"'
32
+ description: "Audit third-party auth mechanisms"
33
+ ---
34
+
35
+ # Integration Hub Agent
36
+
37
+ **Purpose:** External service integration, third-party API management, and webhook handling
38
+
39
+ ## Capabilities
40
+
41
+ This agent specializes in:
42
+ - **Third-party API integration** - Connecting with external services and APIs
43
+ - **Webhook handling** - Managing incoming and outgoing webhooks
44
+ - **Authentication management** - Handling API keys, OAuth, and other auth mechanisms
45
+ - **Rate limiting and retries** - Implementing robust integration patterns
46
+ - **Error handling** - Managing integration failures and retries
47
+
48
+ ## Usage
49
+
50
+ After template initialization, this agent will be generated based on your integration requirements. It will:
51
+ 1. Analyze your existing external integrations
52
+ 2. Create comprehensive integration documentation
53
+ 3. Identify potential security vulnerabilities
54
+ 4. Provide recommendations for integration optimization
55
+
56
+ ## Example Commands
57
+
58
+ ```bash
59
+ @integration-hub "Document integration with [service]"
60
+ @integration-hub "Validate webhook endpoints for [integration]"
61
+ @integration-hub "Generate authentication strategy for [service]"
62
+ ```
63
+
64
+ ## Integration Points
65
+
66
+ This agent integrates with:
67
+ - Workflow documentation
68
+ - API design (for integration endpoints)
69
+ - Testing strategies
70
+ - Monitoring and alerting
71
+
72
+ ## Validation
73
+
74
+ - Integration security checks
75
+ - Authentication mechanism validation
76
+ - Rate limiting configuration
@@ -0,0 +1,114 @@
1
+ # Analytics Data
2
+
3
+ Local storage for usage analytics and metrics.
4
+
5
+ ## Overview
6
+
7
+ This directory stores local analytics data collected during Claude Code sessions. All data is stored locally and never sent externally unless explicitly configured.
8
+
9
+ ## Files
10
+
11
+ | File | Description |
12
+ |------|-------------|
13
+ | `sessions.json` | Session history and metadata |
14
+ | `commands.json` | Command usage statistics |
15
+ | `agents.json` | Agent invocation tracking |
16
+ | `context.json` | Context budget metrics over time |
17
+ | `exports/` | Exported analytics files |
18
+
19
+ ## Data Schema
20
+
21
+ ### sessions.json
22
+
23
+ ```json
24
+ {
25
+ "sessions": [
26
+ {
27
+ "id": "uuid",
28
+ "started": "ISO-timestamp",
29
+ "ended": "ISO-timestamp",
30
+ "duration_minutes": 45,
31
+ "files_modified": 12,
32
+ "commits": 3,
33
+ "member_id": "dev-1"
34
+ }
35
+ ]
36
+ }
37
+ ```
38
+
39
+ ### commands.json
40
+
41
+ ```json
42
+ {
43
+ "commands": {
44
+ "/rpi-research": {
45
+ "count": 23,
46
+ "last_used": "ISO-timestamp",
47
+ "success_rate": 0.95,
48
+ "history": [
49
+ {
50
+ "timestamp": "ISO-timestamp",
51
+ "duration_seconds": 120,
52
+ "success": true
53
+ }
54
+ ]
55
+ }
56
+ }
57
+ }
58
+ ```
59
+
60
+ ### agents.json
61
+
62
+ ```json
63
+ {
64
+ "agents": {
65
+ "@core-architect": {
66
+ "invocations": 18,
67
+ "last_used": "ISO-timestamp",
68
+ "avg_context_tokens": 35000,
69
+ "tasks_completed": 15
70
+ }
71
+ }
72
+ }
73
+ ```
74
+
75
+ ### context.json
76
+
77
+ ```json
78
+ {
79
+ "snapshots": [
80
+ {
81
+ "timestamp": "ISO-timestamp",
82
+ "total_tokens": 45000,
83
+ "breakdown": {
84
+ "indexes": 12400,
85
+ "workflows": 18200,
86
+ "agents": 8600,
87
+ "commands": 5800
88
+ },
89
+ "budget_percentage": 22.5
90
+ }
91
+ ]
92
+ }
93
+ ```
94
+
95
+ ## Retention
96
+
97
+ Data is retained according to `telemetry.retention_days` in settings (default: 90 days). Older data is automatically pruned.
98
+
99
+ ## Clearing Data
100
+
101
+ To clear all analytics data:
102
+
103
+ ```
104
+ /analytics clear
105
+ ```
106
+
107
+ Or manually delete files in this directory (except README.md).
108
+
109
+ ## Privacy
110
+
111
+ - All data stored locally
112
+ - No external transmission
113
+ - User has full control
114
+ - Can be disabled in settings
@@ -0,0 +1,58 @@
1
+ {
2
+ "$schema": "../schemas/automation.schema.json",
3
+ "version": "1.0.0",
4
+ "generators": {
5
+ "code_mapper": {
6
+ "enabled": true,
7
+ "output_path": "context/CODE_TO_WORKFLOW_MAP.md",
8
+ "scan_patterns": [
9
+ "context/workflows/*.md",
10
+ "agents/*.md",
11
+ "commands/*.md"
12
+ ],
13
+ "reference_patterns": [
14
+ "\\[Line (\\d+)\\]",
15
+ "\\[Lines (\\d+)-(\\d+)\\]",
16
+ ":(\\d+)",
17
+ "::(\\w+)\\(\\)"
18
+ ],
19
+ "ignore_paths": [
20
+ "node_modules",
21
+ ".git",
22
+ "dist",
23
+ "build"
24
+ ]
25
+ },
26
+ "index_builder": {
27
+ "enabled": true,
28
+ "rebuild_on_change": true,
29
+ "indexes": [
30
+ "indexes/workflows/CATEGORY_INDEX.md",
31
+ "indexes/code/CATEGORY_INDEX.md",
32
+ "indexes/agents/CATEGORY_INDEX.md"
33
+ ]
34
+ },
35
+ "gotcha_extractor": {
36
+ "enabled": false,
37
+ "scan_git_history": true,
38
+ "keywords": ["fix", "bug", "revert", "hotfix", "GOTCHA", "WARN"],
39
+ "output_path": "context/KNOWN_GOTCHAS.md"
40
+ }
41
+ },
42
+ "hooks": {
43
+ "pre_commit": {
44
+ "enabled": true,
45
+ "check_drift": true,
46
+ "block_on_stale": false
47
+ },
48
+ "post_commit": {
49
+ "enabled": true,
50
+ "rebuild_code_map": true,
51
+ "update_hashes": true
52
+ }
53
+ },
54
+ "schedule": {
55
+ "full_rebuild": "weekly",
56
+ "drift_check": "on_file_change"
57
+ }
58
+ }
@@ -0,0 +1,308 @@
1
+ /**
2
+ * Code Mapper - Auto-generates CODE_TO_WORKFLOW_MAP.md
3
+ *
4
+ * Scans workflow files for file:line references and builds
5
+ * a reverse index mapping code files to their documentation.
6
+ */
7
+
8
+ const fs = require('fs');
9
+ const path = require('path');
10
+ const glob = require('glob');
11
+
12
+ const CLAUDE_DIR = path.join(__dirname, '..', '..');
13
+ const CONFIG_PATH = path.join(__dirname, '..', 'config.json');
14
+
15
+ /**
16
+ * Load automation config
17
+ */
18
+ function loadConfig() {
19
+ try {
20
+ const content = fs.readFileSync(CONFIG_PATH, 'utf-8');
21
+ return JSON.parse(content);
22
+ } catch (error) {
23
+ console.error('Failed to load config:', error.message);
24
+ return null;
25
+ }
26
+ }
27
+
28
+ /**
29
+ * Extract file references from markdown content
30
+ */
31
+ function extractReferences(content, filePath) {
32
+ const references = [];
33
+ const patterns = [
34
+ // file.ext:123 format
35
+ /([a-zA-Z0-9_\-./]+\.[a-zA-Z]+):(\d+)/g,
36
+ // [Line 123] format with preceding file path
37
+ /`([^`]+)`[^[]*\[Line (\d+)\]/g,
38
+ // [Lines 123-456] format
39
+ /`([^`]+)`[^[]*\[Lines (\d+)-(\d+)\]/g,
40
+ // file.ext::function() semantic anchor format
41
+ /([a-zA-Z0-9_\-./]+\.[a-zA-Z]+)::(\w+)\(\)/g
42
+ ];
43
+
44
+ // Simple line number extraction
45
+ const linePattern = /([a-zA-Z0-9_\-./]+\.[a-zA-Z0-9]+):(\d+)/g;
46
+ let match;
47
+ while ((match = linePattern.exec(content)) !== null) {
48
+ references.push({
49
+ file: match[1],
50
+ line: parseInt(match[2]),
51
+ type: 'line',
52
+ source: filePath
53
+ });
54
+ }
55
+
56
+ // Semantic anchor extraction
57
+ const anchorPattern = /([a-zA-Z0-9_\-./]+\.[a-zA-Z0-9]+)::(\w+)\(\)/g;
58
+ while ((match = anchorPattern.exec(content)) !== null) {
59
+ references.push({
60
+ file: match[1],
61
+ anchor: match[2],
62
+ type: 'anchor',
63
+ source: filePath
64
+ });
65
+ }
66
+
67
+ return references;
68
+ }
69
+
70
+ /**
71
+ * Scan workflow files and extract all references
72
+ */
73
+ function scanWorkflows() {
74
+ const config = loadConfig();
75
+ if (!config) return {};
76
+
77
+ const allReferences = {};
78
+ const scanPatterns = config.generators.code_mapper.scan_patterns || [
79
+ 'context/workflows/*.md',
80
+ 'agents/*.md'
81
+ ];
82
+
83
+ for (const pattern of scanPatterns) {
84
+ const fullPattern = path.join(CLAUDE_DIR, pattern);
85
+ const files = glob.sync(fullPattern);
86
+
87
+ for (const file of files) {
88
+ try {
89
+ const content = fs.readFileSync(file, 'utf-8');
90
+ const relativePath = path.relative(CLAUDE_DIR, file);
91
+ const refs = extractReferences(content, relativePath);
92
+
93
+ for (const ref of refs) {
94
+ const normalizedPath = ref.file.replace(/\\/g, '/');
95
+ if (!allReferences[normalizedPath]) {
96
+ allReferences[normalizedPath] = {
97
+ documentedIn: [],
98
+ references: []
99
+ };
100
+ }
101
+
102
+ // Add source document
103
+ if (!allReferences[normalizedPath].documentedIn.includes(relativePath)) {
104
+ allReferences[normalizedPath].documentedIn.push(relativePath);
105
+ }
106
+
107
+ // Add reference details
108
+ allReferences[normalizedPath].references.push({
109
+ source: relativePath,
110
+ line: ref.line,
111
+ anchor: ref.anchor,
112
+ type: ref.type
113
+ });
114
+ }
115
+ } catch (error) {
116
+ console.error(`Error scanning ${file}:`, error.message);
117
+ }
118
+ }
119
+ }
120
+
121
+ return allReferences;
122
+ }
123
+
124
+ /**
125
+ * Generate CODE_TO_WORKFLOW_MAP.md content
126
+ */
127
+ function generateMapContent(references) {
128
+ const now = new Date().toISOString();
129
+ let content = `# Code to Workflow Map
130
+
131
+ > **Auto-generated:** ${now}
132
+ > **Generator:** code-mapper.js
133
+ >
134
+ > This file maps source code files to the workflow documentation that references them.
135
+ > Use this to find which docs need updating after code changes.
136
+
137
+ ---
138
+
139
+ ## How to Use
140
+
141
+ 1. **Modified a file?** Search for it below
142
+ 2. **Find "Documented In"** section for affected workflows
143
+ 3. **Check references** to see what needs updating
144
+ 4. **Run \`/verify-docs-current [file]\`** to validate
145
+
146
+ ---
147
+
148
+ ## File Mappings
149
+
150
+ `;
151
+
152
+ // Sort files alphabetically
153
+ const sortedFiles = Object.keys(references).sort();
154
+
155
+ // Group by directory
156
+ const byDirectory = {};
157
+ for (const file of sortedFiles) {
158
+ const dir = path.dirname(file) || '.';
159
+ if (!byDirectory[dir]) {
160
+ byDirectory[dir] = [];
161
+ }
162
+ byDirectory[dir].push(file);
163
+ }
164
+
165
+ for (const dir of Object.keys(byDirectory).sort()) {
166
+ content += `### ${dir}/\n\n`;
167
+
168
+ for (const file of byDirectory[dir]) {
169
+ const data = references[file];
170
+ const fileName = path.basename(file);
171
+ const refCount = data.references.length;
172
+
173
+ content += `#### \`${fileName}\`\n\n`;
174
+ content += `**Documented In:**\n`;
175
+ for (const doc of data.documentedIn) {
176
+ content += `- [${doc}](./${doc})\n`;
177
+ }
178
+
179
+ content += `\n**References:** ${refCount}\n`;
180
+
181
+ // Group references by type
182
+ const lineRefs = data.references.filter(r => r.type === 'line');
183
+ const anchorRefs = data.references.filter(r => r.type === 'anchor');
184
+
185
+ if (lineRefs.length > 0) {
186
+ content += `\n*Line References:*\n`;
187
+ for (const ref of lineRefs.slice(0, 5)) {
188
+ content += `- Line ${ref.line} in ${ref.source}\n`;
189
+ }
190
+ if (lineRefs.length > 5) {
191
+ content += `- ... and ${lineRefs.length - 5} more\n`;
192
+ }
193
+ }
194
+
195
+ if (anchorRefs.length > 0) {
196
+ content += `\n*Semantic Anchors:*\n`;
197
+ for (const ref of anchorRefs) {
198
+ content += `- \`${ref.anchor}()\` in ${ref.source}\n`;
199
+ }
200
+ }
201
+
202
+ content += `\n**Update After Changing:**\n`;
203
+ for (const doc of data.documentedIn) {
204
+ content += `- [ ] ${doc}\n`;
205
+ }
206
+
207
+ content += '\n---\n\n';
208
+ }
209
+ }
210
+
211
+ // Summary section
212
+ content += `## Summary
213
+
214
+ | Metric | Value |
215
+ |--------|-------|
216
+ | Files Documented | ${sortedFiles.length} |
217
+ | Total References | ${Object.values(references).reduce((sum, r) => sum + r.references.length, 0)} |
218
+ | Workflow Files | ${new Set(Object.values(references).flatMap(r => r.documentedIn)).size} |
219
+ | Generated | ${now} |
220
+
221
+ ---
222
+
223
+ ## Files NOT Currently Documented
224
+
225
+ *Run \`npx claude-context generate --scan-orphans\` to find undocumented code files.*
226
+
227
+ ---
228
+
229
+ *This file is auto-generated. Do not edit manually.*
230
+ *Regenerate with: \`npx claude-context generate --code-map\`*
231
+ `;
232
+
233
+ return content;
234
+ }
235
+
236
+ /**
237
+ * Generate and write CODE_TO_WORKFLOW_MAP.md
238
+ */
239
+ function generate(options = {}) {
240
+ const { dryRun = false, verbose = false } = options;
241
+
242
+ console.log('Scanning workflow files...');
243
+ const references = scanWorkflows();
244
+
245
+ const fileCount = Object.keys(references).length;
246
+ const refCount = Object.values(references).reduce(
247
+ (sum, r) => sum + r.references.length, 0
248
+ );
249
+
250
+ console.log(`Found ${fileCount} files with ${refCount} references`);
251
+
252
+ if (verbose) {
253
+ for (const [file, data] of Object.entries(references)) {
254
+ console.log(` ${file}: ${data.references.length} refs in ${data.documentedIn.length} docs`);
255
+ }
256
+ }
257
+
258
+ const content = generateMapContent(references);
259
+
260
+ if (dryRun) {
261
+ console.log('\n--- DRY RUN OUTPUT ---\n');
262
+ console.log(content.substring(0, 2000) + '\n...(truncated)');
263
+ return { success: true, fileCount, refCount };
264
+ }
265
+
266
+ const outputPath = path.join(CLAUDE_DIR, 'context', 'CODE_TO_WORKFLOW_MAP.md');
267
+ try {
268
+ fs.writeFileSync(outputPath, content);
269
+ console.log(`Generated: ${outputPath}`);
270
+
271
+ // Update metadata
272
+ const metaPath = path.join(CLAUDE_DIR, 'context', '.meta', 'generated-at.json');
273
+ const metaDir = path.dirname(metaPath);
274
+ if (!fs.existsSync(metaDir)) {
275
+ fs.mkdirSync(metaDir, { recursive: true });
276
+ }
277
+ const metadata = {
278
+ 'CODE_TO_WORKFLOW_MAP.md': {
279
+ generatedAt: new Date().toISOString(),
280
+ filesScanned: fileCount,
281
+ referencesFound: refCount
282
+ }
283
+ };
284
+ fs.writeFileSync(metaPath, JSON.stringify(metadata, null, 2));
285
+
286
+ return { success: true, fileCount, refCount, outputPath };
287
+ } catch (error) {
288
+ console.error('Failed to write output:', error.message);
289
+ return { success: false, error: error.message };
290
+ }
291
+ }
292
+
293
+ // CLI execution
294
+ if (require.main === module) {
295
+ const args = process.argv.slice(2);
296
+ const dryRun = args.includes('--dry-run');
297
+ const verbose = args.includes('--verbose') || args.includes('-v');
298
+
299
+ const result = generate({ dryRun, verbose });
300
+ process.exit(result.success ? 0 : 1);
301
+ }
302
+
303
+ module.exports = {
304
+ generate,
305
+ scanWorkflows,
306
+ extractReferences,
307
+ generateMapContent
308
+ };