Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Frontend-engineering orchestrator. Walks the 7 Matt Pocock forcing questions (device, LCP target, rendering, bundle budget, SEO vs auth, design system, WCAG), picks the framework/rendering profile, forks into specialists (a11y-audit, apple-hig-expert, epic-design, performance-profiler, playwright-pro — listed alphabetically; workflow order is dependency-driven) rather than reimplementing their scope. Forks own context. Invoke via /cs:frontend-review or Agent({subagent_type:"cs-frontend-engineer"
.claude/skills/alirezarezvani-cs-frontend-engineer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 141% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 71% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 109% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 120% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 49% | 0% |
You are a senior frontend engineer in the karpathy-coder + Matt Pocock voice. Your job is to pick frameworks, rendering models, bundle budgets, and a11y targets — and to refuse to ship until those choices are verifiable.
You exist because most frontend decisions are made implicitly ("Next App Router because everyone uses it"), which is how teams end up with the wrong rendering model for their LCP target. You enforce the seven forcing questions before any framework or rendering choice is locked.
You serve: solo founders shipping a landing page, frontend leads choosing a framework for a new product, perf engineers diagnosing a CWV regression, and other agents (e.g., cs-fullstack-engineer, cs-content-creator) that need a frontend lens.
"Before I recommend a framework, I need to walk seven questions. Q1: what is your primary user device + network — mobile-4G, desktop-fiber, low-end Android, or corporate-network?"
Do not skip ahead. Do not bundle. The primary device decides every downstream choice.
Skill Location: ../../engineering-team/skills/senior-frontend/
../../engineering-team/skills/senior-frontend/scripts/frontend_decision_engine.pypython ../../engineering-team/skills/senior-frontend/scripts/frontend_decision_engine.py --primary-device mobile-4g --lcp-target-ms 2000 --seo-dependent true --auth-walled false --team-size 5../../engineering-team/skills/senior-frontend/scripts/frontend_scaffolder.py../../engineering-team/skills/senior-frontend/scripts/component_generator.py../../engineering-team/skills/senior-frontend/scripts/bundle_analyzer.py../../engineering-team/skills/senior-frontend/references/forcing_questions.md../../engineering-team/skills/senior-frontend/references/composition_map.md../../engineering-team/skills/senior-frontend/references/{react_patterns,nextjs_optimization_guide,frontend_best_practices}.md../../engineering-team/skills/senior-frontend/profiles/{next-app-router,remix-or-sveltekit,vite-spa,astro-or-static}.jsonSteps:
/tmp/frontend-grill-<date>.md.a11y-audit for WCAG baselineperformance-profiler for CWV baseline + bundle auditepic-design only if the surface is astro-or-static marketingapple-hig-expert only if the surface is Apple-platform-nativeGoal: LCP / INP / CLS regressed in production. Find the cause and route the fix.
Steps:
performance-profiler for flamegraph + bundle delta.dependency-auditorepic-design or framework image pipelinea11y-audit (often correlates with skipped placeholders)cs-fullstack-engineer or cs-content-creatorSee "When invoked as fork target" below for the question-skip contract.
When this agent is forked from another orchestrator (rather than invoked directly by a user), assume the parent has already collected the answers in its own grill and skip the redundant questions. Re-asking would force the user to repeat themselves and breaks the context: fork contract.
| Parent agent | Already answered (skip) | You walk only | |---|---|---| | cs-fullstack-engineer | team-size + cadence + user-facing + budget | Q1 (primary device), Q3 (rendering), Q7 (WCAG + a11y owner) | | cs-content-creator (marketing copy) | brand voice + surface = marketing | Default to astro-or-static profile; walk only Q4 (bundle) + Q7 (WCAG) | | cs-product-manager (feature spec) | user persona + surface | Q1 (device), Q2 (LCP target), Q5 (SEO vs auth) |
If the parent's prompt names answers explicitly (e.g., "mobile-4G primary, LCP target 2000ms"), accept them as given and proceed. Always return a ≤ 200-word digest in a form the parent can quote verbatim.
Before any commit:
bashpython ../../engineering/karpathy-coder/skills/karpathy-coder/scripts/complexity_checker.py <changed-files> --json python ../../engineering/karpathy-coder/skills/karpathy-coder/scripts/diff_surgeon.py --json
a11y-audit on a customer-facing surface.performance-profiler./cs:frontend-review <prompt>Agent({subagent_type:"cs-frontend-engineer", prompt:"..."})engineering-team/senior-frontend (skips conversational grill).When invoked from another agent, ALWAYS return a ≤ 200-word digest with: matched profile, three CWV targets, bundle budget, named a11y owner, recommended next sub-skill.
../../engineering-team/skills/senior-frontend/SKILL.md../../engineering/karpathy-coder/skills/karpathy-coder/references/karpathy-principles.md../../engineering/grill-me/skills/grill-me/references/forcing_question_patterns.md| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 6,750 | 1,710 | -75% | 1 | 1 | 0% | 923 | 2,229 | +141% | 0 | 0 | — |
case-02 | fail→pass | 12,539 | 13,606 | +9% | 1 | 1 | 0% | 2,633 | 4,494 | +71% | 0 | 0 | — |
case-03 | pass→pass | 7,384 | 7,288 | -1% | 1 | 1 | 0% | 1,191 | 3,458 | +190% | 0 | 0 | — |
case-10 | fail→fail | 16,165 | 10,830 | -33% | 1 | 1 | 0% | 3,163 | 3,956 | +25% | 0 | 0 | — |
case-04 | pass→pass | 6,298 | 9,783 | +55% | 1 | 1 | 0% | 1,172 | 3,777 | +222% | 0 | 0 | — |
case-05 | pass→pass | 8,913 | 12,416 | +39% | 1 | 1 | 0% | 2,152 | 4,594 | +113% | 0 | 0 | — |
case-06 | pass→pass | 4,418 | 10,759 | +144% | 1 | 1 | 0% | 959 | 3,612 | +277% | 0 | 0 | — |
case-07 | fail→fail | 10,898 | 6,257 | -43% | 1 | 1 | 0% | 1,606 | 3,178 | +98% | 0 | 0 | — |
case-08 | fail→pass | 8,867 | 7,613 | -14% | 1 | 1 | 0% | 1,490 | 3,109 | +109% | 0 | 0 | — |
case-09 | fail→pass | 7,325 | 4,716 | -36% | 1 | 1 | 0% | 1,198 | 2,634 | +120% | 0 | 0 | — |
case-11 | fail→pass | 12,976 | 9,083 | -30% | 1 | 1 | 0% | 2,346 | 3,491 | +49% | 0 | 0 | — |
case-12 | pass→fail | 12,948 | 3,425 | -74% | 1 | 1 | 0% | 2,442 | 2,627 | +8% | 0 | 0 | — |
case-13 | pass→fail | 15,263 | 5,104 | -67% | 1 | 1 | 0% | 2,448 | 2,964 | +21% | 0 | 0 | — |
case-14 | fail→fail | 10,723 | 6,138 | -43% | 1 | 1 | 0% | 1,887 | 3,246 | +72% | 0 | 0 | — |
case-15 | fail→pass | 15,172 | 15,637 | +3% | 1 | 1 | 0% | 2,564 | 4,449 | +74% | 0 | 0 | — |
case-22 | fail→pass | 12,204 | 11,627 | -5% | 1 | 1 | 0% | 2,041 | 3,919 | +92% | 0 | 0 | — |
case-16 | fail→pass | 26,077 | 2,460 | -91% | 1 | 1 | 0% | 1,187 | 2,429 | +105% | 0 | 0 | — |
case-17 | pass→pass | 8,332 | 7,154 | -14% | 1 | 1 | 0% | 1,434 | 3,258 | +127% | 0 | 0 | — |
case-18 | fail→pass | 11,947 | 11,324 | -5% | 1 | 1 | 0% | 2,782 | 2,481 | -11% | 0 | 0 | — |
case-19 | fail→pass | 10,815 | 4,131 | -62% | 1 | 1 | 0% | 2,023 | 2,684 | +33% | 0 | 0 | — |
case-20 | fail→pass | 8,568 | 8,887 | +4% | 1 | 1 | 0% | 1,378 | 3,169 | +130% | 0 | 0 | — |
case-21 | fail→pass | 17,352 | 8,713 | -50% | 1 | 1 | 0% | 3,492 | 3,347 | -4% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +45 percentage points is the difference between those two pass rates over the 21 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.