Imported from hcrosse/website (
AGENTS.md). Install upstream withnpx skills add hcrosse/website. Copyright stays with the author.
Website
Static Astro website deployed to Cloudflare Pages, with local résumé PDF generation.
Commands
Run from the repository root:
mise install && mise run depsinstalls the locked toolchain and dependencies.mise run setupalso installs the prek Git hook.mise run lintruns every check without modifying files: file hygiene, formatting, Oxlint, Astro type checks, shell scripts, and GitHub workflows.mise run formatapplies every automatic fix.mise run testruns the Bun tests.mise run buildbuilds the site. It requires the private fonts, so CI skips it.mise run auditchecks dependency advisories. It requires registry access.bun run previewserves the built site.bun run resume:pdfregenerates both tracked résumé PDFs. Install Chromium first withbunx --bun playwright install chromium.
Bun runs project commands via bunfig.toml. Preserve the seven-day release-age policies and exact dependency pins.
Source map
src/pages/,src/layouts/,src/components/: routes and templates.src/content/andsrc/content.config.ts: Markdown collections and schemas.src/data/: page metadata and OG image layout.src/plugins/remark-glow.ts: Markdown transformations.src/resume/: résumé content and print layout.scripts/resume/: local rendering harness, PDF validation, and publishing intopublic/.tools/oxlint/anti-slop/: vendored lint rules. Preserve the upstream code and license.public/fonts/: private fonts. Build setup is documented in README.md.
Build output in dist/, .astro/, and .resume/ is generated. Regenerate tracked résumé PDFs only when requested or when résumé output intentionally changes.
Code and prose
Keep the configured lint rules and limits. Discuss removals, relaxed options, and suppressions before changing them.
Use readonly inputs for read-only operations. The Markdown plugin's configured AST allowance permits intentional tree mutation. Keep sequential-await exceptions local to the operations that require ordering.
Use specific types and remove unnecessary assertions. Explain a remaining assertion's checked invariant with SAFETY:. Verify behavior through public interfaces instead of mocking module internals.
Keep prose concise. Describe the shipped behavior, commands, and constraints. Omit task narration, review history, obvious comments, and unnecessary headings. Keep dependency-update history in commits and PRs rather than the README.
