--- // /full-guide/ — assembled from typed guide collections and the task 10 blocks. // This route deliberately never imports the legacy full-guide HTML: task 20 removes // that tree, and both locales must be present in the server-rendered document. import { getCollection } from 'astro:content'; import BaseLayout from '../layouts/BaseLayout.astro'; import FleetDiagram from '../components/blocks/FleetDiagram.astro'; import HandoffTable from '../components/blocks/HandoffTable.astro'; import PhasePanel from '../components/blocks/PhasePanel.astro'; import RouteTable from '../components/blocks/RouteTable.astro'; import SkillPackage from '../components/blocks/SkillPackage.astro'; import WorktreeMap from '../components/blocks/WorktreeMap.astro'; import CopyPrompt from '../components/islands/CopyPrompt.astro'; import GuideSelector from '../components/islands/GuideSelector.astro'; import LanguageToggle from '../components/islands/LanguageToggle.astro'; import ReadingProgress from '../components/islands/ReadingProgress.astro'; import '../../styles.css'; import '../../full-guide/audit.css'; type Entry = { data: T }; const toRecord = (entries: Entry[]) => Object.fromEntries(entries.map(({ data }) => [data.id, data])); const [ phaseEntries, workerEntries, treeEntries, routeEntries, providerEntries, effortEntries, skillFileEntries, workflowEntries, commonSkillEntries, promptEntries, installEntries, ] = await Promise.all([ getCollection('phases'), getCollection('workers'), getCollection('trees'), getCollection('routes'), getCollection('providers'), getCollection('efforts'), getCollection('skillFiles'), getCollection('skillWorkflow'), getCollection('commonSkills'), getCollection('handsOnPrompts'), getCollection('skillInstallPrompts'), ]); const phases = toRecord(phaseEntries); const workers = toRecord(workerEntries); const trees = toRecord(treeEntries); const routes = toRecord(routeEntries); const providers = toRecord(providerEntries); const efforts = toRecord(effortEntries); const skillFiles = toRecord(skillFileEntries); const skillWorkflow = toRecord(workflowEntries); const commonSkills = toRecord(commonSkillEntries); const sortedCommonSkills = Object.values(commonSkills).sort((a, b) => a.number.localeCompare(b.number), ); const handsOn = promptEntries.find(({ data }) => data.id === 'tiny-tasks')?.data; const install = installEntries.find(({ data }) => data.id === 'install')?.data; if (!handsOn || !install) throw new Error('full-guide content collections are incomplete'); // Selector chrome is page-specific, so it remains an inline bilingual constant. const labels = { context: { en: 'context: isolated', pt: 'contexto: isolado' }, owner: { en: 'OWNER', pt: 'RESPONSÁVEL' }, reasoningLoad: { en: 'REASONING LOAD', pt: 'CARGA DE RACIOCÍNIO' }, officialSource: { en: 'OFFICIAL SOURCE ↗', pt: 'FONTE OFICIAL ↗' }, skillFileHint: { en: 'select another file to explore', pt: 'clique em outro arquivo para explorar', }, workflow: { question: { en: 'QUESTION', pt: 'PERGUNTA' }, action: { en: 'ACTION', pt: 'AÇÃO' }, artifact: { en: 'ARTIFACT', pt: 'ARTEFATO' }, proof: { en: 'PROOF', pt: 'PROVA' }, }, commonSkill: { whenToUse: { en: 'WHEN TO USE', pt: 'QUANDO USAR' }, example: { en: 'EXAMPLE', pt: 'EXEMPLO' }, watchOut: { en: 'WATCH OUT', pt: 'CUIDADO' }, source: { en: 'GITHUB SOURCE ↗', pt: 'FONTE NO GITHUB ↗' }, }, }; const builderSteps: Record< string, { title: { en: string; pt: string }; tagline: { en: string; pt: string } } > = { observe: { title: { en: 'Observe', pt: 'Observar' }, tagline: { en: 'find repeated friction', pt: 'encontre atrito repetido' }, }, trigger: { title: { en: 'Define trigger', pt: 'Definir gatilho' }, tagline: { en: 'route precisely', pt: 'roteie com precisão' }, }, scaffold: { title: { en: 'Choose anatomy', pt: 'Escolher anatomia' }, tagline: { en: 'only needed files', pt: 'apenas arquivos necessários' }, }, write: { title: { en: 'Write guidance', pt: 'Escrever orientação' }, tagline: { en: 'decisions, not trivia', pt: 'decisões, não trivialidades' }, }, validate: { title: { en: 'Validate', pt: 'Validar' }, tagline: { en: 'test real behavior', pt: 'teste comportamento real' }, }, }; const selectorData = { phases, workers, trees, routes, providers, efforts, skillFiles, skillWorkflow, commonSkills, labels, }; const workerCards = [ { id: 'ui', label: 'UI', strong: { en: 'Component and visual states', pt: 'Componentes e estados visuais' }, code: 'agent/ui', }, { id: 'tests', label: 'TEST', strong: { en: 'Acceptance cases', pt: 'Casos de aceitação' }, code: 'agent/tests', }, { id: 'docs', label: 'DOCS', strong: { en: 'Guide and examples', pt: 'Guia e exemplos' }, code: 'agent/docs', }, ]; const treeBranches = [ { id: 'ui', label: { en: 'UI AGENT', pt: 'AGENTE DE UI' }, strong: 'agent/ui', small: { en: '3 files · working', pt: '3 arquivos · trabalhando' }, tone: 'ui', }, { id: 'tests', label: { en: 'TEST AGENT', pt: 'AGENTE DE TESTES' }, strong: 'agent/tests', small: { en: '8 checks · ready', pt: '8 verificações · pronto' }, tone: 'tests', }, { id: 'docs', label: { en: 'DOCS AGENT', pt: 'AGENTE DE DOCS' }, strong: 'agent/docs', small: { en: '2 pages · review', pt: '2 páginas · revisão' }, tone: 'docs', }, ]; const base = import.meta.env.BASE_URL; ---
A field guide
review submissions ↗AI ENGINEERING 01 / 2026

