claude-code-autoconfig 1.0.143 → 1.0.144

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.
@@ -1,5 +1,9 @@
1
1
  <!-- @description Manages and installs updates to Claude Code configuration. -->
2
2
  <!-- @version 1 -->
3
+ <!-- @response updates-available | Displays list of pending updates with install/review options. -->
4
+ <!-- @response up-to-date | All updates are already installed. -->
5
+ <!-- @sideeffect Pulls latest update files from npm, executes update instructions, tracks applied updates -->
6
+ <!-- @example /autoconfig-update | Check for and install configuration updates -->
3
7
 
4
8
  <!-- @applied
5
9
  -->
@@ -1,5 +1,9 @@
1
- <!-- @description The command you just ran. Analyzes your project and populates CLAUDE.md with real context. Re-run anytime your stack changes. -->
1
+ <!-- @description Analyzes your project and populates CLAUDE.md with real context. Re-run anytime your stack changes. -->
2
2
  <!-- @version 8 -->
3
+ <!-- @response success | CLAUDE.md populated, settings configured, docs opened in browser. -->
4
+ <!-- @response no-project | No project detected — asks user to confirm directory. -->
5
+ <!-- @sideeffect Generates CLAUDE.md, settings.json, hooks, and MEMORY.md -->
6
+ <!-- @example /autoconfig | Analyze project and configure Claude -->
3
7
 
4
8
  # Autoconfig
5
9
 
@@ -1,5 +1,9 @@
1
1
  <!-- @description Runs tests, then stages all changes, generates a conventional commit message, commits, and pushes. -->
2
2
  <!-- @version 1 -->
3
+ <!-- @response success | Changes committed and pushed to current branch. -->
4
+ <!-- @response test-failure | Tests failed — no commit made. -->
5
+ <!-- @sideeffect Runs test suite, stages all changes, creates git commit, pushes to remote -->
6
+ <!-- @example /commit-and-push | Run tests, commit, and push -->
3
7
 
4
8
  # Commit and Push
5
9
 
@@ -1,5 +1,8 @@
1
1
  <!-- @description (Experimental) Enable Claude to log tech debt it encounters into .claude/retro. -->
2
2
  <!-- @version 1 -->
3
+ <!-- @response success | Retro enabled — Claude will log tech debt to .claude/retro/ when encountered. -->
4
+ <!-- @sideeffect Creates .claude/retro/README.md, adds agent, updates CLAUDE.md -->
5
+ <!-- @example /enable-retro | Activate tech debt tracking -->
3
6
 
4
7
  # Enable Retro
5
8
 
@@ -1,5 +1,15 @@
1
1
  <!-- @screenshotDir /c/Users/andre/OneDrive/Pictures/Screenshots 1 -->
2
+ <!-- @description Get the latest screenshot(s) and display them. -->
2
3
  <!-- @version 1 -->
4
+ <!-- @param count | integer | optional | Number of screenshots to display. Use /gls-N syntax. Default: 1. Min: 1. -->
5
+ <!-- @param path | string | optional | Screenshot directory path. Saved for future use. Auto-detected if omitted. -->
6
+ <!-- @response success | Displays requested screenshot(s) from newest to oldest. -->
7
+ <!-- @response no-screenshots | Directory exists but contains no image files. -->
8
+ <!-- @response no-directory | Unable to detect screenshot directory — prompts for path. -->
9
+ <!-- @sideeffect Saves detected screenshot path to command file on first run -->
10
+ <!-- @example /gls | Display the most recent screenshot -->
11
+ <!-- @example /gls-3 | Display the 3 most recent screenshots -->
12
+ <!-- @example /gls /path/to/dir | Use a specific screenshot directory -->
3
13
  Get the latest screenshot(s) and display them.
4
14
 
5
15
  Usage:
@@ -1,5 +1,14 @@
1
1
  <!-- @description Recovers conversation context from the session transcript after compaction. -->
2
2
  <!-- @version 4 -->
3
+ <!-- @param minutes | integer | required | How far back to recover, in minutes. Leading dash optional. Min: 1. -->
4
+ <!-- @param --show | flag | optional | Opens the extracted transcript in your default editor. -->
5
+ <!-- @response success | ~{tokens} tokens recovered ({N} messages across {sessions} session(s), last {minutes} min). -->
6
+ <!-- @response no-transcript | No transcript files found. -->
7
+ <!-- @response no-messages | No messages found in the requested time range. -->
8
+ <!-- @sideeffect Reads .jsonl transcripts from ~/.claude/projects/, writes temp file -->
9
+ <!-- @example /recover-context -60 | Last 60 minutes of conversation -->
10
+ <!-- @example /recover-context 120 | Last 2 hours (dash optional) -->
11
+ <!-- @example /recover-context -60 --show | Last 60 min + open transcript file -->
3
12
  Recover recent conversation context from the raw session transcript on disk.
4
13
 
5
14
  Usage:
