Senior Frontend SKILL makes Claude Code open your page in a real browser before it says done

// Detect dark theme var iframe = document.getElementById('tweet-2120513853725294751-511'); if (document.body.className.includes('dark-theme')) { iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=2120513853725294751&theme=dark" } A passing typecheck tells you nothing about whether the button can be reached with Tab, or whether a long name breaks the layout on a phone. That gap is the whole reason senior-frontend exists. It is a skill in the Claude Code Templates catalog, 31K downloads, currently v2.0.0, and what it really does is refuse to let Claude call a UI task finished on the strength of a clean build. What the skill actually changes Most of the value is ordering. The skill makes Claude read before it writes: the framework and its version, the existing Button and Dialog components, the design tokens, the data layer, the npm scripts. In a project that already has tokens, a new hex value counts as a bug. Then it forces the states nobody

Senior Frontend SKILL makes Claude Code open your page in a real browser before it says done

// Detect dark theme var iframe = document.getElementById('tweet-2120513853725294751-511'); if (document.body.className.includes('dark-theme')) { iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=2120513853725294751&theme=dark" }

A passing typecheck tells you nothing about whether the button can be reached with Tab, or whether a long name breaks the layout on a phone. That gap is the whole reason senior-frontend exists. It is a skill in the Claude Code Templates catalog, 31K downloads, currently v2.0.0, and what it really does is refuse to let Claude call a UI task finished on the strength of a clean build.

What the skill actually changes

Most of the value is ordering. The skill makes Claude read before it writes: the framework and its version, the existing Button and Dialog components, the design tokens, the data layer, the npm scripts. In a project that already has tokens, a new hex value counts as a bug.

Then it forces the states nobody asks for. Loading, empty, error, success, pending action, long and odd content, partial failure. Each one has a required outcome, not a suggestion: the empty state has to say why it is empty and what to do about it, the error has to say what failed and offer a way out, and one row’s failed action must not break the rest of the list.

The build rules are platform first.