# S Clean

> Find and remove dead code and stale documentation. Covers unused functions, orphaned files, dead links, and outdated references. Use for maintenance, pre-release cleanup, or codebase hygiene. Triggers: clean, dead code, unused, orphan, stale, cruft, maintenance.

- Skill: `majiayu000/s-clean` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/s-clean`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/s-clean/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/s-clean

---


# Cleaning WoW Addons

Expert guidance for finding and removing cruft in addon codebases.

## Related Commands

- [c-clean](../../commands/c-clean.md) - Cleanup workflow
- [c-review](../../commands/c-review.md) - Full review (includes clean step)

## MCP Tools

| Task | MCP Tool |
|------|----------|
| Find Dead Code | `addon.deadcode(addon="MyAddon")` |
| Find Stale Docs | `docs.stale(addon="MyAddon")` |
| Filter by Confidence | `addon.deadcode(addon="MyAddon", include_suspicious=false)` |

## Capabilities

1. **Dead Code Detection** — Find unused functions, orphaned files, dead exports
2. **Stale Docs Detection** — Find broken links, outdated refs, version drift
3. **Confidence Levels** — Definite (100%), Likely (90%+), Suspicious (70%+)

## Detection Categories

### Dead Code (`addon.deadcode`)

| Category | Description |
|----------|-------------|
| `unused_function` | Functions defined but never called |
| `orphaned_file` | Lua files not in TOC |
| `dead_export` | Exported values never used |
| `unused_library` | Libraries in Libs/ never used |
| `stale_event` | Event handlers for unregistered events |
| `commented_code` | Large blocks of commented-out code |

### Stale Docs (`docs.stale`)

| Category | Description |
|----------|-------------|
| `dead_link` | Internal links to non-existent files |
| `dead_reference` | Mentions of functions/files that don't exist |
| `version_drift` | Old version numbers in documentation |
| `relative_staleness` | Docs not updated in many commits |

## Workflow

### Quick Cleanup

1. Run `addon.deadcode` with `include_suspicious=false` for high-confidence issues only
2. Remove identified dead code
3. Run `docs.stale` to find documentation issues
4. Fix broken links and update outdated references

### Deep Cleanup

1. Run `addon.deadcode` with all confidence levels
2. Manually verify suspicious findings before removal
3. Run `docs.stale` with all techniques
4. Update documentation to match current code

## Confidence Interpretation

| Level | Meaning | Action |
|-------|---------|--------|
| **Definite** | 100% certain (e.g., file not in TOC) | Safe to remove |
| **Likely** | 90%+ certain (e.g., function never called) | Review briefly, usually safe |
| **Suspicious** | 70%+ certain (e.g., dynamic code patterns) | Manual verification required |

## Best Practices

1. **Start with definite issues** — These are safe to fix immediately
2. **Check dynamic patterns** — `_G`, `rawget`, `loadstring` may hide usage
3. **Preserve intentional dead code** — Mark with `-- KEEP:` comment if needed
4. **Update docs after code changes** — Run `docs.stale` after refactoring

