microsoft/skillify
> Capture a repeatable process from the current session into a reusable Amplifier SKILL.md skill file. Analyzes the conversation, interviews the user to confirm structure, and writes a complete skill to disk. Use when the user wants to create a skill, save a workflow as a skill, turn a process into a reusable skill, or mentions "skillify", "create skill", "make a skill", "save as skill", "capture workflow", "turn this into a skill", "new skill", or wants to automate a repeatable process they just performed.
npx skills add https://github.com/microsoft/amplifier-bundle-skills --skill skillify
Create a well-structured, reusable Amplifier SKILL.md skill file that captures
a repeatable process from the current session so it can be invoked again later
via /skill-name. The skill must conform to the Agent Skills specification
with Amplifier extensions.
$ARGUMENTS: (Optional) Description of the process to capture as a skill.Before writing any skill content, load the authoritative skills reference:
load_skill("skills-assist")
Ask skills-assist about:
skills-assist is the source of truth for Amplifier skill conventions. The
examples in this skill are illustrative samples — consult skills-assist
for the complete and up-to-date specification.
Success criteria: You have loaded and consulted skills-assist for the
latest skill authoring conventions.
Before asking the user anything, analyze the conversation history to identify:
"an open PR with CI passing")
Success criteria: You have a clear mental model of the process, its steps,
inputs, outputs, and success criteria.
Output density rule: Group related decisions into natural clusters — not
one question per turn (tedious) and not everything at once (overwhelming).
Present your analysis first, let the user absorb it, then ask related
questions together. For example, present identity/routing decisions as one
cluster, execution model decisions as another.
Calibrate interview depth to the complexity of the process. A simple 2-step
workflow needs 1-2 rounds. A complex multi-step workflow with parallel tasks
and irreversible actions needs the full treatment.
Ask the user to confirm or rename.
forked (context: fork) as an isolated subagent. Forked is better for
self-contained tasks that don't need mid-process user input; inline is
better when the user wants to steer mid-process.
.amplifier/skills/<name>/SKILL.md) — project-specific~/.amplifier/skills/<name>/SKILL.md) — follows you across projectsamplifier-bundle-skills/skills/<name>/SKILL.md) — ifcontributing to the curated collection
Skip this round for simple skills with obvious steps. For complex skills:
Pay special attention to places where the user corrected you during the session.
These corrections are the most valuable design signals.
for the description field.
Stop interviewing once you have enough information. Don't over-ask for simple
processes.
Success criteria: You have all the information needed to write the SKILL.md
and the user has confirmed the design.
Create the skill directory and file at the location the user chose in Round 2.
Use this template as a starting point. Consult skills-assist for the full set of available frontmatter fields and current conventions:
name: {{skill-name}}
description: >
{{What this skill does. Front-load the key use case. Include trigger
phrases and "Use when..." guidance — this is what the model sees in the
skills visibility list to decide whether to auto-invoke.
Keep under 250 characters for the first sentence; can be longer overall.}}
user-invocable: true
allowed-tools:
{{list of Amplifier tool names observed during the session, e.g.:}}
{{- read_file}}
{{- write_file}}
{{- edit_file}}
{{- bash}}
{{- glob}}
{{- grep}}
{{- delegate}}
model_role: {{general | coding | reasoning | critique | writing | fast}}
{{Only include if forked:}}
{{context: fork}}
{{disable-model-invocation: true}}
{{Brief statement of what the skill does and its goal. Define concrete
success artifacts — not just "writing code" but "a passing test suite
and a committed implementation."}}
$ARGUMENTS: {{Description of expected arguments, or "(Optional) ..."}}{{Specific, actionable instructions. Include commands when appropriate.}}
Success criteria: {{REQUIRED on every step. What proves this step
is done and we can move on.}}
Direct (default — omit if direct), Delegate to [agent](e.g., "Delegate to foundation:explorer"), or [human] (user does it)
commit SHA, file path). Only include if later steps depend on it.
deploying, sending messages, destructive operations)
are especially useful here.
[human] in the titleon every step
description must carry all routing weight — trigger phrases, "Use when..."guidance, and example user messages belong here since this is what the
visibility hook shows to the model
allowed-tools should be the minimum set neededcontext: fork only for self-contained skills that don't need user steeringdisable-model-invocation: truemodel_role should match the skill's primary cognitive taskuser-invocable: true registers the skill as a /name slash commandSuccess criteria: The complete SKILL.md content has been drafted.
Before committing, verify the skill works:
.amplifier/skills/<name>/SKILL.md (immediatelydiscoverable, no config changes needed).
load_skill("<name>") and verify:context_depth="none")` that loads the skill and follows its
instructions against a synthesized test input.
Success criteria: The skill loads correctly and its instructions are
actionable.
Before writing the file, present the complete SKILL.md content in a yaml code
block so the user can review it with proper syntax highlighting.
Ask the user: "Does this look good to save?"
After confirmation:
mkdir -p <chosen-path>/<skill-name>
<chosen-path>/<skill-name>/SKILL.mdcreate those as well.
/skill-name [arguments]auto-discovered on next session start
Success criteria: The file is written to disk and the user knows how to
use it.
Take microsoft/skillify from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.