@@ -1,5 +1,9 @@
1
1
  <!-- @description Opens the interactive docs in your browser. -->
2
2
  <!-- @version 2 -->
3
+ <!-- @response success | Docs synced and opened in default browser. -->
4
+ <!-- @response no-docs | Docs file not found — run /autoconfig first. -->
5
+ <!-- @sideeffect Runs sync-docs.js to refresh content, opens browser -->
6
+ <!-- @example /show-docs | Open interactive documentation -->
3
7
 
4
8
  # Show Docs
5
9
 
@@ -1,5 +1,8 @@
1
1
  <!-- @description Re-analyzes your project and updates CLAUDE.md to reflect current state. -->
2
2
  <!-- @version 2 -->
3
+ <!-- @response success | CLAUDE.md updated with current project state. -->
4
+ <!-- @sideeffect Overwrites auto-generated sections of CLAUDE.md, preserves Discoveries section -->
5
+ <!-- @example /sync-claude-md | Re-scan project and update CLAUDE.md -->
3
6
 
4
7
  # Sync CLAUDE.md
5
8
 
@@ -1,5 +1,12 @@
1
1
  <!-- @description Runs your test suite. Auto-detects Jest, Vitest, Pytest, Go, RSpec, or falls back to npm test. -->
2
2
  <!-- @version 1 -->
3
+ <!-- @param scope | string | optional | File, directory, or pattern to limit test run. Runs full suite if omitted. -->
4
+ <!-- @response success | Test suite passes. -->
5
+ <!-- @response failure | Test suite fails with non-zero exit code. -->
6
+ <!-- @sideeffect Executes detected test runner command -->
7
+ <!-- @example /test | Run full test suite -->
8
+ <!-- @example /test src/auth | Run tests in src/auth directory -->
9
+ <!-- @example /test --coverage | Run tests with coverage report -->
3
10
 
4
11
  # Run Tests
5
12
 
@@ -1,5 +1,9 @@
1
1
  <!-- @description Validates your claude-code-autoconfig installation against the latest published version. -->
2
2
  <!-- @version 1 -->
3
+ <!-- @response valid | Install validated — all checks passed. -->
4
+ <!-- @response issues | Validation found {N} issue(s) with fix suggestions. -->
5
+ <!-- @sideeffect Read-only. Downloads latest package to temp dir for comparison, then cleans up. -->
6
+ <!-- @example /validate-cca-install | Run full installation validation -->
3
7
  Validate the current claude-code-autoconfig installation. Reports what's correct, what's outdated, and what's missing. **Does not modify anything.**
4
8
 
5
9
  Usage:
@@ -34,7 +34,7 @@
34
34
  }
35
35
 
36
36
  .container {
37
- max-width: 900px;
37
+ max-width: 1100px;
38
38
  margin: 0 auto;
39
39
  padding: 40px 20px;
40
40
  min-height: 100vh;
@@ -395,8 +395,7 @@
395
395
 
396
396
  .tree-content {
397
397
  padding: 16px 16px 8px 16px;
398
- overflow-y: auto;
399
- overflow-x: hidden;
398
+ overflow: auto;
400
399
  flex: 1;
401
400
  min-height: 0;
402
401
  }
@@ -745,7 +744,7 @@
745
744
  background: var(--bg-secondary);
746
745
  border: 1px solid var(--bg-elevated);
747
746
  border-radius: 12px;
748
- max-width: 800px;
747
+ max-width: 1000px;
749
748
  width: 100%;
750
749
  max-height: 80vh;
751
750
  display: flex;
@@ -1201,7 +1200,7 @@
1201
1200
  item.style.position = '';
1202
1201
  });
1203
1202
 
1204
- treeSide.style.width = (maxWidth + 32) + 'px';
1203
+ treeSide.style.width = Math.round((maxWidth + 32) * 1.25) + 'px';
1205
1204
  treeSide.style.paddingLeft = '8px';
1206
1205
  treeSide.style.paddingRight = '8px';
1207
1206
  }
@@ -1268,7 +1267,7 @@
1268
1267
  title: '.claude/ Directory',
1269
1268
  desc: 'Commands, rules, settings, and these docs. Keeps configuration organized as your project grows.'
1270
1269
  },
1271
- 'rules': {
1270
+ 'rules': {
1272
1271
  title: 'rules/',
1273
1272
  desc: 'Path-scoped context that loads when Claude works on matching files.'
1274
1273
  },
@@ -1290,57 +1289,57 @@
1290
1289
  },
