How we built this site with Claude Code.
Why we built it ourselves.
Outsourcing this rebuild would have contradicted the pitch. Winston Digital Marketing sells AI-native marketing. The practice of running agency work with agent stacks instead of human-hour shops. A three-month timeline from a traditional web agency would have been the opposite of the proof we need.
The honest answer is that the site is the demo. Every link, every page, every FAQ schema block is evidence that a small team can ship production marketing assets in a working day when the stack is right. The methodology we sell is the methodology that produced the page you are reading.
The goal was not speed for its own sake. It was to compress the loop between strategy decisions and shipped HTML so tightly that the team making strategic choices could also see them live inside the same afternoon. That is the operator advantage we want clients to feel.
The stack.
The answer to "what tools did you use" is short and specific. No framework soup.
Model. Claude Opus 4 inside Claude Code (CLI harness). Subagents dispatched with the Task tool.
Plugin. superpowers. Specifically the brainstorming, writing-plans, subagent-driven-development, and verification-before-completion skills.
Runtime. Vanilla HTML5, CSS custom properties, one small JS partial loader. No build step. No bundler.
Fonts. Inter Variable and JetBrains Mono Variable, self-hosted as woff2.
Hosting. Cloudflare Pages with Cloudflare Workers planned for AI-bot markdown middleware.
Local dev. python3 -m http.server on port 8087.
The choice to skip a framework was deliberate. Every line on the site is either in a static HTML file or in one of four CSS files. Subagents can read, edit, and verify the whole surface area without getting lost in a dependency tree. A human can too.
Phase 0-1: Scaffolding and the design system.
Phase 0 was a single commit at 00:05 local time: scaffold the repo with a spec doc, an implementation plan, and the empty directory tree. No code yet. Just the shape of the project and the contract for what each phase would produce.
Phase 1 began the next morning at 11:30 and closed at 11:32. Two minutes of wall clock. Five commits: design tokens, base styles, components, a partial loader, the nav partial, the footer partial, a motion script, and self-hosted fonts. All dispatched as one subagent task.
Phase 0 (scaffold): single commit, overnight.
Phase 1 (design system + shell): 11:30:07 → 11:32:34 = 2 minutes, 7 files committed.
Representative dispatch for Phase 1:
Task tool (general-purpose, opus):
description: "Phase 1: design system + shell"
prompt: |
You are implementing Phase 1 of the Winston Digital Marketing
site rebuild: design tokens, base CSS, shared components,
nav and footer partials, the partial loader JS, and the
self-hosted Inter + JetBrains Mono fonts.
Read /docs/spec.md and /docs/plan.md first.
Commit after each logical unit using conventional-commit
prefixes (feat(css), feat(nav), feat(js), feat(fonts)).
Do not touch any page-level HTML yet.
The subagent returned with a clean commit series and a note about the font licensing check it had run. No back-and-forth.
Phase 2: The homepage and the "demo is the proof" frame.
The homepage ships the strategic frame for the whole site. The first commit landed at 11:37:49. Five minutes after the design system closed.
The brief was tight: lead with a direct claim, show the service grid, land a manifesto, and route traffic to the three highest-intent pages (GEO, Agentic Web Transformation, Contact). No hero carousel. No testimonials slab. No "trusted by" logo wall.
Phase 2 (homepage): 11:37:49, single commit.
The subagent's output followed the house voice rules. Short sentences, no banned clichés, every H2 opening with a direct-answer sentence. The FAQ schema on the homepage was generated without being asked for; it was in the spec.
Phase 3: Twelve service pages in one dispatch.
Phase 3 is the phase that convinces skeptics. Twelve service pages. GEO, SEO, Paid, Content, Cannabis, the AI Marketing hub, Custom GPTs and Claude Skills, Tool Integration, Content Workflows, AI Strategy Assessment, Agentic Web Transformation, plus the What We Do hub. All shipped between 11:46:12 and 11:59:47. Thirteen minutes of wall clock.
These were dispatched as parallel subagents under the subagent-driven-development skill. Each subagent owned one page, read the canonical GEO page as a template, and committed independently.
Phase 3 (service pages): 11:46:12 → 11:59:47 = 13 minutes, 12 pages.
Representative dispatch for a single service page:
Task tool (general-purpose, opus):
description: "Phase 3: AI Strategy Assessment service page"
prompt: |
You are implementing one service page as part of Phase 3 of
the Winston Digital Marketing site rebuild.
Canonical template: /services/generative-engine-optimization/index.html
. Copy the head structure, JSON-LD pattern, nav/footer
partials, and shared voice rules.
Write the AI Strategy Assessment page. 48-hour turnaround
framing. Named stack. Specific CTA to /contact/. No banned
banned clichés per the voice rules (see docs/voice.md).
Commit with: feat(services): add AI strategy assessment page
Phase 4-5: Core content and launch playbooks.
Phase 4 shipped the About page, Our Work index, Playbooks index, Contact page with audit form, the 404, and the two legal pages. All committed between 12:09:26 and 12:09:28. A two-second window because the parallel subagents finished close together.
Phase 5 is the post you are reading now, along with four sibling playbooks and a parallel batch of Our Work receipts. The time stamps for these will slot in immediately after the phase 4 commits.
Phase 1 first commit: 11:30:07.
Phase 4 last commit: 12:09:28.
Elapsed code execution: 39 minutes, 21 seconds across nine phases of committing.
Phase 6-8: SEO layer, bot middleware, deployment.
Still to ship at the time of writing. Phase 6 adds the sitemap.xml, robots.txt, and RSS feed. Phase 7 adds the Cloudflare Worker that serves markdown versions of each page to AI user agents (the llms.txt pattern, reframed). Phase 8 is the Cloudflare Pages deployment and the first post-launch monitoring loop against ChatGPT and Perplexity.
The plan document already specifies each of these with acceptance criteria. When they ship, this section updates with real timestamps.
What went well, what we would do differently.
Went well
- Parallel dispatch on Phase 3. Twelve service pages in thirteen minutes only works if the subagents do not step on each other's files. Vanilla HTML/CSS/JS plus one page per subagent made that trivial.
- The spec-and-plan gate. Writing a real spec and a real plan before touching code is the unglamorous step that made the afternoon possible.
- Canonical-template pattern. One reference page (the GEO service) for structure meant every subagent produced consistent head blocks, JSON-LD, and nav wiring.
- Shared voice rules in the plan. Banned-clichés list, direct-answer H2 rule, stack-naming requirement. Subagents followed them without re-prompting.
Would do differently
- Ship the bot middleware earlier. The markdown-for-AI-bots layer should have been Phase 2, not Phase 7. AI engines are already crawling. No reason to let them see the HTML-first version for a day.
- Start the Receipts layer sooner. Writing about client work reveals gaps in the service copy. Doing them in parallel with Phase 5 caught three specific phrasing changes.
- Add a verification subagent per phase. The verification-before-completion skill catches a lot. A dedicated subagent whose only job is to curl every page and grep for banned clichés would catch more.
- Budget time for OG images. We used a default image across every page. Per-page OG art would have taken another hour we did not spend.
Full prompt snippets.
Three representative prompts from the implementation plan. These are the actual shapes we sent to subagents.
Brainstorming prompt (opens the session)
Skill: superpowers:brainstorming
I am rebuilding winstondigitalmarketing.com as the proof that
an AI-native agency can ship production marketing in one day.
Goals:
- 25-30 pages: home, about, contact, services hub + 11
service pages, our-work hub + 3 receipts, playbooks hub
+ 5 launch posts, legal + 404.
- Voice: operator-tone, direct, no fluff. Named stacks.
- The site itself is the best case study we have.
Constrain me. What am I missing? What is the biggest risk
to shipping this in a day?
Plan-writing prompt
Skill: superpowers:writing-plans
Spec: /docs/spec.md
Brainstorm notes: /docs/brainstorm.md
Produce /docs/plan.md with:
- Phase 0 through Phase 8, each with acceptance criteria.
- For each phase: inputs, outputs, subagent count,
estimated wall-clock.
- Commit message templates per phase.
- A verification gate at the end of each phase.
- A list of files each phase MUST NOT modify.
Parallel dispatch for Phase 3
Skill: superpowers:subagent-driven-development
Phase 3 of the Winston site rebuild. Dispatch twelve subagents
in parallel. Each owns exactly one page. Each reads
/services/generative-engine-optimization/index.html as the
canonical template.
Pages:
1. /services/search-engine-optimization/
2. /services/paid-media/
3. /services/content-creation/
4. /services/cannabis-marketing/
5. /services/ai-marketing/ (hub)
6. /services/ai-marketing/custom-gpts-and-skills/
7. /services/ai-marketing/tool-integration/
8. /services/ai-marketing/content-workflows/
9. /services/ai-marketing/ai-strategy-assessment/
10. /services/ai-marketing/agentic-web-transformation/
11. /what-we-do/ (services hub)
12. /services/generative-engine-optimization/ already exists;
leave it alone
Shared voice rules apply. Commit independently. Verify each
page renders locally on port 8087 before finalizing.