make-instructions
$
npx mdskill add dotnet/efcore/make-instructionsThis skill helps you scaffold VS Code file-based instructions (`.instructions.md` files) that provide background knowledge to Copilot about specific parts of the codebase. These files are applied automatically based on glob patterns or semantic matching, giving Copilot domain-specific context when working on matching files.
SKILL.md
.github/skills/make-instructionsView on GitHub ↗
--- name: make-instructions description: 'Create VS Code file-based instructions (.instructions.md files). Use when asked to create, scaffold, or add file-based instructions for Copilot. Generates .instructions.md with YAML frontmatter and background knowledge content.' --- # Create File-Based Instructions This skill helps you scaffold VS Code file-based instructions (`.instructions.md` files) that provide background knowledge to Copilot about specific parts of the codebase. These files are applied automatically based on glob patterns or semantic matching, giving Copilot domain-specific context when working on matching files. ## When Not to Use - Setting project-wide instructions — use `.github/copilot-instructions.md` or `AGENTS.md` instead - Creating reusable agent workflows with structured steps — use Agent Skills instead - Adding instructions that need to be invokable on demand — use Agent Skills instead ## Workflow ### Step 1: Investigate the topic Build understanding of the area the instructions should cover. Identify: - [ ] What files or file patterns the instructions apply to - [ ] Key conventions, patterns, or architectural rules for that area - [ ] Common pitfalls that Copilot should avoid - [ ] Non-obvious domain knowledge that isn't discoverable from code alone If the scope is unclear or overlaps with existing instructions, ask the user for clarification. ### Step 2: Choose the file location Instructions files go in `.github/instructions/` by default. Pick a descriptive filename: ``` .github/instructions/<topic>.instructions.md ``` Examples: `csharp-style.instructions.md`, `query-pipeline.instructions.md`, `test-conventions.instructions.md` ### Step 3: Generate the file with YAML frontmatter Create the file with the required YAML frontmatter header: ```yaml --- name: '<Display Name>' # Optional. Display name in the UI. Defaults to filename. description: '<Short description>' # Optional. Shown on hover. Also used for semantic matching. applyTo: '<glob pattern>' # Optional. Glob pattern relative to workspace root. Omit to require manual attachment or rely on semantic matching only. --- ``` Common `applyTo` patterns: - `**/*.cs` — all C# files - `test/**` — files under a specific folder ### Step 4: Write the body content Write concise, actionable Markdown content. Follow these principles: - **Be concise** — instructions share the context window; only include what the agent wouldn't already know - **Be specific** — use concrete rules, not vague guidance - **Include examples** — short code snippets showing preferred vs. avoided patterns are very effective - **Explain why** — when a rule exists for a non-obvious reason, state it so the agent applies it correctly in edge cases - **Skip linter-enforced rules** — don't repeat what formatters and linters already catch - **Use Markdown links** to reference specific files or URLs for additional context Recommended sections (adapt as needed): 1. **<Title>** — one-line heading describing the domain 2. **Context paragraph** — brief explanation of what this area is and why these rules matter 3. **Guidelines / Conventions** — bullet list of concrete rules 4. **Examples** — short code blocks showing do/don't patterns (optional) 5. **Key Files** — table of important files for orientation (optional) 6. **Common Pitfalls** — traps to avoid (optional) ### Step 5: Validate After creating the file, verify: - [ ] File is in `.github/instructions/` (or a configured instructions folder) - [ ] Filename ends with `.instructions.md` and only contains lowercase letters, numbers, and hyphens - [ ] YAML frontmatter is valid - [ ] `applyTo` glob matches the intended files - [ ] Content is concise (aim for under 500 lines or 5000 tokens) — long instructions dilute effectiveness - [ ] No secrets, tokens, or internal URLs included - [ ] Instructions don't duplicate what's already in `.github/copilot-instructions.md` or under `.agents/skills/` ## Common Pitfalls | Pitfall | Solution | |---------|----------| | `applyTo` too broad | Use specific globs; `**` applies to every file and wastes context | | Missing `applyTo` | Without it, instructions won't auto-apply — they require manual attachment or semantic matching via `description` | | Vague guidance | Replace "write good tests" with something like "add both positive and negative test cases using `[ConditionalFact]` methods" |
More from dotnet/efcore
- change-trackingImplementation details for EF Core change tracking. Use when changing InternalEntityEntry, ChangeDetector, SnapshotFactoryFactory, or related entity state, snapshot, or property accessor code.
- cosmos-providerImplementation details for the EF Core Azure Cosmos DB provider. Use when changing Cosmos-specific code.
- make-custom-agentCreate custom GitHub Copilot agents. Use when asked to create, scaffold, or configure a custom agent, declarative agent, or @-invokable chat participant for GitHub Copilot.
- make-github-actions-workflowCreate GitHub Actions workflows for CI, automation, or PR management. Use when asked to create, scaffold, or add a GitHub Actions workflow (.yml file under .github/workflows/).
- make-skillCreate new Agent Skills for GitHub Copilot. Use when asked to create, scaffold, or add a skill. Generates SKILL.md with frontmatter, directory structure, and optional resources.
- migrationsImplementation details for EF Core migrations. Use when changing MigrationsSqlGenerator, model diffing, migration operations, HistoryRepository, the Migrator or related classes.
- model-buildingImplementation details for EF Core model building. Use when changing ConventionSet, ModelBuilder, IConvention implementations, ModelRuntimeInitializer, RuntimeModel, or related classes.
- query-pipelineImplementation details for EF Core LINQ query translation, SQL generation, and bulk operations (ExecuteUpdate/ExecuteDelete). Use when changing expression visitors, SqlExpressions, QuerySqlGenerator, ShaperProcessingExpressionVisitor, UpdateExpression, DeleteExpression, or related classes.
- run-apichiefRun ApiChief in the EF Core repo to emit baselines, summaries, deltas, review files, or breaking-change checks. Use when refreshing `*.baseline.json`, preparing API review artifacts, or validating API changes.
- scaffoldingImplementation details for EF Core scaffolding (reverse engineering). Use when changing ef dbcontext scaffold pipeline implementation, database schema reading, CSharpModelGenerator, or related classes.