Repository navigation
igris v0.4.0
igris runs the tasks in your markdown project plan one at a time, each in a fresh Claude Code session, started with exactly the model your plan assigns to that task.
v0.4.0 lets your plan say more about each task: which checks to run when it's done, how long it should take, and which files the session must read first. igris can also run just part of a plan, put a task back, run your own commands around every session, and lint a plan for CI. Everything is optional: no plan migration is needed. One default changes: sessions now run in Claude Code's auto permission mode unless your igris.toml sets default_mode.
Highlights
- Verify profiles. Name your checks in
igris.toml([verify] fast = "go test ./internal/...",full = "make fmt lint test"), give a phase its own with[phases.<id>] verify, and pick one per task with the newVerifycolumn, ornoneto skip. Plans name profiles, never commands.run.verifykeeps working as the profiledefault. See Verification and commits. - Timeout column.
45m,1h30m(at least1s): a session running longer is marked overdue, raises Needs you and sends the newtask_overduenotification, once per attempt. igris never stops the session for it. - Context column. Repo-relative files and directories the session reads before changing anything, listed in the task prompt as required reading. igris names the paths and never sends their contents; every path must exist inside the project.
- Run a slice.
igris arise --only M1-03,M1-05,--from M1-03,--until M2-02. Dependencies still count: a slice task that waits on unfinished work is reported asnot run, never forced. A bareariseresumes the same slice. igris reset ID [--force]. Put a task back toreadyorblockedto run it again, with or without an igris running. While igris runs, it asks you to confirm the reset first (a session could request one too). Resetting the task igris is on closes its session and pauses the run.- Task hooks.
[hooks] before_task/after_taskrun your own commands (argv lists, no shell) around every agent session, e.g. to start a dev database. A failingbefore_taskopens no session and asks you what to do. igris check --strict. Lints the plan (missing bold titles, overlong rows, gates that miss tasks of their phase,yolorows, …) and exits 1 on any plan or config warning. Machine warnings never fail it, so it runs in CI without Claude Code.
A worked example is in examples/advanced/: the example plan with Verify profiles, Timeouts and Context paths, and the igris.toml that defines its profiles.
Upgrade
brew upgrade igris # or: brew install drilonrecica/tap/igris
go install github.com/drilonrecica/igris/cmd/igris@v0.4.0Or download the archive for your platform below, check it against checksums.txt, and put the binary on your PATH:
sha256sum --ignore-missing -c checksums.txt # macOS: shasum -a 256 --ignore-missing -c checksums.txt
tar xzf igris_0.4.0_<os>_<arch>.tar.gz
install -m 755 igris ~/.local/bin/igris
igris versionYour v0.3 plans and configs work unchanged, with the exceptions below: a config without default_mode now runs sessions in auto mode, a plan column already named Verify, Timeout or Context is read as the new column, and a config written by v0.3 igris init doesn't send the new task_overdue on ntfy or Discord by itself. A run interrupted under v0.3.x resumes normally; if your config sets neither default_mode nor an events list, you get a one-time warning that igris.toml changed since the interrupted run (both defaults changed, so the config's hash differs even if you didn't edit the file).
Behavior changes
autois the default run mode. Configs that don't setdefault_modenow run sessions with--permission-mode auto: Claude Code approves routine actions itself and still asks you about risky ones. Setdefault_mode = "default"to keep every prompt going to you. Skip-permissions (yolo) still needs the typedskip permissionsconfirmation every run.Verify,TimeoutandContextare now column names igris reads. If your plan already has a column with one of these names for something else (a command, an estimate, notes),igris checkmay now reject it. Rename the column (e.g.Verify notes), letigris adaptdo it, or keep it as an extra column with an alias inigris.toml([columns]Context = "Background"). These columns no longer reach the session prompt as extra columns.task_overdueis in every channel's defaultevents. If your config listsevents(every config written by v0.3igris initdoes), add it there or remove theeventsline to hear about overdue tasks.igris initnow leaveseventsout while it is the default list, so new configs follow the defaults.igris adaptkeeps Verify, Timeout and Context cells as written and never invents profiles, timeouts or paths.- Plain
igris checkis unchanged; the lint hints appear only with--strict.
Known limitations
- Linux and macOS; Windows through WSL2 only, not yet verified on a real Windows machine.
- Release artifacts are not signed (SHA-256 checksums only).
See CHANGELOG.md for every change in this release and the README for the full guide.