Skill creator
Create or repair a portable GitHub Copilot Agent Skill by shaping a valid skill folder, writing a focused SKILL.md, adding only useful bundled resources, and validating the result before delivery.
When to invoke
- "Create a new GitHub Copilot skill."
- "Generate a SKILL.md for this workflow."
- "Audit this skill folder and fix loading issues."
- "Optimize this skill description so it triggers correctly."
- "Add references, scripts, or assets to this skill package."
Inputs
Use $ARGUMENTS as the requested skill name, existing folder, or capability description. If $ARGUMENTS is empty, infer the target from the user's message and current workspace; if that is still ambiguous, inspect likely skill folders before choosing a safe default.
Required skill package
Every skill folder must contain SKILL.md and may contain bundled resources loaded on demand:
skill-name/
SKILL.md
references/ optional, on-demand Markdown references
scripts/ optional, runnable helpers
assets/ optional, templates or static resources
| Element |
Rule |
| Folder name |
Match the name field exactly. Use lowercase letters, numbers, and hyphens only. Avoid slashes, colons, dots, namespaces, spaces, and uppercase letters. |
SKILL.md |
Start YAML frontmatter on line 1, followed by exactly one H1 and skill instructions. |
name |
Required. Match the parent folder. |
description |
Required. Explain what the skill does and when to use it. Keep it at or below 1024 characters. |
| Optional keys |
Use only argument-hint, compatibility, license, user-invocable, disable-model-invocation, allowed-tools, metadata, and tags. |
compatibility |
Optional, at or below 500 characters. Use only for a real environment requirement, and repeat it in the body because current GitHub Copilot surfaces do not enforce it. |
| Unsupported keys |
Do not use top-level context, authors, category, or version; move useful annotations under metadata. |
Minimum frontmatter shape:
---
name: skill-name
description: What the skill does and when to use it, with concrete trigger phrases.
---
# Skill instructions
Procedure
- Clarify or infer the smallest useful capability without all-caps directives: triggers, output, required resources, validation needs, and whether the package belongs under
.github/skills/ or ~/.copilot/skills/.
- Read any existing skill before editing. Preserve the folder name and
name field unless the user explicitly asks to rename it.
- Choose the package shape: keep
SKILL.md focused, move long knowledge to references/, deterministic repeatable work to scripts/, and static templates or examples to assets/.
- Write or update
SKILL.md in clear imperative language and step-by-step workflow only when order matters with discovery-focused description, workflow, inputs, outputs, validation, and resource pointers.
- For objective outputs, add 3 to 5 realistic test prompts with near-synonyms and expected checks and expected checks in
evals/evals.json when the user wants an evaluation loop; for subjective skills, provide a human review checklist.
- Validate the skill folder and repository gates when working in this repository.
Resource placement
| Resource |
Use for |
Notes |
SKILL.md |
Overview, when to invoke, core workflow, output, quality gate. |
Keep focused and portable. |
references/*.md |
Detailed rules, schemas, style guides, examples. |
Read on demand, not automatically. |
scripts/* |
Validators, renderers, converters, reproducible helpers. |
Document runtime requirements; scripts must not store credentials. |
assets/* |
Templates, sample input, HTML review pages, icons, fixtures. |
Use as static resources unless the skill explicitly edits a copy. |
evals/evals.json |
Optional objective trigger or output evaluations and trigger-description review data. |
Use references/schemas.md for skills-compatible shapes. |
Validation commands
Run the bundled validator on the skill folder:
python3 .github/skills/skill-creator/scripts/validate_skill.py .github/skills/<skill-name>
When working in this repository, also run:
python3 harness/github-copilot/scripts/validate_primitives.py --strict
python3 harness/github-copilot/scripts/audit_primitive_content.py --check
python3 harness/github-copilot/scripts/audit_primitive_capabilities.py --check
python3 harness/github-copilot/scripts/audit_primitive_redundancy.py --check
python3 harness/github-copilot/scripts/generate_catalog.py --check
Fix every error before claiming the skill is ready. If the validator path differs because the skill is installed elsewhere, use the equivalent scripts/validate_skill.py in this package.
Quality checklist
Progressive disclosure and bundled resources
references/schemas.md: optional JSON schemas for evals, grading, benchmark summaries, trigger eval sets, and feedback.
assets/eval_review.html: self-contained browser UI for reviewing should-trigger and should-not-trigger prompts with the user.
eval-viewer/generate_review.py: standard-library review viewer for comparing generated outputs and collecting feedback.
scripts/validate_skill.py: deterministic validator for Agent Skill package structure and repository conventions.
Gotchas
- Preserve step-by-step detail when sequence is load-bearing; do not collapse by-step workflow evidence into vague prose.
- Do not hide trigger guidance only in the body;
description is the primary discovery surface.
- Do not replace a package blindly; work with existing references, scripts, and assets.
- Do not use one-agent-only mechanics unless required; prefer portable Agent Skills concepts for VS Code, GitHub Copilot CLI, and GitHub Copilot cloud agent.
- Do not assume unavailable tools; document the dependency and provide a graceful fallback.
Output template
## Skill package result
**Status:** created | updated | repaired | blocked
**Skill:** `<skill-name>`
**Location:** `<path>`
### Package contents
| Path | Purpose | Created/changed |
| --- | --- | --- |
| `SKILL.md` | <purpose> | <created|changed|unchanged> |
### Discovery
- Name: `<name>`
- Description: <why it triggers for the requested use case>
### Validation
- `scripts/validate_skill.py`: <pass|fail|not run and why>
- Repository gates: <pass|fail|not applicable>
Quality gate
1---2name: skill-creator-43description: Create, audit, repair, and improve GitHub Copilot Agent Skills for VS Code, GitHub Copilot CLI, and GitHub Copilot cloud agent. Use when a user asks to create a skill, generate a SKILL.md, convert a workflow into a reusable skill, audit an existing skill, fix skill loading issues, optimize a skill description, validate frontmatter, or add references/scripts/assets to a skill package.4---56<!-- Generated from harness/github-copilot/plugins/copilot-customization-authoring/skills/skill-creator/SKILL.md by harness/claude-code/scripts/convert_from_copilot.py. Edit the source, not this file. -->78# Skill creator910Create or repair a portable GitHub Copilot Agent Skill by shaping a valid skill folder, writing a focused `SKILL.md`, adding only useful bundled resources, and validating the result before delivery.1112## When to invoke1314- "Create a new GitHub Copilot skill."15- "Generate a SKILL.md for this workflow."16- "Audit this skill folder and fix loading issues."17- "Optimize this skill description so it triggers correctly."18- "Add references, scripts, or assets to this skill package."1920## Inputs2122Use `$ARGUMENTS` as the requested skill name, existing folder, or capability description. If `$ARGUMENTS` is empty, infer the target from the user's message and current workspace; if that is still ambiguous, inspect likely skill folders before choosing a safe default.2324## Required skill package2526Every skill folder must contain `SKILL.md` and may contain bundled resources loaded on demand:2728```text29skill-name/30 SKILL.md31 references/ optional, on-demand Markdown references32 scripts/ optional, runnable helpers33 assets/ optional, templates or static resources34```3536| Element | Rule |37| --- | --- |38| Folder name | Match the `name` field exactly. Use lowercase letters, numbers, and hyphens only. Avoid slashes, colons, dots, namespaces, spaces, and uppercase letters. |39| `SKILL.md` | Start YAML frontmatter on line 1, followed by exactly one H1 and skill instructions. |40| `name` | Required. Match the parent folder. |41| `description` | Required. Explain what the skill does and when to use it. Keep it at or below 1024 characters. |42| Optional keys | Use only `argument-hint`, `compatibility`, `license`, `user-invocable`, `disable-model-invocation`, `allowed-tools`, `metadata`, and `tags`. |43| `compatibility` | Optional, at or below 500 characters. Use only for a real environment requirement, and repeat it in the body because current GitHub Copilot surfaces do not enforce it. |44| Unsupported keys | Do not use top-level `context`, `authors`, `category`, or `version`; move useful annotations under `metadata`. |4546Minimum frontmatter shape:4748```markdown49---50name: skill-name51description: What the skill does and when to use it, with concrete trigger phrases.52---5354# Skill instructions55```5657## Procedure58591. Clarify or infer the smallest useful capability without all-caps directives: triggers, output, required resources, validation needs, and whether the package belongs under `.github/skills/` or `~/.copilot/skills/`.602. Read any existing skill before editing. Preserve the folder name and `name` field unless the user explicitly asks to rename it.613. Choose the package shape: keep `SKILL.md` focused, move long knowledge to `references/`, deterministic repeatable work to `scripts/`, and static templates or examples to `assets/`.624. Write or update `SKILL.md` in clear imperative language and step-by-step workflow only when order matters with discovery-focused `description`, workflow, inputs, outputs, validation, and resource pointers.635. For objective outputs, add 3 to 5 realistic test prompts with near-synonyms and expected checks and expected checks in `evals/evals.json` when the user wants an evaluation loop; for subjective skills, provide a human review checklist.646. Validate the skill folder and repository gates when working in this repository.6566## Resource placement6768| Resource | Use for | Notes |69| --- | --- | --- |70| `SKILL.md` | Overview, when to invoke, core workflow, output, quality gate. | Keep focused and portable. |71| `references/*.md` | Detailed rules, schemas, style guides, examples. | Read on demand, not automatically. |72| `scripts/*` | Validators, renderers, converters, reproducible helpers. | Document runtime requirements; scripts must not store credentials. |73| `assets/*` | Templates, sample input, HTML review pages, icons, fixtures. | Use as static resources unless the skill explicitly edits a copy. |74| `evals/evals.json` | Optional objective trigger or output evaluations and trigger-description review data. | Use `references/schemas.md` for skills-compatible shapes. |7576## Validation commands7778Run the bundled validator on the skill folder:7980```bash81python3 .github/skills/skill-creator/scripts/validate_skill.py .github/skills/<skill-name>82```8384When working in this repository, also run:8586```bash87python3 harness/github-copilot/scripts/validate_primitives.py --strict88python3 harness/github-copilot/scripts/audit_primitive_content.py --check89python3 harness/github-copilot/scripts/audit_primitive_capabilities.py --check90python3 harness/github-copilot/scripts/audit_primitive_redundancy.py --check91python3 harness/github-copilot/scripts/generate_catalog.py --check92```9394Fix every error before claiming the skill is ready. If the validator path differs because the skill is installed elsewhere, use the equivalent `scripts/validate_skill.py` in this package.9596## Quality checklist9798- [ ] `SKILL.md` starts with frontmatter on line 1.99- [ ] `name` exists and matches the folder.100- [ ] `description` is specific, discovery-focused, and at most 1024 characters.101- [ ] No unsupported frontmatter keys remain.102- [ ] No sandbox paths or hard platform leaks remain.103- [ ] No broken local file references remain.104- [ ] Every bundled script compiles or documents its runtime requirement.105- [ ] Documentation is in English and writes "GitHub Copilot" in full.106- [ ] Existing references, scripts, and assets are preserved unless intentionally replaced.107108## Progressive disclosure and bundled resources109110- `references/schemas.md`: optional JSON schemas for evals, grading, benchmark summaries, trigger eval sets, and feedback.111- `assets/eval_review.html`: self-contained browser UI for reviewing should-trigger and should-not-trigger prompts with the user.112- `eval-viewer/generate_review.py`: standard-library review viewer for comparing generated outputs and collecting feedback.113- `scripts/validate_skill.py`: deterministic validator for Agent Skill package structure and repository conventions.114115## Gotchas116117- Preserve step-by-step detail when sequence is load-bearing; do not collapse by-step workflow evidence into vague prose.118- **Do not hide trigger guidance only in the body**; `description` is the primary discovery surface.119- **Do not replace a package blindly**; work with existing references, scripts, and assets.120- **Do not use one-agent-only mechanics unless required**; prefer portable Agent Skills concepts for VS Code, GitHub Copilot CLI, and GitHub Copilot cloud agent.121- **Do not assume unavailable tools**; document the dependency and provide a graceful fallback.122123## Output template124125```markdown126## Skill package result127128**Status:** created | updated | repaired | blocked129**Skill:** `<skill-name>`130**Location:** `<path>`131132### Package contents133| Path | Purpose | Created/changed |134| --- | --- | --- |135| `SKILL.md` | <purpose> | <created|changed|unchanged> |136137### Discovery138- Name: `<name>`139- Description: <why it triggers for the requested use case>140141### Validation142- `scripts/validate_skill.py`: <pass|fail|not run and why>143- Repository gates: <pass|fail|not applicable>144```145146## Quality gate147148- [ ] `$ARGUMENTS` or the user's request was consumed to identify the target skill.149- [ ] The folder name and `name` field match exactly.150- [ ] Required and optional frontmatter keys follow the supported schema.151- [ ] The description states what the skill does and when to use it with concrete triggers.152- [ ] Bundled resources are referenced only when they exist and are useful on demand.153- [ ] Validation commands were run or the blocker is reported with the exact missing prerequisite.