aiblueprint-cli 1.4.49 → 1.4.51

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.
Files changed (131) hide show
  1. package/README.md +17 -17
  2. package/dist/cli.js +111 -206
  3. package/package.json +5 -4
  4. /package/{ai-config → ai-coding}/.claude-plugin/plugin.json +0 -0
  5. /package/{ai-config → ai-coding}/agents/action.md +0 -0
  6. /package/{ai-config → ai-coding}/agents/explore-codebase.md +0 -0
  7. /package/{ai-config → ai-coding}/agents/explore-docs.md +0 -0
  8. /package/{ai-config → ai-coding}/agents/websearch.md +0 -0
  9. /package/{ai-config → ai-coding}/scripts/.claude/commands/fix-on-my-computer.md +0 -0
  10. /package/{ai-config → ai-coding}/scripts/CLAUDE.md +0 -0
  11. /package/{ai-config → ai-coding}/scripts/biome.json +0 -0
  12. /package/{ai-config → ai-coding}/scripts/bun.lockb +0 -0
  13. /package/{ai-config → ai-coding}/scripts/package.json +0 -0
  14. /package/{ai-config → ai-coding}/scripts/statusline/CLAUDE.md +0 -0
  15. /package/{ai-config → ai-coding}/scripts/statusline/README.md +0 -0
  16. /package/{ai-config → ai-coding}/scripts/statusline/__tests__/context.test.ts +0 -0
  17. /package/{ai-config → ai-coding}/scripts/statusline/__tests__/formatters.test.ts +0 -0
  18. /package/{ai-config → ai-coding}/scripts/statusline/__tests__/statusline.test.ts +0 -0
  19. /package/{ai-config → ai-coding}/scripts/statusline/data/.gitignore +0 -0
  20. /package/{ai-config → ai-coding}/scripts/statusline/data/.gitkeep +0 -0
  21. /package/{ai-config → ai-coding}/scripts/statusline/defaults.json +0 -0
  22. /package/{ai-config → ai-coding}/scripts/statusline/docs/ARCHITECTURE.md +0 -0
  23. /package/{ai-config → ai-coding}/scripts/statusline/fixtures/mock-transcript.jsonl +0 -0
  24. /package/{ai-config → ai-coding}/scripts/statusline/fixtures/test-input.json +0 -0
  25. /package/{ai-config → ai-coding}/scripts/statusline/src/index.ts +0 -0
  26. /package/{ai-config → ai-coding}/scripts/statusline/src/lib/config-types.ts +0 -0
  27. /package/{ai-config → ai-coding}/scripts/statusline/src/lib/config.ts +0 -0
  28. /package/{ai-config → ai-coding}/scripts/statusline/src/lib/context.ts +0 -0
  29. /package/{ai-config → ai-coding}/scripts/statusline/src/lib/formatters.ts +0 -0
  30. /package/{ai-config → ai-coding}/scripts/statusline/src/lib/git.ts +0 -0
  31. /package/{ai-config → ai-coding}/scripts/statusline/src/lib/menu-factories.ts +0 -0
  32. /package/{ai-config → ai-coding}/scripts/statusline/src/lib/presets.ts +0 -0
  33. /package/{ai-config → ai-coding}/scripts/statusline/src/lib/render-pure.ts +0 -0
  34. /package/{ai-config → ai-coding}/scripts/statusline/src/lib/types.ts +0 -0
  35. /package/{ai-config → ai-coding}/scripts/statusline/src/lib/utils.ts +0 -0
  36. /package/{ai-config → ai-coding}/scripts/statusline/src/tests/spend-v2.test.ts +0 -0
  37. /package/{ai-config → ai-coding}/scripts/statusline/statusline.config.json +0 -0
  38. /package/{ai-config → ai-coding}/scripts/statusline/test-with-fixtures.ts +0 -0
  39. /package/{ai-config → ai-coding}/scripts/statusline/test.ts +0 -0
  40. /package/{ai-config → ai-coding}/scripts/statusline/tsconfig.json +0 -0
  41. /package/{ai-config → ai-coding}/scripts/tsconfig.json +0 -0
  42. /package/{ai-config → ai-coding}/skills/apex/SKILL.md +0 -0
  43. /package/{ai-config → ai-coding}/skills/apex/scripts/setup-templates.sh +0 -0
  44. /package/{ai-config → ai-coding}/skills/apex/scripts/update-progress.sh +0 -0
  45. /package/{ai-config → ai-coding}/skills/apex/steps/step-00-init.md +0 -0
  46. /package/{ai-config → ai-coding}/skills/apex/steps/step-00b-branch.md +0 -0
  47. /package/{ai-config → ai-coding}/skills/apex/steps/step-00b-economy.md +0 -0
  48. /package/{ai-config → ai-coding}/skills/apex/steps/step-00b-interactive.md +0 -0
  49. /package/{ai-config → ai-coding}/skills/apex/steps/step-01-analyze.md +0 -0
  50. /package/{ai-config → ai-coding}/skills/apex/steps/step-02-plan.md +0 -0
  51. /package/{ai-config → ai-coding}/skills/apex/steps/step-03-execute.md +0 -0
  52. /package/{ai-config → ai-coding}/skills/apex/steps/step-04-validate.md +0 -0
  53. /package/{ai-config → ai-coding}/skills/apex/templates/00-context.md +0 -0
  54. /package/{ai-config → ai-coding}/skills/apex/templates/01-analyze.md +0 -0
  55. /package/{ai-config → ai-coding}/skills/apex/templates/02-plan.md +0 -0
  56. /package/{ai-config → ai-coding}/skills/apex/templates/03-execute.md +0 -0
  57. /package/{ai-config → ai-coding}/skills/apex/templates/04-validate.md +0 -0
  58. /package/{ai-config → ai-coding}/skills/apex/templates/README.md +0 -0
  59. /package/{ai-config → ai-coding}/skills/apex/templates/step-complete.md +0 -0
  60. /package/{ai-config → ai-coding}/skills/claude-memory/SKILL.md +0 -0
  61. /package/{ai-config → ai-coding}/skills/claude-memory/references/comprehensive-example.md +0 -0
  62. /package/{ai-config → ai-coding}/skills/claude-memory/references/optimize-guide.md +0 -0
  63. /package/{ai-config → ai-coding}/skills/claude-memory/references/project-patterns.md +0 -0
  64. /package/{ai-config → ai-coding}/skills/claude-memory/references/prompting-techniques.md +0 -0
  65. /package/{ai-config → ai-coding}/skills/claude-memory/references/rules-directory-guide.md +0 -0
  66. /package/{ai-config → ai-coding}/skills/claude-memory/references/section-templates.md +0 -0
  67. /package/{ai-config → ai-coding}/skills/codex-environment/SKILL.md +0 -0
  68. /package/{ai-config → ai-coding}/skills/commit/SKILL.md +0 -0
  69. /package/{ai-config → ai-coding}/skills/create-pr/SKILL.md +0 -0
  70. /package/{ai-config → ai-coding}/skills/fix-errors/SKILL.md +0 -0
  71. /package/{ai-config → ai-coding}/skills/fix-grammar/SKILL.md +0 -0
  72. /package/{ai-config → ai-coding}/skills/fix-pr-comments/SKILL.md +0 -0
  73. /package/{ai-config → ai-coding}/skills/merge/SKILL.md +0 -0
  74. /package/{ai-config → ai-coding}/skills/oneshot/SKILL.md +0 -0
  75. /package/{ai-config → ai-coding}/skills/prompt-creator/SKILL.md +0 -0
  76. /package/{ai-config → ai-coding}/skills/prompt-creator/references/anthropic-best-practices.md +0 -0
  77. /package/{ai-config → ai-coding}/skills/prompt-creator/references/anti-patterns.md +0 -0
  78. /package/{ai-config → ai-coding}/skills/prompt-creator/references/clarity-principles.md +0 -0
  79. /package/{ai-config → ai-coding}/skills/prompt-creator/references/context-management.md +0 -0
  80. /package/{ai-config → ai-coding}/skills/prompt-creator/references/few-shot-patterns.md +0 -0
  81. /package/{ai-config → ai-coding}/skills/prompt-creator/references/openai-best-practices.md +0 -0
  82. /package/{ai-config → ai-coding}/skills/prompt-creator/references/prompt-templates.md +0 -0
  83. /package/{ai-config → ai-coding}/skills/prompt-creator/references/reasoning-techniques.md +0 -0
  84. /package/{ai-config → ai-coding}/skills/prompt-creator/references/system-prompt-patterns.md +0 -0
  85. /package/{ai-config → ai-coding}/skills/prompt-creator/references/xml-structure.md +0 -0
  86. /package/{ai-config → ai-coding}/skills/ralph-loop/SKILL.md +0 -0
  87. /package/{ai-config → ai-coding}/skills/ralph-loop/scripts/setup.sh +0 -0
  88. /package/{ai-config → ai-coding}/skills/ralph-loop/steps/step-00-init.md +0 -0
  89. /package/{ai-config → ai-coding}/skills/ralph-loop/steps/step-01-interactive-prd.md +0 -0
  90. /package/{ai-config → ai-coding}/skills/ralph-loop/steps/step-02-create-stories.md +0 -0
  91. /package/{ai-config → ai-coding}/skills/ralph-loop/steps/step-03-finish.md +0 -0
  92. /package/{ai-config → ai-coding}/skills/skill-creator/LICENSE.txt +0 -0
  93. /package/{ai-config → ai-coding}/skills/skill-creator/SKILL.md +0 -0
  94. /package/{ai-config → ai-coding}/skills/skill-creator/package.json +0 -0
  95. /package/{ai-config → ai-coding}/skills/skill-creator/references/output-patterns.md +0 -0
  96. /package/{ai-config → ai-coding}/skills/skill-creator/references/progressive-disclosure-patterns.md +0 -0
  97. /package/{ai-config → ai-coding}/skills/skill-creator/references/prompting-integration.md +0 -0
  98. /package/{ai-config → ai-coding}/skills/skill-creator/references/real-world-examples.md +0 -0
  99. /package/{ai-config → ai-coding}/skills/skill-creator/references/script-patterns.md +0 -0
  100. /package/{ai-config → ai-coding}/skills/skill-creator/references/workflows.md +0 -0
  101. /package/{ai-config → ai-coding}/skills/skill-creator/references/xml-tag-guide.md +0 -0
  102. /package/{ai-config → ai-coding}/skills/skill-creator/scripts/init-skill.ts +0 -0
  103. /package/{ai-config → ai-coding}/skills/skill-creator/scripts/package-skill.ts +0 -0
  104. /package/{ai-config → ai-coding}/skills/skill-creator/scripts/validate.ts +0 -0
  105. /package/{ai-config → ai-coding}/skills/subagent-creator/SKILL.md +0 -0
  106. /package/{ai-config → ai-coding}/skills/subagent-creator/references/context-management.md +0 -0
  107. /package/{ai-config → ai-coding}/skills/subagent-creator/references/debugging-agents.md +0 -0
  108. /package/{ai-config → ai-coding}/skills/subagent-creator/references/error-handling-and-recovery.md +0 -0
  109. /package/{ai-config → ai-coding}/skills/subagent-creator/references/evaluation-and-testing.md +0 -0
  110. /package/{ai-config → ai-coding}/skills/subagent-creator/references/orchestration-patterns.md +0 -0
  111. /package/{ai-config → ai-coding}/skills/subagent-creator/references/subagents.md +0 -0
  112. /package/{ai-config → ai-coding}/skills/subagent-creator/references/writing-subagent-prompts.md +0 -0
  113. /package/{ai-config → ai-coding}/skills/ultrathink/SKILL.md +0 -0
  114. /package/{ai-config → ai-coding}/skills/workflow-apex-free/SKILL.md +0 -0
  115. /package/{ai-config → ai-coding}/skills/workflow-apex-free/scripts/setup-templates.sh +0 -0
  116. /package/{ai-config → ai-coding}/skills/workflow-apex-free/scripts/update-progress.sh +0 -0
  117. /package/{ai-config → ai-coding}/skills/workflow-apex-free/steps/step-00-init.md +0 -0
  118. /package/{ai-config → ai-coding}/skills/workflow-apex-free/steps/step-00b-branch.md +0 -0
  119. /package/{ai-config → ai-coding}/skills/workflow-apex-free/steps/step-00b-economy.md +0 -0
  120. /package/{ai-config → ai-coding}/skills/workflow-apex-free/steps/step-00b-interactive.md +0 -0
  121. /package/{ai-config → ai-coding}/skills/workflow-apex-free/steps/step-01-analyze.md +0 -0
  122. /package/{ai-config → ai-coding}/skills/workflow-apex-free/steps/step-02-plan.md +0 -0
  123. /package/{ai-config → ai-coding}/skills/workflow-apex-free/steps/step-03-execute.md +0 -0
  124. /package/{ai-config → ai-coding}/skills/workflow-apex-free/steps/step-04-validate.md +0 -0
  125. /package/{ai-config → ai-coding}/skills/workflow-apex-free/templates/00-context.md +0 -0
  126. /package/{ai-config → ai-coding}/skills/workflow-apex-free/templates/01-analyze.md +0 -0
  127. /package/{ai-config → ai-coding}/skills/workflow-apex-free/templates/02-plan.md +0 -0
  128. /package/{ai-config → ai-coding}/skills/workflow-apex-free/templates/03-execute.md +0 -0
  129. /package/{ai-config → ai-coding}/skills/workflow-apex-free/templates/04-validate.md +0 -0
  130. /package/{ai-config → ai-coding}/skills/workflow-apex-free/templates/README.md +0 -0
  131. /package/{ai-config → ai-coding}/skills/workflow-apex-free/templates/step-complete.md +0 -0
