cawplan-internal-qa-coding-humaninputs-sample について
CawPlan のスキルで、人間の入力記録を取得し、本番の分類コンテキスト規則に沿った JSON フィクスチャを生成して、ブラウザーエディターで注釈を付けます。評価データの準備に使えます。
主な機能
- 01CawPlan CLIで入力記録を取得
- 02前ターンの文脈を含むフィクスチャ生成
- 03期待するカテゴリとトピックの注釈
- 04レビュー要否と任意の理由を設定
- 05ブラウザーエディターでJSONを読み込み・出力
活用シーン
- 01選択した記録から評価用フィクスチャを作成
- 02会話の各ターンのカテゴリとトピックを確認
- 03注釈済みJSONを評価用フォルダーに出力
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cawcut/ skill-cawplan --skill cawplan-internal-qa-coding-humaninputs-sampleインストール後、Claude Code で/cawplan-internal-qa-coding-humaninputs-sampleを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/label-editor.htmlassets/js/classify_context.mjsassets/samples/.gitkeeplatest.jsonreferences/CATEGORY_TAXONOMY.mdTOPIC_TAXONOMY.mdscripts/build_sample.mjsclassify_context.mjs詳細
CawPlan 内部 QA — 人手入力サンプルとラベル付け
ブートストラップ
cawplan skill check
タスク
CawPlan CLI を使って人手入力の行を取得し、本番の分類コンテキストルールに沿ったフィクスチャ JSON を出力します。その後、ローカルのラベルエディターを開き、人間が各ターンの expected_categories、expected_topic、必要に応じて expected_reason と review_required を設定できるようにします。
ワークフロー
1. 対象範囲を決定する(humaninputs-test と同じ曖昧さ解消ルール)
メンバー(任意):cawplan session members → 完全一致する --member の git キーを指定します。候補が複数ある場合は、推測せずにユーザーに選択を依頼します。
製品(任意):cawplan products list --search "<name>" → unique_id を指定します。候補が複数ある場合は、ユーザーに選択を依頼します。
製品内のユーザー(任意):product-human-input-logs --user-id に PRM の user_id が必要です。cawplan users query で解決します。
日付範囲(必須):--from / --to、または単日なら --date を指定します。ユーザーが範囲を指定しない場合、直近 2 日間をデフォルトにします。
件数:--limit N(デフォルトは 20)。
セッションの形状(いずれかを選択):
--one-session— 範囲内で行数が最も多いセッションを自動選択します(20 ターンの Slack フィクスチャのような、複数ターンにわたる prev チェーンに最適です)。--session-id <id>— 1 つのセッションを明示的に指定します。- どちらも指定しない場合 — 並べ替え後の先頭 N 行を取得します(prev は引き続き
session_idごとに計算されます)。
2. フィクスチャ JSON を作成する
このスキルのディレクトリから実行します:
SKILL_DIR="/media/spx/work/github/flow-cawplan-skill/skills/cawplan-internal-qa-coding-humaninputs-sample"
node "$SKILL_DIR/scripts/build_sample.mjs" \
--from <YYYY-MM-DD> --to <YYYY-MM-DD> \
[--member "<exact_member>"] \
[--product "<product name>" | --product-id <id>] \
[--user-id <prm_user_id>] \
[--session-id <session_id> | --one-session] \
--limit <N> \
--output "<path>/human-input-sample.json" \
--copy-for-editor
出力形式(/media/spx/work/2026/0830/ の eval フィクスチャに準拠):
| フィールド | 意味 |
|---|---|
items[].content | 生の人手入力 |
items[].assistant_message | 対応するアシスタントの返信(API から取得した全文) |
items[].prev_assistant_message | 処理済みの、同じセッション内における前のターンのアシスタント返信の最後の段落(本番の prev スロット)。選択した N 行だけでなく、日付範囲内で取得したすべての行から解決されます。そのため、直近の一部を取得した場合でも、そのセッションの前のターンが出力に含まれていなくても正しい prev を取得できます |
items[].expected_categories | ラベル付けするまでは空の [] |
items[].expected_topic | ラベル付けするまでは空 |
items[].expected_reason | レビュアー向けの任意の自由記述の理由(入力されるまでは空) |
items[].review_required | デフォルトは false。カテゴリやトピックのラベルをレビューする必要がある場合は true に設定します |
items[].cloud_category / cloud_topic | クラウドエンリッチメントによる任意のヒント |
前処理は uid.core-product の ClassifyPrevAssistantTail /
ClassifyAssistantSnippet を再現します(scripts/classify_context.mjs を参照)。
3. ラベルエディターを開く
--copy-for-editor の後に、静的サーバーを起動してページを開きます:
cd "$SKILL_DIR/assets"
python3 -m http.server 8765
ブラウザー:http://localhost:8765/label-editor.html
- 最新のサンプルを読み込む —
assets/samples/latest.jsonを読み込みます(--copy-for-editorによって書き込まれます)。 - JSON を読み込む — 任意のフィクスチャファイルを選択します。
- ラベル付き JSON をダウンロード —
expected_categories/expected_topicが入力された*-labeled.jsonを出力します。設定されている場合はexpected_reason/review_requiredも含まれます。 - 下書きはブラウザーの
localStorageに自動保存されます。
ユーザーには、出力先のパスとエディターの URL を伝え、完了後にラベル付き JSON をエクスポートするよう案内してください(例:/media/spx/work/2026/0830/ など、ユーザーの eval フォルダーに保存します)。
出力
ユーザーに以下を報告します:
- 解決したフィルター(メンバー / 製品 / 日付 / 件数 / セッション)。
- 生成した JSON と
assets/samples/latest.jsonのパス。 - ラベルエディターの URL(
http://localhost:8765/label-editor.html)。 - 注釈が完了したら、ページからラベル付き JSON をエクスポートするよう案内します。
参考資料
scripts/build_sample.mjs— 取得と前処理scripts/classify_context.mjs— 本番に準拠した段落ルールassets/label-editor.html— Web UIreferences/CATEGORY_TAXONOMY.md— カテゴリラベルの定義references/TOPIC_TAXONOMY.md— トピックラベルの定義