fishhawk
AGENTS.md9 starsChanged 14 days agoApache-2.0View on GitHub
Fishhawk is a multi-module Go workspace with a Web UI (frontend/) and public documentation site (site/). .fishhawk/workflows.yaml is the live development workflow. Inspect the checkout before assuming a feature is absent or complete. - Follow the issue → branch → PR workflow. Resolve blocking ADRs first; use a Fishhawk workflow run for repository changes. Operator-authored instruction, skill and CI changes cannot be delegated to an implement stage whose paths forbid them. Preserve the human approval gate on the human-led route.…
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,439 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 repository11 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- deploy-localSkill
- dev-cleanSkill
- diagnose-redSkill
- frontend-checkSkill
- new-go-moduleSkill
- record-adrSkill
- spec-changeSkill
- sync-mainSkill
- teardown-localSkill
- verify-gateSkill
The file
We split this AGENTS.md into the rules it gives an agent
11 rules. About 0 are common, 4 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Very specific: line 9
Follow the issue → branch → PR workflow.
- Distinctive: line 17
Update affected documentation and generated surfaces in the same PR.
- Very specific: line 20
Never force-push main. Use --force-with-lease on a feature branch.
- Distinctive: line 22
Do not restart the shared stack or pull its checkout during live runs or blocked decompositions.
- Very specific: line 25
Never clear the Go build cache beside a live build.
- Very specific: line 42
Use the verify-gate skill for preflights and results.
- Distinctive: line 57
Read the owning package README (and the topic it indexes) when changing its behavior.
- Distinctive: line 98
Keep this file within 8 KiB.
- Very specific: line 101
Update skill references when their source moves.
- Very specific: line 109
Keep .claude/settings.json permissions-only.
- Very specific: line 112
Run scripts/check-agent-context after editing instruction entrypoints, their linked guides, or skills.
≈ “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
AGENTS.md
Fishhawk is a multi-module Go workspace with a Web UI (frontend/) and public
documentation site (site/). .fishhawk/workflows.yaml is the live development
workflow. Inspect the checkout before assuming a feature is absent or complete.
Working rules
- Follow the issue → branch → PR workflow. Resolve blocking ADRs first; use a Fishhawk workflow run for repository changes. Operator-authored instruction, skill and CI changes cannot be delegated to an implement stage whose paths forbid them. Preserve the human approval gate on the human-led route.
- Branch from
origin/main; use an issue/description branch name. Preserve other work. Commit withgit commit -s(DCO), an imperative title, and no conventional-commits prefix. PR bodies use## Summary,## Test plan, optional## Notes, andCloses #<issue>. - Update affected documentation and generated surfaces in the same PR. File deferred work before opening the PR and link it in Notes. After merge, update affected parent/sibling issues. Details: contributing.
- Never force-push
main. Use--force-with-leaseon a feature branch; ask first if it has review comments. - Do not restart the shared stack or pull its checkout during live runs or blocked decompositions. Use the local-operation skills and their run-agent / restart-blocker guards. Never bypass a refusal as a routine retry.
- Never clear the Go build cache beside a live build. Use guarded
scripts/dev gocache --trim; setGOFLAGS=-trimpathin operator scratch worktrees so they share build-cache entries.
Build, test, lint
There is no root go.mod. Use the workspace wrapper or a module-qualified
package, such as go build ./backend/...; root go build ./... fails.
scripts/test single -run TestName ./backend/internal/version/ # focused test
scripts/verify-change # frontend when relevant, then full verify
scripts/test verify --packages backend/internal/foo # iteration only
scripts/test verify --no-tests # excludes tests and patch coverage
scripts/test coverage # aggregate coverageUse the verify-gate skill for preflights and results. Never start a concurrent
verify or retry/poll one that refuses (exit 73): use a focused scripts/test
single instead. Scoped verify skips patch coverage; final verification must be
full. A host-toolchain mismatch is an environment failure: use the pinned tools
or the gate image, not code changes. Diagnose unexplained failures before
changing unrelated code; report all failing modules and any skipped checks.
The verification guide routes the gate contracts.
For frontend/, use frontend-check before push. For site/, read
site/README.md. Tool versions come from the checked-in pins,
not remembered versions. CI-fetched executable tooling must use immutable
versions/tags; GitHub Action floating major refs are the documented exception.
Read for the task
Read the owning package README (and the topic it indexes) when changing its behavior. Follow the relevant route below; do not load every reference up front. For cross-component design, read the relevant architecture sections and settled ADRs before choosing boundaries.
| Task | Reference / skill |
| Scope and architecture | MVP scope (cite section numbers), architecture §§2–9; §10 locates owning packages |
| Decisions and autonomy | ADR format/index, methodology; an unrecorded ADR is read from the tracker |
| Drive runs, reviews or campaigns | operating model, grooming runbook, Fishhawk MCP runbook |
| Documentation, public site, generated reference | documentation rules |
| Workflow/plan schema or REST API | spec-change; change checklists, workflow reference, API companion |
| Handler authorization or audit category | change checklists: token-impact inventory, migration, category registry and comment surfaces |
| New Go module | new-go-module; change checklists |
| Tests, fixtures, cross-module wire types | testing rules |
| GitHub Actions, CI or publishing | verification guide § Required GitHub Actions validation; scripts contract |
| Verify / unexplained red | verify-gate / diagnose-red; verification guide |
| Deploy, sync, stop, clean | deploy-local, sync-main, teardown-local, dev-clean; operations |
| Ratified ADR | record-adr; update record, README table, index and supersession/amendment links |
| Review prompt, persona, repodoc or eval change | change checklists: catch-rate evidence and injection/quality evaluation obligations |
| Instructions, skills or prompt-loading upkeep | context maintenance |
| Naming and public voice | brand foundations §5: direct, technical, restrained; precise errors with remedies |
Documentation surfaces
Root README.md and site/ are human-facing narrative. docs/ is structured,
agent-consumed material and is never a site publish source; no site imports,
globs or symlinks into docs/. GitHub prose links are fine.
docs/ARCHITECTURE.md §10 holds pointers: path + at most one sentence + one
anchor issue/ADR. Put longer contracts beside code in package READMEs or indexed
docs/*.md topics. Architecture lines must stay within 1,000 characters.
Canonical schemas are in docs/spec/; run scripts/sync-schemas after edits.
Canonical REST is docs/api/v0.openapi.yaml. The four site reference regions
(workflow-spec, plan-schema, cli, api) are generated: use
scripts/gen-site-reference; hand-edit only outside their generated markers.
The public site tracks main, with workflow majors documented inline on one page.
Instruction upkeep
Keep this file within 8 KiB. Put new lessons in the owning package contract,
focused guide, skill or executable check; add root rules only when they apply
across tasks. Do not append incident histories or duplicate executable pins.
Update skill references when their source moves; use rg to find affected
skills when changing a cited rule, tool pin, or scripts/dev / scripts/test
behavior. A run unable to edit skills files an operator follow-up.
Skills live in .agents/skills/<name>/SKILL.md, with per-skill symlinks from
.claude/skills/. Preserve invocation policies and operator-only guards.
.agents/, .claude/, .codex/ and instruction-file protections are enforced by
workflow constraints; the exact root AGENTS.md exception is workflow-specific.
Keep .claude/settings.json permissions-only. CLAUDE.md imports this file;
do not add unconditional imports of the task guides.
Run scripts/check-agent-context after editing instruction entrypoints, their
linked guides, or skills. Its budgets, link scope, migration map and validation
scenarios are in context maintenance.
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.

