From 520ec44aec62245a9bcbb26ed4eb477b4bb46595 Mon Sep 17 00:00:00 2001 From: robbyczgw-cla Date: Wed, 24 Jun 2026 09:41:49 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20add=20/learn=20skill=20=E2=80=94=20dist?= =?UTF-8?q?ill=20or=20refine=20a=20reusable=20skill=20from=20anything?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instruction-only skill that distills a reusable skill from any source (directory, URL, pasted notes, or the current conversation) or refines an existing skill in place. Uses existing agent tools (Read/Grep/Glob/WebFetch/ Write) and injects the project's skill-authoring guidelines. Co-Authored-By: Claude Opus 4.8 --- .claude/skills/learn/SKILL.md | 97 +++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 .claude/skills/learn/SKILL.md diff --git a/.claude/skills/learn/SKILL.md b/.claude/skills/learn/SKILL.md new file mode 100644 index 000000000..5d5f23cbc --- /dev/null +++ b/.claude/skills/learn/SKILL.md @@ -0,0 +1,97 @@ +--- +name: learn +description: "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 ', or 'improve/update the skill'. Produces or updates a .claude/skills//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.)" +--- + +# Learn — Distill a Skill from Anything + +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//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. + +## When to use + +Invoke when the user wants to *capture* a workflow as a reusable skill: + +- `/learn ` — read a project/dir and build a skill for working with it +- `/learn ` — 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 skill + +If 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. + +## Workflow + +### 1. Identify the source — and whether this is a new skill or a refine +- A **path** → read the code/files. +- A **URL** → fetch and read the page. +- **"what we just did" / "this"** → use the current conversation as the source. +- **Pasted text** → use it directly. + +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. + +### 2. Gather the material +- **Path:** `Glob` the structure, `Read` the key files, `Grep` for the important entry points. Read enough to understand the *repeatable procedure*, not every line. +- **URL:** `WebFetch` the page; pull out the concrete commands/steps, not the prose. +- **Conversation:** re-read what was actually done — the commands, the gotchas, the decisions — and keep the parts that generalize. + +### 3. Distill — find the reusable procedure +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: + +- the trigger / when-to-use, +- the step-by-step procedure (commands, file paths, decision points), +- the non-obvious **gotchas** that were hit — usually the most valuable part, +- any scripts or templates worth shipping alongside. + +### 4. Author the SKILL.md + +**Refining an existing skill?** First `Read` the current `.claude/skills//SKILL.md`, then *update it in place* — do not blindly overwrite: +- Keep what is still correct; weave the new learnings into the right sections. +- **Dedupe** — don't append a near-duplicate step or a second gotcha that says the same thing. +- Correct anything the new source proves stale (a changed path, command, or flag). +- Preserve the existing `name`/folder and overall structure; the diff should read as a focused improvement, not a rewrite. + +**New skill?** Write `.claude/skills//SKILL.md`. + +**Frontmatter (required):** + +```yaml +--- +name: +description: "" +--- +``` + +`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`):** + +- **Additive, minimal reach-ins** — prefer adding files; make the *smallest possible* edit to existing code, and only via single-line calls into skill-owned functions. +- **Instruction-only when possible** — if Claude can do it by following prose plus existing tools, ship no code. These are the easiest skills to maintain and to merge. +- If apply leaves anything behind, ship a **`REMOVE.md`** that fully reverses every change (no soft-disabled/commented-out removals). +- If the skill adds an integration point in core code, add a **test that goes red if the wiring is deleted or drifts**. +- Anti-patterns to avoid: separate `VERIFY.md` files, incomplete cleanup, raw SQL against core DBs, branch merges (use additive fetch), hand-maintained duplicate copies. + +### 5. Place and verify +- Write into `.claude/skills//`; confirm the folder name matches the `name` frontmatter and the YAML parses. +- If feasible, dry-run the procedure the skill describes to confirm it is correct. +- Tell the user the skill exists and how to invoke it (`/`). + +## Example + +`/learn what we just did` after a multi-step setup: + +1. Re-read the conversation's commands and gotchas. +2. Distill the repeatable procedure. +3. Write `.claude/skills/-setup/SKILL.md` with the steps, file paths, and the gotchas hit along the way. +4. Report: *"Created `/-setup` — invoke it next time to repeat this."* + +## Notes + +- Keep skills **focused** — one capability per skill (mirrors the project's "one change per PR" rule). +- The most valuable content is the **gotchas**, not the happy path. +- This skill is prose and safe to re-run — use it again to refine an existing skill.