Releases: drakulavich/iago
Release list
v0.3.3 β Windows support
Windows support (#19)
Iago now runs on Windows (Git Bash), verified across Windows + Ubuntu + macOS in CI.
- CRLF-aware
sanitizeβ the Mermaid sanitizer matches\r?\nfences, splits on either line ending, and re-joins with the document's original EOL, so CRLF files round-trip byte-for-byte instead of being normalized. tar --force-localβ added on Windows Git Bash only (win32+MSYSTEM), so GNU tar doesn't read the colon inC:\β¦\iago.tar.gzas a remote host. Native-Windows bsdtar (which doesn't support the flag) is left untouched.- Tests now cover CRLF through an actual transformation (
;β,message rewrite and[@β¦]flowchart label), not just the no-op path.
Thanks to @contributor for the fix and the cross-platform verification.
Internal
- OpenSpec baseline (config + principles + glossary) (#20).
npm: @drakulavich/iago@0.3.3
v0.3.2 β auto-quote leading-@ flowchart labels, mermaid.parse regression suite
Patch release.
Fixed
- #17 β A flowchart node label starting with
@(e.g.N[@utils/utils -> β¦]) made Mermaid β₯ 10.5 reject the whole diagram on GitHub ([@is lexed as edge-ID/shape syntax).iago/scripts/sanitize.tsnow auto-quotes such labels insideflowchart/graphblocks β including blocks prefixed by%%comments or%%{init: β¦}%%directives β so posted diagrams self-heal. The authoring rule was added toSKILL.mdandreferences/mermaid-templates.md.
Maintenance
- #17 β New jsdom-backed
mermaid.parse()validation helper and fixture-driven regression suite (cli/tests/fixtures/mermaid/{valid,invalid}/): the exact field-incident diagram is stored verbatim, and every Mermaid block iniago/examples/, the templates reference, and the README is parse-validated on eachbun testrun. - #16 β Gitignore local cocoindex index + blog drafts.
- Aligned version bump across
cli/package.json,.claude-plugin/plugin.json, and.claude-plugin/marketplace.json.
No breaking changes. The CLI is published to npm as @drakulavich/iago@0.3.2 (with provenance); the Claude plugin updates via the bumped marketplace manifests.
Full changelog: v0.3.1...v0.3.2
v0.3.1 β fix standalone-comment diagram replacement
Patch release.
Fixed
- #14 β
iago/scripts/post.tsnow replaces a prior Iago diagram posted as a standalone comment (one with no<!-- review-skill -->marker and no## Reviewheading) in place, instead of posting a duplicate block. This restores the "one block per PR / replaced on the next run" guarantee when the diagram wasn't appended to a/reviewcomment. Internally, the comment search was refactored into a tieredfindTargetCommentId(marker β heading β standalone Iago block β new comment).
Maintenance
- Aligned version bump across
cli/package.json,.claude-plugin/plugin.json, and.claude-plugin/marketplace.json.
No breaking changes. The CLI is published to npm as `@drakulavich/iago@0.3.1` (with provenance); the Claude plugin updates via the bumped marketplace manifests.
Full changelog: v0.3.0...v0.3.1
v0.3.0 β skill-first: dropped the Action, TypeScript runtime helper
Skill-first release. Iago is now driven by your own coding agent β no GitHub Action, no SaaS.
Removed / Breaking
- Dropped the GitHub Action and the
curl | bashinstaller. Install via the Claude plugin orbunx @drakulavich/iago; your own agent draws the diagram. (#5, #9)
Changed
- Runtime helper rewritten in TypeScript (run by
bun), replacing the bash + Python scripts. Requiresbun+gh. (#6)
Fixed
sequence.mdexample now renders (Mermaidloopreserved-keyword collision); ER entity-name fix; sequence-label;β,sanitizing. (#6, #7)
Docs
- Lean, human-first README +
docs/split; newCLAUDE.md(canonical agent config) +AGENTS.md. (#8, #10, #11)
Internal
- Retired the bats suite (tests via
bun test+claude plugin validate); gitignore local dev state. (#9)
Install: bunx @drakulavich/iago install --force Β· Claude plugin: /plugin marketplace update iago-marketplace then reinstall.
v0.2.0 β OpenCode support, npm CLI, Mermaid hardening
Highlights
- OpenCode is now a first-class install target. Both
iagoandsquawkskills install into~/.config/opencode/skills/natively, with auto-detection ininstall.shand the new TS CLI. The skills are also runtime-agnostic β no more hard-coded${CLAUDE_SKILL_DIR}references. @drakulavich/iagoCLI on npm. A Bun + TypeScript CLI ships alongside the bash installer for users who prefernpx/bunx. Exposesinstall,update, anduninstallwith the same target/skill-only flags as the shell installer.- Mermaid rendering hardened. Three layers of defense against the most common rendering failure (
;insidesequenceDiagrammessage labels breaking GitHub's parser): updated authoring rules inSKILL.md+references/mermaid-templates.md, an explicit ban on bypassing the helper script, and a deterministic Python sanitizer that rewrites;β,in sequence messages before posting.
What's new
Skills
feat(skill): make SKILL.md runtime-agnosticβ fallback chain${CLAUDE_SKILL_DIR:-${OPENCODE_SKILL_DIR:-$(dirname "$0")}}(3ae2010)fix(skill): teach iago about Mermaid sequence pitfallsβ;-as-separator and bare-statements-in-altrules added toreferences/mermaid-templates.md(0d593ee)fix(skill): auto-sanitize ';' in Mermaid sequence message labelsβ deterministic safety net runs before posting (1818b5c)fix(skill): require helper script + promote ';' rule to top-levelβgh pr comment/gh api PATCHdirect writes for the diagram are now forbidden by the skill contract (9238635)fix(skill): extract Mermaid sanitizer to standalone Python fileβ fixes a heredoc parse error on macOS bash 3.2 by moving the sanitizer toiago/scripts/sanitize_mermaid.py(c2c6ef5)
CLI (@drakulavich/iago)
Add @drakulavich/iago CLI (TS + Bun) β Phase 2β initial CLI with 41 unit/integration tests (88f05ff)feat: add opencode as a native install targetβ fifth target acrossinstall.sh,cli/src/{args,types,targets}.ts, plus tests (a14f69b)fix(cli): replace Bun-only APIs with node:* equivalentsβBun.file/write/spawnβnode:fs+node:child_process, fixesReferenceError: Bun is not definedundernpx(fdd45c7)feat(cli): npm publish workflow + cli-local README/LICENSEβ tag-triggered publish with provenance (fd8cf0d)
Install / update
Bash installer (existing users β recommended path)
curl -fsSL https://raw.githubusercontent.com/drakulavich/iago/main/install.sh | bash -s -- --forcenpm / bunx (new in this release)
npx -y @drakulavich/iago install
# or
bunx @drakulavich/iago installBoth honor --target=claude|codex|agents|opencode|both, --skill-only=iago|squawk, --force, --dry-run, and --uninstall.
Compatibility
- macOS bash 3.2: tested via the bats CI matrix and explicitly fixed in c2c6ef5.
- Node β₯ 18: required by the npm CLI; Bun also supported.
- OpenCode: native install target. Existing
~/.claude/skills/and~/.agents/skills/installs already light up under OpenCode per opencode docs.
Full changelog
v0.1.1 β clickable footer
Patch release.
What changed
Every auto-generated diagram block now footnotes:
Auto-generated by iago. Edit or remove this block; it will be replaced on the next run.
The repo name is a clickable link, so anyone viewing the PR can find their way back to the project in one click.
Updated across all generation paths β CLI skill template, Action runner, and bundled examples.
Upgrade
- Action users on
@v0.1β already on it (moving tag now points tov0.1.1). - Action users pinned to
@v0.1.0β bump to@v0.1.1(or@v0.1). - Skill users β
git pullin your skill folder.
Full diff: v0.1.0...v0.1.1
v0.1.0 β initial public release
First public release of Iago β Greptile-style Mermaid diagrams for AI code reviews.
What's in the box
- π€ GitHub Action (`drakulavich/iago@v0.1.0`) β comment `/iago` on any PR, no CLI needed.
- π» Claude Code skill β `/iago`, `/squawk`.
- 𦦠Codex CLI skill β same skill, same open standard.
Diagram types
`sequence`, `flow`, `class`, `er` β auto-detected from the diff, override anytime with `/iago `.
Generation modes
- LLM-quality (Anthropic or OpenAI key in secrets).
- Heuristic fallback (no key needed) β basic but always works.
Install (Action)
```yaml
- uses: drakulavich/iago@v0.1.0
with:
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
```
See README for Claude Code, Codex CLI, Copilot, and Gemini install paths.