Distills a completed user workflow or interaction into a reusable agent skill. Use when the user asks to turn their workflow, interaction, or multi-step process into a skill, or when they say "make this a skill", "create a skill from what we just did", "package this workflow" or similar. Do not use for creating skills from scratch without an existing workflow (use a generic skill-creator for that).
69
83%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Turns a completed workflow into a reusable agent skill. Specifically, this skill extracts patterns from an interaction or workflow that already happened and packages them.
[!CAUTION] You MUST complete Phase 1 (Brainstorming) before writing any code or SKILL.md content. Skipping brainstorming produces skills that are either too rigid or too vague. The brainstorming conversation is the most important part of this process.
Have an iterative back-and-forth conversation with the user. Do NOT ask all questions at once. Pick 2-3 relevant questions per round from the bank below, refine your understanding, and ask follow-ups.
Start by summarizing what you observed from the workflow, then ask:
For each step identified in the workflow, determine its rigidity:
Before asking these questions, check which of your installed skills overlap with the workflow. If an existing skill from the science bundle covers a step, the new skill MUST reference it — do not offer a self-contained option.
search, fetch, analyze, etc. — you won't need to
write any code yourself. Does that sound right?"[suggestion]."You are ready to move to Phase 2 when you can confidently answer ALL of:
Produce a design document (as an artifact / implementation plan) and present it to the user for approval. The document must include:
Wait for explicit user approval before proceeding to Phase 3.
General guidelines for skill implementation:
uv run, never python or python3.urllib preferred); Avoid libraries that require extra installation if
possible.name: field.When the workflow uses functionality covered by an existing installed skill, the new SKILL.md MUST reference it by name rather than reimplementing. Include a Dependencies section in the SKILL.md listing required skills with a brief rationale for each.
For any API interaction not covered by an existing skill, the generated CLI
script MUST implement rate limiting. Before writing any rate-limiting code,
look up the API's official rate-limit guidelines: check any documentation
the user provided during brainstorming, then search the API's public
documentation online. If no documented rate limit can be found, default to 1
request per second. The rate limiting pattern is built directly into the CLI
template at references/cli_script_template.py — see the RateLimitError class
and the _request method of the API client.
Key requirements:
time.monotonic() for timing (not time.time()).RateLimitError when HTTP 429 is received.This is the default choice. If any step in the workflow involves API
calls, data processing, file I/O, computation, or any other programmatic work,
produce a multi-command CLI script using argparse with subcommands. Follow the
template in references/cli_script_template.py.
Key requirements:
--output for writing results to a file.json.dump with indent=2 for JSON output.--limit required (no silent defaults). This forces
the agent to specify the value explicitly, preventing it from assuming it
retrieved "all" results when it was silently capped.All scripts and workflows MUST write output to files, not stdout. Stdout should only contain short status messages (e.g., "Success! Data written to: results.json"). This is critical because:
jp or Python one-liners.Use this pattern only when the workflow requires zero programmatic work — i.e., every step is purely about orchestration, reasoning, multi-skill coordination, or following a written protocol. If any step needs code (API calls, data processing, file I/O, etc.), use the CLI pattern from Rule 3 instead. Produce a SKILL.md with a structured workflow section:
## Workflow
### 1. Step Name
- Description of what to do
- Which skill to use and how
### 2. Next Step
...Every generated SKILL.md must follow this structure:
---
name: {skill-name}
description: >-
{description}
---
# {Skill Title}
## Overview
{Brief description of what the skill does.}
## Dependencies
{List of required skills, if any.}
## Quick Start
{Minimal example to get started.}
## Utility Scripts (if CLI-based)
{Document each subcommand with examples.}
## Workflow (if instruction-only)
{Numbered steps with clear instructions.}
## Rate Limiting (if applicable)
{Document rate limits and how they are enforced.}
## Common Mistakes
{List 2-3 common pitfalls.}Skills can be installed locally (project-specific, per-workspace) or globally (available across all projects). Ask the user if they want to install locally, globally, or use a custom install path.
Skill paths by agent CLI (local paths relative to project root):
.claude/skills/, global ~/.claude/skills/.agents/skills/, global ~/.agents/skills/.agents/skills/, global
~/.gemini/config/skills/.gemini/skills/, global ~/.gemini/skills/.opencode/skills/, global ~/.config/opencode/skills/For other CLIs, find out local and global skill paths by yourself.
After implementation is complete:
Test the skill manually by invoking the agent with a natural-language prompt that should trigger the new skill.
If a sample query/answer was provided during brainstorming, run it through the skill and verify the output matches expectations.
0b42509
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.