cawplan-internal-qa-coding-humaninputs-test について
CawPlanの人間入力分類をクラウドラベルと一括照合するQAスキルです。対象範囲を解決してデータを取得し、単件分類スキルに委ねたうえで一致率と差異を報告します。
主な機能
- 01メンバーと製品の範囲を解決
- 02人間入力データの取得と絞り込み
- 03各行の分類を委任
- 04ラベルを比較して差異を報告
- 05カテゴリ・トピック・両方の比較に対応
活用シーン
- 01個人またはワークスペースのカテゴリラベル監査
- 02期間を指定したトピックラベルの確認
- 03ローカルとクラウドのラベル差異の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cawcut/ skill-cawplan --skill cawplan-internal-qa-coding-humaninputs-testインストール後、Claude Code で/cawplan-internal-qa-coding-humaninputs-testを入力して読み込まれたか確認します。
詳細
CawPlan 内部 QA — コーディングの人間入力分類テスト(バッチ)
ブートストラップ
cawplan skill check
ワークフロー
1. 対象範囲の解決:人物、製品、日付範囲
人物(任意):
- リクエストで人物(例:「spx」や表示名)が指定された場合は、
cawplan session membersを実行し、返された一覧を大文字と小文字を区別せず、または部分一致で照合して、正確なmemberキーを特定します。これは--memberで使用するレポートの Git アイデンティティ文字列であり、必ずしも表示名とは限りません。 - 一致する可能性のあるメンバーが複数いる場合は、推測しないでください — (表示名、メールアドレス、メンバーキーなど、応答に含まれる識別情報を使って)番号付きリストで提示し、続行する前にユーザーに選択してもらいます。
- 一致するメンバーがいない場合は、その旨を伝え、推測せずにワークスペース全体を対象として続行します。
- 人物が指定されていない場合は、
--memberを渡さず、ワークスペース全体を対象にチェックを実行します。
製品(任意 — リクエストで製品が指定された場合のみ):
cawplan products list --search "<name>"で特定します。- 一致する可能性のある製品が複数ある場合は、推測しないでください — (名前、製品ライン、unique_id)を番号付きリストで提示し、続行する前にユーザーに選択してもらいます。
- 一致する製品がない場合は、その旨を伝え、最も近いものを推測せずに正しい製品名を尋ねます。
日付範囲(任意):
- リクエストで指定されている場合は、それを使用します。
- 指定がない場合は、直近 2 日をデフォルトとして使用します:
--from= 2 日前(を含む)、--to= 今日。
比較モード(任意 — デフォルトは both):
| モード | ユーザーの意図(例) | 対象として残す行 | スコアの対象 |
|---|---|---|---|
category | 「category accuracy」、「only category」、「只看分类」 | cloud の category が空でない | category のみ |
topic | 「topic accuracy」、「only topic」、「只看 topic」 | cloud の topic が空でない | topic のみ |
both | デフォルト。「category and topic」、「both」、「两项一起」 | cloud の category と topic が空でない | category、topic、および両方の一致を同じ行で判定する総合結果 |
ユーザーがモードを明示的に指定した場合は、それを使用します。category のみ、または topic のみについて尋ねている場合は、該当する単一モードを使用します。それ以外の場合は both を使用します。
最終レポートのヘッダーに、解決した compare_mode を記載します。
2. 人間入力の行を取得(content + assistant_message + cloud ラベル)
手順 1 で解決した対象範囲に応じてエンドポイントを選択します — すべて同じ行形式(content、assistant_message、category、topic、および .data 内のページネーション情報)を返します:
| 解決した対象範囲 | コマンド |
|---|---|
| なし(ワークスペース全体) | cawplan session human-input-logs --from ... --to ... |
| 人物のみ | cawplan session human-input-logs --from ... --to ... --member "<exact_member>" |
| 製品のみ | cawplan session product-human-input-logs --product-id <id> --from ... --to ... |
| 製品 + 人物 | cawplan session product-human-input-logs --product-id <id> --user-id <id> --from ... --to ...(メンバーキーではなく、その人物の PRM user_id が必要です。cawplan users query --email <email> または --keyword <name> で解決します。ユーザーが複数一致する場合は、同じ番号付きリストによる曖昧さ解消ルールを適用します) |
すべて取得し終えるまでページをたどります:
from="<resolved from>"; to="<resolved to>"
extra_flags=()
# extra_flags=(--member "<exact_member>") # person only
# extra_flags=(--product-id "<id>") # product only, use product-human-input-logs
# extra_flags=(--product-id "<id>" --user-id "<id>") # product + person, use product-human-input-logs
page=1; page_size=100
: > /tmp/humaninput_rows.jsonl
while :; do
resp=$(cawplan session human-input-logs --from "$from" --to "$to" "${extra_flags[@]}" --page-num "$page" --page-size "$page_size")
# substitute "product-human-input-logs" for "human-input-logs" above if a product was resolved
case "$compare_mode" in
category)
echo "$resp" | jq -c '.data.items[]? | select((.content // "") != "" and (.category // "") != "")' >> /tmp/humaninput_rows.jsonl
;;
topic)
echo "$resp" | jq -c '.data.items[]? | select((.content // "") != "" and (.topic // "") != "")' >> /tmp/humaninput_rows.jsonl
;;
both)
echo "$resp" | jq -c '.data.items[]? | select((.content // "") != "" and (.category // "") != "" and (.topic // "") != "")' >> /tmp/humaninput_rows.jsonl
;;
esac
total=$(echo "$resp" | jq '.data.total // 0')
got=$(echo "$resp" | jq '.data.items | length')
page=$((page + 1))
if [ "$got" -lt "$page_size" ] || [ $(((page - 1) * page_size)) -ge "$total" ]; then break; fi
done
wc -l /tmp/humaninput_rows.jsonl
上記の compare_mode フィルターに該当しない行は除外します — たとえば both モードでは、cloud ラベルのいずれかが欠けている行を除外します。content が空の行は常に除外します。
行数が多い場合(目安:100 件超)は、すべてを分類する前に、件数をユーザーに伝えて確認を取ります — 各行は 1 回の分類であり、行ごとに自分で推論する必要があるため、スクリプトや API 呼び出しではありません。そのため、大量のバッチは実際に時間がかかります。
3. 基本スキルを使って各行を分類する
このセッションでまだ確認していない場合は、まず cawplan-internal-qa-coding-humaninputs の指示を読んでください。各行に適用するのは、そのスキルの Task/Workflow の手順と、独自のリファレンスフォルダーにある分類体系の参照ファイルです。これにより、分類ルールをここに重複して記載せず、一か所で定義した状態に保てます。
/tmp/humaninput_rows.jsonl の各行について、content と assistant_message を入力として分類を適用し、処理しながら各行につき進捗行を1行出力してください。これは進捗表示であると同時に、各アトミックスキル呼び出しの入出力を表示するものであり、最終的な要約だけを出すものではありません。
[<n>/<total>] content: "<content excerpt, ~80 chars>" | assistant: <"<excerpt>" or "(none)"> -> category: <category>, categories: <categories>, topic: <topic>, topic_confidence: <0.00-1.00>
比較に進む前に、すべての行を順番に1行ずつ処理してください。複数の行をまとめて非表示で処理し、最後に結果だけを報告してはいけません。最後の行を処理したら、各行の unique_id と、結果の category、topic、topic_confidence を対応付けたプレーンなリストを作成してください。これにより、次のステップでは簡単な差分比較だけで済みます。
4. クラウドラベルと比較する(compare_mode に応じて)
各項目は単純な文字列一致で比較してください。categories 配列フィールドは比較せず、スクリプトの作成や実行もしないでください。topic_confidence は比較しません(クラウド側に LLM の信頼度が保存されている場合があるため)。このチェックではラベルの正確性のみを確認します。
category モード — 自分の category のみを、その行のクラウド側 category と比較します。
topic モード — 自分の topic のみを、その行のクラウド側 topic と比較します(以下のレガシー正規化を適用してください)。
both モード — category と topic を別々に比較し、さらに総合正解率も報告します。これは、レガシー正規化後に両方のラベルが一致した行の割合です。
レガシー正規化(正規化後の値が一致する場合は、実質的な不一致として数えません):
- Category: クラウドの v1 バケット(
decision/direction/requirement/correction/planning/other)と、自分の v2 リーフの不一致 — 基本スキルのCATEGORY_TAXONOMY.mdのレガシー表を参照 → 分類体系バージョンの不一致 - Topic: クラウドの
improvement→refactor、クラウドのux→design_ui→ レガシートピックの不一致
出力
ステップ3の行ごとの進捗行に、すべての入力/出力がすでに表示されています。以下の最終レポートは、それらに加える要約とハイライトであり、進捗行の代わりではありません。
以下を報告してください。
- 対象範囲:
compare_mode、対象の人および/または製品(または「ワークスペース全体」)、確定した日付範囲、取得した行の合計数と、このモードで比較可能な行数。 categoryモード:category の一致率、分類体系バージョンの不一致と実質的な不一致の内訳、実質的な category の不一致を最大約10件。topicモード:topic の一致率、レガシートピックの不一致と実質的な不一致の内訳、実質的な topic の不一致を最大約10件。bothモード:category の一致率、topic の一致率、総合一致率(同じ行で両方のラベルが正しい割合)、レガシー/分類体系バージョンの不一致の内訳、各項目で実質的な不一致を最大約10件(2つのラベルのうち片方だけが不一致の行も明示してください)。
注記
- 分類自体は
cawplan-internal-qa-coding-humaninputsに委任され、1行ずつ行われます。このスキルが担当するのは、対象範囲の確定、データの取得、比較のみです。このスキルのルールが変更された場合も、ここでは重複して定義していないため、自動的にその変更が反映されます。 - 比較対象は、
compare_modeに応じて、単一値のcategoryおよび/またはtopicラベルのみです。categories配列とtopic_confidenceは採点対象外です。信頼度は人による確認用として進捗行にのみ表示します。
参照資料
references/CAWPLAN_OPEN_API.md