1291
1290
  'autoconfig-update': {
1292
1291
  title: 'autoconfig-update.md',
1293
- desc: 'Manages and installs updates to Claude Code configuration.',
1292
+ desc: 'Manages and installs updates to Claude Code configuration.<div style="margin-top: 12px;"><strong>Parameters</strong><div style="margin-top: 4px; opacity: 0.6;">None</div></div><div style="margin-top: 12px;"><strong>Responses</strong><table style="width: 100%; margin-top: 6px; border-collapse: collapse; font-size: 0.9em;"><tr style="text-align: left; border-bottom: 1px solid var(--border);"><th style="padding: 4px 8px;">Status</th><th style="padding: 4px 8px;">Description</th></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>updates-available</code></td><td style="padding: 4px 8px;">Displays list of pending updates with install/review options.</td></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>up-to-date</code></td><td style="padding: 4px 8px;">All updates are already installed.</td></tr></table></div><div style="margin-top: 12px;"><strong>Side Effects</strong><div style="margin-top: 4px; font-size: 0.9em;">Pulls latest update files from npm, executes update instructions, tracks applied updates</div></div><div style="margin-top: 12px;"><strong>Examples</strong><div style="margin-top: 6px; background: var(--bg-elevated); border-radius: 6px; padding: 8px 12px; font-family: monospace; font-size: 0.85em;"><div><code>/autoconfig-update</code> <span style="opacity: 0.6;">— Check for and install configuration updates</span></div></div></div>',
1294
1293
  trigger: '/autoconfig-update'
1295
1294
  },
1296
1295
  'autoconfig': {
1297
1296
  title: 'autoconfig.md',
1298
- desc: 'The command you just ran. Analyzes your project and populates CLAUDE.md with real context. Re-run anytime your stack changes.',
1297
+ desc: 'Analyzes your project and populates CLAUDE.md with real context. Re-run anytime your stack changes.<div style="margin-top: 12px;"><strong>Parameters</strong><div style="margin-top: 4px; opacity: 0.6;">None</div></div><div style="margin-top: 12px;"><strong>Responses</strong><table style="width: 100%; margin-top: 6px; border-collapse: collapse; font-size: 0.9em;"><tr style="text-align: left; border-bottom: 1px solid var(--border);"><th style="padding: 4px 8px;">Status</th><th style="padding: 4px 8px;">Description</th></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>success</code></td><td style="padding: 4px 8px;">CLAUDE.md populated, settings configured, docs opened in browser.</td></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>no-project</code></td><td style="padding: 4px 8px;">No project detected — asks user to confirm directory.</td></tr></table></div><div style="margin-top: 12px;"><strong>Side Effects</strong><div style="margin-top: 4px; font-size: 0.9em;">Generates CLAUDE.md, settings.json, hooks, and MEMORY.md</div></div><div style="margin-top: 12px;"><strong>Examples</strong><div style="margin-top: 6px; background: var(--bg-elevated); border-radius: 6px; padding: 8px 12px; font-family: monospace; font-size: 0.85em;"><div><code>/autoconfig</code> <span style="opacity: 0.6;">— Analyze project and configure Claude</span></div></div></div>',
1299
1298
  trigger: '/autoconfig'
1300
1299
  },
1301
1300
  'commit-and-push': {
1302
1301
  title: 'commit-and-push.md',
1303
- desc: 'Runs tests, then stages all changes, generates a conventional commit message, commits, and pushes.',
1302
+ desc: 'Runs tests, then stages all changes, generates a conventional commit message, commits, and pushes.<div style="margin-top: 12px;"><strong>Parameters</strong><div style="margin-top: 4px; opacity: 0.6;">None</div></div><div style="margin-top: 12px;"><strong>Responses</strong><table style="width: 100%; margin-top: 6px; border-collapse: collapse; font-size: 0.9em;"><tr style="text-align: left; border-bottom: 1px solid var(--border);"><th style="padding: 4px 8px;">Status</th><th style="padding: 4px 8px;">Description</th></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>success</code></td><td style="padding: 4px 8px;">Changes committed and pushed to current branch.</td></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>test-failure</code></td><td style="padding: 4px 8px;">Tests failed — no commit made.</td></tr></table></div><div style="margin-top: 12px;"><strong>Side Effects</strong><div style="margin-top: 4px; font-size: 0.9em;">Runs test suite, stages all changes, creates git commit, pushes to remote</div></div><div style="margin-top: 12px;"><strong>Examples</strong><div style="margin-top: 6px; background: var(--bg-elevated); border-radius: 6px; padding: 8px 12px; font-family: monospace; font-size: 0.85em;"><div><code>/commit-and-push</code> <span style="opacity: 0.6;">— Run tests, commit, and push</span></div></div></div>',
1304
1303
  trigger: '/commit-and-push'
1305
1304
  },
