npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

agent-skill-manager

v2.17.0

Published

Interactive TUI for managing installed skills for AI coding agents (Claude Code, Codex, OpenClaw, and more)

Readme

CLI to install and manage agent skills

agent-skill-manager (asm) is a scriptable CLI built for AI agents and automation — install, search, audit, and organize skills across Claude Code, Codex, Cursor, and 16 more tools. Every command supports --json and --yes for non-interactive use. An optional TUI (asm) is available for local browsing.

Get Started · Browse 4,300+ skills · Full docs

Problems asm solves

| Pain | Without asm | With asm | | ------------------------- | ----------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | | Scattered installs | Same skill copied into ~/.claude/skills/, ~/.codex/skills/, ~/.cursor/rules/ — different versions, no single view | One asm list across all 19 providers and scopes | | No inventory | ls through hidden dirs; no idea what is installed, duplicated, or outdated | asm search, asm inspect, asm stats, asm audit | | Invisible context cost | Every installed skill's description is resident in the agent's prompt on every message, whether or not it ever fires | asm stats --tokens, asm audit residency | | Install just to read once | Installing is the only way to get a skill in front of an agent — and it stays resident forever afterwards | asm get <skill> prints the body and installs nothing | | Risky manual installs | Clone repos, copy folders, hope SKILL.md is valid | asm install validates frontmatter, scans security, pins registry commits | | Agent-unfriendly output | Human-only copy-paste workflows | Structured JSON via --json; skip prompts with --yes | | New agent, new chore | Every tool adds another skill directory to track | Add or disable providers in one config file |

At a glance

| | | | ------------------- | ------------------------------------------------------------------------------ | | Catalog | 4,672 skills from 58 repos — browse online | | Providers | 19 agents (Claude, Codex, Cursor, Windsurf, Copilot, …) | | Agent-ready CLI | --json, --yes, --machine on list, search, install, audit, eval | | Security | Pre-install scan for shell exec, network access, credential exposure | | License | MIT — no accounts, no telemetry |

How it works

graph LR
    A[AI agent / script] --> B["asm command --json"]
    B --> C[Discover skill dirs]
    B --> D[Install / audit / search]
    D --> E{Security scan}
    E --> F[Validate SKILL.md]
    F --> G[Agent provider paths]
    H[GitHub / Registry] --> D
  1. Install asm once (npm or curl).
  2. Run commands from your agent, shell, or CI — no prompts when you pass --yes.
  3. Parse JSON output to decide what to install, remove, or audit next.

Screenshots

Features

| Feature | What you get | | ------------------------ | -------------------------------------------------------------------- | | Cross-provider inventory | asm list --json — every skill, every agent, one response | | One-command install | asm install github:user/repo or asm install skill-name | | Agent-parseable output | --json on list, search, inspect, install, audit | | Duplicate audit | asm audit --yes removes redundant skills non-interactively | | Semantic overlap audit | asm audit overlap finds different-name skills doing the same job | | Attention budget | asm stats --tokens shows resident vs body token cost per tool | | Residency audit | asm audit residency ranks skills to demote out of resident context | | Reference tier | asm get <skill> delivers a body once, at zero residency | | Security scan | asm audit security before install | | Authoring pipeline | asm init, asm link, asm eval, asm publish | | Bundles | asm bundle install — curated sets in one pass | | Local library | asm install --library — install once, asm activate per provider | | Cross-tool linking | Reinstall or symlink when a skill already exists in another tool |

Getting started

Install (npm):

npm install -g agent-skill-manager

List installed skills (JSON for agents):

asm list --json

Install a skill:

asm install github:anthropics/skills --yes

Search installed and catalog skills:

asm search "code review" --json

Alternative install: curl -sSL https://raw.githubusercontent.com/luongnv89/asm/main/install.sh | bash

Node.js 22+ required. Optional TUI: run asm with no arguments.

Common tasks

