Back to catalog

mako-flow

Linear-integrated AI centric workflow management tool

  • Category: discovered
  • Tags: github, community
  • Version: 1.0.0
  • Author: walid
  • Downloads: 0
  • Updated: 2025-11-22

Download the latest version (v1.0.0) from this page.

SKILL.md

# Mako Flow Skill

仕様策定→設計→コーディングを段階的に進めるためのワークフロースキル

## コンセプト

1. **Hearing First(ヒアリングファースト)**: まず要件を丁寧にヒアリング
2. **Spec Design(仕様設計)**: specディレクトリで仕様を整理
3. **Design Phase(設計フェーズ)**: designディレクトリで技術設計
4. **Coding(コーディング)**: コードに落とし込む

## フェーズ

### Phase 1: Hearing(ヒアリング)

ユーザーの要件を段階的にヒアリングします。

**質問の観点:**
- 何を作りたいのか?(What)
- なぜ必要なのか?(Why)
- どう使われるのか?(How)
- 誰が使うのか?(Who)
- いつ必要なのか?(When)

**成果物:**
- ヒアリング結果のメモ
- ユースケースの明確化

### Phase 2: Spec(仕様策定)

`spec/` ディレクトリに仕様を整理します。

**ディレクトリ構造:**
```
spec/
├── XX-feature-name/
│   ├── SPEC.md          # 機能仕様
│   ├── USE_CASES.md     # ユースケース
│   └── REQUIREMENTS.md  # 要件定義
└── INDEX.md             # 全仕様の索引
```

**SPEC.mdの構成:**
- **概要**: 機能の目的と背景
- **要件**: 機能要件と非機能要件
- **仕様**: 詳細な仕様
- **制約**: 技術的制約やビジネス制約
- **成功基準**: 受け入れ条件

### Phase 3: Design(設計)

`design/` ディレクトリに技術設計を記述します。

**ディレクトリ構造:**
```
design/
├── XX-feature-name/
│   ├── DESIGN.md        # アーキテクチャ設計
│   ├── API.md           # API設計
│   ├── DATA_MODEL.md    # データモデル
│   └── FLOW.md          # 処理フロー
└── INDEX.md             # 全設計の索引
```

**DESIGN.mdの構成:**
- **アーキテクチャ**: システム構成
- **技術選定**: 使用技術と選定理由
- **データ構造**: 型定義、スキーマ
- **処理フロー**: フローチャート、シーケンス図
- **エラーハンドリング**: エラー処理方針

### Phase 4: Coding(コーディング)

設計に基づいてコーディングします。

**コーディングの進め方:**
1. **型定義から**: データ構造を先に定義
2. **インターフェース**: 公開APIを先に設計
3. **テストファースト**: テストを書いてから実装
4. **段階的実装**: 小さく分割して実装

**確認事項:**
- [ ] 仕様通りに動作するか
- [ ] テストが通るか
- [ ] ドキュメントが更新されているか
- [ ] エラーハンドリングが適切か

## ヒアリング手法

### 1. オープンクエスチョン

まず広く聞く:
- 「どんな機能が欲しいですか?」
- 「どんな課題を解決したいですか?」
- 「理想的な使い方を教えてください」

### 2. クローズドクエスチョン

具体化する:
- 「この機能は必須ですか、それとも任意ですか?」
- 「優先度は高いですか?」
- 「既存の○○と似ていますか?」

### 3. 一問一答方式(推奨)

複数の質問を一度にせず、リストを作成して一つずつ確認する:

**❌ 避けるべき:**
```
質問1: Aについてどうしますか?
質問2: Bについてどうしますか?
質問3: Cについてどうしますか?
```
→ 回答しづらい、漏れが発生しやすい

**✅ 推奨:**
```
確認事項リスト(3つあります)

## 質問1/3: Aについて
[具体的な選択肢を提示]

回答を待つ → 次の質問へ
```

**メリット:**
- 回答しやすい
- 意思決定に集中できる
- 確実に全ての質問に答えられる
- 進捗が明確(1/3, 2/3...)

### 3. 5W1H

詳細を明確にする:
- **What**: 何を実現するか
- **Why**: なぜ必要か
- **Who**: 誰が使うか
- **When**: いつ使うか
- **Where**: どこで使うか
- **How**: どう実装するか

### 4. 制約の確認

技術的・ビジネス的制約:
- 「パフォーマンス要件はありますか?」
- 「セキュリティ要件はありますか?」
- 「既存システムとの互換性は必要ですか?」

## テンプレート

### ヒアリングシート

```markdown
# ヒアリングシート: [機能名]

## 日時
- 2025-XX-XX

## 参加者
- [名前]

## 背景・目的
[なぜこの機能が必要か]

## 現状の課題
[現在困っていること]

## 要望
[実現したいこと]

## ユースケース
1. [ユースケース1]
2. [ユースケース2]

## 優先度
- [ ] 必須
- [ ] 重要
- [ ] あると良い

## 制約
[技術的・ビジネス的制約]

## 疑問点
[確認が必要なこと]

## Next Actions
- [ ] [アクション1]
- [ ] [アクション2]
```

### SPEC.md テンプレート

```markdown
# [機能名] 仕様

## 概要
[機能の目的と背景]

## 要件

### 機能要件
1. [要件1]
2. [要件2]

### 非機能要件
- **パフォーマンス**: [要件]
- **セキュリティ**: [要件]
- **可用性**: [要件]

## 仕様

### 基本仕様
[詳細な仕様]

### 入出力
- **入力**: [入力仕様]
- **出力**: [出力仕様]

## 制約
- [制約1]
- [制約2]

## 成功基準
- [ ] [基準1]
- [ ] [基準2]
```

### DESIGN.md テンプレート

```markdown
# [機能名] 設計

## アーキテクチャ
[システム構成図]

## 技術選定
- **言語**: [選定理由]
- **フレームワーク**: [選定理由]
- **ライブラリ**: [選定理由]

## データ構造

### 型定義
\`\`\`rust
struct Example {
    field: Type,
}
\`\`\`

## 処理フロー
[フローチャートまたはシーケンス図]

## API設計
[API仕様]

## エラーハンドリング
[エラー処理方針]

## テスト戦略
[テスト方針]
```

## 使用例

### 例: 新機能の開発

```bash
# Phase 1: ヒアリング
「flow watch機能を追加したいです」

→ ヒアリング開始
  - どんなファイルを監視しますか?
  - 変更時に何をしますか?
  - 既存のツールとの違いは?

# Phase 2: 仕様策定
spec/07-watch-command/SPEC.md を作成

# Phase 3: 設計
design/07-watch-command/DESIGN.md を作成

# Phase 4: コーディング
コードを実装
```

## ベストプラクティス

### ヒアリング時
- 仮定せず、必ず確認する
- ユーザーの言葉で理解する
- 曖昧な部分は具体例で確認
- 優先順位を明確にする

### 仕様策定時
- 簡潔で明確に書く
- 具体例を入れる
- 境界条件を明記
- レビュー可能な粒度にする

### 設計時
- シンプルから始める
- 拡張性を考慮
- 既存パターンを活用
- トレードオフを明記

### コーディング時
- 小さく分割
- テストファースト
- ドキュメント同期
- レビューしやすいコミット

## 参考資料

- spec-design-guide skill
- hearing-first skill
- 既存のspec/ディレクトリ
- 既存のdesign/ディレクトリ