1306
1305
  'enable-retro': {
1307
1306
  title: 'enable-retro.md',
1308
- desc: '(Experimental) Enable Claude to log tech debt it encounters into .claude/retro.',
1307
+ desc: '(Experimental) Enable Claude to log tech debt it encounters into .claude/retro.<div style="margin-top: 12px;"><strong>Parameters</strong><div style="margin-top: 4px; opacity: 0.6;">None</div></div><div style="margin-top: 12px;"><strong>Responses</strong><table style="width: 100%; margin-top: 6px; border-collapse: collapse; font-size: 0.9em;"><tr style="text-align: left; border-bottom: 1px solid var(--border);"><th style="padding: 4px 8px;">Status</th><th style="padding: 4px 8px;">Description</th></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>success</code></td><td style="padding: 4px 8px;">Retro enabled — Claude will log tech debt to .claude/retro/ when encountered.</td></tr></table></div><div style="margin-top: 12px;"><strong>Side Effects</strong><div style="margin-top: 4px; font-size: 0.9em;">Creates .claude/retro/README.md, adds agent, updates CLAUDE.md</div></div><div style="margin-top: 12px;"><strong>Examples</strong><div style="margin-top: 6px; background: var(--bg-elevated); border-radius: 6px; padding: 8px 12px; font-family: monospace; font-size: 0.85em;"><div><code>/enable-retro</code> <span style="opacity: 0.6;">— Activate tech debt tracking</span></div></div></div>',
1309
1308
  trigger: '/enable-retro'
1310
1309
  },
1311
1310
  'gls': {
1312
1311
  title: 'gls.md',
1313
- desc: 'gls.md in commands/<div style="margin-top: 10px;"><strong>Usage:</strong><ul style="margin: 6px 0 0 0; padding-left: 20px; list-style: disc;"><li><code>/gls</code> - Get and display the most recent screenshot</li><li><code>/gls-2</code> - Get and display the 2 most recent screenshots</li><li><code>/gls-3</code> - Get and display the 3 most recent screenshots</li><li><code>/gls-N</code> - Get and display the N most recent screenshots</li><li><code>/gls /path/to/dir</code> - Use a specific directory and save it</li></ul></div>',
1312
+ desc: 'Get the latest screenshot(s) and display them.<div style="margin-top: 12px;"><strong>Parameters</strong><table style="width: 100%; margin-top: 6px; border-collapse: collapse; font-size: 0.9em;"><tr style="text-align: left; border-bottom: 1px solid var(--border);"><th style="padding: 4px 8px;">Name</th><th style="padding: 4px 8px;">Type</th><th style="padding: 4px 8px;">Required</th><th style="padding: 4px 8px;">Description</th></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>count</code></td><td style="padding: 4px 8px;"><code>integer</code></td><td style="padding: 4px 8px;">optional</td><td style="padding: 4px 8px;">Number of screenshots to display. Use /gls-N syntax. Default: 1. Min: 1.</td></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>path</code></td><td style="padding: 4px 8px;"><code>string</code></td><td style="padding: 4px 8px;">optional</td><td style="padding: 4px 8px;">Screenshot directory path. Saved for future use. Auto-detected if omitted.</td></tr></table></div><div style="margin-top: 12px;"><strong>Responses</strong><table style="width: 100%; margin-top: 6px; border-collapse: collapse; font-size: 0.9em;"><tr style="text-align: left; border-bottom: 1px solid var(--border);"><th style="padding: 4px 8px;">Status</th><th style="padding: 4px 8px;">Description</th></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>success</code></td><td style="padding: 4px 8px;">Displays requested screenshot(s) from newest to oldest.</td></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>no-screenshots</code></td><td style="padding: 4px 8px;">Directory exists but contains no image files.</td></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>no-directory</code></td><td style="padding: 4px 8px;">Unable to detect screenshot directory — prompts for path.</td></tr></table></div><div style="margin-top: 12px;"><strong>Side Effects</strong><div style="margin-top: 4px; font-size: 0.9em;">Saves detected screenshot path to command file on first run</div></div><div style="margin-top: 12px;"><strong>Examples</strong><div style="margin-top: 6px; background: var(--bg-elevated); border-radius: 6px; padding: 8px 12px; font-family: monospace; font-size: 0.85em;"><div><code>/gls</code> <span style="opacity: 0.6;">— Display the most recent screenshot</span></div><div><code>/gls-3</code> <span style="opacity: 0.6;">— Display the 3 most recent screenshots</span></div><div><code>/gls /path/to/dir</code> <span style="opacity: 0.6;">— Use a specific screenshot directory</span></div></div></div>',
1314
1313
  trigger: '/gls'
1315
1314
  },
1316
1315
  'publish': {
1317
1316
  title: 'publish.md',
1318
- desc: 'Runs tests, bumps version, commits, and publishes to npm.',
1317
+ desc: 'Runs tests, bumps version, commits, and publishes to npm.<div style="margin-top: 12px;"><strong>Parameters</strong><div style="margin-top: 4px; opacity: 0.6;">None</div></div>',
1319
1318
  trigger: '/publish'
1320
1319
  },
