Create, modify, evaluate, package, and upload skills. Use when users want to create a skill from scratch, edit or optimize an existing skill, run evals to test a skill, benchmark skill performance, optimize a skill's description for better triggering accuracy, package a skill into a zip, or upload a skill to their skill library. Also use when user asks to "capture this workflow as a skill", "make a skill for X", "turn this into a reusable skill", "package this skill", or "upload to my skill library".
73
92%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Helps users design, build, evaluate, and persist Skills. Your core job is not "doing the task" but "teaching AI how to do a class of tasks".
High-level workflow: Capture Intent → Interview → Plan (write <skill>_plan.md + show in chat, wait for confirm) → Check Conflicts → Write SKILL.md → Test → Iterate → Optimize → Package.
Assess where the user is and jump in from there.
description 字段建议保持英文(触发机制依赖英文语义),可附带 description-cn 字段
--><!--zh: ...--> inline, <!--zh ... --> blockdescription in English (triggering relies on English semantics); optionally add description-cnTools in SKILL.md fall into two categories with different formats:
references/super-magic-tools.md: These run inside Python code snippets (via run_sdk_snippet) and must be shown as Python code:from sdk.tool import tool
result = tool.call('tool_name', {
"param1": "value1",
"param2": "value2"
})
if result.ok and result.data:
output = result.data['field_name']read_files, read_skills, shell_exec, run_python_snippet): Call them directly, no need to wrap in Python code:read_files(files=[{"file_path": "path/to/file.md"}])Before specifying tools in the skill, read the reference file references/super-magic-tools.md for the full list of available tools and usage examples.
Common tool categories — quick reference (see references/super-magic-tools.md for details and examples):
web_search, read_webpages_as_markdown, download_from_url, download_from_urlsvisual_understanding, visual_understanding_webpage, video_understandingshell_exec, run_python_snippetgenerate_images, image_searchUnderstand what the user wants. If the conversation already contains a workflow (e.g., "turn this into a skill"), extract from history: tools used, step sequence, corrections made, input/output formats.
Then confirm:
This is critical for high-quality skills. Determine the output form and write it explicitly into the generated SKILL.md.
| Scenario | Recommended Output Form |
|---|---|
| Multi-section content: itineraries, reports, analysis | Write file (Markdown / HTML) |
| Charts, visualizations | Write HTML file (ECharts) |
| Multiple generated resources | Write files to a dedicated directory |
| Short reply, status confirmation | Direct conversation output |
| User explicitly says "just tell me" | Direct conversation output |
Example: a "travel planning skill" should clearly produce an HTML itinerary report, not dump text into the chat. Ask and confirm during the interview, then write an explicit "Output Spec" section in the generated SKILL.md.
## Output Spec
<!--zh: 本 skill 的最终产物是一份 HTML 格式的行程报告,保存到 `.workspace/<project_name>/itinerary.html`。不要将内容直接输出到对话中。-->
The final output of this skill is an HTML itinerary report saved to `.workspace/<project_name>/itinerary.html`.
Do not output content directly into the conversation, even if it is short.Proactively ask about edge cases, input/output formats, example files, success criteria, dependencies.
Use web_search and read_webpages_as_markdown to research best practices and API docs.
Wait until the interview is done before writing test cases.
Note: This environment has no browser, but web_search and read_webpages_as_markdown are available.
Use them to research best practices, tool docs, and description patterns for similar skills.
After the interview, write the plan to <workspace-skills-dir>/<skill-name>_plan.md (at the root of <workspace-skills-dir>/, not inside the skill subdirectory — this avoids pre-creating the skill directory). Also present the plan in chat for the user to read.
Plan document contents:
scripts/, references/, assets/ subdirectories are neededWait for user confirmation before proceeding to Phase 4.
After user confirms the plan, check for name conflicts first, then create files.
Conflict check — look at the <available_skills> block already in the system prompt to see if a skill with the same name already exists. No tool call or shell command is needed for this step.
Conflict rules:
can_override: false): Cannot overwrite.
skills/<new-name>/.<workspace-skills-dir>/<name>/: Ask user for confirmation.
Writing SKILL.md:
SKILL.md must start with YAML frontmatter — the packaging validator rejects files without it.
---
name: skill_name
description: "One sentence on what this skill does. Use when [specific trigger conditions — what the user is trying to accomplish]. Also use when user says [example phrases like 'do X', 'help me with Y', 'turn this into Z']."
description-cn: "中文描述(可选)"
---
# Skill Name
...body content...Frontmatter fields:
__); length 2–64 chars; must exactly match the directory name< >.
Must contain two parts:
license, allowed-tools, metadata, compatibility; you may add any extra YAML keys as needed (e.g. description-cn)Note: Packaging validation only requires name and description in frontmatter; there is no fixed whitelist of keys.
MCP config templates: If a skill should let other users register the same MCP server, it may include an MCP config template in SKILL.md. Use environment variable placeholders for sensitive values. Do not duplicate the field-level rules or examples here; refer to the using-mcp skill for supported fields, examples, and workflow.
Directory structure (paths relative to .workspace/, i.e. use <workspace-skills-dir>/<skill-name>/... with file tools):
<workspace-skills-dir>/<skill-name>/
├── SKILL.md (required)
├── (no plan.md here — plan file lives at <workspace-skills-dir>/<skill-name>_plan.md)
├── evals/
│ └── evals.json (test cases)
├── scripts/ (executable scripts, optional)
├── references/ (reference docs loaded on demand, optional)
└── assets/ (templates, icons, fonts, optional)Progressive loading principle:
Keep SKILL.md concise. Move complex content to references/, with clear pointers in the body about when to read them.
Merge-first principle: Before splitting, check — if a reference file must be read every time the Skill triggers (e.g. persona definitions, voice rules, core examples), merge it into SKILL.md. The references/ directory is only for "consult on demand" content that most requests don't need. An extra file read = an extra LLM request; don't split when merging works.
Write skill_config.yaml:
After all skill files are written, immediately write (overwrite if exists) <workspace-skills-dir>/skill_config.yaml with YAML content.
Only write the dir field — this file tracks which skill directory was most recently created:
skill:
dir: "my-skill"Write 2-3 realistic test prompts — the kind a real user would actually say. Share with the user first.
Save test cases to <workspace-skills-dir>/<skill-name>/evals/evals.json (relative to .workspace/):
{
"skill_name": "my-skill",
"evals": [
{
"id": 1,
"prompt": "User's task prompt",
"expected_output": "Description of expected result",
"assertions": []
}
]
}Running tests (using using-llm to simulate with_skill / baseline):
This environment has no sub-agents. Use using-llm to call an LLM programmatically:
using-llm skill and read the SKILL.md content<workspace-skills-dir>/<skill-name>/evals/iteration-N/case-N-with_skill.json and case-N-baseline.jsongrading.jsonResults directory: <workspace-skills-dir>/<skill-name>/evals/iteration-N/ (relative to .workspace/)
Grading and aggregation:
# <workspace-eval-path>: 工作区该轮评测目录的绝对路径
# 例如 /app/.workspace/<workspace-skills-dir>/<skill-name>/evals/iteration-N
shell_exec(
command='python scripts/aggregate_benchmark.py <workspace-eval-path> --skill-name <skill-name>'
)Generating eval report (no browser — output static HTML):
This environment has no browser. Use --static mode to output a standalone HTML file.
# 路径均为工作区绝对路径
shell_exec(
command='python eval-viewer/generate_review.py <workspace-eval-path> --skill-name <skill-name> --benchmark <workspace-eval-path>/benchmark.json --static <workspace-reports-path>/<skill-name>-eval-iteration-N.html'
)After generation, tell the user the report path so they can open it in the frontend file manager.
Improve the skill based on user feedback:
iteration-N+1/ directory--previous-workspace pointing at the previous iterationContinue until: user is satisfied, all feedback is empty, or no meaningful progress.
When improving, keep in mind:
After creating or improving a skill, offer to optimize the description field for better triggering accuracy.
This project uses the using-llm skill for description evaluation:
using-llm skill; use LLM to simulate "would AI load this skill given this description?"See references/super-magic-tools.md for the detailed procedure.
If the user wants to verify the security of the newly created skill before packaging or sharing — for example, to confirm it contains no dangerous patterns — load skill-vetter to run a review:
read_skills(skill_names=["skill-vetter"])After the skill is done and user-confirmed, always ask:
"Would you like to package this skill and upload it to your skill library? Or just package without uploading?"
Important: If the user only asks to "package", "pack only", or "build the .zip file" without clearly requesting upload to the skill library, you must use the package-only command (do not pass --upload). Only use --upload when the user explicitly agrees to upload or uses phrasing like "package and upload" / "upload to my skill library".
package_skill.py automatically runs quick_validate.py before packaging. Checks include:
name field must contain only English letters, digits, and underscores — no hyphens, Chinese characters, spaces, or other special charactersname field must exactly match the directory nameIf validation fails, fix the issues and retry.
Package only (default CLI; use when user asks only to package):
# <workspace-skill-path>: 工作区 skills 目录下该 skill 的绝对路径
# 例如 /app/.workspace/<workspace-skills-dir>/<skill-name>
# 不传 output_dir,默认输出到 skill 目录的父目录,即 <workspace-skills-dir>/<skill-name>-v1.0.0.zip
# 可省略 --no-upload(与默认等价)
shell_exec(
command='python scripts/package_skill.py <workspace-skill-path> --version 1.0.0'
)Package and upload to skill library (only when user explicitly wants upload; requires --upload; this runs package_skill.py then upload_skill.py in sequence):
# 可选参数: --name-zh "中文名称" --name-en "English Name"(传给 upload_skill.py)
shell_exec(
command='python scripts/package_skill.py <workspace-skill-path> --version 1.0.0 --upload'
)Package first, upload later (two separate steps): Run packaging only first; when the user wants to upload, call upload_skill.py with the path to the generated .zip file.
shell_exec(
command='python scripts/upload_skill.py <absolute-path-to-.zip-file>'
)Optional: python scripts/upload_skill.py <path> --name-zh "..." --name-en "..."
--version is optional but recommended for first release--name-zh / --name-en are optional i18n name overrides when uploading (--upload or standalone upload_skill.py); if omitted the name from SKILL.md frontmatter is usedreferences/super-magic-tools.md — Detailed descriptions and Python call examples for all available project toolsreferences/schemas.md — JSON schemas for evals.json, grading.json, etc.41d7ef4
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.