アプリ・Webサービス・業務ツールの制作を、証拠分析→確定的な初稿→要件定義→体験設計→機能分解→実装→品質ゲート→リリース判定の手順ゲート制で進めるスキル。質問で要件を埋めるのではなく、依頼文・既存コード・資料・ログから最有力案を選び、動く成果物を先に出して差分で改善する。ユーザーが「アプリを作りたい」「ツールを作って」「〜を自動化したい」「システム化したい」「要件定義」「仕様を決めたい」「UI/UXを設計して」「体験を良くしたい」「機能を洗い出して」「MVPを決めたい」「品質チェック」「リリースしていいか判断して」などと言ったら必ず使用する。外部データの取込・マスタ・締め処理を伴う業務システムでは references/data-lifecycle.md も併用する。新規・既存を問わずアプリの制作・改善・リニューアルで使用する。
run-intake-interview
ユーザーが言語化できない「何を入力し、何をどう出力してほしいか」を深掘って intent_contract と 5 軸ヒアリングシートを再現性高く埋めたいとき、run-skill-intake から phase 4 として呼ばれて sheet.md/sheet.json/interview.json を生成したいときに使う。
インストール方法を見る含まれるファイル(15)
- SKILL.md23.8 KB
- prompts/R1-main.md13.4 KB
- references/abstract-answer-patterns.md467 B
- references/five-axes-priority.md659 B
- references/question-bank-pointer.md991 B
- references/question-plan.json5.8 KB
- references/resource-map.yaml1.7 KB
- references/to-be-vocabulary-patterns.md3.6 KB
- schemas/output.schema.json9.0 KB
- scripts/build-questions.py4.6 KB
- scripts/build-sheet-json.py3.4 KB
- scripts/check-five-axes-coverage.py1.2 KB
- scripts/validate-answer-abstraction.py5.5 KB
- scripts/validate-interview-json.py5.1 KB
- workflow-manifest.json5.5 KB
SKILL.md(原文)
インストールする前に、エージェントに与えられる指示の中身を確認できます。
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-intake-interview
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 セッションの Phase 4 担当。最優先で「何を入力し、何をどう出力してほしいか」を intent_contract.input_spec / intent_contract.output_spec に抽出し、未充足 slot は probe-pattern-table.json の固定 probe で手を差し伸べる。その後、ヒアリングシート sheet.md の空欄および [?] マーカーを 5 軸 (出力先 / 情報源 / 共有相手 / 真の課題 / ナレッジ資産) 優先順位で AskUserQuestion により順次充足し、interview.json を emit する。出力先と情報源は intent_contract.output_spec.sink / intent_contract.input_spec.sources から派生する。本スキルは「入力→出力インテント抽出・5 軸シート充足・抽象回答フラグ付け・interview.json emit」に責務を絞り、価値深掘り (Phase 5 purpose-excavator)・仮説検証 (Phase 2)・要約 (Phase 8)・3 軸確定 (run-intake-kickoff) は行わない。run-intake-kickoff との境界は「kickoff=3 軸 (pattern/depth/pain)、interview=入力→出力 intent + 5 軸シート」で確定。
入力:
output/<hint>/profile.json(vocabulary_tier= novice|intermediate|expert を含む。Phase 3 が確定)output/<hint>/sheet.md(空欄および[?]を含む 5 軸シート)references/question-bank-pointer.md経由の質問雛形../../references/probe-pattern-table.json(intent slot 未充足時の固定 probe)../../references/intent-contract.schema.json(入力→出力インテント正本)references/abstract-answer-patterns.md(抽象回答検出規則)references/five-axes-priority.md(軸の処理順)
出力:
output/<hint>/sheet.md(空欄を埋めた更新済シート。5 軸完了後に「現状手順 (procedure)」節を追記し、構造化した procedure ブロックを ```json フェンスで埋め込む)output/<hint>/sheet.json(intake-final-schema.json#/properties/five_axes互換のfive_axes.rows/five_axes.pipeline。procedure 節があればprocedureを additive に含む)output/<hint>/interview.json(schemas/output.schema.json準拠。filled_ratio/five_axes_complete/unresolved/needs_excavation/abstract_answers/five_axes/intent_contract/pending_probes/qa_logを保持。5 軸完了後は現状手順procedure(mode=detailed のsteps[]、または mode=overview_fallback のdifficulty_flag+overview) を additive に保持)
完了条件: 5 軸すべて非空 (five_axes_complete=true) + intent_contract.slot_status 全 slot filled=true + pending_probes=[] + scripts/build-sheet-json.py PASS + ../../scripts/build-intent.py --schema ../../references/intent-contract.schema.json PASS + scripts/validate-interview-json.py PASS + scripts/check-five-axes-coverage.py PASS + 現状手順(procedure)抽出後に ../../scripts/validate-procedure-completeness.py --interview output/<hint>/interview.json PASS (mode 別完全性 + as-is フィールドへの to-be 語彙非混入)。
Key Rules
- 入力→出力 intent を最優先: 5 軸のうち出力先/情報源は推測で埋めず、
intent_contract.output_spec.sink/intent_contract.input_spec.sourcesから派生する。 - 5 軸シート充足まで: 価値深掘り (excavation) / 仮説検証 / 要約 / 3 軸確定は越境しない。それぞれ Phase 5 / 2 / 8 /
run-intake-kickoffの責務。 - AskUserQuestion 1 問ずつ: 並列・束ね質問禁止。5 軸質問は
build-questions.pyが返す固定 3 択 + 自由入力を使う。intent probe はprobe-pattern-table.jsonの選択肢数を正とし、3 択制限の例外とする。 - vocabulary_tier 固定:
profile.jsonの tier (novice|intermediate|expert) をセッション中変更しない。質問文はbuild-questions.py/probe-pattern-table.jsonが返した文面を正本とし、言い換える場合もvocabulary-tiers.mdの固定対応表に限定する。 - 抽象回答は intent slot へ最低限写像: 「いい感じ」「効率化」だけで終えず、対象・素材・頻度・出力先・読者・粒度のいずれかを
normalized_answerまたはintent_contractに写像する。写像不能ならpending_probesに戻し、価値深掘りは Phase 5 に委ねる。 - 5 軸優先順位固定: 出力先 → 情報源 → 共有相手 → 真の課題 → ナレッジ資産。ただし出力先/情報源は intent_contract 派生を優先する。
- 個人情報の変数化: 社名・個人名は
interview.json本文に転記せず、{{var_*}}で抽象化する。 - 現状手順 (procedure) は 5 軸完了後: 5 軸充足後に
references/question-plan.jsonのprocedure_axisを参照し、現状実施手順を順序付きステップ (各ステップ action/input/output/tool/frequency) で聞き取る。scripts/validate-answer-abstraction.py --axis procedureが 2 連続で exit3 (抽象/未回答) となったらoverview_fallback(difficulty_flag=true + 工程数目安/関与者/頻度の概略) へ決定論的に切り替え、停止せず最後まで継続する (goal-spec C2/C6)。procedure は 6 本目の軸であり、5 軸の優先順位・スキップ条件は変更しない。 - as-is 忠実・to-be 非混入: 手順・課題・流れは相手が述べた as-is (現状の事実) を固有名詞・実例・頻度・関与者の具体性で記録し、一般化・要約・改善提案・最適化 (to-be) を混入させない。抽象的・平均的な回答には正規化せず追加質問で具体化を促す。ユーザーが自発的に述べた改善提案 (to-be) は handoff 対象の as-is フィールド (
procedure.*/ 真の課題 content) へ記録しない (別フィールドへの退避もしない)。to-be 語彙集はreferences/to-be-vocabulary-patterns.md、混入検出は../../scripts/validate-procedure-completeness.pyの contamination check が担う (goal-spec C7/C8)。手順の最適化・理想化 (最高の手順の組み立て) は後段 build の責務でありヒアリングでは行わない。
ゴールシーク実行
ゴール (Goal)
profile.json と sheet.md を入力に、ユーザーが言語化できていない入力仕様/出力仕様が intent_contract に抽出され、output/<hint>/sheet.md の 5 軸空欄および [?] がすべて充足され、output/<hint>/sheet.json と output/<hint>/interview.json が生成され、scripts/build-sheet-json.py / ../../scripts/build-intent.py --schema ../../references/intent-contract.schema.json / scripts/validate-interview-json.py / scripts/check-five-axes-coverage.py がすべて exit 0、five_axes_complete=true、pending_probes=[]、抽象回答は abstract_answers[] に印付け + needs_excavation=true で記録された状態になっている。
目的・背景 (Why)
5 軸シートが空欄のまま後続 phase (Phase 5 深掘り / run-intake-visualize / run-intake-finalize) に進むと、深掘り対象の特定と可視化の判断材料を欠き、再ヒアリングで手戻りする。固定手順では profile.vocabulary_tier 差・空欄分布・抽象回答頻度に脆く、未充足軸を都度埋めるゴールシークが必要。本スキルはあくまで「シート充足の機械検証可能化」に限定し、深掘り判断は needs_excavation フラグで Phase 5 に委ねる。
完了チェックリスト (Checklist)
-
profile.jsonを読みvocabulary_tierをセッション開始時に確定し、以降変更していない -
sheet.mdの空欄および[?]を 5 軸別に走査し未回答リストを生成済み -
qa_log[]から../../scripts/build-intent.py --schema ../../references/intent-contract.schema.jsonを実行し、未充足 slot があればpending_probes[]の順にprobe-pattern-table.jsonの文面を verbatim で 1 問ずつ聞いた -
intent_contract.input_spec/intent_contract.output_specの 9 slot がすべて filled=true で、pending_probes=[] -
five_axes.rows[name=出力先]はintent_contract.output_spec.sink、five_axes.rows[name=情報源]はintent_contract.input_spec.sourcesから派生済み - 5 軸優先順位 (出力先 → 情報源 → 共有相手 → 真の課題 → ナレッジ資産) で各軸を順に処理
- 各軸の質問は
scripts/build-questions.pyで Q-ID と順序を確定し、references/question-bank-pointer.md経由で文面を解決済み -
AskUserQuestionを 1 問ずつ直列で発行 (3 択 + 自由入力、並列禁止) - 回答を
sheet.mdに Edit で反映し、[?]を解消済み -
references/abstract-answer-patterns.md該当回答はabstract_answers[]に{axis, answer, reason}で追記しneeds_excavation=true - 各質問/回答を
qa_log[]に 5軸質問は{qid, axis, question_text, selected_option, raw_answer, normalized_answer}、intent probe は{probe_id, target_slot, question_text, selected_option, raw_answer, normalized_answer}で記録済み - 5 軸すべて非空となり
five_axes_complete=true、未解消があればunresolved[]に列挙 -
output/<hint>/sheet.jsonをbuild-sheet-json.pyで生成済み -
output/<hint>/interview.jsonがschemas/output.schema.json準拠 (filled_ratio/five_axes_complete/unresolved/needs_excavation/abstract_answers/five_axes/intent_contract/pending_probes/qa_log全充足) -
python3 ${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-plugins/skill-intake}}/skills/run-intake-interview/scripts/validate-interview-json.py output/<hint>/interview.jsonexit 0 -
python3 ${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-plugins/skill-intake}}/skills/run-intake-interview/scripts/check-five-axes-coverage.py output/<hint>/sheet.mdexit 0 - 個人情報を
interview.json本文に直書きせず変数化済み - 5 軸完了後に現状手順(procedure)を抽出済み: mode=detailed は
steps[]各要素の action/input/output/tool/frequency 非空、mode=overview_fallback は difficulty_flag=true + overview(step_count_estimate/participants/frequency)非空 - procedure 軸で 2 連続の抽象/未回答 (
validate-answer-abstraction.py --axis procedureexit3) を検出したら overview_fallback へ切り替え、停止せず継続した - handoff 対象 as-is フィールド (
procedure.*/ 真の課題 content) に to-be 語彙 (べきである/理想は/最適化 等) を混入させていない -
python3 ${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-plugins/skill-intake}}/scripts/validate-procedure-completeness.py --interview output/<hint>/interview.jsonexit 0 (完全性 + 非混入) - 責務外 (深掘り再質問・仮説検証・要約・3 軸確定・to-be 設計/手順最適化) に踏み込んでいない
ゴールシークループ
固定手順ではなく、上記チェックリストを唯一の停止条件とする。qa_log[] を ../../scripts/build-intent.py に通して pending_probes[] を確認 → 未充足 intent slot があれば probe-pattern-table.json 順に 1 問発行 → 9 slot 充足後、未充足軸を five-axes-priority.md 順で特定 → build-questions.py で depth/pattern/既記入軸から Q-ID と順序を決定論的に確定 → question-bank-pointer.md 経由で文面を解決 → AskUserQuestion で 1 問発行 → 回答を sheet.md に反映 → abstract-answer-patterns.md で抽象判定 → checklist 自己評価、を反復する (上限は prompts/R1-main.md Layer 4 の反復回数)。workflow-manifest.json の phase 順 P1-load-sheet → P2-normalize-intent → P3-fill-by-axis → P4-flag-abstract → P5-emit に従い、各 phase の fatal_exit_codes 検出時は即停止して未充足 slot/軸を stderr に列挙する。run-intake-kickoff で確定済の 3 軸 (pattern/depth/pain) は前提として読み取るのみ、再確定しない。
現状手順 (procedure) 軸の抽出
5 軸ヒアリング完了後に、references/question-plan.json の procedure_axis を参照して 6 本目の as-is procedure 軸を起動する (goal-spec C1/C2/C6/C7/C8)。
- detailed 経路 (既定):
procedure_axis.detailed_questionsを使い、ユーザーが実際に行っている手順を 1 ステップずつ順番に聞き取り、各ステップのaction/input/output/tool/frequencyを固有名詞・実例で埋める。回答ごとにscripts/validate-answer-abstraction.py --patterns references/abstract-answer-patterns.md --answer <回答> --axis procedureを実行する。 - overview_fallback 経路 (決定論切替): procedure 軸で 2 連続して exit3 (抽象判定または未回答) となったら
procedure_axis.overview_fallback_questionsへ切り替え、difficulty_flag=trueを立てoverview(step_count_estimate/participants/frequency) の概略のみを収集して停止せず進める。閾値はprocedure_axis.fallback_threshold.consecutive_abstract_or_unanswered=2。同一回答パターンには常に同じ経路が選ばれる (LLM の都度判断を排除)。 - interview.json への格納: 収集した手順を
interview.json.procedureに格納する (mode=detailed のsteps[]、または mode=overview_fallback のdifficulty_flag+overview)。sheet.mdには「## 現状手順 (procedure)」節を追記し、同じ procedure ブロックを ```json フェンスで埋め込む (build-sheet-json.pyがsheet.json.procedureへ additive に転記する)。 - as-is 忠実性 (平均回帰の防止): 抽象的・一般論的な回答が来ても正規化・要約せず、「具体的にはどのツール/頻度/関与者か」と追加質問で具体化を促す。ユーザーが自発的に述べた改善提案・理想手順 (to-be) は
procedure.*や真の課題 content へ記録しない。to-be 語彙の混入は../../scripts/validate-procedure-completeness.pyの contamination check (references/to-be-vocabulary-patterns.md参照) が検出し、検出時は Phase 9 (run-intake-finalize) が Phase 4 へ差し戻す。 - 完全性ゲート:
../../scripts/validate-procedure-completeness.py --interview output/<hint>/interview.jsonが exit0 (完全かつ contamination なし) になるまで反復する。完全性の判定ロジックは本スクリプトに一元化し、本 skill 内へ重複実装しない。
Gotchas
- 深掘りに踏み込まない: 「なぜ?」を 3 回以上重ねたら Phase 5 (
purpose-excavator) の領域。本 phase は 1 問で次軸へ進みneeds_excavation=trueを立てるのみ。 - 抽象語の最終確定禁止: 「効率化」「最適化」「いい感じに」をそのまま記録しない。
abstract_answers[]に reason 付きで残し Phase 5 に委ねる。 - vocabulary_tier 変更禁止: セッション中の tier 変更は回答品質低下と語彙混乱を招く。Phase 3 で固定した値を尊重する。
- kickoff との重複質問禁止: pattern / depth / pain は
run-intake-kickoffで確定済。本 phase で再質問するとユーザーに同意ループを誘発する。 - AskUserQuestion 並列発行禁止: 認知負荷が高く回答品質が落ちる。必ず 1 問ずつ直列。
- validate スクリプト自動修正禁止: FAIL 時は不足項目をユーザー提示し、LLM 判断で勝手に埋めない。
Additional Resources
workflow-manifest.json— P1-load-sheet → P2-normalize-intent → P3-fill-by-axis → P4-flag-abstract → P5-emit phase 定義・dependsOn・entryHook/exitHook・fatal_exit_codesprompts/R1-main.md— R1-five-axes-sheet-fill 7 層プロンプト (Layer 1-7)schemas/output.schema.json—interview.json正本スキーマ (filled_ratio/five_axes_complete/unresolved/needs_excavation/abstract_answers)references/five-axes-priority.md— 5 軸の処理順序とスキップ条件references/abstract-answer-patterns.md—needs_excavationを立てる判定基準../../references/intent-contract.schema.json— 入力→出力 intent の正本 schema../../references/probe-pattern-table.json— intent slot 未充足時に聞く固定 probereferences/question-bank-pointer.md— 旧 aggregator../../references/question-bank.mdへの参照ガイドreferences/resource-map.yaml— machine-readable リソース一覧scripts/validate-interview-json.py—interview.jsonの schema validate (procedure ブロックを含む)scripts/check-five-axes-coverage.py— 5 軸 coverage の機械検証references/question-plan.json#procedure_axis— 現状手順(procedure)軸の質問列と overview_fallback 閾値の正本references/to-be-vocabulary-patterns.md— as-is/to-be 分離の語彙正本 (contamination 判定)../../scripts/validate-procedure-completeness.py— procedure ブロックの完全性 + as-is フィールドへの to-be 語彙混入の決定論判定 (C02)../../scripts/build-intent.py—qa_logからintent_contractとpending_probesを決定論的に生成- 前後 phase:
run-intake-kickoff(3 軸 pattern/depth/pain),purpose-excavator(Phase 5 深掘り),run-intake-visualize,run-intake-finalize
レビュー
まだレビューはありません。使ってみた感想をお寄せください。
同じリポジトリのスキル
概要と使いどころ
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 を回収したいときに使う。
Notion ページを描画する直前に粒度を検証したいとき、info-collector-agent ページと同等の section 充足度を section_canonical_map 基準で機械検証したいときに使う。