Two islands extracted from app.js for the full-guide migration (15d):
- CopyPrompt: one instance per button. Reads #<target>.textContent,
copies via navigator.clipboard.writeText with a document.execCommand
textarea fallback (kept because workshop venues serve the site over
plain HTTP, where the clipboard API is undefined — deleting the
fallback silently breaks the lab). Writes a bilingual result string
to the page-owned #copy-status live region and swaps the <span> to
COPIED/COPIADO for 1800ms. Language comes from document.documentElement
.lang via a MutationObserver, so 15c's toggle stays the single
mechanism.
- ReadingProgress: renders .reading-progress span and attaches a passive
scroll listener that mirrors the existing app.js line 406 handler.
Both scripts use <script is:inline> with a wire-once window flag, so a
page that mounts the same island multiple times still ends up with
exactly one set of listeners.
Not done in this task:
- app.js copyPrompt and reading-progress lines stay intact (verify.mjs
still asserts the copyPrompt token against app.js; the verification-
engineer owns that swap, scheduled for 15d)
- src/pages/full-guide.astro (15d)
- verify.mjs, tokens.css, src/content/config.ts
- reformat of app.js
For 15d:
- import CopyPrompt three times (one per target: prompt-install-skills,
prompt-basic, prompt-skills)
- render <p id="copy-status" role="status" aria-live="polite"></p>
once on the page; the island writes to it
- import ReadingProgress and place it where the current .reading-
progress div sits
- prompt bodies for the <pre><code id="prompt-..."> elements come
from src/content/{handsOnPrompts,skillInstallPrompts}; verified
byte-equal to app.js — what lands on the clipboard is whatever
those elements contain
For 15c:
- language mechanism is document.documentElement.lang via MutationObserver;
do not invent a parallel signal
Co-Authored-By: Claude Code <noreply@anthropic.com>
AI For Dummies
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.
Run locally
This is a dependency-free static site:
python3 -m http.server 4173
Then open http://localhost:4173.
Verify the content and interaction contracts with:
pnpm run verify
Project structure
index.html— default route map and focused chapter navigationfull-guide/— the complete bilingual presentation, with responsive audit overridesstyles.css/app.js— editorial visual system and bilingual field-guide interactionsresponsive.css— interactive diagrams and Full HD-to-4K adaptationsdocs/references/— bundled research sources and notesdocs/operations-guide.md— canonical SilverBullet operations and skills guidehands-on/starter/— dependency-free Tiny Tasks exercisehands-on/rules/— dependency-free Guardrails lab; toggles rule sources into the promptrules/— bilingual case study of skills, CLI ratchets, Husky, and PR reviewskills/— reusable design and rules-case-study skills, plus an interactive package anatomy explorerskills-review/— static review desk for submitted skills; its reader vote widget calls the separatevote-servicevote-service/— small Go API + Kubernetes manifests backing the skills-review vote widget (seevote-service/README.md)GATES.md— acceptance ledger for the project
Publishing
The Gitea instance has a Pages Server configured to publish a repository’s
pages branch under pages.marcospaulo.dev.br. The intended site address is:
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.
For the complete authoring, verification, publication, rollback, worktree, and skill workflow, see 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
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.
Research
See docs/references/README.md for official Claude, Codex, and Git documentation. The additional reading path bundles 12 verified articles and guides, including Medium and practitioner sources. See model routing for current provider controls and verified skill sources 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.
The implementation patterns are also packaged as project-local skills in
skills/. Use editorial-playbook when adding chapters or
sections, and rules-case-study when turning repository controls into a
source-linked teaching page.