extract-skill — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited extract-skill (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Turn the current conversation into a reusable skill or memory rule. From experience → reusable artifact.
_On startup, use Read to load ~/.claude/skills/extract-skill/preferences.md. If it does not exist, treat as "no preferences set" — proceed with sensible defaults._
_On startup, use Bash to:_
ls ~/.claude/skills/_~/.claude/skills/SKILLS_GUIDE.md (inventory + conventions)_~/.claude/projects/<project-slug>/memory/MEMORY.md if accessible (the user's auto-memory index)__Skip any that fail. The point is to know what already exists so we don't propose duplicates._
Check $ARGUMENTS:
~/.claude/skills/extract-skill/preferences.md, confirm, stopextract-skill — Capture conversation learnings as a skill or memory rule
Usage:
/extract-skill Scan this conversation, propose skill/memory candidates
/extract-skill --memory-only Only propose memory entries (single-rule preferences)
/extract-skill --skill-only Only propose skills (multi-step workflows)
/extract-skill --dry-run Print candidates + classification, do not create anything
/extract-skill config Set preferences
/extract-skill reset Clear preferences
/extract-skill help This help
Examples:
/extract-skill After a chat where you taught Claude how to do X
/extract-skill --dry-run Preview what would be captured before committing
Current preferences:
(loaded from preferences.md, shown above)Use AskUserQuestion to collect:
/skill-creator / let me choose per skillSave to ~/.claude/skills/extract-skill/preferences.md.
Delete ~/.claude/skills/extract-skill/preferences.md and confirm: "Preferences cleared. Using defaults."
If no preferences file exists, show:
First time using /extract-skill? Run /extract-skill config to set defaults, or just continue with sensible defaults.Then proceed.
Look back over the conversation we're in right now. You don't need to read transcripts — you have the messages in context. Categorize what you see into these signal types:
| Type | Example phrasing in chat | Likely artifact |
|---|---|---|
| Feedback / correction | "don't do X", "stop doing Y", "always use Z" | Memory (single rule) |
| Preference / convention | "we use pnpm not npm", "kebab-case for components" | Memory (single rule) |
| Workflow walkthrough | User taught Claude a multi-step procedure ("first do X, then Y, then Z, then…") | Skill |
| Repeated request | User asked for the same kind of output 2+ times in similar way | Skill |
| Setup / configuration ritual | "every time I start, I do X, Y, Z" | Skill (or memory if 1 step) |
| Best practice shared | User explained why an approach is correct | Memory (with Why:) |
| Tooling / integration | User showed how to use a specific MCP or external tool | Skill |
| Explicit "save this" | "remember this", "turn this into a skill", "capture this" | Whatever the user named |
Signal (capture):
Noise (skip):
For each candidate, decide:
/<name>. → handed off to /skill-creator./post-pr might pair with a memory rule "PRs always use HEREDOC syntax".If the user passed --memory-only or --skill-only, filter the output accordingly.
Before surfacing any candidate:
~/.claude/skills/SKILLS_GUIDE.md and the directory listing. If a skill already covers this workflow, mention it instead of proposing a duplicate./init, /review, /loop that already ship with Claude Code.Use AskUserQuestion to show 1–4 candidates at once. Each option should include:
Example layout:
Candidate 1: SKILL — extract-skill
One-liner: Scans current conversation, proposes skill/memory candidates, routes to /skill-creator or writes memory.
Trigger: After a chat where the user taught Claude something reusable.
Source: "from experience to skills, best practices my latest, learning, feedback…"
"I want to create a skill which basically when I call it looks at context available in a chat…"
Candidate 2: MEMORY — Always confirm name + scope before generating SKILL.md
Rule: Skill creation must confirm name and side-effect scope before writing files.
Why: Past skills were generated with wrong defaults that the user had to revise.
How to apply: When invoked, ask name + side-effects Q before any Write tool call.Let the user pick which to proceed with (multi-select). Default-select all that look high-confidence.
For each candidate the user accepted as a skill:
--from-description brief: "<one-liner>. Trigger: <when>. Key behaviors: <bullets>. Inputs: <args/flags>. Side effects: <yes/no + what>."/skill-creator --from-description \"…\" — it will walk you through name, tools, and workflow with its own conventions."_SKILL.md inline using SKILLS_GUIDE.md conventions — but flag this as the non-DRY path./skill-creator --from-description "<purpose in 1–2 sentences>. Trigger: <when user reaches for it>. Key behaviors: <3–5 bullets>. Side effects: <yes/no — what does it create or modify?>. Tools: <best-guess list>."For each candidate the user accepted as a memory entry:
feedback — user corrections, preferences, do/don't rulesuser — facts about the user's role / contextproject — facts about ongoing workreference — pointers to external systemsfeedback_<topic>.md, project_<topic>.md, etc. ---
name: <Title>
description: <one-line, specific>
type: feedback | user | project | reference
---
<Lead with the rule/fact.>
**Why:** <reason — often an incident or strong preference>
**How to apply:** <when/where this kicks in>MEMORY.md under an appropriate heading: ## <Short title> (MANDATORY / PREFERENCE / ACTIVE)
- See `memory/<filename>.md`
- <one-line hook capturing the essence>Edit (not Write) on MEMORY.md so existing entries aren't clobbered.The auto-memory directory is per-project. Detect via:
git rev-parse --show-toplevelThen map to: ~/.claude/projects/<encoded-path>/memory/. If the directory doesn't exist or isn't accessible, fall back to asking the user for the path.
If a candidate matches something already in MEMORY.md or an existing skill:
After all writes:
/skill-creator … command to run)<command> to finalize the skill" or "Memory takes effect next conversation — nothing else to do".If the user corrected your classification (e.g., "no, that's a memory not a skill", "use this name instead"), silently save to preferences.md under ## Learned. Surface once: _"Noted: <pattern>. Saved for next time."_
/skill-creator for skill generation; defer to MEMORY.md for memory routing. This skill is a router + classifier, not a re-implementation./skill-creator command for the user. Side-effect chains shouldn't fire silently.--dry-run prints without writing.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.