mcpField
G
gauntlet-curate

gauntlet-curate

github.com/athola開発34375 回インストール1 日前に更新
リポジトリ

gauntlet-curate について

gauntlet-curateは、DSA問題バンクの網羅状況を確認し、人によるレビュー用のYAML問題案を作成するスキルです。分類ごとの不足を報告し、整理済みの問題ファイルは変更しません。

主な機能

  1. 01マニフェスト目標との問題数比較
  2. 02不足数の大きい分類から表示
  3. 03レビュー用YAML案の作成
  4. 04BankProblemによる案の検証

活用シーン

  1. 01想定数に届かない分類の特定
  2. 02人による確認用レポートへの追加案作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/athola/claude-night-market --skill gauntlet-curate

インストール後、Claude Code で/gauntlet-curateを入力して読み込まれたか確認します。

詳細

Gauntlet Curate

DSA 問題バンクを調査してカバレッジの不足を特定し、人間によるレビュー用に新しい YAML エントリーを提案します。

使用しない場合

  • 問題バンクではなく、このコードベースに注釈を付ける場合(gauntlet:curate を使用)
  • ナレッジベースを再構築する場合(gauntlet:extract を使用)

このスキルが実行される場合

問題バンクのカバレッジレビューが必要なときに、Skill(gauntlet:gauntlet-curate) を手動で実行します。このスキルは /update-plugins の実行に組み込まれることを想定していますが、まだそのコマンドには接続されていません(openpackage.yml の登録を参照)。これは、注釈ごとのナレッジ取得を処理し、現在 /gauntlet-curate が実行する gauntlet:curate とは別のものです。

手順

  1. plugins/gauntlet/data/problems/ にある問題バンクを特定します。 _manifest.yaml を読み込み、カテゴリごとの想定 NeetCode 件数を確認します。

  2. 各 YAML ファイルの問題数を数えて、現在のカバレッジを調査します(_manifest.yaml は除外します)。 分析スクリプトを実行します。

    cd plugins/gauntlet
    python scripts/curate_problems.py data/problems/ --output /tmp/gauntlet-curate-report.md
    
  3. 不足を特定します。実際の件数がマニフェストの neetcode_count を下回るカテゴリが対象です。 スクリプトは不足数が多い順に並べ替えるため、最も不足しているカテゴリが先頭に表示されます。

  4. 追加を提案する前に、不足している各カテゴリの既存の問題を確認し、すでにカバーされている内容を把握します。

  5. 以下のスキーマに従って、新しい YAML エントリーを提案します。 提案はレポートの「Proposed New Problems」に追加します。 提案を data/problems/*.yaml に直接書き込んではいけません。

  6. 次を実行して提案を検証します。

    python -c "
    import yaml, sys
    sys.path.insert(0, 'src')
    from gauntlet.models import BankProblem
    proposals = yaml.safe_load(open('proposals.yaml'))
    for p in proposals:
        BankProblem.from_dict(p)
    print('All proposals valid.')
    "
    
  7. レポートを人間に提示してレビューを受けます。 レポートにはカバレッジ表、不足リスト、提案したエントリーが含まれます。 提案を YAML ファイルにマージするかどうかは、人間が判断します。

問題スキーマ

提案する各エントリーは、次のスキーマに従う必要があります。

- id: category-NNN
  title: Problem Title
  difficulty: easy       # easy | medium | hard | extra_hard
  prompt: |
    Problem statement with constraints and examples.
  hints:
    - First hint.
    - Second hint.
  solution_outline: |
    Approach and time/space complexity.
  tags: [tag1, tag2]
  neetcode_id: neetcode-NNN
  challenge_type: explain_why  # explain_why | multiple_choice | trace
                                # | code_complete | debug | rank

必須フィールド:id、title、difficulty、prompt。 省略可能なフィールドは、デフォルトで空の値になります。

安全性に関する制約

  • data/problems/ 配下のファイルを直接変更してはいけません。
  • --write または --fix フラグを指定して実行してはいけません。スクリプトには意図的にこれらのフラグがありません。
  • すべての出力は、人間の承認を得るための提案レポートです。
  • 既存の手作業でキュレーションされた問題には一切手を加えません。

出力

--output で指定されたパスに、次の内容を含む Markdown レポートを作成します。

  • カバレッジの概要表(カテゴリごとの想定件数と実際の件数)
  • 不足数順に並べた不足リスト
  • 新しい提案用の YAML スキーマテンプレート
  • 人間のレビュアーが提案を追加するためのスペース

YAML ファイルを変更する前に、人間によるレビューが必要です。

終了条件

  • スクリプトがエラーなく実行され、--output で指定されたパス(例:/tmp/gauntlet-curate-report.md)に Markdown レポートが作成される
  • レポートに、_manifest.yaml のすべてのカテゴリについて、想定される neetcode_count と実際の件数を比較するカバレッジ概要表が含まれ、不足数の多い順に不足が並んでいる
  • plugins/gauntlet/data/problems/ 配下のファイルが変更されず、すべての提案がレポート内の「Proposed New Problems」にのみ記載されている
  • レポートに掲載される前に、提案するすべての YAML エントリーが BankProblem.from_dict() の検証(必須フィールド:id、title、difficulty、prompt)に合格している

コメント