add-engine
Skill9 starsChanged 4 months agoMITView on GitHub
Add a new AI agent backend (engine) to readme2demo, or fix parsing for an existing one (claude-code stream-json drift, openhands trajectory changes). Use when adding support for a new coding agent or when transcripts stop parsing after an agent CLI upgrade.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- JaimeJunr/polyagent-mcptheir own version, first seen Sep 23, 2026
- bablsoft/accessflowtheir own version, first seen Sep 9, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- bablsoft/accessflow★ 12same name
- JaimeJunr/polyagent-mcp★ 5same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository9 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- docs/llms.txtllms.txt
- add-failure-classSkill
- debug-runSkill
- docker-sandboxSkill
- git-github-operatorSkill
- python-standardsSkill
- sandbox-toolchainsSkill
- vhs-videoSkill
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 50
If the format VERSION is coupled to a pinned CLI in images/base/Dockerfile, bump pin and parser together and say so in the commit message.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill 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
Adding or fixing an agent engine
Engines are the ONLY place that knows which AI agent ran. Everything
downstream consumes command_log.json.
The contract (engines/base.py)
Implement AgentEngine and decorate with @register:
name: CLI value for--engine.required_env()/resolve_env(): host env vars forwarded into the sandbox at exec time (never baked into images). Support alternative auth by overridingresolve_env(see ClaudeCodeEngine's key-OR-oauth-token, including the credential-format validation — copy it).credential_env_vars(): which forwarded names hold the secret. The default covers everyrequired_env()name matching KEY|TOKEN|SECRET — if your credential is NOT inrequired_env()(any alternative auth resolved inresolve_env), you MUST override this too or the secret goes untreated.build_command(limits): one shell string run viabash -lcinside the container; reads the prompt fromPROMPT_CONTAINER_PATH, writes the raw transcript toTRANSCRIPT_CONTAINER_PATH, stderr next to it.parse_transcript(path) -> CommandLog: PURE, deterministic, no LLM calls, tolerant of malformed lines and schema drift. Reusetruncate_output,scan_markers,scan_adjustedfromclaude_code.pyso markers and truncation behave identically across engines.
Parsing requirements
- Pair command events with their results; unpaired commands get
exit_code=None(never fabricate 0). - Extract: Bash-equivalent commands + outputs (head 3KB + tail 1KB truncation), file edits, FIX/BLOCKED/ADJUSTED_SUCCESS markers, outcome (blocked > success-marker > failed), cost/turns/duration when available (None when not — budget logic treats None as unknown, not zero).
Checklist
engines/<name>.pywith the above; module docstring stating the transcript format assumptions and its drift-tolerance strategy.- Fixture transcript in
tests/fixtures/exercising: success + failure pairs, a marker, a malformed line, string-vs-list content shapes. - Tests: parse the fixture, verify counts/exit codes/markers/outcome; missing-env EngineError; build_command shape (uses the canonical container paths, not hardcoded strings).
- If the format VERSION is coupled to a pinned CLI in
images/base/Dockerfile, bump pin and parser together and say so in the commit message. - README: add the engine to the auth/requirements section.
Known drift landmines
- claude-code stream-json:
tool_result.contentis a string OR a list of text blocks; the finalresultevent can be absent when the agent is killed (marker alone then decides success). - openhands trajectories: JSON array,
{"events": [...]}wrapper, or JSONL — detect all three.
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.

