name: product-docs description: "Keep the Kaku website (kaku.fun, the vercel-branch worktree) accurate and user-facing: gather verified features from the current commit, refresh the docs and the plain-language Guide, keep EN/ZH parity, bump version pointers on release, and verify before handing the diff to the maintainer." when_to_use: "update website, update docs, 更新官网, 完善官网, 产品说明, 使用文档, 上手指南, product guide, document a feature, refresh kaku.fun, write user docs, site docs, 写文档, 写官网"
Kaku Product Docs
Use this skill to write or update the user-facing product documentation on the Kaku website. The site is the deliverable; this skill is the repeatable flow for keeping it correct and adding the next feature without drift.
The audience is normal users, not contributors. Explain what each page/button/shortcut is, how to reach it, and what happens after you use it. Avoid implementation detail. No em dashes, no emoji (project + global rules).
Where things live
- Site worktree:
~/www/kaku-siteon thevercelbranch (NOTmain). Vercel serveskaku.funby pushing that branch.git worktree listconfirms the path. - Design system: Kami parchment system. Read
~/www/kaku-site/DESIGN.mdbefore any visual change. Match the existing pages; do not invent new components. - Doc pages (EN under
docs/, ZH underzh/docs/, kept in lockstep): Install (index.html), Guide (guide.html), Features (features.html), CLI Reference (cli.html), Configuration (configuration.html), Keybindings (keybindings.html), FAQ (faq.html), Contributing (contributing.html). - Guide vs Features: Guide is the narrative onboarding walkthrough (first launch → tabs/panes → shell → AI → tools → settings). Features is feature-by-feature reference. Keep the Guide short and link out to the reference pages; do not duplicate config tables there.
- Screenshots:
shots/kaku-dark.webpandshots/kaku-light.webp(1920x1192). Reuse them with<figure class="shot">. Kaku is a native terminal, so CDP/browser screenshots do not apply to the app; only capture new app shots if the maintainer explicitly asks (buildmake appor use/Applications/Kaku.app, thenscreencapture).
Source of truth: verify, never infer
User-facing docs are public. Do not copy feature claims from a subagent summary or from a feature's name. Confirm each claim against the running code before publishing:
- Defaults and behavior flips: grep
config/src/config.rs(and its tests, e.g.*_defaults_to_*) and bundled config inassets/. Example caught this way: v23 flippedsmart_tab_modedefault tosuggestion_first; the site still saidcompletion_first. - Shell behavior:
assets/shell-integration/setup_zsh.sh. - Keybindings / menus: the existing
keybindings.htmlis the maintainer's authored ground truth; reuse its wording rather than re-deriving. - The existing site docs are authoritative for tone and naming. When you add something new, verify it; when you echo something existing, match it.
Workflow
- Scope: read
git log/gh release listfor the current version and what changed. Read the nearest crateAGENTS.mdandCLAUDE.mdfor feature notes (e.g.config_versionchanges). - Inventory the site: read the target page(s) raw to clone exact markup. Note
site-nav,docs-sidebar > docs-menu,section-toc,doc-content,doc-pager,footer. ZH footer/skip-link wording differs from EN; copy the ZH variants verbatim from an existing ZH page. - Write/edit content in plain language. New page: clone an existing doc page's full scaffold, change
<title>/description/canonical/hreflang/hero/docs-menucurrent item/section-toc/doc-pager. Anchors use apage-prefix (guide-...). - Wire navigation (a new page touches every doc page):
- Insert the new
<a href="/docs/<page>"><span>Label</span></a>into thedocs-menublock of all EN doc pages, and the/zh/docs/...variant into all ZH pages. The page where the neighbor link carriesaria-current="page"needs a separate sed (the attribute breaks a naive anchor match). - Fix the
doc-pagerprev/next chain on the two neighbor pages only (scope per-file so you do not rewrite the new page's own pager). - Add both URLs to
sitemap.xmland a line tollms.txt(andllms-full.txtif it enumerates pages).
- Insert the new
- Version pointers (only when a release shipped): bump the current-version pointer, not historical references.
- Bump: nav
>v0.X.Y</a>(every page), JSON-LD"softwareVersion"(bothindex.html), AppleScriptget versionexample,llms-full.txtLatest version:. - Leave alone: roadmap narrative ("V0.X.0 is out", "after V0.X.0") and any "this version added" history.
- Confirm the release is actually public first (
gh release list), or the site will document an unreleased default.
- Bump: nav
- Verify before declaring done:
python3 scripts/highlight.py --check(0 files need highlighting).- Internal links resolve under
cleanUrls(every/docs/xhasdocs/x.html). - HTML well-formed (no unclosed/stray tags) on new/edited pages.
- EN and ZH parity: same sections, same anchors, same tables.
- Browser screenshot of key pages (CDP / browser-debug): capture each changed/new page rendered in a real browser engine. The Kaku app is a native terminal, so app screenshots need
make app//Applications/Kaku.app+screencaptureand are only done on explicit request; the website pages, however, are browser-debuggable and should be screenshotted as standard verification. On a machine with only Safari (no Chromium), use the Preview MCP's bundled engine:- Build a temp root so a deep page renders at
/:cp docs/<page>.html /tmp/prev/index.htmland symlink the assets it references by absolute path (ln -sf <site>/styles.css <site>/shots <site>/img /tmp/prev/). - Add a
.claude/launch.jsonconfig runningpython3 -m http.server <port> --directory /tmp/prev, thenpreview_start→preview_screenshot;preview_resizetomobilefor the 375px check (DESIGN.md mandates desktop + 375px). - The bundled browser caches the loaded page, so after swapping the temp
index.htmlto the next page (e.g. the ZH variant),preview_stopthenpreview_startto force a fresh load before the next screenshot. Confirm the live nav version, the current-page sidebar highlight, and EN/ZH typography all render.
- Build a temp root so a deep page renders at
- Hand off: show the diff. Do NOT commit or push the
vercelbranch unless the maintainer says so this turn (git safety rules). Pushingverceldeploys to production immediately.
Adding the next feature later
- Decide the home: a daily-use behavior → a bullet/step in the Guide; a configurable surface or new tool → a section in Features (+ Keybindings/Configuration if it adds a shortcut or option).
- Always update EN and ZH together. Mirror anchors and tables exactly.
- Re-run the verify checklist. Keep diffs minimal and atomic per behavior.