create-claude-context 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +146 -146
- package/bin/create-claude-context.js +61 -61
- package/lib/detector.js +373 -373
- package/lib/index.js +170 -170
- package/lib/installer.js +371 -362
- package/lib/placeholder.js +208 -208
- package/lib/prompts.js +287 -287
- package/lib/spinner.js +60 -60
- package/lib/validate.js +147 -147
- package/package.json +59 -59
- package/templates/CLAUDE.md.template +235 -235
- package/templates/base/README.md +257 -257
- package/templates/base/RPI_WORKFLOW_PLAN.md +320 -320
- package/templates/base/agents/api-developer.md +76 -76
- package/templates/base/agents/context-engineer.md +525 -525
- package/templates/base/agents/core-architect.md +76 -76
- package/templates/base/agents/database-ops.md +76 -76
- package/templates/base/agents/deployment-ops.md +76 -76
- package/templates/base/agents/integration-hub.md +76 -76
- package/templates/base/analytics/README.md +114 -114
- package/templates/base/automation/config.json +58 -0
- package/templates/base/automation/generators/code-mapper.js +308 -0
- package/templates/base/automation/generators/index-builder.js +321 -0
- package/templates/base/automation/hooks/post-commit.sh +83 -0
- package/templates/base/automation/hooks/pre-commit.sh +103 -0
- package/templates/base/ci-templates/README.md +108 -108
- package/templates/base/ci-templates/github-actions/context-check.yml +144 -144
- package/templates/base/ci-templates/github-actions/validate-docs.yml +105 -105
- package/templates/base/commands/analytics.md +238 -238
- package/templates/base/commands/auto-sync.md +172 -0
- package/templates/base/commands/collab.md +194 -194
- package/templates/base/commands/help.md +450 -450
- package/templates/base/commands/rpi-implement.md +115 -115
- package/templates/base/commands/rpi-plan.md +93 -93
- package/templates/base/commands/rpi-research.md +88 -88
- package/templates/base/commands/session-resume.md +144 -0
- package/templates/base/commands/session-save.md +112 -0
- package/templates/base/commands/validate-all.md +77 -77
- package/templates/base/commands/verify-docs-current.md +86 -86
- package/templates/base/config/base.json +57 -57
- package/templates/base/config/environments/development.json +13 -13
- package/templates/base/config/environments/production.json +17 -17
- package/templates/base/config/environments/staging.json +13 -13
- package/templates/base/config/local.json.example +21 -21
- package/templates/base/context/.meta/generated-at.json +18 -0
- package/templates/base/context/ARCHITECTURE_SNAPSHOT.md +156 -156
- package/templates/base/context/CODE_TO_WORKFLOW_MAP.md +94 -94
- package/templates/base/context/FILE_OWNERSHIP.md +57 -0
- package/templates/base/context/INTEGRATION_POINTS.md +92 -0
- package/templates/base/context/KNOWN_GOTCHAS.md +195 -195
- package/templates/base/context/TESTING_MAP.md +95 -0
- package/templates/base/context/WORKFLOW_INDEX.md +129 -129
- package/templates/base/context/workflows/WORKFLOW_TEMPLATE.md +294 -294
- package/templates/base/indexes/agents/CAPABILITY_MATRIX.md +255 -255
- package/templates/base/indexes/agents/CATEGORY_INDEX.md +44 -44
- package/templates/base/indexes/code/CATEGORY_INDEX.md +38 -38
- package/templates/base/indexes/routing/CATEGORY_INDEX.md +39 -39
- package/templates/base/indexes/search/CATEGORY_INDEX.md +39 -39
- package/templates/base/indexes/workflows/CATEGORY_INDEX.md +38 -38
- package/templates/base/knowledge/README.md +98 -98
- package/templates/base/knowledge/sessions/README.md +88 -88
- package/templates/base/knowledge/sessions/TEMPLATE.md +150 -150
- package/templates/base/knowledge/shared/decisions/0001-adopt-context-engineering.md +144 -144
- package/templates/base/knowledge/shared/decisions/README.md +49 -49
- package/templates/base/knowledge/shared/decisions/TEMPLATE.md +123 -123
- package/templates/base/knowledge/shared/patterns/README.md +62 -62
- package/templates/base/knowledge/shared/patterns/TEMPLATE.md +120 -120
- package/templates/base/plans/PLAN_TEMPLATE.md +250 -250
- package/templates/base/research/RESEARCH_TEMPLATE.md +153 -153
- package/templates/base/schemas/agent.schema.json +141 -141
- package/templates/base/schemas/anchors.schema.json +54 -0
- package/templates/base/schemas/automation.schema.json +93 -0
- package/templates/base/schemas/command.schema.json +134 -134
- package/templates/base/schemas/hashes.schema.json +40 -0
- package/templates/base/schemas/manifest.schema.json +117 -117
- package/templates/base/schemas/plan.schema.json +136 -136
- package/templates/base/schemas/research.schema.json +115 -115
- package/templates/base/schemas/roles.schema.json +34 -0
- package/templates/base/schemas/session.schema.json +77 -0
- package/templates/base/schemas/settings.schema.json +244 -244
- package/templates/base/schemas/staleness.schema.json +53 -0
- package/templates/base/schemas/team-config.schema.json +42 -0
- package/templates/base/schemas/workflow.schema.json +126 -126
- package/templates/base/session/checkpoints/.gitkeep +2 -0
- package/templates/base/session/current/state.json +20 -0
- package/templates/base/session/history/.gitkeep +2 -0
- package/templates/base/settings.json +79 -57
- package/templates/base/standards/COMPATIBILITY.md +219 -219
- package/templates/base/standards/EXTENSION_GUIDELINES.md +280 -280
- package/templates/base/standards/QUALITY_CHECKLIST.md +211 -211
- package/templates/base/standards/README.md +66 -66
- package/templates/base/sync/anchors.json +6 -0
- package/templates/base/sync/hashes.json +6 -0
- package/templates/base/sync/staleness.json +10 -0
- package/templates/base/team/README.md +168 -168
- package/templates/base/team/config.json +79 -79
- package/templates/base/team/roles.json +145 -145
- package/templates/base/tools/bin/claude-context.js +151 -151
- package/templates/base/tools/lib/anchor-resolver.js +276 -0
- package/templates/base/tools/lib/config-loader.js +363 -363
- package/templates/base/tools/lib/detector.js +350 -350
- package/templates/base/tools/lib/diagnose.js +206 -206
- package/templates/base/tools/lib/drift-detector.js +373 -0
- package/templates/base/tools/lib/errors.js +199 -199
- package/templates/base/tools/lib/index.js +36 -24
- package/templates/base/tools/lib/init.js +192 -192
- package/templates/base/tools/lib/logger.js +230 -230
- package/templates/base/tools/lib/placeholder.js +201 -201
- package/templates/base/tools/lib/session-manager.js +354 -0
- package/templates/base/tools/lib/validate.js +521 -521
- package/templates/base/tools/package.json +49 -49
package/lib/spinner.js
CHANGED
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Spinner utilities for create-claude-context
|
|
3
|
-
*
|
|
4
|
-
* Provides consistent progress indicators using ora
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
const ora = require('ora');
|
|
8
|
-
const chalk = require('chalk');
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Create a spinner instance with consistent styling
|
|
12
|
-
*/
|
|
13
|
-
function createSpinner(text = '') {
|
|
14
|
-
return ora({
|
|
15
|
-
text,
|
|
16
|
-
color: 'cyan',
|
|
17
|
-
spinner: 'dots'
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Run a task with spinner feedback
|
|
23
|
-
* @param {string} text - Text to display while running
|
|
24
|
-
* @param {Function} task - Async function to run
|
|
25
|
-
* @returns {Promise<any>} - Result of the task
|
|
26
|
-
*/
|
|
27
|
-
async function withSpinner(text, task) {
|
|
28
|
-
const spinner = createSpinner(text);
|
|
29
|
-
spinner.start();
|
|
30
|
-
|
|
31
|
-
try {
|
|
32
|
-
const result = await task();
|
|
33
|
-
spinner.succeed();
|
|
34
|
-
return result;
|
|
35
|
-
} catch (error) {
|
|
36
|
-
spinner.fail(chalk.red(error.message));
|
|
37
|
-
throw error;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Display a progress list
|
|
43
|
-
* @param {Array<{text: string, task: Function}>} items - List of tasks
|
|
44
|
-
*/
|
|
45
|
-
async function progressList(items) {
|
|
46
|
-
const results = [];
|
|
47
|
-
|
|
48
|
-
for (const item of items) {
|
|
49
|
-
const result = await withSpinner(item.text, item.task);
|
|
50
|
-
results.push(result);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return results;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
module.exports = {
|
|
57
|
-
createSpinner,
|
|
58
|
-
withSpinner,
|
|
59
|
-
progressList
|
|
60
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* Spinner utilities for create-claude-context
|
|
3
|
+
*
|
|
4
|
+
* Provides consistent progress indicators using ora
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
const ora = require('ora');
|
|
8
|
+
const chalk = require('chalk');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Create a spinner instance with consistent styling
|
|
12
|
+
*/
|
|
13
|
+
function createSpinner(text = '') {
|
|
14
|
+
return ora({
|
|
15
|
+
text,
|
|
16
|
+
color: 'cyan',
|
|
17
|
+
spinner: 'dots'
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Run a task with spinner feedback
|
|
23
|
+
* @param {string} text - Text to display while running
|
|
24
|
+
* @param {Function} task - Async function to run
|
|
25
|
+
* @returns {Promise<any>} - Result of the task
|
|
26
|
+
*/
|
|
27
|
+
async function withSpinner(text, task) {
|
|
28
|
+
const spinner = createSpinner(text);
|
|
29
|
+
spinner.start();
|
|
30
|
+
|
|
31
|
+
try {
|
|
32
|
+
const result = await task();
|
|
33
|
+
spinner.succeed();
|
|
34
|
+
return result;
|
|
35
|
+
} catch (error) {
|
|
36
|
+
spinner.fail(chalk.red(error.message));
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Display a progress list
|
|
43
|
+
* @param {Array<{text: string, task: Function}>} items - List of tasks
|
|
44
|
+
*/
|
|
45
|
+
async function progressList(items) {
|
|
46
|
+
const results = [];
|
|
47
|
+
|
|
48
|
+
for (const item of items) {
|
|
49
|
+
const result = await withSpinner(item.text, item.task);
|
|
50
|
+
results.push(result);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return results;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
module.exports = {
|
|
57
|
+
createSpinner,
|
|
58
|
+
withSpinner,
|
|
59
|
+
progressList
|
|
60
|
+
};
|
package/lib/validate.js
CHANGED
|
@@ -1,147 +1,147 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Claude Context Engineering - Installation Validator
|
|
3
|
-
*
|
|
4
|
-
* Validates the installation was successful.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
const fs = require('fs');
|
|
8
|
-
const path = require('path');
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Required files and directories for a valid installation
|
|
12
|
-
*/
|
|
13
|
-
const REQUIRED_STRUCTURE = {
|
|
14
|
-
directories: [
|
|
15
|
-
'.claude',
|
|
16
|
-
'.claude/context',
|
|
17
|
-
'.claude/research',
|
|
18
|
-
'.claude/plans',
|
|
19
|
-
],
|
|
20
|
-
files: [
|
|
21
|
-
'CLAUDE.md',
|
|
22
|
-
'.claude/README.md',
|
|
23
|
-
'.claude/settings.json',
|
|
24
|
-
'.claude/context/WORKFLOW_INDEX.md',
|
|
25
|
-
],
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Validate the installation
|
|
30
|
-
*/
|
|
31
|
-
async function validateInstallation(targetDir) {
|
|
32
|
-
const result = {
|
|
33
|
-
passed: true,
|
|
34
|
-
warnings: 0,
|
|
35
|
-
errors: 0,
|
|
36
|
-
checks: [],
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
// Check required directories
|
|
40
|
-
for (const dir of REQUIRED_STRUCTURE.directories) {
|
|
41
|
-
const fullPath = path.join(targetDir, dir);
|
|
42
|
-
const exists = fs.existsSync(fullPath);
|
|
43
|
-
|
|
44
|
-
result.checks.push({
|
|
45
|
-
type: 'directory',
|
|
46
|
-
path: dir,
|
|
47
|
-
status: exists ? 'PASS' : 'FAIL',
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
if (!exists) {
|
|
51
|
-
result.errors++;
|
|
52
|
-
result.passed = false;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// Check required files
|
|
57
|
-
for (const file of REQUIRED_STRUCTURE.files) {
|
|
58
|
-
const fullPath = path.join(targetDir, file);
|
|
59
|
-
const exists = fs.existsSync(fullPath);
|
|
60
|
-
|
|
61
|
-
result.checks.push({
|
|
62
|
-
type: 'file',
|
|
63
|
-
path: file,
|
|
64
|
-
status: exists ? 'PASS' : 'FAIL',
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
if (!exists) {
|
|
68
|
-
result.errors++;
|
|
69
|
-
result.passed = false;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// Check for remaining placeholders in key files
|
|
74
|
-
const filesToCheck = [
|
|
75
|
-
'CLAUDE.md',
|
|
76
|
-
'.claude/README.md',
|
|
77
|
-
'.claude/settings.json',
|
|
78
|
-
];
|
|
79
|
-
|
|
80
|
-
for (const file of filesToCheck) {
|
|
81
|
-
const fullPath = path.join(targetDir, file);
|
|
82
|
-
if (fs.existsSync(fullPath)) {
|
|
83
|
-
const content = fs.readFileSync(fullPath, 'utf8');
|
|
84
|
-
const placeholders = content.match(/\{\{[A-Z_]+\}\}/g) || [];
|
|
85
|
-
|
|
86
|
-
if (placeholders.length > 0) {
|
|
87
|
-
result.checks.push({
|
|
88
|
-
type: 'placeholders',
|
|
89
|
-
path: file,
|
|
90
|
-
status: 'WARN',
|
|
91
|
-
details: `${placeholders.length} placeholders remaining`,
|
|
92
|
-
});
|
|
93
|
-
result.warnings++;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
// Validate settings.json is valid JSON
|
|
99
|
-
const settingsPath = path.join(targetDir, '.claude', 'settings.json');
|
|
100
|
-
if (fs.existsSync(settingsPath)) {
|
|
101
|
-
try {
|
|
102
|
-
JSON.parse(fs.readFileSync(settingsPath, 'utf8'));
|
|
103
|
-
result.checks.push({
|
|
104
|
-
type: 'json',
|
|
105
|
-
path: '.claude/settings.json',
|
|
106
|
-
status: 'PASS',
|
|
107
|
-
});
|
|
108
|
-
} catch (e) {
|
|
109
|
-
result.checks.push({
|
|
110
|
-
type: 'json',
|
|
111
|
-
path: '.claude/settings.json',
|
|
112
|
-
status: 'FAIL',
|
|
113
|
-
details: 'Invalid JSON',
|
|
114
|
-
});
|
|
115
|
-
result.errors++;
|
|
116
|
-
result.passed = false;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return result;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Count files in a directory
|
|
125
|
-
*/
|
|
126
|
-
function countFiles(dir, pattern = '*') {
|
|
127
|
-
if (!fs.existsSync(dir)) return 0;
|
|
128
|
-
|
|
129
|
-
let count = 0;
|
|
130
|
-
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
131
|
-
|
|
132
|
-
for (const entry of entries) {
|
|
133
|
-
if (entry.isFile()) {
|
|
134
|
-
count++;
|
|
135
|
-
} else if (entry.isDirectory()) {
|
|
136
|
-
count += countFiles(path.join(dir, entry.name), pattern);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
return count;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
module.exports = {
|
|
144
|
-
validateInstallation,
|
|
145
|
-
countFiles,
|
|
146
|
-
REQUIRED_STRUCTURE,
|
|
147
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* Claude Context Engineering - Installation Validator
|
|
3
|
+
*
|
|
4
|
+
* Validates the installation was successful.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
const fs = require('fs');
|
|
8
|
+
const path = require('path');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Required files and directories for a valid installation
|
|
12
|
+
*/
|
|
13
|
+
const REQUIRED_STRUCTURE = {
|
|
14
|
+
directories: [
|
|
15
|
+
'.claude',
|
|
16
|
+
'.claude/context',
|
|
17
|
+
'.claude/research',
|
|
18
|
+
'.claude/plans',
|
|
19
|
+
],
|
|
20
|
+
files: [
|
|
21
|
+
'CLAUDE.md',
|
|
22
|
+
'.claude/README.md',
|
|
23
|
+
'.claude/settings.json',
|
|
24
|
+
'.claude/context/WORKFLOW_INDEX.md',
|
|
25
|
+
],
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Validate the installation
|
|
30
|
+
*/
|
|
31
|
+
async function validateInstallation(targetDir) {
|
|
32
|
+
const result = {
|
|
33
|
+
passed: true,
|
|
34
|
+
warnings: 0,
|
|
35
|
+
errors: 0,
|
|
36
|
+
checks: [],
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// Check required directories
|
|
40
|
+
for (const dir of REQUIRED_STRUCTURE.directories) {
|
|
41
|
+
const fullPath = path.join(targetDir, dir);
|
|
42
|
+
const exists = fs.existsSync(fullPath);
|
|
43
|
+
|
|
44
|
+
result.checks.push({
|
|
45
|
+
type: 'directory',
|
|
46
|
+
path: dir,
|
|
47
|
+
status: exists ? 'PASS' : 'FAIL',
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
if (!exists) {
|
|
51
|
+
result.errors++;
|
|
52
|
+
result.passed = false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Check required files
|
|
57
|
+
for (const file of REQUIRED_STRUCTURE.files) {
|
|
58
|
+
const fullPath = path.join(targetDir, file);
|
|
59
|
+
const exists = fs.existsSync(fullPath);
|
|
60
|
+
|
|
61
|
+
result.checks.push({
|
|
62
|
+
type: 'file',
|
|
63
|
+
path: file,
|
|
64
|
+
status: exists ? 'PASS' : 'FAIL',
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
if (!exists) {
|
|
68
|
+
result.errors++;
|
|
69
|
+
result.passed = false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Check for remaining placeholders in key files
|
|
74
|
+
const filesToCheck = [
|
|
75
|
+
'CLAUDE.md',
|
|
76
|
+
'.claude/README.md',
|
|
77
|
+
'.claude/settings.json',
|
|
78
|
+
];
|
|
79
|
+
|
|
80
|
+
for (const file of filesToCheck) {
|
|
81
|
+
const fullPath = path.join(targetDir, file);
|
|
82
|
+
if (fs.existsSync(fullPath)) {
|
|
83
|
+
const content = fs.readFileSync(fullPath, 'utf8');
|
|
84
|
+
const placeholders = content.match(/\{\{[A-Z_]+\}\}/g) || [];
|
|
85
|
+
|
|
86
|
+
if (placeholders.length > 0) {
|
|
87
|
+
result.checks.push({
|
|
88
|
+
type: 'placeholders',
|
|
89
|
+
path: file,
|
|
90
|
+
status: 'WARN',
|
|
91
|
+
details: `${placeholders.length} placeholders remaining`,
|
|
92
|
+
});
|
|
93
|
+
result.warnings++;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Validate settings.json is valid JSON
|
|
99
|
+
const settingsPath = path.join(targetDir, '.claude', 'settings.json');
|
|
100
|
+
if (fs.existsSync(settingsPath)) {
|
|
101
|
+
try {
|
|
102
|
+
JSON.parse(fs.readFileSync(settingsPath, 'utf8'));
|
|
103
|
+
result.checks.push({
|
|
104
|
+
type: 'json',
|
|
105
|
+
path: '.claude/settings.json',
|
|
106
|
+
status: 'PASS',
|
|
107
|
+
});
|
|
108
|
+
} catch (e) {
|
|
109
|
+
result.checks.push({
|
|
110
|
+
type: 'json',
|
|
111
|
+
path: '.claude/settings.json',
|
|
112
|
+
status: 'FAIL',
|
|
113
|
+
details: 'Invalid JSON',
|
|
114
|
+
});
|
|
115
|
+
result.errors++;
|
|
116
|
+
result.passed = false;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return result;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Count files in a directory
|
|
125
|
+
*/
|
|
126
|
+
function countFiles(dir, pattern = '*') {
|
|
127
|
+
if (!fs.existsSync(dir)) return 0;
|
|
128
|
+
|
|
129
|
+
let count = 0;
|
|
130
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
131
|
+
|
|
132
|
+
for (const entry of entries) {
|
|
133
|
+
if (entry.isFile()) {
|
|
134
|
+
count++;
|
|
135
|
+
} else if (entry.isDirectory()) {
|
|
136
|
+
count += countFiles(path.join(dir, entry.name), pattern);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
return count;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
module.exports = {
|
|
144
|
+
validateInstallation,
|
|
145
|
+
countFiles,
|
|
146
|
+
REQUIRED_STRUCTURE,
|
|
147
|
+
};
|
package/package.json
CHANGED
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "create-claude-context",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Set up Claude Context Engineering for any project with a single command",
|
|
5
|
-
"main": "lib/index.js",
|
|
6
|
-
"bin": {
|
|
7
|
-
"create-claude-context": "./bin/create-claude-context.js"
|
|
8
|
-
},
|
|
9
|
-
"type": "commonjs",
|
|
10
|
-
"files": [
|
|
11
|
-
"bin/",
|
|
12
|
-
"lib/",
|
|
13
|
-
"templates/",
|
|
14
|
-
"schemas/"
|
|
15
|
-
],
|
|
16
|
-
"scripts": {
|
|
17
|
-
"test": "jest",
|
|
18
|
-
"test:watch": "jest --watch",
|
|
19
|
-
"test:coverage": "jest --coverage",
|
|
20
|
-
"lint": "eslint lib/",
|
|
21
|
-
"cli:help": "node bin/create-claude-context.js --help"
|
|
22
|
-
},
|
|
23
|
-
"keywords": [
|
|
24
|
-
"claude",
|
|
25
|
-
"claude-code",
|
|
26
|
-
"context-engineering",
|
|
27
|
-
"ai",
|
|
28
|
-
"llm",
|
|
29
|
-
"documentation",
|
|
30
|
-
"cli",
|
|
31
|
-
"scaffolding"
|
|
32
|
-
],
|
|
33
|
-
"author": "SireJeff",
|
|
34
|
-
"license": "MIT",
|
|
35
|
-
"repository": {
|
|
36
|
-
"type": "git",
|
|
37
|
-
"url": "git+https://github.com/SireJeff/claude-context-engineering-template.git"
|
|
38
|
-
},
|
|
39
|
-
"bugs": {
|
|
40
|
-
"url": "https://github.com/SireJeff/claude-context-engineering-template/issues"
|
|
41
|
-
},
|
|
42
|
-
"homepage": "https://github.com/SireJeff/claude-context-engineering-template#readme",
|
|
43
|
-
"engines": {
|
|
44
|
-
"node": ">=18.0.0"
|
|
45
|
-
},
|
|
46
|
-
"dependencies": {
|
|
47
|
-
"enquirer": "^2.4.1",
|
|
48
|
-
"ora": "^5.4.1",
|
|
49
|
-
"chalk": "^4.1.2",
|
|
50
|
-
"commander": "^11.1.0",
|
|
51
|
-
"glob": "^10.3.10",
|
|
52
|
-
"yaml": "^2.3.4",
|
|
53
|
-
"ajv": "^8.12.0",
|
|
54
|
-
"ajv-formats": "^2.1.1"
|
|
55
|
-
},
|
|
56
|
-
"devDependencies": {
|
|
57
|
-
"jest": "^29.7.0"
|
|
58
|
-
}
|
|
59
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "create-claude-context",
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"description": "Set up Claude Context Engineering for any project with a single command",
|
|
5
|
+
"main": "lib/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"create-claude-context": "./bin/create-claude-context.js"
|
|
8
|
+
},
|
|
9
|
+
"type": "commonjs",
|
|
10
|
+
"files": [
|
|
11
|
+
"bin/",
|
|
12
|
+
"lib/",
|
|
13
|
+
"templates/",
|
|
14
|
+
"schemas/"
|
|
15
|
+
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"test": "jest",
|
|
18
|
+
"test:watch": "jest --watch",
|
|
19
|
+
"test:coverage": "jest --coverage",
|
|
20
|
+
"lint": "eslint lib/",
|
|
21
|
+
"cli:help": "node bin/create-claude-context.js --help"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"claude",
|
|
25
|
+
"claude-code",
|
|
26
|
+
"context-engineering",
|
|
27
|
+
"ai",
|
|
28
|
+
"llm",
|
|
29
|
+
"documentation",
|
|
30
|
+
"cli",
|
|
31
|
+
"scaffolding"
|
|
32
|
+
],
|
|
33
|
+
"author": "SireJeff",
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "git+https://github.com/SireJeff/claude-context-engineering-template.git"
|
|
38
|
+
},
|
|
39
|
+
"bugs": {
|
|
40
|
+
"url": "https://github.com/SireJeff/claude-context-engineering-template/issues"
|
|
41
|
+
},
|
|
42
|
+
"homepage": "https://github.com/SireJeff/claude-context-engineering-template#readme",
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">=18.0.0"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"enquirer": "^2.4.1",
|
|
48
|
+
"ora": "^5.4.1",
|
|
49
|
+
"chalk": "^4.1.2",
|
|
50
|
+
"commander": "^11.1.0",
|
|
51
|
+
"glob": "^10.3.10",
|
|
52
|
+
"yaml": "^2.3.4",
|
|
53
|
+
"ajv": "^8.12.0",
|
|
54
|
+
"ajv-formats": "^2.1.1"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"jest": "^29.7.0"
|
|
58
|
+
}
|
|
59
|
+
}
|