| Task | Command | | ----------------------------- | ------------------------------------------------ | | Machine-readable inventory | asm list --json | | Skill metadata for agents | asm inspect my-skill --json | | Non-interactive install | asm install code-review -p claude --yes --json | | Remove duplicates | asm audit --yes | | Find same-job near-duplicates | asm audit overlap | | See your context cost | asm stats --tokens | | Find skills to demote | asm audit residency | | Use a skill without residency | asm get code-review | | Scan before install | asm audit security github:user/repo | | Scaffold a new skill | asm init my-skill -p claude | | Live dev via symlink | asm link ./my-skill -p claude | | Publish to registry | asm publish ./my-skill --yes | | Install a bundle | asm bundle install frontend-dev --yes |

Full command reference, flags, and examples: CLI Commands. Catalog UI and bundles: luongnv.com/asm.

Attention budget

Disk is cheap; context is not. Every installed skill's frontmatter description sits in the agent's system prompt on every message, whether or not the skill ever fires. The full SKILL.md body only costs anything when the skill actually fires.

asm reports the two separately — token counts are estimates and always render with a leading ~:

asm stats --tokens            # resident vs body tokens, per tool and per scope
asm stats --tokens --json     # same data for scripts and agents
  Attention Budget
  ----------------------------------------

  Resident = frontmatter descriptions, paid on every message.
  Bodies   = full SKILL.md, paid only when a skill fires.

  Tool         Skills      Resident  Bodies
  Claude Code      74    ~5k tokens  ~281k tokens
  Codex            10   ~736 tokens  ~76k tokens
  ---------------------------------------------
  Total            84  ~5.7k tokens  ~357k tokens

  By Scope
  global           71  ~4.9k tokens  ~300k tokens
  project          13   ~836 tokens  ~57k tokens

  Heaviest resident descriptions
    claude-api       ~1.2k tokens  (claude, global)
    docx              ~233 tokens  (claude, global)
    pptx              ~217 tokens  (claude, global)
    code-review       ~198 tokens  (claude, global)
    frontend-design   ~176 tokens  (claude, project)
    dataviz           ~164 tokens  (claude, global)
    skill-creator     ~151 tokens  (claude, global)
    xlsx              ~143 tokens  (claude, global)
    pdf               ~138 tokens  (claude, global)
    release-manager   ~129 tokens  (codex, global)

  Median resident cost: ~48 tokens
  Run asm audit residency for demotion advice

Residency audit

asm audit residency ranks the installed skills that are not earning their resident context and pairs each one with a command that works for how that skill is actually installed. It only reports — nothing is deactivated, disabled, or removed unless you run one of the suggested commands yourself.

asm audit residency
asm audit residency --json

The advice assumes this demotion ladder:

| Tier | asm mechanism | Residency | | ------------------------- | ----------------------------------------- | ---------------------------- | | Installed (auto-triggers) | provider directory / asm activate | description resident, always | | Saved (adapt, no trigger) | asm install --library, asm deactivate | none until asm activate | | Disabled (kept on disk) | asm disable (reverse with asm enable) | none | | Reference (read on use) | asm get — nothing on disk at all | none |

Which command a candidate gets depends on how it is installed. asm deactivate only works on a live symlink into the asm library, so it is suggested only there; everything else gets asm disable, which is universal and reversible. The asm deactivate path additionally gets asm get <skill> as a second destination: deactivating removes the provider symlink but leaves the library copy, so the body is still one command away. The asm disable path does not, because disabling renames the canonical SKILL.md — for a library-linked skill that is the library copy itself — leaving nothing for asm get to read. Skills provided by plugin marketplaces are counted in the totals but never listed as candidates — no asm command demotes them.

Two of the signals the report would like to use — trigger collision and last-used counts — have no data source in asm yet. They are listed as unavailable rather than silently dropped, so the report still works today.

No network calls, accounts, or telemetry are involved: both reports run entirely against your local filesystem.

Reference tier: use a skill without installing it

Demoting a skill does not mean losing it. asm get <skill> resolves a skill and writes its SKILL.md body to stdout — no provider directory, no library entry, no residency. The skill is paid for once, at the point of use, and costs nothing afterwards.

