Skip to content

Commit 29f5d29

Browse files
committed
chore(template): sync with dailydevops/dotnet-template [skip ci]
1 parent e0503ff commit 29f5d29

File tree

2 files changed

+157
-1
lines changed

2 files changed

+157
-1
lines changed

.github/copilot-instructions.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,16 @@ description: 'This file contains instructions for AI coding assistants, redirect
99

1010
* MUST follow all instructions defined in the root-level document [`AGENTS.md`](../AGENTS.md).
1111
* MUST treat [`AGENTS.md`](../AGENTS.md) as the authoritative source for all AI assistant guidelines.
12-
* MUST apply all directives from [`AGENTS.md`](../AGENTS.md) when implementing code, reviewing code, suggesting improvements, debugging issues, or providing any form of technical assistance.
12+
* MUST apply all directives from [`AGENTS.md`](../AGENTS.md) when implementing code, reviewing code, suggesting improvements, debugging issues, or providing any form of technical assistance.
13+
14+
## Decision References
15+
16+
* MUST read and apply all "accepted" decisions from [`decisions/`](../decisions/) folder before implementing architectural changes.
17+
* MUST follow the `instructions` frontmatter from each relevant decision as mandatory requirements with highest precedence.
18+
* MUST respect decision states:
19+
- **accepted**: Mandatory requirements - MUST follow without exception
20+
- **proposed**: Optional considerations - SHOULD evaluate and consider
21+
- **deprecated**: Legacy patterns - SHOULD NOT use in new implementations
22+
- **superseded**: Forbidden patterns - MUST use superseding decision instead
23+
* MUST check the `applyTo` frontmatter patterns to identify decisions relevant to current file.
24+
* MUST review "Related Decisions" section for decision dependencies and cross-references.
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
---
2+
applyTo: '**/*.*'
3+
description: 'Instructions for interpreting and applying architectural decisions from the decisions/ folder.'
4+
---
5+
6+
# Decision Handling Instructions
7+
8+
This file provides guidance on how AI coding assistants should discover, interpret, and apply architectural decision records (ADRs) from the `decisions/` folder.
9+
10+
## Decision Discovery
11+
12+
* MUST scan `decisions/` folder for relevant ADRs before making architectural or structural changes.
13+
* MUST prioritize decisions based on their `applyTo` glob patterns matching the current file path.
14+
* MUST read the complete decision document, not just the `instructions` frontmatter, when making complex architectural changes.
15+
* SHOULD use semantic search to find decisions related to the current task when file patterns don't provide clear matches.
16+
17+
## Decision Application Priority
18+
19+
Decisions MUST be applied in the following priority order:
20+
21+
1. **`instructions` frontmatter**: Primary AI guidance - compact, actionable rules
22+
2. **Decision section**: Detailed implementation requirements and constraints
23+
3. **Consequences section**: Understanding of trade-offs and implications
24+
4. **Related Decisions**: Dependencies and cross-cutting concerns
25+
26+
## Decision States
27+
28+
Each decision has a `state` frontmatter field that determines how it MUST be treated:
29+
30+
### accepted (Mandatory)
31+
* MUST follow all requirements without exception
32+
* MUST treat as non-negotiable architectural constraints
33+
* MUST apply `instructions` frontmatter as highest-priority rules
34+
* MUST NOT deviate unless explicitly overridden by user request
35+
36+
### proposed (Optional)
37+
* SHOULD consider as recommendations and best practices
38+
* MAY apply based on context and user requirements
39+
* SHOULD discuss with user before implementing significant proposed patterns
40+
* MUST NOT treat as mandatory requirements
41+
42+
### deprecated (Legacy)
43+
* SHOULD NOT use in new implementations
44+
* MAY remain in existing code until refactored
45+
* SHOULD suggest alternatives when encountered
46+
* MUST warn user when deprecated patterns are detected
47+
48+
### superseded (Forbidden)
49+
* MUST NOT use in any circumstances
50+
* MUST use the superseding decision referenced in the document
51+
* MUST refactor existing code using superseded patterns when encountered
52+
* SHOULD inform user about the superseding decision
53+
54+
## Decision Metadata
55+
56+
Each decision contains frontmatter metadata that MUST be used for proper application:
57+
58+
* **`applyTo`**: Glob patterns indicating which files the decision affects
59+
* **`state`**: Current status (accepted, proposed, deprecated, superseded)
60+
* **`instructions`**: Compact AI guidance for immediate application
61+
* **`created`**: Original decision date (informational)
62+
* **`lastModified`**: Most recent update date (MUST check for currency)
63+
* **`authors`**: Decision contributors (informational)
64+
65+
## Workflow for Code Changes
66+
67+
When making code changes, follow this workflow:
68+
69+
1. **Identify Affected Files**: Determine which files will be modified
70+
2. **Match Decision Patterns**: Find decisions with `applyTo` patterns matching those files
71+
3. **Check Decision State**: Verify state (only "accepted" decisions are mandatory)
72+
4. **Read Instructions**: Extract and parse the `instructions` frontmatter
73+
5. **Apply Requirements**: Implement code following the decision requirements
74+
6. **Verify Compliance**: Ensure changes align with all applicable decisions
75+
7. **Check Related Decisions**: Review linked decisions for dependencies
76+
77+
## Examples
78+
79+
### Example 1: Creating a New Test Project
80+
81+
**File to create**: `tests/Core.Tests.Unit/UserServiceTests.cs`
82+
83+
**Relevant Decisions**:
84+
1. `2025-07-10-folder-structure-and-naming-conventions.md` (matches `**/*.*`)
85+
2. `2025-07-11-english-as-project-language.md` (matches `**/*.*`)
86+
87+
**Applied Instructions**:
88+
- Test project MUST be named `Core.Tests.Unit`
89+
- Test project MUST be placed under `tests/` folder
90+
- All code, comments, and identifiers MUST be in English
91+
92+
### Example 2: Adding a NuGet Package
93+
94+
**File to modify**: `Directory.Packages.props`
95+
96+
**Relevant Decisions**:
97+
1. `2025-07-10-centralized-package-version-management.md` (matches `Directory.Packages.props`)
98+
2. `2025-07-10-dependabot-automated-dependency-updates.md` (matches `Directory.Packages.props`)
99+
100+
**Applied Instructions**:
101+
- Package version MUST be defined in `Directory.Packages.props`
102+
- Package reference in project file MUST NOT include version attribute
103+
- Dependabot will automatically manage updates
104+
105+
### Example 3: Making a Commit
106+
107+
**Context**: All commit operations
108+
109+
**Relevant Decisions**:
110+
1. `2025-07-10-conventional-commits.md` (matches `**/*.*`)
111+
2. `2025-07-11-english-as-project-language.md` (matches `**/*.*`)
112+
113+
**Applied Instructions**:
114+
- Commit message MUST follow Conventional Commits 1.0.0 format
115+
- Commit message MUST be in English
116+
- Type MUST be one of: feat, fix, docs, style, refactor, test, chore, build, ci, perf, revert
117+
- Breaking changes MUST be indicated with `!` or `BREAKING CHANGE:` footer
118+
119+
## Related Decisions Handling
120+
121+
When a decision references related decisions:
122+
123+
* MUST read all related decisions to understand full context
124+
* MUST apply requirements from all related decisions that match current file
125+
* MUST respect decision dependency chains (if Decision A depends on B, read B first)
126+
* SHOULD inform user about decision dependencies when making significant changes
127+
128+
## Conflict Resolution
129+
130+
If decisions appear to conflict:
131+
132+
1. **Check states**: "accepted" decisions override "proposed" ones
133+
2. **Check dates**: More recent decisions (`lastModified`) take precedence
134+
3. **Check specificity**: More specific `applyTo` patterns override generic ones
135+
4. **Ask user**: If conflict remains unclear, request user clarification
136+
137+
## Decision Updates
138+
139+
When suggesting changes to decisions:
140+
141+
* MUST update the `lastModified` field to current date
142+
* MUST update the `instructions` frontmatter if core guidance changes
143+
* MUST maintain backward compatibility notes if changing "accepted" decisions
144+
* SHOULD add to "Related Decisions" if new dependencies are introduced

0 commit comments

Comments
 (0)