/port-skill — Cross-Platform Skill Porter
Purpose: Take a skill from one platform and create its counterpart on the other, applying the correct file format, frontmatter, and conventions for the target platform.
Arguments
<source-path> — path to the source skill file (required)
--to claude|copilot — target platform (inferred from source if not specified)
Workflow
1. Detect source platform
Read the source file and determine its platform from the path:
claude/*/SKILL.md → Claude skill
copilot-native/prompts/**/*.prompt.md → Copilot prompt
copilot-native/agents/*.agent.md → Copilot agent
copilot-native/skills/*/SKILL.md → Copilot skill (knowledge)
If --to is not specified, infer the target as the opposite platform.
2. Read source and extract content
Read the source file. Extract:
- Name/ID from frontmatter
- Description from frontmatter
- Purpose from the first paragraph
- Workflow/steps from the body
- Rules/constraints from any rules section
- References to other skills or assets
3. Map the asset type
| Source |
Target |
Notes |
Claude skill (claude/*/SKILL.md) |
Copilot prompt (copilot-native/prompts/{cat}/<name>.prompt.md) |
User-invokable workflow → prompt |
Claude rubric (claude/_rubrics/*/SKILL.md) |
Copilot skill (copilot-native/skills/<name>/SKILL.md) |
Knowledge/rubric → skill (knowledge) |
| Copilot prompt |
Claude skill |
Prompt → user-invokable skill |
| Copilot agent |
Claude skill (with Agent tool notes) |
Agent → skill that uses Agent tool dispatch |
| Copilot skill (knowledge) |
Claude rubric or sub-file |
Knowledge → rubric or embedded reference |
If the mapping is ambiguous, ask the user which target type to use.
4. Apply platform conventions
Claude → Copilot-native:
- Replace
name: + description: frontmatter with description: (Copilot prompt format)
- Add
argument-hint: if the skill has arguments
- Add
agent: and tools: if the skill dispatches subagents or uses specific tools
- Replace Claude-specific references:
superpowers:* → describe the behavior inline (Copilot has no equivalent)
Agent tool → @agent or platform delegation
TaskCreate/TaskUpdate → remove or replace with prose
CLAUDE.md → copilot-instructions.md or .github/copilot-instructions.md
- Strip Claude Code-specific tool names (Read, Write, Edit, Glob, Grep) — Copilot uses
read, search, edit, codebase
- Ask which prompt category:
ba/, dev/, review/, common/
Copilot-native → Claude:
- Replace
description: frontmatter with name: + description: (Claude skill format)
- Replace
tools: list with prose about which Claude Code tools to use
- Replace
@agent delegation with Agent tool dispatch
- Replace
copilot-instructions.md references → CLAUDE.md
- Replace Copilot tool names (
read, search, edit, codebase) with Claude equivalents (Read, Grep, Edit, Glob)
- Strip any
applyTo: or glob: frontmatter (Claude uses skill invocation, not auto-apply)
5. Strip environment bake-in
Critical rule from the parity plan: Canonical skills never hardcode environmental specifics. During porting, strip:
- Specific shell names (PowerShell, WSL, bash) — replace with "detect the shell" or reference
env.config.md
- Specific hostnames or machine names
- Specific project names, paths, or build commands
- Specific tool choices (npm/yarn/pnpm) — replace with "detect from project config"
If the source has environment-specific content that can't be generalized, note it as a "user must configure" item.
6. Create the target file
Write the ported file to the correct location. Show the full file to the user for review before writing.
7. Update indexes
- If porting to copilot-native and
asset-catalog.md exists, add the new file
- If porting to claude, suggest the skill-help category
- If the source references other skills, note which cross-references need porting too
8. Confirm
Print:
Ported: <source-path>
→ <target-path>
Platform adjustments:
- Replaced N tool/platform references
- Stripped M environment-specific items
- <any warnings about manual follow-up>
Cross-references that may need porting:
- <referenced skill 1>
- <referenced skill 2>
Rules
- Don't blindly copy. The port must read naturally on the target platform. A Claude skill that says "use the Agent tool with subagent_type=Explore" should become a Copilot prompt that says "use @agent to explore the codebase."
- Preserve intent, not mechanics. The workflow steps should achieve the same goal using the target platform's idioms.
- Flag what can't be ported. Some Claude features (confidence scores, verdict JSON, Agent tool dispatch) have no Copilot equivalent. Note these as "not ported — target platform handles this differently."
- One skill at a time. Don't batch-port. Each port is a conversation about what translates and what doesn't.
- Environment-neutral. The parity plan's env-neutral principle applies to all ports. No hardcoded shells, hosts, or paths.
1---2name: port-skill3description: Port a skill between claude/ and copilot-native/ formats, applying platform conventions and stripping platform-specific bake-in.4---56# /port-skill — Cross-Platform Skill Porter78**Purpose:** Take a skill from one platform and create its counterpart on the other, applying the correct file format, frontmatter, and conventions for the target platform.910## Arguments1112- `<source-path>` — path to the source skill file (required)13- `--to claude|copilot` — target platform (inferred from source if not specified)1415## Workflow1617### 1. Detect source platform1819Read the source file and determine its platform from the path:20- `claude/*/SKILL.md` → Claude skill21- `copilot-native/prompts/**/*.prompt.md` → Copilot prompt22- `copilot-native/agents/*.agent.md` → Copilot agent23- `copilot-native/skills/*/SKILL.md` → Copilot skill (knowledge)2425If `--to` is not specified, infer the target as the opposite platform.2627### 2. Read source and extract content2829Read the source file. Extract:30- **Name/ID** from frontmatter31- **Description** from frontmatter32- **Purpose** from the first paragraph33- **Workflow/steps** from the body34- **Rules/constraints** from any rules section35- **References** to other skills or assets3637### 3. Map the asset type3839| Source | Target | Notes |40|---|---|---|41| Claude skill (`claude/*/SKILL.md`) | Copilot prompt (`copilot-native/prompts/{cat}/<name>.prompt.md`) | User-invokable workflow → prompt |42| Claude rubric (`claude/_rubrics/*/SKILL.md`) | Copilot skill (`copilot-native/skills/<name>/SKILL.md`) | Knowledge/rubric → skill (knowledge) |43| Copilot prompt | Claude skill | Prompt → user-invokable skill |44| Copilot agent | Claude skill (with Agent tool notes) | Agent → skill that uses Agent tool dispatch |45| Copilot skill (knowledge) | Claude rubric or sub-file | Knowledge → rubric or embedded reference |4647If the mapping is ambiguous, ask the user which target type to use.4849### 4. Apply platform conventions5051**Claude → Copilot-native:**5253- Replace `name:` + `description:` frontmatter with `description:` (Copilot prompt format)54- Add `argument-hint:` if the skill has arguments55- Add `agent:` and `tools:` if the skill dispatches subagents or uses specific tools56- Replace Claude-specific references:57 - `superpowers:*` → describe the behavior inline (Copilot has no equivalent)58 - `Agent tool` → `@agent` or platform delegation59 - `TaskCreate/TaskUpdate` → remove or replace with prose60 - `CLAUDE.md` → `copilot-instructions.md` or `.github/copilot-instructions.md`61- Strip Claude Code-specific tool names (Read, Write, Edit, Glob, Grep) — Copilot uses `read`, `search`, `edit`, `codebase`62- Ask which prompt category: `ba/`, `dev/`, `review/`, `common/`6364**Copilot-native → Claude:**6566- Replace `description:` frontmatter with `name:` + `description:` (Claude skill format)67- Replace `tools:` list with prose about which Claude Code tools to use68- Replace `@agent` delegation with Agent tool dispatch69- Replace `copilot-instructions.md` references → `CLAUDE.md`70- Replace Copilot tool names (`read`, `search`, `edit`, `codebase`) with Claude equivalents (Read, Grep, Edit, Glob)71- Strip any `applyTo:` or `glob:` frontmatter (Claude uses skill invocation, not auto-apply)7273### 5. Strip environment bake-in7475**Critical rule from the parity plan:** Canonical skills never hardcode environmental specifics. During porting, strip:76- Specific shell names (PowerShell, WSL, bash) — replace with "detect the shell" or reference `env.config.md`77- Specific hostnames or machine names78- Specific project names, paths, or build commands79- Specific tool choices (npm/yarn/pnpm) — replace with "detect from project config"8081If the source has environment-specific content that can't be generalized, note it as a "user must configure" item.8283### 6. Create the target file8485Write the ported file to the correct location. Show the full file to the user for review before writing.8687### 7. Update indexes8889- If porting to copilot-native and `asset-catalog.md` exists, add the new file90- If porting to claude, suggest the skill-help category91- If the source references other skills, note which cross-references need porting too9293### 8. Confirm9495Print:96```97Ported: <source-path>98 → <target-path>99100Platform adjustments:101 - Replaced N tool/platform references102 - Stripped M environment-specific items103 - <any warnings about manual follow-up>104105Cross-references that may need porting:106 - <referenced skill 1>107 - <referenced skill 2>108```109110## Rules111112- **Don't blindly copy.** The port must read naturally on the target platform. A Claude skill that says "use the Agent tool with subagent_type=Explore" should become a Copilot prompt that says "use @agent to explore the codebase."113- **Preserve intent, not mechanics.** The workflow steps should achieve the same goal using the target platform's idioms.114- **Flag what can't be ported.** Some Claude features (confidence scores, verdict JSON, Agent tool dispatch) have no Copilot equivalent. Note these as "not ported — target platform handles this differently."115- **One skill at a time.** Don't batch-port. Each port is a conversation about what translates and what doesn't.116- **Environment-neutral.** The parity plan's env-neutral principle applies to all ports. No hardcoded shells, hosts, or paths.