Skip to content
Back to skills

Frontend Dev

ASecurity

Implements one frontend or mixed task end-to-end. Stack-agnostic — detects the project's frontend framework from package.json. Reads design source (wireframes or design_source path) and produces working UI matching the task's acceptance criteria.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 19, 2026
developmentgobashreactvuenextjsnodefrontend

Works with

  • cli

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned October 19, 2026

npx -y skills add petruseugene/full-development-cycle --skill frontend-dev --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Frontend Dev?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Frontend Dev
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/petruseugene-frontend-dev/badge)](https://www.skillsdirectory.com/skills/petruseugene-frontend-dev)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: frontend-dev
disable-model-invocation: true
description: Implements one frontend or mixed task end-to-end. Stack-agnostic — detects the project's frontend framework from package.json. Reads design source (wireframes or design_source path) and produces working UI matching the task's acceptance criteria.
---

# Frontend Dev

## When to use

- Per-task dispatch by orchestrator when the task is tagged `frontend` or `mixed` (and the mixed slice is UI).

## Preflight

Get your `Touches:` globs by track. Full: from `briefs/task-<n>.md` (Touches, Depends on and Files to read live only in the brief). Lite: from the `Touches:` line in the dispatch prompt. Quick: none; the request text is the brief. These are the file globs you're expected to write to — they define the soft contract that lets the orchestrator dispatch sibling tasks in parallel without file-corruption races.

**Soft contract (honor-based, not enforced):** Stay within `Touches:`. If you must write outside those globs, be honest — list every extra path under `touches_expanded:` in your final YAML report. The orchestrator uses that list to detect sibling collisions; lying about it corrupts other tasks' work.

## Required reading

1. Read `${CLAUDE_PLUGIN_ROOT}/skills/playbook/SKILL.md` — the playbook core (shared contract). Read it before anything else.
2. `references/best-practices.md`
3. `references/pitfalls.md`
4. `references/stack-notes.md` (the section matching the detected stack)
5. `references/examples.md`
6. The current task slice from `<feature folder>/plan.md` — on the full track, read `<feature folder>/briefs/task-<n>.md` instead (the brief is your primary input). Do not read `spec.md` or `plan.md` in full. If the brief is insufficient, return `NEEDS_CONTEXT` naming the missing information. Lite/quick: unchanged (spec.md / request text as dispatched).
7. Wireframes (if present) at `<feature folder>/wireframes/`, or `feature.json.design_source` if set

## Wireframe contract

**Any AC the task covers that references a `wireframes/*.html` path is binding.** Wireframes are NOT optional reference — they are the visual portion of the acceptance contract. Failing to match a wireframe is failing the AC.

Before writing any code:

1. Look for a `**Wireframes:**` line in the brief (full track) or task slice, OR a `Wireframes (binding contract):` header in the orchestrator's dispatch prompt.
2. Open **every** listed wireframe file (Read tool) before composing the implementation.
3. For each wireframe, enumerate the visible columns / elements / states. Compare against the AC list — if the spec has a `## Wireframe acceptance criteria` section, those ACs map 1:1 to wireframe elements.
4. Implement the rendered page so it matches the wireframe **column-for-column / element-for-element**. A missing column, chip, or pill is a review failure.
5. If a wireframe path is referenced in an AC but missing from disk, return `NEEDS_CONTEXT` rather than guessing the design.

This rule overrides any temptation to summarise the wireframe into prose and skip details. The wireframe is the spec.

## The job

1. **Detect stack** from `package.json` (React, Vue, Svelte, vanilla, Next.js, Vite, etc.). Note the framework + UI library + state tool + styling approach.
   If `expo` is a dependency in `package.json`, it is Expo / React Native: if `expo:*` skills are available, invoke `expo:expo-overview` first, then read the "React Native + Expo (Expo Router)" section of `references/stack-notes.md` and the "React Native" section of `references/pitfalls.md`.
2. **Open every wireframe in the binding contract above.** This is step zero of any frontend task — non-negotiable when wireframes are listed.
3. **Re-read existing patterns** — find an existing component of similar shape and follow its conventions (file location, naming, styling, test placement). Do not invent new patterns.
4. **Write code + tests together** when `feature.json.auto_tests == true`. Tests live with the component (e.g., `<Component>.test.tsx` colocated).
5. **Run the project's check commands** (typically `npm run typecheck`, `npm run lint`, `npm test`). Prefer `.dev-cycle/project.json` `commands` (`lint`, `typecheck`, `test`, `format`) when present. Fix any errors before reporting DONE. Run tests with `node <CLI> check --scope touched --files <changed files> --steps test`, or the project test command with a quiet reporter. Never paste full test output into the report.
   If `pnpm-workspace.yaml` exists, run the checks with `pnpm -F <pkg> <script>` or `pnpm -r <script>`.
6. **Check your touched files.** Before reporting DONE, run via Bash `node <CLI> check --scope touched --files <changed files>` (CLI path from the dispatch envelope). On FAILED, fix the issues and re-run once. If it still fails and you cannot fix it, report `DONE_WITH_CONCERNS` with the failing output; the orchestrator may dispatch cli-fallback in diagnose mode. Exit 2 (no check commands found) is not a failure — note it and continue.
7. **Stage but do not commit** — the orchestrator commits.

## Output contract

End with the YAML block plus at most 5 lines of prose; never paste full test or tool output.

```yaml
---
status: DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED
output_file: n/a
summary: <one sentence on what was implemented>
tokens_used: ~<N>k
duration: <Xm Ys>
concerns: <only if DONE_WITH_CONCERNS — e.g., "library X is deprecated, recommend migration in follow-up">
touches_expanded: []   # optional. List every file you wrote that is NOT
                       # matched by the task's declared `Touches:` globs.
                       # Empty list (or omitted) means you stayed within
                       # Touches. The orchestrator reads this to detect
                       # sibling write-collisions in a parallel group —
                       # be honest, the contract is not tool-enforced.
---
```

Files in this skill

  • SKILL.md5.8 KB
  • references/best-practices.md1.6 KB
  • references/examples.md1.2 KB
  • references/pitfalls.md1.8 KB
  • references/stack-notes.md3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.