@nahisaho/shikigami 1.1.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/.github/prompts/shikigami-deep-research.prompt.md +32 -0
- package/.github/prompts/shikigami-framework-analysis.prompt.md +40 -0
- package/.github/prompts/shikigami-full-research.prompt.md +54 -0
- package/.github/prompts/shikigami-purpose-discovery.prompt.md +32 -0
- package/.github/prompts/shikigami-report-writing.prompt.md +36 -0
- package/.github/skills/shikigami-consulting-framework/SKILL.md +403 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/README.md +173 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/customer/nps.md +164 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/customer/rfm.md +160 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/decision-making/cost-benefit.md +168 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/decision-making/decision-matrix.md +138 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/decision-making/pros-cons.md +162 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/decision-making/risk-matrix.md +159 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/general/5w1h.md +152 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/general/jtbd.md +176 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/general/kpt.md +149 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/general/okr.md +155 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/general/smart.md +130 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/innovation/aarrr.md +193 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/innovation/business-model-canvas.md +182 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/innovation/design-thinking.md +275 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/innovation/lean-canvas.md +199 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/innovation/scamper.md +188 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/innovation/tam-sam-som.md +231 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/innovation/value-proposition-canvas.md +194 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/marketing/4c.md +179 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/marketing/4p.md +161 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/marketing/aidma-aisas.md +146 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/marketing/customer-journey.md +155 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/marketing/persona.md +182 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/marketing/positioning-map.md +116 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/marketing/stp.md +177 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/organization/7s.md +154 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/organization/raci.md +147 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/problem-solving/5whys.md +142 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/problem-solving/as-is-to-be.md +186 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/problem-solving/fishbone.md +201 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/problem-solving/issue-tree.md +178 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/problem-solving/logic-tree.md +161 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/problem-solving/mece.md +127 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/problem-solving/sora-ame-kasa.md +176 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/process/ecrs.md +168 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/process/ooda.md +144 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/process/pdca.md +113 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/strategic/3c.md +118 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/strategic/5forces.md +135 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/strategic/ansoff-matrix.md +168 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/strategic/bcg-matrix.md +134 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/strategic/blue-ocean.md +184 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/strategic/ge-matrix.md +158 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/strategic/pest.md +106 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/strategic/swot.md +90 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/strategic/value-chain.md +192 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/strategic/vrio.md +163 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/thinking/prep.md +105 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/thinking/pyramid.md +171 -0
- package/.github/skills/shikigami-consulting-framework/frameworks/thinking/so-what-why-so.md +175 -0
- package/.github/skills/shikigami-deep-research/SKILL.md +395 -0
- package/.github/skills/shikigami-planner/SKILL.md +267 -0
- package/.github/skills/shikigami-writing/SKILL.md +782 -0
- package/.vscode/mcp.json +9 -0
- package/AGENTS.md +310 -0
- package/CHANGELOG.md +109 -0
- package/README.md +144 -0
- package/mcp-server/README.md +80 -0
- package/mcp-server/package-lock.json +2123 -0
- package/mcp-server/package.json +38 -0
- package/mcp-server/shikigami.config.example.yaml +93 -0
- package/mcp-server/src/config/index.ts +8 -0
- package/mcp-server/src/config/loader.ts +246 -0
- package/mcp-server/src/config/types.ts +184 -0
- package/mcp-server/src/index.ts +418 -0
- package/mcp-server/src/tools/embedding.ts +279 -0
- package/mcp-server/src/tools/file-parser.ts +332 -0
- package/mcp-server/src/tools/search.ts +181 -0
- package/mcp-server/src/tools/visit.ts +168 -0
- package/mcp-server/tsconfig.json +19 -0
- package/package.json +82 -0
- package/scripts/init.js +181 -0
- package/scripts/postinstall.js +129 -0
package/package.json
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nahisaho/shikigami",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "GitHub Copilot Agent Skills for Deep Research & Consulting - AI-Powered Research Assistant with 50+ Consulting Frameworks",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"github-copilot",
|
|
7
|
+
"agent-skills",
|
|
8
|
+
"deep-research",
|
|
9
|
+
"consulting",
|
|
10
|
+
"frameworks",
|
|
11
|
+
"ai-assistant",
|
|
12
|
+
"hallucination-prevention",
|
|
13
|
+
"swot",
|
|
14
|
+
"pest",
|
|
15
|
+
"mece",
|
|
16
|
+
"business-analysis",
|
|
17
|
+
"mcp",
|
|
18
|
+
"duckduckgo",
|
|
19
|
+
"web-search"
|
|
20
|
+
],
|
|
21
|
+
"author": "nahisaho",
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "https://github.com/nahisaho/SHIKIGAMI.git"
|
|
26
|
+
},
|
|
27
|
+
"homepage": "https://github.com/nahisaho/SHIKIGAMI#readme",
|
|
28
|
+
"bugs": {
|
|
29
|
+
"url": "https://github.com/nahisaho/SHIKIGAMI/issues"
|
|
30
|
+
},
|
|
31
|
+
"bin": {
|
|
32
|
+
"shikigami-init": "./scripts/init.js"
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"postinstall": "node ./scripts/postinstall.js"
|
|
36
|
+
},
|
|
37
|
+
"files": [
|
|
38
|
+
".github/skills/",
|
|
39
|
+
".github/prompts/",
|
|
40
|
+
".vscode/",
|
|
41
|
+
"mcp-server/src/",
|
|
42
|
+
"mcp-server/package.json",
|
|
43
|
+
"mcp-server/package-lock.json",
|
|
44
|
+
"mcp-server/tsconfig.json",
|
|
45
|
+
"mcp-server/README.md",
|
|
46
|
+
"mcp-server/shikigami.config.example.yaml",
|
|
47
|
+
"AGENTS.md",
|
|
48
|
+
"README.md",
|
|
49
|
+
"CHANGELOG.md",
|
|
50
|
+
"scripts/"
|
|
51
|
+
],
|
|
52
|
+
"engines": {
|
|
53
|
+
"vscode": "^1.80.0"
|
|
54
|
+
},
|
|
55
|
+
"categories": [
|
|
56
|
+
"AI",
|
|
57
|
+
"Research",
|
|
58
|
+
"Productivity"
|
|
59
|
+
],
|
|
60
|
+
"copilot": {
|
|
61
|
+
"skills": [
|
|
62
|
+
".github/skills/shikigami-planner/SKILL.md",
|
|
63
|
+
".github/skills/shikigami-deep-research/SKILL.md",
|
|
64
|
+
".github/skills/shikigami-consulting-framework/SKILL.md",
|
|
65
|
+
".github/skills/shikigami-writing/SKILL.md"
|
|
66
|
+
],
|
|
67
|
+
"prompts": [
|
|
68
|
+
".github/prompts/shikigami-purpose-discovery.prompt.md",
|
|
69
|
+
".github/prompts/shikigami-deep-research.prompt.md",
|
|
70
|
+
".github/prompts/shikigami-framework-analysis.prompt.md",
|
|
71
|
+
".github/prompts/shikigami-report-writing.prompt.md",
|
|
72
|
+
".github/prompts/shikigami-full-research.prompt.md"
|
|
73
|
+
],
|
|
74
|
+
"capabilities": {
|
|
75
|
+
"deepResearch": true,
|
|
76
|
+
"consultingFrameworks": true,
|
|
77
|
+
"hallucinationPrevention": true,
|
|
78
|
+
"multiSourceSynthesis": true,
|
|
79
|
+
"citationManagement": true
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
package/scripts/init.js
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* SHIKIGAMI manual init command
|
|
4
|
+
* Usage: npx shikigami-init
|
|
5
|
+
*
|
|
6
|
+
* Manually copies SHIKIGAMI files to current directory
|
|
7
|
+
* Useful when postinstall was skipped or for manual setup
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const fs = require('fs');
|
|
11
|
+
const path = require('path');
|
|
12
|
+
|
|
13
|
+
const packageDir = path.resolve(__dirname, '..');
|
|
14
|
+
const projectRoot = process.cwd();
|
|
15
|
+
|
|
16
|
+
const itemsToCopy = [
|
|
17
|
+
{ src: '.github', dest: '.github', type: 'dir' },
|
|
18
|
+
{ src: '.vscode', dest: '.vscode', type: 'dir' },
|
|
19
|
+
{ src: 'mcp-server', dest: 'mcp-server', type: 'dir' },
|
|
20
|
+
{ src: 'AGENTS.md', dest: 'AGENTS.md', type: 'file' },
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
const itemsToCreate = [
|
|
24
|
+
{ dest: 'reports', type: 'dir' },
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Recursively copy directory
|
|
29
|
+
*/
|
|
30
|
+
function copyDirRecursive(src, dest) {
|
|
31
|
+
if (!fs.existsSync(dest)) {
|
|
32
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const entries = fs.readdirSync(src, { withFileTypes: true });
|
|
36
|
+
|
|
37
|
+
for (const entry of entries) {
|
|
38
|
+
const srcPath = path.join(src, entry.name);
|
|
39
|
+
const destPath = path.join(dest, entry.name);
|
|
40
|
+
|
|
41
|
+
if (entry.isDirectory()) {
|
|
42
|
+
copyDirRecursive(srcPath, destPath);
|
|
43
|
+
} else {
|
|
44
|
+
fs.copyFileSync(srcPath, destPath);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Parse command line arguments
|
|
51
|
+
*/
|
|
52
|
+
function parseArgs() {
|
|
53
|
+
const args = process.argv.slice(2);
|
|
54
|
+
return {
|
|
55
|
+
force: args.includes('--force') || args.includes('-f'),
|
|
56
|
+
help: args.includes('--help') || args.includes('-h'),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Show help message
|
|
62
|
+
*/
|
|
63
|
+
function showHelp() {
|
|
64
|
+
console.log(`
|
|
65
|
+
🎭 SHIKIGAMI Init
|
|
66
|
+
|
|
67
|
+
Usage: npx shikigami-init [options]
|
|
68
|
+
|
|
69
|
+
Options:
|
|
70
|
+
-f, --force Overwrite existing files
|
|
71
|
+
-h, --help Show this help message
|
|
72
|
+
|
|
73
|
+
This command copies SHIKIGAMI files to your current directory:
|
|
74
|
+
- .github/ (Agent Skills & Prompts)
|
|
75
|
+
- .vscode/ (MCP configuration)
|
|
76
|
+
- mcp-server/ (MCP server source)
|
|
77
|
+
- AGENTS.md (Workflow documentation)
|
|
78
|
+
- reports/ (Output directory)
|
|
79
|
+
`);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Main init logic
|
|
84
|
+
*/
|
|
85
|
+
function init() {
|
|
86
|
+
const { force, help } = parseArgs();
|
|
87
|
+
|
|
88
|
+
if (help) {
|
|
89
|
+
showHelp();
|
|
90
|
+
process.exit(0);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
console.log('');
|
|
94
|
+
console.log('🎭 SHIKIGAMI - Deep Research & Consulting Agent Skills');
|
|
95
|
+
console.log('========================================================');
|
|
96
|
+
console.log('');
|
|
97
|
+
console.log(`📂 Target: ${projectRoot}`);
|
|
98
|
+
console.log('');
|
|
99
|
+
|
|
100
|
+
let copiedCount = 0;
|
|
101
|
+
let skippedCount = 0;
|
|
102
|
+
let overwrittenCount = 0;
|
|
103
|
+
|
|
104
|
+
// Copy items from package
|
|
105
|
+
for (const item of itemsToCopy) {
|
|
106
|
+
const srcPath = path.join(packageDir, item.src);
|
|
107
|
+
const destPath = path.join(projectRoot, item.dest);
|
|
108
|
+
|
|
109
|
+
if (!fs.existsSync(srcPath)) {
|
|
110
|
+
console.log(`⚠️ Source not found: ${item.src}`);
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
const exists = fs.existsSync(destPath);
|
|
115
|
+
|
|
116
|
+
if (exists && !force) {
|
|
117
|
+
console.log(`⏭️ Skipped (exists): ${item.dest} (use --force to overwrite)`);
|
|
118
|
+
skippedCount++;
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
try {
|
|
123
|
+
if (exists && force) {
|
|
124
|
+
if (item.type === 'dir') {
|
|
125
|
+
fs.rmSync(destPath, { recursive: true, force: true });
|
|
126
|
+
} else {
|
|
127
|
+
fs.unlinkSync(destPath);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (item.type === 'dir') {
|
|
132
|
+
copyDirRecursive(srcPath, destPath);
|
|
133
|
+
} else {
|
|
134
|
+
fs.copyFileSync(srcPath, destPath);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (exists) {
|
|
138
|
+
console.log(`🔄 Overwritten: ${item.dest}`);
|
|
139
|
+
overwrittenCount++;
|
|
140
|
+
} else {
|
|
141
|
+
console.log(`✅ Copied: ${item.dest}`);
|
|
142
|
+
copiedCount++;
|
|
143
|
+
}
|
|
144
|
+
} catch (err) {
|
|
145
|
+
console.error(`❌ Failed to copy ${item.src}: ${err.message}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Create empty directories
|
|
150
|
+
for (const item of itemsToCreate) {
|
|
151
|
+
const destPath = path.join(projectRoot, item.dest);
|
|
152
|
+
|
|
153
|
+
if (fs.existsSync(destPath)) {
|
|
154
|
+
console.log(`⏭️ Skipped (exists): ${item.dest}/`);
|
|
155
|
+
skippedCount++;
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
try {
|
|
160
|
+
fs.mkdirSync(destPath, { recursive: true });
|
|
161
|
+
fs.writeFileSync(path.join(destPath, '.gitkeep'), '');
|
|
162
|
+
console.log(`✅ Created: ${item.dest}/`);
|
|
163
|
+
copiedCount++;
|
|
164
|
+
} catch (err) {
|
|
165
|
+
console.error(`❌ Failed to create ${item.dest}: ${err.message}`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
console.log('');
|
|
170
|
+
console.log(`📊 Summary: ${copiedCount} copied, ${overwrittenCount} overwritten, ${skippedCount} skipped`);
|
|
171
|
+
console.log('');
|
|
172
|
+
console.log('📝 Next steps:');
|
|
173
|
+
console.log(' 1. cd mcp-server && npm install && npm run build');
|
|
174
|
+
console.log(' 2. Restart VS Code to activate Agent Skills');
|
|
175
|
+
console.log(' 3. Use @shikigami-full-research prompt to start');
|
|
176
|
+
console.log('');
|
|
177
|
+
console.log('📖 See AGENTS.md for workflow documentation');
|
|
178
|
+
console.log('');
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
init();
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* SHIKIGAMI postinstall script
|
|
4
|
+
* Copies necessary files to the project root after npm install
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
const fs = require('fs');
|
|
8
|
+
const path = require('path');
|
|
9
|
+
|
|
10
|
+
// Detect if running in node_modules context (actual npm install)
|
|
11
|
+
const isNpmInstall = __dirname.includes('node_modules');
|
|
12
|
+
|
|
13
|
+
if (!isNpmInstall) {
|
|
14
|
+
// Skip if running from source (development)
|
|
15
|
+
console.log('📦 SHIKIGAMI: Development mode - skipping postinstall copy');
|
|
16
|
+
process.exit(0);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const packageDir = path.resolve(__dirname, '..');
|
|
20
|
+
const projectRoot = path.resolve(packageDir, '..', '..');
|
|
21
|
+
|
|
22
|
+
const itemsToCopy = [
|
|
23
|
+
{ src: '.github', dest: '.github', type: 'dir' },
|
|
24
|
+
{ src: '.vscode', dest: '.vscode', type: 'dir' },
|
|
25
|
+
{ src: 'mcp-server', dest: 'mcp-server', type: 'dir' },
|
|
26
|
+
{ src: 'AGENTS.md', dest: 'AGENTS.md', type: 'file' },
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
const itemsToCreate = [
|
|
30
|
+
{ dest: 'reports', type: 'dir' },
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Recursively copy directory
|
|
35
|
+
*/
|
|
36
|
+
function copyDirRecursive(src, dest) {
|
|
37
|
+
if (!fs.existsSync(dest)) {
|
|
38
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const entries = fs.readdirSync(src, { withFileTypes: true });
|
|
42
|
+
|
|
43
|
+
for (const entry of entries) {
|
|
44
|
+
const srcPath = path.join(src, entry.name);
|
|
45
|
+
const destPath = path.join(dest, entry.name);
|
|
46
|
+
|
|
47
|
+
if (entry.isDirectory()) {
|
|
48
|
+
copyDirRecursive(srcPath, destPath);
|
|
49
|
+
} else {
|
|
50
|
+
fs.copyFileSync(srcPath, destPath);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Main installation logic
|
|
57
|
+
*/
|
|
58
|
+
function install() {
|
|
59
|
+
console.log('');
|
|
60
|
+
console.log('🎭 SHIKIGAMI - Deep Research & Consulting Agent Skills');
|
|
61
|
+
console.log('========================================================');
|
|
62
|
+
console.log('');
|
|
63
|
+
|
|
64
|
+
let copiedCount = 0;
|
|
65
|
+
let skippedCount = 0;
|
|
66
|
+
|
|
67
|
+
// Copy items from package
|
|
68
|
+
for (const item of itemsToCopy) {
|
|
69
|
+
const srcPath = path.join(packageDir, item.src);
|
|
70
|
+
const destPath = path.join(projectRoot, item.dest);
|
|
71
|
+
|
|
72
|
+
if (!fs.existsSync(srcPath)) {
|
|
73
|
+
console.log(`⚠️ Source not found: ${item.src}`);
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (fs.existsSync(destPath)) {
|
|
78
|
+
console.log(`⏭️ Skipped (exists): ${item.dest}`);
|
|
79
|
+
skippedCount++;
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
try {
|
|
84
|
+
if (item.type === 'dir') {
|
|
85
|
+
copyDirRecursive(srcPath, destPath);
|
|
86
|
+
} else {
|
|
87
|
+
fs.copyFileSync(srcPath, destPath);
|
|
88
|
+
}
|
|
89
|
+
console.log(`✅ Copied: ${item.dest}`);
|
|
90
|
+
copiedCount++;
|
|
91
|
+
} catch (err) {
|
|
92
|
+
console.error(`❌ Failed to copy ${item.src}: ${err.message}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Create empty directories
|
|
97
|
+
for (const item of itemsToCreate) {
|
|
98
|
+
const destPath = path.join(projectRoot, item.dest);
|
|
99
|
+
|
|
100
|
+
if (fs.existsSync(destPath)) {
|
|
101
|
+
console.log(`⏭️ Skipped (exists): ${item.dest}`);
|
|
102
|
+
skippedCount++;
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
try {
|
|
107
|
+
fs.mkdirSync(destPath, { recursive: true });
|
|
108
|
+
// Create .gitkeep to preserve empty directory
|
|
109
|
+
fs.writeFileSync(path.join(destPath, '.gitkeep'), '');
|
|
110
|
+
console.log(`✅ Created: ${item.dest}/`);
|
|
111
|
+
copiedCount++;
|
|
112
|
+
} catch (err) {
|
|
113
|
+
console.error(`❌ Failed to create ${item.dest}: ${err.message}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
console.log('');
|
|
118
|
+
console.log(`📊 Summary: ${copiedCount} installed, ${skippedCount} skipped`);
|
|
119
|
+
console.log('');
|
|
120
|
+
console.log('📝 Next steps:');
|
|
121
|
+
console.log(' 1. cd mcp-server && npm install && npm run build');
|
|
122
|
+
console.log(' 2. Restart VS Code to activate Agent Skills');
|
|
123
|
+
console.log(' 3. Use @shikigami-full-research prompt to start');
|
|
124
|
+
console.log('');
|
|
125
|
+
console.log('📖 See AGENTS.md for workflow documentation');
|
|
126
|
+
console.log('');
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
install();
|