claude-agent-skills 1.5.3 → 1.5.4

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/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # claude-agent-skills
2
2
 
3
- Install and manage Pavi's Claude Code agent skills via an interactive CLI.
3
+ Interactive CLI to install and manage Claude Code agent skills the prompt files that teach Claude how to perform specialised tasks in your projects.
4
4
 
5
- ## Usage
5
+ ## Quick start
6
6
 
7
7
  ```bash
8
8
  npx claude-agent-skills
@@ -17,48 +17,109 @@ claude-agent-skills
17
17
 
18
18
  ## What it does
19
19
 
20
- Launches an animated interactive menu to install, update, remove, and inspect Claude Code skills the prompt files that teach Claude how to perform specialised tasks in your projects.
20
+ Launches a full-screen interactive TUI (alternate screen buffer your terminal is restored on exit) with an animated banner, grid-based skill picker, and in-place navigation. Works like `vim` or `less` — nothing leaks into your scrollback.
21
21
 
22
22
  Skills are installed into:
23
23
 
24
- | Scope | Path |
25
- |---------|------------------------------------|
24
+ | Scope | Paths |
25
+ |---------|-------|
26
26
  | Global | `~/.claude/skills/` + `~/.agents/skills/` |
27
- | Project | `.claude/skills/` in current dir |
27
+ | Project | `.claude/skills/` in the current directory |
28
28
 
29
- A lockfile (`~/.claude/claude-agent-skills-lock.json` or `.claude/claude-agent-skills-lock.json`) tracks every installed skill with a SHA-256 hash so updates and drift can be detected.
29
+ A lockfile (`claude-skills-lock.json`) tracks every installed skill with a SHA-256 hash so updates, drift, and broken symlinks can be detected.
30
+
31
+ ## Navigation
32
+
33
+ Every screen shows a `►► key action` hint bar at the bottom.
34
+
35
+ | Key | Action |
36
+ |-----|--------|
37
+ | `↑` `↓` | Move up / down in menus |
38
+ | `←` `→` | Move left / right in skill grid |
39
+ | `space` | Toggle skill selection |
40
+ | `a` | Select / deselect all skills |
41
+ | `enter` | Confirm |
42
+ | `esc` | Go back to previous menu |
43
+ | `ctrl+c` | Quit |
44
+
45
+ After any command finishes, a **5-second countdown** is shown (`◂ returning to menu in 5s · press any key`) so you can read the output before the screen resets. Press any key to skip the wait.
30
46
 
31
47
  ## Menu options
32
48
 
33
- | Option | Description |
34
- |--------|-------------|
35
- | **Add Skill(s)** | Pick from 54 bundled skills. Dependencies are resolved and installed automatically. |
36
- | **Update Existing Skill(s)** | Detect and apply updates for skills that have a newer bundled version. |
37
- | **Remove Existing Skill(s)** | Uninstall skills from disk and remove them from the lockfile. |
38
- | **List Installed Skill(s)** | Show all installed skills with status, link type, and hash. |
39
- | **Sync/Restore Skills from Lockfile** | Re-materialize any missing or broken skills from the lockfile. |
40
- | **Check Skill(s)** | Health check — ok / update available / locally modified / missing / broken symlink. |
41
- | **Quit** | Exit. |
49
+ | Option | What it does |
50
+ |--------|--------------|
51
+ | **Add Skill(s)** | Grid picker of all 54 bundled skills. Select scope pick skills → pick link type → confirm. Dependencies resolved automatically. |
52
+ | **Update Existing Skill(s)** | Finds skills where the bundled version has a newer hash and re-installs them. |
53
+ | **Remove Existing Skill(s)** | Uninstalls selected skills from disk and removes them from the lockfile. |
54
+ | **List Installed Skill(s)** | Table of all installed skills with their status, link type, and hash. |
55
+ | **Sync/Restore from Lockfile** | Re-materializes any missing or broken skills using the lockfile. Run this after cloning a new machine or if symlinks break. |
56
+ | **Check Skill(s)** | Health check — reports each skill as `ok`, `update available`, `locally modified`, `missing`, or `broken symlink`. |
57
+ | **Quit** | Restore the terminal and exit. |
58
+
59
+ ## CLI subcommands
60
+
61
+ All menu actions are also available as direct subcommands (no TUI):
62
+
63
+ ```bash
64
+ claude-agent-skills add --global --all # install all skills globally
65
+ claude-agent-skills add --skill grilling tdd # install specific skills
66
+ claude-agent-skills add --project --copy # copy into project scope
67
+ claude-agent-skills update --global # update all globally
68
+ claude-agent-skills remove --project # interactive remove, project scope
69
+ claude-agent-skills list --global # show installed skills
70
+ claude-agent-skills sync --global # restore from lockfile
71
+ claude-agent-skills check --project # health check, project scope
72
+ claude-agent-skills export --out skills.lock.json # export lockfile for team sharing
73
+ claude-agent-skills import --in skills.lock.json # import and apply a shared lockfile
74
+ ```
75
+
76
+ ### Flags
42
77
 
43
- Press **Escape** at any sub-prompt to go back to the main menu.
78
+ | Flag | Description |
79
+ |------|-------------|
80
+ | `--global` | Target `~/.claude/skills/` (default) |
81
+ | `--project` | Target `.claude/skills/` in cwd |
82
+ | `--all` | Select all available skills |
83
+ | `--skill <name...>` | Specify skill names directly |
84
+ | `--copy` | Materialize as file copies (safe for npx) |
85
+ | `--symlink` | Materialize as symlinks (requires persistent install) |
86
+ | `--yes` | Skip confirmation prompts |
87
+ | `--out <path>` | Export lockfile destination |
88
+ | `--in <path>` | Import lockfile source |
44
89
 
45
- ## CLI commands
90
+ ## Lockfile
46
91
 
47
- All menu options are also available as direct subcommands:
92
+ The lockfile (`claude-skills-lock.json`) records each installed skill's SHA-256 hash and link type. Commit it to your repo to let teammates restore the exact same skill set with:
48
93
 
49
94
  ```bash
