mcpField
P
plate

plate

github.com/paulnsorensen開発19514 回インストール6 日前に更新
リポジトリ

plate について

plateは、ローカルリポジトリの作業を完了し、成果物を検証してコミットし、適切な手順で公開するワークフロー技能です。通常のPRや積み重ね型PRに対し、明確なルーティングと検証手順を必要とするコーディングエージェント向けです。

主な機能

  1. 01コミットとPRの作業分類
  2. 02必要な成果物の作成と検証
  3. 03リポジトリの品質ゲート実行
  4. 04指定ファイルのステージと安全なコミット
  5. 05通常および積み重ね型PRの公開

活用シーン

  1. 01公開せずに完了済みの変更をコミット
  2. 02ブランチを新規PRとして準備・公開
  3. 03既存の構成を保ってPRを更新
  4. 04PRスタックの作成や保守

インストール

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

$npx skills add https://github.com/paulnsorensen/easy-cheese --skill plate

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

wedge.toml
evals/
evals.json
evals/files/body-concise-docs/
branch.txt
evals/files/body-no-phantom-claims/
branch.txt
evals/files/body-no-slop/
branch.txt
evals/files/diagram-cross-module-flow/
branch.txt
evals/files/diagram-sequence-protocol/
branch.txt
evals/files/explicit-one-pr-over-layers/
branch.txt
evals/files/explicit-stack-no-boundaries/
branch.txt
evals/files/grouped-by-shared-files/
branch.txt
evals/files/independent-two-routines/
branch.txt
evals/files/independent-unrelated/
branch.txt
evals/files/plan-shape-normalize/
branch.txt
evals/files/push-auth-failure/
branch.txt
evals/files/separate-pr-request/
branch.txt
evals/files/single-cohesive-over-ceiling/
branch.txt
evals/files/single-cure-span/
branch.txt
evals/files/single-small-fix/
branch.txt
evals/files/stack-protocol-impl-wiring/
branch.txt
evals/files/stack-refactor-then-feature/
branch.txt
references/
commands.md
durable-writes.md
gh-stack.md
git-town.md
gt.md
ordinary-pr.md
setup.md
stacks.md
topology.md

詳細

/plate

Plate はレビュー前にローカル作業を完了します。必要な成果物を仕上げ、検証し、安全にコミットして、適切な公開経路を選択します。

フェーズの開始

python3 skills/plate/scripts/plate.pyz wheypoint-resolve --ref <slug> を実行します。 authoritative の場合はそのレコードを使用します。working_context は、最初にまとめて実行する tilth_read の対象です。 not-found の場合はコールドスタートで続行します。legacy の場合はそのソースとスラッグを表示してから続行します。 gated、ambiguous、error の場合は停止し、ペイロードを表示します。 注意喚起として示される stale-commit と grounded-path-missing の指摘を表示します。

Plate はスラッグを解決して結果を読み取りますが、wheypoint リビジョンのコミットや公開は行いません。

ルーティングガード

モードを選択する前に、担当範囲を確認します。 /plate が担当するのは、ステージング、コミット、プッシュ、通常のプルリクエストの変更、プルリクエストスタックの変更です。

  • /plate はコード品質のレビューを行いません。独自の目的でレビュー対象範囲を算出することもありません。レビューは /age の担当です。
  • GitHub の調査、レビュー、コメント、CI、マージ、Issue、ワークフロー、リリース、検索、管理は /plate の対象外です。 ローカルでの公開トランザクションが不要な場合は、gh CLI を直接使用します。 プルリクエストのフィードバックや CI の失敗に対応する場合は、/affinage を使用します。
  • GitHub や差分の状態を読み取る、または評価するだけのリクエストは、モードを選択する前に /plate の担当範囲から外れます。 そのため、これを /plate にルーティングするのは、Plate の担当範囲の誤りです。
  • 破壊的な削除、履歴の書き換え、安全でない強制プッシュ、保護ブランチの変更には、ユーザーの明示的な許可が必要です。

分類してから参照ファイルを1つ読み込む

すべての呼び出しを、必ず次のいずれか1つのモードに分類します。参照ファイルは一度に1つだけ読み込みます。他のファイルは読み込まないでください。

モードトリガー読み込むファイル
コミットのみ公開せずにローカル作業を保存するreferences/durable-writes.md
トポロジーの事前確認別のワークフローがコミットやブランチを作成する前に、新しい PR の構成を永続化するreferences/topology.md
新規 PRブランチに PR が存在せず、公開が要求されているreferences/topology.md
既存 PR現在のトポロジーを維持して PR を更新するreferences/ordinary-pr.md
スタックのメンテナンススタックの作成、同期、積み直し、提出、復旧、または明示的な公開references/stacks.md

