docs: README that leads with the matrix, and a GIF that tells the truth - #123
Merged
Conversation
Renders the real loop: a six-line handler wired into every coding agent's own hook system in one command. The end frame is agentseam install all's real output, one line per agent naming the enforcement level the matrix actually grades it -- best-effort for eleven, enforceable for cursor. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Claude <noreply@anthropic.com>
Manual-dispatch job that renders docs/assets/demo.tape with VHS and uploads the GIF as an artifact, so the committed demo.gif stays reproducible without spending CI minutes on every push. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Claude <noreply@anthropic.com>
Reorders the front door: hero GIF first, then the honest capability table before the marketing copy, a Supported agents table with a Verified column (basis and date from `agentseam matrix --evidence`), and a one-sentence count of how many pre_tool claims are live-run witnessed versus doc-derived (4 of 12). Moves Bundles, Design and the per-vendor example-page-generator sections to docs/ verbatim; nothing in them is deleted. No agent is graded `enforced` at pre_tool today, so the GIF's end frame and the README's install-output example show the real levels the matrix prints (best-effort, enforceable) rather than the claim the original brief assumed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Claude <noreply@anthropic.com>
tools/quickstart_block.py extracts the first \`\`\`bash fence under "## Quick start" (stdlib only); the new quickstart CI job installs the package under test, runs the extracted block in a fresh temp directory, and fails if it does. Verified locally: a deliberately broken install flag makes the job exit 2, and the same block against the real README exits 0 and wires 12 agents. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Claude <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Claude <noreply@anthropic.com>
Orchestrator review of PR #123 found three real issues: - Tape and README quick-start disagreed: the tape's install command was missing --repo . that the README shows. Added it and re-rendered the GIF (184,795 bytes, still under the 2.5 MB budget). - Contributing had no good-first-issue link, which the shared standard requires. - "8 rest on vendor documentation alone" overstated it: of those 8, gemini_cli is vendor-source and windsurf is third-party-install, not vendor-docs. Reworded to "documentation or a third-party install." The review's suggested fix for a fourth finding -- junie/kimi_code printing an absolute /tmp/... path in the GIF -- does not do what was claimed. Tested `export HOME="$PWD"` directly: it still prints an absolute path (just under the demo dir instead of a separate temp dir), because install_config.resolve() expands a `~`-prefixed CONFIG_PATH with os.path.expanduser and never relativizes it against repo_root for any HOME value. There is no way to make these two rows read "./..." without changing adapter/resolve() code, which is out of scope for a docs-only PR. Left HOME=$(mktemp -d) as originally written, which already matches the shared standard's own prescribed fix ("set HOME to a temp dir in the hidden setup") and prints a fresh, non-identifying path on every render -- not a real container path. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
Rewrites the README to the org-wide landing-page order: hero demo GIF first, honest
capability table before the pitch copy, a 16-row Supported agents table with a
Verifiedcolumn, and a one-sentence live-run-vs-doc-derived count. Adds
docs/assets/demo.tape+rendered
demo.gif, a manualrender-demoworkflow, and aquickstartCI job that runsthe README's own Quick start block for real. Moves the Bundles, Design and per-vendor
example-page-generator sections to
docs/verbatim. One CHANGELOG[Unreleased]entry;no version bump.
No agent is graded
enforcedatpre_toolonmaintoday (11best-effort, 1enforceable/Cursor, 4none), so the GIF's end frame and the README's install-outputexample show those real levels rather than the
enforcedclaim the original owner briefassumed — see Deviations below.
Claim check
Not applicable — no adapter or
MATRIXchanges; this PR only reorganizes and re-verifiesexisting claims already backed by
data/matrix.json.Checks
pytest -qpasses (1598 passed / 4 skipped on Python 3.11; 1595 passed / 7 skippedon Python 3.10) — includes the README-consistency tests
(
test_repo_standards.py::test_the_front_door_docs_name_every_decision_outcome,test_instructions.py::test_the_readme_arithmetic_cannot_drift)ruff check .andruff format --check .passtests/check_stdlib_only.pyon 3.10 and 3.11)git commit -s)examples/generate.py --checkpasses (unaffected — no adapter/matrix changes)quickstartCI job: verified locally by extracting and running the README's realQuick start block end-to-end (wires 12 agents, exit 0), then deliberately breaking
it (
--nonexistent-flag) and confirming the same extraction exits 2 beforereverting
Evidence gathered before writing
agentseam matrix --evidence: of the 12 agents that claimpre_toolat all, 4(claude_code, codex_cli, cursor, vscode_copilot) rest on a live run; the other 8 rest on
documentation or a third-party install, not on a live run.
agentseam install all "python3 my_handler.py" --events pre_tool --repo .: wires 12agents, all
best-effortexcept Cursor (enforceable); aider, copilot, replit, zed areskipped (no hook surface) — matches the brief's stated breakdown exactly.
punchline.
Deviations from the brief
copilot(the GitHub CopilotCLI marketplace-bundle identity), which the prior README omitted entirely. Its own
vendor notes say this is a packaging identity dispatched through the
vscode_copilotadapter at runtime, not an independent hook surface — labelled accordingly rather than
as a plain "no hook surface" row.
tests/test_repo_standards.py::test_the_front_door_docs_name_every_decision_outcomerequires README.md itself to name every
Decisionoutcome in backticks. The sentencethat did this previously lived in the "per-vendor examples" section the brief asks to
move to
docs/verbatim, so a short equivalent sentence naming all eight outcomes(
allow,deny,escalate/ask,transform/rewrite,warn,vouch) was added tothe front-matter paragraph instead — per CONTRIBUTING.md/worker-protocol: fix the
README, never the test.
$(mktemp -d)$HOME(e.g./tmp/tmp.XXXXXX/.junie/config.json) rather than acommitted literal path, per the brief's own instruction to avoid a container-identifying
path — this is a generic, non-identifying temp path, regenerated on every render. See
the orchestrator-review response below for why this is not further reducible.
Orchestrator review response (2026-09-08)
Three findings verified and fixed:
--repo .that the README's quick-start block has —added, re-rendered the GIF.
vendor-source,windsurf is
third-party-install) — reworded.One finding investigated and not applied: the suggested fix for junie/kimi_code's absolute
/tmp/...path (export HOME="$PWD") does not do what was claimed. Tested it directly —it still prints an absolute path, just under the demo dir instead of a separate temp dir —
because
install_config.resolve()expands a~-prefixedCONFIG_PATHwithos.path.expanduserand never relativizes it againstrepo_rootfor anyHOMEvalue.Making these two rows read
./...needs an adapter/resolve()code change, out of scopefor a docs-only PR. Left
HOME=$(mktemp -d)as originally written, which matches theshared standard's own prescribed fix ("set HOME to a temp dir in the hidden setup") and
prints a fresh, non-identifying path on every render.
Notes for the reviewer
docs/render-demo.yml's SHA pins were copied verbatim fromopen-coder-ai/chock'sexisting workflow of the same name, per the shared README-refresh standard.
🤖 Generated with Claude Code