§ Diagnostic
/detect
Anti-pattern scan across all dimensions.
What it does
The fast scan. /detect does one thing: flag the named anti-patterns and accessibility blockers present in a project and point to the commands that would fix them. The lightest of the diagnostic commands — fast, structured, optimized for speed of decision rather than depth of analysis.
Each Spruce reference file (Typography, Color, Spatial, Component, Motion, Voice, UX Patterns) ends with a catalog of named anti-patterns. /detect runs through those catalogs plus a small set of accessibility blockers, flags matches, notes locations, and points to the corrective command. The output names what’s wrong and tells you what to run next — nothing more.
Output
/detect · Stillpoint home
Scan result
Scanned Stillpoint’s home page · 6 anti-patterns across 3 domains, plus 1 accessibility note.
UX Writing
Systemic
- The SaaS CTA — Both hero and signup primary buttons use the generic "Get Started" default rather than Stillpoint's practice-led voice. Run
/voice. - The Performative Proof — "Join 10,000+ people finding their stillpoint" in the signup section — the wellness anti-reference the moodboard explicitly excluded. Run
/voice.
Component
- The Three-Equal-Cards — Practices section uses three uniform cards in a parallel grid — the aggressive symmetry the moodboard's anti-references named against the established asymmetric direction. Run
/refine.
Typography
- The Missing Apostrophe — Practices section eyebrow renders as "TODAYS PRACTICES" without the apostrophe. Run
/typeface. - The Untracked All-Caps — Practices eyebrow renders at default tracking; missing the foundation's tracking-wide token the rest of the page's all-caps eyebrows already use. Run
/typeface. - The Unmarked Pull Quote — Pull-quote section ships without opening or closing quotation marks; reads as caption rather than as quotation. Run
/typeface.
Accessibility
- Signup email input uses `aria-label` only with no associated visible `<label>` — works for screen readers but lacks semantic robustness. Run
/fortify accessibility.
Highest-leverage next stepRun /voice first — the SaaS CTA and performative-proof copy are the most visible character drift on the page. Then /refine for the practices grid layout, and /typeface for the craft details.
End of output
/detect names what's wrong and tells you what to run. No severity tiers, no narrative analysis — that's /survey's and /critique's job.
When to use it
- You want a quick scan for specific anti-patterns without a full review.
- You’ve heard “there’s probably some AI slop in here” and want to know what specifically.
- You’re triaging — deciding whether any corrective work is needed before committing to a full review.
- You want a fast check before running /finish for ship readiness.
- A quick sanity check during active development.
- You’re asking “quick scan,” “anything wrong here,” or “any anti-patterns to flag.”
How to use it
By default /detect scans the full project. Pass a page, area, or file path to narrow the scope. The scan stays fast regardless — the command’s value is speed of decision, not depth of analysis. For a comprehensive review with severity tiers and action plans, use /survey; for narrative design-direction feedback, use /critique.
- /detect home page
- /detect components/Button.tsx
Anti-patterns it addresses
- Diagnostic creep — the command starts producing severity ratings, action plans, or narrative analysis. That’s /survey’s role; /detect’s value is speed, and the moment it starts analyzing, it stops being fast.
- Padded output — findings invented or stretched to make the report look thorough. A clean scan with three findings is a useful scan; a padded scan with twelve is noise.
- Severity ratings on findings. /detect is binary — the anti-pattern is present or it isn’t. Severity belongs to /survey.
- Instance lists when a pattern is systemic. The same anti-pattern appearing across forty files should be flagged once as systemic, not listed forty times.
- Findings without command pointers. Every finding should connect to an action; an anti-pattern noted without a corrective command pointer leaves the user with nothing to do.