[object Object]

← back to Claude Webdev Accelerator

Claude web-dev accelerator v0: playbook + scaffold script + templates

b6a0cb06fa90056e17c6a4a2fe5b1291234259a9 · 2026-07-13 14:56:00 -0700 · Steve

Files touched

Diff

commit b6a0cb06fa90056e17c6a4a2fe5b1291234259a9
Author: Steve <steve@designerwallcoverings.com>
Date:   Mon Jul 13 14:56:00 2026 -0700

    Claude web-dev accelerator v0: playbook + scaffold script + templates
---
 ACCELERATOR.md         | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++
 README.md              | 24 +++++++++++++++
 clients/.gitkeep       |  1 +
 scripts/new-project.sh | 51 ++++++++++++++++++++++++++++++++
 templates/README.md    |  1 +
 5 files changed, 157 insertions(+)

diff --git a/ACCELERATOR.md b/ACCELERATOR.md
new file mode 100644
index 0000000..e77d5d0
--- /dev/null
+++ b/ACCELERATOR.md
@@ -0,0 +1,80 @@
+# Claude Web-Dev Accelerator — Playbook
+
+The single playbook a Claude Code session follows to take a client idea from
+"link in Slack" to a **prototyped, verified, launch-ready web project** — by
+composing the skills and agents already in this stack instead of hand-rolling
+each build. Launched from the Idea Board's **🚀 Launch Web-Dev Accelerator**
+button (or any "Build new project ▶" action), which opens a fresh session in
+this directory pointed at this file.
+
+## North star
+
+Rapidly prototype and launch **high-value client projects**. Optimize for:
+time-to-first-clickable-prototype, reuse over rewrite, and a hard verify gate
+before anything is shown to a client or made public.
+
+## The pipeline (each phase names the skill/agent that does the work)
+
+### 0 · Intake — turn the idea into a one-paragraph brief
+- Capture: who's the client, what outcome, what's the "high value" (revenue,
+  time saved, deal won), any hard constraints (brand, domain, deadline).
+- If the seed is a URL, run **/site-audit** (competitor/reference teardown) and
+  **/competitors** to find the differentiation vector before building anything.
+- Output: `BRIEF.md` in the new project dir. Stop and confirm the brief with
+  Steve if the outcome or scope is ambiguous — cheap to ask, expensive to guess.
+
+### 1 · Design direction — pick a look, don't invent one blind
+- **/mockups `<ref-url>` `<n>`** — N distinct front-page directions, not reskins.
+- **four-horsemen** / **/stampede** — elevated graphic variants (Figma · 21st ·
+  Paper · Canva) when the client needs real creative range.
+- **/logo-agent** — tournament-pick a brand mark when one's needed.
+- Reference libraries: **dw-fashion-templates** (luxury visual systems),
+  **interior-designer** + **graphic-designer** (advisory critique).
+
+### 2 · Scaffold — stand the project up
+- `scripts/new-project.sh <slug>` — creates `~/Projects/<slug>`, gitifies it
+  (per the standing rule), drops `.gitignore`, a server, and a product/content
+  grid honoring the house rules (**sort + density slider**, **admin cards show
+  created date+time**).
+- Storefront/catalog shape → **dw-site-build** conventions + **sort-skill**.
+- Distinctive front page → **rotating-hero-page** + **hero-readability-auditor**
+  (binary contrast gate) then **frontend-design** for the build itself.
+
+### 3 · Build — implement the brief
+- Route pure engineering through the cabinet: **vp-engineering** (and its
+  frontend-developer / fullstack-developer / backend-architect directors).
+- Keep commits atomic; commit after every working step (author
+  `steve@designerwallcoverings.com`). Never push to a remote by default.
+
+### 4 · Verify — prove it works before anyone sees it
+- **/5x** — six-way verification that self-heals (HTTP + headless render +
+  Playwright E2E + Chrome/Safari/Firefox + clickthrough, fixing on each sweep).
+- **/cta** — click through every component across real browsers.
+- **/contrarian** — adversarial red-team gate; do not call it "done" until it
+  signs off. **/validation-loop** — re-run the review after applying fixes.
+
+### 5 · Preview — put it in front of Steve
+- **/viewer** (or **rotating-hero** demo) on a free port behind basic auth
+  `admin / DW2024!`. Optionally a **cloudflared tunnel** to a
+  `<slug>.agentabrams.com` subdomain (same pattern as `ideas.` / `govarbitrage.`)
+  — gate internal-content previews with basic auth.
+
+### 6 · Launch — GATED, never autonomous
+The accelerator scaffolds everything **one switch away from live** and stops.
+These are Steve-only and draft to `~/.claude/yolo-queue/pending-approval/`:
+- **/deploy** to Kamatera, DNS/domain changes, publishing, send-to-list, any
+  spend, remote pushes. Surface the exact command; do not run it.
+
+## Hard rails (inherited from the global standing rules)
+- Gitify before >3 files. Commit each success. `.gitignore` excludes
+  `node_modules/`, `.env*`, `tmp/`, `*.log`, `.DS_Store`, `dist/`, `build/`.
+- Show the **$ cost** of every paid-API step inline (`$0 (local)` for local work).
+- Prefer **local models** (Ollama/ComfyUI) for generation; Replicate is opt-in.
+- Every product grid gets sort + density; every admin card gets created date+time.
+- Deploy / DNS / publish / spend are **ask-up-front**, not `/dtd`-and-go.
+
+## Files
+- `ACCELERATOR.md` — this playbook (the session entry point).
+- `scripts/new-project.sh` — scaffold a new gitified client project.
+- `templates/` — starter server + grid honoring the house rules.
+- `clients/` — per-engagement briefs & notes (gitignored if sensitive).
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..ccf45f9
--- /dev/null
+++ b/README.md
@@ -0,0 +1,24 @@
+# claude-webdev-accelerator
+
+A Claude-Code-driven pipeline for rapidly prototyping and launching high-value
+client web projects by **composing the skills and agents already in this stack**
+rather than rebuilding each time.
+
+- **[ACCELERATOR.md](./ACCELERATOR.md)** — the playbook every launched session
+  follows (intake → design → scaffold → build → verify → preview → gated launch).
+- **scripts/new-project.sh `<slug>`** — scaffold a new gitified client project
+  honoring the house rules (sort+density grids, admin date+time, `.gitignore`).
+- **templates/** — starter server + grid.
+- **clients/** — per-engagement briefs.
+
+## How it's launched
+The Idea Board (`ideas.agentabrams.com`, local `:9820`) has a **🚀 Launch
+Web-Dev Accelerator** button and per-idea **Build new project ▶** actions. Each
+opens a fresh Claude Code session in this directory pointed at `ACCELERATOR.md`,
+seeded with the idea. The launch endpoint (`POST /api/build`) reconstructs the
+prompt server-side and spawns an iTerm2 tab — nothing client-supplied is ever
+executed.
+
+## Rails
+Deploy, DNS, publish, send-to-list, and spend are **Steve-gated** — the
+accelerator builds everything one switch from live and stops.
diff --git a/clients/.gitkeep b/clients/.gitkeep
new file mode 100644
index 0000000..2fec918
--- /dev/null
+++ b/clients/.gitkeep
@@ -0,0 +1 @@
+Per-engagement briefs live here.
diff --git a/scripts/new-project.sh b/scripts/new-project.sh
new file mode 100755
index 0000000..b1cea65
--- /dev/null
+++ b/scripts/new-project.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+# Scaffold a new gitified client project that honors the house rules.
+# Usage: scripts/new-project.sh <slug> [port]
+set -euo pipefail
+SLUG="${1:?usage: new-project.sh <slug> [port]}"
+PORT="${2:-0}"   # 0 = let the OS pick a free port at runtime
+ROOT="$HOME/Projects/$SLUG"
+if [ -e "$ROOT/.git" ]; then echo "refusing: $ROOT already a git repo (sacred)"; exit 2; fi
+mkdir -p "$ROOT/public"
+TPL="$(cd "$(dirname "$0")/.." && pwd)/templates"
+
+# .gitignore per the standing rule
+cat > "$ROOT/.gitignore" <<'EOF'
+node_modules/
+.env*
+tmp/
+*.log
+.DS_Store
+dist/
+build/
+.next/
+EOF
+
+# seed the brief
+cat > "$ROOT/BRIEF.md" <<EOF
+# $SLUG — brief
+- Client:
+- Outcome / "high value":
+- Constraints (brand, domain, deadline):
+- Reference / competitor URLs:
+EOF
+
+# copy starter server + grid if present, else drop minimal ones
+if [ -d "$TPL" ]; then cp -R "$TPL/." "$ROOT/" 2>/dev/null || true; fi
+[ -f "$ROOT/server.js" ] || cat > "$ROOT/server.js" <<'EOF'
+// minimal static server; PORT=0 picks a free port. Replace with the real build.
+const http=require('http'),fs=require('fs'),path=require('path');
+const PORT=parseInt(process.env.PORT||'0',10);
+http.createServer((req,res)=>{const f=req.url==='/'?'index.html':req.url.split('?')[0].replace(/^\//,'');
+  const fp=path.join(__dirname,'public',path.basename(f));
+  if(fs.existsSync(fp)){res.writeHead(200,{'Content-Type':f.endsWith('.html')?'text/html':'text/plain'});return res.end(fs.readFileSync(fp));}
+  res.writeHead(404);res.end('not found');
+}).listen(PORT,function(){console.log('['+require('path').basename(__dirname)+'] http://localhost:'+this.address().port);});
+EOF
+[ -f "$ROOT/public/index.html" ] || printf '<!doctype html><meta charset=utf-8><title>%s</title><h1>%s — scaffolded</h1><p>Wire the grid (sort + density) and content here.</p>\n' "$SLUG" "$SLUG" > "$ROOT/public/index.html"
+
+cd "$ROOT"
+git init -q
+git add -A
+git -c user.email=steve@designerwallcoverings.com -c user.name=Steve commit -q -m "initial scaffold ($SLUG) via web-dev accelerator"
+echo "scaffolded $ROOT (port $PORT) — next: fill BRIEF.md, then build per ACCELERATOR.md"
diff --git a/templates/README.md b/templates/README.md
new file mode 100644
index 0000000..c321bef
--- /dev/null
+++ b/templates/README.md
@@ -0,0 +1 @@
+Starter templates copied into new projects by scripts/new-project.sh.

(oldest)  ·  back to Claude Webdev Accelerator  ·  Accelerator: real sort+density storefront starter (templates e5c33fa →