スタックの調査は、要求されたスタック変更の手順としてのみ行います。変更を伴わないスタックの調査リクエストは /plate の対象外として、gh CLI にルーティングします。

新規 PR の作業では、次の順序で参照ファイルを読み込みます。各ファイルは個別に読み込み、次のファイルを読み込む前に閉じます。

  1. references/topology.md を読み込みます。トポロジーを解決します。Plate が決定し、ユーザーには尋ねません。
  2. single または orthogonal_flat の形状では references/ordinary-pr.md を読み込みます。スタック構成では references/stacks.md を読み込みます。
  3. スタック構成では、references/stacks.md に記載されたプロバイダー参照ファイルを1つだけ読み込みます。 プロバイダー参照ファイルは gt.md、git-town.md、gh-stack.md です。 使用可能なプロバイダーがない場合は、references/stacks.md から setup.md に案内されます。

既存のプルリクエストでスタックを使用している場合は、references/stacks.md を読み込みます。単一ブランチのプッシュだけで済ませないでください。

厳格ゲート

--hard を受け取ったら、レビュー用に作業を初めて共有する直前に /hard-cheese を実行します。 このゲートには、1 つの JSON コンテキストを渡します。最終成果物の一覧、完了状況の行、追跡対象の成果物の差分ダイジェスト、品質ゲートの結果を含めます。 それ以前の実装スナップショットは渡さないでください。

ゲートのステータスを読み取ります。その後、次の表に従います。

ゲートのステータス応答
PASS公開を続行します
LOGGED公開を続行します。記録された指摘事項をプルリクエスト本文に記載します
ERROR公開する前にユーザーに確認します。ゲートのエラーを報告します
FAILEDquality gate で停止します。公開しないでください。作業を修正します

ERROR の確認には、共有質問トランスポートを使用します。 ../cheese/references/ask-user-question.md を参照してください。

ツールのルーティング

  • スタックプロバイダーを選択する前に、python3 skills/plate/scripts/plate.pyz stack-tools を実行します。 このコマンドは Graphite、Git Town、gh stack を検出します。リポジトリの状態は変更しません。
  • リポジトリ、リモート、PR の状態には Git と GitHub を使用します。スタックの状態には、選択したプロバイダーの CLI を使用します。
  • 追跡対象の成果物の編集には、リポジトリのコードインテリジェンスバックエンドを使用します。読み取りにも同じバックエンドを使用します。 code-intelligence-routing.md に従ってバックエンドを選択します。 references/durable-writes.md の手順に従います。最新のタグ付き読み取り、古くなった情報に基づかない単一の書き込み、差分の読み戻しの順に行います。 名前付きパスを使用します。シェルのリダイレクトは使用しないでください。
  • 永続化する Wiki の知識は /wiki-ingest 経由で送信します。Hallouminate ツリーを直接編集しないでください。
  • 一時的な完了レポートと PR 本文のファイルは .cheese/ の下に置きます。ステージしないでください。
  • スラッシュコマンドはホスト側の表現であり、制御モデルではありません。ホストの例を示す前に、機能の名前を明示します。 ../cheese/references/harness-portability.md を参照してください。

汎用トランザクション

コミットのみの作業と通常の PR 作業では、このトランザクションを使用します。スタック作業では、references/stacks.md のレイヤーごとのトランザクションを使用します。

  1. 最終執筆ゲート — 約束または要求されたすべての成果物を列挙します。各成果物を作成し、読み戻します。 references/durable-writes.md に従います。必要な書き込みが欠けている場合、または検証できない場合は停止します。
  2. 検証 — リポジトリの品質ゲートを実行します。easy-cheese、または just check を定義しているリポジトリでは、just check を使用します。 品質ゲートに失敗した場合は、コミットも公開もしないでください。
  3. 確認 — 状態、差分全体、最近のログを読み取ります。対象のファイル一式を確認します。
  4. ステージ — 名前を指定したファイルのみを追加します。ツリー全体をステージしないでください。 一時的な .cheese/ レポートはステージせず、追跡対象の Wiki とドキュメントの変更は含めます。 リポジトリに Hallouminate Wiki がある場合は、未コミットの .hallouminate/wiki/ パスがないか git status で確認します。 セッション中に以前行った書き込みも含めます。Git に無視されていない限り、これらの書き込みもステージします。 Wiki の更新はこのトランザクションで公開します。後から公開しないでください。
  5. コミット — 理由を説明する Conventional Commit メッセージを使用します。ユーザーから要求されない限り、コミットを修正しないでください。 フックを回避しないでください。
  6. 検証 — 状態とコミットされたファイル一式を確認します。
  7. 要求があれば公開 — references/ordinary-pr.md に従います。公開後に PR を読み取り、検証します。

コミットのみのモードは、検証後に終了します。プッシュも PR の作成もしません。

コミットの規約

