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.
- package/LICENSE +21 -21
- package/README.md +169 -146
- package/bin/create-claude-context.js +75 -61
- package/lib/ai-orchestrator.js +423 -0
- package/lib/call-tracer.js +444 -0
- package/lib/detector.js +456 -373
- package/lib/environment-detector.js +239 -0
- package/lib/index.js +271 -170
- package/lib/installer.js +371 -362
- package/lib/placeholder.js +269 -208
- package/lib/prompts.js +287 -287
- package/lib/spinner.js +60 -60
- package/lib/static-analyzer.js +729 -0
- package/lib/template-populator.js +835 -0
- 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 +3 -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/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.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
|
+
}
|