ai-workflow-init 6.4.1 โ 6.4.2
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/.claude/settings.local.json +1 -1
- package/cli.js +84 -1
- package/package.json +1 -1
package/cli.js
CHANGED
|
@@ -212,7 +212,7 @@ const AI_TOOLS = [
|
|
|
212
212
|
id: "claude",
|
|
213
213
|
name: "Claude Code",
|
|
214
214
|
description: "Anthropic's AI coding assistant",
|
|
215
|
-
folders: [".claude/commands", ".claude/skills", ".claude/themes"],
|
|
215
|
+
folders: [".claude/commands", ".claude/skills", ".claude/themes", ".claude/output-styles", ".claude/agents"],
|
|
216
216
|
},
|
|
217
217
|
{
|
|
218
218
|
id: "opencode",
|
|
@@ -426,6 +426,20 @@ function installClaudeCode() {
|
|
|
426
426
|
mkdirSync(".claude/themes", { recursive: true });
|
|
427
427
|
}
|
|
428
428
|
run(`npx degit ${REPO}/.claude/themes .claude/themes --force`);
|
|
429
|
+
|
|
430
|
+
// Download output-styles folder (always overwrite to get latest)
|
|
431
|
+
step("๐ Downloading Claude Code output-styles (.claude/output-styles)...");
|
|
432
|
+
if (!existsSync(".claude/output-styles")) {
|
|
433
|
+
mkdirSync(".claude/output-styles", { recursive: true });
|
|
434
|
+
}
|
|
435
|
+
run(`npx degit ${REPO}/.claude/output-styles .claude/output-styles --force`);
|
|
436
|
+
|
|
437
|
+
// Download agents folder (always overwrite to get latest)
|
|
438
|
+
step("๐ Downloading Claude Code agents (.claude/agents)...");
|
|
439
|
+
if (!existsSync(".claude/agents")) {
|
|
440
|
+
mkdirSync(".claude/agents", { recursive: true });
|
|
441
|
+
}
|
|
442
|
+
run(`npx degit ${REPO}/.claude/agents .claude/agents --force`);
|
|
429
443
|
}
|
|
430
444
|
|
|
431
445
|
// Install OpenCode
|
|
@@ -524,6 +538,66 @@ function installFactoryDroid() {
|
|
|
524
538
|
}
|
|
525
539
|
}
|
|
526
540
|
|
|
541
|
+
// Check and clone missing .factory subfolders (when .factory already exists)
|
|
542
|
+
function checkAndCloneFactory() {
|
|
543
|
+
if (!existsSync(".factory")) {
|
|
544
|
+
return; // .factory doesn't exist, skip
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
step("๐ Checking for missing .factory subfolders...");
|
|
548
|
+
|
|
549
|
+
const factorySubfolders = [
|
|
550
|
+
{ path: ".factory/commands", name: "commands" },
|
|
551
|
+
{ path: ".factory/droids", name: "droids" },
|
|
552
|
+
{ path: ".factory/skills", name: "skills" },
|
|
553
|
+
];
|
|
554
|
+
|
|
555
|
+
for (const subfolder of factorySubfolders) {
|
|
556
|
+
if (!existsSync(subfolder.path)) {
|
|
557
|
+
step(`๐ Cloning missing subfolder: ${subfolder.path}...`);
|
|
558
|
+
mkdirSync(subfolder.path, { recursive: true });
|
|
559
|
+
try {
|
|
560
|
+
run(`npx degit ${REPO}/${subfolder.path} ${subfolder.path} --force`);
|
|
561
|
+
success(`Cloned: ${subfolder.path}`);
|
|
562
|
+
} catch (e) {
|
|
563
|
+
console.log(`${colors.yellow}โ ๏ธ ${subfolder.path} not found in repo${colors.reset}`);
|
|
564
|
+
}
|
|
565
|
+
} else {
|
|
566
|
+
skip(`Already exists: ${subfolder.path}`);
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
// Check and clone missing .opencode subfolders (when .opencode already exists)
|
|
572
|
+
function checkAndCloneOpenCode() {
|
|
573
|
+
if (!existsSync(".opencode")) {
|
|
574
|
+
return; // .opencode doesn't exist, skip
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
step("๐ Checking for missing .opencode subfolders...");
|
|
578
|
+
|
|
579
|
+
const opencodeSubfolders = [
|
|
580
|
+
{ path: ".opencode/agent", name: "agent" },
|
|
581
|
+
{ path: ".opencode/command", name: "command" },
|
|
582
|
+
{ path: ".opencode/skill", name: "skill" },
|
|
583
|
+
];
|
|
584
|
+
|
|
585
|
+
for (const subfolder of opencodeSubfolders) {
|
|
586
|
+
if (!existsSync(subfolder.path)) {
|
|
587
|
+
step(`๐ Cloning missing subfolder: ${subfolder.path}...`);
|
|
588
|
+
mkdirSync(subfolder.path, { recursive: true });
|
|
589
|
+
try {
|
|
590
|
+
run(`npx degit ${REPO}/${subfolder.path} ${subfolder.path} --force`);
|
|
591
|
+
success(`Cloned: ${subfolder.path}`);
|
|
592
|
+
} catch (e) {
|
|
593
|
+
console.log(`${colors.yellow}โ ๏ธ ${subfolder.path} not found in repo${colors.reset}`);
|
|
594
|
+
}
|
|
595
|
+
} else {
|
|
596
|
+
skip(`Already exists: ${subfolder.path}`);
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
|
|
527
601
|
async function main() {
|
|
528
602
|
console.log(`
|
|
529
603
|
${colors.cyan}โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
@@ -596,6 +670,15 @@ ${colors.cyan}โโโโโโโโโโโโโโโโโโโโโโ
|
|
|
596
670
|
installFactoryDroid();
|
|
597
671
|
}
|
|
598
672
|
|
|
673
|
+
// Check and clone missing subfolders for existing .factory and .opencode
|
|
674
|
+
// This runs regardless of tool selection, in case folders already exist
|
|
675
|
+
if (!toolIds.includes("factory")) {
|
|
676
|
+
checkAndCloneFactory();
|
|
677
|
+
}
|
|
678
|
+
if (!toolIds.includes("opencode")) {
|
|
679
|
+
checkAndCloneOpenCode();
|
|
680
|
+
}
|
|
681
|
+
|
|
599
682
|
// Download AGENTS.md (luรดn ghi ฤรจ)
|
|
600
683
|
step("๐ Downloading AGENTS.md...");
|
|
601
684
|
try {
|