Agent skill
dotnet-source-gen-regex
Converts Regex instances to use the compile-time source generator. Use when the user wants to optimize regex performance or enable AOT compatibility.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/dotnet-source-gen-regex
Metadata
Additional technical details for this skill
- author
- Im5tu
- version
- 1.0
- repositoryUrl
- https://github.com/im5tu/dotnet-skills
SKILL.md
.NET Regex Source Generator
The regex source generator creates compile-time generated regex implementations that are:
- AOT-compatible: Works with Native AOT and trimming
- Debuggable: Step through the generated matching code
- Performant: No runtime compilation overhead
When to Use
This skill applies when the user:
- Wants to optimize regex performance
- Needs AOT-compatible regex patterns
- Asks about
[GeneratedRegex]attribute - Mentions converting
new Regex(...)to source-generated - Discusses regex compilation or startup performance
Workflow
-
Find regex usages in the codebase:
new Regex(...)constructor callsRegex.IsMatch(),Regex.Match(),Regex.Replace()static method calls- Other static
Regex.*methods with inline patterns
-
For each regex with a compile-time known pattern:
- Ensure the containing class is
partial - Create a partial method with
[GeneratedRegex]attribute:csharp[GeneratedRegex("pattern", RegexOptions.IgnoreCase)] private static partial Regex MyRegex(); - Name the method descriptively based on what the pattern matches
- Ensure the containing class is
-
Replace usages to call the generated method:
csharp// Before var regex = new Regex(@"\d+", RegexOptions.Compiled); if (regex.IsMatch(input)) { ... } // After if (MyNumberRegex().IsMatch(input)) { ... } [GeneratedRegex(@"\d+")] private static partial Regex MyNumberRegex(); -
Verify with
dotnet build -
If build fails, check:
- Class is marked
partial - Pattern is a compile-time constant
- .NET version is 7 or higher
- Class is marked
Key Notes
| Note | Detail |
|---|---|
RegexOptions.Compiled |
Ignored by source gen - remove it |
| .NET Version | Requires .NET 7+ |
| Caching | Generated method caches singleton internally |
| Timeout | Use [GeneratedRegex("pattern", RegexOptions.None, 1000)] for timeout (milliseconds) |
Pattern Conversion Examples
Instance with options:
// Before
private readonly Regex _emailRegex = new(@"^[\w-\.]+@[\w-]+\.\w+$", RegexOptions.Compiled | RegexOptions.IgnoreCase);
// After
[GeneratedRegex(@"^[\w-\.]+@[\w-]+\.\w+$", RegexOptions.IgnoreCase)]
private static partial Regex EmailRegex();
Static method call:
// Before
if (Regex.IsMatch(input, @"^\d{3}-\d{4}$"))
// After
if (PhoneNumberRegex().IsMatch(input))
[GeneratedRegex(@"^\d{3}-\d{4}$")]
private static partial Regex PhoneNumberRegex();
Error Handling
- If pattern is not constant: Cannot use source gen - leave as runtime regex
- If class is not partial: Add
partialmodifier to the class declaration - If build fails after conversion: Check error messages for unsupported pattern features
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?