# Task 05 — Guide content out of app.js

**Agent**: `content-i18n-migrator` · **Model**: MiniMax-M3 **Depends on**: 04 ·
**Parallel with**: 06 · **Blocks**: 15 **Worktree**:
`.agents/scripts/worktree.sh start 05 content-guide`

## Goal

Every `{ en, pt }` string in `app.js` lives in `src/content/guide/`,
byte-identical.

## Scope

`src/content/guide/**`. Do **not** delete anything from `app.js` yet — task 15
removes it once the page consumes the collection.

## Steps

1. `node .agents/scripts/extract-strings.mjs app.js > /tmp/before.json` (~50
   pairs across `phases`, `handsOnPrompts`, `modelGuide`, `skillSources`,
   `skillInstallPrompts`).
2. Move them into the collection. **Copy mechanically — never retype.** These
   are hand-written translations with deliberate tone
   (`'Transforme ambiguidade em trabalho'`); retyping introduces drift nobody
   catches until a Portuguese speaker reads it.
3. `node .agents/scripts/extract-strings.mjs src/content/guide/ > /tmp/after.json`
4. `diff /tmp/before.json /tmp/after.json` → **must be empty**.

## Watch for

`handsOnPrompts` values are multi-line prompt strings built with `.join('\n')`.
Preserve the exact line breaks and leading `-` bullets: they are copy-pasted by
workshop attendees into an agent, and a mangled prompt breaks the exercise.

## Done when

- [ ] String diff empty
- [ ] `astro check` passes; both locales present on every entry
- [ ] `app.js` still untouched and the site still works
