clean-architecture
クリーンアーキテクチャの依存ルールを moka-1 のミニマリズム制約下で適用する指針。レイヤ分割・interface 設計・依存方向の判断基準と、過剰抽象化を避けるガードレールを提供する。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
クリーンアーキテクチャの依存ルールを moka-1 のミニマリズム制約下で適用する指針。レイヤ分割・interface 設計・依存方向の判断基準と、過剰抽象化を避けるガードレールを提供する。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Rust ベストプラクティス(Plecto WASM フィルタ向け、Edition 2024)。plecto:filter WIT コントラクトを実装する WASM Component Model フィルタの規約とツールチェーン。
Grilling session that challenges your plan against moka-1's documented design decisions (tenets, ADRs) and domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise. Use when the user wants to stress-test a plan against the project's language and documented decisions, or says 「設計を詰めて」「用語を固めて」「ドキュメントと突き合わせて」.
Web調査の方法論。一次ソース(RFC・公式仕様・公式ドキュメント・原論文・ソースコード)を最優先し、検索クエリの多角化・横断的検証(lateral reading)・独立ソースでの三角測量を経て、出典付きで報告する手順。
moka-1 スタックの Docker Compose 操作と compose.yaml の書き方。ワンキック起動・開発ループ・ヘルスチェック・開発機(iGPU/Vulkan)固有設定・トラブルシュート。
Go ベストプラクティス(moka-core 向け、Go 1.26+)。常駐エージェントループ・LLM クライアント・フィード取得を含む moka-core の実装規約。
Python ベストプラクティス(eval/ 専用、Python 3.14 + uv + Pyrefly + Ruff)。モデル A/B・プロンプト評価スクリプトの規約と再現性の作法。
| name | clean-architecture |
| description | クリーンアーキテクチャの依存ルールを moka-1 のミニマリズム制約下で適用する指針。レイヤ分割・interface 設計・依存方向の判断基準と、過剰抽象化を避けるガードレールを提供する。 |
原典: Robert C. Martin の The Clean Architecture。ただし moka-1 は「1コマンド・少数コンテナ・単一言語」制約(tenets §2)が先にあるので、教科書の4層をそのまま持ち込まず、依存ルールだけを不変条件として運用する。
ソースコードの依存は内側(ビジネスルール)にだけ向く。内側は外側を知らない。
内側 → 外側の順:
store(pgx)、llm(OpenAI互換HTTP)、httpapi(ServeMux)、feed のフェッチャチェック方法: import 文を見る。ユースケース層のファイルが pgx や net/http を import していたら違反。
教科書の同心円を Go のパッケージ境界に畳む(tenets §3.1「プロセス境界ではなくパッケージ境界」)。ディレクトリを domain/ usecase/ adapter/ に切り直すのではなく、機能パッケージ(feed, enrich, rag, ...)の内部で依存方向を守る:
internal/enrich/
├── enrich.go # ユースケース: キュー処理の手順。interface にのみ依存
├── types.go # ドメイン: 濃縮結果の構造と検証規則
└── (具象は注入) # llm.Client, store.Pool は main で配線
enrich が要約を必要とするなら enrich パッケージ内に最小の interface を書き、llm の具象を cmd/moka/main.go で注入する。詳細は bp-go 参照common/, utils/)は作らないクリーンアーキテクチャの最頻出の失敗は層の不足ではなく層の過剰。以下を守る:
新しい依存を足したい
├─ プロセス外 I/O か? ── yes → 消費側に最小 interface + main で注入
│ no ↓
├─ 同一パッケージ内で完結するか? ── yes → 直接呼ぶ。抽象化しない
│ no ↓
└─ ドメイン型の共有で足りるか? ── yes → 型だけ共有し、挙動は各パッケージに
no → パッケージ境界の再検討(設計判断なので ADR 候補)
httptest や testcontainers が必要になったらそれはアダプタ層のテストgo list -deps で内側パッケージの依存を確認docs/tenets/moka-tenets.md §2(設計原則)・§3.1(パッケージ境界)