asm get code-review                       # body to stdout
asm get code-review > /tmp/SKILL.md       # save it without installing
asm get github:owner/repo:skills/review   # any `asm install` shorthand
asm get code-review --json                # name, description, tier, source, tokenCount, security, content

That makes asm usable as delivery infrastructure, not only as an installer. An agent can pull a skill in for a single task and drop it again:

asm get code-review | your-agent --system-prompt-file -

<skill> walks a resolution ladder, and the rung that answered is reported as the tier so provenance is always visible:

| Order | Tier | Resolves | | ----- | ----------- | ----------------------------------------------------- | | 1 | installed | a skill already installed in one of your agents | | 2 | library | a library skill, including deactivated ones | | 3 | index | an indexed catalog skill, matched by exact name | | 4 | registry | the ASM registry — same route as asm install <name> |

An explicit github:owner/repo[#ref][:path] shorthand, a GitHub URL, or a local path skips the ladder. A name that matches more than one indexed repo or registry author is never guessed: asm get exits non-zero and lists the qualified candidates.

The catalog stores metadata, not bodies, so an index, registry or remote asm get costs a shallow clone into a temp directory, which is deleted before the command returns. Those fetches run the same pre-install security scan asm install runs; the verdict goes to stderr and into --json under security. It reports rather than blocks — asm get writes nothing — and --audit prints the full asm audit security report for the fetched skill.

Output discipline: stdout carries the body (or, with --json, a single JSON object) and nothing else, so piping and redirecting are safe. Provenance, progress, and the security verdict go to stderr.

FAQ

Is it free? MIT licensed. No accounts or paywalls.

Is this built for AI agents? Yes. Commands return structured JSON (--json), accept non-interactive flags (--yes, --machine), and map to discrete actions an agent can chain — list inventory, search catalog, install, audit, uninstall.

Which agents are supported? 19 providers: Claude Code, Codex, OpenClaw, Cursor, Windsurf, Cline, Roo Code, Continue, GitHub Copilot, Aider, OpenCode, Zed, Augment, Amp, Gemini CLI, Google Antigravity, Pi, Hermes, and a generic Agents provider. Disable any via asm config edit.

What about the TUI? Run asm with no args for an optional local browser. The CLI is the primary interface for scripts, CI, and agent tool calls.

Private repos? asm install github:user/repo --transport ssh --yes

SKILL.md format? A directory with SKILL.md (YAML frontmatter + markdown body). Run asm init my-skill to scaffold one.

Get started

npm install -g agent-skill-manager
asm list --json

Browse catalog · Documentation · Contributing · MIT Licensed


Scaffold

asm init my-skill
asm init my-skill -p claude
asm init my-skill --path ./skills

Develop with live reload

asm link ./my-skill -p claude
asm link ./skill-a ./skill-b ./skill-c -p claude
asm link ./my-skills-folder -p claude
asm link ./my-skill --name my-alias -p claude --force

Audit and inspect

asm audit security my-skill
asm audit security ./path/to/my-skill
asm audit security --all
asm inspect my-skill
asm inspect my-skill --json

Test install flow

asm install github:you/awesome-skill
asm install github:you/awesome-skill -p claude --force --yes --json

Publish to ASM Registry

asm publish ./my-skill
asm publish --dry-run ./my-skill

Requires gh CLI authenticated with gh auth login.

Typical workflow

  1. asm init awesome-skill -p claude
  2. Edit SKILL.md
  3. asm link ./awesome-skill -p claude
  4. Test with your agent
  5. asm audit security awesome-skill
  6. asm inspect awesome-skill
  7. asm eval ./awesome-skill
  8. Push to GitHub
  9. asm install github:you/awesome-skill
  10. asm publish ./awesome-skill

Indexed skills are evaluated automatically. Skills passing all criteria get a verified badge in the catalog.

Verification criteria (all required):

  1. Valid frontmatter with name and description
  2. Body content with at least 20 characters of instruction text
  3. No malicious patterns (atob(), suspicious base64, hex escapes, hardcoded credentials)
  4. Directory contains a readable SKILL.md
asm index ingest github:your-user/your-repo
asm index search "your-skill" --json

Quality scoring (asm eval) runs a rubric over structure, clarity, safety, and naming:

asm eval ./my-skill
asm eval ./my-skill --machine
asm eval ./my-skill --fix
asm eval-providers list

See docs/eval-providers.md for the provider model.

The ASM Registry lists community-published skills. Install by name — no GitHub URL needed.

asm install code-review
asm install luongnv89/code-review
asm install code-review --no-cache
asm publish ./my-skill

| Flag | Description | | ----------- | ---------------------------------------- | | --dry-run | Preview manifest without creating a PR | | --force | Override warning-level security findings | | --yes | Skip confirmation | | --machine | JSON output |

Resolution flow: fetch index (1-hour cache) → find manifest with pinned commit → clone at exact commit → install.

Over 2,800 skills across curated repositories. Use asm search <term> to discover, then asm install github:owner/repo.

Last updated: 2026-07-07

| Repository | Description | Stars | Skills | | ----------------------------------------------------------------------------------- | ----------------------------------------------- | -----: | -----: | | anthropic-skills | Official Agent Skills from Anthropic | 95,957 | 18 | | superpowers | Agentic skills framework | 89,816 | 14 | | everything-claude-code | Performance optimization for Claude Code, Codex | 81,392 | 183 | | agency-agents | Specialized expert agents | 50,749 | — | | ui-ux-pro-max-skill | Design intelligence for UI/UX | 43,112 | 7 | | antigravity-awesome-skills | 1,000+ skills for Claude Code, Cursor | 25,047 | 1,322 | | marketingskills | Marketing — CRO, SEO, growth | 14,099 | 33 | | agentskills | Agent Skills specification | 13,342 | — | | claude-skills | 192 skills across engineering, marketing | 7,434 | 451 | | taste-skill | Stops generic AI output | 3,389 | 7 | | affiliate-skills | Affiliate marketing funnel | 99 | 48 | | skills | Reusable agent skills | 1 | 35 |

asm install github:anthropics/skills
asm install github:anthropics/skills --all

19 built-in providers, all enabled by default. Disable via asm config edit.

| Tool | Global Path | Project Path | | ------------------ | --------------------------------- | ----------------------- | | Claude Code | ~/.claude/skills/ | .claude/skills/ | | Codex | ~/.codex/skills/ | .codex/skills/ | | OpenClaw | ~/.openclaw/skills/ | .openclaw/skills/ | | Agents (generic) | ~/.agents/skills/ | .agents/skills/ | | Cursor | ~/.cursor/rules/ | .cursor/rules/ | | Windsurf | ~/.windsurf/rules/ | .windsurf/rules/ | | Cline | ~/Documents/Cline/Rules/ | .clinerules/ | | Roo Code | ~/.roo/rules/ | .roo/rules/ | | Continue | ~/.continue/rules/ | .continue/rules/ | | GitHub Copilot | ~/.github/instructions/ | .github/instructions/ | | Aider | ~/.aider/skills/ | .aider/skills/ | | OpenCode | ~/.config/opencode/skills/ | .opencode/skills/ | | Zed | ~/.config/zed/prompt_overrides/ | .zed/rules/ | | Augment | ~/.augment/rules/ | .augment/rules/ | | Amp | ~/.amp/skills/ | .amp/skills/ | | Gemini CLI | ~/.gemini/skills/ | .gemini/skills/ | | Google Antigravity | ~/.antigravity/skills/ | .antigravity/skills/ | | Pi | ~/.pi/skills/ | .pi/skills/ | | Hermes | ~/.hermes/skills/ | .hermes/skills/ |

Add custom providers in config.

Multiple asm binaries on PATH can shadow a fresh upgrade.

Diagnose: asm --version warns about multiple binaries. Run asm doctor for a full report.

Fix: Remove the stale install with your package manager, then confirm with asm --version.

Commands

| Command | Description | | ------------------------------- | ----------------------------------------- | ----------------------------------------- | | asm list | List all discovered skills | | asm search <query> | Search by name/description/provider | | asm inspect <skill-name> | Show detailed info for a skill | | asm get <skill> | Print a skill's body, install nothing | | asm install <source> | Install from GitHub or registry | | asm publish [path] | Publish to ASM Registry | | asm uninstall <skill-name> | Remove a skill | | asm init <name> | Scaffold a new skill | | asm link <path> [<path2> ...] | Symlink skills for live dev | | asm audit | Detect duplicate skills | | asm audit security <name> | Security audit | | asm audit residency | Rank skills that do not earn residency | | asm eval <skill> | Score skill quality | | asm eval-providers list | List eval providers | | asm stats | Aggregate installed skill metrics | | asm stats repo <repo> | Per-repo indexed skill stats | | asm stats author <owner> | Per-author indexed skill stats | | asm stats index | Indexed catalog stats summary | | asm activate <skill> | Link a library skill into a provider | | asm deactivate <skill> | Remove a library activation symlink | | asm library | Manage centrally installed library skills | | asm library list | List local library skills | | asm library update <skill> | Update one local library skill | | asm library update --all | Update all local library skills | | asm export | Export inventory as JSON | | asm import <file> | Import skills from exported manifest | | asm outdated | Show outdated skills | | asm update [name...] | Update outdated skills | | asm disable <target> | Disable skill(s) without uninstalling | | asm enable <target> | Re-enable disabled skill(s) | | asm index ingest <repo> | Index a skill repo | | asm index search <query> | Search indexed skills | | asm index list | List indexed repos | | asm index remove <owner/repo> | Remove repo from index | | asm index overlap | Find semantically overlapping skills in the index | | asm bundle list | List bundles (--predefined) | | asm bundle install <name> | Install every skill in a bundle | | asm bundle create <name> | Create bundle from installed skills | | asm bundle show <name> | Show bundle details | | asm bundle modify <name> | Add/remove skills | | asm bundle export <name> | Export bundle to JSON | | asm bundle remove <name> | Remove saved bundle | | asm config show | Print config | | asm config path | Print config path | | asm config reset | Reset to defaults | | asm config edit | Open config in $EDITOR | | asm doctor | Run environment health checks and diagnostics |

Global options

-h, --help             Show help
-v, --version          Print version
--json                 JSON output
--machine              Stable machine-readable JSON envelope (v1)
-s, --scope <scope>    global, project, or both
-p, --tool <name>      Filter by tool (list, search)
--sort <field>         name, version, or location
--flat                 Show one row per tool instance (list, search)
--model-invocable      Only skills the model can invoke
--user-invocable       Only skills the user can invoke
-y, --yes              Skip confirmations
--no-color             Disable ANSI colors
-V, --verbose          Show debug output

Examples

asm list --scope global --sort location
asm list --summary
asm list --compact --group-by tool --limit 20
asm list --model-invocable --user-invocable

Listings and asm inspect show invocability as model, user, or both (never collapsed). --model-invocable and --user-invocable are independent; both flags keep skills that match both (typically both).

asm search "code review" --json
asm audit --yes
asm audit security github:user/repo
asm audit security --all
asm stats --tokens
asm audit residency --json
asm eval ./my-skill
asm init my-skill -p claude
asm link ./my-skill -p claude
asm uninstall old-skill --yes
asm index ingest github:anthropics/skills
asm index search "frontend design" --json

Bundles — pre-defined sets for common workflows. Browse at luongnv.com/asm/#/bundles:

asm bundle list --predefined
asm bundle install frontend-dev
asm bundle install ./my-bundle.json
asm bundle create my-workflow
asm bundle export my-workflow ./my-workflow.json

iOS/Swift catalog: ASM indexes public Swift/Apple skill repos. Use asm bundle install ios-release or search for swift, swiftui, swift testing, uikit, swiftdata, app store connect.

Single-skill repo:

asm install github:user/my-skill
asm install github:user/my-skill#v1.0.0 -p claude

Multi-skill repo:

asm install github:user/skills --path skills/code-review
asm install github:user/skills --all -p claude -y

Subfolder URL:

asm install https://github.com/user/skills/tree/main/skills/agent-config
asm install github:user/skills#main:skills/agent-config

Private repos:

asm install github:user/private-skill --transport ssh
asm install github:user/private-skill -t auto

Vercel skills CLI:

asm install github:user/skills --method vercel --skill my-skill

| Flag | Description | | ------------------------ | ------------------------------ | | -p, --tool <name> | Target agent | | --name <name> | Override directory name | | --path <subdir> | Install from subdirectory | | --all | Install all skills in repo | | -m, --method <method> | default or vercel | | -t, --transport <mode> | https, ssh, or auto | | --library | Install into the local library | | -f, --force | Overwrite existing | | -y, --yes | Skip confirmation | | --json | JSON output |

Multi-skill repos: scans up to 5 levels deep. Root SKILL.md installs by default; use --all for every skill. Requires git on PATH.

Local browser for skills. The CLI above is the primary interface for agents and automation.

Keyboard shortcuts

| Key | Action | | -------------- | ---------------- | | ↑/↓ or j/k | Navigate list | | Enter | View details | | d | Uninstall | | / | Search / filter | | Esc | Back / clear | | Tab | Cycle scope | | s | Cycle sort | | r | Refresh | | c | Configuration | | a | Audit duplicates | | q | Quit | | ? | Help |

On first run, config is created at ~/.config/agent-skill-manager/config.json:

{
  "version": 1,
  "providers": [
    {
      "name": "claude",
      "label": "Claude Code",
      "global": "~/.claude/skills",
      "project": ".claude/skills",
      "enabled": true
    },
    {
      "name": "codex",
      "label": "Codex",
      "global": "~/.codex/skills",
      "project": ".codex/skills",
      "enabled": true
    },
    {
      "name": "opencode",
      "label": "OpenCode",
      "global": "~/.config/opencode/skills",
      "project": ".opencode/skills",
      "enabled": true
    },
    {
      "name": "pi",
      "label": "Pi",
      "global": "~/.pi/skills",
      "project": ".pi/skills",
      "enabled": true
    },
    {
      "name": "hermes",
      "label": "Hermes",
      "global": "~/.hermes/skills",
      "project": ".hermes/skills",
      "enabled": true
    },
    {
      "name": "openclaw",
      "label": "OpenClaw",
      "global": "~/.openclaw/skills",
      "project": ".openclaw/skills",
      "enabled": true
    },
    {
      "name": "agents",
      "label": "Agents",
      "global": "~/.agents/skills",
      "project": ".agents/skills",
      "enabled": true
    },
    {
      "name": "cursor",
      "label": "Cursor",
      "global": "~/.cursor/rules",
      "project": ".cursor/rules",
      "enabled": true
    },
    {
      "name": "copilot",
      "label": "GitHub Copilot",
      "global": "~/.github/instructions",
      "project": ".github/instructions",
      "enabled": true
    },
    {
      "name": "windsurf",
      "label": "Windsurf",
      "global": "~/.windsurf/rules",
      "project": ".windsurf/rules",
      "enabled": true
    },
    {
      "name": "antigravity",
      "label": "Google Antigravity",
      "global": "~/.antigravity/skills",
      "project": ".antigravity/skills",
      "enabled": true
    },
    {
      "name": "gemini",
      "label": "Gemini CLI",
      "global": "~/.gemini/skills",
      "project": ".gemini/skills",
      "enabled": true
    },
    {
      "name": "cline",
      "label": "Cline",
      "global": "~/Documents/Cline/Rules",
      "project": ".clinerules",
      "enabled": true
    },
    {
      "name": "roocode",
      "label": "Roo Code",
      "global": "~/.roo/rules",
      "project": ".roo/rules",
      "enabled": true
    },
    {
      "name": "continue",
      "label": "Continue",
      "global": "~/.continue/rules",
      "project": ".continue/rules",
      "enabled": true
    },
    {
      "name": "aider",
      "label": "Aider",
      "global": "~/.aider/skills",
      "project": ".aider/skills",
      "enabled": true
    },
    {
      "name": "zed",
      "label": "Zed",
      "global": "~/.config/zed/prompt_overrides",
      "project": ".zed/rules",
      "enabled": true
    },
    {
      "name": "augment",
      "label": "Augment",
      "global": "~/.augment/rules",
      "project": ".augment/rules",
      "enabled": true
    },
    {
      "name": "amp",
      "label": "Amp",
      "global": "~/.amp/skills",
      "project": ".amp/skills",
      "enabled": true
    }
  ],
  "customPaths": [],
  "preferences": {
    "defaultScope": "both",
    "defaultSort": "name"
  }
}
  • All 19 providers are enabled by default
  • Set "enabled": false to skip a provider you don't use
  • Add arbitrary directories via customPaths
  • Manage via asm config show|path|reset|edit or press c in the TUI

Every skill is a directory with a SKILL.md file — YAML frontmatter plus markdown instructions.

---
name: my-skill
description: "What this skill does"
license: "MIT"
compatibility: "Claude Code, Codex"
allowed-tools: Bash Read Grep Glob WebFetch
effort: medium
metadata:
  version: 1.0.0
  creator: "Your Name <[email protected]>"
---

| Field | Required | Description | | ------------------ | -------- | ------------------------------ | | name | yes | Unique identifier | | description | yes | One-line summary | | license | no | SPDX identifier | | compatibility | no | Compatible agents | | allowed-tools | no | Tools the skill uses | | effort | no | low, medium, high, max | | metadata.version | no | Semver (default 0.0.0) | | metadata.creator | no | Author |

asm init my-skill
asm init my-skill -p claude
git clone https://github.com/luongnv89/asm.git
cd asm
npm install
npm run build
npm start

Inspect install script before running:

curl -sSL https://raw.githubusercontent.com/luongnv89/asm/main/install.sh -o install.sh
less install.sh
bash install.sh
asm/
├── bin/                       # CLI entry point
├── dist/                      # Built bundle (npm ships this)
├── scripts/                   # Build, preindex, catalog
├── src/
│   ├── index.tsx              # TUI (ink)
│   ├── cli.ts                 # CLI dispatcher
│   ├── scanner.ts             # Skill discovery
│   ├── installer.ts           # GitHub install pipeline
│   └── views/                 # TUI views
├── docs/                      # Extended documentation
├── assets/                    # Logos and screenshots
├── install.sh                 # curl installer
└── package.json
  • Runtime: Node.js 22+
  • Language: TypeScript + TSX
  • Build: esbuild
  • TUI: Ink + @inkjs/ui
  • Testing: Vitest
  • CI: GitHub Actions + pre-commit hooks

| Document | Description | | ---------------------------------------- | --------------------------- | | Architecture | System design and data flow | | Eval Providers | Pluggable eval framework | | Development | Local setup and debugging | | Deployment | Publishing and CI | | Changelog | Version history | | Brand Kit | Logo, colors, typography | | Contributing | How to contribute | | Security | Vulnerability reporting | | Code of Conduct | Community guidelines |

Landing page: luongnv.com/asm — catalog, bundles, author/repo stats, filtered search.


Acknowledgements

Contributors

| Contributor | PRs | | ------------------------------------------ | ------------------------------------------------------------------------------------------------ | | @luongnv89 | 38 merged PRs | | @Mordris | #111 |

Dependencies

| Library | Description | | ------------------------------------------------------- | ------------------------------- | | ink | React renderer for the TUI | | @inkjs/ui | Prebuilt ink components | | react | UI for TUI and web catalog | | react-dom | DOM renderer for catalog | | react-window | List virtualization for catalog | | yaml | SKILL.md frontmatter parser |

Roadmap

Project kanban

Contributing

See CONTRIBUTING.md.

License

MIT