Create Vechain Dapp
vechain/x-app-template
Scaffold a VeChain dApp with Next.js, VeChain Kit, Chakra UI v3, and GitHub Pages deployment.
Scaffolds a Next.js turborepo with Blode UI, icons, Ultracite (oxlint/shadcn), workspace hooks, and GitHub/Vercel setup.
$ npx skills add mblode/agent-skills --skill scaffold-nextjs -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mblode/agent-skills scaffold-nextjs --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/mblode/agent-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/scaffold-nextjs .claude/skills/scaffold-nextjs && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "scaffold-nextjs" agent skill from https://github.com/mblode/agent-skills/tree/main/skills/scaffold-nextjs into .claude/skills/scaffold-nextjs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scaffold-nextjs", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/mblode/agent-skills/tree/main/skills/scaffold-nextjsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add mblode/agent-skills --skill scaffold-nextjs -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mblode/agent-skills scaffold-nextjs --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mblode/agent-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/scaffold-nextjs .agents/skills/scaffold-nextjs && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "scaffold-nextjs" agent skill from https://github.com/mblode/agent-skills/tree/main/skills/scaffold-nextjs into .agents/skills/scaffold-nextjs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scaffold-nextjs", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mblode/agent-skills --skill scaffold-nextjs -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mblode/agent-skills scaffold-nextjs --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mblode/agent-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/scaffold-nextjs .cursor/skills/scaffold-nextjs && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "scaffold-nextjs" agent skill from https://github.com/mblode/agent-skills/tree/main/skills/scaffold-nextjs into .cursor/skills/scaffold-nextjs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scaffold-nextjs", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/mblode/agent-skills.git --path skills/scaffold-nextjs--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add mblode/agent-skills --skill scaffold-nextjs -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mblode/agent-skills scaffold-nextjs --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mblode/agent-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/scaffold-nextjs .gemini/skills/scaffold-nextjs && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "scaffold-nextjs" agent skill from https://github.com/mblode/agent-skills/tree/main/skills/scaffold-nextjs into .gemini/skills/scaffold-nextjs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scaffold-nextjs", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install mblode/agent-skills scaffold-nextjsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add mblode/agent-skills --skill scaffold-nextjs -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/mblode/agent-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/scaffold-nextjs .github/skills/scaffold-nextjs && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "scaffold-nextjs" agent skill from https://github.com/mblode/agent-skills/tree/main/skills/scaffold-nextjs into .github/skills/scaffold-nextjs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scaffold-nextjs", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mblode/agent-skills --skill scaffold-nextjs -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install mblode/agent-skills scaffold-nextjs --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mblode/agent-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/scaffold-nextjs .opencode/skills/scaffold-nextjs && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "scaffold-nextjs" agent skill from https://github.com/mblode/agent-skills/tree/main/skills/scaffold-nextjs into .opencode/skills/scaffold-nextjs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scaffold-nextjs", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
scaffold-nextjsScaffolds a Next.js turborepo with Blode UI, icons, Ultracite (oxlint/shadcn), workspace hooks, and GitHub/Vercel setup.
Scaffold Nextjs is an agent skill from mblode/agent-skills. Scaffolds a Next.js turborepo with Blode UI, icons, Ultracite (oxlint/shadcn), workspace hooks, and GitHub/Vercel setup. Use when asked to "create a Next.js project", "bootstrap a turborepo", or "start a new web app".
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `evals/evals.json`, `references/app-setup.md` and `references/deploy-and-launch.md`). Compatibility notes: Requires a shell, Git, Node.js, pnpm, and package registry access.
It sits in Development, covering Monorepo tooling, Design systems and Project scaffolding. It works with Next.js, Turborepo, Vercel and GitHub. The repository describes itself as: Nobody ships AI slop on purpose. These skills make sure you don’t. The licence is MIT.
11 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit cef4cfa. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pnpmnodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pnpm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Requires a shell, Git, Node.js, pnpm, and package registry access.
From compatibility in the SKILL.md frontmatter.
Scaffold Nextjs loads about 2.8k tokens when it runs, and up to ~13k if it reads all its reference files. Until then it costs about 58 tokens; SKILL.md has 1,306 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from mblode/agent-skills at commit cef4cfa, republished under its MIT licence (© mblode). 1,306 words, ~2,758 tokens.
.claude/skills/scaffold-nextjs/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Scaffold a Next.js turborepo with full tooling, GitHub, and Vercel deployment.
ultracite/oxlint/shadcn, turborepo conversion, GitHub, and Vercel.scaffold-cli), designing folder structure or module contracts for an existing app (use codebase-architecture), building a page inside an existing app, or choosing visual direction and palettes (use ui-design).The references encode the house stack and dependency order. Verify version-sensitive flags against the installed CLI and bundled documentation; update a proven incompatible template rather than forcing stale flags. Where a Next.js question comes up that the references do not answer, read the bundled docs at node_modules/next/dist/docs/ in the app (they match the installed version) rather than training data.
| File | Read When |
|---|---|
references/app-setup.md | Phase 2: create-next-app flags, TypeScript 7 upgrade, Instant Navigations config and the rules block for apps/web/AGENTS.md, shadcn + Blode registry, icons, Agentation, Ultracite 7.12+ with ultracite/oxlint/shadcn, move into apps/web/ |
references/turbo-configs.md | Phase 6: root package.json, pnpm-workspace.yaml, turbo.json, root lefthook.yml, .gitignore, knip.json, workspace scripts, next.config.ts, root and app AGENTS.md |
references/deploy-and-launch.md | Phase 7 and 8: GitHub, Vercel, CI workflow, metadataBase, verification, security.txt, favicon, OG image, validation checklist |
Copy this checklist to track progress:
Scaffold progress:
- [ ] Phase 1: Gather project info
- [ ] Phase 2: Create Next.js app
- [ ] Phase 2.1: Upgrade to TypeScript 7
- [ ] Phase 2.2: Turn on Instant Navigations
- [ ] Phase 3: Install Blode UI components and icons
- [ ] Phase 4: Install Agentation
- [ ] Phase 5: Install Ultracite
- [ ] Phase 5.1: Enable ultracite/oxlint/shadcn
- [ ] Phase 6: Convert to Turborepo
- [ ] Phase 7: GitHub and Vercel setup
- [ ] Phase 8: Pre-launch checklist
- [ ] Validation: run the checklist in deploy-and-launch.mdCollect from the user (ask only for what is missing):
| Variable | Example | Default | Used in |
|---|---|---|---|
{{name}} | acme-web | none (required) | Root package.json, directory name, README |
{{description}} | Marketing site for Acme | none (required) | App package.json, README |
{{repo}} | acme-corp/acme-web | none (required) | GitHub remote URL |
{{domain}} | acme.com | none (ask if missing) | Vercel custom domain, metadataBase |
{{author}} | Your Name | none (required) | package.json author |
{{year}} | 2026 | current year | LICENSE |
Run the create-next-app command from references/app-setup.md exactly as written (it pins linter, React Compiler, and package-manager flags). Confirm the app loads on the port reported by the server. Use a free task-owned port when 3000 is occupied.
TypeScript 7 section of references/app-setup.md: install typescript@^7 and confirm pnpm run build type-checks through tsc. No config accompanies it.
Instant Navigations section of references/app-setup.md: set cacheComponents, partialPrefetching, and experimental.turbopackRustReactCompiler in next.config.ts. Cheap here and expensive later, so do it before any route exists. Read the Instant Navigations rules block that follows it before Phase 3; it governs how every page is written, and Phase 5.1 appends it to AGENTS.md.
Blode UI section of references/app-setup.md: shadcn init, register the @blode namespace, set iconLibrary in components.json, install blode-icons-react, then add components.
Agentation section of references/app-setup.md: install the package, patch app/layout.tsx with the dev-only <Agentation /> guard. Optionally add Google Analytics via @next/third-parties.
Ultracite section of references/app-setup.md: run ultracite@latest init with the exact flags listed, including --js-plugins @shadcn/lint (Ultracite ≥ 7.12). Verify with pnpm exec ultracite fix and pnpm exec ultracite check. The lefthook.yml it writes is temporary; Phase 6 replaces it with a root-level one.
ultracite/oxlint/shadcn section of references/app-setup.md: confirm init wrote import shadcn from "ultracite/oxlint/shadcn" into extends alongside core/next/react. If it did not, add that import (and jsPlugins: shadcn.jsPlugins). Do not hand-roll jsPlugins: ["@shadcn/lint"] or a starter-only no-restyle rule. The preset already turns shadcn/no-restyle off inside **/components/ui/**; add a matching override only when aliases.ui is a different path.
Move the app into apps/web/ (commands at the end of references/app-setup.md), then from references/turbo-configs.md:
package.json, pnpm-workspace.yaml, turbo.json, lefthook.yml, knip.json, and .gitignore from the templates. Delete apps/web/lefthook.yml; git only reads the copy next to .git. Move any build-script settings from apps/web/pnpm-workspace.yaml into the root file, then delete it.apps/web/package.json scripts to the turbo-compatible block and remove its prepare script (the root one installs the hooks).apps/web/next.config.ts still has reactCompiler: true, cacheComponents: true, and partialPrefetching: true.AGENTS.md from the template. Keep the Phase 5.1 Instant Navigations and design-system lint sections in apps/web/AGENTS.md outside the Next-managed markers.pnpm install from the root, then pnpm run dev once from the coding agent's shell. When Next 16.3 detects a coding agent in the environment it appends its managed nextjs-agent-rules block to apps/web/AGENTS.md (some generators also create a CLAUDE.md wrapper). Commit AGENTS.md and remove any duplicate CLAUDE.md wrapper. From a plain terminal nothing is written; that is fine, the block arrives on the agent's first run.pnpm run check, pnpm run build, and pnpm exec lefthook run pre-commit --all-files pass from the root, then pnpm --filter web start and load the home page from the production build.From references/deploy-and-launch.md: create the GitHub repo with gh, deploy to Vercel, attach {{domain}}.
From references/deploy-and-launch.md: add the CI workflow, set metadataBase to https://{{domain}}, register the site with Search Console and Bing, add security.txt, the favicon package, and the OG image, then run the validation checklist at the end of that file. Done only when every validation item passes; "the site loads" is not sufficient evidence.
Templates use {{variable}} syntax. Before Phase 7, sweep for missed placeholders:
grep -rn '{{' --include='*.json' --include='*.ts' --include='*.tsx' --include='*.md' --include='*.yml' .A {{name}} left in package.json fails pnpm install (invalid-name error); a {{domain}} left in metadata ships broken OG URLs. Two placeholders in the root package.json template are not gathered in Phase 1: {{ultracite_version}} is copied from the ultracite entry that ultracite init wrote into apps/web/package.json, and {{pnpm_version}} is the output of pnpm --version.
src/ directory. The scaffold uses --no-src-dir; adding src/ later breaks the @/* alias and every shadcn component path.output: "standalone". It is for self-hosting, and on Vercel it stops .next/next-server.js.nft.json being written, so the build compiles every page and then dies in Vercel's onBuildComplete.turbopackFileSystemCacheForDev, turbopackFileSystemCacheForBuild, and memory eviction ('auto') are on by default in 16.3..eslintrc makes the editor disagree with the lefthook pre-commit hook.pnpm run check / pnpm run fix (turbo runs them inside apps/web), or pnpm exec ultracite check from apps/web. Running ultracite, oxlint, or oxfmt from the repo root finds no oxlint.config.ts there and lints with defaults, which disagrees with the hook and skips the shadcn preset. Remaining design-system findings after ultracite fix can go to pnpm exec ultracite fix --codex (or --claude) from apps/web.node_modules, so a tool resolves only in the workspace that declares it. Run oxlint, oxfmt, and @shadcn/lint through pnpm exec inside apps/web (the lefthook root: and the turbo scripts already do), never by adding them to the root.package.json (root holds only turbo, ultracite, and lefthook); they break workspace isolation and turbo cache keys. @shadcn/lint stays in apps/web with oxlint.config.ts. Pin the same ultracite version (≥ 7.12) at the root and in apps/web so config resolution cannot drift.apps/web/ by hand. Scaffold at the root first, then move it in Phase 6; hand-building skips create-next-app defaults (Tailwind wiring, alias config).node --test runs a test file directly, where the @/ alias does not resolve; test files and the modules they import use relative paths, and a test script globs lib/**/*.test.ts rather than naming one file, or a new test is never executed while the gate reports green. The tsc build checks the whole project, test files included: keep them type-clean or add **/*.test.ts to tsconfig.json exclude.| When | Run |
|---|---|
| After deployment, optimise SEO | seo |
| Before launch, audit UI quality | ui-design (Audit mode) |
| Before launch, add motion and animation | ui-animation |
Maintenance only: evals/evals.json contains regression scenarios for changes to this skill; it does not load during a user task.
© mblode, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (references) in skills/scaffold-nextjs of mblode/agent-skills.
Open the folder on GitHubat commit cef4cfa
Scaffold Nextjs next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Scaffold Nextjs this skillmblode/agent-skills | 143 | — | ~2.8k | Automated safety check: Pass | MIT | |
| Create Vechain Dappvechain/x-app-template | 450 | — | ~1.8k | Automated safety check: Pass | MIT | |
| Web FrameworksMicrock/ordinary-claude-skills | 403 | — | ~2.3k | Automated safety check: Pass | MIT | |
| SaaS Scaffolderalirezarezvani/claude-skills | 28k | 1 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Cosscrafter-station/petdex | 4.2k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Ss Learnbitjaru/styleseed | 972 | — | ~1.3k | Automated safety check: Pass | MIT |
vechain/x-app-template
Scaffold a VeChain dApp with Next.js, VeChain Kit, Chakra UI v3, and GitHub Pages deployment.
Microck/ordinary-claude-skills
Build modern full-stack web applications with Next.js (App Router, Server Components, RSC, PPR, SSR, SSG, ISR), Turborepo (monorepo management, task pipelines, remote caching, parallel execution)…
alirezarezvani/claude-skills
Generates complete, production-ready SaaS project boilerplate including authentication, database schemas, billing integration, API routes, and a working dashboard using Next.js 14+ App Router…
crafter-station/petdex
Helps implement coss UI components correctly. An agent skill from crafter-station/petdex.
bitjaru/styleseed
Capture a human-approved UI design lesson as a privacy-minimized local StyleSeed candidate, review it, and prepare an opt-in share package without transmitting project code, prompts, screenshots, or…
pdsuwwz/nextjs-nextra-starter
Distill and apply this repository's Next.js Nextra starter architecture, implemented features, extension points, and migration patterns.
mblode/agent-skills
Implements agent-readiness on public sites and docs from Mintlify Agent Score, AFDocs, Is Agentic, Is It Agent Ready, or url-discovery-bench reports, or from server logs of agents 404ing on guessed…
mblode/agent-skills
Creates and improves portable Agent Skills with a validator, routing scenarios, and evidence-based keep, cut, merge, or retire decisions.
mblode/agent-skills
Recovers decisions, previous fixes, research, and what followed a prompt from past AI conversations, with source evidence.
mblode/agent-skills
Cuts the wait from push to green by measuring a pipeline's critical path from run timestamps, then splitting, sharding, trimming setup and sharing test module state, with a before/after ledger.
mblode/agent-skills
Monitors or repairs an open GitHub PR: CI failures, conflicts, review threads, and merge readiness, reporting state changes.
mblode/agent-skills
Builds and maintains a repo's own verification harness (verify CLI, doctor, worktree isolation, feature map, seed data) and a reproduce-first bug handoff.
Categories
Scaffolds a Next.js turborepo with Blode UI, icons, Ultracite (oxlint/shadcn), workspace hooks, and GitHub/Vercel setup. Scaffold Nextjs is an agent skill from mblode/agent-skills.js turborepo with Blode UI, icons, Ultracite (oxlint/shadcn), workspace hooks, and GitHub/Vercel setup.
Scaffold Nextjs fits situations like: asked to create a Next.js project; bootstrap a turborepo; start a new web app.
Run `npx skills add mblode/agent-skills --skill scaffold-nextjs -a claude-code`. Or copy the skill folder (skills/scaffold-nextjs in mblode/agent-skills) into .claude/skills/scaffold-nextjs in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mblode/agent-skills --skill scaffold-nextjs -a codex`. Or copy the skill folder (skills/scaffold-nextjs in mblode/agent-skills) into .agents/skills/scaffold-nextjs in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mblode/agent-skills --skill scaffold-nextjs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/scaffold-nextjs, .gemini/skills/scaffold-nextjs, .github/skills/scaffold-nextjs and .opencode/skills/scaffold-nextjs in your project.
Going by SKILL.md and its folder, Scaffold Nextjs needs the command-line tools its instructions call (pnpm and node). Our summary lists: Node.js. Compatibility (from SKILL.md): Requires a shell, Git, Node.js, pnpm, and package registry access..
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Scaffold Nextjs is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 10k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Scaffold Nextjs: Create Vechain Dapp (vechain/x-app-template, 450 stars), Web Frameworks (Microck/ordinary-claude-skills, 403 stars), SaaS Scaffolder (alirezarezvani/claude-skills, 28k stars) and Coss (crafter-station/petdex, 4.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
mblode (a GitHub user) maintains it in mblode/agent-skills, which has 143 GitHub stars. The repository holds 28 skills in this directory. The repository was last updated on October 6, 2026.
Source: mblode/agent-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.