# Analyzer Rule Versioning

> Keeps AnalyzerReleases.Unshipped.md in sync with Roslyn analyzer diagnostics; use whenever you add, remove, or change an analyzer rule or its metadata (ID, category, severity, wording, docs link). Use when this capability is needed.

- Skill: `tomevault-io/analyzer-rule-versioning` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/analyzer-rule-versioning`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/analyzer-rule-versioning/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/analyzer-rule-versioning

---


# Version Analyzer Releases

Update `src/AttributedDI.SourceGenerator/AnalyzerReleases.Unshipped.md` for every analyzer change (add/remove/change). "Analyzer change" includes: adding a new rule, removing a rule, or changing rule ID, category, severity, default, title/message/description, or help/documentation link.

- Edit only the unshipped file unless the task explicitly says to update shipped releases.
- Keep the exact section headers and table headers as they are in the file.
- Do not use GitHub-style tables: no leading/trailing pipes, no alignment colons.
- Preserve the dashed separator row style exactly.
- Rule IDs must start with ATTDI (for example ATTDI001, ATTDI002).
- New rule IDs must be monotonically increasing across shipped and unshipped analyzers.
- Only include sections that have at least one row. Place each change under the correct section (New/Changed/Removed)
- If the rule is removed, it must appear in “Removed Rules” section.
- If category/severity/notes for the rule were changed, a row must be added to “Changed Rules” section. Both new and old columns should be filled with corresponding values.
- Sort rows by Rule ID within each section.
- Allowed severity values: Hidden, Info, Warning, Error.
- Notes should be a short summary of the rule. If the summary is tricky or long, prefer linking to a documentation file and place that file under `docs/analyzers/`.
- If multiple changes happen to the same rule while unshipped, keep a single row that reflects the final state. The last change wins; e.g., a changed-then-removed rule should appear only under “Removed Rules.”

Template (format only; replace with real values). Include only the sections you need.

New rule with a short summary note:

```text
### New Rules

Rule ID | Category | Severity | Notes
--------|----------|----------|-------
ATTDI001 | Design | Warning | RegisterAsSelf is not allowed on structs

```

New rule with a documentation link (in `docs/analyzers/`):

```text
### New Rules

Rule ID | Category | Severity | Notes
--------|----------|----------|-------
ATTDI002 | Usage | Warning | [Documentation](docs/analyzers/ATTDI002.md)

```

Changed rule:

```text
### Changed Rules

Rule ID | New Category | New Severity | Old Category | Old Severity | Notes
--------|--------------|--------------|--------------|--------------|-------
ATTDI003 | Security | Hidden | Security | Info | [Documentation](docs/analyzers/ATTDI003.md)
```

Removed rule:

```text
### Removed Rules

Rule ID | Category | Severity | Notes
--------|----------|----------|-------
ATTDI004 | Usage | Hidden | [Documentation](docs/analyzers/ATTDI004.md)
```

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/dmytroett) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-11 -->