package/README.md CHANGED
@@ -8,7 +8,7 @@ Supercharge Claude Code with security hooks, custom commands, intelligent status
8
8
 
9
9
  ```bash
10
10
  # Run setup (no installation required)
11
- npx aiblueprint-cli@latest claude-code setup
11
+ npx aiblueprint-cli@latest ai-coding setup
12
12
  ```
13
13
 
14
14
  ## ✨ Features
@@ -32,7 +32,7 @@ npx aiblueprint-cli@latest claude-code setup
32
32
 
33
33
  ```bash
34
34
  # Run without installation
35
- npx aiblueprint-cli@latest claude-code setup
35
+ npx aiblueprint-cli@latest ai-coding setup
36
36
 
37
37
  # Or install globally
38
38
  npm install -g aiblueprint-cli
@@ -44,13 +44,13 @@ npm install -g aiblueprint-cli
44
44
 
45
45
  ```bash
46
46
  # Interactive setup
47
- npx aiblueprint-cli@latest claude-code setup
47
+ npx aiblueprint-cli@latest ai-coding setup
48
48
 
49
49
  # Install all features (no prompts)
50
- npx aiblueprint-cli@latest claude-code setup --skip
50
+ npx aiblueprint-cli@latest ai-coding setup --skip
51
51
 