50
- claude-agent-skills add --global --all # install everything globally
51
- claude-agent-skills add --skill grilling tdd # install specific skills
52
- claude-agent-skills update --global # update all with new versions
53
- claude-agent-skills remove --project # interactive remove (project scope)
54
- claude-agent-skills list --global # show installed skills
55
- claude-agent-skills sync --global # restore from lockfile
56
- claude-agent-skills check --project # health check
95
+ claude-agent-skills import --in claude-skills-lock.json --global
96
+ ```
97
+
98
+ Export your current setup:
99
+
100
+ ```bash
101
+ claude-agent-skills export --out claude-skills-lock.json
57
102
  ```
58
103
 
59
104
  ## Included skills
60
105
 
61
- 54 skills spanning engineering, productivity, and personal workflows — including the full [mattpocock/skills](https://github.com/mattpocock/skills) set, [JuliusBrussee/caveman](https://github.com/JuliusBrussee/caveman) skills, [obra/superpowers](https://github.com/obra/superpowers) skills, and Pavi's personal additions (ponytail suite, council, etc.).
106
+ 54 skills across four upstream sources:
107
+
108
+ | Source | Skills |
109
+ |--------|--------|
110
+ | [mattpocock/skills](https://github.com/mattpocock/skills) | `brainstorming`, `codebase-design`, `diagnosing-bugs`, `dispatching-parallel-agents`, `domain-modeling`, `executing-plans`, `finishing-a-development-branch`, `implement`, `improve-codebase-architecture`, `prototype`, `receiving-code-review`, `requesting-code-review`, `subagent-driven-development`, `systematic-debugging`, `tdd`, `teach`, `test-driven-development`, `to-issues`, `to-prd`, `triage`, `using-git-worktrees`, `using-superpowers`, `verification-before-completion`, `writing-plans`, `writing-skills` |
111
+ | [JuliusBrussee/caveman](https://github.com/JuliusBrussee/caveman) | `caveman`, `cavecrew`, `caveman-commit`, `caveman-compress`, `caveman-help`, `caveman-review`, `caveman-stats` |
112
+ | [obra/superpowers](https://github.com/obra/superpowers) | `git-guardrails-claude-code`, `migrate-to-shoehorn`, `resolving-merge-conflicts`, `scaffold-exercises`, `setup-matt-pocock-skills`, `setup-pre-commit` |
113
+ | Personal (Pavi) | `ask-matt`, `council`, `edit-article`, `grill-me`, `grill-with-docs`, `grilling`, `handoff`, `i-am-dumb`, `obsidian-vault`, `ponytail`, `ponytail-audit`, `ponytail-debt`, `ponytail-gain`, `ponytail-help`, `ponytail-review`, `writing-great-skills` |
114
+
115
+ ## How bundling works
116
+
117
+ Skills live in a private monorepo (`Pavithran-Francis/skills`). At publish time, `scripts/bundle.js` copies all skill folders into `bundled-skills/` and generates `skills.json` (manifest with skill list, dependency graph, and descriptions). This means `npx` users get all skills without needing access to the private repo.
118
+
119
+ ## Requirements
120
+
121
+ - Node.js 18+
122
+ - Claude Code (to use the installed skills)
62
123
 
63
124
  ## Author
64
125
 
@@ -24,18 +24,22 @@ export async function inlineSelect({ message, hint = '↑↓ navigate · enter s
24
24
  let cursor = 0;
25
25
  let lastLines = 0;
26
26
 
27
+ // Pre-compute max label width so all descriptions align to the same column
28
+ const maxLen = Math.max(...options.map(o => o.label.length));
29
+
27
30
  function renderLines() {
28
31
  const out = [];
29
32
  // Title line — no hints here (moved to footer bar)
30
33
  out.push(brand('◆') + ' ' + ansis.bold(white(message)));
31
34
  out.push(muted('│'));
32
35
  for (let i = 0; i < options.length; i++) {
33
- const focused = i === cursor;
34
- const arrow = focused ? ansis.bold(ansis.white('▶')) : ' ';
35
- const label = focused
36
- ? ansis.bold(ansis.white(options[i].label))
37
- : muted(options[i].label);
38
- const desc = options[i].hint ? ' ' + muted(options[i].hint) : '';
36
+ const focused = i === cursor;
37
+ const arrow = focused ? ansis.bold(ansis.white('▶')) : ' ';
38
+ const pad = ' '.repeat(maxLen - options[i].label.length);
39
+ const label = focused
40
+ ? ansis.bold(ansis.white(options[i].label)) + pad
41
+ : muted(options[i].label) + pad;
42
+ const desc = options[i].hint ? ' ' + muted(options[i].hint) : '';
39
43
  out.push(muted('│') + ' ' + arrow + ' ' + label + desc);
40
44
  }
41
45
  out.push(muted('│'));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-agent-skills",
3
- "version": "1.5.3",
3
+ "version": "1.5.4",
4
4
  "description": "Install and manage Pavi's Claude Code agent skills",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/skills.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schema_version": 1,
3
3
  "name": "claude-agent-skills",
4
- "version": "1.5.3",
4
+ "version": "1.5.4",
5
5
  "skills": [
6
6
  "ask-matt",
7
7
  "brainstorming",