Personal portfolio site (ES/EN) -- data-driven from public/cv.{es,en}.json through typed loader into Astro 5 components.
- MUST run
pnpm run validatebefore considering any task complete (runs type-check + lint + test + build) - Uses pnpm. Run
pnpm installafter dependency changes. Cloudflare Pages is configured to use pnpm - MUST keep
|| truein"prepare": "husky || true". Without it, CI environments fail - NEVER use
!non-null assertions. Biome flagsnoNonNullAssertion. Use type narrowing orassertDefined()helpers - MUST update documentation (README.md, CHANGELOG.md, docs/) when adding/removing features, changing data flow, or modifying project structure
astro checkfalse positives for cv: Reportscvas unused in redirect pages — the import IS used in frontmatter before an earlyreturn- Windows
core.autocrlfphantom files: Biome enforces LF line endings. Git'score.autocrlfcreates phantom "modified" files. Check actual changes withgit diff --ignore-cr-at-eol --name-only - lint-staged scoped to
src/: Avoids running Biome on root config files - i18n route duplication:
src/pages/index.astroandsrc/pages/en/index.astroare intentionally identical -- Astro injects differentcurrentLocaleper route