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.
- package/.claude/commands/autoconfig-update.md +4 -0
- package/.claude/commands/autoconfig.md +5 -1
- package/.claude/commands/commit-and-push.md +4 -0
- package/.claude/commands/enable-retro.md +3 -0
- package/.claude/commands/gls.md +10 -0
- package/.claude/commands/recover-context.md +9 -0
- package/.claude/commands/show-docs.md +4 -0
- package/.claude/commands/sync-claude-md.md +3 -0
- package/.claude/commands/test.md +7 -0
- package/.claude/commands/validate-cca-install.md +4 -0
- package/.claude/docs/autoconfig.docs.html +17 -18
- package/.claude/scripts/sync-docs.js +97 -26
- package/bin/cli.js +7 -1
- package/package.json +1 -1
|
@@ -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
|
|
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
|
|
package/.claude/commands/gls.md
CHANGED
|
@@ -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
|
|
package/.claude/commands/test.md
CHANGED
|
@@ -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:
|
|
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
|
|
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:
|
|
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
|
-
|
|
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: '
|
|
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: '
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
|
86
|
-
*
|
|
85
|
+
* Extract structured Swagger-style metadata from command file content.
|
|
86
|
+
* Parses @param, @response, @sideeffect, and @example comments.
|
|
87
87
|
*/
|
|
88
|
-
function
|
|
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
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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
|
-
|
|
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
|
|
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,
|
|
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.
|
|
353
|
-
fullDesc += entry.
|
|
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(
|
|
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.
|
|
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",
|