52
52
  # Custom location
53
- npx aiblueprint-cli@latest claude-code setup --folder ~/.my-claude
53
+ npx aiblueprint-cli@latest ai-coding setup --folder ~/.my-claude
54
54
  ```
55
55
 
56
56
  ### Statusline Scripts
@@ -59,16 +59,16 @@ Run utility scripts from anywhere:
59
59
 
60
60
  ```bash
61
61
  # List available scripts
62
- npx aiblueprint-cli@latest claude-code statusline --list
62
+ npx aiblueprint-cli@latest ai-coding statusline --list
63
63
 
64
64
  # Today's spending report
65
- npx aiblueprint-cli@latest claude-code statusline spend:today
65
+ npx aiblueprint-cli@latest ai-coding statusline spend:today
66
66
 
67
67
  # Weekly usage analysis
68
- npx aiblueprint-cli@latest claude-code statusline weekly
68
+ npx aiblueprint-cli@latest ai-coding statusline weekly
69
69
 
70
70
  # Configure statusline
71
- npx aiblueprint-cli@latest claude-code statusline config
71
+ npx aiblueprint-cli@latest ai-coding statusline config
72
72
  ```
73
73
 
74
74
  **Available scripts:**
@@ -82,14 +82,14 @@ npx aiblueprint-cli@latest claude-code statusline config
82
82
 
83
83
  ```bash
84
84
  # Add specific hooks
85
- npx aiblueprint-cli@latest claude-code add hook post-edit-typescript
85
+ npx aiblueprint-cli@latest ai-coding add hook post-edit-typescript
86
86
 
87
87
  # Manage commands
88
- npx aiblueprint-cli@latest claude-code add commands
89
- npx aiblueprint-cli@latest claude-code add commands commit
88
+ npx aiblueprint-cli@latest ai-coding add commands
89
+ npx aiblueprint-cli@latest ai-coding add commands commit
90
90
 
91
91
  # Create symlinks between tools
92
- npx aiblueprint-cli@latest claude-code symlink
92
+ npx aiblueprint-cli@latest ai-coding symlink
93
93
  ```
94
94
 
95
95
  ## 📚 What You Get
@@ -174,10 +174,10 @@ Unlock advanced features at [mlv.sh/claude-cli](https://mlv.sh/claude-cli)
174
174
 
175
175
  ```bash
176
176
  # Activate premium
177
- npx aiblueprint-cli@latest claude-code pro activate YOUR_TOKEN
177
+ npx aiblueprint-cli@latest ai-coding pro activate YOUR_TOKEN
178
178
 
179
179
  # Setup premium configs
180
- npx aiblueprint-cli@latest claude-code pro setup
180
+ npx aiblueprint-cli@latest ai-coding pro setup
181
181
  ```
182
182
 
183
183
  ## 🛠️ Development
@@ -189,8 +189,8 @@ cd aiblueprint-cli
189
189
  bun install
190
190
 
191
191
  # Development mode
192
- bun run dev claude-code setup
193
- bun run dev claude-code statusline --list
192
+ bun run dev ai-coding setup
193
+ bun run dev ai-coding statusline --list
194
194
 
195
195
  # Run tests
196
196
  bun run test:run
package/dist/cli.js CHANGED
@@ -847,7 +847,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
847
847
  this._exitCallback = (err) => {
848
848
  if (err.code !== "commander.executeSubCommandAsync") {
849
849
  throw err;
850
- } else {}
850
+ }
851
851
  };
852
852
  }
853
853
  return this;
@@ -26102,7 +26102,7 @@ var require_dbcs_codec = __commonJS((exports) => {
26102
26102
  if (resCode !== undefined) {
26103
26103
  dbcsCode = resCode;
26104
26104
  nextChar = uCode;
26105
- } else {}
26105
+ }
26106
26106
  }
26107
26107
  seqObj = undefined;
26108
26108
  } else if (uCode >= 0) {
@@ -26167,7 +26167,7 @@ var require_dbcs_codec = __commonJS((exports) => {
26167
26167
  newBuf[j++] = dbcsCode >> 8;
26168
26168
  newBuf[j++] = dbcsCode & 255;
26169
26169
  }
26170
- } else {}
26170
+ }
26171
26171
  this.seqObj = undefined;
26172
26172
  }
26173
26173
  if (this.leadSurrogate !== -1) {
@@ -33133,7 +33133,7 @@ async function cleanupRepository(repoPath) {
33133
33133
  }
33134
33134
  }
33135
33135
  async function resolveConfigDir(repoPath) {
33136
- const candidates = ["ai-config", "claude-code-config"];
33136
+ const candidates = CONFIG_FOLDER_CANDIDATES;
33137
33137
  for (const name of candidates) {
33138
33138
  const candidate = path6.join(repoPath, name);
33139
33139
  if (await import_fs_extra4.default.pathExists(candidate)) {
@@ -33142,6 +33142,7 @@ async function resolveConfigDir(repoPath) {
33142
33142
  }
33143
33143
  return null;
33144
33144
  }
33145
+ var CONFIG_FOLDER_CANDIDATES = ["ai-coding", "claude-code-config", "ai-config"];
33145
33146
 
33146
33147
  // src/lib/version.ts
33147
33148
  import { readFileSync as readFileSync2 } from "fs";
@@ -33654,9 +33655,9 @@ async function setupCommand(params = {}) {
33654
33655
  let repoPath = null;
33655
33656
  try {
33656
33657
  console.log(source_default.blue.bold(`
