# 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