Milestones
List view
The development loop itself: keeping it honest, and making it run on a harness other than Claude Code. Source: `internal/thunderstorm.md` (`01M2PWX233GKXE5M9SPTNTGN0D`), `internal/models.md`, and the notebook pages `agents-md.md`, `skills.md`, `pi.md`, `codex-prompts.md`. ### What portability actually costs Four things carry across harnesses today, and four do not. | Layer | Portable | Why | | --- | --- | --- | | Repository guidance | Yes | `AGENTS.md` is plain markdown with no schema, and symlinks to `CLAUDE.md`. | | Skills | Mostly | A skill is a directory with `SKILL.md` frontmatter; `.agents/skills` symlinks to `.claude/skills` for harnesses following the AGENTS.md convention. | | Board access | Yes | `gh` locally. Only the MCP transport is Claude-specific. | | Git discipline | Yes | `.githooks/`, `push-verified.sh`, the checks under `.claude/scripts/`. | | Slash commands | **No** | `.claude/commands/` is a Claude Code format. Codex, Pi and OpenCode each discover prompts differently. | | Subagent dispatch | **No** | `.claude/agents/` is Claude-specific, and Pi ships no subagents at all: it prefers separate sessions, files and tmux. A run on Pi is sequential or it is several sessions. | | Tool permissions | **No** | `settings.json` allow/deny is Claude Code. Codex has sandbox modes, OpenCode has agent permissions, Pi documents local execution and defers to containers. | | Model roles | Partly | `internal/models.md` names Codex and Pi assignments; OpenCode Go and Cursor are `todo`. | ### Order #109 first. Every other issue here produces prose, and ten catalogued tells shipped in one session under rules that were already written down. Then the rest of the honesty work in #12: a loop that contradicts itself is worse on four harnesses than on one. Portability after, in #104, starting with the layers that already carry. ### Where this ends Thunderstorm becomes something another repository installs rather than copies: a plugin for Claude Code, and whatever the equivalent is for Pi, which loads extensions, skills, prompts and themes at startup. #110 carries it, and it waits on #100 and #101 — a package that installs a command format Pi cannot read, or a review sequence Pi cannot dispatch, installs a broken loop. ### Not here The product. The TUI is **UI Polish** and the binary is **Thndrs Self Development**.
No due date•0/2 issues closedThis repository's own work runs on `thndrs`. The binary installs, the non-interactive surface is callable without six flags, a session survives being resumed, and `thndrs` reports its own state honestly enough to trust the answer. Every defect here was found by running the 0.1.1 binary against this workspace for ten minutes, and none of it was on the board. Source: `internal/ideas/usability-and-tool-interop.md`. ### Order | Issue | Runs when | | --- | --- | | #64 usable outside the TUI | First. Tell the truth, then be callable. | | #94 worth reaching for | After #64's #57 lands. | ### What crosses them - #57 (in #64) fixes skill discovery. #91 (in #94) consolidates the severity type its diagnostics report through, and #63 (in #94) reads the same discovery layer for `.claude/commands`. Both are recorded as blocked by #57. - #59 settles what the byte limits mean before #58 gives the JSONL flags defaults. Both in #64. - #3 (in #94) tags a release. Nothing can be installed until it lands, and the MCP server surface waits on it entirely. ### Not here An MCP server surface, which follows #3. Teaching `thndrs` about Mire in code. Lndrs, which keeps its own track. Anything about how the TUI looks, which is UI Polish.
No due date•0/13 issues closedThe interface is one a person would choose to look at. A transcript row speaks one vocabulary, the palette is legible and asserted to be, and every change to either is verified against a rendered frame. Plans: `internal/features/transcript/plan.md` (`01M2RP8M7WPM6D6SMA4TF6ZHKW`) and `internal/features/tui-verification/plan.md`. ### Order | Issue | Runs when | | --- | --- | | #26 captures | First. It is how the rest is checked. | | #27 vocabulary | After #26's baseline is committed. | | #75 design system | Beside #27. Different files. | | #93 spend the vocabulary | After #27's #39 lands. | ### What crosses them - `cli/renderer/view/transcript.rs` is written by #39 (in #27) and by #43 and #42 (in #93). #39 merges before either; no two of the three at once. - #75 writes `cli/renderer/style.rs` and the theme. No collision with #27 or #93, so it runs beside them. - #83 (in #26) reads the typed outcome #38 (in #27) persists. Recorded as a dependency. - Capture before render: run #26 to a committed baseline so every later change carries the frames it produced. A preference, not a dependency.
No due date•1/24 issues closed