33657
- \uD83D\uDE80 AIBlueprint Claude Code Setup ${source_default.gray(`v${getVersion()}`)}
33658
+ \uD83D\uDE80 AIBlueprint AI Coding Setup ${source_default.gray(`v${getVersion()}`)}
33658
33659
  `));
33659
- console.log(source_default.bgBlue(" Setting up your Claude Code environment "));
33660
+ console.log(source_default.bgBlue(" Setting up your AI coding environment "));
33660
33661
  let features;
33661
33662
  if (skipInteractive) {
33662
33663
  features = [
@@ -33752,7 +33753,7 @@ async function setupCommand(params = {}) {
33752
33753
  const sourceDir = await resolveConfigDir(repoPath);
33753
33754
  if (!sourceDir) {
33754
33755
  await cleanupRepository(repoPath);
33755
- throw new Error("Configuration directory not found in cloned repository (looked for ai-config/ and claude-code-config/)");
33756
+ throw new Error("Configuration directory not found in cloned repository (looked for ai-coding/, claude-code-config/, and ai-config/)");
33756
33757
  }
33757
33758
  s.stop("Repository cloned successfully");
33758
33759
  if (options.shellShortcuts) {
@@ -35089,6 +35090,7 @@ import { promisify as promisify2 } from "util";
35089
35090
  var execAsync2 = promisify2(exec3);
35090
35091
  var PREMIUM_REPO = "Melvynx/aiblueprint-cli-premium";
35091
35092
  var PREMIUM_BRANCH = "main";
35093
+ var CONFIG_FOLDER_CANDIDATES2 = ["ai-coding", "claude-code-config", "ai-config"];
35092
35094
  function resolveBaseDir(relativePath, claudeDir, agentsDir) {
35093
35095
  const firstSeg = relativePath.split(path13.sep)[0];
35094
35096
  if (isAgentCategory(firstSeg)) {
@@ -35123,13 +35125,13 @@ async function cloneOrUpdateRepo(token) {
35123
35125
  await import_fs_extra10.default.ensureDir(path13.dirname(cacheDir));
35124
35126
  await execGitWithAuth(`clone ${repoUrl} ${cacheDir}`, token, repoUrl);
35125
35127
  }
35126
- for (const candidate of ["ai-config", "claude-code-config"]) {
35128
+ for (const candidate of CONFIG_FOLDER_CANDIDATES2) {
35127
35129
  const candidatePath = path13.join(cacheDir, candidate);
35128
35130
  if (await import_fs_extra10.default.pathExists(candidatePath)) {
35129
35131
  return candidatePath;
35130
35132
  }
35131
35133
  }
35132
- throw new Error("Premium repo missing config folder (ai-config or claude-code-config)");
35134
+ throw new Error("Premium repo missing config folder (ai-coding or claude-code-config)");
35133
35135
  }
35134
35136
  async function copyConfigFromCache(cacheConfigDir, claudeDir, agentsDir, onProgress) {
35135
35137
  const walk = async (dir, baseDir = dir) => {
@@ -35216,7 +35218,7 @@ async function downloadDirectoryFromPrivateGitHub(repo, branch, dirPath, targetD
35216
35218
  for (const file of files) {
35217
35219
  const relativePath = dirPath ? `${dirPath}/${file.name}` : file.name;
35218
35220
  const targetPath = path13.join(targetDir, file.name);
35219
- const displayPath = relativePath.replace("ai-config/", "");
35221
+ const displayPath = relativePath.replace(/^(ai-coding|claude-code-config|ai-config)\//, "");
35220
35222
  if (file.type === "file") {
35221
35223
  onProgress?.(displayPath, "file");
35222
35224
  await downloadFromPrivateGitHub(repo, branch, relativePath, targetPath, githubToken);
@@ -35247,7 +35249,7 @@ async function installProConfigs(options) {
35247
35249
  const tempDir = path13.join(os13.tmpdir(), `aiblueprint-premium-${Date.now()}`);
35248
35250
  try {
35249
35251
  let success = false;
35250
- for (const candidate of ["ai-config", "claude-code-config"]) {
35252
+ for (const candidate of CONFIG_FOLDER_CANDIDATES2) {
35251
35253
  success = await downloadDirectoryFromPrivateGitHub(PREMIUM_REPO, PREMIUM_BRANCH, candidate, tempDir, githubToken, onProgress);
35252
35254
  if (success)
35253
35255
  break;
@@ -35457,7 +35459,7 @@ async function proActivateCommand(userToken) {
35457
35459
  M2.info(`Product: ${data.product.title}`);
35458
35460
  M2.info(`Token saved to: ${tokenInfo.path}`);
35459
35461
  M2.info(source_default.cyan(`
35460
- \uD83D\uDCA1 Next step: Run 'npx aiblueprint-cli@latest claude-code pro setup' to install premium configs`));
35462
+ \uD83D\uDCA1 Next step: Run 'npx aiblueprint-cli@latest ai-coding pro setup' to install premium configs`));
35461
35463
  trackEvent("pro-activate");
35462
35464
  Se(source_default.green("✅ Activation complete!"));
