diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..1aa134e --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,91 @@ +# AGENTS.md + +Guidance for coding agents working on the Ghost Assembly organisation site, +. Read `README.md` for the human overview; this file +holds the rules that are not obvious from the code. + +## What gets published + +- GitHub Pages deploys from branch `main`, folder `/docs` (build type "legacy", not an + Actions workflow). Merging to `main` publishes. +- **Everything in `docs/` is public, and nothing outside it is.** Keep tooling, tests, + the design notes and the source logo out of `docs/`. +- `docs/.nojekyll` disables Jekyll. Do not remove it. +- The project docs at `/quickrem/`, `/quicktiler/` and `/quickts/` are published from + those projects' own repositories. Never create `docs/quickrem/` (or any other project + name) here — it would collide with them. + +## Hard constraints + +These are deliberate and the test suite enforces most of them. + +- Hand-written HTML and CSS, no framework, no build step, no bundler. +- No JavaScript on the page. Theme follows `prefers-color-scheme`; navigation is anchors. +- No third-party requests from the page. Fonts and images are self-hosted in + `docs/assets/`. A test fails on any request to another origin. +- WCAG 2.2 AA. axe runs in both colour schemes with the `wcag2a`, `wcag2aa`, + `wcag21aa`, `wcag22aa` and `best-practice` tags, and must report zero violations. +- No horizontal scroll at 360px wide. +- Motion only inside `@media (prefers-reduced-motion: no-preference)`. The hero halo is + the page's one animation; a test checks it runs normally and never under reduced + motion. + +## Design rules + +- Colour tokens live on `:root` in `docs/style.css`, with a light override under + `prefers-color-scheme: light`. Brand stops are sampled from the logo: cyan `#00a8fc`, + blue `#2f5afc`, magenta `#d601fc`; paper `#03030a`. +- `.night` (top bar and hero) re-declares the dark tokens so it stays dark in both + schemes — the logo's silver wordmark is illegible on a light background. Keep it that + way. +- The gradient is decoration only (halo, button border, project rules). Never put text + on it. +- Headings use Orbitron (self-hosted, OFL); body text uses the system font stack. +- Use logical properties (`margin-block-start`, `padding-inline-start`), not physical + ones. + +## Commands + +The toolchain is pinned in `mise.toml`; commands live in the `justfile`. + +```bash +just setup # mise install, npm ci, Playwright's Chromium and Firefox +just run # serve docs/ on http://localhost:8000 +just test # Playwright suite (Chromium and Firefox) +just lint # prettier --check, actionlint, zizmor +just fmt # prettier --write +just ci # lint, test, security, build — exactly what CI runs +just assets # regenerate docs/assets images and assets/avatar.png +``` + +Run `just ci` before claiming a change works. Tests target Chromium and Firefox only; +WebKit is not supported on the maintainer's Fedora base, so do not add it. + +## Adding or changing a project + +A project appears in three places, and all three must change together: + +1. `docs/index.html` — an `
` in the right group. Link Docs to + `https://ghost-assembly.github.io//` only if that project publishes a docs + site; otherwise give it Source only. +2. `tests/site.spec.js` — the `projects` list at the top, so its links are checked. +3. The org profile README, `profile/README.md` in the separate + [Ghost-Assembly/.github](https://github.com/Ghost-Assembly/.github) repository. + +Take summaries from the project's own `README.md` and, for GNOME extensions, the +supported versions from `shell-version` in its `metadata.json`. Do not invent claims. + +## Images + +Every image in `docs/assets/` is derived from `assets/logo-source.png` by +`just assets`. Edit the recipe rather than individual images. The crop offsets in the +recipe are the measured bounds of the emblem and the whole logo in the 1254px source. +`assets/avatar.png` is the GitHub org avatar and is intentionally not published. + +## Change workflow + +- Branch from `main`, open a pull request, and squash-merge once the `ci` job (which + runs `just ci`) passes. +- Conventional Commits, imperative subject, no trailing period. +- Third-party GitHub Actions are pinned by commit SHA with the version in a comment. +- `design/` holds the agreed design notes. Update them when the design changes. diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..43c994c --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1 @@ +@AGENTS.md