Skip to content
Agentmart
Submit a tool

AGENTS.md · traycerai/traycer

AGENTS.md from traycerai/traycer: 157 lines covering Nested docs (read when editing there), Map, Commands, Local checks: narrow, never full and more.

Template by traycerai

IndexedMIT★ 1,631
Write a review

Chalk Labs

Need help deploying AGENTS.md · traycerai/traycer?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode, Claude Code. Read the repository before you give any tool access to your data.

curl -fsSL https://raw.githubusercontent.com/traycerai/traycer/main/AGENTS.md -o AGENTS.md

Read it and adapt it to your project before use.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

The AGENTS.md file that traycerai/traycer (1,631 stars) keeps for coding agents. It has 157 lines in 9 sections: Nested docs (read when editing there); Map; Commands; Local checks: narrow, never full; When CI runs; Non-negotiable; Type safety (ESLint — do not bypass); Slop the sweep keeps finding; Skills. Use it as a model for your own project's instructions.

Use cases: code-generation

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

What's in it

An AGENTS.md file: instructions coding agents (Codex, Cursor, Copilot, Gemini CLI and others) read before working in a repo.

For
Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode, Claude Code
Length
157 lines
File
AGENTS.md

Sections

  1. Nested docs (read when editing there)
  2. Map
  3. Commands
  4. Local checks: narrow, never full
  5. When CI runs
  6. Non-negotiable
  7. Type safety (ESLint — do not bypass)
  8. Slop the sweep keeps finding
  9. Skills

