claude-all-config 3.8.0 → 3.8.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/VERSION +1 -1
- package/kiro-all +38 -0
- package/package.json +4 -2
- package/postinstall.js +88 -1
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.8.
|
|
1
|
+
3.8.1
|
package/kiro-all
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# kiro-all — Kiro CLI launcher with ClaudeAll secrets loaded.
|
|
4
|
+
#
|
|
5
|
+
# Sources ~/.kiro/.env (and ~/.claude/.env as fallback), then forwards to the
|
|
6
|
+
# real kiro-cli (or `kiro` if your install uses that name).
|
|
7
|
+
|
|
8
|
+
set -u
|
|
9
|
+
|
|
10
|
+
load_env() {
|
|
11
|
+
local f="$1"
|
|
12
|
+
if [ -f "$f" ]; then
|
|
13
|
+
set -a
|
|
14
|
+
# shellcheck disable=SC1090
|
|
15
|
+
. "$f" 2>/dev/null || true
|
|
16
|
+
set +a
|
|
17
|
+
fi
|
|
18
|
+
}
|
|
19
|
+
load_env "$HOME/.claude/.env"
|
|
20
|
+
load_env "$HOME/.kiro/.env"
|
|
21
|
+
|
|
22
|
+
# Locate kiro binary (prefer kiro-cli; fall back to kiro)
|
|
23
|
+
KIRO_CMD=""
|
|
24
|
+
for cand in "${KIRO_BIN:-}" kiro-cli kiro; do
|
|
25
|
+
[ -z "$cand" ] && continue
|
|
26
|
+
if command -v "$cand" &>/dev/null; then
|
|
27
|
+
KIRO_CMD="$cand"
|
|
28
|
+
break
|
|
29
|
+
fi
|
|
30
|
+
done
|
|
31
|
+
|
|
32
|
+
if [ -z "$KIRO_CMD" ]; then
|
|
33
|
+
echo "❌ kiro-cli not found in PATH." >&2
|
|
34
|
+
echo " See https://kiro.dev for install instructions." >&2
|
|
35
|
+
exit 127
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
exec "$KIRO_CMD" "$@"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-all-config",
|
|
3
|
-
"version": "3.8.
|
|
3
|
+
"version": "3.8.1",
|
|
4
4
|
"description": "🦾 MONSTER ENGINEER v2 - Ultimate AI CLI with 63 Skills, 12 Superpowers, 14 Agents. Multi-Agent Orchestration, Cost-Aware, Security Scorecard, Parallel-First.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"claude-all-update": "./update.sh",
|
|
10
10
|
"claude-all-mcp": "./bin/mcp-install.js",
|
|
11
11
|
"gemini-all": "./gemini-all",
|
|
12
|
-
"codex-all": "./codex-all"
|
|
12
|
+
"codex-all": "./codex-all",
|
|
13
|
+
"kiro-all": "./kiro-all"
|
|
13
14
|
},
|
|
14
15
|
"scripts": {
|
|
15
16
|
"postinstall": "node postinstall.js || bash install.sh",
|
|
@@ -92,6 +93,7 @@
|
|
|
92
93
|
"gemini",
|
|
93
94
|
"codex-all",
|
|
94
95
|
"codex",
|
|
96
|
+
"kiro-all",
|
|
95
97
|
"install.sh",
|
|
96
98
|
"install-termux.sh",
|
|
97
99
|
"install-universal.sh",
|
package/postinstall.js
CHANGED
|
@@ -148,13 +148,15 @@ function mergeEnvFile(srcPath, destPath) {
|
|
|
148
148
|
const hasClaude = commandExists('claude');
|
|
149
149
|
const hasGemini = commandExists('gemini');
|
|
150
150
|
const hasCodex = commandExists('codex');
|
|
151
|
+
const hasKiro = commandExists('kiro') || commandExists('kiro-cli');
|
|
151
152
|
|
|
152
153
|
console.log('🤖 ClaudeAll - Installing configurations...\n');
|
|
153
154
|
|
|
154
155
|
if (hasClaude) console.log('✅ Claude CLI detected');
|
|
155
156
|
if (hasGemini) console.log('✅ Gemini CLI detected');
|
|
156
157
|
if (hasCodex) console.log('✅ Codex CLI detected');
|
|
157
|
-
if (
|
|
158
|
+
if (hasKiro) console.log('✅ Kiro CLI detected');
|
|
159
|
+
if (!hasClaude && !hasGemini && !hasCodex && !hasKiro) {
|
|
158
160
|
console.log('⚠️ No CLI detected, installing configs anyway...');
|
|
159
161
|
}
|
|
160
162
|
console.log('');
|
|
@@ -546,6 +548,84 @@ function installCodex() {
|
|
|
546
548
|
}
|
|
547
549
|
}
|
|
548
550
|
|
|
551
|
+
// Install to Kiro (~/.kiro/) — Kiro CLI uses skills in SKILL.md format
|
|
552
|
+
// (compatible with Claude), AGENTS.md for global instructions, and stores MCP
|
|
553
|
+
// config under ~/.kiro/settings/mcp.json. Agents in Kiro use a JSON schema
|
|
554
|
+
// that's auto-generated by Kiro itself, so we don't ship those.
|
|
555
|
+
function installKiro() {
|
|
556
|
+
const KIRO_DIR = path.join(HOME, '.kiro');
|
|
557
|
+
console.log('📦 Installing to Kiro (~/.kiro/)...');
|
|
558
|
+
|
|
559
|
+
const dirs = ['skills', 'commands', 'hooks', 'lib', 'settings', 'prompts'];
|
|
560
|
+
dirs.forEach(dir => {
|
|
561
|
+
const targetDir = path.join(KIRO_DIR, dir);
|
|
562
|
+
try {
|
|
563
|
+
if (!fs.existsSync(targetDir)) fs.mkdirSync(targetDir, { recursive: true });
|
|
564
|
+
} catch {}
|
|
565
|
+
});
|
|
566
|
+
|
|
567
|
+
// Skills are SKILL.md format — fully compatible with Kiro
|
|
568
|
+
const skillCount = copyDir(path.join(PKG_DIR, 'skills'), path.join(KIRO_DIR, 'skills'));
|
|
569
|
+
console.log(` ⚡ ${skillCount} skill files`);
|
|
570
|
+
|
|
571
|
+
// Commands & hooks (in case Kiro adopts them)
|
|
572
|
+
const cmdCount = copyDir(path.join(PKG_DIR, 'commands'), path.join(KIRO_DIR, 'commands'));
|
|
573
|
+
console.log(` 📝 ${cmdCount} commands`);
|
|
574
|
+
|
|
575
|
+
const hookCount = copyDir(path.join(PKG_DIR, 'hooks'), path.join(KIRO_DIR, 'hooks'));
|
|
576
|
+
console.log(` 🔗 ${hookCount} hooks`);
|
|
577
|
+
|
|
578
|
+
if (fs.existsSync(path.join(PKG_DIR, 'lib'))) {
|
|
579
|
+
copyDir(path.join(PKG_DIR, 'lib'), path.join(KIRO_DIR, 'lib'));
|
|
580
|
+
console.log(` 📚 lib`);
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
// AGENTS.md — synced from CLAUDE.md (single source of truth)
|
|
584
|
+
const claudeMdInPkg = path.join(PKG_DIR, 'CLAUDE.md');
|
|
585
|
+
const agentsMdDest = path.join(KIRO_DIR, 'AGENTS.md');
|
|
586
|
+
if (fs.existsSync(claudeMdInPkg)) {
|
|
587
|
+
try {
|
|
588
|
+
let content = fs.readFileSync(claudeMdInPkg, 'utf8');
|
|
589
|
+
content = content
|
|
590
|
+
.replace(/# ClaudeAll Global Instructions/, '# Kiro Agent Instructions (ClaudeAll Global Instructions)')
|
|
591
|
+
.replace(/Claude Code enhanced with ClaudeAll superpowers\./, 'Kiro CLI enhanced with ClaudeAll superpowers.\n\nKiro uses its own JSON-format agents under ~/.kiro/agents/ (auto-managed). The skills, hooks, and MCP servers below are shared with Claude/Gemini/Codex.')
|
|
592
|
+
.replace(/~\/\.claude\//g, '~/.kiro/')
|
|
593
|
+
.replace(/CLAUDE\.md/g, 'AGENTS.md');
|
|
594
|
+
fs.writeFileSync(agentsMdDest, content);
|
|
595
|
+
console.log(` 📄 AGENTS.md (synced from CLAUDE.md, ${content.split('\n').length} lines)`);
|
|
596
|
+
} catch (e) {
|
|
597
|
+
console.log(` ⚠️ AGENTS.md write skipped (${e.code || 'error'})`);
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
// MCP config under ~/.kiro/settings/mcp.json with ${HOME} expanded
|
|
602
|
+
const mcpSrc = path.join(PKG_DIR, 'mcp.json');
|
|
603
|
+
const mcpDest = path.join(KIRO_DIR, 'settings', 'mcp.json');
|
|
604
|
+
if (fs.existsSync(mcpSrc)) {
|
|
605
|
+
try {
|
|
606
|
+
let mcpContent = fs.readFileSync(mcpSrc, 'utf8').replace(/\$\{HOME\}/g, HOME);
|
|
607
|
+
fs.writeFileSync(mcpDest, mcpContent);
|
|
608
|
+
try { fs.chmodSync(mcpDest, 0o600); } catch {}
|
|
609
|
+
console.log(` 🔧 MCP config (11 servers, settings/mcp.json)`);
|
|
610
|
+
} catch (e) {
|
|
611
|
+
console.log(` ⚠️ MCP config skipped (${e.code || 'error'})`);
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
// .env merge
|
|
616
|
+
const envSrc = path.join(PKG_DIR, '.env.example');
|
|
617
|
+
const envDest = path.join(KIRO_DIR, '.env');
|
|
618
|
+
if (fs.existsSync(envSrc)) {
|
|
619
|
+
try {
|
|
620
|
+
const r = mergeEnvFile(envSrc, envDest);
|
|
621
|
+
try { fs.chmodSync(envDest, 0o600); } catch {}
|
|
622
|
+
console.log(` 🔐 .env ${r.action} (${r.filled} filled, ${r.preserved} preserved)`);
|
|
623
|
+
} catch (e) {
|
|
624
|
+
console.log(` ⚠️ .env merge skipped (${e.code || 'error'})`);
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
|
|
549
629
|
// Install uvx for MiniMax MCP support
|
|
550
630
|
function installUvx() {
|
|
551
631
|
const hasUvx = commandExists('uvx');
|
|
@@ -597,6 +677,7 @@ function setupLocalBinSymlinks() {
|
|
|
597
677
|
'codex-all': path.join(PKG_DIR, 'codex-all'),
|
|
598
678
|
// 'codex' shim shadows the real `codex` so plain `codex` auto-loads .env.
|
|
599
679
|
'codex': path.join(PKG_DIR, 'codex'),
|
|
680
|
+
'kiro-all': path.join(PKG_DIR, 'kiro-all'),
|
|
600
681
|
};
|
|
601
682
|
|
|
602
683
|
let created = 0;
|
|
@@ -669,6 +750,11 @@ if (hasCodex) {
|
|
|
669
750
|
installCodex();
|
|
670
751
|
}
|
|
671
752
|
|
|
753
|
+
if (hasKiro) {
|
|
754
|
+
console.log('');
|
|
755
|
+
installKiro();
|
|
756
|
+
}
|
|
757
|
+
|
|
672
758
|
setupLocalBinSymlinks();
|
|
673
759
|
|
|
674
760
|
// If we ran under sudo, hand ownership back to the original user so that a
|
|
@@ -678,6 +764,7 @@ if (SUDO_USER) {
|
|
|
678
764
|
fixOwnership(path.join(HOME, '.claude'));
|
|
679
765
|
fixOwnership(path.join(HOME, '.gemini'));
|
|
680
766
|
fixOwnership(path.join(HOME, '.codex'));
|
|
767
|
+
fixOwnership(path.join(HOME, '.kiro'));
|
|
681
768
|
fixOwnership(path.join(HOME, '.mcp.json'));
|
|
682
769
|
fixOwnership(path.join(HOME, '.local'));
|
|
683
770
|
console.log(' ✅ Ownership fixed.');
|