mcpField
C
cawplan-internal-qa-coding-humaninputs-test

cawplan-internal-qa-coding-humaninputs-test

github.com/cawcutテスト・品質177 回インストール2 日前に更新
リポジトリ

cawplan-internal-qa-coding-humaninputs-test について

CawPlanの人間入力分類をクラウドラベルと一括照合するQAスキルです。対象範囲を解決してデータを取得し、単件分類スキルに委ねたうえで一致率と差異を報告します。

主な機能

  1. 01メンバーと製品の範囲を解決
  2. 02人間入力データの取得と絞り込み
  3. 03各行の分類を委任
  4. 04ラベルを比較して差異を報告
  5. 05カテゴリ・トピック・両方の比較に対応

活用シーン

  1. 01個人またはワークスペースのカテゴリラベル監査
  2. 02期間を指定したトピックラベルの確認
  3. 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

コメント