build: migrate from npm to pnpm
Ten git worktrees each carried their own 225 MB node_modules (1.1 GB across five) and paid 11s per `npm ci`. pnpm hardlinks from a shared store: the same five worktrees cost ~250 MB total, and a fresh install is 4s. What changed beyond the mechanical rename: - `overrides` moved to `pnpm-workspace.yaml`. pnpm 11 does not read the `pnpm` field in package.json *or* npm's top-level `overrides`, and it fails silently — the vite/defu/language-server pins would have quietly stopped applying. - Build scripts are blocked by default in pnpm; esbuild and sharp are allowed explicitly via `allowBuilds` (renamed from `onlyBuiltDependencies` in 11). - `packageManager` + `engines` pin the toolchain. - gate.sh rejects a package-lock.json/yarn.lock/bun.lock outright, so an agent running `npm install` out of habit fails loudly instead of building a second, divergent dependency tree. - CI bootstraps pnpm with `npm install --global pnpm@11.25.0` rather than corepack (unbundled as of Node 25) or pnpm/action-setup (this self-hosted act-runner has never run a job; fetching a third-party action is not something to discover on the first one). Two pre-existing CI bugs fixed while in the file: - the gate installed with `npm install --package-lock=false`, which discarded the lockfile the previous session had just fixed. - the visual-regression step imported `playwright`, which is not a dependency, and `visual-regression.mjs` has no compare mode anyway — in CI it overwrote its own baselines and passed unconditionally. Removed with a comment; it comes back when it can diff. The `publish` job is now manual (`workflow_dispatch`). During the migration dist/ holds three HTML files against the live pages branch's ten, so publishing on every push to main would take the site down to a stub. Restore at task 20. HANDOVER.md's incident log still says npm where it describes what happened at the time; that is history, not a missed rename. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -3,16 +3,15 @@
|
||||
A lightweight, presentation-style field guide to AI-assisted engineering.
|
||||
|
||||
It explains how to combine a strong planning/review model with faster workers,
|
||||
reusable skills, subagent handoffs, Git worktrees, and explicit verification.
|
||||
An interactive field kit compares common behavior skills such as
|
||||
`ponytail-lite`, `caveman`, `unlazy`, research, debugging, and review.
|
||||
The skill-forge workflow covers discovery, triggers, package anatomy,
|
||||
progressive instructions, structural validation, and behavioral iteration.
|
||||
The hands-on lab provides a tiny starter project and copy-ready baseline and
|
||||
skill-enabled prompts for a short side-by-side exercise.
|
||||
An interactive model gearbox separates capability tier from reasoning effort
|
||||
across OpenAI, Claude, and Gemini, and every featured skill links to a pinned
|
||||
source with an approval-first installation prompt.
|
||||
reusable skills, subagent handoffs, Git worktrees, and explicit verification. An
|
||||
interactive field kit compares common behavior skills such as `ponytail-lite`,
|
||||
`caveman`, `unlazy`, research, debugging, and review. The skill-forge workflow
|
||||
covers discovery, triggers, package anatomy, progressive instructions,
|
||||
structural validation, and behavioral iteration. The hands-on lab provides a
|
||||
tiny starter project and copy-ready baseline and skill-enabled prompts for a
|
||||
short side-by-side exercise. An interactive model gearbox separates capability
|
||||
tier from reasoning effort across OpenAI, Claude, and Gemini, and every featured
|
||||
skill links to a pinned source with an approval-first installation prompt.
|
||||
|
||||
## Run locally
|
||||
|
||||
@@ -27,23 +26,30 @@ Then open <http://localhost:4173>.
|
||||
Verify the content and interaction contracts with:
|
||||
|
||||
```bash
|
||||
npm run verify
|
||||
pnpm run verify
|
||||
```
|
||||
|
||||
## Project structure
|
||||
|
||||
- `index.html` — default route map and focused chapter navigation
|
||||
- `full-guide/` — the complete bilingual presentation, with responsive audit overrides
|
||||
- `styles.css` / `app.js` — editorial visual system and bilingual field-guide interactions
|
||||
- `full-guide/` — the complete bilingual presentation, with responsive audit
|
||||
overrides
|
||||
- `styles.css` / `app.js` — editorial visual system and bilingual field-guide
|
||||
interactions
|
||||
- `responsive.css` — interactive diagrams and Full HD-to-4K adaptations
|
||||
- `docs/references/` — bundled research sources and notes
|
||||
- `docs/operations-guide.md` — canonical SilverBullet operations and skills guide
|
||||
- `docs/operations-guide.md` — canonical SilverBullet operations and skills
|
||||
guide
|
||||
- `hands-on/starter/` — dependency-free Tiny Tasks exercise
|
||||
- `hands-on/rules/` — dependency-free Guardrails lab; toggles rule sources into the prompt
|
||||
- `hands-on/rules/` — dependency-free Guardrails lab; toggles rule sources into
|
||||
the prompt
|
||||
- `rules/` — bilingual case study of skills, CLI ratchets, Husky, and PR review
|
||||
- `skills/` — reusable design and rules-case-study skills, plus an interactive package anatomy explorer
|
||||
- `skills-review/` — static review desk for submitted skills; its reader vote widget calls the separate `vote-service`
|
||||
- `vote-service/` — small Go API + Kubernetes manifests backing the skills-review vote widget (see `vote-service/README.md`)
|
||||
- `skills/` — reusable design and rules-case-study skills, plus an interactive
|
||||
package anatomy explorer
|
||||
- `skills-review/` — static review desk for submitted skills; its reader vote
|
||||
widget calls the separate `vote-service`
|
||||
- `vote-service/` — small Go API + Kubernetes manifests backing the
|
||||
skills-review vote widget (see `vote-service/README.md`)
|
||||
- `GATES.md` — acceptance ledger for the project
|
||||
|
||||
## Publishing
|
||||
@@ -54,9 +60,9 @@ The Gitea instance has a Pages Server configured to publish a repository’s
|
||||
<https://netcracker.pages.marcospaulo.dev.br/ai-for-dummies/>
|
||||
|
||||
If the URL is not available yet, verify that the `pages` branch exists and that
|
||||
the repository’s `pages` branch exists. Gitea itself does not
|
||||
provide a built-in Pages server; this setup uses the instance’s separate Pages
|
||||
Server and Actions deployment path.
|
||||
the repository’s `pages` branch exists. Gitea itself does not provide a built-in
|
||||
Pages server; this setup uses the instance’s separate Pages Server and Actions
|
||||
deployment path.
|
||||
|
||||
For the complete authoring, verification, publication, rollback, worktree, and
|
||||
skill workflow, see [docs/operations-guide.md](docs/operations-guide.md).
|
||||
@@ -64,9 +70,9 @@ skill workflow, see [docs/operations-guide.md](docs/operations-guide.md).
|
||||
## Reader voting on the skills-review desk
|
||||
|
||||
`skills-review/` is static, so its "which draft would you ship?" vote widget
|
||||
calls a separate stateful service — `vote-service/`, a small Go API on its
|
||||
own pod, one vote per visitor enforced server-side by IP (a MAC address is
|
||||
never visible to a server across the internet, so it cannot be used). See
|
||||
calls a separate stateful service — `vote-service/`, a small Go API on its own
|
||||
pod, one vote per visitor enforced server-side by IP (a MAC address is never
|
||||
visible to a server across the internet, so it cannot be used). See
|
||||
[vote-service/README.md](vote-service/README.md) for the API, the anti-abuse
|
||||
design, and the build/push/deploy steps; `skills-review/index.html` sets
|
||||
`window.SKILLS_REVIEW_VOTE_API` to point at it once deployed.
|
||||
@@ -74,19 +80,21 @@ design, and the build/push/deploy steps; `skills-review/index.html` sets
|
||||
## Research
|
||||
|
||||
See [docs/references/README.md](docs/references/README.md) for official Claude,
|
||||
Codex, and Git documentation. The [additional reading path](docs/references/additional-reading.md)
|
||||
bundles 12 verified articles and guides, including Medium and practitioner sources.
|
||||
See [model routing](docs/references/model-routing.md) for current provider controls
|
||||
and [verified skill sources](docs/references/skill-sources.md) for commit-pinned provenance.
|
||||
Codex, and Git documentation. The
|
||||
[additional reading path](docs/references/additional-reading.md) bundles 12
|
||||
verified articles and guides, including Medium and practitioner sources. See
|
||||
[model routing](docs/references/model-routing.md) for current provider controls
|
||||
and [verified skill sources](docs/references/skill-sources.md) for commit-pinned
|
||||
provenance.
|
||||
|
||||
## Rules and enforcement case study
|
||||
|
||||
Open `/rules/` for a concise walkthrough grounded in the
|
||||
`netcracker/interview` repository. It shows how `AGENTS.md`, project-local
|
||||
skills, machine-readable repo ledgers, a UI contract ratchet, lint-staged,
|
||||
Husky, commitlint, specialist verifier agents, and PR review reinforce one
|
||||
another. Every example links to its source file in Gitea, and the page includes
|
||||
a copy-ready prompt for mapping the same layers in another repository.
|
||||
Open `/rules/` for a concise walkthrough grounded in the `netcracker/interview`
|
||||
repository. It shows how `AGENTS.md`, project-local skills, machine-readable
|
||||
repo ledgers, a UI contract ratchet, lint-staged, Husky, commitlint, specialist
|
||||
verifier agents, and PR review reinforce one another. Every example links to its
|
||||
source file in Gitea, and the page includes a copy-ready prompt for mapping the
|
||||
same layers in another repository.
|
||||
|
||||
The implementation patterns are also packaged as project-local skills in
|
||||
[skills/](skills/README.md). Use `editorial-playbook` when adding chapters or
|
||||
|
||||
Reference in New Issue
Block a user