{"name":"skill:build-website","files":[{"path":".imd/reads/skills/build-website.md","digest":"eba65601794ce6e6ffdffe35522794636df1f2976706e809793fe63ad5f74524","content":"Build the requested website in this assignment. Make reasonable design decisions, implement the\npages and interactions, inspect the result, and fix defects before submitting. Start with a usable\npage; do not commission a planning task or stop at a specification.\n\nDefault to Vite, React and TypeScript unless the assignment specifies a different stack or an\nexisting project should retain its stack. Use the assignment's network access to install normal\npackage dependencies. Commit the source, package manifest, lockfile and finished static export in\ndist/. Do not commit node_modules or vendor/node_modules. Ensure dist/ is included even if a\nscaffold's .gitignore excludes it. The publisher serves the committed export; it does not rebuild.\n\nHosting is not part of this assignment, even when the request says to host, publish or deploy the\nsite or names a label for it. The plane pins the committed export to IPFS and names it after the job\ncompletes. Never run `imd site publish` or another publishing command, and never stop to ask for\npublication to be enabled: a committed dist/ is the delivery.\n\nSet Vite's base to ./ and use relative asset URLs so the site works at a gateway subpath or an ENS\nname. Use one page or hash routing unless static routes are explicitly exported: there is no server\nto rewrite application routes. Bundle required assets locally; no backend or private credentials\ncan live in a static export.\n\nA regular website does not need wallet infrastructure. Do not add RainbowKit, wagmi, viem, wallet\nconnections or transaction flows unless the assignment explicitly requires a dapp. A site about\nDeFi, research or tokens is not by itself a request for a wallet-connected application. When the\nassignment is a dapp, wallets connect the network's one way, in\n`.imd/reads/skills/wallet-connectors.md`: browser wallets by EIP-6963, phones by opening the page\nin the wallet's own browser, and Coinbase Smart Wallet, behind one connect control. No relay and no\nproject ID; never stop to ask the requester for one.\n\nFive rules the design review measures first, so build them in. The product and its main action\nare on the first screen at 390 wide, not below a hero. A marketing hero pairs a headline of six\nwords or fewer with one plain line saying what this is; directions (\"tap to flap\", \"enter a\nusername\") sit next to their controls. No small tracked capitals above headings. One type scale of\nat most six sizes. A title, favicon, description, og:title and og:image, so a shared link unfurls.\n\nBefore the final build, run the review's own probe on the export, from the repository root:\n`node .imd/reads/skills/design-critic/scripts/taste.mjs --out test/scratch/taste`. It measures the\nexport at 320, 390 and 1440 wide and leaves screenshots in `test/scratch/taste/shots/`, which is\nremoved before your diff is taken; write nowhere else for it. If it cannot load Playwright it prints\nhow to install it outside the repository; do that where this machine allows, or record that the\nprobe did not run. Fix every failed check on the first screen or repeated across the page, confirm\nthe first screen on the 390 screenshot, rebuild, and record the probe's result in the validation\ndocumentation. The thresholds are in `.imd/reads/skills/design-critic/REFERENCE.md`. The brief's\nown visual direction still wins over any check.\n\nDesign and review with Better Interface. The pinned guide is\n`.imd/reads/skills/better-interface/REFERENCE.md`; start with its contents list and its\n`better-interface` workflow section, then read the core principles of all six domains\n(accessibility, layout, writing, typography, colors, UI) and consult supporting sections as the\nproduct needs them. Apply them while building, not only as a pass afterwards. It is design\nknowledge, not a new assignment: the user's requested visual direction, including an explicit\nrequest for an unstyled page, stays authoritative. Nothing needs fetching; this applies equally to\nClaude and Codex.\n\nEach domain lists checks \"without a browser\" and \"with one\". When this assignment hands you a\n`browser` tool, inspect the finished export in it as the guide describes. When it does not, run the\nwithout-a-browser checks and record the rendered checks as unperformed: in this skill that is a\nstated limitation, not a failed assignment. Never claim a rendered observation, a measured contrast\nratio or a screenshot you did not make.\n\nFix applicable findings before the final build. After the last source change, write `DESIGN.md` at\nthe repository root using the guide's `document-web-design` section: the implemented colors,\ntypography, spacing, components and responsive behavior, taken from the source. Record the review's\ncoverage, `file:line` findings, fixes and remaining limitations in the assignment's validation\ndocumentation. This review supplements the build and interaction checks below; it does not\nestablish that they ran.\n\nRun the production build and a typecheck (for TypeScript, tsc --noEmit or an equivalent project\nscript), then validate meaningful primary interactions such as navigation, filters, forms and\ndownloads. Use browser tools when available to inspect the actual export at mobile and desktop\nwidths, including console/resource failures and overflow. If browser tooling is unavailable, use\nappropriate interaction tests and state which visual/browser checks remain unperformed. Fix\nobserved failures, rebuild after the final source change, and record commands and results in the\nREADME. Do not claim checks ran when they did not.\n\nThe verifier uses the none profile: it checks source/file integrity and permitted paths, not the\nproduction build or browser behavior independently. Worker-side validation remains part of this\nassignment. Docker, web.checks.json and vendored dependencies are not required. The optional web@1\nadapter remains available for separately configured browser-checking workflows; it is not this\nskill's acceptance gate.\n\nNamed output files requested by the task go under artifacts/. Source belongs in the repository.\nCopy any provided input assets from .imd/reads/artifacts/ into the site when they are needed at run\ntime. Inputs themselves are removed before submission."}]}