debt-taxonomylisted
Install: claude install-skill johantor/zion
# Debt taxonomy (core)
This is the stack-neutral core. The suppression mechanisms, package-manager variance, and
upgrade examples for a specific stack live in that stack's skill:
- **.NET / C#** → `debt-taxonomy-dotnet`
- **TypeScript / JavaScript** (React frontend or Node backend/CLI) → `debt-taxonomy-typescript`
## Stack detection
Before enumerating or classifying, detect the stack(s) in scope with a single marker-file
pass — do not assume. Apply the matching per-stack skill for each detected stack.
| Marker file(s) | Stack | Skill to apply |
|---|---|---|
| `*.csproj`, `*.sln`, `Directory.Packages.props`, `Directory.Build.props`, `global.json` | .NET / C# | `debt-taxonomy-dotnet` |
| `package.json`, `tsconfig.json`, `.eslintrc*`, `biome.json` | TypeScript / JS | `debt-taxonomy-typescript` |
```bash
# One pass — presence only, no file bodies
ls *.sln Directory.Packages.props Directory.Build.props global.json 2>/dev/null
find . -maxdepth 3 \( -name '*.csproj' -o -name 'package.json' -o -name 'tsconfig.json' \
-o -name '.eslintrc*' -o -name 'biome.json' \) 2>/dev/null | head
```
A repo may match more than one stack (a typical Optimizely + React solution matches both) —
that is expected; apply each stack's skill to its own lane.
**Lanes are not stacks.** A lane (`backend`/`frontend`) names a *file area* used for scoping
and delegation; a stack names a *language*. Never infer the taxonomy from the lane name — a
`backend` lane is C# in an Optimizely repo but TypeScript