Agents
Truewire is built to be driven by a coding agent, and the agent's instructions ship with the toolchain rather than living in a prompt. Eight skills, one per step, each ending in a command whose exit code decides whether the step is done (I3).
The skills
| Skill | Input | Output | Gate |
|---|---|---|---|
truewire-discovery |
a docs URL | an endpoint inventory and the surfaces it splits into | a human reads it once |
truewire-core |
the API's auth, envelope and errors | core/ per surface, hand-written |
one truewire capture succeeds |
truewire-spec |
the inventory and the docs | endpoint.json, routers, shared schemas, recordings |
truewire check, truewire examples --require-verified |
truewire-impl |
a spec that checks | generated packages, cores refined, tests | truewire generate --check, truewire test, truewire lint, truewire surface |
truewire-docs |
generated packages | docs/ and each package README |
truewire docs check |
truewire-review |
a finished project | a report against the standards | truewire standards, and the report |
truewire-release |
the diff since the last release | release notes, a version bump, a PR | the PR's own CI; merge publishes |
truewire-pipeline |
a docs URL and nothing else | all of the above | truewire score is full |
A1. The order of the table is the order of the work, with one exception:
truewire-core precedes truewire-spec, because a spec written before a single successful
call is a spec written from documentation, and documentation is not the wire
(I1).
A2. Each skill states its gate, and stops at it. A skill never declares its own step finished, and never proceeds past a red gate by narrowing what it claimed to do.
A3. truewire-pipeline delegates; it does not implement. It runs the seven skills in
order, then enters a hardening loop: truewire-review until two consecutive passes produce
no blocking finding and truewire score is full. "No issues found" is not a
termination condition, because a reviewer worth running always finds something; "no
blocking issues in two passes" is.
A4. A skill that needs a decision a person must make — a credential tier, a paid
account, whether an endpoint may be called at all — writes the question into the project's
NOTES.md and continues with everything that does not depend on the answer.
The rules
A5. .agents/rules/<language>.md is the style a generated package and its
hand-written core must satisfy: naming, typing strictness, error handling, what the
language's linter is configured to enforce. One file per backend: python.md,
typescript.md, rust.md, go.md.
A6. Rules are enforced by a linter wherever a linter can express them. A rule that no tool checks belongs in the file only if a reviewer can apply it consistently; a rule that is neither checkable nor consistently applicable is deleted, not written down.
Wiring
A7. AGENTS.md at the project root is the entrypoint: what this project is, what
Truewire is, which skills exist, which rules apply, and the command list. It is written for
an agent that has never seen the repository and has no memory of any previous session.
A8. CLAUDE.md contains exactly one line, @AGENTS.md. Any other agent runner that
wants its own filename gets the same one-line redirect. There is one document, and the
filenames are aliases.
A9. .claude/skills/ and .claude/rules/ are symlinks into .agents/. The canonical
location is .agents/, because it is the one that Claude Code, Cursor and Codex all read
without being told.
Vendoring and drift
A10. Skills and rules are vendored copies in each project, not a plugin and not a
submodule. An agent working in bit2me/ reads the files that are in bit2me/, with no
network and no install step, and a project can hold a skill at an older version
deliberately.
A11. truewire agents update rewrites the vendored copies from the installed
toolchain. Each file carries the toolchain version that produced it, and truewire agents check fails when a vendored copy has drifted from the installed one without being marked
as a deliberate local edit. This is the same discipline as generate --check: a copy is
allowed, a silent copy is not.
A12. (open) Publishing the skills as a Claude Code plugin as well would make the first install one command instead of a clone. It is not done, because a plugin is one runner's format and the vendored copy is every runner's, and doing both means two things to keep in step. It is worth revisiting once a stranger has actually tried to start a project from scratch.