agent-skill-manager 1.19.0 → 1.21.0

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
@@ -61,8 +61,8 @@ The more AI agents you use, the worse this gets. Every new tool adds another ski
61
61
  - **See everything at once** — List, search, and filter skills across all providers and scopes from one dashboard. No more `ls`-ing through hidden directories.
62
62
  - **Install from GitHub in one command** — `asm install github:user/repo` handles cloning, validation, and placement. Supports single-skill repos, multi-skill collections, subfolder URLs, and private repos via SSH.
63
63
  - **Catch problems before they bite** — Built-in security scanning flags dangerous patterns (shell execution, network access, credential exposure, obfuscation) before you install. Duplicate audit finds and cleans redundant skills across providers.
64
- - **Create and test skills locally** — Scaffold new skills with `asm init`, symlink them for live development with `asm link`, audit for security issues, and verify metadata all before publishing. [See the full local dev workflow ↓](#build-test-and-ship-your-own-skills)
65
- - **Works with every major agent** — 17 providers built-in: Claude Code, Codex, OpenClaw, Cursor, Windsurf, Cline, Roo Code, Continue, GitHub Copilot, Aider, OpenCode, Zed, Augment, Amp, Gemini CLI, Google Antigravity, and a generic Agents provider. Add custom providers in seconds via config.
64
+ - **Create, test, and publish skills** — Scaffold new skills with `asm init`, symlink them for live development with `asm link`, audit for security issues, verify metadata, and publish to the [ASM Registry](https://github.com/luongnv89/asm-registry) with a single command. [See the full local dev workflow ↓](#build-test-and-ship-your-own-skills)
65
+ - **Works with every major agent** — 18 providers built-in: Claude Code, Codex, OpenClaw, Cursor, Windsurf, Cline, Roo Code, Continue, GitHub Copilot, Aider, OpenCode, Zed, Augment, Amp, Gemini CLI, Google Antigravity, Hermes, and a generic Agents provider. Add custom providers in seconds via config.
66
66
  - **Two interfaces, one tool** — Full interactive TUI with keyboard navigation, search, and detail views. Or use the CLI with `--json` for scripting and automation.
67
67
 
68
68
  <p align="center">
@@ -116,19 +116,49 @@ This creates a `my-skill/SKILL.md` with valid YAML frontmatter and a markdown te
116
116
 
117
117
  ### 2. Develop with live reload via symlink
118
118
 
119
- Symlink into Claude Code's skill directory:
119
+ `asm link` creates a symlink from your local skill directory into an agent's skill folder. Because it's a symlink, every edit you make to the source is immediately visible to the agent — no reinstall needed.
120
+
121
+ #### Target a specific tool
120
122
 
121
123
  ```bash
124
+ # Link into Claude Code
122
125
  asm link ./my-skill -p claude
126
+
127
+ # Link into Codex
128
+ asm link ./my-skill -p codex
129
+
130
+ # Interactive — pick the tool from a prompt
131
+ asm link ./my-skill
123
132
  ```
124
133
 
125
- Or into Codex, or any other tool:
134
+ #### Link multiple skills at once
135
+
136
+ Pass several paths in a single command to link them all in one step:
126
137
 
127
138
  ```bash
128
- asm link ./my-skill -p codex
139
+ asm link ./skill-a ./skill-b ./skill-c -p claude
129
140
  ```
130
141
 
131
- Edit the source files changes are reflected immediately in the agent. No reinstall needed. This is the fastest iteration loop for skill development.
142
+ You can also point at a folder that contains multiple skills (each in its own subdirectory with a `SKILL.md`):
143
+
144
+ ```bash
145
+ # Link every skill found inside ./my-skills-folder
146
+ asm link ./my-skills-folder -p claude
147
+ ```
148
+
149
+ #### Override the symlink name
150
+
151
+ ```bash
152
+ asm link ./my-skill --name my-alias -p claude
153
+ ```
154
+
155
+ #### Force-overwrite an existing symlink
156
+
157
+ ```bash
158
+ asm link ./my-skill -p claude --force
159
+ ```
160
+
161
+ Edit the source files — changes are reflected immediately in the agent. This is the fastest iteration loop for skill development.
132
162
 
133
163
  ### 3. Audit your skill for security issues
134
164
 
@@ -202,6 +232,41 @@ asm install github:you/awesome-skill -p claude --yes --json
202
232
 
203
233
  This catches issues that local development misses — broken repo structure, missing files, invalid frontmatter in a clean install context.
204
234
 
235
+ ### 6. Publish to the ASM Registry
236
+
237
+ Once your skill is ready and on GitHub, submit it to the [ASM Registry](https://github.com/luongnv89/asm-registry) so anyone can install it by name:
238
+
239
+ ```bash
240
+ asm publish ./my-skill
241
+ ```
242
+
243
+ This runs a security audit, generates a signed manifest, forks the registry, and opens a pull request automatically. Once merged, your skill is globally discoverable:
244
+
245
+ ```bash
246
+ # Anyone can install it by name — no URL needed
247
+ asm install my-skill
248
+ ```
249
+
250
+ Preview what the manifest will look like before submitting:
251
+
252
+ ```bash
253
+ asm publish --dry-run ./my-skill
254
+ ```
255
+
256
+ Override security warnings (caution: review findings first):
257
+
258
+ ```bash
259
+ asm publish --force ./my-skill
260
+ ```
261
+
262
+ Skip confirmation in CI:
263
+
264
+ ```bash
265
+ asm publish --yes ./my-skill
266
+ ```
267
+
268
+ > **Requires:** [`gh` CLI](https://cli.github.com) authenticated with `gh auth login`. The publish command uses `gh` to fork the registry, create a branch, write the manifest, and open the PR — all without leaving your terminal.
269
+
205
270
  ### Typical local development workflow
206
271
 
207
272
  1. **Scaffold** — `asm init awesome-skill -p claude`
@@ -210,8 +275,10 @@ This catches issues that local development misses — broken repo structure, mis
210
275
  4. Test with your AI agent
211
276
  5. **Security audit** — `asm audit security awesome-skill`
212
277
  6. **Verify metadata** — `asm inspect awesome-skill`
213
- 7. Push to GitHub
214
- 8. **Verify install flow** — `asm install github:you/awesome-skill`
278
+ 7. **Score quality** — `asm eval ./awesome-skill` (add `--runtime` for skillgrade runtime evals)
279
+ 8. Push to GitHub
280
+ 9. **Verify install flow** — `asm install github:you/awesome-skill`
281
+ 10. **Publish to registry** — `asm publish ./awesome-skill`
215
282
 
216
283
  Whether you're building skills for yourself or publishing them for the community, `asm` gives you the full create → develop → audit → ship pipeline in one tool.
217
284
 
@@ -251,6 +318,91 @@ asm index search "your-skill" --json
251
318
 
252
319
  Each indexed skill in the output JSON includes `"verified": true` or `"verified": false`. If verification fails, the ingestion debug log (set `ASM_DEBUG=1`) prints the specific reasons.
253
320
 
321
+ ### Runtime Evaluation (`asm eval`)
322
+
323
+ Static verification tells you the SKILL.md is well-formed. `asm eval` goes further and answers two orthogonal questions about any skill on disk:
324
+
325
+ 1. **Is it well-written?** — `quality@1.0.0` ships by default and runs a scored rubric over structure, frontmatter, clarity, and safety.
326
+ 2. **Does it actually work?** — `asm eval --runtime` shells out to [skillgrade](https://github.com/mgechev/skillgrade) for deterministic + LLM-judge runtime evals in a Docker sandbox, with CI-ready exit codes.
327
+
328
+ **Zero-setup install:** skillgrade ships as a direct dependency of `asm`. After `npm install -g agent-skill-manager`, `asm eval --runtime` just works — no `npm i -g skillgrade`, no PATH hijacking. Override with `ASM_SKILLGRADE_BIN=/path/to/skillgrade` if you want to point at a different binary.
329
+
330
+ ```bash
331
+ # Static quality lint (default)
332
+ asm eval ./my-skill
333
+
334
+ # Scaffold eval.yaml for runtime tests
335
+ asm eval ./my-skill --runtime init
336
+
337
+ # Run the skillgrade runtime provider
338
+ asm eval ./my-skill --runtime --preset smoke
339
+
340
+ # CI-friendly JSON
341
+ asm eval ./my-skill --runtime --machine --threshold 0.8
342
+
343
+ # List registered eval providers
344
+ asm eval-providers list
345
+
346
+ # Diff two provider versions before promoting an upgrade
347
+ asm eval ./my-skill --compare skillgrade@1.0.0,skillgrade@2.0.0-next
348
+ ```
349
+
350
+ The eval surface is a pluggable provider framework: each provider implements a common `EvalProvider` contract and resolves via semver range, so you can pin a version in `~/.asm/config.yml`, diff two versions side-by-side with `--compare`, and add new providers without touching the CLI. See [`docs/eval-providers.md`](./docs/eval-providers.md) for the provider model and [`docs/skillgrade-integration.md`](./docs/skillgrade-integration.md) for skillgrade install, presets, and CI usage.
351
+
352
+ ---
353
+
354
+ ## ASM Registry — Install and Publish Skills by Name
355
+
356
+ The [ASM Registry](https://github.com/luongnv89/asm-registry) is the curated index of community-published skills. Once a skill is listed, anyone can install it by name — no GitHub URL needed.
357
+
358
+ ### Install from the registry
359
+
360
+ ```bash
361
+ # Install by bare name (searches the registry)
362
+ asm install code-review
363
+
364
+ # Install by scoped name (author/skill — always unambiguous)
365
+ asm install luongnv89/code-review
366
+
367
+ # Force a fresh registry fetch (bypasses the 1-hour cache)
368
+ asm install code-review --no-cache
369
+ ```
370
+
371
+ `asm install` resolves the name against the registry index, downloads the manifest, clones the exact pinned commit, and installs the skill to your agent.
372
+
373
+ ### Publish your skill to the registry
374
+
375
+ ```bash
376
+ asm publish ./my-skill
377
+ ```
378
+
379
+ The publish pipeline:
380
+
381
+ 1. **Validates** your `SKILL.md` frontmatter (name, description, version)
382
+ 2. **Security audit** — blocks dangerous skills automatically; warns on risky patterns
383
+ 3. **Generates a manifest** with the current commit SHA and a `skill_path` for multi-skill repos
384
+ 4. **Opens a PR** against [luongnv89/asm-registry](https://github.com/luongnv89/asm-registry) via the `gh` CLI
385
+
386
+ The registry CI validates schema, checks author identity, runs a duplicate check, typosquat detection, and an independent security scan before any maintainer reviews. Once merged, the index rebuilds automatically and your skill is live.
387
+
388
+ | Flag | Description |
389
+ | ----------- | ------------------------------------------ |
390
+ | `--dry-run` | Preview the manifest without creating a PR |
391
+ | `--force` | Override warning-level security findings |
392
+ | `--yes` | Skip the confirmation prompt |
393
+ | `--machine` | Output as a machine-readable JSON envelope |
394
+
395
+ ### How registry resolution works
396
+
397
+ When you run `asm install code-review`:
398
+
399
+ 1. `asm` fetches the registry index (cached for 1 hour at `~/.config/agent-skill-manager/registry-cache.json`)
400
+ 2. Finds the manifest for `code-review` — including the pinned `commit` and `skill_path`
401
+ 3. Clones the repository at that exact commit and navigates to the skill subdirectory
402
+ 4. Installs as if you had run `asm install github:author/repo#commit:skill_path`
403
+
404
+ If multiple authors publish a skill with the same name, `asm` shows a disambiguation prompt. Use a scoped name (`author/skill`) to skip it.
405
+
254
406
  ---
255
407
 
256
408
  ## Get Started in 30 Seconds
@@ -323,7 +475,7 @@ asm install github:anthropics/skills --all
323
475
 
324
476
  ## Supported Agent Tools
325
477
 
326
- `asm` ships with **17 built-in providers**, all enabled by default. Disable any you don't need via `asm config edit`.
478
+ `asm` ships with **18 built-in providers**, all enabled by default. Disable any you don't need via `asm config edit`.
327
479
 
328
480
  | Tool | Global Path | Project Path | Default |
329
481
  | ------------------ | --------------------------------- | ----------------------- | :-----: |
@@ -344,6 +496,7 @@ asm install github:anthropics/skills --all
344
496
  | Amp | `~/.amp/skills/` | `.amp/skills/` | enabled |
345
497
  | Gemini CLI | `~/.gemini/skills/` | `.gemini/skills/` | enabled |
346
498
  | Google Antigravity | `~/.antigravity/skills/` | `.antigravity/skills/` | enabled |
499
+ | Hermes | `~/.hermes/skills/` | `.hermes/skills/` | enabled |
347
500
 
348
501
  Disable a provider — opens config in `$EDITOR`, set `"enabled": false` for any provider:
349
502
 
@@ -361,10 +514,10 @@ Need a tool not listed? Add a custom provider entry to the config.
361
514
  Yes. `asm` is MIT licensed and free forever. No accounts, no telemetry, no paywalls.
362
515
 
363
516
  **Is it actively maintained?**
364
- v1.19.0 shipped on March 28, 2026. The project has had 28 releases. Check the [changelog](docs/CHANGELOG.md) for the full history.
517
+ v1.21.0 shipped on April 19, 2026. The project has had 30 releases. Check the [changelog](docs/CHANGELOG.md) for the full history.
365
518
 
366
519
  **Which AI agents does it support?**
367
- 17 providers built-in: Claude Code, Codex, OpenClaw, Cursor, Windsurf, Cline, Roo Code, Continue, GitHub Copilot, Aider, OpenCode, Zed, Augment, Amp, Gemini CLI, Google Antigravity, and a generic Agents provider. All 17 are enabled by default; disable any you don't need via `asm config edit`. You can also add any custom agent that stores skills as directories with a `SKILL.md` file.
520
+ 18 providers built-in: Claude Code, Codex, OpenClaw, Cursor, Windsurf, Cline, Roo Code, Continue, GitHub Copilot, Aider, OpenCode, Zed, Augment, Amp, Gemini CLI, Google Antigravity, Hermes, and a generic Agents provider. All 18 are enabled by default; disable any you don't need via `asm config edit`. You can also add any custom agent that stores skills as directories with a `SKILL.md` file.
368
521
 
369
522
  **How does it compare to managing skills manually?**
370
523
  Manual management means remembering where each agent stores skills, cloning repos by hand, checking for duplicates yourself, and having no security scanning. `asm` automates all of that with one command.
@@ -413,27 +566,31 @@ asm
413
566
 
414
567
  ### Commands
415
568
 
416
- | Command | Description |
417
- | ------------------------------- | ------------------------------------------- |
418
- | `asm list` | List all discovered skills |
419
- | `asm search <query>` | Search by name/description/provider |
420
- | `asm inspect <skill-name>` | Show detailed info for a skill |
421
- | `asm install <source>` | Install a skill from GitHub |
422
- | `asm uninstall <skill-name>` | Remove a skill (with confirmation) |
423
- | `asm init <name>` | Scaffold a new skill with SKILL.md template |
424
- | `asm link <path>` | Symlink a local skill for live development |
425
- | `asm audit` | Detect duplicate skills |
426
- | `asm audit security <name>` | Run security audit on a skill |
427
- | `asm stats` | Show aggregate skill metrics dashboard |
428
- | `asm export` | Export skill inventory as JSON manifest |
429
- | `asm index ingest <repo>` | Index a skill repo for searching |
430
- | `asm index search <query>` | Search indexed skills |
431
- | `asm index list` | List indexed repositories |
432
- | `asm index remove <owner/repo>` | Remove a repo from the index |
433
- | `asm config show` | Print current config |
434
- | `asm config path` | Print config file path |
435
- | `asm config reset` | Reset config to defaults |
436
- | `asm config edit` | Open config in $EDITOR |
569
+ | Command | Description |
570
+ | ------------------------------- | ----------------------------------------------------- |
571
+ | `asm list` | List all discovered skills |
572
+ | `asm search <query>` | Search by name/description/provider |
573
+ | `asm inspect <skill-name>` | Show detailed info for a skill |
574
+ | `asm install <source>` | Install a skill from GitHub or the registry |
575
+ | `asm publish [path]` | Publish a skill to the ASM Registry |
576
+ | `asm uninstall <skill-name>` | Remove a skill (with confirmation) |
577
+ | `asm init <name>` | Scaffold a new skill with SKILL.md template |
578
+ | `asm link <path> [<path2> ...]` | Symlink one or more local skills for live development |
579
+ | `asm audit` | Detect duplicate skills |
580
+ | `asm audit security <name>` | Run security audit on a skill |
581
+ | `asm eval <skill>` | Score a skill via the pluggable eval framework |
582
+ | `asm eval <skill> --runtime` | Runtime evaluation via skillgrade (LLM-judge) |
583
+ | `asm eval-providers list` | List registered eval providers and versions |
584
+ | `asm stats` | Show aggregate skill metrics dashboard |
585
+ | `asm export` | Export skill inventory as JSON manifest |
586
+ | `asm index ingest <repo>` | Index a skill repo for searching |
587
+ | `asm index search <query>` | Search indexed skills |
588
+ | `asm index list` | List indexed repositories |
589
+ | `asm index remove <owner/repo>` | Remove a repo from the index |
590
+ | `asm config show` | Print current config |
591
+ | `asm config path` | Print config file path |
592
+ | `asm config reset` | Reset config to defaults |
593
+ | `asm config edit` | Open config in $EDITOR |
437
594
 
438
595
  ### Global Options
439
596
 
@@ -485,6 +642,24 @@ Audit all installed skills:
485
642
  asm audit security --all
486
643
  ```
487
644
 
645
+ Score a skill with the static quality provider:
646
+
647
+ ```bash
648
+ asm eval ./my-skill
649
+ ```
650
+
651
+ Run the skillgrade runtime evaluator (requires `skillgrade` on PATH):
652
+
653
+ ```bash
654
+ asm eval ./my-skill --runtime --preset smoke
655
+ ```
656
+
657
+ List registered eval providers:
658
+
659
+ ```bash
660
+ asm eval-providers list
661
+ ```
662
+
488
663
  Scaffold a skill, link it for live testing, audit, and inspect:
489
664
 
490
665
  ```bash
@@ -492,7 +667,11 @@ asm init my-skill -p claude
492
667
  ```
493
668
 
494
669
  ```bash
670
+ # Link globally (available in all projects)
495
671
  asm link ./my-skill -p claude
672
+
673
+ # Link multiple skills at once
674
+ asm link ./skill-a ./skill-b -p claude
496
675
  ```
497
676
 
498
677
  ```bash
@@ -644,7 +823,7 @@ The install command clones the repository, validates `SKILL.md` files, scans for
644
823
  <details>
645
824
  <summary><strong>Configuration</strong></summary>
646
825
 
647
- On first run, a config file is created at `~/.config/agent-skill-manager/config.json` with 17 default providers, all enabled:
826
+ On first run, a config file is created at `~/.config/agent-skill-manager/config.json` with 18 default providers, all enabled:
648
827
 
649
828
  ```json
650
829
  {
@@ -960,16 +1139,18 @@ agent-skill-manager/
960
1139
  <details>
961
1140
  <summary><strong>Documentation</strong></summary>
962
1141
 
963
- | Document | Description |
964
- | ------------------------------------- | ---------------------------------------- |
965
- | [Architecture](docs/ARCHITECTURE.md) | System design, components, and data flow |
966
- | [Development](docs/DEVELOPMENT.md) | Local setup, testing, and debugging |
967
- | [Deployment](docs/DEPLOYMENT.md) | Publishing and CI pipeline |
968
- | [Changelog](docs/CHANGELOG.md) | Version history |
969
- | [Brand Kit](docs/brand_kit.md) | Logo, colors, and typography |
970
- | [Contributing](CONTRIBUTING.md) | How to contribute |
971
- | [Security](SECURITY.md) | Vulnerability reporting |
972
- | [Code of Conduct](CODE_OF_CONDUCT.md) | Community guidelines |
1142
+ | Document | Description |
1143
+ | -------------------------------------------------------- | -------------------------------------------------------- |
1144
+ | [Architecture](docs/ARCHITECTURE.md) | System design, components, and data flow |
1145
+ | [Eval Providers](docs/eval-providers.md) | Pluggable eval framework, `--compare`, adding a provider |
1146
+ | [Skillgrade Integration](docs/skillgrade-integration.md) | Install, presets, CI usage, troubleshooting |
1147
+ | [Development](docs/DEVELOPMENT.md) | Local setup, testing, and debugging |
1148
+ | [Deployment](docs/DEPLOYMENT.md) | Publishing and CI pipeline |
1149
+ | [Changelog](docs/CHANGELOG.md) | Version history |
1150
+ | [Brand Kit](docs/brand_kit.md) | Logo, colors, and typography |
1151
+ | [Contributing](CONTRIBUTING.md) | How to contribute |
1152
+ | [Security](SECURITY.md) | Vulnerability reporting |
1153
+ | [Code of Conduct](CODE_OF_CONDUCT.md) | Community guidelines |
973
1154
 
974
1155
  </details>
975
1156