This repository contains a collection of GitHub Copilot customization files — agents, skills, prompts, and workspace instructions — designed to enhance AI-assisted development for Java and .NET projects.
.github/
├── copilot-instructions.md # Workspace-level Copilot instructions
├── agents/ # Custom agent mode definitions
│ ├── codereview.agent.md
│ ├── CSharpExpert.agent.md
│ ├── JavaExpert.agent.md
│ ├── documentation_generator.md
│ ├── feature_implementer.md
│ └── unit_test_generator.md
├── prompts/ # Reusable prompt files
│ ├── changelog.prompt.md
│ └── create-readme.prompt.md
└── skills/ # Skill files loaded on demand
├── csharp-async/
├── dotnet-best-practices/
├── dotnet-timezone/
├── java-async/
├── java-best-practices/
├── java-timezone/
└── prompt-master/
File: .github/copilot-instructions.md
Copilot instructions are automatically loaded by GitHub Copilot for every conversation in the workspace. They define the project's technology stack, constraints, and coding conventions so Copilot stays aligned with the project without requiring repeated context.
The current instructions target a Java 21 Vaadin Web App called PersonalFinanceApp:
- Stack: Java 21, Spring Boot 3, Spring Data JPA (Hibernate), SQLite
- Package conventions:
model,data,service - Testing: JUnit 5
- Money:
BigDecimal - Async:
CompletableFuture/ Spring@Async - Constraints: no auth, no charts, no CQRS, no Clean Architecture layers
Place a copilot-instructions.md file inside .github/ at the root of your repository. VS Code with the GitHub Copilot extension will automatically pick it up. No additional configuration is required.
Tip
Keep instructions concise and project-specific. Avoid duplicating general best practices that are better covered by skills.
Directory: .github/agents/
Agent files (.agent.md) define custom Copilot agent modes — specialized personas with tailored instructions, tool permissions, and model choices. Each agent is available in VS Code's Copilot Chat via the agent picker.
| Agent | File | Model | Purpose |
|---|---|---|---|
| Code Review Agent | codereview.agent.md |
GPT-5.3-Codex | Reviews code for quality, bugs, security, and conventions |
| C# Expert | CSharpExpert.agent.md |
(default) | Full-stack .NET/C# development with SOLID, async, and testing |
| Java Expert | JavaExpert.agent.md |
(default) | Full-stack Java development with modern Java features and Spring Boot |
| Documentation Generator | documentation_generator.md |
GPT-5 mini | Generates clear, structured documentation for code features |
| Feature Implementer | feature_implementer.md |
Claude Sonnet 4.5 | Orchestrates full feature implementation: plan → code → tests → docs |
| Unit Test Generator | unit_test_generator.md |
GPT-5 mini | Creates comprehensive unit tests with edge case coverage |
- Open Copilot Chat in VS Code.
- Click the agent picker (the
@icon or the model/agent selector in the chat input). - Select the desired agent from the list.
- Start chatting — the agent's instructions and tool permissions are applied automatically.
The Feature Implementer agent is particularly powerful: it invokes the Unit Test Generator and Documentation Generator as subagents automatically after implementing a feature.
Note
Agent files must be placed in .github/agents/ and use the .agent.md extension to be recognized by VS Code Copilot.
Directory: .github/skills/
Skills are instruction files that are loaded on demand by an agent when a relevant task is detected. Unlike copilot-instructions.md (always active), skills are only injected into context when needed, keeping token usage efficient.
| Skill | Directory | When it activates |
|---|---|---|
| csharp-async | skills/csharp-async/ |
C# async/await patterns, Task, ValueTask, ConfigureAwait |
| dotnet-best-practices | skills/dotnet-best-practices/ |
.NET code quality reviews, XML docs, DI, resource management |
| dotnet-timezone | skills/dotnet-timezone/ |
TimeZoneInfo, DateTimeOffset, NodaTime, DST, Windows/IANA IDs |
| java-async | skills/java-async/ |
CompletableFuture, Spring @Async, virtual threads (Java 21) |
| java-best-practices | skills/java-best-practices/ |
Spring Boot conventions, JPA, constructor injection, records |
| java-timezone | skills/java-timezone/ |
ZoneId, ZonedDateTime, IANA IDs, DST, Spring/Hibernate persistence |
| prompt-master | skills/prompt-master/ |
Writing and optimizing prompts for AI tools |
Each skill is a SKILL.md file inside its own subdirectory. To make a skill available to Copilot agents, reference it in the agent's system prompt or the workspace copilot-instructions.md using the skill's path:
<!-- Inside an agent .md file or copilot-instructions.md -->
Read and apply the skill at `.github/skills/java-async/SKILL.md` when the user asks about async Java code.Skills can also be invoked explicitly in chat:
Apply the java-best-practices skill to the selected code.
Tip
Each SKILL.md starts with YAML frontmatter (name, description) that helps agents discover and load the right skill automatically.
Directory: .github/prompts/
Prompt files (.prompt.md) are reusable, standalone prompts that can be invoked directly from Copilot Chat. They are useful for repeatable tasks like generating changelogs or README files.
Updates the project's changelog based on the git commit history.
- Model: Claude Sonnet 4.6
- Use when: You want to generate or update
CHANGELOG.mdafter merging features or fixes.
How to invoke:
/changelog
Or open the command palette and select Copilot: Run Prompt, then choose changelog.
Generates a comprehensive, well-structured README.md for the project.
- Mode: Agent (explores the full workspace)
- Use when: Starting a new project or refreshing outdated documentation.
How to invoke:
/create-readme
The prompt instructs Copilot to review the entire workspace, take inspiration from real-world open-source README examples, and produce a concise, GFM-formatted README without over-using emojis.
Note
Prompt files must be placed in .github/prompts/ and use the .prompt.md extension to be available in the VS Code Copilot prompt picker.
┌─────────────────────────────────────────────────┐
│ copilot-instructions.md │
│ (always active — project context & rules) │
└────────────────────┬────────────────────────────┘
│
┌────────────┴────────────┐
│ │
┌────▼─────┐ ┌─────▼──────┐
│ Agents │ │ Prompts │
│ (modes) │ │ (tasks) │
└────┬─────┘ └────────────┘
│
┌────▼─────┐
│ Skills │
│(on demand│
│ context) │
└──────────┘
copilot-instructions.mdsets the baseline for every Copilot interaction in the workspace.- Agents provide specialized personas for focused tasks (code review, feature implementation, etc.).
- Skills inject domain-specific knowledge (async patterns, timezone handling, best practices) when needed.
- Prompts automate repeatable multi-step workflows (changelog, README generation).
Create .github/agents/my-agent.agent.md with YAML frontmatter:
---
name: My Agent
description: What this agent does
tools: ['read', 'edit', 'search']
model: Claude Sonnet 4.6 (copilot)
---
Your agent instructions here.Create .github/skills/my-skill/SKILL.md:
---
name: my-skill
description: When to apply this skill
---
Your skill content here.Create .github/prompts/my-task.prompt.md:
---
description: What this prompt does
---
Your prompt instructions here.