claude-cli-advanced-starter-pack 1.0.13 → 1.0.14

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-cli-advanced-starter-pack",
3
- "version": "1.0.13",
3
+ "version": "1.0.14",
4
4
  "description": "Advanced Claude Code CLI toolkit - agents, hooks, skills, MCP servers, phased development, and GitHub integration",
5
5
  "main": "src/index.js",
6
6
  "bin": {
@@ -42,7 +42,7 @@ const OPTIONAL_FEATURES = [
42
42
  label: 'Token Budget Management',
43
43
  description: 'Monitor and manage Claude API token usage with automatic compaction warnings, archive suggestions, and respawn thresholds. Includes hooks that track usage per session.',
44
44
  commands: ['context-audit'],
45
- hooks: ['token-budget-loader', 'context-guardian', 'tool-output-cacher'],
45
+ hooks: ['context-guardian'], // Only include hooks with templates
46
46
  default: false,
47
47
  requiresPostConfig: false,
48
48
  },
@@ -51,7 +51,7 @@ const OPTIONAL_FEATURES = [
51
51
  label: 'Happy Engineering Integration',
52
52
  description: 'Integration with Happy Coder mobile app for remote session control, checkpoint management, and mobile-optimized responses. Requires Happy Coder app installed separately.',
53
53
  commands: ['happy-start'],
54
- hooks: ['happy-checkpoint-manager', 'happy-title-generator', 'happy-mode-detector'],
54
+ hooks: ['happy-checkpoint-manager'], // Only include hooks with templates
55
55
  default: false,
56
56
  requiresPostConfig: true,
57
57
  },
@@ -60,7 +60,7 @@ const OPTIONAL_FEATURES = [
60
60
  label: 'GitHub Project Board Integration',
61
61
  description: 'Connect Claude to your GitHub Project Board for automated issue creation, progress tracking, and PR merge automation. Requires gh CLI authentication.',
62
62
  commands: ['github-update', 'github-task-start'],
63
- hooks: ['github-progress-hook', 'issue-completion-detector'],
63
+ hooks: ['github-progress-hook'], // Only include hooks with templates
64
64
  default: true,
65
65
  requiresPostConfig: true,
66
66
  },
@@ -1818,6 +1818,25 @@ export async function runInit(options = {}) {
1818
1818
  const enabledFeatures = OPTIONAL_FEATURES.filter((f) => selectedFeatures.includes(f.name));
1819
1819
  const featuresRequiringConfig = enabledFeatures.filter((f) => f.requiresPostConfig);
1820
1820
 
1821
+ // Collect feature-specific commands and hooks to deploy
1822
+ const featureCommands = [];
1823
+ const featureHooks = [];
1824
+ for (const feature of enabledFeatures) {
1825
+ featureCommands.push(...feature.commands);
1826
+ featureHooks.push(...feature.hooks);
1827
+ }
1828
+
1829
+ if (featureCommands.length > 0) {
1830
+ console.log('');
1831
+ console.log(chalk.green(` ✓ Selected features will add ${featureCommands.length} command(s):`));
1832
+ console.log(chalk.dim(` ${featureCommands.map(c => '/' + c).join(', ')}`));
1833
+ }
1834
+
1835
+ if (featureHooks.length > 0) {
1836
+ console.log(chalk.green(` ✓ Selected features will add ${featureHooks.length} hook(s):`));
1837
+ console.log(chalk.dim(` ${featureHooks.join(', ')}`));
1838
+ }
1839
+
1821
1840
  if (featuresRequiringConfig.length > 0) {
1822
1841
  console.log('');
1823
1842
  console.log(chalk.yellow(' ℹ The following features require configuration after installation:'));
@@ -1878,15 +1897,21 @@ export async function runInit(options = {}) {
1878
1897
  },
1879
1898
  ]);
1880
1899
 
1881
- // Always include required commands
1900
+ // Always include required commands AND feature-specific commands
1882
1901
  const requiredCommands = AVAILABLE_COMMANDS.filter(c => c.required).map(c => c.name);
1883
- const finalCommands = [...new Set([...requiredCommands, ...selectedCommands])];
1902
+ const finalCommands = [...new Set([...requiredCommands, ...selectedCommands, ...featureCommands])];
1884
1903
 
1885
1904
  if (finalCommands.length === 0) {
1886
1905
  showWarning('No commands selected. Nothing to install.');
1887
1906
  return;
1888
1907
  }
1889
1908
 
1909
+ // Show what feature commands were auto-added
1910
+ const autoAddedCommands = featureCommands.filter(c => !selectedCommands.includes(c) && !requiredCommands.includes(c));
1911
+ if (autoAddedCommands.length > 0) {
1912
+ console.log(chalk.cyan(` ℹ Auto-including ${autoAddedCommands.length} feature command(s): ${autoAddedCommands.map(c => '/' + c).join(', ')}`));
1913
+ }
1914
+
1890
1915
  console.log('');
1891
1916
 
1892
1917
  // Step 6: Check for existing commands that would be overwritten
@@ -2181,6 +2206,45 @@ export async function runInit(options = {}) {
2181
2206
  console.log(chalk.cyan(`\n 📁 Backed up ${backedUpFiles.length} file(s) to .claude/backups/`));
2182
2207
  }
2183
2208
 
2209
+ // Step 6b: Deploy feature-specific hooks
2210
+ const deployedHooks = [];
2211
+ const failedHooks = [];
2212
+
2213
+ if (featureHooks.length > 0) {
2214
+ console.log(chalk.bold('\nStep 6b: Deploying feature hooks\n'));
2215
+
2216
+ for (const hookName of featureHooks) {
2217
+ try {
2218
+ const hookPath = join(hooksDir, `${hookName}.js`);
2219
+
2220
+ // Skip if already exists
2221
+ if (existsSync(hookPath)) {
2222
+ console.log(chalk.blue(` ○ hooks/${hookName}.js exists (preserved)`));
2223
+ continue;
2224
+ }
2225
+
2226
+ // Try to load from templates/hooks/ folder
2227
+ const templatePath = join(__dirname, '..', '..', 'templates', 'hooks', `${hookName}.template.js`);
2228
+ if (existsSync(templatePath)) {
2229
+ const hookContent = readFileSync(templatePath, 'utf8');
2230
+ writeFileSync(hookPath, hookContent, 'utf8');
2231
+ deployedHooks.push(hookName);
2232
+ console.log(chalk.green(` ✓ Created hooks/${hookName}.js`));
2233
+ } else {
2234
+ failedHooks.push({ name: hookName, error: 'No template found' });
2235
+ console.log(chalk.yellow(` ⚠ Skipped hooks/${hookName}.js (no template)`));
2236
+ }
2237
+ } catch (error) {
2238
+ failedHooks.push({ name: hookName, error: error.message });
2239
+ console.log(chalk.red(` ✗ Failed: hooks/${hookName}.js - ${error.message}`));
2240
+ }
2241
+ }
2242
+
2243
+ if (deployedHooks.length > 0) {
2244
+ console.log(chalk.green(`\n ✓ Deployed ${deployedHooks.length} feature hook(s)`));
2245
+ }
2246
+ }
2247
+
2184
2248
  // Step 7: Generate INDEX.md
2185
2249
  const indexPath = join(commandsDir, 'INDEX.md');
2186
2250
  const indexContent = generateIndexFile(installed, projectName);
@@ -2308,6 +2372,15 @@ export async function runInit(options = {}) {
2308
2372
  },
2309
2373
  // Track which features need post-install configuration
2310
2374
  _pendingConfiguration: featuresRequiringConfig.map((f) => f.name),
2375
+ // Track what was deployed for verification
2376
+ _deployment: {
2377
+ commands: installed,
2378
+ featureCommands: featureCommands.filter(c => installed.includes(c)),
2379
+ hooks: deployedHooks,
2380
+ featureHooks: featureHooks,
2381
+ enabledFeatures: selectedFeatures,
2382
+ timestamp: new Date().toISOString(),
2383
+ },
2311
2384
  };
