From dotnet
Apply consistent method parameter line break formatting across C# projects. Formats parameter lists in declarations (methods, constructors, local functions, delegates) while leaving invocations untouched. Use when the user wants to format method parameters or apply parameter line break formatting.
npx claudepluginhub atc-net/atc-agentic-toolkit --plugin dotnetThis skill uses the workspace's default tool permissions.
**ALL projects:**
Adds Roslynator and Meziantou analyzers plus a comprehensive .editorconfig with 80+ diagnostic rules, naming conventions, and performance warnings to .NET/C# projects/solutions for strict code quality enforcement.
Runs 7-step cleanup pipeline on .NET projects: format code, remove unused usings, fix analyzer warnings, remove dead code, resolve TODOs, audit sealed classes, propagate CancellationTokens. Verifies each step with build and tests.
Monitors deployed URLs for regressions after deploys, merges, or upgrades by checking HTTP status, console errors, network failures, performance (LCP/CLS/INP), content, and API health.
Share bugs, ideas, or general feedback.
ALL projects:
All *.cs files EXCEPT auto-generated code. Exclude files with:
[GeneratedCode] or [GeneratedCodeAttribute]<auto-generated> tagsONLY format parameter lists in DECLARATIONS:
DO NOT format parameter lists in INVOCATIONS or EXPRESSIONS:
.Replace(...), .Substring(...))new MyClass(...))condition ? value1 : value2)(x, y) => x + y)this[int x, int y])Break down all parameters if a method has more than 1 parameter, with each parameter on its own line.
Break down a single parameter if the total line length (including indentation) exceeds 80 characters.
// No parameters - no break
public void MyMethod1()
// Single short parameter - no break
public void MyMethod2(int parameter1)
// Single parameter, total length > 80 chars - break
public void MyLooooooooooooooooooooooooooooooooooooooooooonMethod4(
int parameter1)
// 2 parameters - break all
public void MyMethod5(
int parameter1,
int parameter2)
// 3+ parameters - break all
public void MyMethod6(
int parameter1,
int parameter2,
int parameter3)
// Constructor with multiple parameters - break all
public MyClass(
string name,
int age,
bool isActive)
// Local function with multiple parameters - break all
void LocalFunction(
int param1,
string param2)
// Delegate with multiple parameters - break all
public delegate void MyEventHandler(
object sender,
EventArgs e);
// Method invocations - DO NOT format
var result = assembly.GetBeautifiedName().Replace("Api", "API", StringComparison.Ordinal);
var name = someObject.SomeMethod(arg1, arg2, arg3);
// Constructor invocations - DO NOT format
var obj = new MyClass(param1, param2, param3);
// Ternary operators - DO NOT format
return condition ? value1 : value2;
// Lambda expressions - DO NOT format
var filtered = items.Where((item, index) => item.IsActive && index > 0);
// Indexer declarations - DO NOT format
public string this[int row, int column]
Find all .cs files in the repository.
Method declarations:
public, private, protected, internalstatic, virtual, override, abstract, async, sealed[modifiers] [return-type] [method-name]([parameters])void) before the method name{, ;, or =>Constructor declarations:
[modifiers] [class-name]([parameters])Local function declarations:
[return-type] [function-name]([parameters])Delegate declarations:
[modifiers] delegate [return-type] [delegate-name]([parameters]);delegate keywordKey distinction from invocations:
. (member access), are on the right side of =, or are arguments to other methodsFor each declaration found:
( on same line as method name) on same line as last parameterWork on files in manageable batches (e.g., 10-20 files at a time).
Run dotnet build to ensure no syntax errors.
Use todo list to track which files have been processed.
Run full test suite after all changes complete.