GitHub Copilot Skills
GitHub Copilot Skills
Foundation ships a set of reusable GitHub Copilot Skills — structured prompt files that teach Copilot (and other AI agents, including Claude Code — the primary coding agent) how to perform common, multi-step development tasks consistently across every project that follows this architecture.
Skills live in .github/skills/<skill-name>/SKILL.md. They are picked up automatically by GitHub Copilot when the agent reads the repository.
Why Skills?
| Without a skill | With a skill |
|---|---|
| Agent guesses the right lint/test commands | Agent runs the exact commands from lefthook.yml |
| Inconsistent fix strategies across sessions | Deterministic, documented procedure every time |
| Silent failures when a step is skipped | Required steps are explicit; status table always reported |
Available Skills
| Skill | Trigger phrase | Purpose |
|---|---|---|
pre-commit-check | "run pre-commit checks", "fix lint errors", "green-light this branch" | Mirrors lefthook hooks; auto-fixes what it can; reports remaining issues |
pre-commit-check
File: .github/skills/pre-commit-check/SKILL.md
What it does
Mirrors the lefthook hooks exactly, then auto-fixes anything fixable, then reports remaining issues that require manual attention.
| Hook | Tool | Scope | Auto-fixable? |
|---|---|---|---|
| pre-commit | BiomeJS check --write | ui/ TS/TSX/JS/CSS | ✅ Yes |
| pre-commit | Ruff check --fix + format | api/ Python | ✅ Yes |
| — | TypeScript tsc --noEmit | ui/web-app, ui/marketing | ❌ Manual fix required |
| pre-push | pytest | backend/api | ❌ Manual fix required |
| pre-push | Vitest | ui/web-app | ❌ Manual fix required |
When to invoke it
Use this skill before committing, before opening a PR, or any time you want to confirm a branch is clean:
- "Run pre-commit checks"
- "Fix lint errors"
- "Fix type errors"
- "Green-light this branch"
- "Pre-push check"
Procedure summary
- Identify scope — check
git statusfor changed packages; honor any argument passed (e.g."api"). - BiomeJS auto-fix —
pnpm biome check --write .from the repo root, then verify withpnpm biome check .. - Ruff auto-fix —
uv run ruff check --fix . && uv run ruff format ., then verify. - TypeScript type-check (web-app) —
cd ui/web-app && pnpm exec tsc --noEmit. Fix errors manually. - TypeScript type-check (marketing) —
cd ui/marketing && pnpm exec tsc --noEmit. Fix errors manually. - pytest —
cd backend/api && uv run --extra dev pytest. Never delete tests to make them pass. - Vitest —
cd ui/web-app && pnpm test. - Final verification — re-run all checks; every command must exit with code 0.
Output
The skill always ends with a status table:
| Check | Status | Notes |
|---|---|---|
| BiomeJS lint/format | ✅ / ❌ | Remaining manual-fix items |
| Ruff lint/format | ✅ / ❌ | Remaining manual-fix items |
| TypeScript — web-app | ✅ / ❌ | Error count |
| TypeScript — marketing | ✅ / ❌ | Error count |
| pytest | ✅ / ❌ | Passed / total |
| Vitest | ✅ / ❌ | Passed / total |
Adding a New Skill
-
Create
.github/skills/<skill-name>/SKILL.mdin the target repository. -
Add the required YAML front matter:
--- name: <skill-name> description: '<one-line description + USE FOR: trigger phrases>' argument-hint: 'Optional: ...' --- -
Write the procedure using numbered steps with exact shell commands.
-
End with a reporting section (status table or structured output).
-
Copy the file to
public/templates/skills/<skill-name>/SKILL.mdin this repo and add a row to the Available Skills table above.
Skills are plain Markdown. They do not require special tooling — any AI agent that reads the repository can follow them.