diff --git a/AGENTS.md b/AGENTS.md
index 855a31f..839043c 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -39,3 +39,17 @@ Every link in `README.md` must be absolute: `https://github.com/modern-python/sq
- **Never use local/inline imports**, tests included. `ruff` catches them.
- Annotate every function argument.
- Docstrings: public API documents the contract; internal helpers get a one-line contract at most.
+
+## Agent skills
+
+### Issue tracker
+
+GitHub issues on `modern-python/sqlalchemy-inbox`, via `gh`. See `docs/agents/issue-tracker.md`.
+
+### Triage labels
+
+The five canonical roles, each label string equal to its name. See `docs/agents/triage-labels.md`.
+
+### Domain docs
+
+Single-context: `CONTEXT.md` and `docs/adr/` at the repo root. See `docs/agents/domain.md`.
diff --git a/README.md b/README.md
index 282aa28..1ddbba1 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,21 @@
-# sqlalchemy-inbox
-
+
+
+
+
+
+
+
+
+[](https://pypi.org/project/sqlalchemy-inbox/)
+[](https://pypi.org/project/sqlalchemy-inbox/)
+[](https://pepy.tech/projects/sqlalchemy-inbox)
+[](https://github.com/modern-python/sqlalchemy-inbox/actions/workflows/ci.yml)
[](https://github.com/modern-python/sqlalchemy-inbox/actions/workflows/ci.yml)
[](https://github.com/modern-python/sqlalchemy-inbox/blob/main/LICENSE)
+[](https://github.com/modern-python/sqlalchemy-inbox/stargazers)
+[](https://github.com/astral-sh/uv)
+[](https://github.com/astral-sh/ruff)
+[](https://github.com/astral-sh/ty)
`sqlalchemy-inbox` records which messages a consumer has processed, in the same PostgreSQL
transaction as the consumer's own writes. A redelivered message finds its marker and is skipped. A
@@ -191,4 +205,10 @@ can't tell whether the commit landed.
## Links
+- [PyPI](https://pypi.org/project/sqlalchemy-inbox)
- [License](https://github.com/modern-python/sqlalchemy-inbox/blob/main/LICENSE)
+
+## Part of `modern-python`
+
+Browse the full list of templates and libraries in
+[`modern-python`](https://github.com/modern-python); see the org profile for the categorized index.
diff --git a/docs/agents/domain.md b/docs/agents/domain.md
new file mode 100644
index 0000000..cc5e7a1
--- /dev/null
+++ b/docs/agents/domain.md
@@ -0,0 +1,34 @@
+# Domain Docs
+
+How the engineering skills should consume this repo's domain documentation when exploring the codebase.
+
+## Before exploring, read these
+
+- **`CONTEXT.md`** at the repo root.
+- **`docs/adr/`**: read ADRs that touch the area you're about to work in.
+
+If any of these files don't exist, **proceed silently**. Don't flag their absence; don't suggest creating them upfront. The `/domain-modeling` skill (reached via `/grill-with-docs` and `/improve-codebase-architecture`) creates them lazily when terms or decisions actually get resolved.
+
+## File structure
+
+Single-context repo:
+
+```
+/
+├── CONTEXT.md
+├── docs/adr/
+│ └── 0001-postgres-only.md
+└── sqlalchemy_inbox/
+```
+
+## Use the glossary's vocabulary
+
+When your output names a domain concept (in an issue title, a refactor proposal, a hypothesis, a test name), use the term as defined in `CONTEXT.md`. Don't drift to synonyms the glossary explicitly avoids.
+
+If the concept you need isn't in the glossary yet, that's a signal: either you're inventing language the project doesn't use (reconsider) or there's a real gap (note it for `/domain-modeling`).
+
+## Flag ADR conflicts
+
+If your output contradicts an existing ADR, surface it explicitly rather than silently overriding:
+
+> _Contradicts ADR-0001 (PostgreSQL only), but worth reopening because…_
diff --git a/docs/agents/issue-tracker.md b/docs/agents/issue-tracker.md
new file mode 100644
index 0000000..b258aeb
--- /dev/null
+++ b/docs/agents/issue-tracker.md
@@ -0,0 +1,45 @@
+# Issue tracker: GitHub
+
+Issues and specs for this repo live as GitHub issues. Use the `gh` CLI for all operations.
+
+## Conventions
+
+- **Create an issue**: `gh issue create --title "..." --body "..."`. Use a heredoc for multi-line bodies.
+- **Read an issue**: `gh issue view --comments`, filtering comments by `jq` and also fetching labels.
+- **List issues**: `gh issue list --state open --json number,title,body,labels,comments --jq '[.[] | {number, title, body, labels: [.labels[].name], comments: [.comments[].body]}]'` with appropriate `--label` and `--state` filters.
+- **Comment on an issue**: `gh issue comment --body "..."`
+- **Apply / remove labels**: `gh issue edit --add-label "..."` / `--remove-label "..."`
+- **Close**: `gh issue close --comment "..."`
+
+Infer the repo from `git remote -v`; `gh` does this automatically when run inside a clone.
+
+## Pull requests as a triage surface
+
+**PRs as a request surface: no.** _(Set to `yes` if this repo treats external PRs as feature requests; `/triage` reads this flag.)_
+
+When set to `yes`, PRs run through the same labels and states as issues, using the `gh pr` equivalents:
+
+- **Read a PR**: `gh pr view --comments` and `gh pr diff ` for the diff.
+- **List external PRs for triage**: `gh pr list --state open --json number,title,body,labels,author,authorAssociation,comments` then keep only `authorAssociation` of `CONTRIBUTOR`, `FIRST_TIME_CONTRIBUTOR`, or `NONE` (drop `OWNER`/`MEMBER`/`COLLABORATOR`).
+- **Comment / label / close**: `gh pr comment`, `gh pr edit --add-label`/`--remove-label`, `gh pr close`.
+
+GitHub shares one number space across issues and PRs, so a bare `#42` may be either: resolve with `gh pr view 42` and fall back to `gh issue view 42`.
+
+## When a skill says "publish to the issue tracker"
+
+Create a GitHub issue.
+
+## When a skill says "fetch the relevant ticket"
+
+Run `gh issue view --comments`.
+
+## Wayfinding operations
+
+Used by `/wayfinder`. The **map** is a single issue with **child** issues as tickets.
+
+- **Map**: a single issue labelled `wayfinder:map`, holding the Notes / Decisions-so-far / Fog body. `gh issue create --label wayfinder:map`.
+- **Child ticket**: an issue linked to the map as a GitHub sub-issue (`gh api` on the sub-issues endpoint). Where sub-issues aren't enabled, add the child to a task list in the map body and put `Part of #