plantuml-lintlisted
Install: claude install-skill MrBogomips/claude-code
# PlantUML Lint
Static lint over `.puml` files in the current project.
## Usage
Default: lint every `.puml` and `.plantuml` and `.iuml` under the project
root, excluding `.plantuml/_*.puml` (those are policy partials, not
authored diagrams).
Custom path: a single file, glob, or directory passed as argument.
## Flow
1. **Detect policy presence**:
```bash
if grep -q '^## PlantUML Policy' CLAUDE.md 2>/dev/null && test -f .plantuml/_base.puml; then
policy_present=true
else
policy_present=false
fi
```
2. **Enumerate files** via `Glob`, excluding `.plantuml/_*.puml`.
3. **Batch** files into chunks of ≤10.
4. **Dispatch** each batch to `puml-linter` (agent) via `Task`. Pass the
batch + `project_root` (absolute, from `pwd`) + `policy_present` as
the prompt. Run batches in parallel.
5. **Aggregate** the JSON arrays into one. Sort by `file` then `line`.
6. **Render** a table for the user:
```
file | rule | sev | message
----------------- | ---- | ----- | -------
diagrams/Drift.puml | R3 | error | hex color #FF00FF (line 3) — use $primary
```
Plus a footer: `N error(s), M warning(s) across K file(s) checked`.
## Exit semantics
If any error: skill ends with non-zero summary ("lint failed: N errors").
Otherwise: "lint passed: K files clean".
## Notes
- The agents return JSON, never prose. Reject and re-dispatch a batch
whose output does not parse as JSON.
- Do NOT auto-fix. This skill is read-only.
- For ad-hoc