ターゲットとする機能のベースライン: codex cli Ref_URL=https://github.com/openai/codex.git ターゲットとする機能をベースに拡張すべき機能を有するPJ: /Users/shunsuke/dev/01-miyabi/_core/miyabi-private === # miyabi-cli-standalone **Miyabi CLI Standalone** - 軽量スタンドアロン版 Miyabi CLI/TUI ## プロジェクト概要 Miyabi本体から独立した軽量CLIツール。TUI (Terminal User Interface) とCLI機能を提供。 ## 技術スタック - **言語**: Rust 2021 Edition, TypeScript - **TUIフレームワーク**: Ratatui + Crossterm - **CLIフレームワーク**: Clap - **非同期ランタイム**: Tokio ## ディレクトリ構造 ``` miyabi-cli-standalone/ ├── crates/ │ ├── miyabi-cli/ # CLI実装 │ ├── miyabi-core/ # コアライブラリ │ └── miyabi-tui/ # TUI実装 ├── src/ # TypeScriptソース │ └── index.ts ├── tests/ # テスト ├── .claude/ # Claude Code設定 │ ├── agents/ # Agent仕様 │ ├── commands/ # カスタムコマンド │ └── prompts/ # プロンプト ├── docs/ # ドキュメント ├── logs/ # ログ ├── reports/ # レポート ├── Cargo.toml # Rustワークスペース設定 ├── package.json # Node.js設定 └── .miyabi.yml # Miyabi設定 ``` ## 開発コマンド ### Rust ```bash # ビルド cargo build --release # テスト cargo test --all # Lint cargo clippy --all-targets -- -D warnings # フォーマット cargo fmt --all ``` ### TypeScript ```bash # インストール npm install # ビルド npm run build # Lint npm run lint ``` ## コミット規約 Conventional Commits準拠: - `feat:` - 新機能 - `fix:` - バグ修正 - `refactor:` - リファクタリング - `docs:` - ドキュメント - `test:` - テスト - `chore:` - その他 ## 環境変数 ```bash GITHUB_TOKEN=ghp_xxx # GitHub PAT RUST_LOG=info # ログレベル RUST_BACKTRACE=1 # バックトレース ``` ## Miyabi統合 ```bash # ステータス確認 miyabi status # Agent実行 miyabi agent run coordinator --issue <番号> ``` ## コーディング規約 ### Rust - `cargo fmt` でフォーマット - `cargo clippy` 警告ゼロ - Result型でエラーハンドリング - async/awaitでの非同期処理 ### TypeScript - ESLint設定に従う - 厳格な型付け --- ## Polaris (DTP) — 確定的タスク実行プロトコル このリポには Polaris が統合されている。全エージェントは以下のルールに従うこと。 ### 必須: タスク作業前に miyabi gate を使う ```bash # 1. タスク登録(Issue 番号必須) miyabi gate register --issue --title "タスク名" # 2. 影響分析を記録 miyabi gate impact --risk --symbols # 3. ファイルロックを獲得してから作業開始 miyabi gate assign --agent <自分の名前> --node <マシン名> --files "変更するファイル" # 4. ブランチを記録 miyabi gate branch feature/issue-- # 5. PR を記録 miyabi gate pr # 6. merge を記録 miyabi gate merge ``` ### 禁止 - `miyabi gate assign` せずにファイルを編集する → pre-commit hook が拒否 - ロック中の他人のファイルに触る → CLI が拒否 - Issue なしでタスクを始める → GATE 0 が拒否 - HIGH/CRITICAL risk を承認なしで進める → GATE 3 が拒否 ### 確認コマンド ```bash miyabi gate status # タスク一覧 miyabi gate locks # ロック中ファイル miyabi gate dag # 依存関係 miyabi gate dispatchable # 実行可能タスク miyabi gate attach # コンテキストアタッチメント表示 miyabi gate dream # 学び抽出 miyabi gate serve # Web ダッシュボード (localhost:4848) ``` ### 緊急時 ```bash miyabi gate force-unlock --reason "理由" --operator "名前" miyabi gate manual-complete --reason "理由" --operator "名前" ``` ### バイナリ - リリースビルド: `target/release/miyabi` - PATH: `~/bin/miyabi-gate` - ビルド: `cargo build --release` --- **このファイルはClaude Codeが自動参照します。** # GitNexus — Code Intelligence This project is indexed by GitNexus as **miyabi-cli-standalone** (5866 symbols, 12893 relationships, 300 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. > If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first. ## Always Do - **MUST run impact analysis before editing any symbol.** Before modifying a function, class, or method, run `gitnexus_impact({target: "symbolName", direction: "upstream"})` and report the blast radius (direct callers, affected processes, risk level) to the user. - **MUST run `gitnexus_detect_changes()` before committing** to verify your changes only affect expected symbols and execution flows. - **MUST warn the user** if impact analysis returns HIGH or CRITICAL risk before proceeding with edits. - When exploring unfamiliar code, use `gitnexus_query({query: "concept"})` to find execution flows instead of grepping. It returns process-grouped results ranked by relevance. - When you need full context on a specific symbol — callers, callees, which execution flows it participates in — use `gitnexus_context({name: "symbolName"})`. ## When Debugging 1. `gitnexus_query({query: ""})` — find execution flows related to the issue 2. `gitnexus_context({name: ""})` — see all callers, callees, and process participation 3. `READ gitnexus://repo/miyabi-cli-standalone/process/{processName}` — trace the full execution flow step by step 4. For regressions: `gitnexus_detect_changes({scope: "compare", base_ref: "main"})` — see what your branch changed ## When Refactoring - **Renaming**: MUST use `gitnexus_rename({symbol_name: "old", new_name: "new", dry_run: true})` first. Review the preview — graph edits are safe, text_search edits need manual review. Then run with `dry_run: false`. - **Extracting/Splitting**: MUST run `gitnexus_context({name: "target"})` to see all incoming/outgoing refs, then `gitnexus_impact({target: "target", direction: "upstream"})` to find all external callers before moving code. - After any refactor: run `gitnexus_detect_changes({scope: "all"})` to verify only expected files changed. ## Never Do - NEVER edit a function, class, or method without first running `gitnexus_impact` on it. - NEVER ignore HIGH or CRITICAL risk warnings from impact analysis. - NEVER rename symbols with find-and-replace — use `gitnexus_rename` which understands the call graph. - NEVER commit changes without running `gitnexus_detect_changes()` to check affected scope. ## Tools Quick Reference | Tool | When to use | Command | |------|-------------|---------| | `query` | Find code by concept | `gitnexus_query({query: "auth validation"})` | | `context` | 360-degree view of one symbol | `gitnexus_context({name: "validateUser"})` | | `impact` | Blast radius before editing | `gitnexus_impact({target: "X", direction: "upstream"})` | | `detect_changes` | Pre-commit scope check | `gitnexus_detect_changes({scope: "staged"})` | | `rename` | Safe multi-file rename | `gitnexus_rename({symbol_name: "old", new_name: "new", dry_run: true})` | | `cypher` | Custom graph queries | `gitnexus_cypher({query: "MATCH ..."})` | ## Impact Risk Levels | Depth | Meaning | Action | |-------|---------|--------| | d=1 | WILL BREAK — direct callers/importers | MUST update these | | d=2 | LIKELY AFFECTED — indirect deps | Should test | | d=3 | MAY NEED TESTING — transitive | Test if critical path | ## Resources | Resource | Use for | |----------|---------| | `gitnexus://repo/miyabi-cli-standalone/context` | Codebase overview, check index freshness | | `gitnexus://repo/miyabi-cli-standalone/clusters` | All functional areas | | `gitnexus://repo/miyabi-cli-standalone/processes` | All execution flows | | `gitnexus://repo/miyabi-cli-standalone/process/{name}` | Step-by-step execution trace | ## Self-Check Before Finishing Before completing any code modification task, verify: 1. `gitnexus_impact` was run for all modified symbols 2. No HIGH/CRITICAL risk warnings were ignored 3. `gitnexus_detect_changes()` confirms changes match expected scope 4. All d=1 (WILL BREAK) dependents were updated ## Keeping the Index Fresh After committing code changes, the GitNexus index becomes stale. Re-run analyze to update it: ```bash npx gitnexus analyze ``` If the index previously included embeddings, preserve them by adding `--embeddings`: ```bash npx gitnexus analyze --embeddings ``` To check whether embeddings exist, inspect `.gitnexus/meta.json` — the `stats.embeddings` field shows the count (0 means no embeddings). **Running analyze without `--embeddings` will delete any previously generated embeddings.** > Claude Code users: A PostToolUse hook handles this automatically after `git commit` and `git merge`. ## CLI | Task | Read this skill file | |------|---------------------| | Understand architecture / "How does X work?" | `.claude/skills/gitnexus/gitnexus-exploring/SKILL.md` | | Blast radius / "What breaks if I change X?" | `.claude/skills/gitnexus/gitnexus-impact-analysis/SKILL.md` | | Trace bugs / "Why is X failing?" | `.claude/skills/gitnexus/gitnexus-debugging/SKILL.md` | | Rename / extract / split / refactor | `.claude/skills/gitnexus/gitnexus-refactoring/SKILL.md` | | Tools, resources, schema reference | `.claude/skills/gitnexus/gitnexus-guide/SKILL.md` | | Index, status, clean, wiki CLI commands | `.claude/skills/gitnexus/gitnexus-cli/SKILL.md` |