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
AgentModelFile scopeWrites?
ae-investigatorHaikuRead-onlyโ€”
ae-builderHaiku ยท Sonnetโ‰ค 2 filesโœ“
ae-architectSonnet ยท Opus3+ filesโœ“
ae-reviewerSonnetDiff 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.

HookEventTrigger
ae-session-start.jsSessionStartEvery new session / post-/clear
ae-migration-log.jsPostToolUseAfter 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"
    }
  ]
}