Product UI components are built once at design size from the Figma file and reused by the marketing mockups and, later, the app. Text contrast tokens now meet WCAG AA in both themes, with a test. Pricing stays hidden until decided. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014SdXCbrN5PtGExkpvMaMHx
3.5 KiB
3.5 KiB
Wursor — Agent Guide
This repository is Wursor, the agentic WordPress management platform. Before starting any non-trivial task, read this file and follow the skill routing below.
The product, in one line
Non-technical WordPress site owners describe what they want; Wursor makes it happen in a cloud sandbox, shows a live preview, and deploys on approval. The interface is chat → preview → approve. Nothing else.
Repo layout
api/ Node.js + TypeScript API server (empty until Phase 0 gate)
web/ Next.js (App Router) + TypeScript frontend (ADR 0018): app/ routes, src/product (app UI components), src/marketing, src/ui, src/styles (tokens)
plugin/ WordPress plugin (PHP) — empty until Phase 0 gate
infrastructure/ Docker images, warm pool, GC, deploy scripts
e2e/ Playwright + e2e/golden/ harness
spikes/ Phase 0 written results — gate before product code
docs/decisions/ Architecture Decision Records (0001–…)
PRD.md Product requirements (v2.0 — non-technical-first)
IMPLEMENTATION.md TDD build guide with 8-sprint Phase 1 plan
CHANGELOG.md Keep-a-Changelog log of changes
Skill routing — use the precheck first
The .agents/skills/ directory is a family of rigor skills modeled on Cursor's pstack. The entry point for any non-trivial task is wursor-precheck — it routes to the right playbook and sets the verification bar.
| Task shape | Skill |
|---|---|
| Any non-trivial task — start here | wursor-precheck |
| How does X work / why was Y built this way | wursor-investigation |
| A defect — reproduce, root-cause, fix | wursor-bug-fix |
| New behavior, TDD-first from a data shape | wursor-feature |
| Review a diff / PR across lenses | wursor-review |
| Any code change with a test path | wursor-tdd |
| Capture a reviewable decision trail | wursor-decision-log |
| Structure, tradeoffs, verification standards | wursor-principles |
Hard rules
- Tests first. No implementation without a failing test (see
wursor-tdd). Coverage floors: api/ + web/ ≥ 90%, plugin/ ≥ 80%. - Prove it works. A task is not done on self-report — run the test, start the sandbox, hit the endpoint.
- Non-technical-first. The user never sees a diff, a terminal, a settings screen, or an error log. If a change would leak engineer-only UI into the product, it's wrong.
- Safety. Never touch a live WordPress site, production credentials, or real user data from this repo. Sandboxes are the only environment code runs against.
- Decisions are logged. Non-trivial choices get a decision-log entry (see
wursor-decision-log).
Stack notes
- Backend: Node.js + TypeScript, Fastify (Wursor API), PostgreSQL (Wursor data), Redis (SSE/queue)
- Frontend: Next.js (App Router) + React + TypeScript. Server layer holds tokens; browser gets a session cookie only (ADR 0018). Existing Vite shell is being migrated.
- Sign-in: emailed 8-character code, emailed link and passkeys (ADR 0019)
- Cloud sites: provisioned on WeOwn Cloud behind the platform interface (ADR 0020)
- Hosting: DigitalOcean for Wursor and WeOwn Cloud, one VPC per plane, Terraform (ADR 0022)
- Direction: see PRD.md (Headless, revision 4) and IMPLEMENTATION.md section 0
- Sandboxes: Docker on VPS, pre-baked WordPress image, overlayfs layers, media proxied (not copied)
- Plugin: standard WordPress PHP plugin, REST API + token auth
- Tests: vitest (api, web), phpunit (plugin), Playwright (e2e)