You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Add CONTEXT.md to integrate grill-with-docs into planning/OpenSpec flows so ambiguous repo language is clarified before proposal/spec/design/task artifacts are written
* Add experimental AI PR workflow docs and prompts; introduce pr-preflight and
respond-to-review-comments skills; update repo guidance and templates.
---------
Co-authored-by: Jason Naylor <jason_naylor@sil.org>
- Src catalog (overview of major folders): `.github/src-catalog.md`
8
+
- AI review workflow: `grill-with-docs` for planning language, `.github/instructions/review-analyzer.instructions.md` for review policy, `pr-preflight` for branch/PR readiness, and `respond-to-review-comments` for reviewer feedback.
9
+
- Specialist review agents: `.github/agents/fieldworks.csharp-expert.agent.md`, `.github/agents/fieldworks.winforms-expert.agent.md`, `.github/agents/fieldworks.cpp-expert.agent.md`, and `.github/agents/fieldworks.avalonia-expert.agent.md`.
7
10
- Component guides: `Src/<Folder>/AGENTS.md` (and subfolder AGENTS.md where present)
-**Implicit file inclusion is common**: SDK-style projects usually include new `.cs` files automatically.
19
+
-**Check the touched project before editing**: Some projects still carry explicit includes, linked files, designer items, generated code, or custom metadata that must be preserved.
20
+
-**Assembly metadata is managed explicitly**: Keep `GenerateAssemblyInfo` disabled where the project links `CommonAssemblyInfo.cs`.
21
+
-**Preserve project-specific settings**: Keep existing settings for x64, WinExe, WindowsDesktop, COM, resources, warnings-as-errors, and custom MSBuild targets.
22
+
-**Do not normalize projects unnecessarily**: Avoid converting project structure, import style, or target declarations unless that is the task.
19
23
20
-
-**No Implicit Imports**: Unlike SDK-style projects, .NET Framework projects do not automatically import common namespaces or assemblies
24
+
### Legacy project caveat
25
+
Some non-SDK-style or tool-specific projects may still exist. When you encounter one:
21
26
22
-
-**Build Configuration**: Contains explicit `<PropertyGroup>` sections for Debug/Release configurations
27
+
-**No implicit imports**: Unlike SDK-style projects, legacy .NET Framework projects may not automatically import common namespaces or assemblies.
28
+
-**Explicit build configuration**: Legacy projects often contain explicit `<PropertyGroup>` sections for Debug/Release configurations.
23
29
24
-
-**Output Paths**: Explicit `<OutputPath>` and `<IntermediateOutputPath>` definitions
25
-
26
-
-**Target Framework**: Uses `<TargetFrameworkVersion>` instead of `<TargetFramework>`
- Keep explicit `<Compile Include=... />` items and other legacy structure intact.
31
+
- Update the project file only as much as the change requires.
32
+
- Do not assume you can migrate it to SDK-style as part of routine code edits.
28
33
29
34
## NuGet Package Management
30
35
- Installing and updating NuGet packages in .NET Framework projects is a complex task requiring coordinated changes to multiple files. Therefore, **do not attempt to install or update NuGet packages** in this project.
31
36
- Instead, if changes to NuGet references are required, ask the user to install or update NuGet packages using the Visual Studio NuGet Package Manager or Visual Studio package manager console.
32
37
- When recommending NuGet packages, ensure they are compatible with .NET Framework or .NET Standard 2.0 (not only .NET Core or .NET 5+).
33
38
34
-
## C# Language Version is 7.3
35
-
- This project is limited to C# 7.3 features only. Please avoid using:
39
+
## C# Language Version
40
+
- The repo-wide default language version for C# projects is 8.0 via `Directory.Build.props`.
41
+
- Do not introduce features that require a newer language version unless the specific project or repo policy is updated first.
42
+
- Prefer syntax already used in the touched area so edits remain consistent with surrounding code.
43
+
44
+
### C# 8.0 features available by default
45
+
- Switch expressions and pattern matching enhancements.
46
+
- Using declarations where disposal scope remains clear.
47
+
- Null-coalescing assignment and range/index operators when they improve clarity.
36
48
37
-
### C# 8.0+ Features (NOT SUPPORTED):
38
-
- Using declarations (`using var stream = ...`)
39
-
- Await using statements (`await using var resource = ...`)
40
-
- Switch expressions (`variable switch { ... }`)
41
-
- Null-coalescing assignment (`??=`)
42
-
- Range and index operators (`array[1..^1]`, `array[^1]`)
- Nullable reference types are not enabled repo-wide. Do not introduce `string?`, `#nullable enable`, or nullable-flow assumptions unless the project explicitly opts in.
51
+
- File-scoped namespaces are not available under the repo default language version and should not be introduced.
47
52
48
53
### C# 9.0+ Features (NOT SUPPORTED):
49
54
- Records (`public record Person(string Name)`)
50
55
- Init-only properties (`{ get; init; }`)
51
56
- Top-level programs (program without Main method)
52
-
- Pattern matching enhancements
57
+
- Pattern matching enhancements beyond C# 8
53
58
- Target-typed new expressions (`List<string> list = new()`)
0 commit comments