1321
1320
  'recover-context': {
1322
1321
  title: 'recover-context.md',
1323
- desc: 'Recovers conversation context from the session transcript after compaction.<div style="margin-top: 10px;"><strong>Usage:</strong><ul style="margin: 6px 0 0 0; padding-left: 20px; list-style: disc;"><li><code>/recover-context -60</code> last 60 minutes of conversation</li><li><code>/recover-context -60 --show</code> same, but also opens the transcript in your editor</li></ul></div>',
1322
+ desc: 'Recovers conversation context from the session transcript after compaction.<div style="margin-top: 12px;"><strong>Parameters</strong><table style="width: 100%; margin-top: 6px; border-collapse: collapse; font-size: 0.9em;"><tr style="text-align: left; border-bottom: 1px solid var(--border);"><th style="padding: 4px 8px;">Name</th><th style="padding: 4px 8px;">Type</th><th style="padding: 4px 8px;">Required</th><th style="padding: 4px 8px;">Description</th></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>minutes</code></td><td style="padding: 4px 8px;"><code>integer</code></td><td style="padding: 4px 8px;">required</td><td style="padding: 4px 8px;">How far back to recover, in minutes. Leading dash optional. Min: 1.</td></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>--show</code></td><td style="padding: 4px 8px;"><code>flag</code></td><td style="padding: 4px 8px;">optional</td><td style="padding: 4px 8px;">Opens the extracted transcript in your default editor.</td></tr></table></div><div style="margin-top: 12px;"><strong>Responses</strong><table style="width: 100%; margin-top: 6px; border-collapse: collapse; font-size: 0.9em;"><tr style="text-align: left; border-bottom: 1px solid var(--border);"><th style="padding: 4px 8px;">Status</th><th style="padding: 4px 8px;">Description</th></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>success</code></td><td style="padding: 4px 8px;">~{tokens} tokens recovered ({N} messages across {sessions} session(s), last {minutes} min).</td></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>no-transcript</code></td><td style="padding: 4px 8px;">No transcript files found.</td></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>no-messages</code></td><td style="padding: 4px 8px;">No messages found in the requested time range.</td></tr></table></div><div style="margin-top: 12px;"><strong>Side Effects</strong><div style="margin-top: 4px; font-size: 0.9em;">Reads .jsonl transcripts from ~/.claude/projects/, writes temp file</div></div><div style="margin-top: 12px;"><strong>Examples</strong><div style="margin-top: 6px; background: var(--bg-elevated); border-radius: 6px; padding: 8px 12px; font-family: monospace; font-size: 0.85em;"><div><code>/recover-context -60</code> <span style="opacity: 0.6;">— Last 60 minutes of conversation</span></div><div><code>/recover-context 120</code> <span style="opacity: 0.6;">— Last 2 hours (dash optional)</span></div><div><code>/recover-context -60 --show</code> <span style="opacity: 0.6;">— Last 60 min + open transcript file</span></div></div></div>',
1324
1323
  trigger: '/recover-context'
1325
1324
  },
1326
1325
  'show-docs': {
1327
1326
  title: 'show-docs.md',
1328
- desc: 'Opens the interactive docs in your browser.',
1327
+ desc: 'Opens the interactive docs in your browser.<div style="margin-top: 12px;"><strong>Parameters</strong><div style="margin-top: 4px; opacity: 0.6;">None</div></div><div style="margin-top: 12px;"><strong>Responses</strong><table style="width: 100%; margin-top: 6px; border-collapse: collapse; font-size: 0.9em;"><tr style="text-align: left; border-bottom: 1px solid var(--border);"><th style="padding: 4px 8px;">Status</th><th style="padding: 4px 8px;">Description</th></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>success</code></td><td style="padding: 4px 8px;">Docs synced and opened in default browser.</td></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>no-docs</code></td><td style="padding: 4px 8px;">Docs file not found — run /autoconfig first.</td></tr></table></div><div style="margin-top: 12px;"><strong>Side Effects</strong><div style="margin-top: 4px; font-size: 0.9em;">Runs sync-docs.js to refresh content, opens browser</div></div><div style="margin-top: 12px;"><strong>Examples</strong><div style="margin-top: 6px; background: var(--bg-elevated); border-radius: 6px; padding: 8px 12px; font-family: monospace; font-size: 0.85em;"><div><code>/show-docs</code> <span style="opacity: 0.6;">— Open interactive documentation</span></div></div></div>',
1329
1328
  trigger: '/show-docs'
1330
1329
  },
1331
1330
  'sync-claude-md': {
1332
1331
  title: 'sync-claude-md.md',
1333
- desc: 'Re-analyzes your project and updates CLAUDE.md to reflect current state.',
1332
+ desc: 'Re-analyzes your project and updates CLAUDE.md to reflect current state.<div style="margin-top: 12px;"><strong>Parameters</strong><div style="margin-top: 4px; opacity: 0.6;">None</div></div><div style="margin-top: 12px;"><strong>Responses</strong><table style="width: 100%; margin-top: 6px; border-collapse: collapse; font-size: 0.9em;"><tr style="text-align: left; border-bottom: 1px solid var(--border);"><th style="padding: 4px 8px;">Status</th><th style="padding: 4px 8px;">Description</th></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>success</code></td><td style="padding: 4px 8px;">CLAUDE.md updated with current project state.</td></tr></table></div><div style="margin-top: 12px;"><strong>Side Effects</strong><div style="margin-top: 4px; font-size: 0.9em;">Overwrites auto-generated sections of CLAUDE.md, preserves Discoveries section</div></div><div style="margin-top: 12px;"><strong>Examples</strong><div style="margin-top: 6px; background: var(--bg-elevated); border-radius: 6px; padding: 8px 12px; font-family: monospace; font-size: 0.85em;"><div><code>/sync-claude-md</code> <span style="opacity: 0.6;">— Re-scan project and update CLAUDE.md</span></div></div></div>',
1334
1333
  trigger: '/sync-claude-md'
1335
1334
  },