A presentation for humans who ship

AI for
dummies.

You do not need an army of models. You need a system: one mind to frame the work, several hands to execute it, and a clean boundary between every task.

01strong model
for ambiguity
03bounded workers
in parallel
iterations
with evidence

Read this as a route map, not a prompt recipe.

RULE ZEROStrong model for ambiguity.
Light model for bounded work.
needs to happen.', pt: 'Decide o que
precisa acontecer.', }, code: 'Opus / reasoning', }} workers={workerCards} />
{workers.ui.en[0]}{workers.ui.en[1]}{workers.ui.en[2]}

The orchestrator preserves intent, writes small contracts, and gathers results that can be verified. It does not need to type every line.

01Context soup

Every worker reads everything. Nobody knows which facts are load-bearing.

02Branch collision

Two agents touch the same checkout. The fastest path becomes conflict resolution.

03Confident drift

The diff is polished, but no one checks whether it solved the original problem.

The subagent loop

Click a phase.
See the handoff.

Delegation means moving one bounded task into a smaller context—not giving away responsibility.

Git worktrees

One branch
per hand.

A worktree is another directory linked to the same repository. Each agent gets its own checkout and index; history remains shared.

Select a node to inspect its checkout, owner, and next action.

repository topology 4 checkouts
{labels.owner.en}{trees.main.owner.en}
CHECKOUT{trees.main.path}

{trees.main.note.en}

{trees.main.command}

Model routing

Do not pay for
reasoning where
you need rhythm.

Choose a job to see why the model profile changes.

{labels.reasoningLoad.en} · {routes.plan.score}{routes.plan.label.en}

{routes.plan.why.en}

Two separate knobs

Choose the engine.
Then choose the gear.

A stronger model changes the capability ceiling. Higher reasoning effort gives that model more room to work. Start with the lightest combination that passes your real checks, then move one knob at a time.

REASONING / THINKING
{efforts.medium.en[0]}

{efforts.medium.en[1]}

{providers.openai.config}
ROUTING RULE Use strong models for ambiguity and judgment. Use lighter models for bounded execution. Raise effort only when evaluation shows a gain.

{ /* Under Portuguese the legacy page paints the long skill sentence here, not "Skills": its `.skills > div:first-child > p` selector also matches this eyebrow and overwrites it. Reproduced on purpose -- see .agents/rules/content-i18n.md. */ } Skills

Write the right way
once.

A skill is a reusable procedure. It can carry instructions, references, scripts, and assets. It is not magical memory, and it does not replace acceptance criteria.

