Pre-choice usable artifact execution
Purpose & Output Contractの最小の実成果物をmain contextで作成する。effect別のparse/open・secret・irreversible・corrupt guardだけを実行し、現物path・digest・開き方を提示してからaccept-as-is/light/standard/detailedを記録する。accept-as-isはその場でhandoff完了とし、後続sectionを実行しない。
Post-choice selected improvement execution
以下の既存workflow・goal-seek・評価・修正sectionはlight/standard/detailedが記録されてsemantic_evaluator_startedへ遷移した場合だけ実行する。release/exhaustiveは別の明示eventを必要とする。
run-plugin-package-check
Purpose & Output Contract
36章 Plugin Package Harness Contract の PKG-001〜015 gate を plugin 単位で一括実行する orchestrator。25章 §runbook の Step 5(PKG completeness check)として run-build-skill 直後・run-elegant-review 直前に挟まる。
入力:
plugin: "harness-creator" # 必須
phase: 0 # {0, 1, 2, all}。既定 0。⚠️出荷前検査は必ず --phase all を明示。省略時(=0)は PKG-001〜009 のみ走り 010〜015 が黙って未検査=subset PASS が緑に見える false green。0/1/2 は反復途中の部分検査用
pkg: null # 個別 PKG ID 指定(例: "PKG-010,PKG-013a")。null なら phase 全件
dry_run: false # true なら scripts を呼ばず計画のみ表示
output_dir: "eval-log/<plugin>/" # 既定値、27章 §3.1 規約
出力:
eval-log/<plugin>/pkg-<id>/<YYYY-MM-DD>-<run>.json(各 PKG ID の個別ログ、27章 §3.1)
eval-log/<plugin>/pkg-summary/<YYYY-MM-DD>-<run>.json(schemas/run-report.schema.json 準拠)
- stdout に verdict サマリ markdown
- 35章
pkg_check_failed failure_mode への observable 配線(fail 時のみ)
完了条件:
- Phase 0 = PKG-001〜009 全 pass / not_applicable
- Phase 1 = + PKG-010 pass
- Phase 2 = + PKG-011〜015 pass
- 1 件でも
fail なら exit 1、run-skill-create パイプライン側で停止
Key Rules
- PKG ID 定義は ref-pkg-contract 経由: 本 skill で再定義しない
- PKG-002〜008 / PKG-014 は assign-plugin-package-evaluator に委譲: Skill tool 経由で
context: fork
- PKG-001/009/010〜013/015 は本 skill が直接実装: 各 scripts を sub-process で実行
package_mode: skill-only plugin に対する適用範囲: PKG-002/004 のみ実行、それ以外は not_applicable
- eval-log パス独自定義禁止: 27章 §3.1 規約厳守
- 35章 observable 配線:
verdict.fail > 0 のとき pkg_check_failed を .claude/logs/ に 1 行 append(schema は 35章 §observables)
dry_run=true でも計画 JSON は出力: 副作用なし、stdout に実行予定 PKG ID 列挙
- PKG-013 は単独実行不可: 必ず 013a/b/c/d 4 件に展開
ゴールシーク実行
固定手順は書かず、ゴール+チェックリストへ向け都度手順を生成・反復する。正本: ../run-build-skill/references/goal-seek-paradigm.md。
ゴール (Goal)
対象 plugin の指定 phase に属する全 PKG gate が pass / not_applicable で確定し、schemas/run-report.schema.json 準拠の pkg-summary JSON と verdict markdown が eval-log/<plugin>/ 配下に保存された状態になっている。
目的・背景 (Why)
25章 §runbook Step 5(契約適合)として出荷前に PKG-001〜015 を機械検査し、規範採点や elegance lint と直交した「契約準拠」を保証するため。fail を残したまま下流パイプラインへ流すと不整合 package が出荷される。
完了チェックリスト (Checklist)
ゴールシークループ
正本 6 ステップ(現状評価→手順生成→実行→検証→Anchor Step→反復、既定 5 周)に従う。未達チェック項目を埋める最短手順をその場で生成する。下記「局面カタログ」は順序固定ではなく、その周回で未達な gate に応じて都度選ぶ。
局面カタログ(順序は都度判断)
[Step 0] 入力検証 + package_mode 読込
│
▼
[Step 1] PKG-001 公式 CLI strict validate
│ scripts/run-plugin-validate-strict.sh
▼
[Step 2] PKG-002〜008 委譲
│ Skill(assign-plugin-package-evaluator, target_plugin=<name>, context=fork)
│ → eval-log/<name>/pkg-batch/<date>-<run>.json(PKG ID ごとの pkg_checks を 1 ファイルに束ねる)
▼
[Step 3] PKG-009 外部参照ゼロ
│ scripts/lint-pkg-009.py --skills-dir plugins/<name>/skills --fail-on-external
│ → eval-log/<name>/pkg-009/<date>-<run>.json(pkg_id・status を持つ PKG-009 result JSON)
▼ (phase >= 1)
[Step 4] PKG-010 install smoke
│ scripts/smoke-plugin-install.sh
▼ (phase >= 2)
[Step 5] PKG-011〜012 smoke
│ smoke-plugin-uninstall.sh / smoke-plugin-upgrade.sh
▼
[Step 6] PKG-013a〜d permission scope
│ scripts/validate-plugin-permissions.py --plugin <name> --check 013a,013b,013c,013d
▼
[Step 7] PKG-014 runtime contract
│ assign-plugin-package-evaluator (delegated, --check pkg-014)
▼
[Step 8] PKG-015 rubric 違反率
│ scripts/run-pkg-015.py --plugin <name> --log-dir eval-log/<name> --out eval-log/<name>/pkg-015/<date>-<run>.json
│ (履歴 bootstrap 中は明示 not_applicable、違反率が閾値を超えた breach 時は fail、それ以外は pass へ正規化)
▼
[Step 9] findings 集約 + observable 配線
│ scripts/aggregate-pkg-findings.py --plugin <name> --run <date>-<run> --phase <phase> [--pkg <PKG ID,...>]
│ --out eval-log/<name>/pkg-summary/<date>-<run>.json
│ (この run の pkg-batch/ と pkg-<id>/ のログだけを PKG ID ごとに束ねる。別の run のログは新しくても読まない。
│ phase の required_pkg のうちこの run のログが無い ID と、status を読めないログは fail と数える)
▼
[Step 10] run-report.json 生成 + verdict markdown 出力
Phase 別の実行 Step は workflow-manifest.json phases[].id 参照。
役割直交(Step 5 / 5.5 / 6)
25章 runbook での位置づけ:
| Step | 役割 | 担当 skill |
|---|
| 5 | 契約適合: PKG-001〜015 機械検査 | 本 skill |
| 5.5 | 設計 elegance: 30 思考法 × 4 条件 lint | run-elegant-review v2 |
| 6 | 規範採点: rubric 適合度 | assign-skill-design-evaluator |
3 つは責務直交。本 skill は規範ではなく契約準拠を見る。
Gotchas
- PKG-001 の公式 CLI が未配備の環境:
claude plugin validate コマンド未インストール時は status: skip + skip_reason="claude CLI not found" を残し exit 1 にしない(環境依存差を吸収)
- PKG-010 install smoke の sandboxing: local marketplace install は実環境に副作用。
--dry-run または専用 sandbox dir を必須化(実装スクリプト側で隔離)
- PKG-013 sub-check の合算: 1 件でも fail なら PKG-013 全体を fail として集約。サマリ表記は
PKG-013(a:pass, b:fail, c:pass, d:pass)
- 35章 observable 配線の二重発火禁止: 1 run につき 1 line。複数 PKG fail でも
pkg_check_failed event は集約して 1 件
eval-log/<plugin>/ の append-only: 過去ログを上書き禁止(27章 §10 アンチパターン #6 準用)
- 兄弟 plugin
skill-governance-lint が未導入の環境: PKG-009 (lint-pkg-009.py)、PKG-010 (sandbox-plugin-lifecycle.py)、PKG-015 (run-pkg-015.py) は同梱 resolver で兄弟 plugin を探し、見つからなければ推測 path で lint を呼ばずに止まる。3 つとも停止理由を status: fail のログに残すので、skill-governance-lint を install してから再実行する
Additional Resources
prompts/R1-orchestrate.md — Step 0〜10 の制御プロンプト(R1)
prompts/R2-gate-decide.md — phase 別完了判定(R2)
schemas/run-report.schema.json — run 全体集約 JSON
scripts/run-plugin-validate-strict.sh — PKG-001 公式 CLI ラッパー
scripts/smoke-plugin-install.sh — PKG-010 install smoke
scripts/smoke-plugin-uninstall.sh — PKG-011
scripts/smoke-plugin-upgrade.sh — PKG-012
scripts/sandbox-plugin-lifecycle.py — PKG-010〜012 を一時 Claude home で実行する決定論 lifecycle harness
scripts/validate-plugin-permissions.py — PKG-013a〜d
scripts/lint-pkg-009.py — skill-governance-lint の外部参照 lint を resolver 経由で起動 (PKG-009)
scripts/run-pkg-015.py — rubric lint の bootstrap/breach を PKG status へ正規化
scripts/aggregate-pkg-findings.py — Step 9 集約
- 子 skill:
assign-plugin-package-evaluator (PKG-002〜008, PKG-014)
- 参照 skill:
ref-pkg-contract
- 設計書: 36章(正本)、27章 §3.1/§4.1、34章 Phase 0/1/2、35章 observables、34a §4