Features
Three layers: user-facing Skills, bundled
Subagents they spawn, and lifecycle
Hooks that persist sprint state across /clear.
Skills
๐ /todoist-ticket
Convert a plan, PRD, spec, or design file into a structured Todoist user story hierarchy.
- ๐๏ธ Guided spec intake โ checkbox prompt: type the spec inline or load it from a file path.
- ๐ฏ Live project + column picker โ fetches projects/sections from Todoist with a "Create new" fallback (default:
Backlog).
- ๐ง Interrogation loop โ one deep question per turn surfaces ambiguities and hidden dependencies.
- ๐ Scrum format โ
"As a [role], I want [goal], so that [benefit]" with acceptance criteria.
- ๐งฑ Vertical feature slices โ 1 story = 1 shippable capability across every layer. Per-layer steps live as subtasks.
- ๐ฉ Subtasks ordered DB โ API โ UI โ tests so the executor walks them top-down.
- ๐ Direct push into Todoist via MCP.
๐ฆ /todoist-sprint
Slice a Todoist backlog into a high-cohesion sprint sized to your context budget.
- ๐๏ธ Low / Medium / High โ ~60k (3โ5 tasks) ยท ~100k (5โ7) ยท ~150k (7โ10).
- ๐งฉ Dependency sorting โ groups by feature area, sequences DB โ API โ UI.
- ๐ฏ Checkbox project + column selection with "Create new" fallback.
- ๐ค Pairs with
/todoist-execute โ batch sizes tuned to the subagent-discard pipeline.
๐ป /todoist-execute
Implement sprint tasks autonomously through a token-optimized subagent pipeline.
- ๐ Workspace coupling with your active local repo.
- ๐ง Orchestrator + workers โ
ae-investigator โ ae-builder / ae-architect โ ae-reviewer. Main thread stays cold.
- ๐ธ Tiered models โ Haiku for locators/surgical edits, Sonnet for logic/review, optional Opus-boost for multi-file builds.
- ๐ก๏ธ Mandatory quality gate โ every diff passes
ae-reviewer before migration.
- ๐งฑ Auto-classified units โ parent + children = slice unit (atomic); orphans = flat unit.
- ๐ง Repo-persistent contract memory โ gitignored
.claude/ae/shared_context_execute.md survives /clear.
- ๐ชถ Batched distill (5ร) cuts ~50 haiku spawns to ~10 on long runs.
- ๐ flock-guarded memo writes protect concurrent sessions.
- โป๏ธ Discard-after-migrate โ subagent transcripts dropped, one-line receipt kept.
- ๐งผ Atomic slice migration โ pass moves parent + every child; fail leaves all.
๐ /todoist-review
Audit QA tickets, verify UI visually, triage failures back into the sprint.
- ๐งช Toolchain fingerprint โ auto-detects Biome, ESLint, Prettier, TS, Vitest, Ruff, Mypy, Pytest, Cargo, Go, Next/Vite/Expo.
- โก Smoke pass once โ format ยท lint ยท typecheck ยท tests ยท build cached at start, reused across 30โ50 tickets.
- ๐ฏ Dynamic scope cascade โ ticket metadata โ working diff โ
ae-investigator fallback.
- ๐ผ๏ธ UI verification โ boots dev server once, captures Playwright headless screenshots into
.review-artifacts/.
- ๐ Two-line triage cards + one dispatch prompt: bulk move + rerun, per-ticket, or leave.
- ๐ก๏ธ Non-mutating auditor โ
--check / --noEmit only.
- ๐ง Memo-aware reviewer โ reads execute's contracts so intentional reuse is not flagged.
- ๐งผ Self-wipe on queue drain or 7-day staleness.
Subagents
Bundled workers spawned by /todoist-execute and /todoist-review. Each enforces a hard scope ceiling and returns a caveman-compressed receipt โ the orchestrator pays for the receipt, not the worker's transcript.
locate
ae-investigator
โ
edit โค2
ae-builder
or
edit 3+
ae-architect
โ
verify
ae-reviewer
| Agent | Model | File scope | Writes? |
ae-investigator | Haiku | Read-only | โ |
ae-builder | Haiku ยท Sonnet | โค 2 files | โ |
ae-architect | Sonnet ยท Opus | 3+ files | โ |
ae-reviewer | Sonnet | Diff or scope | โ |
๐ ae-investigator
Read-only code locator. Returns a file:line table, refuses to suggest fixes.
- ๐ Locate-only โ
Read, Grep, Glob, read-only Bash.
- ๐๏ธ Caveman-compressed grouped headers cut ~60% tokens vs vanilla
Explore.
- ๐ Hard refusals: asked to fix โ
Read-only. Spawn ae-builder.
- ๐ข Totals footer:
2 defs, 5 refs.
๐ ๏ธ ae-builder
Surgical 1โ2 file edit. Typos, renames, single-function rewrites, format-preserving tweaks.
- ๐ Hard 2-file ceiling โ 3+ files terminates as
too-big. split: โฆ
- ๐ชถ No
Bash โ pure Read / Edit / Write / Grep / Glob.
- ๐
CLAUDE.md conventions enforced. No drive-by refactors.
- ๐ Read โ Edit โ Re-Read. Mismatch surfaces as
verified: mismatch @ path:line.
- ๐ฆ Receipt-only output:
<path:line-range> โ change โค10 words.
๐๏ธ ae-architect
Multi-file build (3+ files or cross-cutting refactor). Writes new files when ticket warrants.
- ๐ Inverse ceiling โ <3 files โ
too-small. use ae-builder.
- โ๏ธ Convention enforcer โ Biome,
/types, /utils, fn โค40 LOC, file โค300 LOC, no console.log, Zod at boundaries.
- ๐งช Read-only
Bash โ git status, git diff, rg, tsc --noEmit, biome check.
- ๐ซ Tombstone-free โ no
// removed comments, no back-compat shims.
- ๐ Receipt:
files: N | new: X | edit: Y | delete: Z + per-file change + summary.
๐งโโ๏ธ ae-reviewer
Code reviewer in two input modes: scope (HEAD) or diff (working/branch/commit).
- ๐ Dual mode โ
files: โ scope; diff_source: โ diff.
- ๐ฏ Criteria-driven โ every unmet criterion = one finding. ๐ด bug / ๐ก risk / โ question.
- ๐งท State-hook aware โ reads
.ae-sprint-state.json, filters by task_id + project_id, narrows git log --since=<ts>.
- ๐ฌ Dynamic discovery โ
Grep/Glob + git log -S for half-merged refactors.
- ๐ Strict output:
path:line: emoji severity: problem. fix. Zero findings โ No issues.
- ๐ก๏ธ Non-mutating โ refuses
git checkout, git reset, npm install, formatter --write.
Hooks
Two lifecycle hooks declared in .claude-plugin/plugin.json. They power the persist-across-/clear guarantee: migration timestamps live on disk and re-inject on the next SessionStart.
| Hook | Event | Trigger |
ae-session-start.js | SessionStart | Every new session / post-/clear |
ae-migration-log.js | PostToolUse | After Todoist update-tasks with section_id |
๐ช ae-session-start.js
Injects today's migrated task IDs and shared memo blocks so the orchestrator resumes cleanly after /clear.
- ๐
Same-day migration replay โ filters
state.migrations[] by today's ISO date.
- ๐ Project-aware skip โ matches by
project_id before skipping.
- ๐ง Dual memo injection โ execute + review shared contexts.
- ๐ชจ 4096-byte memo cap; symlinked files refused.
- ๐คซ Silent-fail; never blocks session start.
- โฑ๏ธ 5s timeout with
Loading sprint state... statusline.
- ๐ฃ๏ธ
$CLAUDE_CONFIG_DIR respected.
๐ช ae-migration-log.js
Logs column migrations to ~/.claude/.ae-sprint-state.json whenever a Todoist update-tasks call moves a task to a new section.
- ๐ฏ Section-move filter โ only fires when
section_id is present.
- ๐ฆ Full lineage โ
task_id, task_content, section_id, project_id, ISO timestamp.
- ๐ Symlink-refusing reader โ
lstatSync() check before parse.
- ๐งพ Atomic write โ
.tmp + renameSync.
- ๐ 200-entry FIFO cap.
- ๐คซ Never blocks Claude โ failures exit
0.
- ๐ฃ๏ธ
$CLAUDE_CONFIG_DIR respected.
State file shape โ ~/.claude/.ae-sprint-state.json
{
"migrations": [
{
"task_id": "1234567890",
"task_content": "Add JWT refresh endpoint",
"section_id": "9876",
"project_id": "5432",
"timestamp": "2026-05-21T14:32:08.421Z"
}
]
}