develop-frontend
Skill5 starsChanged 31 days agoMITView on GitHub
Builds a project's frontend with award-level UI/UX. Reads what the project is (PROJECT.md, or any .md/.txt that describes it) and how to talk to the backend (FRONTEND.md, a link, or any API doc it finds); if there is no backend contract it asks Yes / No / Not implemented and, for not implemented, builds against a mock data layer behind the same API client. Researches similar sites (global and local, e.g. Wolt + Yemeksepeti for a Turkish food app) and their UX patterns, saves it all in a gitignored DESIGN/ folder so it never researches twice, asks which style each part should have (Fancy / Normal / Strict / Playful per segment: landing, panels, blog…), builds the UI from shadcn/ui components and React Bits animations (Fancy segments get lots of motion: animated headlines, WebGL backgrounds, scroll reveals, interactive cards; Normal stays light; Strict stays still), shows a page plan and task table for approval, builds, then runs a review loop where a "user" subagent that has never seen the site completes tasks through Playwright screenshots and reports what looks broken, confusing, wordy or ugly, and a "front" subagent fixes it, until the user has no complaints. Use whenever the user types /develop-frontend (with or without a FRONTEND.md path or URL), or asks to build, design, redesign or polish a website/web app frontend, UI or UX, make it look premium, animated or award-winning, use shadcn/ui or React Bits, or connect a UI to an existing backend API.
- Installs packages
1 other project uses a version of this.
Adopted by
Most recently taken up by
- matiesmengo/spec-driven-design-blackjacktheir own version, first seen Apr 20, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- matiesmengo/spec-driven-design-blackjack★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository4 other files it gives its agents.
- qa-backendSkill
- make-no-mistakesSkill
- optimize-seoSkill
- analyze-stockSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
15 rules. About 0 are common, 3 are distinctive, and 12 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
12
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 29
Options, not essays: Ask every question with AskUserQuestion, 2–4 options, the recommended option first and labelled "(Recommended)".
- Very specific: line 32
Research once: If DESIGN/ already holds research for this project, reuse it.
- Very specific: line 36
Never fabricate: No fake reviews, stats, prices, company facts or testimonials.
- Distinctive: line 39
Talk in the user's language: Write code and DESIGN files in English.
- Very specific: line 51
Resume: If DESIGN/.work/state.json exists, continue from its phase and never re-ask what DESIGN/ already records.
- Very specific: line 62
Run python "SKILL_DIR/scripts/find_docs.py" --root .
- Distinctive: line 72
Yes: wait until the user gives a file, a link or a text.
- Very specific: line 90
Write these files to DESIGN/ (formats are in the reference):
- Distinctive: line 102
Ask one question per segment, 4 per AskUserQuestion call.
- Very specific: line 111
Write DESIGN/plan.md from SKILL_DIR/templates/plan.md:
- Very specific: line 138
Every async view has loading, empty, error and success states.
- Very specific: line 139
Before the review loop starts, the dev server must run with no errors, and ui_audit.py --fail-on blocker must pass with no stuck-invisible …
- Very specific: line 144
Start the dev server in the background and note its URL in state.json.
- Very specific: line 145
Write DESIGN/.work/reviews/round-N/tasks.md: a short persona drawn from the project's real users, plus 3–6 goal-only tasks with no UI …
- Very specific: line 158
You arbitrate: Read both reports. When front rejects a complaint, you decide whether the rejection is valid (for example, the user chose …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
/develop-frontend
Input: $ARGUMENTS can hold, in any order, a path or URL to the backend contract (FRONTEND.md or similar), a
path to the project description, and/or a plain-text description of the project. All of them are optional.
SKILL_DIR = the "Base directory for this skill" shown when this skill loaded. Scripts are run as
python "SKILL_DIR/scripts/<name>.py". find_docs.py and ensure_gitignore.py use the standard library only.
shoot.py, browse.py and ui_audit.py need Playwright. The baseline design knowledge is in
SKILL_DIR/design/: fancy.md, normal.md, strict.md, playful.md, ux-principles.md and
component-kits.md, which covers shadcn/ui + React Bits: install, theming, motion rules and recipes for each style. Read each
reference file when you reach the phase that points to it, not all up front.
You are the main agent. You discover the context, research, interview, plan, build the first version, run the review loop between two subagents and do the final check.
Hard rules
- DESIGN/ is always gitignored. Phase 0 runs
ensure_gitignore.pybefore anything is written toDESIGN/, in every project, every time. - Never touch backend code or git. You change frontend files only. Read-only git commands
(
git status,git ls-files) are fine. If a page needs data the contract doesn't offer, add it toFRONTEND.mdunder "Requested by the frontend" and use mock data for it. - Options, not essays. Ask every question with AskUserQuestion, 2–4 options, the recommended option first
and labelled "(Recommended)". Never ask about architecture (framework, libraries, folders); you decide those
with
references/build.md. Ask about the product and the look. - Research once. If
DESIGN/already holds research for this project, reuse it. Re-research only when the user asks for it or the project's domain has changed. - Be original. Take patterns from competitors, never their branding, copy, logos or exact palettes. Fonts and colors are chosen for this project's topic and must differ from the main competitors.
- Never fabricate. No fake reviews, stats, prices, company facts or testimonials. Use a visible
{{PLACEHOLDER: name}}instead. Mock data looks realistic, lives only in the mock layer and is labelled as mock. - Talk in the user's language. Write code and DESIGN files in English. UI copy uses the project's language(s).
- On Windows Git Bash, a route argument that starts with
/gets rewritten toC:/Program Files/Git/.... The scripts undo this, but--routes-fileis the safest way to pass routes.
Phase 0: Preflight
python "SKILL_DIR/scripts/ensure_gitignore.py" --root .adds/DESIGN/to.gitignore. If it reportstracked_files, tell the user to rungit rm -r --cached DESIGNthemselves.python -c "import playwright". If that fails, show the userpython -m pip install playwrightandpython -m playwright install chromiumand ask to run them (AskUserQuestion: "Install now (Recommended)" / "I'll do it myself"). The review loop can't run without Playwright, but Phases 1–5 can.- Resume. If
DESIGN/.work/state.jsonexists, continue from itsphaseand never re-ask whatDESIGN/already records. Otherwise create it with{"phase": "context"}. Updatephaseat the end of every phase.
Phase 1: Context (read references/context-discovery.md)
You need two things before anything else: what the project is and where its data comes from.
- Project folder. The current directory is the project. If it is empty or not a project, and
$ARGUMENTSdoesn't describe one, ask the user for the project folder path or a text description, and wait. - Run
python "SKILL_DIR/scripts/find_docs.py" --root .once. It ranks every .md/.txt file as a project description and as a backend contract. - PROJECT.md: take it from the arguments, then from
PROJECT.md, then from the topprojectcandidates. Read them and judge whether they really describe the product: what it does, for whom, its main features. A setup-only README doesn't count. Nothing fits → ask for a description and wait. Write the result, or a pointer to it, toDESIGN/project.md. - FRONTEND.md: take it from the arguments (a path, or a URL fetched with WebFetch), then from
FRONTEND.md, then from the topbackendcandidates. Also look foropenapi.*/swagger.*files and the backend's route files, reading them only. If you find nothing, ask: "Does this project have a backend the frontend should talk to?"- Yes: wait until the user gives a file, a link or a text. Then use it.
- No: the project is standalone, so there is no data layer. Content is static or kept locally.
- Not implemented: the backend will exist but doesn't yet. Write
FRONTEND.mdfromSKILL_DIR/templates/FRONTEND.md, listing every endpoint the UI needs. Build the UI against a mock layer behind the same client.
- Record in
state.json:project_doc,backend_mode(contract/none/mock),contract_doc, the detected frontend stack (if any) and the language(s) and market.
From here on, all data "comes from the backend". Pages call one API client and never know whether it is
real or mock. Switching to the real backend later is a one-line change of API_MODE.
Phase 2: Research (read references/project-research.md), skipped if already in DESIGN/
- Send 4–6 WebSearch calls in one message, in English and in the project's local language/market, to
find similar products. Fetch the 3–6 most relevant sites; screenshots of them help
(
shoot.py --url https://competitor.com --routes / --widths 390,1280 --viewport-only). Example: a Turkish QR menu ordering app → Wolt, Yemeksepeti, Getir Yemek, Trendyol Yemek, Uber Eats, DoorDash, plus QR menu products (e.g. FineDine, Menulux). - Write these files to
DESIGN/(formats are in the reference):similar-sites.md: competitors and how they do layout, navigation, density, type and color.ux-patterns.md: each user flow, the pattern competitors use for it, and where we apply it.normal-polished.md:SKILL_DIR/design/normal.mdrefined for this domain and audience.brand.md: our own fonts and palette (with reasons, contrast ratios and how they differ from competitors), plus a type scale, radius, shadow and motion tokens.README.md: an index of the DESIGN files and of which baseline files fromSKILL_DIR/design/apply.
Phase 3: Style interview (read references/interview.md)
- Split the planned UI into segments: landing/marketing, auth, panels/dashboard, lists/catalog, detail, forms/checkout, blog/content, docs/help, settings/account, admin. Keep only the ones this project has.
- Ask one question per segment, 4 per AskUserQuestion call. The options are Fancy / Normal / Strict / Playful, with the recommendation for this segment first. Each option's description says in one line what it means for this segment.
- Optionally ask one more question about the overall mood, with options from
brand.md. The user can always type their own answer. - Save the answers to
DESIGN/styles.md: segment → style → the design file to follow, plus any notes.
Phase 4: Plan and approval (read references/plan-format.md)
Write DESIGN/plan.md from SKILL_DIR/templates/plan.md:
- Page plan: route, purpose, segment → style, data (endpoint or mock), key components, and the four states.
- Task table: everything you will do, in order. Each row has an ID, the task, the files it touches and a done check.
- Stack (if you chose it) with a one-line reason, and the shared tokens and components.
Show both tables to the user, then ask: "Start building (Recommended)" / "Change something". Loop until they
approve. Write DESIGN/.work/routes.txt (one route per line, with a sample id for dynamic routes).
Phase 5: Build (read references/build.md)
Build the whole plan yourself, on shadcn/ui + React Bits (SKILL_DIR/design/component-kits.md). A new
frontend is React: Next.js, Astro + React or Vite + React.
shadcn init, then put the tokens frombrand.mdinto shadcn's CSS variables, including dark mode.- The shadcn components and blocks the plan needs, plus the React Bits pieces
(
npx shadcn@latest add @react-bits/<Name>-TS-TW), recolored from the tokens and wrapped for reduced motion. - The API client (
realormock). - The pages, segment by segment. Each segment follows its style file, its recipe in
component-kits.md,ux-principles.mdandDESIGN/ux-patterns.md.- Fancy pages get lots of motion: an animated headline, a living background, a CTA effect, every section animating in, and 8 or more React Bits pieces in all.
- Playful pages get micro-interactions.
- Normal pages get light entrances.
- Strict pages get none.
Every async view has loading, empty, error and success states. Mark tasks done in plan.md as you go.
Before the review loop starts, the dev server must run with no errors, and ui_audit.py --fail-on blocker
must pass with no stuck-invisible content.
Phase 6: Review loop: user ⇄ front (read references/review-loop.md)
- Start the dev server in the background and note its URL in
state.json. - Write
DESIGN/.work/reviews/round-N/tasks.md: a short persona drawn from the project's real users, plus 3–6 goal-only tasks with no UI hints, e.g. "You're at table 5. Order two lahmacun and one ayran, and pay." Cover every main flow over the rounds. Personas and devices rotate (phone in one round, desktop in the next; customer, then admin). - User subagent. Spawn a fresh Agent (
general-purpose, foreground) whose prompt isreferences/persona-user.mdwith the URL, the round folder,SKILL_DIRand tasks.md filled in. It sees the site only throughshoot.py,browse.pyandui_audit.pyscreenshots, never source code or DESIGN files. It writesround-N/user-report.md. - Front subagent. In round 1, spawn an Agent (
general-purpose, foreground) withreferences/persona-front.mdfilled in, and save the agent ID it returns asfront_agent_idinstate.json. In later rounds, continue that agent with SendMessage (to: <front_agent_id>), so it keeps its code context. If that fails, spawn a fresh one with the previousfront-report.mdpaths. The front agent fixes every complaint, finishes any open plan tasks, runs build, lint and typecheck, and writesround-N/front-report.md. - You arbitrate. Read both reports. When front rejects a complaint, you decide whether the rejection is
valid (for example, the user chose that style) or invalid (send it back). Record each decision in
DESIGN/.work/reviews/decisions.md. - Repeat with round N+1 and a new user subagent, which knows nothing about the site.
Stop when a round's user report has no complaints left (after removing the ones accepted in
decisions.md) and every task inplan.mdis done. After round 6, and every 3 rounds after that, ask the user: "Keep iterating (Recommended)" / "Stop here and finish".
Phase 7: Final check (read references/final-check.md)
- The project's build, lint, typecheck and tests pass.
ui_audit.py --routes-file DESIGN/.work/routes.txt --fail-on majorexits 0 at every width: in light mode, in dark mode (if supported) and with--reduced-motion. No content may be stuck invisible, and no WebGL background may remain on phone widths.- There are no console errors, every route returns 200 and every plan task is done.
shoot.pyproduces a final screenshot set inDESIGN/.work/final/.
Set phase: "done". Report to the user in their language:
- what was built, the stack and the style of each segment, with the main shadcn/React Bits pieces on each Fancy page (React Bits is MIT + Commons Clause: free to use in the product, not to resell)
- how many review rounds ran and the biggest fixes
- the final audit counts
- the open
{{PLACEHOLDER}}s backend_mode, and in mock mode whichFRONTEND.mdendpoints the backend must implement and how to switch to the real backend- how to run the app
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