01 / trigger clearly 02 / load detail on demand 03 / return evidence
{skillFiles.skill.icon}
{skillFiles.skill.title}

{skillFiles.skill.en}

{labels.skillFileHint.en}
name: review-ui · check focus, mobile, reduced motion · run verification · return evidence

The skill forge

Teach the decision.
Keep the context light.

Do not package everything you know. Capture the non-obvious choices that repeatedly improve an outcome, then prove the skill changes behavior.

{skillWorkflow.observe.number}{labels.workflow.question.en}

{skillWorkflow.observe.title.en}

{skillWorkflow.observe.question.en}
{labels.workflow.action.en}

{skillWorkflow.observe.action.en}

{labels.workflow.artifact.en}{skillWorkflow.observe.output.en}
{labels.workflow.proof.en}{skillWorkflow.observe.proof.en}
AFTER REAL USE
observe failuresharpen one ruleretest behaviorkeep it narrow

The field kit

Different jobs.
Different instincts.

A skill changes how an agent approaches work. Some shape communication. Others enforce research, debugging, review, or completion discipline. Select one to inspect its operating rule and verified source.

{ /* getCollection's order is not the deck's order. Sort by the card number so the tabs stay 01..07 as the legacy page has them, instead of shifting between builds. */ sortedCommonSkills.map((skill) => ( )) }
{commonSkills.ponytail.number}{commonSkills.ponytail.kind.en}

{commonSkills.ponytail.title}

{commonSkills.ponytail.rule.en}
{labels.commonSkill.whenToUse.en}

{commonSkills.ponytail.use.en}

{labels.commonSkill.example.en}

{commonSkills.ponytail.example.en}

{labels.commonSkill.watchOut.en}

{commonSkills.ponytail.caution.en}

{labels.commonSkill.source.en}
ONE PRACTICAL LOADOUT
PLAN unlazy BUILD ponytail-lite DEBUG diagnosing-bugs REPORT caveman
INSTALL PACKAsk your coding agent to verify, install, and validate the skills.
{install.en}
Review every source before installation. Existing local skills must be preserved.

Tiny Tasks lab

Same task.
Better operating system.

Start with a deliberately incomplete static task board. Run one prompt as written, reset, then run the skill-enabled version. Compare diff size, verification evidence, and unnecessary complexity.

THE MISSING FEATUREAdd All / Open / Done filters that survive reload and browser navigation.
STACK HTML · CSS · JavaScript DEPENDENCIES none FILES 3
RUN AGood prompt
{handsOn.en.basic}
Clear context · constraints · acceptance · evidence
RUN BGood prompt + skills
{handsOn.en.skills}
Same contract · explicit working methods · stronger proof
COMPARE THE RUNS
01 Files changed
02 New dependencies
03 Checks actually run
04 Evidence returned

Checks become evidence

Three layers.
Run each one alone.

Run a gate on its own line, print its exit code, attach the output. The result is the deliverable.

01 · STATIC

Lint and types

Format, lint, type-check. Fast and scoped to one file. Run on every save.

pnpm lint; echo "lint=$?" pnpm typecheck; echo "typecheck=$?"
02 · BEHAVIOR

Unit and contract

Tests that repeat. Run before claiming done.

pnpm test; echo "test=$?" cd services/api && go test ./...
03 · INTEGRATION

Real UI and API

Drive the actual UI, API, or browser. Slower and flakier — only this catches mobile overflow and a missing 404.

pnpm check:ui; echo "ui=$?" TURBO_FORCE=true pnpm e2e
FOUR WAYS A GREEN REPORT IS FALSE
1
Pipe a gate

tail, grep, or head hide the real exit code — a pipeline returns the last command's status.

2
Swallow a rejection

A silent {'.catch(() => {})'} hides a panic, an upstream limit, or a partial failure.

3
Trust the cache

Turbo caches results. A gate that "passes" may not have run — use TURBO_FORCE=true.

4
Skip the third layer

Lint and unit can both be green while the page breaks on mobile and the API never returns 404.

RUN IT YOURSELF · two labs, under 10 minutes each

Go deeper with official documentation, production case studies, Medium, and practitioner workflows. Rules and enforcement case study → Skills review desk → Primary references → 12-part reading path →

Prefer a focused chapter? Start with the route map, then jump directly to models, agents and worktrees, skill creation, rules, or the skills review desk.