40 lines
1.4 KiB
Markdown
40 lines
1.4 KiB
Markdown
# 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
|