1336
1335
  'test': {
1337
1336
  title: 'test.md',
1338
- desc: 'Runs your test suite. Auto-detects Jest, Vitest, Pytest, Go, RSpec, or falls back to npm test.',
1337
+ desc: 'Runs your test suite. Auto-detects Jest, Vitest, Pytest, Go, RSpec, or falls back to npm test.<div style="margin-top: 12px;"><strong>Parameters</strong><table style="width: 100%; margin-top: 6px; border-collapse: collapse; font-size: 0.9em;"><tr style="text-align: left; border-bottom: 1px solid var(--border);"><th style="padding: 4px 8px;">Name</th><th style="padding: 4px 8px;">Type</th><th style="padding: 4px 8px;">Required</th><th style="padding: 4px 8px;">Description</th></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>scope</code></td><td style="padding: 4px 8px;"><code>string</code></td><td style="padding: 4px 8px;">optional</td><td style="padding: 4px 8px;">File, directory, or pattern to limit test run. Runs full suite if omitted.</td></tr></table></div><div style="margin-top: 12px;"><strong>Responses</strong><table style="width: 100%; margin-top: 6px; border-collapse: collapse; font-size: 0.9em;"><tr style="text-align: left; border-bottom: 1px solid var(--border);"><th style="padding: 4px 8px;">Status</th><th style="padding: 4px 8px;">Description</th></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>success</code></td><td style="padding: 4px 8px;">Test suite passes.</td></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>failure</code></td><td style="padding: 4px 8px;">Test suite fails with non-zero exit code.</td></tr></table></div><div style="margin-top: 12px;"><strong>Side Effects</strong><div style="margin-top: 4px; font-size: 0.9em;">Executes detected test runner command</div></div><div style="margin-top: 12px;"><strong>Examples</strong><div style="margin-top: 6px; background: var(--bg-elevated); border-radius: 6px; padding: 8px 12px; font-family: monospace; font-size: 0.85em;"><div><code>/test</code> <span style="opacity: 0.6;">— Run full test suite</span></div><div><code>/test src/auth</code> <span style="opacity: 0.6;">— Run tests in src/auth directory</span></div><div><code>/test --coverage</code> <span style="opacity: 0.6;">— Run tests with coverage report</span></div></div></div>',
1339
1338
  trigger: '/test'
1340
1339
  },
1341
1340
  'validate-cca-install': {
1342
1341
  title: 'validate-cca-install.md',
1343
- desc: 'Validates your claude-code-autoconfig installation against the latest published version.<div style="margin-top: 10px;"><strong>Usage:</strong><ul style="margin: 6px 0 0 0; padding-left: 20px; list-style: disc;"><li><code>/validate-cca-install</code> run a full validation check</li></ul></div>',
1342
+ desc: 'Validates your claude-code-autoconfig installation against the latest published version.<div style="margin-top: 12px;"><strong>Parameters</strong><div style="margin-top: 4px; opacity: 0.6;">None</div></div><div style="margin-top: 12px;"><strong>Responses</strong><table style="width: 100%; margin-top: 6px; border-collapse: collapse; font-size: 0.9em;"><tr style="text-align: left; border-bottom: 1px solid var(--border);"><th style="padding: 4px 8px;">Status</th><th style="padding: 4px 8px;">Description</th></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>valid</code></td><td style="padding: 4px 8px;">Install validated — all checks passed.</td></tr><tr style="border-bottom: 1px solid var(--border);"><td style="padding: 4px 8px; white-space: nowrap;"><code>issues</code></td><td style="padding: 4px 8px;">Validation found {N} issue(s) with fix suggestions.</td></tr></table></div><div style="margin-top: 12px;"><strong>Side Effects</strong><div style="margin-top: 4px; font-size: 0.9em;">Read-only. Downloads latest package to temp dir for comparison, then cleans up.</div></div><div style="margin-top: 12px;"><strong>Examples</strong><div style="margin-top: 6px; background: var(--bg-elevated); border-radius: 6px; padding: 8px 12px; font-family: monospace; font-size: 0.85em;"><div><code>/validate-cca-install</code> <span style="opacity: 0.6;">— Run full installation validation</span></div></div></div>',
1344
1343
  trigger: '/validate-cca-install'
1345
1344
  },