First lines (shown under the repo's MIT license)

# AGENTS.md

Default branch: `main`. Bun 1.3.14 workspaces + Nx.

Open-source **clients, CLI, and protocol**. The Traycer Host and cloud backends
are **not** here — the CLI provisions a signed host from GitHub Releases; see
[`clients/traycer-cli/README.md`](clients/traycer-cli/README.md). Setup,
toolchain and pre-commit hooks: [`CONTRIBUTING.md`](CONTRIBUTING.md).

## Nested docs (read when editing there)

- [`.github/AGENTS.md`](.github/AGENTS.md) — the pull-request CI gate and the
  merge run. Read it before editing a workflow or a CI script
  (`scripts/ci-*`, `scripts/__tests__/ci-pull-request-gate.test.mjs`)
- [`clients/gui-app/AGENTS.md`](clients/gui-app/AGENTS.md)
- [`clients/desktop/AGENTS.md`](clients/desktop/AGENTS.md)
- [`clients/mobile/AGENTS.md`](clients/mobile/AGENTS.md)
- [`mintlify/AGENTS.md`](mintlify/AGENTS.md) — public docs site
  (docs.traycer.ai); every page there is published

## Map

| Path                   | Package                        | Role                             |
| ---------------------- | ------------------------------ | -------------------------------- |
| `protocol/`            | `@traycer/protocol`            | Client⇄host wire contract        |
| `clients/traycer-cli/` | `@traycer-clients/traycer-cli` | CLI (host install, auth, agents) |
| `clients/shared/`      | `@traycer-clients/shared`      | Transport / auth / formatting    |
| `clients/gui-app/`     | `@traycer-clients/gui-app`     | GUI renderer                     |
| `clients/desktop/`     | `@traycer-clients/desktop`     | Electron shell                   |
| `mintlify/`            | —                              | Public docs site (Mintlify)      |

## Commands

```bash
bun install
bun scripts/lint-changed-files.mjs origin/main  # lint the files your branch changed
bunx nx run @traycer-clients/traycer-cli:build   # single package; only when changing packaging

make dev-desktop                # signed host from Releases + HMR desktop
make dev-desktop VERSION=1.2.3  # pin host release
```

`make dev-desktop` talks to the **production** cloud — no local backends.

## Local checks: narrow, never full

**Never run a full compile, lint, format, test or build by hand:**
`bun run compile`, `lint`, `format`, `test` or `build`, `make test-affected`,
a project's whole `lint`, or `pre-commit run --all-files`. gui-app's lint
needs about 9 GB and its type-check about 5 GB; two at once have stalled a
24 GB Mac. The commit hook and CI run them.

While you work, check only what you touched:

- Lint the changed files: `bun scripts/lint-changed-files.mjs origin/main`,
  or `bun run lint:files <paths>` inside a project. If the first prints
  `linting every affected project` or `$ bun run lint`, stop it and use
  `lint:files`.
- One test file: `bunx vitest run <path>` from its project.
- One package's `compile`, only to diagnose its failure. Never run `tsc`.

**Commits** need DCO (`git commit -s`) and nothing run by hand first. The
hook lints the changed files, formats, and type-checks the affected projects,
inside one machine-wide slot. Tests and builds run in CI. nx runs without its
daemon (`useDaemonProcess: false`): leave it off.

## When CI runs

A team pull request into `main`, an `integration/*` branch or a `land/*`
branch runs **no CI, on purpose**, except the CodeQL scan: every required
check reports passed, so a merge needs review only, and the commit hook is the
only other automatic check before merge. Work on those branches is tested by
the merge run once it reaches `main`. Pull requests from forks and bots, and
into any other branch, run every check; watch them with
`gh pr checks --watch` and fix what they report.

**CI does not run on a branch by default.** Check what you can locally with
the narrow checks above (one package's `build` for packaging); everything
else runs on the merge. Dispatch a workflow on a branch
(`gh workflow run <workflow> --ref <branch>`) sparingly: only when a check is
actually needed before the merge and no local check covers it, and name the
reason in the pull request.

The full suite runs once on every push to `main`. `trunk-red.yml` re-runs
failed jobs once; a failed `trunk-red` run means `main` is really red, a break
to fix or revert, not a flake. A red merge stays red until a run covering it
passes, and a red `main` blocks the internal repository's staging train and
promotion.

How the gate works and how a new workflow carries it:
[`.github/AGENTS.md`](.github/AGENTS.md).

## Non-negotiable

**Protocol** — `@traycer/protocol` uses per-method `{ major, minor }` RPC versions
negotiated at handshake (not npm semver). CLI **inlines** protocol at build time.
See `protocol/README.md`.

**Host identity** (GUI):

1. `hostId` is canonical; "device" is UI copy — no parallel `deviceId` field.
2. Tabs bind a `hostId` for life (`<TabHostProvider>` → `useTabHostId()`). Never
   use `useAddressableHostId()` inside a tab. Cross-host = **clone-not-migrate**.
   Reachability checked at tab-open only.

**Shared code** — transport/auth in `clients/shared/`; wire contract in
`protocol/`. Don't duplicate. One exception: the remote session core
(`RemoteSession`, the relay socket, streams, the scheduler, Noise and mux
chunking) lives in `protocol/src/host-transport/remote/`, because a host
dialing another host drives it too. Put a change in `protocol/` if both peers
need it, in `clients/shared/` if only the desktop does.

**User-facing copy** — a setting description, label, tooltip, toast, error
message or docs row says what the thing does and what it costs the person, and
nothing else. Leave out how it is built: the model or library behind a
feature, its licence or version, per-engine language lists, the mechanism.
Test every sentence: does the reader need it to decide or to act? Keep to the
length of the neighbouring rows. When a reviewer calls copy inaccurate or
incomplete, cut the claim before adding words; never enumerate to make a broad
sentence true. A change that gives the person nothing new to configure changes
no copy. Licence and attribution text goes in a notices file, not in the
interface.

## Type safety (ESLint — do not bypass)

```ts
// BAD                         // GOOD
fn(x?: T)                      fn(x: T | undefined)
fn(x = 1)                      fn(x: number)  // caller passes explicitly
...args: [T?] | []             // no rest-tuple optionals
as any / as unknown / chained  // narrow or define a real type
ReturnType<typeof fn>          // name the concrete type
```

## Slop the sweep keeps finding

| BAD                                                             | GOOD                                                                                  |
| --------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| Repeat the same input, path and assertion in another test.      | Keep one case; add coverage only for a distinct regression.                           |
| Let a test inherit mutable fixture state from another test.     | Reset shared fixture state for every test and restore temporary overrides in cleanup. |
| Leave A's contract above newly inserted B.                      | Keep each contract comment attached to the declaration or operation it describes.     |
| Assert only a constant or two aliases.                          | Assert its effect through the real consumer.                                          |
| Ticket BEGIN/END or review-round markers in source.             | Remove workflow markers; retain durable invariants.                                   |
| Carry state that no consumer reads.                             | Remove unused fields and the work that populates them.                                |
| Wrap one call or expression without a distinct contract.        | Keep the expression at its caller.                                                    |
| Describe access using a retired owner or cache policy.          | Match the current authorization boundary and freshness policy.                        |
| Export a module-only implementation with no external consumer.  | Keep it private; retain public and registered contracts.                              |
| Require port members that no consumer reads or calls.           | Keep only the members consumers use; remove fixture no-ops.                           |
| Repeat an assertion implied by an exact result check.           | Keep the exact check and assertions for distinct effects.                             |
| Assert only that a required field exists.                       | Exercise its effect through the real consumer.                                        |
| Keep comments that describe a retired contract.                 | Update or remove stale claims when the contract changes.                              |
| Assert only a test double's implementation.                     | Assert production behavior through the real consumer.                                 |
| Treat a sleep or fixed microtask count as operation completion. | Await the operation's completion or its observable outcome before asserting.          |
| Keep runtime declarations with no production consumer.          | Remove unused declarations and tests that exercise only them.                         |
| Check for a result the private implementation cannot return.    | Make its return type exact and remove the unreachable branch.                         |

## Skills

Use when the task matches. GUI skills: see `clients/gui-app/AGENTS.md`.

Signals

Stars
1,631
Forks
212
Open issues
65
Last commit (this folder)
Oct 23, 2026 (8 days ago)
Last release
Oct 10, 2026 (20 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get AGENTS.md · traycerai/traycer running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying AGENTS.md · traycerai/traycer?

CallGet help
Cite this page

AGENTS.md · traycerai/traycer. Agent Mart. https://agentmart.dev/templates/traycerai-traycer-agents-md (last updated 2026-10-24)