nanocoai/learn
Distill a reusable skill from anything — a directory, a URL, pasted notes, or what you just did together — or refine an existing skill with new learnings. Use when the user says '/learn', 'learn this', 'turn this into a skill', 'capture this workflow', 'make a skill from <source>', or 'improve/update the <name> skill'. Produces or updates a .claude/skills/<name>/SKILL.md authored to NanoClaw's skill guidelines. (This CREATES or REFINES a skill from a source; it does not install existing skills from a registry.)
npx skills add https://github.com/nanocoai/nanoclaw --skill learn
Turn a source — a directory, a URL, pasted notes, or the work just done in this conversation — into a clean, reusable NanoClaw skill. The output is a new .claude/skills/<name>/SKILL.md (plus optional scripts/, references/, templates/) authored to the project's skill guidelines.
This skill is instruction-only: it uses the tools you already have (Read, Grep, Glob, WebFetch, Write) — there is no separate distillation engine and no reach-ins into core code.
Invoke when the user wants to *capture* a workflow as a reusable skill:
/learn <path> — read a project/dir and build a skill for working with it/learn <url> — read docs / an API page and build a usage skill/learn what we just did — distill the current conversation's workflow/learn + pasted notes — turn notes into a structured skillIf the user instead wants to *find and install* an existing community skill, that is a different task — this skill creates new skills, it does not import them.
Then check .claude/skills/ for an existing skill that already covers this topic (the user may name it, e.g. *"update the wow-on-steam-deck skill"*, or the subject may obviously match one). If one exists, this is a REFINE, not a fresh create — go to step 4's "Refining" branch.
If it is ambiguous what the skill should *do*, ask one clarifying question before proceeding.
Glob the structure, Read the key files, Grep for the important entry points. Read enough to understand the *repeatable procedure*, not every line.WebFetch the page; pull out the concrete commands/steps, not the prose.Strip the one-off specifics; keep the *repeatable* shape. A good skill answers: *"Next time someone needs to do X, what are the exact steps, files, commands, and gotchas?"* Capture:
Refining an existing skill? First Read the current .claude/skills/<name>/SKILL.md, then *update it in place* — do not blindly overwrite:
name/folder and overall structure; the diff should read as a focused improvement, not a rewrite.New skill? Write .claude/skills/<kebab-name>/SKILL.md.
Frontmatter (required):
---
name: <kebab-case, matches the folder>
description: "<what it does + when to use it + likely trigger phrases>"
---
description is what the agent reads to decide relevance — make it concrete and include the phrases a user would actually say.
Body: open with one paragraph on what the skill does, then a ## When to use section and a ## Workflow of numbered steps (the actual procedure). Use tables for command/file references, and add a short examples or troubleshooting section when the gotchas warrant it.
House authoring rules (from docs/skill-guidelines.md):
REMOVE.md that fully reverses every change (no soft-disabled/commented-out removals).VERIFY.md files, incomplete cleanup, raw SQL against core DBs, branch merges (use additive fetch), hand-maintained duplicate copies..claude/skills/<name>/; confirm the folder name matches the name frontmatter and the YAML parses./<name>)./learn what we just did after a multi-step setup:
.claude/skills/<topic>-setup/SKILL.md with the steps, file paths, and the gotchas hit along the way./<topic>-setup — invoke it next time to repeat this."*Take nanocoai/learn from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.