| name | error-consolidation-search |
| description | Finds C# diagnostics related to a consolidation theme. Use after setup to review documented and catch-all candidates through explicit approval gates. |
Search for Related Error Codes
Search for theme-related diagnostics that may have been missed during initial consolidation. Preserve all three phase boundaries and approval gates.
Required Inputs
Collect these inputs from the user:
- Destination filename: The consolidated
.md file in docs/csharp/language-reference/compiler-messages/.
- Theme description: The theme to search for.
Key Paths
- Destination:
docs/csharp/language-reference/compiler-messages/{destination-filename}
- TOC:
docs/csharp/language-reference/toc.yml
- Catch-all:
docs/csharp/misc/sorry-we-don-t-have-specifics-on-this-csharp-error.md
- Roslyn error codes:
../roslyn/src/Compilers/CSharp/Portable/Errors/ErrorCode.cs
- Roslyn resources:
../roslyn/src/Compilers/CSharp/Portable/CSharpResources.resx
Phase A: Search Existing Documentation
- Read the destination and collect all included error codes.
- Search all files whose names begin with
cs in:
docs/csharp/language-reference/compiler-messages/
docs/csharp/misc/
- Read every candidate and decide whether its diagnostic relates to the theme.
- Build a candidate list containing the file, error code, and a brief reason it matches.
Present the list and stop:
| File | Error Code | Reason |
|------|------------|--------|
| cs0220.md | CS0220 | Describes compile-time overflow |
Tell the user:
Review this list. Approve the files you want merged, then run the error-consolidation-merge-existing skill with the approved list.
Wait for the user before proceeding to Phase B. Do not merge candidates in this skill.
Phase B: Search Undocumented Catch-All Errors
After the Phase A gate is satisfied:
- Read
f1_keywords from the catch-all file's front matter.
- For each listed code:
- Extract the numeric portion, such as
CS0463 to 463.
- Find the
ERR_ or WRN_ constant assigned that number in ErrorCode.cs.
- Find the
<data> element in CSharpResources.resx whose name exactly matches the constant.
- Read the verbatim message from its
<value> child.
- Keep only messages related to the theme.
- Exclude codes already present in the destination.
Present the filtered list and stop:
| Error Code | Error Message |
|------------|---------------|
| CS0463 | Evaluation of the decimal constant expression failed |
| CS1021 | Integral constant is too large |
Tell the user:
Review this list. Tell me which error codes to add.
Wait for explicit approval before proceeding to Phase C.
Phase C: Add Approved Error Codes
Process all approved codes as one batch.
For each code:
-
Add it to destination f1_keywords and helpviewer_keywords in numeric order.
-
Add it to the destination master error list in numeric order:
- [**CS{NNNN}**](#anchor-tbd): *{verbatim error message from CSharpResources.resx}*
Use #anchor-tbd until the consolidation phase assigns thematic anchors. Replace Roslyn format placeholders such as '{0}' and '{1}' with descriptive terms while preserving the static message text and producing a coherent sentence. Prefer context-appropriate generic terms such as 'type', 'value', 'operator', 'member', or 'method'. For example, Constant value '{0}' cannot be converted to a '{1}' becomes Constant value 'value' cannot be converted to a 'type'. Use the following XML <comment> element, when present, to identify placeholder meanings.
-
Add it to the destination TOC entry's displayName in numeric order.
-
Remove it from f1_keywords in the catch-all file.
Do not create redirects for these codes because they had no standalone articles.
Present a summary of all changes made.