$git clone https://github.com/0xMH/claude-skillifyOpen-source Claude Code plugin porting the internal /skillify skill: turn a finished session's repeatable workflow into a reusable SKILL.md you can rerun with a slash command.
| 1 | # claude-skillify |
| 2 | |
| 3 | I was reading through the Claude Code source code and noticed a skill called `/skillify` that only Anthropic employees get access to. It's gated behind `USER_TYPE === 'ant'` - if you're not an internal user, the registration function returns early and the skill never loads. |
| 4 | |
| 5 | What it does is pretty useful. After you finish a session where you did some repeatable process - a deploy, a PR review, a cherry-pick flow, whatever - you run `/skillify` and it analyzes the session, interviews you about what to capture, and generates a proper SKILL.md file you can reuse later. It's how Anthropic's own team turns ad-hoc workflows into automation. |
| 6 | |
| 7 | The bundled version uses internal hooks to inject session memory and extracted user messages into the prompt. Those hooks aren't available outside the binary. But the model already has the full conversation history when a skill runs inline, so the prompt just needs to reference that directly instead. |
| 8 | |
| 9 | So I extracted the prompt, adapted it to work without the internal hooks, and packaged it as a plugin anyone can install. |
| 10 | |
| 11 | ## What it does |
| 12 | |
| 13 | At the end of a session where you performed a repeatable process (deploy flow, PR review, cherry-pick, etc.), run `/skillify` and it will: |
| 14 | |
| 15 | 1. Analyze your conversation history to identify the process, steps, tools used, and corrections made |
| 16 | 2. Interview you interactively to confirm the skill name, steps, arguments, and save location |
| 17 | 3. Generate a properly structured SKILL.md with frontmatter, success criteria, and execution annotations |
| 18 | 4. Save it so you can invoke it with `/your-skill-name` in future sessions |
| 19 | |
| 20 | ## Install |
| 21 | |
| 22 | Add the marketplace and install the plugin in Claude Code: |
| 23 | |
| 24 | ``` |
| 25 | /plugin marketplace add 0xMH/claude-skillify |
| 26 | /plugin install skillify@0xMH/claude-skillify |
| 27 | ``` |
| 28 | |
| 29 | Or test locally during development: |
| 30 | |
| 31 | ``` |
| 32 | claude --plugin-dir ./path/to/claude-skillify |
| 33 | ``` |
| 34 | |
| 35 | ## Usage |
| 36 | |
| 37 | Run at the end of a session you want to capture: |
| 38 | |
| 39 | ``` |
| 40 | /skillify |
| 41 | ``` |
| 42 | |
| 43 | Or with a description hint: |
| 44 | |
| 45 | ``` |
| 46 | /skillify cherry-pick workflow for release branches |
| 47 | ``` |
| 48 | |
| 49 | ## How it differs from the bundled version |
| 50 | |
| 51 | The bundled (internal) version injects session memory and extracted user messages via programmatic hooks (`getSessionMemoryContent()`, `getMessagesAfterCompactBoundary()`). This version instructs the model to analyze the full conversation history directly, which it already has access to when running inline. The interview flow and SKILL.md output format are identical. |
| 52 | |
| 53 | ## SKILL.md format reference |
| 54 | |
| 55 | Skills generated by skillify follow this structure: |
| 56 | |
| 57 | ```yaml |
| 58 | --- |
| 59 | name: skill-name |
| 60 | description: one-line description |
| 61 | allowed-tools: |
| 62 | - Read |
| 63 | - Write |
| 64 | - Bash(git:*) |
| 65 | when_to_use: "Use when... Examples: '...', '...'" |
| 66 | argument-hint: "[arg1] [arg2]" |
| 67 | arguments: |
| 68 | - arg1 |
| 69 | - arg2 |
| 70 | context: fork # omit for inline |
| 71 | --- |
| 72 | ``` |
| 73 | |
| 74 | Supported per-step annotations: |
| 75 | - Success criteria (required on every step) |
| 76 | - Execution: Direct, Task agent, Teammate, or [human] |
| 77 | - Artifacts: data produced for later steps |
| 78 | - Human checkpoint: pause before irreversible actions |
| 79 | - Rules: hard constraints |
| 80 | |
| 81 | ## License |
| 82 | |
| 83 | MIT |