Planner, implementer, reviewer and optional judge on Claude Code, Codex, Kimi Code, Grok Build, Muse Code or the Antigravity CLI. A receipt per dispatch.
Developer toolsAstro · JavaScriptGitHub @reasanceOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Showcase and docs site for bottega-kit
Taken from the repository README
Loading the full README.
Read the full README ↗Showcase and docs site for bottega-kit:
a planner, an implementer, a reviewer and an optional judge on the coding
agents you already have, Claude Code and Codex, one role each, in a git
worktree, with a receipt for every step.
Built with Astro 5 + Tailwind v4 + TypeScript. Static-only output.
The only runtime JavaScript is the copy button on code blocks. The loop
diagram on the home page is inline SVG. Fonts (Instrument Serif, Instrument
Sans, JetBrains Mono) are self-hosted from the @fontsource packages: no
request leaves the site but the analytics beacon.
Everything that describes the kit is generated from the kit checkout, never written by hand here:
| on the site | source in ../bottega-kit |
|---|---|
| version and release date in the footer and the hero | package.json, CHANGELOG.md |
| the starter configuration, the effort sets, the default round cap, the exit codes, the harness argv per role | bin/lib/bottega/config.py, util.py, harness/__init__.py, imported through python3 |
/docs/ (the README), /docs/process, /docs/configuration, /docs/compatibility, /docs/later | README.md, docs/*.md |
/docs/prompts | templates/task.md, prompts/*.md |
/changelog | CHANGELOG.md |
scripts/sync-kit.mjs reads those files, asks python3 for the kit's tables
(an import of its modules, no command of the kit runs) and rewrites the synced
blocks between <!-- BEGIN AUTOGEN --> / <!-- END AUTOGEN --> markers. It
never dispatches a model.
The generated release link and documentation version come from the kit's current tag. Repository links in the synced docs point to that tag, so they describe the same release as the site.
npm run sync-kit # refresh from ../bottega-kit (or BOTTEGA_KIT_ROOT)
npm run sync-kit -- --check # exit 1 if out of sync; skipped when the kit checkout is absent (CI)
npm run sync-kit -- --allow-unreleased # from a checkout that is not at its clean release tag
npm run build runs the check first, then regenerates public/og-image.png
with scripts/generate-og-image.mjs: satori lays the card out in the site's
own fonts and sharp rasterises it, so the image is the same on every machine.
The home page's copy, in src/data/copy.json, is the one hand-written
description of the kit: it is reviewed at every release against the README.
Its strings may hold `code`, *emphasis* (see Inline.astro) and the
placeholders {rounds}, {exitOk}, {exitRefused}, {exitStopped},
{proxyStripped} and {version}, filled from kit.json at build time so no
number is typed by hand. The OG card takes its headline from the same file.
npm install
npm run dev # http://localhost:4321
npm run check # astro check: TypeScript + templates
npm run build # static output in dist/
npm run preview
When the kit ships a version (its CLAUDE.md, "Release tagging", step "sync
the showcase site"): after the tag exists and npm serves the version,
npm run sync-kit, npm run build, commit, deploy.
Production runs on Cloudflare Workers with Static Assets, configured in
wrangler.jsonc (Worker bottega-kit-sh, assets from dist/), served at
https://bottega-kit.sh and www.bottega-kit.sh as Workers custom domains;
the zone is on the Cloudflare account, the domain stays registered at
DNSimple. The origin is set in astro.config.mjs, public/robots.txt and
the routes in wrangler.jsonc. Two ways to deploy, same result:
.github/workflows/deploy.yml builds and runs wrangler deploy on every push to main. It needs the repository secrets
CLOUDFLARE_API_TOKEN (Workers Scripts:Edit) and CLOUDFLARE_ACCOUNT_ID,
and the optional variables PUBLIC_UMAMI_WEBSITE_ID and PUBLIC_UMAMI_SRC.npx wrangler login once, then npm run deploy
(npm run build && wrangler deploy).Umami, through src/components/UmamiAnalytics.astro. Off unless
PUBLIC_UMAMI_WEBSITE_ID is set at build time; PUBLIC_UMAMI_SRC points at a
self-hosted instance instead of Umami Cloud. See .env.example and
/privacy.
src/
components/ CodeBlock, Transcript, Inline, LoopDiagram, UmamiAnalytics
data/ kit.json (generated), copy.json (the hand-written home copy)
layouts/ BaseLayout, DocLayout
pages/ index.astro, 404.astro, privacy.md, docs/*.md, changelog/index.md
styles/ global.css (design tokens)
scripts/ sync-kit.mjs, generate-og-image.mjs
public/ favicon.svg, og-image.png (generated), prose.css, _headers, robots.txt
wrangler.jsonc Workers Static Assets config
MIT. Content synced from the kit repository is MIT there too.