Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ Start with `docs/README.md` and follow its task routes. Detailed command semanti
handled-error recovery in `docs/errors.md`, living release policy in `RELEASING.md`, and dated release observations
in `docs/release-history.md`. When behavior changes, update its owning document in the same change.

- Verify with `npm run check`, which takes about 30 seconds. A fresh checkout needs `npm ci --ignore-scripts` first.
- Sibling repositories: `firstdraft/firstdraft` (private) owns the Service API and Plan format; `firstdraft/skills`
owns the Skill and plugin packaging.
- Changes to the accepted API-contract range, accepted Plan formats, command names or flags, handled `error` values,
or exit statuses get an independent review through cross-review: `codex-review` from Claude Code, `$claude-review`
from Codex.
- `firstdraft plan compile` defaults to local output in the current directory. GitHub publication requires
`--github`; Codespaces is a fallback. Keep Skill callers and recovery instructions aligned with this boundary.
- A coordinated release needs explicit approval once. Reuse an existing approval for its named scope; do not ask
Expand Down
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@AGENTS.md
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ evidence for implemented behavior; if they contradict a document, surface the co
- [release-history.md](release-history.md) preserves dated release observations. Recheck live tags, package versions,
and dist-tags before relying on them operationally; publisher configuration is checked when it changes or fails.
- The source repository's `AGENTS.md` routes agent work; it should stay compact rather than duplicate these documents.
Its `CLAUDE.md` only imports `AGENTS.md`, so Claude Code and Codex read the same instructions.

## Retrieval quality

Expand Down
8 changes: 8 additions & 0 deletions test/documentation.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,14 @@ test("public documentation avoids unavailable destinations", () => {
}
});

test("Claude Code imports the shared agent instructions", () => {
assert.equal(
readFileSync(path.join(repository, "CLAUDE.md"), "utf8"),
"@AGENTS.md\n",
"CLAUDE.md must only import AGENTS.md so both harnesses read one source",
);
});

test("documentation entrypoints stay lean and route every public topic", () => {
const entrypointBudgets = new Map([
[path.join(repository, "AGENTS.md"), 2_048],
Expand Down
Loading