1346
1345
  'create-retro-item-agent': {
@@ -1579,7 +1578,7 @@ CRITICAL: A plausible-looking cause from code reading is NOT confirmed evidence.
1579
1578
 
1580
1579
  > Run \`/autoconfig\` to populate this based on your project.`
1581
1580
  },
1582
- 'autoconfig-update': {
1581
+ 'autoconfig-update': {
1583
1582
  filename: 'autoconfig-update.md',
1584
1583
  content: `<!-- @applied
1585
1584
  -->
@@ -82,33 +82,103 @@ function extractDescription(content, ext) {
82
82
  }
83
83
 
84
84
  /**
85
- * Extract usage lines from a command file's content.
86
- * Looks for a "Usage:" section and returns HTML-formatted usage list.
85
+ * Extract structured Swagger-style metadata from command file content.
86
+ * Parses @param, @response, @sideeffect, and @example comments.
87
87
  */
88
- function extractUsage(content) {
88
+ function extractSwaggerMeta(content) {
89
+ const params = [];
90
+ const responses = [];
91
+ const examples = [];
92
+ let sideeffect = null;
93
+
89
94
  const lines = content.split(/\r?\n/);
90
- const usageIdx = lines.findIndex(l => /^Usage:$/i.test(l.trim()));
91
- if (usageIdx === -1) return null;
92
-
93
- const usageLines = [];
94
- for (let i = usageIdx + 1; i < lines.length; i++) {
95
- const line = lines[i].trim();
96
- if (line.startsWith('- ')) {
97
- // Convert markdown backticks to <code> tags and strip leading "- "
98
- const item = line.slice(2)
99
- .replace(/`([^`]+)`/g, '<code>$1</code>');
100
- usageLines.push(item);
101
- } else if (line === '') {
102
- continue; // skip blank lines within usage block
103
- } else {
104
- break; // end of usage block
95
+ for (const line of lines) {
96
+ const paramMatch = line.match(/<!--\s*@param\s+(.+?)\s*-->/);
97
+ if (paramMatch) {
98
+ const parts = paramMatch[1].split('|').map(s => s.trim());
99
+ if (parts.length >= 4) {
100
+ params.push({ name: parts[0], type: parts[1], required: parts[2], desc: parts[3] });
101
+ }
102
+ }
103
+ const respMatch = line.match(/<!--\s*@response\s+(.+?)\s*-->/);
104
+ if (respMatch) {
105
+ const parts = respMatch[1].split('|').map(s => s.trim());
106
+ if (parts.length >= 2) {
107
+ responses.push({ status: parts[0], desc: parts[1] });
108
+ }
109
+ }
110
+ const exMatch = line.match(/<!--\s*@example\s+(.+?)\s*-->/);
111
+ if (exMatch) {
112
+ const parts = exMatch[1].split('|').map(s => s.trim());
113
+ if (parts.length >= 2) {
114
+ examples.push({ usage: parts[0], desc: parts[1] });
115
+ }
116
+ }
117
+ const seMatch = line.match(/<!--\s*@sideeffect\s+(.+?)\s*-->/);
118
+ if (seMatch) {
119
+ sideeffect = seMatch[1].trim();
120
+ }
121
+ }
122
+
123
+ return { params, responses, examples, sideeffect };
124
+ }
125
+
126
+ /**
127
+ * Build Swagger-style HTML from extracted metadata.
128
+ */
129
+ function buildSwaggerHtml(meta) {
130
+ const parts = [];
131
+
132
+ // Parameters table
133
+ if (meta.params.length > 0) {
134
+ let table = '<div style="margin-top: 12px;"><strong>Parameters</strong>';
135
+ table += '<table style="width: 100%; margin-top: 6px; border-collapse: collapse; font-size: 0.9em;">';
136
+ table += '<tr style="text-align: left; border-bottom: 1px solid var(--border);"><th style="padding: 4px 8px;">Name</th><th style="padding: 4px 8px;">Type</th><th style="padding: 4px 8px;">Required</th><th style="padding: 4px 8px;">Description</th></tr>';
137
+ for (const p of meta.params) {
138
+ table += `<tr style="border-bottom: 1px solid var(--border);">`;
139
+ table += `<td style="padding: 4px 8px; white-space: nowrap;"><code>${p.name}</code></td>`;
140
+ table += `<td style="padding: 4px 8px;"><code>${p.type}</code></td>`;
141
+ table += `<td style="padding: 4px 8px;">${p.required}</td>`;
142
+ table += `<td style="padding: 4px 8px;">${p.desc}</td>`;
143
+ table += `</tr>`;
144
+ }
145
+ table += '</table></div>';
146
+ parts.push(table);
147
+ } else {
148
+ parts.push('<div style="margin-top: 12px;"><strong>Parameters</strong><div style="margin-top: 4px; opacity: 0.6;">None</div></div>');
149
+ }
150
+
151
+ // Responses table
152
+ if (meta.responses.length > 0) {
153
+ let table = '<div style="margin-top: 12px;"><strong>Responses</strong>';
154
+ table += '<table style="width: 100%; margin-top: 6px; border-collapse: collapse; font-size: 0.9em;">';
155
+ table += '<tr style="text-align: left; border-bottom: 1px solid var(--border);"><th style="padding: 4px 8px;">Status</th><th style="padding: 4px 8px;">Description</th></tr>';
156
+ for (const r of meta.responses) {
157
+ table += `<tr style="border-bottom: 1px solid var(--border);">`;
158
+ table += `<td style="padding: 4px 8px; white-space: nowrap;"><code>${r.status}</code></td>`;
159
+ table += `<td style="padding: 4px 8px;">${r.desc}</td>`;
160
+ table += `</tr>`;
161
+ }
162
+ table += '</table></div>';
163
+ parts.push(table);
164
+ }
165
+
166
+ // Side effects
167
+ if (meta.sideeffect) {
168
+ parts.push(`<div style="margin-top: 12px;"><strong>Side Effects</strong><div style="margin-top: 4px; font-size: 0.9em;">${meta.sideeffect}</div></div>`);
169
+ }
170
+
171
+ // Examples
172
+ if (meta.examples.length > 0) {
173
+ let html = '<div style="margin-top: 12px;"><strong>Examples</strong><div style="margin-top: 6px; background: var(--bg-elevated); border-radius: 6px; padding: 8px 12px; font-family: monospace; font-size: 0.85em;">';
174
+ for (const ex of meta.examples) {
175
+ html += `<div><code>${ex.usage}</code> <span style="opacity: 0.6;">— ${ex.desc}</span></div>`;
105
176
  }
177
+ html += '</div></div>';
178
+ parts.push(html);
106
179
  }
107
- if (usageLines.length === 0) return null;
108
180
 
109
- // Build an HTML list
110
- const listItems = usageLines.map(l => `<li>${l}</li>`).join('');
111
- return `<div style="margin-top: 10px;"><strong>Usage:</strong><ul style="margin: 6px 0 0 0; padding-left: 20px; list-style: disc;">${listItems}</ul></div>`;
181
+ return parts.length > 0 ? parts.join('') : null;
112
182
  }
113
183
 
114
184
  /**
@@ -200,9 +270,10 @@ function scanFiles() {
200
270
  const desc = extractDescription(content, ext) || `${file} in ${folder}/`;
201
271
  const trigger = deriveTrigger(folder, file, content);
202
272
  const preview = generatePreview(content, ext);
203
- const usage = (folder === 'commands') ? extractUsage(content) : null;
273
+ const swagger = (folder === 'commands') ? extractSwaggerMeta(content) : null;
274
+ const swaggerHtml = swagger ? buildSwaggerHtml(swagger) : null;
204
275
 
205
- entries.push({ key, folder, file, desc, trigger, preview, usage });
276
+ entries.push({ key, folder, file, desc, trigger, preview, swaggerHtml });
206
277
  }
207
278
  }
208
279
 
@@ -349,8 +420,8 @@ function generateTreeInfo(entries) {
349
420
  if (entry.isEmptyFolder) continue;
350
421
 
351
422
  let fullDesc = entry.desc;
352
- if (entry.usage) {
353
- fullDesc += entry.usage;
423
+ if (entry.swaggerHtml) {
424
+ fullDesc += entry.swaggerHtml;
354
425
  }
355
426
  const escapedDesc = fullDesc.replace(/'/g, "\\'");
356
427
  lines.push(` '${entry.key}': {`);
package/bin/cli.js CHANGED
@@ -617,7 +617,13 @@ const bootstrapMode = process.argv.includes('--bootstrap');
617
617
  if (bootstrapMode || insideClaude) {
618
618
  if (!bootstrapMode) {
619
619
  // insideClaude without --bootstrap: show guidance
620
- console.log('\x1b[32m%s\x1b[0m', `✅ Files installed. Run ${launchCommand} to continue.`);
620
+ console.log();
621
+ console.log('\x1b[32m%s\x1b[0m', `✅ Autoconfig installed successfully.`);
622
+ console.log();
623
+ console.log('\x1b[33m%s\x1b[0m', `⚡ NEXT STEP: Type ${launchCommand} below and press Enter to complete setup.`);
624
+ console.log();
625
+ console.log('\x1b[90m%s\x1b[0m', ` (This CLI can't auto-trigger slash commands inside an active Claude session.`);
626
+ console.log('\x1b[90m%s\x1b[0m', ` Just type "${launchCommand}" at the prompt and Claude will handle the rest.)`);
621
627
  console.log();
622
628
  }
623
629
  process.exit(0);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-autoconfig",
3
- "version": "1.0.143",
3
+ "version": "1.0.144",
4
4
  "description": "Intelligent, self-configuring setup for Claude Code. One command analyzes your project, configures Claude, and shows you what it did.",
5
5
  "author": "ADAC 1001 <info@adac1001.com>",
6
6
  "license": "MIT",