Agent skill
dotnet-chous
Use Chous in .NET repositories that ship sizeable frontend codebases and want file-structure linting, naming convention enforcement, and folder-layout policy as a CLI gate. Use when the problem is frontend architecture drift in the file tree rather than semantic code issues inside the files.
Install this agent skill to your Project
npx add-skill https://github.com/managedcode/dotnet-skills/tree/main/catalog/Tools/Chous/skills/dotnet-chous
SKILL.md
Chous for Frontend File-Structure Linting in .NET Repositories
Trigger On
- the repo has a growing frontend tree and the user asks about naming conventions, folder structure, or file placement rules
- the repo wants to enforce layout policy for
ClientApp/,src/,apps/, orpackages/ - architectural drift in the frontend file tree is a larger problem than syntax errors
Do Not Use For
- semantic code bugs, type errors, or framework API misuse
- CSS, HTML, or JS rule enforcement inside files
- very small repos where a structure linter would add more ceremony than value
Inputs
- the nearest
AGENTS.md package.json- any existing
.chousfile - the frontend tree that needs policy enforcement
Workflow
- Define the structure problem first:
- naming convention drift
- component placement
- forbidden folders or files
- monorepo frontend boundaries
- Start from
chous initor a known preset, then tighten only the rules the repo can explain. - Keep the checked-in
.chousfile readable enough that future contributors understand the policy. - Add repeatable commands such as:
npx chous
- Exclude generated folders, build artifacts, and vendored assets so the signal stays architectural.
- Use Chous as a supplement to semantic linters, not as their replacement.
- Re-run after moves or refactors to confirm the structure policy still matches the intended design.
Bootstrap When Missing
- Detect current state:
rg --files -g 'package.json' -g '.chous'rg -n '"chous"' --glob 'package.json' .
- Start with the official no-install or global paths:
npx chousnpm install -g chous
- Initialize config when the repo truly wants structure policy:
npx chous init
- Add a repeatable command to
AGENTS.mdandpackage.json, then verify with:npx chous
- Return
status: configuredif the repo now has a checked-in structure-lint baseline, orstatus: improvedif an existing baseline was tightened. - Return
status: not_applicablewhen the repo is too small or too fluid to justify a structure-lint gate right now.
Handle Failures
- If Chous flags large parts of the tree after the first rollout, the rule set is probably too strict for the repo's current maturity; start from the preset and tighten incrementally.
- Generated or vendored folders should be excluded instead of repeatedly ignored in reviews.
- If contributors cannot explain what a rule protects, simplify the
.chouspolicy before enforcing it in CI.
Deliver
- a checked-in frontend structure policy
- repeatable file-tree linting commands
- explicit exclusions for generated and vendored folders
Validate
- the
.chousrules reflect real architecture intent - generated output is excluded
- Chous is used alongside, not instead of, semantic linters
- the policy remains understandable after the first rollout
Ralph Loop
- Plan: analyze current state, target outcome, constraints, and risks.
- Execute one step and produce a concrete delta.
- Review the result and capture findings.
- Apply fixes in small batches and rerun checks.
- Update the plan after each iteration.
- Repeat until outcomes are acceptable.
- If a dependency is missing, bootstrap it or return
status: not_applicablewith a reason.
Required Result Format
status:complete|clean|improved|configured|not_applicable|blockedplan: concise plan and current stepactions_taken: concrete changes madeverification: commands, checks, or review evidenceremaining: unresolved items ornone
Example Requests
- "Enforce frontend folder naming and placement rules."
- "Add file-structure linting to the web client."
- "Why is our frontend tree drifting even though code linting passes?"
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
dotnet-project-setup
Create or reorganize .NET solutions with clean project boundaries, repeatable SDK settings, and a maintainable baseline for libraries, apps, tests, CI, and local development.
csharp-scripts
Run single-file C# programs as scripts (file-based apps) for quick experimentation, prototyping, and concept testing. Use when the user wants to write and execute a small C# program without creating a full project.
dotnet-pinvoke
Correctly call native (C/C++) libraries from .NET using P/Invoke and LibraryImport. Covers function signatures, string marshalling, memory lifetime, SafeHandle, and cross-platform patterns. USE FOR: writing new P/Invoke or LibraryImport declarations, reviewing or debugging existing native interop code, wrapping a C or C++ library for use in .NET, diagnosing crashes, memory leaks, or corruption at the managed/native boundary. DO NOT USE FOR: COM interop, C++/CLI mixed-mode assemblies, or pure managed code with no native dependencies.
nuget-trusted-publishing
Set up NuGet trusted publishing (OIDC) on a GitHub Actions repo — replaces long-lived API keys with short-lived tokens. USE FOR: trusted publishing, NuGet OIDC, keyless NuGet publish, migrate from NuGet API key, NuGet/login, secure NuGet publishing. DO NOT USE FOR: publishing to private feeds or Azure Artifacts (OIDC is nuget.org only). INVOKES: shell (powershell or bash), edit, create, ask_user for guided repo setup.
dotnet-legacy-aspnet
Maintain classic ASP.NET applications on .NET Framework, including Web Forms, older MVC, and legacy hosting patterns, while planning realistic modernization boundaries.
dotnet-code-review
Review .NET changes for bugs, regressions, architectural drift, missing tests, incorrect async or disposal behavior, and platform-specific pitfalls before you approve or merge them.
Didn't find tool you were looking for?