580293867d
Deletes the pre-Astro pages, scripts, and stylesheets that the migration replaced, and moves the ones it did not replace out of the way. Deleted (32 files): app.js, responsive.css, landing.css, rules/app.js, rules/styles.css, skills/app.js, the ten route index.html files, and the root hands-on/ copy, which is byte-identical to public/hands-on/ -- the one the build actually ships. Moved to legacy/ (12 files): styles.css, full-guide/audit.css, chapters.css, skills/styles.css, skills-review/styles.css, skills-review/change-lens.css, and the skills-review/app.js module graph. These are not dead. The Astro pages import them and the build fails without them, which the plan had not accounted for. They go to legacy/ rather than src/ because check-tokens.mjs sweeps src, and these files are full of raw hex and unnamed breakpoints: moving one into src/ should mean migrating it to tokens in the same change, not adding a scan exclusion. The prettier, stylelint, and eslint ignore lists that already named these files at their old paths now name legacy/ instead. verify.mjs no longer reads app.js. The 102 Portuguese strings were extracted from its translations.pt object before deletion into .agents/snapshots/full-guide-pt.json -- a legacy capture, not a snapshot of the Astro build, so the assertion still compares against an independent source. The brace-matching helper's assertion is replaced by one that rejects an empty snapshot entry, without which trimming the snapshot would make the presence check pass vacuously. Count stays at 84. audit-ui.mjs reads the ten pages from dist/ and resolves Astro's base-absolute hrefs against it. Before deleting anything, rendered-text-diff was run across all ten routes plus both Portuguese pages: every one at parity, 0 missing and 0 extra. That comparison is not repeatable once the legacy files are gone. computed-style-diff on /full-guide/ stays at 32 differences, so the moves are style-neutral. Docs updated to match: README, AGENTS.md, GATES.md, the architecture context, the operations guide's lab instructions, and the three skills that told you to serve the vanilla site. Publishing is not part of this commit. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
92 lines
5.0 KiB
Markdown
92 lines
5.0 KiB
Markdown
# AGENTS.md
|
|
|
|
Entry point for any AI agent or new engineer working in this repository. Read
|
|
this file, then follow the links you need. Full map:
|
|
[`.agents/ORCHESTRATOR.md`](.agents/ORCHESTRATOR.md).
|
|
|
|
## What is this project?
|
|
|
|
**"AI For Dummies" — a bilingual (EN/PT-BR) presentation and workshop about
|
|
working with coding agents: model routing, subagents, git worktrees, skills,
|
|
rules, and verification.** It is published as a static site on a self-hosted
|
|
Gitea Pages Server, and it doubles as its own teaching artifact: the hands-on
|
|
labs are dependency-free HTML/CSS/JS that workshop attendees point an agent at.
|
|
|
|
- **Stack**: Astro, static output, no runtime dependencies. The migration
|
|
recorded in [`plans/astro-refactor/`](plans/astro-refactor/README.md) is
|
|
complete; the hand-written pages it replaced are gone. What remains unmigrated
|
|
is the editorial CSS and the review-desk modules under `legacy/`, still
|
|
imported by the pages that need them.
|
|
- **Languages**: English and Brazilian Portuguese, toggled client-side
|
|
- **Companion service**: `vote-service/` (Go + Kubernetes) — separate lifecycle,
|
|
see its own README
|
|
|
|
## Essential commands
|
|
|
|
```bash
|
|
pnpm run dev # http://localhost:4321/ai-for-dummies/
|
|
pnpm run build # writes dist/ — every check below reads it
|
|
bash .agents/scripts/gate.sh # the full gate: check, build, verify, audit, tokens
|
|
pnpm run verify # content + interaction contracts (scripts/verify.mjs)
|
|
node scripts/audit-ui.mjs # responsive / no-external-dependency audit
|
|
node scripts/build-skill-review.mjs # regenerate skill-reviews/improved/ from src/content/reviews/
|
|
```
|
|
|
|
`pnpm run verify` is not a formality. It is a set of 84 string-token assertions
|
|
that pin the site's real content and interactions, read from the built output.
|
|
**A refactor that "passes" by deleting assertions has failed.** See
|
|
[`.agents/context/verification.md`](.agents/context/verification.md).
|
|
|
|
## Publishing
|
|
|
|
`main` is the source of truth. The `pages` branch is what the Gitea Pages Server
|
|
actually serves, and it now carries **build output**, not a copy of `main`'s
|
|
tree. The publish job force-pushes `dist/` over it. The full procedure is in
|
|
[`docs/operations-guide.md`](docs/operations-guide.md); read
|
|
[`.agents/context/publishing.md`](.agents/context/publishing.md) before changing
|
|
it.
|
|
|
|
## Never touch
|
|
|
|
- `public/hands-on/starter/` and `public/hands-on/rules/` — **lab fixtures.**
|
|
The exercise _is_ that they are dependency-free vanilla HTML/CSS/JS an
|
|
attendee can hand to an agent. Componentizing them destroys the lesson. They
|
|
ship as static assets.
|
|
- `submitted-skills/` — other people's submitted work, reproduced verbatim
|
|
- `skill-reviews/improved/` — generated; edit `src/content/reviews/*.md` instead
|
|
- `vote-service/` — separate deploy lifecycle; do not fold into the site build
|
|
- `dist/`, `node_modules/` — build output, never committed
|
|
- `pnpm-lock.yaml` — **committed, but never hand-edited.** Change it only as a
|
|
side effect of `pnpm install`. Every worktree spins up with
|
|
`pnpm install --frozen-lockfile`, which fails outright without it.
|
|
- This project is **pnpm-only** (`packageManager` in `package.json` pins the
|
|
version). Never run `npm install` or `bun install` here — the gate rejects a
|
|
`package-lock.json`, `yarn.lock`, or `bun.lock` outright. pnpm settings live
|
|
in `pnpm-workspace.yaml`, **not** in a `pnpm` field in `package.json`; pnpm 11
|
|
ignores that field silently.
|
|
|
|
## Rules
|
|
|
|
Binding. Read the one that covers what you are about to do.
|
|
|
|
| Rule | When |
|
|
| ---------------------------------------------------------- | ------------------------------------ |
|
|
| [`astro.md`](.agents/rules/astro.md) | any `.astro` file |
|
|
| [`theming.md`](.agents/rules/theming.md) | any colour, font, or spacing value |
|
|
| [`componentization.md`](.agents/rules/componentization.md) | creating or splitting a component |
|
|
| [`animation.md`](.agents/rules/animation.md) | any motion, transition, or transform |
|
|
| [`accessibility.md`](.agents/rules/accessibility.md) | any interactive element |
|
|
| [`content-i18n.md`](.agents/rules/content-i18n.md) | any user-visible string |
|
|
| [`code-style.md`](.agents/rules/code-style.md) | always |
|
|
| [`git-worktrees.md`](.agents/rules/git-worktrees.md) | starting or finishing a task |
|
|
|
|
## The one thing to understand first
|
|
|
|
This site's styling is **not** a design system today. Three near-duplicate
|
|
palettes have drifted apart (`--ink` exists as `#172f42`, `#122534`, and
|
|
`#173044`), and the `@font-face` rule in `styles.css:1` is malformed, so the
|
|
intended Manrope/DM Mono typography has never actually rendered. "Maintain the
|
|
same styles" therefore needs a deliberate decision, not a copy-paste. Read
|
|
[`.agents/context/design-system.md`](.agents/context/design-system.md) before
|
|
touching any CSS.
|