You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(site): tools.culture.dev Astro site — cream/katvan-green catalog (M2) (#3)
* feat(site): tools.culture.dev Astro site — Anthropic-cream catalog (M2)
Land the public index front-end under site-astro/. Astro 6, output:
'static' with no adapter, so `astro build` emits a pure-static dist/ that
Cloudflare Pages serves directly (M3).
The site renders from one generated file, src/data/catalog.json, produced
by the M1 generator (`culture-tools index build`). Pages:
- Landing: hero + `uv tool install` one-liner + a grid of certified tools
(version / backend / verb-count chips, copy-install, conformance badge),
plus a "Candidates not yet conformant" roadmap section listing excluded
tools with the rubric bundles each still fails — honest about what the
gate dropped.
- Per-tool detail (/tools/<name>/): install block, repo/PyPI links, backend
and model facts, and the tool's command surface table.
- 404, sitemap, robots, favicon.
Theme: Anthropic-cream, light by default (warm #FFFAF5, clay accent
#D97706) with a dark mirror and a no-flash toggle — palette aligned with
the sibling agentic-human / humanic-ai sites. Catalog-first card grid.
(Diverges from katvan's dark-terminal start, per the style call; katvan
supplied the static-Astro structure, not the skin.)
scripts/sync-catalog.sh (`npm run catalog`) runs `index build` and
distributes its two artifacts: catalog.json -> src/data/ (imported, typed
via catalog.ts) and the PEP 503 simple/ tree -> public/simple/ (served
verbatim). Both are committed so the site builds without the Python
toolchain; CI (M3) regenerates them against live conformance.
Verified: `npm run check` (astro type-check) 0 errors, `npm run build`
green (5 pages + sitemap, /simple/ ships), light + dark render correctly.
Repo gates unaffected: 44 pytest, markdownlint, rubric doctor all green.
Docs: design doc M2 marked done + style decision recorded; CLAUDE.md site
section fleshed out from placeholder; markdownlint ignores hardened for
the nested site-astro/node_modules + dist. Version 0.4.0 -> 0.5.0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LdsNvR24i1fGosuQ9AgtVG
* feat(site): dark mode wears katvan's terminal green
In dark mode the accent swaps from the light-mode clay (#D97706) to
katvan's terminal green (--accent #41d67a, hover #7cff9e) so the site joins
the AgentCulture cream family in light and katvan's terminal aesthetic in
dark. Only the --accent trio differs between modes; cream/clay light is
untouched. Added an --on-accent token so ::selection (and any accent-fill)
keeps readable contrast — dark text on the bright green, white on clay.
Synced the CHANGELOG (0.5.0), design doc, and CLAUDE.md theme notes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LdsNvR24i1fGosuQ9AgtVG
* fix(site): address Qodo review on PR #3 (3 findings + a drift guard)
All three findings valid; a colleague review (Qwen) concurred and helped
shape the durable fix for #1. Fixes:
1. Stale catalog.json versions (correctness) — the committed catalog said
culture-tools 0.4.0 while pyproject is 0.5.0. Root cause is structural: a
committed *generated* artifact drifts on every version bump. Regenerated
(`npm run catalog` → 0.5.0) AND added tests/test_site_catalog.py, a guard
that fails when the committed catalog's generated_with / culture-tools entry
lags pyproject. It reads committed files only (no uv/agentfront needed in
CI). CLAUDE.md's version-bump convention now says to regenerate after a bump.
2. Catalog type-safety bypass (maintainability) — catalog.ts replaced
`catalogJson as unknown as Catalog` (which silenced all structural checking)
with a typed import `const catalog: Catalog = catalogJson`. astro check / tsc
now validates the catalog shape at build; no runtime validator shipped, so
the zero-runtime-dep ethos holds.
3. Clipboard copy lacks fallback (reliability) — the copy handlers now
feature-detect navigator.clipboard, handle rejection, and fall back to a
hidden-textarea execCommand('copy') for insecure contexts (e.g. the
http://localhost preview) so they never throw an unhandled rejection.
Verified: astro check 0 errors, build green; 45 pytest (incl. the new guard);
black/isort/flake8/markdownlint clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LdsNvR24i1fGosuQ9AgtVG
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/design/tools-culture-dev.md
+9-3Lines changed: 9 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,7 +27,7 @@ and not a mirror of PyPI.
27
27
| Repo location |**In this `culture-tools` repo** — Astro site under `site-astro/`, catalog generator in the `culture_tools` package. | One repo; `culture-tools`*is* the index's backend (per its own description). |
28
28
| Catalog source |**AgentFront metadata** — generated by running each tool's `learn` / `overview` / `doctor``--json` verbs, plus `culture.yaml` + `pyproject.toml`. | Self-describing and self-validating; the index dogfoods the very contract it certifies. New conformant tools surface from their own output. |
29
29
| Conformance gate |**Delegate to `agentfront cli doctor <repo> --strict --json`** (`healthy == true`). |`agentfront` (formerly `teken`/`afi-cli`) is the canonical rubric authority; we don't reinvent the verdict. |
30
-
| Front-end style |**`../katvan` dark-terminal Astro** as the starting point — free to diverge. |Proven CF-Pages-static stack and house aesthetic; not a constraint. |
30
+
| Front-end style |**Astro static, Anthropic-cream (light) + katvan-green (dark)** — catalog-first card grid. Took `../katvan`'s Astro/CF-Pages *structure*; light mode wears the warm-cream palette of the sibling `agentic-human` / `humanic-ai` sites, dark mode wears katvan's terminal green (`#41d67a`). |Registry scannability + AgentCulture house look; the two family aesthetics meet in one site. |
31
31
| Hosting (v1) |**Cloudflare only** (CF Pages, static), domain bound via `../cultureflare`. | Simplest near-zero-cost static host; DNS for `culture.dev` already lives at Cloudflare. |
32
32
| Hosting (later) | AWS **S3 as the durable DATA / backup / deep-cache tier** behind the CF edge; recent/hot load served from Cloudflare. | Deferred; the artifacts are plain files, so adding an S3 origin/backup later is additive, not a rewrite. |
33
33
@@ -98,8 +98,14 @@ Each milestone is one PR (this repo bumps the version every PR; the
98
98
(delegates to `agentfront cli doctor`), tool introspection → catalog entries,
99
99
the static PEP 503 `/simple/` emitter, a starter manifest, `catalog.json`
100
100
output, tests, explain entry. *Hosting-independent; the durable core.*
0 commit comments