Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ Agent-specific entry files (`CLAUDE.md`, `GEMINI.md`, `.github/copilot-instructi

The Makefile is the only executable contract in this repository. CI calls make targets; customize the Makefile, never the workflows. Two exceptions, neither of which puts adopter values in the YAML: runner selection, which GitHub resolves before any make target exists to be called — set the `RUNNER_LABELS` repository variable instead of editing `runs-on` (see `docs/setup/runners.md`); and event handlers that need the token or payload, whose logic lives in `scripts/*.js` behind a thin `github-script` caller and is tested by `make check` (the issue labeler, the PR lint; ADR-0008).

If this repository deliberately differs from the template it was created from, record each difference in `docs/template-drift.md` — the file, what differs, why — and update it in the PR that adds or removes one. A template sync preserves what that list names. (The template itself has no such file.)

| Level | Name | Command | When required |
| --- | --- | --- | --- |
| L0 | static | `make lint` | every PR |
Expand Down
4 changes: 2 additions & 2 deletions docs/template/upgrading.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Repositories created from a template share no git history with it, so updates ar
git remote add template https://github.com/OWNER/TEMPLATE-REPO.git
git config remote.template.tagOpt --no-tags
git fetch template '+refs/tags/*:refs/template-tags/*'
git diff HEAD refs/template-tags/vX.Y.Z -- .github/ skills/ Makefile scripts/
git diff HEAD refs/template-tags/vX.Y.Z -- .github/ skills/ Makefile scripts/ AGENTS.md
```

The template's tags go under `refs/template-tags/`, never `refs/tags/`: the
Expand Down Expand Up @@ -53,7 +53,7 @@ Repositories created from a template share no git history with it, so updates ar
`git tag vX.Y.Z <sha>`.

3. Cherry-pick what you want by path. Good candidates: `skills/`, `.github/workflows/` (the labeler workflow only calls code that lives elsewhere — take them together with `scripts/issue-labeler.js`, `scripts/pr-lint.js`, their `*.test.js`, `scripts/check-node-tests.sh`, `scripts/check-label-forms.sh` and the two `check:` lines in the Makefile; `make check` fails if a workflow requires a `scripts/*.js` that is not there; if you graft the `Lint the pull request` step into a customized `ci.yml` instead of taking the file, take the `ci` job's `permissions:` block too — `issues: read` and `pull-requests: read` are what let the lint read the linked issue on a private repository), `scripts/check-*.sh` (rarely customized locally). Careful candidates: `Makefile` (your `test` target lives there), `.github/labels.yml` (your renamed `area:*` labels), `AGENTS.md` (your conventions).
4. Apply as a normal PR through your own CI. Never bulk-overwrite customized files.
4. Apply as a normal PR through your own CI. Never bulk-overwrite customized files — see the drift-file rule in [AGENTS.md](../../AGENTS.md#build-and-validation).
5. Re-run `scripts/bootstrap.sh` if the update changed `labels.yml` or the ruleset — it syncs GitHub-side state to the files.

## What never gets pulled
Expand Down
Loading