What problem does it solve? Formatting and lint feedback often arrives too late — in PR review — instead of at edit time, and hand-written per-repo hooks drift out of sync as a project's stack evolves. This Skill inspects a repository's actual toolchain, renders a tailored PostToolUse formatter/linter dispatcher plus a stray-artifact guard, wires them into .claude/settings.json, and reconciles everything on re-runs. ## Core Features & Use Cases - Stack detection probe: Runs scripts/detect-hook-stack.sh to detect ruff, prettier, markdownlint, shellcheck, dart, rustfmt, gofmt, and dotnet-format from repo config evidence (never from what happens to be installed locally), including monorepo-safe manifest matching and vendored-path exclusion. - Template-based rendering: Renders .claude/hooks/sassydog-post-edit.sh and sassydog-artifact-guard.sh from conditional templates — formatters fix silently, linters with unfixable findings exit 2 so findings feed back immediately. - Surgical settings merge: Adds or removes only the hook entries it owns (those referencing .claude/hooks/sassydog-), never touching hand-written hooks or unrelated settings keys, with a preview-then-approve gate before any write. - Use Case: A team adopts ruff and markdownlint mid-project; re-running the Skill refreshes the generated dispatcher to route *.py and *.md edits through the new tools, pins markdownlint-cli2 to the version CI enforces, and normalizes legacy ownership markers. ## Quick Start Ask the agent to set up the sassydog format-on-edit hooks for this repository and approve the rendered scripts and settings diff it shows you.