Hourly design & UX iteration on PathForge. Read four short files, make one real change, commit.
Resources
15Install
npx skillscat add drewdey/promptforge Install via the SkillsCat registry.
You are running an hourly iteration on PathForge (Next.js community platform for sharing AI projects).
The point
Make ONE visible, structural improvement and commit it. "Structural" means the diff changes what the page IS — what renders first, what the dominant visual block is, how components compose, which affordance is prominent. NOT "2px nudge" level — and specifically not a pure-spacing diff. If the entire diff consists of swapping padding/margin/font-size Tailwind utilities (mb-4 → mb-5, py-1 → py-1.5, text-base → text-lg, gap-2 → gap-y-2.5) with no structural rearrangement, the iteration fails — pick a different task from BACKLOG's Polish queue. Spacing tweaks are fine as a side effect of a structural change; they are not a valid standalone iteration. The bar: a visitor (not a designer running devtools) would notice the difference.
Depth floor (what a complete iteration actually looks like)
The routine is generous on time, not tight on cadence — each iteration has a full hour of wall-clock before the next fires. A complete iteration is ~15–25 minutes of real work, not a 2-minute drive-by. Before committing, confirm your iteration hits all five:
Reference-grounded (Polish-queue iterations only; optional for Content-queue). For Polish-queue visual/structural changes,
WebFetchat least one external reference page that embodies the target aesthetic and cite the specific pattern you're borrowing (or deliberately diverging from) in your log entry. Starting points:https://linear.app/changelog— editorial timeline; output-as-herohttps://vercel.com/templates— gallery card treatment; large hero previewshttps://stripe.com/docsorhttps://read.cv— build-log / case-study prose aesthetichttps://dev.tofeatured posts — magazine-article prose treatment
This directly closes the "words→pixels translation gap." Grounding design choices in a reference you can point at beats guessing from convention. Content-queue iterations don't need external references — their grounding is real Claude generation, not external design aesthetic.
Design rationale in the log. One paragraph: the approach you chose, at least one alternative you considered, why you went that way. Forces thinking; coding-only is how iterations drift back to convention.
Comprehensive implementation, not slices. Ship desktop layout AND mobile responsive behavior AND empty state AND loading state (if applicable) AND interactive states (hover/focus/active) AND at least one edge case you actually thought about. Do NOT ship a desktop-only slice and leave mobile as "follow-on" — that's how halves accumulate and polish work creeps back.
Site-scope visual verify, not 2 pages (Polish-queue iterations). Chrome MCP every page that renders the changed component, not just
/browseand/prompt/new. If you touchedPromptCard, hit/browse, category filters,/prompt/[id]'s "More in this category" section. If you touchedCodeBlock/Prose/StepContent, every page rendering them. Read console on each; note any regression before committing. For Content-queue iterations: visual verify is not applicable (no UI change, only SQL rows that need a Drew paste to land). Replace with SQL structural review — confirm dollar-quoting balances, required columns are all present, UUIDs follow the conventions, no typos in INSERT field order. Note in the log that verification was "SQL structural review — awaiting Drew paste for live render."Rich iteration log entry. Include: what shipped (concrete diff summary), why this approach (1-para rationale from #2), references consulted (from #1), responsive/edge cases covered (from #3), verification coverage (from #4), and a
Follow-ups spotted:bullet list noting 1–2 specific polish observations for future iterations. The old 3-sentence cap is lifted for structural iterations — write as much as the work deserves.
An iteration that skips any of the five ships smaller than it should. Use the wall-clock headroom — you have it.
Loop
Orient (5 min cap) — Read
BACKLOG.md,ITERATION_LOG.mdtop entry,QUESTIONS.md,MEMORY.md. All four are short on purpose. Pick from BACKLOG's Content queue FIRST (real Claude-generated prompt chains forsupabase/seed-content-chains.sql— this is top priority, Drew approved the pattern on 2026-04-17 via project 0001). Only pick from the Polish queue when the Content queue hits 50 or is otherwise blocked. Structural items and Drew actions are off-limits to unattended iterations. If the top queue item is larger than one iteration, carve off one visible slice.Change it — Before writing code, do Depth floor #1 (reference fetch + cite) and #2 (design rationale draft). Then edit, implementing per Depth floor #3 (comprehensive — not slices). Follow existing patterns: Tailwind v4 (surface-* tokens, not raw gray-*), Next.js 16 App Router, data through
src/lib/data.ts, brand orange#E87A2Cand blue#3B8FE4, sharp corners, modern dev-tool aesthetic (Linear / Vercel / Raycast). No new dependencies. No schema changes.Verify — two gates, both required:
- Types:
npx tsc --noEmitmust pass. - Visual (Chrome MCP preferred): with
npm run devrunning (start it backgrounded if needed), follow Depth floor #4 — site-scope visual verification, not just two priority pages.mcp__Claude_in_Chrome__navigateto every page that renders the changed component or page.read_page/get_page_text/read_console_messageson each. Don't ship a design change you haven't seen; code can't catch a visual regression, eyes can. - Chrome unreachable fallback: if the Chrome MCP is genuinely not connected (extension offline, Drew's Chrome closed), run
npm run buildand confirm it completes cleanly, and writeChrome unreachable — build-only verifyin your iteration-log entry. This is degraded; the change still ships but the next human review is more important. Don't silently skip.
A genuinely non-visual change (types/lib refactor already covered by tsc) can skip the visual gate — say so in the iteration log. Don't use "non-visual" as an escape hatch.
- Types:
Commit + push + log —
git addthe touched source files +BACKLOG.md+ITERATION_LOG.md, commit with a short message, thengit pushtoorigin main. Add a rich entry at the top ofITERATION_LOG.mdper Depth floor #5 (not just 3 sentences — include rationale, references, responsive coverage, verification scope, and follow-ups spotted). Move the completed item toBACKLOG.md's Done table with a one-line summary (the Done table stays tight; depth lives in the log).
Hard rules
- Finish your own iteration — commit AND push. Never ask Drew to
rm,supabase sql,npm install, "paste this config", or any other command. If completing the iteration would require Drew to run something, you haven't finished — find another way (git plumbing, bypass the index, whatever). The earlier version of this rule said Drew pushes manually; that was a Cowork-sandbox constraint. Claude Code has git creds and pushes directly. - Commit via plumbing when the index is locked.
git hash-object -w→git mktree→git commit-tree→echo <sha> > .git/refs/heads/mainworks even when.git/index.lockand.git/HEAD.lockare FUSE-stuck from prior runs. Don't abandon a commit becausegit addfailed. - No reviewer / audit / research sub-agents. They produce inflated certainty, not quality. Read the files yourself.
- Push to
origin mainat the end of every iteration. If the push fails, surface the real error (auth, protected branch, upstream diverged) — don't silently leave the commit unpushed. ITERATION_LOG.mdstructural-iteration entries follow Depth floor #5 (rationale + references + responsive coverage + verification scope + follow-ups spotted). The old 3-sentence cap is OFF for structural work. KeepBACKLOG.mdDone entries to one line (the table stays tight; depth lives in the log). KeepQUESTIONS.mdto actual decisions you can't make yourself — no "here are 4 options, which do you prefer."
If the build is broken
Fix the actual TypeScript / import error in source.