A library of GitHub Copilot skill definitions — composable, prompt-driven agents that run inside VS Code to automate repeatable workflows. Skills cover day planning, weather, server health, SRS generation, Next.js scaffolding, YouTube transcription, and Obsidian vault management.
A Copilot skill is a Markdown file stored in .github/skills/ that instructs GitHub Copilot how to handle a specific type of request. Each skill:
- Defines a clear intent (e.g., build a daily schedule, draft a release note, generate tests)
- Accepts natural language and structured inputs
- Produces concrete output (Markdown files, code, artifacts)
- Is invoked via the
/skill-namecommand in Copilot Chat or the GitHub Copilot CLI
Skills are a way to encode repeatable expert workflows as plain text, then execute them through Copilot without writing custom tooling.
User types /skill-name in Copilot Chat
│
▼
Skill file read from .github/skills/<skill-dir>/skill.md
│
▼
Copilot follows the instructions:
- prompts for any missing inputs
- builds the output (schedule, plan, file, etc.)
- runs terminal commands if in Agent Mode
│
▼
Output written to disk and displayed in chat
- The skill file (
.github/skills/<skill-dir>/skill.md) describes the behavior and step-by-step instructions. - Copilot reads the skill at invocation time and uses it as a system-level prompt to guide its responses.
- In Agent Mode, Copilot can also run scripts and terminal commands defined in the skill instructions.
- Output is saved to the repo, shown in the editor, or both.
.github/
└── skills/
├── day-schedule/
│ ├── skill.md
│ └── README.md
├── forecast/
│ ├── skill.md
│ ├── README.md
│ └── weather.sh
├── nextjs-app-builder/
│ ├── skill.md
│ └── README.md
├── obsidian-notes-skills/ ← group of 5 Obsidian API skills
│ ├── README.md
│ ├── obsidian_api.sh ← shared curl/python helper
│ ├── append-note/
│ │ ├── skill.md
│ │ └── README.md
│ ├── create-note/
│ │ ├── skill.md
│ │ └── README.md
│ ├── list-active/
│ │ ├── skill.md
│ │ └── README.md
│ ├── open-note/
│ │ ├── skill.md
│ │ └── README.md
│ └── search-notes/
│ ├── skill.md
│ └── README.md
├── server-checkup/
│ ├── skill.md
│ ├── README.md
│ └── checkup.sh
├── srs-generator/
│ ├── skill.md
│ └── README.md
├── ytd-list/
│ ├── skill.md
│ └── README.md
└── ytd-summarise/
├── skill.md
└── transcribe.sh
outputs/
└── ... ← skill-specific generated artifacts
schedules/
└── YYYY-MM-DD/
├── schedule_HHMM-SS.md ← generated daily plan
├── meal-plan_HHMM-SS.md ← generated nutrition plan
└── schedule_HHMM-SS-revised.md ← mid-day reschedule (if triggered)
transcripts/
└── <video-id>_<title>.md ← ytd-summarise transcripts + TL;DR
spec/
└── revision-YYMMDD.md ← audit and revision notes
| Command | File | Description |
|---|---|---|
day-schedule-planner |
.github/skills/day-schedule/skill.md |
Plan a full day with hourly blocks, priorities, nutrition, and mid-day check-ins |
get-weather |
.github/skills/forecast/skill.md |
Get the current weather for a given location (defaults to Melbourne), via weather.sh |
nextjs-app-builder |
.github/skills/nextjs-app-builder/skill.md |
Scaffold a full-stack Next.js 14 App Router app with pages, API routes, and an in-memory data layer |
server-checkup |
.github/skills/server-checkup/skill.md |
SSH into a configured server, collect health metrics, and write a structured health report |
srs-generator |
.github/skills/srs-generator/skill.md |
Collect project requirements interactively and write a Software Requirements Specification in Markdown |
yt-summarise |
.github/skills/ytd-summarise/skill.md |
Download YouTube audio with yt-dlp, transcribe with Whisper, save transcript under transcripts/, and append a TL;DR summary |
ytd-list |
.github/skills/ytd-list/skill.md |
Fetch all uploads from a YouTube channel and save to CSV using the YouTube Data API v3 |
A group of five skills for interacting with a local Obsidian vault via the Local REST API plugin. They share a common helper script (obsidian_api.sh) and require OBSIDIAN_API_TOKEN to be set. See .github/skills/obsidian-notes-skills/README.md for setup.
| Command | File | Description |
|---|---|---|
obsidian-list-active |
obsidian-notes-skills/list-active/skill.md |
List the currently active Obsidian vault and confirm the API is reachable |
obsidian-search-notes |
obsidian-notes-skills/search-notes/skill.md |
Search notes in the vault by keyword using the local REST API |
obsidian-open-note |
obsidian-notes-skills/open-note/skill.md |
Fetch and display a note by file path |
obsidian-create-note |
obsidian-notes-skills/create-note/skill.md |
Create a new note in the vault with a given path and content |
obsidian-append-note |
obsidian-notes-skills/append-note/skill.md |
Append text to an existing note in the vault |
- VS Code
- GitHub Copilot extension
- GitHub Copilot Chat extension
- A GitHub account with an active Copilot subscription
git clone https://github.com/<your-user>/github-copilot-skills.git
cd github-copilot-skillscode .Open Copilot Chat (Ctrl+Alt+I / Cmd+Alt+I) and type / — you should see the available skills in the autocomplete list.
If a skill doesn't appear:
- Confirm the file is inside
.github/skills/(not.github/directly) - Confirm the file starts with valid YAML frontmatter (see below)
- Reload VS Code:
Cmd+Shift+P→Developer: Reload Window
Every skill file must begin with this YAML block — the name field is what Copilot registers as the / command:
---
name: day-schedule-planner
description: Plan a daily schedule and output tasks and hourly assignments in markdown.
---mkdir -p .github/skills/my-new-skill
touch .github/skills/my-new-skill/skill.md .github/skills/my-new-skill/README.mdPaste this starter template:
---
name: my-new-skill
description: One sentence describing what this skill does.
---
When a user invokes this skill, follow this flow:
1. Collect required inputs:
- [input 1]
- [input 2]
2. If any inputs are missing, ask concise follow-up questions.
3. Perform the task:
- [step-by-step instructions for Copilot]
4. Output the result in Markdown.Open the Copilot Chat panel and type / followed by the skill name:
/day-schedule-planner
Copilot will ask follow-up questions for any missing details. To skip prompts, pass context inline:
/day-schedule-planner Plan today. Start 07:00, end 22:00, style: block scheduling.
Tasks: LangGraph refactor 3h high, code review 1h medium, gym [fixed] 12:00–13:30, emails 30min low.
Include meal plan.
gh copilot suggest "Plan my day using day-schedule-planner. Start: 07:30. End: 22:00. \
Style: time-buffered. Tasks: deep work 3h high, gym [fixed] 12:00-13:30, emails 30min low."Add a shell alias for daily use in your .zshrc:
planday() {
gh copilot suggest "Plan my day using day-schedule-planner. ${*}"
}
# Usage:
planday "Start 07:00, end 21:00. Tasks: LangGraph PR 3h high, gym [fixed] 12:00, emails 30min low."Enable Agent Mode in VS Code for Copilot to automatically save files and run terminal commands defined in the skill:
- Open Copilot Chat
- Switch to Agent mode in the chat panel dropdown
- Invoke the skill as normal — Copilot will execute file writes and scripts without manual confirmation (subject to your auto-approve settings)
To use a skill outside this repository, copy the skill directory into the target repo's .github/skills/ folder, or add this repo as a Git submodule:
cd your-other-project
git submodule add https://github.com/<your-user>/github-copilot-skills.git .github/skillsAlternatively, symlink the skills folder:
ln -s ~/projects/github-copilot-skills/.github/skills /path/to/other-repo/.github/skillsGenerated files are written to skill-specific locations. Common examples in this repo:
schedules/YYYY-MM-DD/ # day-schedule planner
outputs/srs/YYYY-MM-DD/ # srs-generator
outputs/server-checkup/ # server-checkup
transcripts/ # ytd-summarise
outputs/nextjs-apps/<app-slug>/ # nextjs-app-builder
Review the README inside each skill directory for its exact output contract and any helper-script details.