35463
35465
  } catch (error) {
@@ -35476,7 +35478,7 @@ async function proStatusCommand() {
35476
35478
  const token = await getToken();
35477
35479
  if (!token) {
35478
35480
  M2.warn("No token found");
35479
- M2.info("Run: npx aiblueprint-cli@latest claude-code pro activate <token>");
35481
+ M2.info("Run: npx aiblueprint-cli@latest ai-coding pro activate <token>");
35480
35482
  M2.info("Get your token at: https://mlv.sh/claude-cli");
35481
35483
  Se(source_default.yellow("⚠️ Not activated"));
35482
35484
  process.exit(0);
@@ -35500,7 +35502,7 @@ async function proSetupCommand(options = {}) {
35500
35502
  const githubToken = await getToken();
35501
35503
  if (!githubToken) {
35502
35504
  M2.error("No token found");
35503
- M2.info("Run: npx aiblueprint-cli@latest claude-code pro activate <token>");
35505
+ M2.info("Run: npx aiblueprint-cli@latest ai-coding pro activate <token>");
35504
35506
  Se(source_default.red("❌ Not activated"));
35505
35507
  process.exit(1);
35506
35508
  }
@@ -35570,7 +35572,7 @@ async function proUpdateCommand(options = {}) {
35570
35572
  const githubToken = await getToken();
35571
35573
  if (!githubToken) {
35572
35574
  M2.error("No token found");
35573
- M2.info("Run: npx aiblueprint-cli@latest claude-code pro activate <token>");
35575
+ M2.info("Run: npx aiblueprint-cli@latest ai-coding pro activate <token>");
35574
35576
  Se(source_default.red("❌ Not activated"));
35575
35577
  process.exit(1);
35576
35578
  }
@@ -35605,6 +35607,7 @@ import path16 from "path";
35605
35607
  import crypto from "crypto";
35606
35608
  var PREMIUM_REPO2 = "Melvynx/aiblueprint-cli-premium";
35607
35609
  var PREMIUM_BRANCH2 = "main";
35610
+ var CONFIG_FOLDER_CANDIDATES3 = ["ai-coding", "claude-code-config", "ai-config"];
35608
35611
  function computeFileSha(content) {
35609
35612
  const size = content.length;
35610
35613
  const header = `blob ${size}\x00`;
@@ -35615,7 +35618,7 @@ var resolvedConfigFolder = null;
35615
35618
  async function resolveRemoteConfigFolder(githubToken) {
35616
35619
  if (resolvedConfigFolder)
35617
35620
  return resolvedConfigFolder;
35618
- for (const candidate of ["ai-config", "claude-code-config"]) {
35621
+ for (const candidate of CONFIG_FOLDER_CANDIDATES3) {
35619
35622
  const apiUrl = `https://api.github.com/repos/${PREMIUM_REPO2}/contents/${candidate}?ref=${PREMIUM_BRANCH2}`;
35620
35623
  const response = await fetch(apiUrl, {
35621
35624
  headers: {
@@ -35628,8 +35631,8 @@ async function resolveRemoteConfigFolder(githubToken) {
35628
35631
  return candidate;
35629
35632
  }
35630
35633
  }
35631
- resolvedConfigFolder = "ai-config";
35632
- return "ai-config";
35634
+ resolvedConfigFolder = "ai-coding";
35635
+ return "ai-coding";
35633
35636
  }
35634
35637
  async function listRemoteDirectory(dirPath, githubToken) {
35635
35638
  const configFolder = await resolveRemoteConfigFolder(githubToken);
@@ -35784,39 +35787,18 @@ async function analyzeCategory(category, claudeDir, agentsDir, githubToken) {
35784
35787
  }
35785
35788
  }
35786
35789
  }
35787
- const migrationTopLevels = new Set;
35788
35790
  if (useAgents) {
35789
35791
  const agentsTopLevels = new Set;
35790
35792
  for (const localPath of localSet) {
35791
35793
  agentsTopLevels.add(localPath.split("/")[0]);
35792
35794
  }
35793
- for (const top of agentsTopLevels) {
35794
- if (remoteTopLevels.has(top))
35795
- continue;
35796
- if (migrationTopLevels.has(top))
35797
- continue;
35798
- const fullPath = path16.join(localDir, top);
35799
- const stat = await import_fs_extra13.default.stat(fullPath).catch(() => null);
35800
- if (!stat)
35801
- continue;
35802
- migrationTopLevels.add(top);
35803
- items.push({
35804
- name: top,
35805
- relativePath: `${category}/${top}`,
35806
- status: "migration",
35807
- category,
35808
- isFolder: stat.isDirectory(),
35809
- migrationKind: "preserve-in-agents"
35810
- });
35811
- }
35812
35795
  const claudeCategoryDir = path16.join(claudeDir, category);
35813
35796
  const claudeRealEntries = await listClaudeRealTopLevel(claudeCategoryDir);
35814
35797
  for (const top of claudeRealEntries) {
35815
- if (agentsTopLevels.has(top))
35798
+ if (!remoteTopLevels.has(top))
35816
35799
  continue;
35817
- if (migrationTopLevels.has(top))
35800
+ if (agentsTopLevels.has(top))
35818
35801
  continue;
35819
- migrationTopLevels.add(top);
35820
35802
  items.push({
35821
35803
  name: top,
35822
35804
  relativePath: `${category}/${top}`,
@@ -35827,39 +35809,6 @@ async function analyzeCategory(category, claudeDir, agentsDir, githubToken) {
35827
35809
  });
35828
35810
  }
35829
35811
  }
35830
- const deletedPaths = new Set;
35831
- for (const localPath of localSet) {
35832
- if (remoteSet.has(localPath))
35833
- continue;
35834
- const topLevel = localPath.split("/")[0];
35835
- if (migrationTopLevels.has(topLevel))
35836
- continue;
35837
- const pathParts = localPath.split("/");
35838
- const parentAlreadyDeleted = pathParts.some((_4, idx) => {
35839
- if (idx === 0)
35840
- return false;
35841
- const parentPath = pathParts.slice(0, idx).join("/");
35842
- return deletedPaths.has(parentPath);
35843
- });
35844
- if (parentAlreadyDeleted) {
35845
- continue;
35846
- }
35847
- const fullPath = path16.join(localDir, localPath);
35848
- const stat = await import_fs_extra13.default.stat(fullPath).catch(() => null);
35849
- if (stat) {
35850
- const isFolder = stat.isDirectory();
35851
- items.push({
35852
- name: localPath,
35853
- relativePath: `${category}/${localPath}`,
35854
- status: "deleted",
35855
- category,
35856
- isFolder
35857
- });
35858
- if (isFolder) {
35859
- deletedPaths.add(localPath);
35860
- }
35861
- }
35862
- }
35863
35812
  return items;
35864
35813
  }
35865
35814
  async function analyzeSyncChanges(claudeDir, githubToken, agentsDir) {
@@ -35925,31 +35874,21 @@ async function syncSelectedItems(claudeDir, items, githubToken, agentsDir, onPro
35925
35874
  const agentsTop = path16.join(agentsDir, item.category, topName);
35926
35875
  const claudeTop = path16.join(claudeDir, item.category, topName);
35927
35876
  try {
35928
- if (item.migrationKind === "move-from-claude") {
35929
- const claudeStat = await import_fs_extra13.default.lstat(claudeTop).catch(() => null);
35930
- if (!claudeStat || claudeStat.isSymbolicLink()) {
35931
- onProgress?.(item.relativePath, "skipping (no real dir to migrate)");
35932
- failed++;
35933
- continue;
35934
- }
35935
- const agentsExists = await import_fs_extra13.default.pathExists(agentsTop);
35936
- if (agentsExists) {
35937
- onProgress?.(item.relativePath, "skipping (already in .agents)");
35938
- failed++;
35939
- continue;
35940
- }
35941
- onProgress?.(item.relativePath, "moving to .agents");
35942
- await import_fs_extra13.default.ensureDir(path16.dirname(agentsTop));
35943
- await import_fs_extra13.default.move(claudeTop, agentsTop);
35944
- } else {
35945
- const claudeStat = await import_fs_extra13.default.lstat(claudeTop).catch(() => null);
35946
- if (claudeStat && !claudeStat.isSymbolicLink()) {
35947
- onProgress?.(item.relativePath, "skipping (real dir in .claude)");
35948
- failed++;
35949
- continue;
35950
- }
35951
- onProgress?.(item.relativePath, "preserving in .agents");
35877
+ const claudeStat = await import_fs_extra13.default.lstat(claudeTop).catch(() => null);
35878
+ if (!claudeStat || claudeStat.isSymbolicLink()) {
35879
+ onProgress?.(item.relativePath, "skipping (no real dir to migrate)");
35880
+ failed++;
35881
+ continue;
35952
35882
  }
35883
+ const agentsExists = await import_fs_extra13.default.pathExists(agentsTop);
35884
+ if (agentsExists) {
35885
+ onProgress?.(item.relativePath, "skipping (already in .agents)");
35886
+ failed++;
35887
+ continue;
35888
+ }
35889
+ onProgress?.(item.relativePath, "moving to .agents");
35890
+ await import_fs_extra13.default.ensureDir(path16.dirname(agentsTop));
35891
+ await import_fs_extra13.default.move(claudeTop, agentsTop);
35953
35892
  migrated++;
35954
35893
  touchedAgentCategories.add(item.category);
35955
35894
  } catch {
@@ -36014,7 +35953,7 @@ function formatItem(item) {
36014
35953
  migration: source_default.blue
36015
35954
  };
36016
35955
  const folderPrefix = item.isFolder ? "\uD83D\uDCC1 " : "";
36017
- const suffix = item.status === "migration" && item.migrationKind === "move-from-claude" ? source_default.gray(" (move .claude → .agents)") : item.status === "migration" ? source_default.gray(" (preserve in .agents)") : "";
35956
+ const suffix = item.status === "migration" ? source_default.gray(" (move .claude → .agents)") : "";
36018
35957
  return `${icons[item.status]} ${folderPrefix}${colors12[item.status](item.relativePath)}${suffix}`;
36019
35958
  }
36020
35959
  function groupByCategory(items) {
@@ -36141,7 +36080,7 @@ async function proSyncCommand(options = {}) {
36141
36080
  const githubToken = await getToken();
36142
36081
  if (!githubToken) {
36143
36082
  M2.error("No token found");
36144
- M2.info("Run: npx aiblueprint-cli@latest claude-code pro activate <token>");
36083
+ M2.info("Run: npx aiblueprint-cli@latest ai-coding pro activate <token>");
36145
36084
  Se(source_default.red("❌ Not activated"));
36146
36085
  process.exit(1);
36147
36086
  }
@@ -36164,7 +36103,6 @@ async function proSyncCommand(options = {}) {
36164
36103
  if (result.migrationCount > 0) {
36165
36104
  summaryParts.push(source_default.blue(`${result.migrationCount} to migrate`));
36166
36105
  }
36167
- summaryParts.push(source_default.red(`${result.deletedCount} to remove`));
36168
36106
  summaryParts.push(source_default.gray(`${result.unchangedCount} unchanged`));
36169
36107
  M2.info(`Found: ${summaryParts.join(", ")}`);
36170
36108
  M2.message("");
@@ -36189,9 +36127,7 @@ async function proSyncCommand(options = {}) {
36189
36127
  const choices = createSelectionChoices(changedItems);
36190
36128
  const newItems = changedItems.filter((i) => i.status === "new");
36191
36129
  const modifiedItems = changedItems.filter((i) => i.status === "modified");
36192
- const deletedItems = changedItems.filter((i) => i.status === "deleted");
36193
36130
  const migrationItems = changedItems.filter((i) => i.status === "migration");
36194
- const hasDeletions = deletedItems.length > 0;
36195
36131
  const hasMigrations = migrationItems.length > 0;
36196
36132
  const updatesHintParts = [
36197
36133
  `add ${newItems.length}`,
@@ -36205,21 +36141,13 @@ async function proSyncCommand(options = {}) {
36205
36141
  value: "updates",
36206
36142
  label: "Import all updates",
36207
36143
  hint: `${updatesHintParts.join(" + ")} files`
36144
+ },
36145
+ {
36146
+ value: "custom",
36147
+ label: "Custom choice",
36148
+ hint: "select specific files to sync"
36208
36149
  }
36209
36150
  ];
36210
- if (hasDeletions) {
36211
- const deleteHintParts = [...updatesHintParts, `delete ${deletedItems.length}`];
36212
- syncModeOptions.push({
36213
- value: "updates_and_delete",
36214
- label: "Import all updates and delete files",
36215
- hint: `${deleteHintParts.join(" + ")} files`
36216
- });
36217
- }
36218
- syncModeOptions.push({
36219
- value: "custom",
36220
- label: "Custom choice",
36221
- hint: "select specific files to sync"
36222
- });
36223
36151
  const syncMode = await ve({
36224
36152
  message: "How would you like to sync?",
36225
36153
  options: syncModeOptions
@@ -36231,40 +36159,13 @@ async function proSyncCommand(options = {}) {
36231
36159
  let selectedItems = [];
36232
36160
  if (syncMode === "updates") {
36233
36161
  selectedItems = [...newItems, ...modifiedItems, ...migrationItems];
36234
- } else if (syncMode === "updates_and_delete") {
36235
- M2.message("");
36236
- M2.message(source_default.red.bold("⚠️ WARNING: DESTRUCTIVE ACTION"));
36237
- M2.message(source_default.red("━".repeat(50)));
36238
- M2.message(source_default.red(`${deletedItems.length} commands/agents/scripts not in the premium version`));
36239
- M2.message(source_default.red("will be PERMANENTLY DELETED and replaced by the new version."));
36240
- if (hasMigrations) {
36241
- M2.message(source_default.gray(`(Skills are NOT deleted - they will be migrated to ~/.agents instead.)`));
36242
- }
36243
- M2.message(source_default.red("━".repeat(50)));
36244
- M2.message("");
36245
- const deleteConfirm = await ye({
36246
- message: source_default.red.bold("Are you sure you want to delete and replace all files?"),
36247
- initialValue: false
36248
- });
36249
- if (pD(deleteConfirm) || !deleteConfirm) {
36250
- xe("Sync cancelled");
36251
- process.exit(0);
36252
- }
36253
- selectedItems = [...newItems, ...modifiedItems, ...migrationItems, ...deletedItems];
36254
36162
  } else {
36255
36163
  const fileChoices = choices;
36256
- const nonDeleteChoices = fileChoices.filter((c) => {
36257
- if (c.value.type === "file")
36258
- return c.value.item.status !== "deleted";
36259
- if (c.value.type === "folder")
36260
- return !c.value.items.every((i) => i.status === "deleted");
36261
- return true;
36262
- });
36263
- const nonDeleteInitialValues = nonDeleteChoices.map((c) => c.value);
36164
+ const initialValues = fileChoices.map((c) => c.value);
36264
36165
  const customSelected = await fe({
36265
- message: "Select files to sync (deletions excluded by default):",
36166
+ message: "Select files to sync:",
36266
36167
  options: fileChoices,
36267
- initialValues: nonDeleteInitialValues,
36168
+ initialValues,
36268
36169
  required: false
36269
36170
  });
36270
36171
  if (pD(customSelected)) {
@@ -36281,7 +36182,6 @@ async function proSyncCommand(options = {}) {
36281
36182
  }
36282
36183
  const toAdd = selectedItems.filter((i) => i.status === "new").length;
36283
36184
  const toUpdate = selectedItems.filter((i) => i.status === "modified").length;
36284
- const toRemove = selectedItems.filter((i) => i.status === "deleted").length;
36285
36185
  const toMigrate = selectedItems.filter((i) => i.status === "migration").length;
36286
36186
  M2.message("");
36287
36187
  M2.message(source_default.bold("What will happen:"));
@@ -36290,9 +36190,7 @@ async function proSyncCommand(options = {}) {
36290
36190
  if (toUpdate > 0)
36291
36191
  M2.message(source_default.yellow(` ✓ Update ${toUpdate} file${toUpdate > 1 ? "s" : ""}`));
36292
36192
  if (toMigrate > 0)
36293
- M2.message(source_default.blue(` ✓ Migrate ${toMigrate} item${toMigrate > 1 ? "s" : ""} to .agents (preserve, no data loss)`));
36294
- if (toRemove > 0)
36295
- M2.message(source_default.red(` ✓ Delete ${toRemove} file${toRemove > 1 ? "s" : ""}`));
36193
+ M2.message(source_default.blue(` ✓ Move ${toMigrate} skill${toMigrate > 1 ? "s" : ""} from .claude to .agents`));
36296
36194
  M2.message(source_default.gray(` ✓ Backup current config to ~/.config/aiblueprint/backup/`));
36297
36195
  M2.message("");
36298
36196
  const confirmResult = await ye({
@@ -36847,7 +36745,7 @@ async function executeScript(scriptName, claudeDir) {
36847
36745
  const scriptsDir = path23.join(claudeDir, "scripts");
36848
36746
  if (!await import_fs_extra18.default.pathExists(scriptsDir)) {
36849
36747
  console.error(source_default.red(`Scripts directory not found at ${scriptsDir}`));
36850
- console.log(source_default.gray("Run: aiblueprint claude-code setup"));
36748
+ console.log(source_default.gray("Run: aiblueprint ai-coding setup"));
36851
36749
  return 1;
36852
36750
  }
36853
36751
  const packageJsonPath = path23.join(scriptsDir, "package.json");
@@ -36912,65 +36810,71 @@ import { homedir as homedir2 } from "os";
36912
36810
  var __dirname3 = dirname3(fileURLToPath3(import.meta.url));
36913
36811
  var packageJson = JSON.parse(readFileSync3(join2(__dirname3, "../package.json"), "utf8"));
36914
36812
  var program2 = new Command;
36915
- program2.name("aiblueprint").description("AIBlueprint CLI for setting up Claude Code configurations").version(packageJson.version);
36916
- var claudeCodeCmd = program2.command("claude-code").description("Claude Code configuration commands").option("-f, --folder <path>", "Specify custom Claude Code folder path (default: ~/.claude) - alias for --claudeCodeFolder").option("--claudeCodeFolder <path>", "Specify custom Claude Code folder path (default: ~/.claude)").option("--codexFolder <path>", "Specify custom Codex folder path (default: ~/.codex)").option("--openCodeFolder <path>", "Specify custom OpenCode folder path (default: ~/.config/opencode)").option("--factoryAiFolder <path>", "Specify custom FactoryAI folder path (default: ~/.factory)").option("--agentsFolder <path>", "Specify custom agents folder path (default: ~/.agents)").option("-s, --skip", "Skip interactive prompts and install all features");
36917
- claudeCodeCmd.command("setup").description("Setup Claude Code configuration with AIBlueprint defaults").action((options, command) => {
36918
- const parentOptions = command.parent.opts();
36919
- setupCommand({
36920
- claudeCodeFolder: parentOptions.claudeCodeFolder || parentOptions.folder,
36921
- codexFolder: parentOptions.codexFolder,
36922
- openCodeFolder: parentOptions.openCodeFolder,
36923
- agentsFolder: parentOptions.agentsFolder,
36924
- skipInteractive: parentOptions.skip
36813
+ program2.name("aiblueprint").description("AIBlueprint CLI for setting up AI coding configurations").version(packageJson.version);
36814
+ function registerAiCodingCommands(cmd) {
36815
+ cmd.option("-f, --folder <path>", "Specify custom Claude Code folder path (default: ~/.claude) - alias for --claudeCodeFolder").option("--claudeCodeFolder <path>", "Specify custom Claude Code folder path (default: ~/.claude)").option("--codexFolder <path>", "Specify custom Codex folder path (default: ~/.codex)").option("--openCodeFolder <path>", "Specify custom OpenCode folder path (default: ~/.config/opencode)").option("--factoryAiFolder <path>", "Specify custom FactoryAI folder path (default: ~/.factory)").option("--agentsFolder <path>", "Specify custom agents folder path (default: ~/.agents)").option("-s, --skip", "Skip interactive prompts and install all features");
36816
+ cmd.command("setup").description("Setup AI coding configuration with AIBlueprint defaults").action((options, command) => {
36817
+ const parentOptions = command.parent.opts();
36818
+ setupCommand({
36819
+ claudeCodeFolder: parentOptions.claudeCodeFolder || parentOptions.folder,
36820
+ codexFolder: parentOptions.codexFolder,
36821
+ openCodeFolder: parentOptions.openCodeFolder,
36822
+ agentsFolder: parentOptions.agentsFolder,
36823
+ skipInteractive: parentOptions.skip
36824
+ });
36925
36825
  });
36926
- });
36927
- claudeCodeCmd.command("setup-terminal").description("Setup terminal with Oh My ZSH, plugins, and a beautiful theme").action((options, command) => {
36928
- const parentOptions = command.parent.opts();
36929
- setupTerminalCommand({
36930
- skipInteractive: parentOptions.skip,
36931
- homeDir: parentOptions.claudeCodeFolder || parentOptions.folder
36826
+ cmd.command("setup-terminal").description("Setup terminal with Oh My ZSH, plugins, and a beautiful theme").action((options, command) => {
36827
+ const parentOptions = command.parent.opts();
36828
+ setupTerminalCommand({
36829
+ skipInteractive: parentOptions.skip,
36830
+ homeDir: parentOptions.claudeCodeFolder || parentOptions.folder
36831
+ });
36932
36832
  });
36933
- });
36934
- claudeCodeCmd.command("symlink").description("Create symlinks between different CLI tools (Claude Code, Codex, OpenCode, FactoryAI)").action((options, command) => {
36935
- const parentOptions = command.parent.opts();
36936
- symlinkCommand({
36937
- claudeCodeFolder: parentOptions.claudeCodeFolder || parentOptions.folder,
36938
- codexFolder: parentOptions.codexFolder,
36939
- openCodeFolder: parentOptions.openCodeFolder,
36940
- factoryAiFolder: parentOptions.factoryAiFolder
36833
+ cmd.command("symlink").description("Create symlinks between different AI coding tools (Claude Code, Codex, OpenCode, FactoryAI)").action((options, command) => {
36834
+ const parentOptions = command.parent.opts();
36835
+ symlinkCommand({
36836
+ claudeCodeFolder: parentOptions.claudeCodeFolder || parentOptions.folder,
36837
+ codexFolder: parentOptions.codexFolder,
36838
+ openCodeFolder: parentOptions.openCodeFolder,
36839
+ factoryAiFolder: parentOptions.factoryAiFolder
36840
+ });
36941
36841
  });
36942
- });
36943
- var proCmd = claudeCodeCmd.command("pro").description("Manage AIBlueprint CLI Premium features");
36944
- proCmd.command("activate [token]").description("Activate AIBlueprint CLI Premium with your access token").action((token) => {
36945
- proActivateCommand(token);
36946
- });
36947
- proCmd.command("status").description("Check your Premium token status").action(() => {
36948
- proStatusCommand();
36949
- });
36950
- proCmd.command("setup").description("Install premium configurations (requires activation)").action((options, command) => {
36951
- const parentOptions = command.parent.parent.opts();
36952
- const claudeCodeFolder = parentOptions.claudeCodeFolder || parentOptions.folder;
36953
- proSetupCommand({ folder: claudeCodeFolder, agentsFolder: parentOptions.agentsFolder });
36954
- });
36955
- proCmd.command("update").description("Update premium configurations").action((options, command) => {
36956
- const parentOptions = command.parent.parent.opts();
36957
- const claudeCodeFolder = parentOptions.claudeCodeFolder || parentOptions.folder;
36958
- proUpdateCommand({ folder: claudeCodeFolder, agentsFolder: parentOptions.agentsFolder });
36959
- });
36960
- proCmd.command("sync").description("Sync premium configurations with selective update").action((options, command) => {
36961
- const parentOptions = command.parent.parent.opts();
36962
- const claudeCodeFolder = parentOptions.claudeCodeFolder || parentOptions.folder;
36963
- proSyncCommand({ folder: claudeCodeFolder, agentsFolder: parentOptions.agentsFolder });
36964
- });
36965
- var backupCmd = claudeCodeCmd.command("backup").description("Manage Claude Code configuration backups");
36966
- backupCmd.command("load").description("Load a previous backup interactively").action((options, command) => {
36967
- const parentOptions = command.parent.parent.opts();
36968
- const claudeCodeFolder = parentOptions.claudeCodeFolder || parentOptions.folder;
36969
- backupLoadCommand({
36970
- folder: claudeCodeFolder,
36971
- agentsFolder: parentOptions.agentsFolder
36842
+ const proCmd = cmd.command("pro").description("Manage AIBlueprint CLI Premium features");
36843
+ proCmd.command("activate [token]").description("Activate AIBlueprint CLI Premium with your access token").action((token) => {
36844
+ proActivateCommand(token);
36972
36845
  });
36973
- });
36846
+ proCmd.command("status").description("Check your Premium token status").action(() => {
36847
+ proStatusCommand();
36848
+ });
36849
+ proCmd.command("setup").description("Install premium configurations (requires activation)").action((options, command) => {
36850
+ const parentOptions = command.parent.parent.opts();
36851
+ const claudeCodeFolder = parentOptions.claudeCodeFolder || parentOptions.folder;
36852
+ proSetupCommand({ folder: claudeCodeFolder, agentsFolder: parentOptions.agentsFolder });
36853
+ });
36854
+ proCmd.command("update").description("Update premium configurations").action((options, command) => {
36855
+ const parentOptions = command.parent.parent.opts();
36856
+ const claudeCodeFolder = parentOptions.claudeCodeFolder || parentOptions.folder;
36857
+ proUpdateCommand({ folder: claudeCodeFolder, agentsFolder: parentOptions.agentsFolder });
36858
+ });
36859
+ proCmd.command("sync").description("Sync premium configurations with selective update").action((options, command) => {
36860
+ const parentOptions = command.parent.parent.opts();
36861
+ const claudeCodeFolder = parentOptions.claudeCodeFolder || parentOptions.folder;
36862
+ proSyncCommand({ folder: claudeCodeFolder, agentsFolder: parentOptions.agentsFolder });
36863
+ });
36864
+ const backupCmd = cmd.command("backup").description("Manage AI coding configuration backups");
36865
+ backupCmd.command("load").description("Load a previous backup interactively").action((options, command) => {
36866
+ const parentOptions = command.parent.parent.opts();
36867
+ const claudeCodeFolder = parentOptions.claudeCodeFolder || parentOptions.folder;
36868
+ backupLoadCommand({
36869
+ folder: claudeCodeFolder,
36870
+ agentsFolder: parentOptions.agentsFolder
36871
+ });
36872
+ });
36873
+ }
36874
+ var aiCodingCmd = program2.command("ai-coding").description("AI coding configuration commands");
36875
+ registerAiCodingCommands(aiCodingCmd);
36876
+ var claudeCodeCmd = program2.command("claude-code").description("Legacy alias for ai-coding configuration commands");
36877
+ registerAiCodingCommands(claudeCodeCmd);
36974
36878
  var agentsCmd = program2.command("agents").description("Manage AIBlueprint configurations under ~/.agents (with ~/.claude symlinks)").option("-f, --folder <path>", "Specify custom Claude Code folder path (default: ~/.claude) - alias for --claudeCodeFolder").option("--claudeCodeFolder <path>", "Specify custom Claude Code folder path (default: ~/.claude)").option("--agentsFolder <path>", "Specify custom agents folder path (default: ~/.agents)");
36975
36879
  var agentsProCmd = agentsCmd.command("pro").description("Manage AIBlueprint CLI Premium features");
36976
36880
  agentsProCmd.command("activate [token]").description("Activate AIBlueprint CLI Premium with your access token").action((token) => {
@@ -37023,6 +36927,7 @@ openclawProCmd.command("update").description("Update OpenClaw Pro configurations
37023
36927
  });
37024
36928
  try {
37025
36929
  const claudeDir = join2(homedir2(), ".claude");
36930
+ await registerDynamicScriptCommands(aiCodingCmd, claudeDir);
37026
36931
  await registerDynamicScriptCommands(claudeCodeCmd, claudeDir);
37027
36932
  } catch (error) {
37028
36933
  if (process.env.DEBUG) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "aiblueprint-cli",
3
- "version": "1.4.49",
4
- "description": "AIBlueprint CLI for setting up Claude Code configurations",
3
+ "version": "1.4.51",
4
+ "description": "AIBlueprint CLI for setting up AI coding configurations",
5
5
  "author": "AIBlueprint",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -15,7 +15,7 @@
15
15
  "scripts": {
16
16
  "build": "bun build src/cli.ts --outdir dist --target node && chmod +x dist/cli.js",
17
17
  "dev": "bun src/cli.ts",
18
- "dev-test": "rm -rf ./test-claude-config && bun src/cli.ts claude-code -f ./test-claude-config --skip setup",
18
+ "dev-test": "trash ./test-claude-config && bun src/cli.ts ai-coding -f ./test-claude-config --skip setup",
19
19
  "test": "vitest",
20
20
  "test:ui": "vitest --ui",
21
21
  "test:watch": "vitest --watch",
@@ -47,10 +47,11 @@
47
47
  },
48
48
  "files": [
49
49
  "dist",
50
- "ai-config"
50
+ "ai-coding"
51
51
  ],
52
52
  "keywords": [
53
53
  "claude",
54
+ "ai-coding",
54
55
  "claude-code",
55
56
  "aiblueprint",
56
57
  "developer-tools"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes