281 lines
9.9 KiB
Markdown
281 lines
9.9 KiB
Markdown
ターゲットとする機能のベースライン: 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 <N> --title "タスク名"
|
||
|
||
# 2. 影響分析を記録
|
||
miyabi gate impact <task-id> --risk <low|medium|high|critical> --symbols <N>
|
||
|
||
# 3. ファイルロックを獲得してから作業開始
|
||
miyabi gate assign <task-id> --agent <自分の名前> --node <マシン名> --files "変更するファイル"
|
||
|
||
# 4. ブランチを記録
|
||
miyabi gate branch <task-id> feature/issue-<N>-<slug>
|
||
|
||
# 5. PR を記録
|
||
miyabi gate pr <task-id> <PR番号>
|
||
|
||
# 6. merge を記録
|
||
miyabi gate merge <task-id> <merge-commit-sha>
|
||
```
|
||
|
||
### 禁止
|
||
|
||
- `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 <task-id> # コンテキストアタッチメント表示
|
||
miyabi gate dream # 学び抽出
|
||
miyabi gate serve # Web ダッシュボード (localhost:4848)
|
||
```
|
||
|
||
### 緊急時
|
||
|
||
```bash
|
||
miyabi gate force-unlock <task-id> --reason "理由" --operator "名前"
|
||
miyabi gate manual-complete <task-id> --reason "理由" --operator "名前"
|
||
```
|
||
|
||
### バイナリ
|
||
|
||
- リリースビルド: `target/release/miyabi`
|
||
- PATH: `~/bin/miyabi-gate`
|
||
- ビルド: `cargo build --release`
|
||
|
||
---
|
||
|
||
**このファイルはClaude Codeが自動参照します。**
|
||
|
||
<!-- gitnexus:start -->
|
||
# 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: "<error or symptom>"})` — find execution flows related to the issue
|
||
2. `gitnexus_context({name: "<suspect function>"})` — 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` |
|
||
|
||
<!-- gitnexus:end -->
|