Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
745d9be
docs(spec): task dependency graph (#104)
atomikpanda May 14, 2026
bb4c6ba
docs(spec): drop soft edges from task dependency graph (#104)
atomikpanda May 14, 2026
b2e5232
docs(plan): task dependency graph implementation plan (#104)
atomikpanda May 14, 2026
296e068
feat(state): add DependencyEdge and Task.depends_on field (#104)
atomikpanda May 14, 2026
1f4672b
feat(task_graph): cycle detection + transitive upstream/downstream qu…
atomikpanda May 14, 2026
3023c19
fix(task_graph): drop unused pytest import; add CycleError surface te…
atomikpanda May 14, 2026
08164c6
feat(task_graph): is_ready query against reconcile decisions (#104)
atomikpanda May 14, 2026
55e4a28
feat(cli): mship depends add with cycle detection (#104)
atomikpanda May 14, 2026
2759f7e
feat(cli): mship depends remove (#104)
atomikpanda May 14, 2026
f2b45ac
feat(cli): mship depends list (--graph) (#104)
atomikpanda May 14, 2026
c4323b2
feat(spawn): --depends-on <slug,...> with cycle + unknown-upstream ch…
atomikpanda May 14, 2026
33a60c3
feat(finish): refuse when upstream task(s) not ready; --bypass-deps o…
atomikpanda May 14, 2026
a4ff125
feat(close): downstream check with --cascade / --detach-downstream (#…
atomikpanda May 14, 2026
0a16bf9
feat(status): dependencies block under resolved_task (#104)
atomikpanda May 14, 2026
dc1950a
feat(dispatch): include ## Dependencies section in prompt body (#104)
atomikpanda May 14, 2026
7216d85
feat(reconcile): dependency_stale state when upstream merged after do…
atomikpanda May 14, 2026
66c079e
docs: document task dependency graph (#104)
atomikpanda May 14, 2026
96914bf
docs(agents): add --bypass-deps to bypass flag examples (#104)
atomikpanda May 14, 2026
d6061b8
test(integration): dependency flow end-to-end (#104)
atomikpanda May 14, 2026
a5182de
fix(#104): dispatch readiness signal; drop dead merge_at getattr in d…
atomikpanda May 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ is supported — `--repos mothership` is the whole invocation.
Workflow specifics live in `skills/`, not here. The relevant ones:

- `skills/working-with-mothership/SKILL.md` — the canonical mship workflow
(session start, phases, switch/finish/close, recovery)
(session start, phases, switch/finish/close, recovery, task dependencies)
- `skills/using-git-worktrees/SKILL.md` — worktree mechanics
- `skills/finishing-a-development-branch/SKILL.md` — finish → PR flow
- `skills/verification-before-completion/SKILL.md` — what "done" means
Expand All @@ -31,5 +31,5 @@ stop and read it.
## Bypass flags

Safety overrides use `--bypass-<check>` (e.g. `--bypass-reconcile`,
`--bypass-base-ancestry`), not `--force-<check>`. `--force` is the
`--bypass-base-ancestry`, `--bypass-deps`), not `--force-<check>`. `--force` is the
all-bypass nuclear option; prefer the targeted flag.
3 changes: 2 additions & 1 deletion GEMINI.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ session-start protocol Claude Code and Codex use.
**When you see a `mothership.yaml` in the repo, follow
`skills/working-with-mothership/SKILL.md` before any other action.** It spells
out: `mship status` → `mship log` → `mship switch <repo>` at session start,
and the full spawn → phase dev → test → finish → close lifecycle.
the full spawn → phase dev → test → finish → close lifecycle, and task-to-task
dependencies via `mship depends`.

See `README.md` for the full pitch and CLI reference.
25 changes: 25 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,31 @@ Requires Python 3.14+ and [uv](https://docs.astral.sh/uv/). Optional: [go-task](

The quickstart above is deliberately minimal — one repo, one file — to show the task lifecycle in isolation. For the multi-repo case mship was built for, see [`docs/configuration.md`](docs/configuration.md) for `mothership.yaml` examples with dependency graphs, healthchecks, and `env_runner` delegation, and [`docs/cli.md`](docs/cli.md) for the full command surface including `mship spawn --repos`, `mship switch`, and cross-repo `mship finish`.

## Cheat sheet

```bash
# Workflow
mship spawn "description" # start a task in isolated worktrees
mship switch <repo> # context switch across repos
mship phase plan|dev|review|run # transition through phases
mship test # run tests in dependency order
mship finish --body-file - <<'EOF'... # open PR(s)
mship close # clean up task state and worktrees

# Task dependencies (#104)
mship spawn "downstream" --depends-on a,b # declare at spawn
mship depends add/remove/list # manage task-to-task dependency edges
mship finish --bypass-deps # ship a downstream even if upstream isn't ready

# Inspection
mship status # active task, phase, branch, drift
mship journal # task log with context
mship context # JSON snapshot of workspace state
mship graph # dependency graph across all tasks
```

For details, see `mship spawn --help`, [`docs/cli.md`](docs/cli.md), and the `working-with-mothership` skill.

## What mship gives agents

**Cross-repo coordination as a first-class concept.** A task in mship is a single unit of work that can span many repos. `mship spawn "propagate user schema v2" --repos schemas,svc-users,svc-billing,api,api-client` creates one worktree per repo on a shared feature branch. `mship test` runs them in dependency order. `mship finish` opens five PRs in dependency order with coordination blocks in each body linking the others. Audits catch drift per repo. The agent operates on "the task" — mship tracks which files across which repos belong to it.
Expand Down
Loading