ステージングする前に、git status、差分全体、最近のコミットを確認します。 認証情報、.env ファイル、説明のない大きなバイナリファイルは受け付けません。対象とするパスはすべて明示してステージングします。 次の形式を使用します。

type(scope): short description

Optional body when the rationale needs it.

件名を最初に記述します。中立的なトーンを使用します。件名には変更内容を最初に記載します。 任意の本文には、レビュー担当者に必要な情報のみを記載します。本文は短くします。物語調の文章、トーンやスラングは省きます。

次のタイプを使用します:feat、fix、refactor、chore、docs、test、style。 フックに失敗した場合は、失敗の原因を修正します。成果物に変更があった場合は、文書作成と品質ゲートを再実行します。 指定された各ファイルを再ステージングします。新しいコミットを作成します。

複数行のコミットメッセージには、単一引用符で囲んだ heredoc の区切り文字を使用します。この区切り文字により、バッククォートとドル記号がシェルによって展開されません。 プロジェクトがハーネスの ID を受け入れる場合は、任意で Co-Authored-By: <name> <email> トレーラーを付けます。それ以外の場合は、トレーラーを省略します。 ステージング後に、インデックスに登録された差分を確認します。作業ツリーの差分が空でも、すべての変更がステージング済みの場合があります。 インデックスに登録された差分を読み、ステージング済みの状態と変更なしの状態を区別します。

レビュー単位ごとにコミットを1つ作成します。単一の PR にはコミットを1つ、スタックの各レイヤーにはそれぞれコミットを1つ作成します。 コミットごとのレビューを目的に PR を構成しないでください。システムは各コミットの承認状況を追跡しません。 品質ゲートは通常、ブランチの先端でのみ実行されます。1つのコミットへのフィードバックによって、ほかのコミットも遅延します。 1つの PR で複数のコミットを使用するのは、単純な手順を短く連ねる場合に限ります。変更全体を小さく保ちます。

停止

停止の報告には、モード、失敗したステップ、失敗の責任者を必ず明記します。 ステップ名には、classify、topology、durable write、quality gate、stage/commit、publish、terminal validation のいずれかを正確に使用します。 停止および完了の報告には、../age/references/voice.md の共通の文体ルールを適用します。

  • Plate-owned — このスキルが誤った呼び出し形式またはルートを選択しました。 不正な書き込み、古い書き込み、読み取りの省略、ステージングするパスの未指定などが該当します。 ツリー全体のステージングも Plate-owned です。モードと参照先が一致しない場合も Plate-owned です。 /age のレビュー作業、または公開以外の GitHub 作業は、Plate-owned のルーティングエラーです。 次の復旧ルールを使用します:呼び出し形式またはルーティングを修正してから、そのステップを再試行する
  • Environment-owner — 認証、権限、フック、ネットワーク、プロバイダーの有効化、または共有バックエンドが原因で失敗しました。 報告では、責任を持つシステムを明記します。呼び出し形式が誤っているかのように再試行してはいけません。 また、失敗を回避するためにゲートを弱めたり、未指定のパスをステージングしたり、読み取り確認を省略したりしてはいけません。

品質ゲートの失敗は、作業を出荷できないことを示します。そのため、quality gate で停止します。その後、作業を修正します。

完了

最終確認の証拠を一時的な JSON ファイルに書き込みます。 python3 skills/plate/scripts/plate.pyz validate-publication <state.json> を実行します。 このコマンドが valid: true を含む正規化済みの証拠を返した場合に限り、完了を報告します。

{
  "mode": "new-pr",
  "topology": "single",
  "provider": "ordinary",
  "artifacts": [
    {"target": "docs/adr/example.md", "backend": "tilth", "verified": true}
  ],
  "gate": {"command": "just check", "result": "pass"},
  "commits": ["0123456789abcdef0123456789abcdef01234567"],
  "pr_plan": {
    "contract_version": {
      "schema_uri": "https://schemas.easy-cheese.dev/pr-plan",
      "major": "1",
      "minor": "0"
    },
    "shape": "single",
    "target_branch": "main",
    "groups": [
      {
        "branch": "feature",
        "title": "docs: example ADR",
        "base": "main",
        "commits": ["0123456789abcdef0123456789abcdef01234567"],
        "depends_on": []
      }
    ]
  },
  "prs": [
    {
      "url": "https://github.com/example/repo/pull/42",
      "base": "main",
      "head": "feature",
      "verified": true
    }
  ],
  "risk": "none"
}

選択したモードでコミットまたは PR を作成しない場合は、commits または prs に空のリストを使用します。 トポロジーの事前確認は、公開トランザクションと品質ゲートの前に停止します。 そのため、トポロジーの事前確認では gate: {"command": "n/a", "result": "n/a"} を使用します。

生成されたバンドルに含まれるコマンド一覧は、references/commands.md を参照してください。

コメント