Three fixes found by running the skill against a real SwiftUI codebase and comparing runs on identical prompts — twelve runs across two rounds.
Layer 1 discovery patterns generalized. Three of the four prescribed scans were one project's private naming rather than SwiftUI APIs — activeSheet, selectedSection, and PromotionCard (a component type no other codebase has). Any user running layer1 on their own project would have matched zero of them and received a clean-looking empty inventory. Layer 1 now leads with the presentation APIs every SwiftUI project shares, then discovers the project's own routing convention rather than assuming a spelling. Two independent runs against a codebase using per-view boolean state confirmed the old patterns matched nothing and the run had to improvise a replacement.
Rating requirement no longer self-contradictory. The opening instruction demanded ratings on "every finding" while naming only four of the table's six dimensions — and Layer 1 produces an inventory of unverified flags, not findings. It now names all six, explains why a partial rating drops a row out of triage, and exempts Layer 1.
Session Setup has a non-interactive path. Setup uses AskUserQuestion, which needs a user; the skill also runs as a subagent, from a script, or inside a pipeline. It now proceeds with documented safe defaults, reads recorded preferences if a prior interactive run left them, and never writes preferences from a non-interactive run.
Also in this release: radar-suite-core.md synced from radar-suite (660 → 1,122 lines) with two imported mandates scoped so they can't reject findings this skill never collects fields for; a README claim corrected to describe what the skill actually enforces; and the README opening reframed around walking a user's path rather than comparing code to standards.
No behavior change for an interactive run on a project that already matched the old patterns.