
Ljg Skill Map
Inventory every skill under ~/.claude/skills as JSON so you can audit names, versions, and descriptions before pruning or documenting your agent stack.
Overview
ljg-skill-map is an agent skill most often used in Build (also Operate iterate, Grow content) that scans installed Claude skills and outputs JSON metadata for inventory and documentation.
Install
npx skills add https://github.com/lijigang/ljg-skills --skill ljg-skill-mapWhat is this skill?
- Bash scanner over ~/.claude/skills/*/SKILL.md with frontmatter extraction
- Emits a JSON array of name, version, user_invocable, and truncated description
- Handles block-style YAML descriptions and normalizes carriage returns
- Defaults missing name to directory basename; description capped at 80 characters (first sentence)
- Truncates exported descriptions to first sentence, max 80 characters
Adoption & trust: 3.3k installs on skills.sh; 5.5k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You have many skills under ~/.claude/skills but no machine-readable list of what is installed, versioned, or invocable by users.
Who is it for?
Solo builders standardizing a personal or team Claude skill library who want a quick manifest without manual copy-paste from each SKILL.md.
Skip if: Teams using only Cursor/Codex skill paths with no ~/.claude/skills layout, or anyone needing install counts from skills.sh rather than local disk.
When should I use this skill?
You need a machine-readable inventory of skills installed under ~/.claude/skills with parsed YAML frontmatter.
What do I get? / Deliverables
You get a JSON catalog of skill names, versions, invocable flags, and short descriptions ready for audits, docs, or further scripting.
- JSON array of per-skill metadata (name, version, user_invocable, short description)
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Skill maps are maintained while you assemble and refine agent capabilities during product work. Scanning installed SKILL.md frontmatter is core agent-tooling hygiene, not application feature code.
Where it fits
After installing ten new skills, run the map to see duplicate names and outdated versions before wiring them into project instructions.
Generate a manifest of which review and testing skills are present on disk before a release checklist.
Diff JSON output weekly to catch stray or third-party skills added during hotfixes.
How it compares
Local filesystem inventory script—not the Prism web catalog API and not skills.sh marketplace analytics.
Common Questions / FAQ
Who is ljg-skill-map for?
Claude Code users who maintain a skills folder and need a fast JSON export of frontmatter for documentation, cleanup, or automation.
When should I use ljg-skill-map?
Use it during Build when curating agent-tooling, during Operate when auditing what changed after installs, or before Ship when documenting which review or test skills are on disk.
Is ljg-skill-map safe to install?
It only reads skill files under your home directory; still review the Security Audits panel on this Prism page and inspect the script before running in CI or shared machines.
SKILL.md
READMESKILL.md - Ljg Skill Map
#!/usr/bin/env bash # Scan all installed skills, extract frontmatter metadata # Output: JSON array SKILLS_DIR="${HOME}/.claude/skills" first=1 echo "[" for skill_dir in "$SKILLS_DIR"/*/; do skill_file="$skill_dir/SKILL.md" [ -f "$skill_file" ] || continue dir_name=$(basename "$skill_dir") # Strip \r then extract frontmatter clean=$(tr -d '\r' < "$skill_file") frontmatter=$(echo "$clean" | sed -n '/^---$/,/^---$/p' | sed '1d;$d') [ -z "$frontmatter" ] && continue name=$(echo "$frontmatter" | grep -m1 '^name:' | sed 's/^name:[[:space:]]*//' | tr -d '"') version=$(echo "$frontmatter" | grep -m1 '^version:' | sed 's/^version:[[:space:]]*//' | tr -d '"') invocable=$(echo "$frontmatter" | grep -m1 '^user_invocable:' | sed 's/^user_invocable:[[:space:]]*//' | tr -d '"') # Extract description desc_line=$(echo "$frontmatter" | grep -m1 '^description:') desc_value=$(echo "$desc_line" | sed 's/^description:[[:space:]]*//') if [[ "$desc_value" == '>'* ]] || [[ "$desc_value" == '|'* ]]; then desc=$(echo "$frontmatter" | sed -n '/^description:/,/^[a-z_]*:/{ /^description:/d; /^[a-z_]*:/d; p; }' | sed 's/^[[:space:]]*//' | tr -d '"' | tr '\n' ' ' | sed 's/[[:space:]]*$//') else desc=$(echo "$desc_value" | tr -d '"') fi # Truncate: first sentence, max 80 chars short=$(echo "$desc" | sed 's/\. .*//' | sed 's/。.*//' | cut -c1-80) : "${name:=$dir_name}" : "${version:=-}" : "${invocable:=false}" if (( first )); then first=0; else echo ","; fi short_esc=$(echo "$short" | sed 's/\\/\\\\/g; s/"/\\"/g') printf ' {"name":"%s","version":"%s","invocable":%s,"desc":"%s"}' \ "$name" "$version" "$invocable" "$short_esc" done echo "" echo "]" --- name: ljg-skill-map description: "Skill map viewer. Scans all installed skills and renders a visual overview — name, version, description, category at a glance. Use when user says 'skills', '技能', '技能地图', 'skill map', '我有哪些技能', '看看技能', '列出技能', 'list skills'. Also trigger when user asks what skills are available or installed." user_invocable: true version: "1.0.0" --- # ljg-skill-map: 技能地图 扫描 `~/.claude/skills/` 下所有已安装技能,生成一目了然的可视化地图。 ## 执行 ### 1. 扫描 运行 `scripts/scan.sh`,获取所有技能的 JSON 数据(name, version, invocable, desc)。 ### 2. 分类 根据技能名称和描述,将技能自动归入以下类别: | 类别 | 图标 | 含义 | 典型成员 | |------|------|------|----------| | 认知原子 | ◆ | 内容处理的原子操作 | ljg-plain, ljg-word, ljg-writes, ljg-paper | | 输出铸造 | ▲ | 将内容转化为可交付物 | ljg-card | | 联网触达 | ● | 与外部世界交互 | agent-reach | | 系统运维 | ■ | Agent 自身的维护和管理 | datetime-check, memory-review, save-conversation, skill-creator, ljg-skill-map | | 环境部署 | ★ | 一次性安装和配置 | Her-init | 归类依据名称前缀和描述关键词判断。遇到新技能无法归类时,放入「未分类」。 ### 3. 渲染 用 ASCII 方框图呈现,格式如下: ``` ╔══════════════════════════════════════════════════════════╗ ║ SKILL MAP · {N} skills installed ║ ╠══════════════════════════════════════════════════════════╣ ║ ║ ║ ◆ 认知原子 ║ ║ +-----------------+----------------------------------+ ║ ║ | ljg-plain v4.0 | 白 — 好问题+类比让人 grok | ║ ║ | ljg-word v1.0 | 英文单词深度拆解 | ║ ║ | ljg-writes v4.0 | 写作引擎 | ║ ║ | ljg-paper v2.0 | 论文阅读与分析 | ║ ║ +-----------------+----------------------------------+ ║ ║ ║ ║ ▲ 输出铸造 ║ ║ +-----------------+----------------------------------+ ║ ║ | ljg-card v1.5 | 铸 — 内容转 PNG 可视化 | ║ ║ +-----------------+----------------------------------+ ║ ║ ║ ║ ... ║ ╚══════════════════════════════════════════════════════════╝ ``` 规则: - 每个类别一个区块,类别图标 + 中文名做标题 - 技能名左对齐,版本号紧跟(无版本显示 `-`) - 描述截断到一行,保留核心语义 - user_invocable 为 true 的技能名后加 `/` 标记(表