MoonBit / Rust の dependency を複数リポジトリに対して一括で更新・運用するための管理リポジトリです。 モノレポではありません。
- 複数の非 monorepo なリポジトリをまとめて clone / update
moon-dstを使って依存更新を一括で実行moon fmt/check/build/clean/testを turbo 風に一括実行
gh(GitHub CLI,gh skill拡張を含む)git-wtjustmoon/moon-dstjq- moon-dst
cargo install moon-dst
skill を明示的に初期化する場合:
just skills-initmoonbit-agent-guide と moonbit-refactoring を moonbitlang/moonbit-agent-guide から codex の user scope (~/.codex/skills/) に gh skill install します。
関連する skill marketplace:
git worktree / bare repo layout の参考:
target-repos/<repo>.git/.wt/main は default branch の baseline checkout として固定します。この worktree で branch を切ったり tracked file を変更したりせず、実装変更は just codex-start <repo> <task-slug> または just target-task-start <repo> <task-slug> を入口にして専用 worktree へ切り出します。
- 親 thread は moonrepo 側に残って orchestration だけを行う
- 実装変更は対象 worktree を所有する Codex worker sub agent に寄せる
- 親 thread は最後に review / verification / push / draft PR 作成を担当する
just codex-start は .wt/main が default branch で clean、upstream が origin/<default-branch>、local ahead なしであることを確認し、target-repos/<repo>.git/.wt/codex/<task-slug>/ と codex/<task-slug> branch、.codex/tasks/<repo>-<task-slug>.json manifest を作ります。完了後に worker 起動用の Codex prompt を出力します。
Codex worker を使わない手作業や recipe 用の worktree は、次で作ります。
just target-task-start <repo> <task-slug>
just target-main-check <repo>
just target-main-check-all状態確認と PR 作成:
just codex-status <repo> <task-slug>
just codex-pr <repo> <task-slug>just codex-pr は worktree の clean 状態、upstream、gh 認証、base branch の required checks を確認し、通過時だけ draft PR を作成します。
ドキュメント専用の review では、repo local skill docs-humanizer を使います。Zenn の anti-AI-writing 記事をもとに、日本語の repository docs 向けチェックリストと audit script を入れています。
MoonBit target repo の implementation / review で opencode-review-loop を使う場合は、opencode の implement / review prompt に moonbit-agent-guide を使うことを明記します。MoonBit API、package 構造、refactor、公開面の整理を含む場合は moonbit-refactoring も併用します。review は guard script 経由で exact LGTM まで回し、変更範囲に応じて moon check、moon test、必要なら moon info / moon test --target all を通します。
repository.iniを初期生成
GitHub topic で対象 repo を絞り込みます(OR 条件)。初期状態は全てコメントアウトしています。
just init <owner> --topics moonbit rust--topics 未指定時は moonbit rust が使われます。
repository.iniの[repositories]で#/;コメントを外して、今回 clone / 一括運用したい対象だけを有効化
[rally.teams] には、関連の強い target repo 群を ral team として定義できます。通常の clone / pull / deps 系 recipe は [repositories] だけを対象にします。
[repositories]
f4ah6o/papyr.mbt
f4ah6o/papyr-docs.mbt
f4ah6o/blog.mbt
[rally.teams]
papyr = papyr.mbt, papyr-docs.mbt, blog.mbt- clone(初回)
just clonejust clone は各リポジトリを bare clone (target-repos/<name>.git/) として取得し、その既定ブランチ(origin/HEAD)を target-repos/<name>.git/.wt/main/ に git worktree add します。bare repo には wt.basedir=.wt を設定します。.wt/main は baseline として固定し、複数ブランチで並行作業したい場合は just codex-start または just target-task-start から追加 worktree を生やしてください。レイアウト変更時は just --set FORCE 1 cclone で作り直してください。
- pull(既存リポジトリの更新)
just pull一括系 recipe は既定で repository.ini の有効行だけを対象にします。target-repos/ にある全 .wt/main worktree を対象にしたい場合は REPO_SCOPE=cloned を明示します。
just --set REPO_SCOPE cloned status-all- 依存更新
just deps-apply-all- topic 運用
既存 .mbt 命名ルールで拾える repo に moonbit topic を追加する migration(dry-run 既定):
just topics-migrate-moonbit
just topics-migrate-moonbit --applyrepository.ini の有効行に任意 topic を追加(dry-run 既定):
just topics-add-from-ini rust
just topics-add-from-ini rust --apply- 対象 repo の実装作業を始める場合
just codex-start <repo> <task-slug>出力された prompt に従って worker を起動し、実装は作成済み worktree で進めます。親 thread は just codex-status で状態を見て、最後に just codex-pr で draft PR を開きます。
- 対象 repo の document を監査・改善する場合
just docs-audit <repo>
just docs-review <repo> <task-slug>just docs-audit は tracked documents を対象に、AI っぽい文体の機械検査を行います。just docs-review は codex-start で専用 worktree を作り、その worktree に対して docs-humanizer skill と audit の手順を出力します。
cgzを開発補助に使う場合
cgz はインストール済み CLI として扱います。moonrepo は codegraph リポジトリを clone 対象として管理しません。
just cgz-status <path>
just cgz-context <path> <task>
just cgz-affected <path> <files...>これらは read-only helper です。.codegraph/ の初期化や更新が必要な場合は、対象 repo で明示的に cgz init -i <path> や cgz index <path> を実行してください。
dwikiで repo 概要を低トークンに調べる場合
repo local skill dwiki-workflow を使います。dwiki は任意のインストール済み CLI として扱い、moonrepo の必須コマンドには含めません。
command -v dwiki
dwiki check <owner>/<repo> --output json
dwiki read <owner>/<repo> --output json | jq -r .result
dwiki ask <owner>/<repo> "Where is request routing implemented?" --output json | jq -r .result
dwiki search <owner>/<repo> "SessionStore" --output json | jq -r .resultdwiki の結果は概要把握と候補ファイル探しに使います。実装変更や調査結論は、対象 repo の local file を読んで確認してください。
ralで agent 間の短い連絡を扱う場合
ral は任意の helper です。moonrepo の task state は .codex/tasks/*.json、git、GitHub を正とし、ral は親 thread、Codex worker、Claude Code、OpenCode reviewer の短い依頼や完了通知にだけ使います。
現時点では ral skills が crates.io の 2026.5.0 には入っていないため、just rally-install は f4ah6o/rally-rs の確認済み revision を指定して install します。
just rally-install は cargo を使います。
ral install は ~/.agents/skills/ral/ に skill、wrapper、SQLite DB、team 設定を作り、Codex 用の writable roots を ~/.codex/config.toml に追記します。
just rally-install
just rally-status
just rally-skills
just rally-join <team> <agent>
just rally-whoami
just rally-inbox <team> <agent>
just rally-send <team> <from> <to> "<message>"
just rally-history <team>
just rally-team <team>
just rally-mode turnCodex では turn mode を使います。team 名は repo-task-slug のように、対象 repo と作業内容が分かる名前にします。
関連 repo group を team として扱う場合は、repository.ini の [rally.teams] を使います。team 名は repo-group-<group>、agent 名は repo basename、親 thread は moonrepo です。changelog は docs/rally/<group>/ に markdown として残し、ral が使える場合だけ短い通知も送ります。
just rally-groups
just rally-group papyr
just rally-group-validate
just rally-group-join papyr
just rally-group-send papyr moonrepo all "papyr content bridge follow-up"
just rally-changelog papyr papyr.mbt content-bridge "content bridge downstream follow-up"- 前提と対象状態の確認
just doctor
- 余剰 clone の確認 / 削除
just target-repos-prunejust target-repos-prune --apply
- 依存の一覧
just deps-scan-all
- 依存更新(dry-run)
just deps-apply-all --dry-run
- topic migration(dry-run / apply)
just topics-migrate-moonbitjust topics-migrate-moonbit --apply
repository.ini対象に topic を追加(dry-run / apply)just topics-add-from-ini rustjust topics-add-from-ini rust --apply
- f4ah6o の
moonbittopic 付き repo 全部の moonbit toolchain を一括更新just moonbit-bump-scanjust moonbit-bump 0.1.20260215just moonbit-bump 0.1.20260215 --apply.tool-versionsと.github/workflows/*.ymlの install 行のみを更新します。moonbitlang/*deps の更新はjust deps-apply-allを別途実行してください。
- justfile 追加
just deps-just-all
- moon 一括
just moon-fmt-alljust moon-check-alljust moon-build-alljust moon-clean-alljust moon-test-all
- 全 clone を対象にしたい場合
just --set REPO_SCOPE cloned <recipe>
target-repos/を全削除して作り直すjust --set FORCE 1 cleanjust --set FORCE 1 cclone
- failed workflow の rerun(dry-run 既定)
just gh-runs-rerun-failed-alljust gh-runs-rerun-failed-all --apply
- 単一 repo の refactoring 準備(moonbit-refactoring skill を使う)
just refactor <repo>- 対象 repo の clean 状態、moon モジュール認識、skill インストール済みを検証し、ブランチ作成と skill 起動の手順を出力します。
- 将来的には
just codex-start <repo> <task-slug>ベースの入口へ寄せる前提ですが、現状は MoonBit refactoring 専用の軽量フローとして残します。
- MoonBit repo の opencode review loop
opencode-review-loopを使う場合もmoonbit-agent-guideを併用します。- API / package / refactor を含む作業では
moonbit-refactoringも併用します。 - opencode prompt には MoonBit skill 利用、unrelated changes を戻さないこと、検証コマンド、exact
LGTM条件を明記します。
- document audit / improvement
just docs-audit <repo>just docs-audit-alljust docs-review <repo> <task-slug>- audit は tracked
.md/.mdx/.txt/.rst/.adocを対象に、機械検査で拾える AI っぽいパターンを報告します。改善時は repo local skilldocs-humanizerを使います。
cgzdevelopment helperjust cgz-status <path>just cgz-context <path> <task>just cgz-affected <path> <files...>- repo local skill
cgz-workflowを使い、インストール済みcgzCLI を read-only な探索・影響確認に使います。
dwikioverview helper- repo local skill
dwiki-workflowを使い、dwiki check/read/ask/searchで概要や候補ファイルを低トークンに調べます。 dwikiは任意コマンドなので、未インストール時は通常の local file 探索に戻ります。
- repo local skill
ralagent messaging helperjust rally-installjust rally-statusjust rally-skillsjust rally-join <team> <agent>just rally-whoamijust rally-inbox <team> <agent>just rally-send <team> <from> <to> "<message>"just rally-history <team>just rally-team <team>just rally-mode turnjust rally-groupsjust rally-group <group>just rally-group-validatejust rally-group-join <group>just rally-group-inbox <group> <agent>just rally-group-send <group> <from> <to|all> "<message>"just rally-changelog <group> <source-repo> <slug> "<summary>"ralは任意コマンドです。just doctorの必須前提には含めません。
運用フローは AGENTS.md を参照してください。