mergegate/.miyabi/README.md
Shunsuke Hayashi 48dfa915c7 feat: Add hooks, workflow, MCP support and core modules
Phase 2: Hooks System
- Event-driven execution with HookEvent/HookAction types
- HookManager for registration and execution

Phase 3: Multi-Agent Workflow
- Workflow orchestration with dependency graphs
- WorkflowStep with conditions and retry support

Phase 4: MCP (Model Context Protocol) Support
- McpServer for external tool servers
- McpManager for multiple server management

Also includes core modules: cache, error_policy, feature_flags,
git, logger, plugin, retry, rules

662 tests passing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-22 23:37:14 +09:00

6.1 KiB

.miyabi Directory

Miyabi CLI設定・拡張ディレクトリ

ディレクトリ構造

.miyabi/
├── config.toml         # メイン設定ファイル
├── README.md           # このファイル
├── agents/
│   └── specs/          # Agent仕様定義
├── commands/           # カスタムスラッシュコマンド
├── prompts/            # 再利用可能プロンプト
├── templates/          # コード・ドキュメントテンプレート
├── sessions/           # 保存されたセッションデータ
└── tasks/              # タスク管理データ

設定ファイル (config.toml)

API設定

[api]
# API Key (環境変数 ANTHROPIC_API_KEY でも設定可能)
api_key = "sk-ant-..."

# 使用モデル
model = "claude-sonnet-4-5-20250929"

# 最大トークン数
max_tokens = 8192

# タイムアウト (秒)
timeout_secs = 120

# リトライ回数
max_retries = 3

# 拡張思考モード
thinking = false

# システムプロンプト
system_prompt = "You are a helpful assistant"

UI設定

[ui]
# テーマ: tokyo-night, dracula, monokai, etc.
theme = "tokyo-night"

# Vimキーバインド
vim_mode = false

# サイドバー表示
show_sidebar = false

# ステータスバー表示
show_status_bar = true

# パンくずリスト表示
show_breadcrumb = true

# コードの行番号表示
show_line_numbers = true

セッション設定

[session]
# 自動保存
auto_save = true

# 保存間隔 (秒)
auto_save_interval = 30

# 最大セッション数
max_sessions = 100

ツール設定

[tools]
# Bashツール有効化
enable_bash = true

# ファイル操作ツール有効化
enable_file_tools = true

# 検索ツール有効化
enable_search_tools = true

# 低リスク操作の自動承認
auto_approve_low_risk = false

# Bashタイムアウト (秒)
bash_timeout = 120

カスタムコマンド

commands/ 配下に .md ファイルを作成してスラッシュコマンドを定義。

例: /review コマンド

commands/review.md:

# コードレビュー

以下のコードをレビューしてください:

1. バグの可能性
2. パフォーマンス問題
3. セキュリティ脆弱性
4. コーディング規約違反

改善提案も含めてください。

使用: TUIで /review と入力

プロンプトテンプレート

prompts/ 配下に再利用可能なプロンプトを保存。

例: Rustコードレビュー

prompts/rust-review.md:

# Rustコードレビューチェックリスト

- [ ] unwrap/expect の使用箇所
- [ ] エラーハンドリング
- [ ] 所有権とライフタイム
- [ ] unsafe コードの妥当性
- [ ] Clippy警告の確認

Agent仕様

agents/specs/ にカスタムAgent仕様を定義。

例: コードリファクタリングAgent

agents/specs/refactor-agent.yaml:

name: refactor-agent
version: "1.0"
description: コードリファクタリング専門Agent

capabilities:
  - code_analysis
  - refactoring
  - testing

preferences:
  style: functional
  error_handling: result
  max_iterations: 10

セッション管理

コマンドライン操作

# セッション一覧
miyabi sessions

# 特定セッションで再開
miyabi --session <session-id>

# Markdownエクスポート
miyabi sessions -m <session-id>

# JSONエクスポート
miyabi sessions -e <session-id>

# セッション削除
miyabi sessions -d <session-id>

セッションファイル形式

セッションは sessions/ に JSON 形式で保存:

{
  "id": "uuid",
  "created_at": "2025-01-01T00:00:00Z",
  "updated_at": "2025-01-01T01:00:00Z",
  "model": "claude-sonnet-4-5-20250929",
  "messages": [...]
}

プロジェクトルール (.miyabirules)

プロジェクトルートに .miyabirules ファイルを配置して、プロジェクト固有のルールを定義:

version: 1

rules:
  - name: "no-unwrap"
    pattern: ".unwrap()"
    suggestion: "Use ? operator or proper error handling"
    file_extensions: ["rs"]
    severity: "warning"
    enabled: true

  - name: "no-println-debug"
    pattern: "println!"
    suggestion: "Use tracing macros for logging"
    file_extensions: ["rs"]
    severity: "info"

agent_preferences:
  codegen:
    style: "functional"
    error_handling: "result"
    min_score: 80
    clippy_strict: true

settings:
  auto_format: true
  max_file_size: 1048576

環境変数

設定ファイルの値は環境変数でオーバーライド可能:

# 必須
export ANTHROPIC_API_KEY="sk-ant-..."

# オプション
export MIYABI_MODEL="claude-sonnet-4-5-20250929"
export MIYABI_MAX_TOKENS="16384"
export MIYABI_THINKING="true"
export MIYABI_THEME="dracula"

Core Library機能の利用

キャッシュ

LLMレスポンスのキャッシュで高速化:

use miyabi_core::{create_llm_cache, LLMCacheKey};

let cache = create_llm_cache(); // 1時間TTL

フィーチャーフラグ

機能の段階的ロールアウト:

use miyabi_core::FeatureFlagManager;

let flags = FeatureFlagManager::new();
flags.set_flag("new_ui", true);

Circuit Breaker

API障害時の保護:

use miyabi_core::CircuitBreaker;

let breaker = CircuitBreaker::default();
// 5回失敗で開く、60秒後に半開

プラグイン

カスタム機能の追加:

use miyabi_core::{Plugin, PluginManager};

let manager = PluginManager::new();
manager.register(Box::new(MyPlugin))?;

トラブルシューティング

API接続エラー

  1. API Keyの確認: echo $ANTHROPIC_API_KEY
  2. ネットワーク接続確認
  3. タイムアウト値の増加

セッション破損

  1. sessions/ から該当ファイルを削除
  2. miyabi sessions で確認

設定が反映されない

  1. 設定ファイルの構文確認: cat config.toml
  2. 環境変数の確認
  3. CLIオプションの優先順位確認

使い方

# TUI起動
miyabi

# バージョン情報
miyabi version

# ステータス確認
miyabi status

# ヘルプ
miyabi --help