Imported from willypaz243/willypaz243.github.io (
AGENTS.md). Install upstream withnpx skills add willypaz243/willypaz243.github.io. Copyright stays with the author.
AGENTS.md
Single-page portfolio built with Astro 5 — static HTML output, no framework.
Commands
pnpm install # install / refresh lockfile
pnpm run dev # dev server → http://localhost:4321
pnpm run build # production build → dist/
pnpm run preview # live-preview the build output
pnpm run astro check # type-checking via @astrojs/strict mode
pnpm run format # Prettier — `prettier --write .`
CI verification (run in order): astro check → build
Project structure
src/
assets/ Images, fonts, static SVGs
components/ Reusable UI blocks (Hero, Projects, Skills, Experience, ThemeToggle, DesktopNav)
data/profile.json Source of truth — bio, skills, projects (imported in page frontmatter)
layouts/Layout.astro head, nav shell, footer
pages/index.astro Only page — composes all sections
public/ Static assets served as-is (favicon.svg, OG images)
- Single
pages/index.astro— the entire site. - Dark/light mode toggled via
class="dark"on<html>inLayout.astro. - All data flows through
data/profile.json; change it and all sections update.
Code style
- TypeScript strict (via
extends: "astro/tsconfigs/strict") - Prettier — single quotes, no semicolons, 2-space indent.
- Component convention: functional components, explicit prop types, descriptive filenames (
kebab-case). - CSS: Tailwind utility-first. Avoid arbitrary values; extract into theme tokens when reused.
- Do not override Prettier/Tailwind defaults — keep it minimal.
Gotchas
- Always use pnpm. Never npm —
package-lock.jsonis removed. Usepnpm@10+. - frozen-lockfile enforced. Adding/removing deps → run
pnpm install, commit the updated lockfile, then push. CI fails withERR_PNPM_OUTDATED_LOCKFILEotherwise. - native build approvals:
pnpm-workspace.yamlhasallowBuildsfor esbuild and sharp. New native packages may needpnpm approve-builds.
Testing
No test framework configured. CI only runs astro check + build.
Git workflow
- Branches:
feature/<description>orfix/<description> - Commits: Conventional Commits (
feat:,fix:,style:,refactor:,docs:,chore:) - PR title format:
[section] <description>(e.g.[Hero] add animated entrance)
Boundaries
- ✅ Always: Run
astro check+buildbefore committing; keepprofile.jsonas the single source of truth. - ⚠️ Ask first: Adding new dependencies, changing the layout skeleton, modifying CI workflow.
- 🚫 Never: Commit secrets/API keys, edit
node_modules/, or convert to a framework (React/Svelte/etc.) — this is intentionally framework-free.