# Code Analysis

> INTERNAL DEV WORKFLOW for WpfHexEditor — Claude self-invokes this skill BEFORE any non-trivial edit AND AFTER multi-file changes, to enforce CLAUDE.md rules (functions <=25 lines, classes <=300, 1-file-1-responsibility, module boundaries, forbidden patterns). Auto-trigger on: edits >50 lines, new files, refactors, module-crossing changes, plugin/SDK touches, performance-sensitive paths (HexEditor buffer, CodeEditor render, viewport, drag/scroll), Roslyn diagnostics work. Skip on: doc-only, resx-only, comment fixes, single-line bug fixes, single-file <20-line edits.

- Skill: `abbaye/code-analysis` (Agent Skill, multi-file: 7 files)
- Install (CLI): `npx skillmds@latest add abbaye/code-analysis`
- Raw SKILL.md: https://api.skillmd.com/api/skills/abbaye/code-analysis/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: abbaye (https://skillmd.com/u/abbaye)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/abbaye/code-analysis

---


# code-analysis (internal)

Pre/post guard for CLAUDE.md thresholds and forbidden patterns. Not a replacement for the in-app `CodeAnalysisRunner` (deep Roslyn/Halstead).

## When I invoke

| Situation | Phases |
|---|---|
| Non-trivial edit, 2+ modules, new file | P1, P3 |
| HexEditor/ or CodeEditor/ render/buffer, plugin/SDK | P1, P3 (mandatory) |
| Multi-file completion | P3 |
| Single-file <20 lines, no new symbol, resx/md/comment only | skip |

## Phases

**P1 — pre-edit** `scripts/pre-edit-check.ps1 -File <path>`
→ `LOC=X | Funcs>25=N | Class>300=M | Callers=K | Module=<id> | Risk=LOW|MED|HIGH`
HIGH risk → propose PLAN, do not edit.

**P2 — during edit (mental checklist from `references/forbidden-patterns.md`)**
Refuse: `using ICSharpCode`/AvalonEdit, `MessageBox.Show(` (use `IDialogService`), `.md` in `Sources/`, hardcoded user-strings in XAML/VMs, `Resources.X` in HexEditor partials (use `L10n`), background fix without root cause, new mutable static on hot paths.

**P3 — post-edit** `scripts/post-edit-audit.ps1 -Files <paths> -Baseline HEAD`
→ `OK` or `VIOLATIONS: <list>`
VIOLATIONS ≤2 mechanical → fix immediately. VIOLATIONS large/architectural → stop, propose PLAN.

**Scope-impact (on demand):** `scripts/scope-impact.ps1 -Symbol <name>` — enumerate referencing files (cap 50, depth 2) before public symbol rename/move.

## Performance budget

P1 ≤150 tokens | P3 ≤200 tokens | scope = changed files only | cache valid <5 min + unchanged mtime.

## Failure modes to avoid

| Mode | Guard |
|---|---|
| Sur-déclenchement on typo fixes | Honor skip rules above |
| Cache staleness | P3 must not use P1 cache for a just-edited file |
| PowerShell edition mismatch | Scripts exit with clear message; fall back to Grep/Read |

Does not replace `CodeAnalysisRunner`, modify source, run `dotnet build`, or invoke external services.

