AgentSkillsCN

ask

在作业开始前进行访谈,充分理解双方认知后再展开行动。

SKILL.md
--- frontmatter
name: ask
description: "作業開始前にインタビューを行い、認識を合わせてから実行する"
argument-hint: "[タスク説明]"

/ask - 対話型タスク実行コマンド

ちょっとした作業を依頼する際に使用する。 作業開始前にインタビューを行い、認識齟齬を防いでから作業を実行する。

処理フロー

code
[1/3] インタビュー(質問生成→回答収集)
      ↓
[2/3] 確認(要約提示→ユーザー承認)
      ↓
[3/3] 実行

[1/3] インタビュー

タスク説明の取得

  • $ARGUMENTSが存在する場合: そのまま使用
  • $ARGUMENTSが空の場合: AskUserQuestionで取得

$ARGUMENTSが空の場合:

javascript
AskUserQuestion({
  questions: [
    {
      question: "どのようなタスクを実行しますか?",
      header: "タスク",
      options: [
        { label: "入力", description: "タスク内容を入力してください" }
      ],
      multiSelect: false
    }
  ]
})

質問の生成

タスク内容を分析し、認識齟齬を防ぐための質問を生成する。

質問の観点:

  • スコープ: 何を対象にするか(ファイル、機能、範囲)
  • 期待結果: 完了時の状態、成功の定義
  • 制約事項: 避けるべきこと、守るべきルール
  • 優先度: 複数の選択肢がある場合の判断基準

重要なルール:

  • 質問は1〜3個に絞る - 多すぎると煩雑
  • 自明なことは聞かない - コンテキストから推測可能なこと、答えが明らかなことは聞かない
  • 具体的に聞く - 「何かありますか?」ではなく「Xについてどうしますか?」

質問が不要な場合: タスクが十分に明確で、追加質問が不要と判断した場合はインタビューをスキップして[2/3]へ進む。

質問例

タスク: 「このバグを修正して」

javascript
AskUserQuestion({
  questions: [
    {
      question: "バグの再現手順や期待される動作を教えてください",
      header: "バグ詳細",
      options: [
        { label: "入力", description: "詳細を入力" }
      ],
      multiSelect: false
    }
  ]
})

タスク: 「この関数にバリデーションを追加して」

javascript
AskUserQuestion({
  questions: [
    {
      question: "バリデーションで検証すべき項目は何ですか?",
      header: "検証項目",
      options: [
        { label: "必須チェック", description: "空でないことを確認" },
        { label: "型チェック", description: "正しい型であることを確認" },
        { label: "範囲チェック", description: "値が有効範囲内であることを確認" },
        { label: "フォーマットチェック", description: "正しい形式であることを確認" }
      ],
      multiSelect: true
    }
  ]
})

[2/3] 確認

インタビュー結果を要約し、ユーザーに承認を求める。

要約フォーマット

code
## タスク概要

**依頼内容**: [ユーザーが依頼した内容]

**実行する作業**:
- [具体的な作業1]
- [具体的な作業2]
- ...

**スコープ**: [対象ファイル/機能]

**制約・注意点**: [あれば記載]

承認確認

javascript
AskUserQuestion({
  questions: [
    {
      question: "上記の内容で作業を開始してよろしいですか?",
      header: "確認",
      options: [
        { label: "承認", description: "作業を開始する" },
        { label: "修正", description: "内容を修正する" }
      ],
      multiSelect: false
    }
  ]
})

「承認」の場合: [3/3] 実行へ進む

「修正」または「Other」の場合: ユーザーの指摘に基づき[1/3]に戻って再度インタビュー


[3/3] 実行

承認後、タスクを実行する。

実行ガイドライン

タスク管理:

  • 複数ステップがある場合はTodoWriteでタスク管理
  • 各ステップ完了時にtodoを更新

実行時の注意:

  • 承認された内容の範囲内で作業する
  • スコープ外の変更は行わない
  • 追加で判断が必要な場合はAskUserQuestionで確認

完了報告

作業完了後、実行結果を簡潔に報告する:

code
## 完了報告

**実行した作業**:
- [作業1]
- [作業2]

**変更ファイル**:
- [ファイルパス1]
- [ファイルパス2]

注意事項

アンチパターン(避けるべきこと)

  • 自明な質問をする(「本当に修正しますか?」など)
  • 質問を4個以上する
  • 承認なしで作業を開始する
  • スコープ外の作業を行う

エラーハンドリング

  • 作業中にエラーが発生した場合はユーザーに報告
  • 判断が必要な場合はAskUserQuestionで確認