AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Source repo for the E128.Analyzers NuGet package: Roslyn analyzers with code fixes, dogfooded in a .NET 10 reference app (strict analysis, xUnit v3 + MTP, Docker, Claude Code harness)
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
E128.Reference: source repository for the E128.Analyzers NuGet package
This repository is the source for E128.Analyzers.
The package holds Roslyn analyzers and code fixes. The rules enforce opinionated .NET conventions at compile time.
• Source: src/E128.Analyzers/. The README lists every rule.
• Tests: tests/E128.Analyzers.Tests/
• Release notes: AnalyzerReleases.Shipped.md
• Publishing: .github/workflows/publish.yml pushes the package to nuget.org on each merge to main that changes src/E128.Analyzers/
Report an analyzer defect, or ask for a new rule, in the issues of this repository.檢視完整 README ↗This repository is the source for E128.Analyzers. The package holds Roslyn analyzers and code fixes. The rules enforce opinionated .NET conventions at compile time.
dotnet add package E128.Analyzers
src/E128.Analyzers/. The README lists every rule.tests/E128.Analyzers.Tests/AnalyzerReleases.Shipped.md.github/workflows/publish.yml pushes the package to nuget.org on each merge to main that changes src/E128.Analyzers/Report an analyzer defect, or ask for a new rule, in the issues of this repository.
The rest of the repository is a .NET 10 reference application. It runs the analyzers on its own code. It shows modern conventions for web, CLI, and container applications. The build uses deny-by-default code analysis with third-party Roslyn analyzers. Tests run on xUnit v3 with the Microsoft Testing Platform. ArchUnitNET tests check structural invariants. Central Package Management pins transitive versions. Renovate updates dependencies. GitHub Actions publishes the package with OIDC trusted publishing.
The repository also includes a Claude Code development harness with bash scripts, rules, skills, and agents. It uses the Lode Coding Toolkit for structured project documentation.
# Build
scripts/build.sh
# Test (default: the CI category only)
scripts/test.sh
# Full CI pipeline (shell lint, format, build, and test)
scripts/ci.sh
# Podman
scripts/podman.sh build
scripts/podman.sh test
| Component | Description |
|---|---|
| E128.Reference.Web | Minimal API web app with Kestrel and a health endpoint |
| E128.Reference.Cli | System.CommandLine CLI with a --name option |
| E128.Reference.Core | Shared library (Greeter service, models, repositories, services) |
| E128.Analyzers | Roslyn analyzers (E128001 to E128108) with code fixes, published to nuget.org |
| E128.Reference.Tests | xUnit v3 and MTP with the CI, Podman, and Manual test categories |
| Architecture.Tests | ArchUnitNET structural invariant tests (layers, naming, sealed) |
| E128.Analyzers.Tests | Analyzer and code fix unit tests |
| E128.Reference.Cli.Tests | Unit tests for the CLI app |
| E128.Reference.Core.Tests | Unit tests for the Greeter, GreetingService, and repositories |
| Podman | Hardened Resolute multi-stage Dockerfile and compose.yaml |
| Bash scripts | Build, test, format, CI, Podman, and lode tasks (catalog) |
| Claude Code harness | CLAUDE.md, rules, hooks, skills, and agents (see .claude/) |
| CI/CD | GitHub Actions CI and NuGet trusted publishing |
| Renovate | Automatic dependency updates with grouped PRs and a security bypass |
| Lode | Structured documentation with the Lode Coding Toolkit |
| Tool | Version | macOS | Ubuntu/Debian | Windows |
|---|---|---|---|---|
| .NET SDK | 10.0+ | brew install dotnet | Microsoft docs | winget install Microsoft.DotNet.SDK.10 |
| bash | 4.0+ | brew install bash | Included (5.1+) | WSL2 recommended |
| shellcheck | 0.11.0+ | brew install shellcheck | sudo apt install shellcheck | WSL2 recommended |
| ripgrep (rg) | 14+ | brew install ripgrep | sudo apt install ripgrep | winget install BurntSushi.ripgrep.MSVC |
| fd | 9+ | brew install fd | sudo apt install fd-find | winget install sharkdp.fd |
| jq | 1.7+ | brew install jq | sudo apt install jq | winget install jqlang.jq |
| Podman | 4+ | brew install podman | sudo apt install podman | winget install RedHat.Podman |
| Tool | Purpose | Install |
|---|---|---|
| dotnet-outdated | NuGet update checker | dotnet tool install -g dotnet-outdated-tool |
| jb (ReSharper CLI) | Semantic code cleanup (format.sh) | dotnet tool install -g JetBrains.ReSharper.GlobalTools |
Note (jb):
scripts/format.shrunsjb cleanupcodebeforedotnet formatwhenjbis on$PATH. Ifjbis not installed, the script skips that step. The--checkmode always skipsjb, becausejbhas no verify-only mode.
Note (macOS): The default
/bin/bashon macOS is version 3.2 from 2007. Install bash 5 or later with Homebrew. Put/opt/homebrew/bin/bashbefore/bin/bashin$PATH.
Note (Ubuntu): The
fdpackage is namedfd-find. The binary isfdfind. Create an alias:ln -s $(which fdfind) ~/.local/bin/fd.
Note (macOS and Podman): Podman needs a Linux VM on macOS. Docker Desktop bundles a VM, Podman does not. After install, run
podman machine init && podman machine start.
.
├── .claude/ # Claude Code harness
│ ├── agents/ # Agent definitions
│ ├── hooks/ # Session and guardrail hooks
│ ├── rules/ # Contextual rule files
│ ├── settings.json # Permissions and hook config
│ ├── skills/ # Skill directories
│ └── tmp/ # Session artifacts (gitignored)
├── .editorconfig # Code style (120 char, 4-space, file-scoped ns)
├── .globalconfig # Analyzer severities (deny-by-default)
├── .github/workflows/ci.yml # GitHub Actions CI
├── .github/workflows/publish.yml # NuGet trusted publishing
├── .gitleaks.toml # Secret scan config
├── .opencode/ # opencode mirror of the Claude Code harness
│ ├── agent-assets/ # Generated agent asset copies
│ ├── agents/ # Generated agent definitions
│ └── plugins/ # opencode plugins (guardrail parity with .claude/hooks)
├── AGENTS.md # Cross-harness AI instructions
├── CLAUDE.md # Always-loaded AI instructions
├── Directory.Build.props # Shared build properties
├── Directory.Build.targets # Conditional targets (test project config)
├── Directory.Packages.props # Central package versions
├── Dockerfile # Multi-stage web app image
├── compose.yaml # Container orchestration
├── E128.Reference.slnx # Solution file
├── global.json # SDK version and MTP test runner config
├── docs/ # Architecture and guide documents
├── lode/ # Project knowledge documentation
├── nuget.config # Single source and source mapping
├── opencode.json # opencode v2 config, permission and policy mirror (no model pin)
├── plans/ # Structured planning documents
├── prompts/ # System prompt for Lode sessions
├── renovate.json # Renovate dependency update config
├── scripts/ # Bash development scripts ([catalog](scripts/README.md))
├── src/
│ ├── E128.Analyzers/ # Roslyn analyzers (published NuGet package)
│ ├── E128.Reference.Core/ # Shared library
│ ├── E128.Reference.Web/ # ASP.NET Core minimal API
│ └── E128.Reference.Cli/ # System.CommandLine CLI
└── tests/
├── Architecture.Tests/ # ArchUnitNET structural invariants
├── E128.Analyzers.Tests/ # Analyzer unit tests
├── E128.Reference.Cli.Tests/ # CLI unit tests
├── E128.Reference.Core.Tests/# Core library unit tests
└── E128.Reference.Tests/ # Web integration tests (xUnit v3 and MTP)
This repository uses a deny-by-default analyzer strategy:
dotnet_analyzer_diagnostic.severity = error makes each diagnostic an error unless a rule overrides itDirectory.Packages.props) add more than 1000 rulessuggestion. The .globalconfig file documents each one.tests/.globalconfig at global_level = 101 for test overrides| Package | Focus |
|---|---|
| AsyncFixer | Async and await patterns |
| Meziantou.Analyzer | General best practices |
| Microsoft.VisualStudio.Threading.Analyzers | Threading correctness |
| Roslynator.Analyzers | Code style and quality |
| Roslynator.CodeAnalysis.Analyzers | Advanced code analysis |
| Roslynator.Formatting.Analyzers | Formatting consistency |
| SharpSource | Common pitfalls |
| SonarAnalyzer.CSharp | Security and reliability |
Tests run on xUnit v3 with the Microsoft Testing Platform (MTP) runner:
# Run CI tests (default category)
scripts/test.sh
# Run one test class
scripts/test.sh GreeterTests
# Run all tests, including Podman and Manual
scripts/test.sh --all
# Verbose output (human-readable)
scripts/test.sh --verbose
Test categories:
[Trait("Category", "CI")]: runs in the CI pipeline. Each test must be fast and deterministic.[Trait("Category", "Podman")]: builds and tests the container image. Podman must be installed.[Trait("Category", "Manual")]: needs an external dependency or a manual setup step.# Build, run, and test (scripts/podman.sh)
scripts/podman.sh build
scripts/podman.sh run
scripts/podman.sh test
scripts/podman.sh stop
# Or use podman compose directly
podman compose up -d
curl http://localhost:8080/health
# → {"status":"healthy"}
podman compose down
GitHub Actions (.github/workflows/ci.yml) runs four jobs:
dotnet format --verify-no-changes), release build, and CI-category testsscripts/lint-shell.sh runs shellcheck over every tracked shell scriptNuGet publishing (.github/workflows/publish.yml) starts on a push to main that changes src/E128.Analyzers/. The workflow uses OIDC trusted publishing, so it needs no API key. It skips the push when the version already exists on nuget.org.
The dotnet-overhaul skill is a portable .NET code overhaul loop.
Copy it into any .NET repository and run it with Claude Code.
The skill modernizes language usage and enforces strict code analysis.
It also reviews performance, concurrency, and security, and it verifies that all tests pass.
Opinionated. The skill enforces set conventions: deny-by-default analyzers, immutability, the MTP test runner, and strict code analysis. Edit conventions.md after you copy the skill to match the preferences of your project.
Iterative. For a first large overhaul, run the skill several times. Approve a subset of findings per run, commit, then run again. After the codebase is clean, run the skill periodically to catch drift from new code, updated analyzers, or a TFM upgrade.
# Run this from inside your target repository
cp -r /path/to/dotnet-reference/.claude/skills/dotnet-overhaul .claude/skills/
The skill includes its own scripts, pattern files, and conventions template. It needs no other file from this repository.
Create a branch first, because the skill changes many files across the codebase:
git checkout -b refactor/dotnet-overhaul
# Then in Claude Code
/dotnet-overhaul
/dotnet-overhaul src/MyProject
After you copy the skill, you can edit these files in .claude/skills/dotnet-overhaul/:
| File | Purpose |
|---|---|
conventions.md | Project coding standards, analyzer overrides, auto-approved fixes, and test relaxations |
lessons/*.md | Known false positives and compiler edge cases found during overhaul runs |
The skill detects the test framework, the solution format, and the analyzer configuration.
The external agents (build-validator, sme-researcher, tdd-loop-optimizer) are optional. The skill works without them.
Issues and pull requests are welcome. For a large change, open an issue first to discuss the approach.