2312
2385
 
2313
2386
  if (!existsSync(techStackPath)) {
@@ -1,5 +1,35 @@
1
1
  {
2
2
  "releases": [
3
+ {
4
+ "version": "1.0.14",
5
+ "date": "2026-01-30",
6
+ "summary": "Fix: Complete feature deployment - hooks, commands, and auto-selection now work correctly",
7
+ "highlights": [
8
+ "Feature commands are now auto-included when a feature is selected",
9
+ "Feature hooks are now properly deployed during init",
10
+ "OPTIONAL_FEATURES cleaned up to only reference existing templates",
11
+ "tech-stack.json now tracks deployed commands and hooks for verification",
12
+ "Step 6b added to show feature hook deployment progress"
13
+ ],
14
+ "newFeatures": {
15
+ "commands": [],
16
+ "agents": [],
17
+ "skills": [],
18
+ "hooks": [],
19
+ "other": [
20
+ {
21
+ "name": "feature-auto-deployment",
22
+ "description": "When selecting a feature, its commands and hooks are automatically deployed"
23
+ },
24
+ {
25
+ "name": "deployment-tracking",
26
+ "description": "tech-stack.json now includes _deployment section tracking what was installed"
27
+ }
28
+ ]
29
+ },
30
+ "breaking": [],
31
+ "deprecated": []
32
+ },
3
33
  {
4
34
  "version": "1.0.13",
5
35
  "date": "2026-01-30",