skills/website-guardian/SKILL.md
--- name: website-guardian description: "MANDATORY enforcement for web app changes. Snapshot baseline before edits, verify after, and run root-cause analysis with permanent logging on any bug. Fires on every file change in a webapp directory." weight: light triggers: - "update the website", "deploy", "fix the site", "the site is broken" - after ANY deploy or build (post-deploy verification) - when a user reports a visual bug or broken feature - when a screenshot shows something wrong -
npx skillsauth add nhouseholder/nicks-claude-code-superpowers skills/website-guardianInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Only touch files directly related to the task you were given. NOTHING ELSE.
This rule exists because Claude has repeatedly destroyed admin pages, lost entire frontend redesigns, and broken working UIs by making unsolicited "improvements" during focused backend tasks (courtside-ai NCAA admin page destroyed during algorithm update, researcharia.com redesign lost during backend deploy). These incidents caused hours of lost work.
Violation of this rule is a CRITICAL failure — worse than not completing the task at all. A working site with an incomplete backend update is infinitely better than a broken site with a "complete" update.
Claude has a pattern of breaking websites during updates:
This skill makes it impossible to skip verification. It is not optional. It is not "nice to have." Every website change goes through this gate.
Before ANY edit to any webapp:
REQUIRED READS (stop and read these NOW):
1. ~/.claude/recurring-bugs.md — know what keeps breaking
2. ~/.claude/anti-patterns.md — know what mistakes were made before
3. Project-specific MEMORY.md or site-update-protocol
4. The ACTUAL current state of the page you're about to change
If you skip this step and cause a bug that was already documented, that's a CRITICAL failure.
Before making ANY change, record what currently works:
BASELINE SNAPSHOT — [date] [time]
Page: [URL or route]
Working features:
- [ ] Feature A: [current state, specific values]
- [ ] Feature B: [current state, specific values]
- [ ] Feature C: [current state, specific values]
Working integrations (CRITICAL — these break silently):
- [ ] GitHub Actions buttons (workflow_dispatch triggers)
- [ ] API endpoints called by UI buttons
- [ ] Cron/scheduled job triggers
- [ ] OAuth/auth service connections
- [ ] External service webhooks
- [ ] "Generate Picks" / "Refresh Data" / any action buttons
Screenshots taken: [yes/no — take them if you have Claude in Chrome]
Integration preservation rule: Any code that calls external APIs, triggers GitHub Actions, connects to webhooks, or wires UI buttons to backend services is SACRED. If you don't understand what it does, DON'T TOUCH IT. If you're editing a file that contains integration code, preserve it character-for-character unless explicitly told to change it. After every edit, verify ALL integration buttons still work.
The baseline is your safety net. If you can't describe what's working NOW, you can't tell if you broke it.
Before editing, answer:
If the blast radius is more than 1 page, check ALL affected pages after.
Before verifying, classify what you changed:
| Tier | Change Type | Examples | Verification | |------|------------|----------|-------------| | LOW | Data/content only | New picks JSON, updated stats, text copy, version bump | Deploy CLI success = done. No visual check needed. | | MEDIUM | Style/layout tweak | Color change, spacing fix, font swap, single component edit | One screenshot of the changed page at one breakpoint. 30 seconds. | | HIGH | New feature, redesign, multi-file change | New page, component rewrite, redesign phase, algorithm change affecting display | Full verification: all affected pages, all breakpoints, data spot-check. |
Default to MEDIUM if unsure. Only go HIGH for multi-page or structural changes.
LOW risk (data/content):
✅ Deploy command succeeded
✅ No build errors
Done. Move on.
MEDIUM risk (style/layout):
HIGH risk (feature/redesign/algorithm):
POST-CHANGE VERIFICATION — [date] [time]
Page: [URL or route]
Baseline check:
- [x] Feature A: STILL WORKING [same values]
- [x] Feature B: STILL WORKING [same values]
- [ ] Feature C: BROKEN — [what changed]
→ FIX BEFORE CONTINUING
[ ] All features from baseline snapshot still work
[ ] No new console errors or warnings
[ ] No visual regressions (layout, colors, text)
[ ] Data values are correct (not placeholder, not zero, not null)
[ ] The thing I was trying to fix actually IS fixed
[ ] No other pages/components affected by my change are broken
If ANY checkbox fails, fix it NOW. Do not declare the task done.
When ANY bug is discovered on a website — whether found by you, the user, or a screenshot:
BUG REPORT — [date]
What's broken: [specific symptom]
Where: [page, component, element]
Expected: [what it should look like/do]
Actual: [what it actually looks like/does]
Don't just fix the symptom. Trace the cause:
1. WHY is the data wrong?
→ Because the calculation uses flat +1u instead of odds-based payout
2. WHY does the calculation use flat +1u?
→ Because I wrote the payout function without reading how bets actually settle
3. WHY didn't I read how bets settle?
→ Because I assumed I knew (confident ignorance)
4. WHY wasn't this caught before deploy?
→ Because I didn't verify the actual numbers, only that the UI rendered
5. WHY didn't I verify the numbers?
→ Because there's no automated check and I skipped manual verification
ROOT CAUSE: Skipped domain research + skipped output verification
Be brutally honest. Which of these caused this bug?
| Carelessness Type | Description | |-------------------|-------------| | Didn't read first | Changed code without reading the existing implementation | | Didn't verify after | Claimed "fixed" without checking the actual output | | Didn't check blast radius | Fixed one thing, broke another because I didn't check related components | | Assumed domain knowledge | Wrote logic for a domain I don't fully understand | | Ignored maintenance docs | The fix was documented in recurring-bugs.md but I didn't read it | | Copied without understanding | Duplicated code or patterns without understanding why they work | | Didn't snapshot baseline | Can't tell what I broke because I don't know what was working | | Rushed | Took shortcuts to finish faster, introduced bugs |
EVERY bug gets logged. No exceptions. Append to ~/.claude/anti-patterns.md:
### [WEBSITE_BUG] [SHORT_TITLE] — [DATE]
- **Project**: [project name]
- **Page/Component**: [specific location]
- **Bug**: [what was broken]
- **Root cause**: [from 5 Whys analysis]
- **Carelessness type**: [from table above]
- **Fix**: [what actually fixed it]
- **Prevention rule**: [one imperative sentence for future agents]
- **Verification**: [how to confirm this specific bug isn't present]
If the bug reveals a gap in existing maintenance docs:
Write a clear instruction that prevents this bug from ever happening again. Add it to the project's MEMORY.md or CLAUDE.md:
## [BUG PREVENTION] [Title]
BEFORE: [what to check before making this type of change]
NEVER: [what to never do]
ALWAYS: [what to always do]
VERIFY: [how to confirm this bug isn't present]
When the user reports a visual bug or provides a screenshot:
These patterns are promoted from site-update-protocol (UFC-specific) to apply universally.
ALL tiers (mandatory):
MEDIUM + HIGH tiers only: 2. Visual verification of changed pages (MEDIUM: one page, one breakpoint. HIGH: all affected pages, all breakpoints).
HIGH tier only: 3. Spot-check one data row end-to-end — pick one piece of data, trace it from source through code to rendered page. 4. Check action buttons still work — any button calling APIs, triggering workflows, or submitting data. 5. Version/data regression check — compare deployed version and data counts against baseline. 6. Console error scan — load affected pages and check for new errors.
POST-DEPLOY CHECK — [site] [date]
Page: [URL]
[ ] Renders without errors
[ ] All data present (not empty, not placeholder)
[ ] All interactive elements respond (buttons, links, forms)
[ ] No visual regressions (layout, colors, spacing)
[ ] No console errors
[ ] Data matches source (spot-checked 1 row)
These apply to ANY site displaying computed data:
| Invariant | Violation Example | |-----------|-------------------| | Positive metric requires positive count | "Revenue: $500" with "Sales: 0" | | Percentages must be 0-100 | "260% confidence" | | Totals must equal sum of parts | "Combined: $100" but parts sum to $85 | | Win/loss records must match detail | "5W-3L" but table shows 4 wins | | Dates must be chronological | Future dates in historical data | | No null/undefined in rendered output | "undefined" or "NaN" visible on page |
tools
Unified context management and session continuity skill. Combines total-recall, strategic-compact, /ledger, and session continuity. Runs in background to preserve critical context across compaction and sessions.
tools
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
tools
Suggest /ultraplan for complex planning tasks on Claude Code CLI (2.1.91+ only). Research preview.
tools
UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 9 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind, shadcn/ui). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient. Integrations: shadcn/ui MCP for component search and examples.