This repository powers the Open Modeling Foundation science gateway, implemented with Hugo and Docsy, and published on GitHub Pages.
This document is the canonical source of truth for agent behavior in this repository.
For a contributor-facing overview, see the Agent Harness section in README.md.
- This file defines the shared operating contract for all AI agents.
- If guidance in
.github/copilot-instructions.mdorCLAUDE.mddiffers, follow this file. README.mdprovides contributor-facing context; this file remains authoritative for agent behavior.- Agent-specific files should provide adapter notes only and link back here.
Agent-generated artifacts must be written under .agent/.
- Working memory:
.agent/working-memory/ - Checkpoints:
.agent/checkpoints/ - Handoffs:
.agent/handoffs/
- Read this file before starting substantial work.
- Record in-progress context in
.agent/working-memory/session.md. - For long tasks, save progress snapshots in
.agent/checkpoints/. - Before pausing or transferring work, create a handoff in
.agent/handoffs/. - When a user requests a cleanup pass, review and update this file (
AGENTS.md) as part of that pass, even if the update is only a brief synchronization note.
- Run project commands in containers only; do not assume local
go,hugo,node, ornpmare installed on the host. - Use Docker Compose with the
hugoservice for build/test/update tasks (for example:docker compose run --rm --no-deps --entrypoint sh hugo -c '<command>'). - Prefer the shared Hugo production build entrypoint
.github/scripts/build-site.shfor render operations used by CI and local production-style checks. - Use
make renderfor the local production-style render path andmake servefor local hot-reload preview. - Use
make publications-jsonto regeneratedata/publications.jsonfromassets/bibliographies/publications.bibwhen bibliography data changes. - Use
make render-site-isolatedwhen another local Hugo container/session is running or host lock/permission conflicts are present; this runs in a one-off isolated container workspace and reuses the host cache directory.hugo_cachefor module/cache reuse. - If a command cannot run in the current container setup, document the limitation and propose a container-based alternative.
- Keep notes concise, factual, and actionable.
- Include file paths, decisions, and validation outcomes.
- Do not store secrets, tokens, or private credentials.
- Use UTC timestamps in checkpoints and handoffs when possible.
- Prefer base-path-safe asset references (
relURL, relative paths, or equivalent template-aware indirection) over hardcoded root-relative paths like/images/...or/fonts/...for deployable site assets. - Hugo module mounts and the
staticcomponent: whenever any mount inhugo.yamltargets thestaticcomponent (even a partial path likestatic/bibliographies), Hugo drops the implicitstatic/ → static/default mount. Always include an explicit- source: "static" / target: "static"entry when defining custom mounts, orpublic/will silently omit everything understatic/(fonts, images, CNAME, etc.). - Font
@font-facedeclarations belong in a Hugo partial (e.g.layouts/partials/hooks/head-end.html) rather than in SCSS, because Hugo template functions such asrelURLare not available inside thetoCSSpipeline.
- Hugo (Docker build arg):
0.161.1(Dockerfile) - UV (Docker build arg):
0.11.16(Dockerfile) - BibTeX parser floor:
>=2.0.0b9(PEP 723 inline metadata in.github/scripts/bibtex_to_json.py— single source of truth) - Docsy module:
v0.14.3(go.modandDockerfile) - Go toolchain declaration:
1.18(go.mod) - npm package manifest version:
1.0.0(package.json) - Frontend/build packages in
package.jsonuse semver ranges (^), including:bootstrap^5.3.3@popperjs/core^2.11.8autoprefixer^10.2.5postcss^8.5.3postcss-cli^11.0.0
- Checkpoints:
checkpoint-YYYYMMDD-HHMM.md - Handoffs:
handoff-YYYYMMDD-HHMM.md
- Checkpoint template:
.agent/checkpoints/checkpoint-template.md - Handoff template:
.agent/handoffs/handoff-template.md