アプリ・Webサービス・業務ツールの制作を、証拠分析→確定的な初稿→要件定義→体験設計→機能分解→実装→品質ゲート→リリース判定の手順ゲート制で進めるスキル。質問で要件を埋めるのではなく、依頼文・既存コード・資料・ログから最有力案を選び、動く成果物を先に出して差分で改善する。ユーザーが「アプリを作りたい」「ツールを作って」「〜を自動化したい」「システム化したい」「要件定義」「仕様を決めたい」「UI/UXを設計して」「体験を良くしたい」「機能を洗い出して」「MVPを決めたい」「品質チェック」「リリースしていいか判断して」などと言ったら必ず使用する。外部データの取込・マスタ・締め処理を伴う業務システムでは references/data-lifecycle.md も併用する。新規・既存を問わずアプリの制作・改善・リニューアルで使用する。
assign-notion-fidelity-evaluator
Notion ページを描画する直前に粒度を検証したいとき、info-collector-agent ページと同等の section 充足度を section_canonical_map 基準で機械検証したいときに使う。
含まれるファイル(15)
- SKILL.md13.5 KB
- prompts/R1.md7.8 KB
- prompts/R2.md8.8 KB
- prompts/R3.md7.7 KB
- references/abstraction-contract.md1.8 KB
- references/canonical-page-snapshot.json13.3 KB
- references/fidelity-check-rules.md1.3 KB
- references/granularity-rubric.md1.7 KB
- references/resource-map.yaml1.7 KB
- schemas/output.schema.json2.8 KB
- schemas/result.json389 B
- scripts/extract-canonical-snapshot.py3.6 KB
- scripts/extract-granularity-score.py1.7 KB
- scripts/validate-notion-fidelity.py10.5 KB
- workflow-manifest.json2.2 KB
SKILL.md(原文)
インストールする前に、エージェントに与えられる指示の中身を確認できます。
assign-notion-fidelity-evaluator
Runtime root contract
runtime_root_policy: host-skill-pathを適用する。- Claude Codeでは
CLAUDE_PLUGIN_ROOTをplugin rootとして使用する。 - Codexではホストが提示したこの
SKILL.mdのabsolute pathから、plugin manifestを持つ祖先を上方探索して論理PLUGIN_ROOTを解決する。 cwdからplugin rootを推測せず、literal placeholderをshellへ渡さない。各shell invocation内で解決済みabsolute pathをPLUGIN_ROOTに設定する。prompts/配下はこのowner Skill契約を継承する。
Purpose & Output Contract
intake-final-context.json を Notion へ描画する前後に、info-collector-agent (Notion page_id=35195d6503b781788e31f59b4e05e705) と同等の構造粒度・再現性が保たれているかを機械検証する fidelity ガード。Notion API を叩かず、references/canonical-page-snapshot.json との JSON 構造比較のみで公開前 (pre-publish) / 公開後 (post-publish 差分) の双方を判定する。
- 入力:
intake-final-context.json+references/canonical-page-snapshot.json(派生元としてreferences/section_canonical_map.jsonを参照) - 出力:
output/<hint>/fidelity-report.json…sections[].present/granularity_score/missing_slots/excess_slotsとoverall_score,verdict ∈ {pass, warn, fail} - 副次出力:
output/<hint>/fidelity-report.md(R3 delta-report, 人間可読) - 完了条件:
verdict=passのときのみ呼び出し元 (render_notion_page.py) が公開を許可する。failは exit 2、warnは exit 1、passは exit 0。fail でも JSON/MD は必ず書き出す (fail-fast ≠ silent-fail)。
Key Rules
- 責務単一: 構造粒度のみ: 公開前/後の fidelity (再現性・差分) 検証に専念。intake 内容妥当性は
run-skill-intakeに、スキーマ存在検査はintake.schema.jsonに、Notion API 経由公開はrun-notion-intake-publish/render_notion_page.pyに委譲する。 - Canonical SoT は section_canonical_map.json: 12 section の
required_fields / char_bounds / viz_slotsは aggregator 配下を一次正本とし、本スキルは 派生スナップショット (references/canonical-page-snapshot.json) を保持する (DRY)。手で snapshot を書かない。 - Notion API 直接呼び出し禁止: 検査は JSON 構造比較のみ。API 認証情報は本スキルでは扱わない。
- Fail-fast:
verdict=failで exit 2、呼び出し元は即停止すること。 - Script First: 全判定は
scripts/*.py(Python 3, jsonschema/jinja2 許容) で決定論実行。 - 300 行制約: SKILL.md は 300 行以下。詳細ルールは
references/に分割し、when_to_readで誘導 (Progressive Disclosure)。 - 命名規約: 全 script ファイル名はハイフン区切り (28 章 §4.3, no underscore)。
- 評価ルブリック: granularity score (0-100) は char_bounds 一致 30% + required_fields 充足 40% + viz_slots 一致 30%。詳細は
references/granularity-rubric.md、verdict 閾値 (pass≥0.85 / warn≥0.70 / fail<0.70) はreferences/fidelity-check-rules.md。 - viz_slots は mandatory=true のみ評価:
mandatory=falseは missing でも減点しない (warn 列にのみ記録)。
ゴールシーク実行
ゴール (Goal)
intake-final-context.json が canonical-page-snapshot.json と同等粒度を保ち、output/<hint>/fidelity-report.json (verdict ∈ {pass, warn, fail}, overall_score, section 別 missing/excess) と fidelity-report.md (delta-report) が生成され、公開直前 (pre-publish) フックおよび公開後 (post-publish) 差分検証で verdict=pass のみ呼び出し元へ通過させた状態になっている。
目的・背景 (Why)
Notion 公開パイプラインは API 経由で行われるため、intake-final-context.json と canonical ページの section 粒度がずれると、後段の人間レビューで「再現性が無い」「情報が欠落した」と判明し戻り工数が発生する。Notion API 認証を伴わずに JSON 構造比較のみで決定論的に判定することで、公開前のフェイルファスト停止と、公開後の差分検知 (canonical 更新時の追従漏れ検出) を低コストで両立させる。固定手順では canonical 更新タイミング・char_bounds の計測対象差異・viz_slots の mandatory 区分など実行時文脈で揺れるため、未達観点を都度埋める。
完了チェックリスト (Checklist)
-
section_canonical_map.json(v2 以降) が変更された場合、scripts/extract-canonical-snapshot.pyを再走させreferences/canonical-page-snapshot.jsonが最新派生に更新されている (手書き禁止) -
scripts/validate-notion-fidelity.py <intake-final-context.json>が exit 0/1/2 のいずれかで完了し、output/<hint>/fidelity-report.jsonが生成されている (fail でも JSON/MD 出力必須) -
fidelity-report.jsonがsections[].present / granularity_score / missing_slots / excess_slotsとoverall_score,verdictを保持し、schemas/output.schema.json準拠である - char_bounds は
scripts/validate-notion-fidelity.py内section_text_length()で計測した本文相当文字数を使用 (json.dumps 長ではない) - required_fields[] が context.json に全て存在し型整合 (granularity score の 40% を充足)
- viz_slots は
mandatory=trueのみで減点判定、mandatory=false欠落は warn 列に記録のみ - verdict 判定が
references/fidelity-check-rules.mdの閾値 (pass≥0.85 / warn≥0.70 / fail<0.70) と一致し、pass のみ呼び出し元 (render_notion_page.py) が公開許可 -
verdict=failで exit 2、warnで exit 1、passで exit 0 が返り、fail/warn でもfidelity-report.md(R3 delta-report) が人間可読で書き出されている - 公開後の差分検証 (post-publish) として
scripts/extract-granularity-score.pyで overall_score (0-100) を取得し CI メトリクスに記録 (optional だが canonical 更新追従漏れ検知の根拠となる) - Notion API 認証情報を本スキル内で扱っていない (構造比較のみ)
- R1 (canonical-snapshot-extraction) / R2 (fidelity-check) / R3 (delta-report) の 7 層 prompt (
prompts/R1.md/R2.md/R3.md) と整合した出力になっている
ゴールシークループ
references/fidelity-check-rules.md と references/granularity-rubric.md の評価観点に従い、未達観点をゲートとみなして都度埋める。本スキル固有の差分:
- 未達評価の単位は section: 12 section 各々で
granularity_scoreを算出し、overall_score未達なら不足 section の R3 delta-report を根拠に context.json 側を埋めて再走する。 - 差し戻し:
verdict=fail(exit 2) で呼び出し元を即停止。warn(exit 1) は呼び出し元判断に委ねるが、fidelity-report.mdの改善示唆を必ず提示する。 - canonical 更新追従:
section_canonical_map.jsonが更新されたら必ずextract-canonical-snapshot.pyを再走 (template-change audit-trigger)。snapshot 手書き禁止。 - API 呼び出し禁止: 検証は JSON 構造比較のみ。Notion API 認証情報を要する処理は
run-notion-intake-publish側に委譲。 - fail-fast ≠ silent-fail: exit 2 でも JSON/MD は必ず書き出し、呼び出し元が原因を読めるようにする。
実行コマンド (要点)
# canonical snapshot 再生成 (template-change trigger 時のみ)
python3 ${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-plugins/skill-intake}}/skills/assign-notion-fidelity-evaluator/scripts/extract-canonical-snapshot.py \
--source plugins/skill-intake/references/section_canonical_map.json \
--out plugins/skill-intake/skills/assign-notion-fidelity-evaluator/references/canonical-page-snapshot.json
# fidelity check (公開直前フック)
python3 ${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-plugins/skill-intake}}/skills/assign-notion-fidelity-evaluator/scripts/validate-notion-fidelity.py <intake-final-context.json>
# exit 0 = pass / 1 = warn / 2 = fail
# 粒度スコア単体取得 (CI メトリクス用)
python3 ${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-plugins/skill-intake}}/skills/assign-notion-fidelity-evaluator/scripts/extract-granularity-score.py <intake-final-context.json>
Gotchas
- canonical の更新タイミング:
section_canonical_map.json(v2) が変わったら本スキルのextract-canonical-snapshot.pyを再走させる。手で snapshot を書かない。 - char_bounds の計測対象: Notion ブロック化前の context.json 上での該当 section の本文相当文字列 (json.dumps の長さではない —
scripts/validate-notion-fidelity.py内のsection_text_length()を使用)。 - viz_slots は mandatory=true のみ評価:
mandatory=falseは missing でも減点しない (warn 列にのみ記録)。 - fail でも report.md は出力する: 呼び出し元が原因を読めるよう、exit=2 でも JSON/MD は必ず書き出す (fail-fast ≠ silent-fail)。
- Notion API 直叩き禁止: 認証を要する処理は
run-notion-intake-publish側へ。本スキルは構造比較のみ。 - 責務逸脱禁止: intake 内容妥当性 (5 軸 / true_purpose 等) は aggregator、スキーマ準拠は
intake.schema.jsonに委譲。本スキルは粒度差分のみ。
Additional Resources (Progressive Disclosure)
| 用途 | パス | when_to_read |
|---|---|---|
| 責務別 prompt (R1: canonical-snapshot-extraction) | prompts/R1.md | aggregator の section_canonical_map.json から派生スナップショットを生成する手順を確認するとき |
| 責務別 prompt (R2: fidelity-check) | prompts/R2.md | context と canonical の section 粒度比較・verdict 判定ロジックを確認するとき |
| 責務別 prompt (R3: delta-report) | prompts/R3.md | missing/excess/granularity_warnings を Markdown と exit code に変換するとき |
| 正本構造マップ | references/canonical-page-snapshot.json | 各 section の required_fields / char_bounds / viz_slots を参照するとき |
| スコア算出ルール | references/granularity-rubric.md | 0-100 score の重み付け (char_bounds 30% / required 40% / viz 30%) を確認するとき |
| verdict 閾値 | references/fidelity-check-rules.md | pass/warn/fail の境界とエスカレーション規約を確認するとき |
| 量産規約 | references/abstraction-contract.md | canonical_page_id / canonical_snapshot_path / fidelity_threshold_pass / fidelity_threshold_warn 等のテンプレ変数を差し替えるとき |
| Progressive Disclosure 地図 | references/resource-map.yaml | references 全体の読み順を確認するとき |
| 機械可読フロー定義 | workflow-manifest.json | Step/Gate/Phase の entryHook/exitHook/dependsOn を確認するとき |
| 出力スキーマ | schemas/output.schema.json | fidelity-report.json の必須キーを確認するとき |
関連スキル
run-skill-intake— canonical SoT (references/section_canonical_map.json) の所有者run-notion-intake-publish— 本スキルを公開直前フックとして呼ぶ sibling (API 経由公開を担当)
レビュー
まだレビューはありません。使ってみた感想をお寄せください。
同じリポジトリのスキル
概要と使いどころ
Webアプリの準備→要件定義→設計→実装→公開→品質ゲートを実行する内部オーケストレーター。Claude Codeの /build-app /improve-app、Codexの $build-app / $improve-app から明示的に委譲された場合、custom agent起動時、または利用者が $app-orchestrator を明示した場合だけ使用する。一般のアプリ相談から暗黙起動しない。
run-extract-blueprint が生成した章別ブループリントの忠実性を独立 context で評価したいとき、事実/推測区別と粒度と被覆を検証し draft_hash に束縛した PASS/FAIL verdict をローカル品質ゲート (C01 の周回内の受入判定・差し戻し) へ渡したいときに使う。
確認点で利用者が見る深さを選んだあと打ち合わせ資料を作り手とは別の目で確かめたいとき、正確さ・言葉・見た目・シンプルさの指摘を資料の編集なしで受け取りたいときに使う。
生成した handout 資料が初心者に伝わるか読みやすさレビューを依頼したいとき、独立 context のレビュアーから指摘と根拠つきの verdict を回収したいときに使う。
36章 PKG-002〜008 / PKG-014 sub-check を実行したいとき、plugin package の静的検査結果を findings JSON で得たいときに使う。