canonical-hours
AGENTS.md0 starsChanged 4 months agoApache-2.0View on GitHub
This project tracks all work as beads, stored in .beads/ (a Dolt database, or a SQLite beads.db for single-user repos) and accessed through rsry — the CLI or the rsry_* MCP tools. Rosary owns the store and reads/writes it in-process over the Dolt/SQLite wire; it never invokes the bd CLI (ADR-0014). Do not run bd. The rsry_* MCP tools mirror these (rsry_list_beads, rsry_bead_create, rsry_bead_close, rsry_bead_comment, …) and are the preferred surface from inside an MCP client. ALWAYS use non-interactive flags…
- Deletes or force-pushes
- Commits and pushes
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,774 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repositoryOne other file it gives its agents.
- CLAUDE.mdCLAUDE.md
The file
We split this AGENTS.md into the rules it gives an agent
4 rules. About 0 are common, 2 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 44
All issue tracking goes through beads.
- Very specific: line 122
Every commit must match [bead-id] <type>(<scope>): <subject> — Golden Rule 11 (bead reference) + Conventional Commits.
- Distinctive: line 141
NEVER stop before pushing — that strands work locally.
- Distinctive: line 142
If push fails, resolve and retry until it succeeds.
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Agent Instructions
<!--
Canonical rsry-native AGENTS.md. `rsry init` writes this into a repo (the
rsry-native replacement for `bd setup <tool>`). Learns from bd's AGENTS.md
concepts (ready-work detection, dependency types, discovered-from) but routes
through `rsry` — never `bd`. See rosary ADR-0014.
-->This project tracks all work as beads, stored in .beads/ (a Dolt database,
or a SQLite beads.db for single-user repos) and accessed through rsry —
the CLI or the rsry_* MCP tools. Rosary owns the store and reads/writes it
in-process over the Dolt/SQLite wire; it never invokes the bd CLI
(ADR-0014). Do not run bd.
Quick Reference
rsry bead list --dispatchable # work that's actually safe to pick up
rsry bead list --ready # open + unblocked (superset of dispatchable)
rsry bead review <id> # full context: summary + comments + change-set
rsry bead comment add <id> "note" # progress notes (humans + other agents read these)
rsry bead close <id> # complete work (requires a close condition)
rsry status --repo <name> # counts for one repo (omit --repo = all repos)The rsry_* MCP tools mirror these (rsry_list_beads, rsry_bead_create,
rsry_bead_close, rsry_bead_comment, …) and are the preferred surface from
inside an MCP client.
Non-Interactive Shell Commands
ALWAYS use non-interactive flags with file operations — cp/mv/rm may be
aliased to -i and hang waiting for y/n:
cp -f source dest mv -f source dest rm -f file rm -rf dir cp -rf src dstscp/ssh → -o BatchMode=yes · apt-get → -y · brew → HOMEBREW_NO_AUTO_UPDATE=1.
Issue Tracking with beads (via rsry)
All issue tracking goes through beads. Do NOT use markdown TODOs, task lists, or
external trackers. Do NOT use the bd CLI — use rsry.
Why beads
- Dependency-aware — track blockers and relationships (
blocks,related,parent-child,discovered-from) so ready-work detection is automatic. - Version-controlled — Dolt with cell-level merge; syncs across machines via
a Dolt remote (the
post-merge/post-pushhooks rundolt pull|push). - Agent-optimized — JSON output,
--ready/--dispatchablefilters,discovered-fromlinks so found work traces to its origin.
Create work
rsry bead create "Issue title" --description "Detailed context" \
--issue-type bug --priority 1 --files src/foo.rsImplementation beads (bug/feature/task/chore) require a file scope
(--files) and a close condition (an --acceptance-criteria, a runnable
test command in the description, or the default PR-merge signal). Planning types
(epic/design/research) and review are exempt from the file-scope rule.
Link related work (typed edges)
Dependencies carry a type — blocks (the default), related,
parent-child, discovered-from:
# work you found while doing something else → trace it to its origin
rsry_bead_link id=<new> depends_on=<origin> dep_type=discovered-from
# subtask under an umbrella/epic
rsry_bead_link id=<child> depends_on=<parent> dep_type=parent-childparent-child and discovered-from are containment edges, and they gate
auto-close: a parent bead won't be closed by a merged PR while it still has open
children — the PR is linked, but the umbrella stays open until the last child
lands. Use blocks for ordering (A must finish before B) — closing a blocker is
the normal unblock signal and does not hold anything open.
Claim, update, complete
rsry bead comment add <id> "progress note" # don't close incomplete beads — comment
rsry bead close <id> # gated on the close conditionIssue types
bug, feature, task, chore (implementation) · epic, design,
research (planning) · review (read-only adversarial). A secondary
work_mode axis (investigation / synthesis / adversarial / procedural / …) maps
back to a canonical issue type when a bead is authored.
Priorities
0 critical (security, data loss, broken builds) · 1 high · 2 medium
(default) · 3 low.
Ready vs dispatchable
--ready = open + unblocked. --dispatchable is the strict subset actually safe
to hand to an agent: also a close condition, a bounded file scope, and a refined
description (Bead::is_dispatchable). Check rsry bead list --dispatchable
before asking "what should I work on?" — prefer it over --ready.
State sync (automatic, rsry-native)
There is no bd dolt push / issues.jsonl step you run by hand. When a PR
merges, the git post-merge hook (installed by rsry hooks install) runs
rsry close-merged --local — reading the squash-merge commit
([bead-id] … (#N)) from local git log and closing the bead — plus a
dolt pull for Dolt-backed repos. No webhook, no gh, no manual export.
Commit contract (enforced at commit-msg time)
Every commit must match [bead-id] <type>(<scope>): <subject> — Golden Rule 11
(bead reference) + Conventional Commits. The commit-msg hook rejects anything
else (and auto-injects [bead-id] from .rsry-bead-id in agent worktrees). Open
PRs with rsry pr --title "…" so the [bead-id] lands in the squash subject and
the merged bead auto-closes.
Landing the Plane (Session Completion)
Work is NOT complete until git push succeeds.
- File beads for remaining work —
rsry bead create …(withdiscovered-fromlinks where relevant). - Run the gate (if code changed) —
task check(the canonical verification gate) where the repo has one. - Update bead status — close finished work; comment on in-progress items.
- PUSH —
git pull --rebase && git push && git status(must show "up to date"). - Hand off — context for the next session.
- NEVER stop before pushing — that strands work locally.
- If push fails, resolve and retry until it succeeds.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

