{"id":"7ed2bbc7-032a-4091-9b0c-e62a8535fa6c","slug":"landingforge","kind":"skill","name":"landingforge","summary":"Manufactures SaaS, dev-tool, and B2C landing pages to a spec — gated specialist phases across conversion, SEO, GEO, and visual craft, closed by a 10-star scoring loop that refuses to ship below the ba","owner":"NmadeleiDev","repoUrl":"https://github.com/NmadeleiDev/landingforge","license":"MIT","licenseTier":"permissive","trust":"community","stars":1,"match":null,"fewStars":true,"format":"skill","createdAt":"2026-08-07T11:49:41.000Z","addedAt":"2026-10-22T03:23:57.802Z","logoUrl":"https://avatars.githubusercontent.com/u/57456890?u=37d7eab7489720b16c2cb516a850e12acd70268a&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["developer-tools","writing"],"tags":["ai-agents","astro","claude-code","claude-code-plugin","conversion-optimization","landing-page","seo"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-22T13:53:11.245Z","sample":false,"url":"https://conduits.dev/tools/landingforge","language":"TypeScript","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# LandingForge\n\nA Claude Code plugin that **manufactures SaaS, dev-tool, and B2C consumer-app landing pages to a spec** — and refuses to ship below a quality bar.\n\nAI ships the statistically-average landing page because it generates in one shot: no committed strategy, no committed visual point of view, no scoring. Average is forgettable. LandingForge splits the work into **gated specialist phases**, each writing an artifact the next reads, all calibrated against a distilled knowledge base and an anti-slop blocklist — then it **scores the result and loops until it clears a threshold**.\n\nRuns on **Claude Code** (plugin), **Codex** (skills-capable builds), and **Kimi Code** (plugin).\n\n---\n\n## It built its own landing page\n\n[![LandingForge's own landing page](examples/self/screenshots/hero.png)](https://nmadeleidev.github.io/landingforge/)\n\n**★ 9.1 / 10** · conversion 9.5 · visual 9.7 · discoverability 8.7 · craft 8.3\n· CWV **measured**: LCP 1.389s, CLS 0.001, TBT 0ms\n\n**[See the live page](https://nmadeleidev.github.io/landingforge/)** ·\n**[read the full scorecard](examples/self/SCORECARD.md)** — including the seven checks it lost ·\n**[read the whole artifact chain](examples/self/)** (brief → copy → tokens → design → site → score)\n\nThe scoring loop caught three real defects in its own page and one in the engine itself: an\n`og:image` that didn't exist, an accent sprayed across 13 above-fold surfaces, a page that\n**overflowed horizontally on mobile**, and — routed back to phase 3 — a token generator emitting a\ncaption color at **3.89:1**, below WCAG AA, on every page it would ever build. All fixed, all\nitemized in the scorecard.\n\n> A caveat the scorecard states in its own words: **none of these axes measure conversion.** No A/B\n> data enters the loop. The score enforces a floor of craft; it does not predict revenue.\n\n## The four axes\n\nEvery page is optimized and scored across:\n\n1. **Conversion** to a single target action\n2. **Organic SEO** (on-page + structured data)\n3. **AI-search / GEO** (citation by ChatGPT / Perplexity / AI Overviews / Claude)\n4. **Visual clarity and craft**\n\n## The pipeline (`/landing-build`)\n\nGated phases — each surfaces its artifact for approve / revise / restart:\n\n| # | Phase | Agent | Artifact |\n|---|-------|-------|----------|\n| 1 | Strategy | `lp-strategist` | `brief.md` |\n| 2 | Copy | `lp-copywriter` | `copy.md` |\n| 3 | Visual system | `lp-designer` | `tokens.css` + `design.md` |\n| 4 | Build | `lp-builder` | the site code |\n| 5 | Discoverability | `lp-discoverability` | `seo-report.md` |\n| 6 | Conversion QA | `lp-cro` | `cro-report.md` |\n| 7 | Performance | `lp-perf` | `perf-report.md` |\n| 8 | Score & loop | `lp-scorer` | `SCORECARD.md` |\n\nThe phase-8 loop routes sub-threshold fixes back to the owning phase (bounded at 3 iterations). Ship bar: **>= 8.0 / 10 overall, no axis below 6.0**.\n\nRun any phase standalone: `/landing-strategy`, `/landing-copy`, `/landing-design`, `/landing-discoverability`, `/landing-optimize`, or audit any existing page with `/landing-critique <url>`.\n\n## Install\n\n### Claude Code\n\n```text\n/plugin marketplace add NmadeleiDev/landingforge\n/plugin install landingforge@landingforge\n```\n\nStart a fresh session. Skills appear as `/landing-build`, `/landing-critique`, and so on.\n\n### Codex\n\nFor a **skills-capable** Codex build (one that auto-discovers `~/.codex/skills/`) — see [`CODEX.md`](./CODEX.md):\n\n```bash\ngit clone https://github.com/NmadeleiDev/landingforge.git\ncd landingforge\ncodex/install.sh          # idempotent; re-run after git pull\n```\n\n### Kimi Code\n\n```text\n/plugins install https://github.com/NmadeleiDev/landingforge\n```\n\nThen `/new`. See [`KIMI.md`](./KIMI.md).\n\nUpgrading later: [`UPGRADE.md`](./UPGRADE.md), or just tell your agent *\"upgrade LandingForge\"*.\n\n## Prerequisites\n\nLandingForge degrades gracefully — nothing below is a hard blocker, but each absence costs you a\nmeasured signal, and the scorecard records the degraded mode explicitly rather than pretending.\n\n**The browser is bundled.** Every rendered-page check drives `scripts/browse`, a small Playwright\nCLI that ships in this repo — no globally-installed browser tool is required, and its command\nsurface is versioned with the prompts that call it.\n\n| Tool | Needed for | If absent |\n|------|-----------|-----------|\n| [claude-seo](https://github.com/AgriciDaniel/claude-seo) (Claude Code) | The Discoverability axis — schema, AI-crawler access, technical SEO. LandingForge **delegates** here rather than maintaining a parallel SEO knowledge base | A minimal inline check runs; `SCORECARD.md` records `discoverability_basis: inline-fallback (degraded)` |\n| Node ≥ 18 or [Bun](https://bun.sh) + `cd scripts && npm install` | `scripts/` — **the bundled browser** (`browse`, used by every rendered-page check), Lighthouse CWV measurement (`score.ts`), OKLCH token generation, OG capture, logo generation | Rendered checks fall back to reading the built source and are marked *code-inferred, not browser-confirmed*; CWV is *reasoned* rather than *measured*, and each number is labeled as such |\n| [mmx-cli](https://github.com/MiniMax-AI/cli) (`npm i -g mmx-cli`, authed) | `lp-brandmark` generating logo candidates | Falls back to a hand-authored flat SVG concept mark |\n\nThe generated site itself needs nothing beyond Node/Bun — it is a self-contained Astro project.\n\n## Conventions (load-bearing — keep these stable)\n\n- **Skills** are user-facing and named `landing-*` (`/landing-build`, `/landing-critique`).\n- **Agents** are internal specialists named `lp-*` (`lp-strategist`, `lp-scorer`).\n- **Artifacts** for a page are written to `.landingforge/<page-slug>/` in the target repo (gitignored); generated site code lands in `.landingforge/<page-slug>/site/`.\n- **SEO + GEO is owned by [claude-seo](https://github.com/AgriciDaniel/claude-seo)** — LandingForge delegates to it and does not maintain a parallel SEO/GEO knowledge base.\n- **Stack the engine builds on:** Astro (standalone) / Next.js (in-app) + Tailwind v4 + shadcn/ui (+ Base UI) + Tailark + Motion.\n- **The engine never provisions or deploys.** It emits page code and *commented* integration stubs; it holds no secrets and touches no accounts.\n\n## Layout\n\n```\n.claude-plugin/   plugin.json + marketplace.json (Claude Code)\nagents/           lp-* specialist subagents          <- SOURCE\nskills/           landing-* user-facing skills       <- SOURCE\nreferences/       the distilled knowledge base (the engine's brain)\nscripts/          the runtime: browse (bundled browser), score, gen-tokens,\n                  capture-og, gen-logo + sync-adaptations and check\ncodex/            install.sh for skills-capable Codex builds\n.codex/ .kimi/    GENERATED per-CLI adaptations — do not edit (references/ is shared)\n.github/          CI: integrity, adaptation drift, typecheck, browser smoke test\n```\n\n`references/` is the substance of this project — the conversion, copy, visual, schema, and CWV rule sets every agent reads before it acts. If you fork LandingForge to fit your own taste, that directory is what you edit.\n\n## Contributing\n\nIssues and PRs welcome. Three things to know:\n\n1. **`references/` is the product.** A change there changes every page the engine ships — state which rule you are adding or overturning, and why.\n2. **`.codex/` and `.kimi/` are generated. Never edit them.** `skills/` and `agents/` are the single source; the per-CLI adaptations are derived by `scripts/sync-adaptations.ts`, which carries all the per-CLI knowledge in one reviewable rule table. Edit the source, then:\n   ```bash\n   cd scripts && npm install\n   npm run sync        # regenerate .codex/ and .kimi/\n   npm run ci          # integrity checks + drift check + typecheck\n   ```\n   CI fails on any drift, so a hand-edited copy cannot reach `main`. (It used to: the router advertised six shipped skills as \"planned\" for months, and the `session-notes` feature existed in all 32 Codex/Kimi files and none of the 17 Claude ones.)\n3. **Bump `\"version\"`** in `.claude-plugin/plugin.json` and both Kimi manifests with any meaningful change — the upgrade flow keys on it, and CI checks that all three agree.\n\n## License\n\n[MIT](./LICENSE).\n"}