Day to day
What you say and what happens: a fix, quick edits, a feature, new scope, two things at once.
On this page
You talk, it routes
You never need a station name. Say what you want, in any language. The conductor answers in yours.
| You say, roughly | It runs |
|---|---|
| "Let's discuss the idea", "what do you think" | moku:brainstorm |
| "Show me how it looks", "draw it" | moku-design:design |
| "OK, plan it and build it", "go" | moku:plan, then moku:build, each with its gate |
| "Check that everything is right" | moku:verify |
| "Check it in the browser", "and on a phone" | moku-web:e2e, moku-game:playtest for a game |
| "Make sprites, music, a voice" | moku-ai:moku-ai |
| "Where are we", "what is next" | moku:status |
| "Clean up after yourself" | moku:clean |
Fix a bug
The login button does nothing on Safari. Find out why and fix it.
Size S when it stays in one plugin. The conductor opens the change and reproduces the bug with a failing test when that is practical. It fixes inside the plugin and runs verify, then the closing checklist. There is no plan, because the public API does not change.
Make quick edits
Quick edits: move the logo left, make the hero title smaller, recolor the button.
Size Q. Each message is the next edit, made at once. moku-rails tier counts from the files who
makes it: a fast agent, or the builder for an edit that creates a file or touches a public surface.
Nothing is checked in between. When you say the edits are right, verify runs once.
Add a feature
Add a dark mode toggle.
Size M when an API changes or a new plugin appears. The conductor proposes the design station, because there is UI. You can say no, and it records your words. Then a delta spec, and you approve it after you saw it. Then build, verify, e2e and release.
Change your mind in the middle
Also add a language switch next to the toggle.
This is scope, not a continuation. The conductor runs moku-rails scope, the change goes back in
front of plan, and the new part gets a delta spec. A running builder keeps working. A message of
yours does not stop it.
Keep an idea for later
Later we could add RSS. Not now.
It goes to the backlog with moku-rails idea, and the current work carries on. /moku:status lists
it.
Come back after a break
Where are we?
Debts come first. A change left inside a station is named, and you choose.
Last time we left the streak fix unfinished. Finish it first, or set it aside?Setting it aside takes a reason: moku-rails park <id> --reason "...".
Work on two things at once
Use two git worktrees, one session in each. Nothing in one worktree stops the other: not a station
left open, not a wave marked active, not a new message. moku-rails status lists the other checkouts'
work under Elsewhere. Decisions, specs and the ledger are shared.
git worktree add ../my-app-search -b feat/search cd ../my-app-search && bun install
When a worktree is removed, its change stays. moku-rails adopt <id> moves it to the checkout where
the work goes on.
Tests
The same rules hold in every station, for the builders and for the conductor:
- Name the bug a test catches before you write it. No bug to name, no test.
- Not a test: a constant compared with its own value, what
tscalready proves, a test of plain data. - Green tests are checked by breaking the code, once per logic file. If no test fails, the hole gets closed.
- Deleting a test takes your word, after the conductor lists it with the reason. So does changing a coverage threshold.
When moku-rails close reports slow tests, the conductor names them and offers a change of its own
to speed them up. It never changes a test for speed without your yes.
Clean up
Clean up after yourself.
moku:clean archives closed changes, distills a cycle into history.md, and removes the ephemeral
files. It keeps the durable knowledge, and it asks first. When the same agent mistake repeats, it
proposes a gate.
Move the stack forward
Upgrade this project to the current Moku stack.
moku:upgrade detects what applies (TypeScript, tooling versions, tsconfig defaults, the engines
floor, the framework versions), shows one plan, applies it and verifies.
- A refusal is the architecture protecting itself. The answer is the missing step, not a way around it.
- "Just write the code" still gets the plan station, on M and L. It is small and fast, because builders with no spec drift apart.
- A merged package change closes after its release. The conductor runs
bun run release waitand reports the version. - To step outside the rails, set the plugin option
railstowarnoroff. See How it works.