アプリ・Webサービス・業務ツールの制作を、証拠分析→確定的な初稿→要件定義→体験設計→機能分解→実装→品質ゲート→リリース判定の手順ゲート制で進めるスキル。質問で要件を埋めるのではなく、依頼文・既存コード・資料・ログから最有力案を選び、動く成果物を先に出して差分で改善する。ユーザーが「アプリを作りたい」「ツールを作って」「〜を自動化したい」「システム化したい」「要件定義」「仕様を決めたい」「UI/UXを設計して」「体験を良くしたい」「機能を洗い出して」「MVPを決めたい」「品質チェック」「リリースしていいか判断して」などと言ったら必ず使用する。外部データの取込・マスタ・締め処理を伴う業務システムでは references/data-lifecycle.md も併用する。新規・既存を問わずアプリの制作・改善・リニューアルで使用する。
run-contract-generate
tenantの業務委託契約書の下書きを作成・量産したいとき、管理台帳から個人/法人のひな形に差込みDocs生成してSlack通知したいときに使う。
インストール方法を見る含まれるファイル(13)
- SKILL.md18.1 KB
- prompts/R1-select-and-fill.md10.1 KB
- references/concept.md5.4 KB
- references/google-config.sample.json1.1 KB
- references/injection-mapping.md3.2 KB
- references/legal-knowledge-index.md2.1 KB
- references/party_a-readme.md1.2 KB
- references/README-setup.md9.1 KB
- references/resource-map.yaml1.8 KB
- references/settings-hardening.json878 B
- references/template-change-runbook.md3.2 KB
- references/template-mapping.json12.1 KB
- scripts/draft.py884 B
SKILL.md(原文)
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Pre-choice usable artifact execution
Purpose & Output Contractの最小の実成果物またはremote mutation previewをmain contextで作成する。effect別のparse/open・secret・irreversible・corrupt guardだけを実行し、現物path・digest・開き方またはpreview receiptを提示してからaccept-as-is/light/standard/detailedを記録する。accept-as-isはmutationを実行せずhandoff完了とし、後続sectionを実行しない。
Post-choice selected improvement execution
以下の既存workflow・goal-seek・評価・修正sectionおよびexternal mutation safety wrapperはlight/standard/detailedが記録されてsemantic_evaluator_startedへ遷移した場合だけ実行する。actual mutationはcanonical preview→hook-confirm→authorize→execute wrapperだけを通し、release/exhaustiveは別の明示eventを必要とする。
Canonical external mutation receipt flow (mandatory)
Never execute the external mutation argv directly. Replace every angle-bracket placeholder with the reviewed value from this run; the central CLI fails closed on missing/invalid values.
Resolve the guard plugin root once, before preview. An installed plugin cannot reach a sibling
plugin as <plugin root>/.., so never guess that path:
python3 "${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/extract-plugin-root.py" skill-governance-adapters
Use the printed absolute path as <GUARD_PLUGIN_ROOT> in preview, authorize and execute
(other Bash is blocked while the confirmation is pending, so do not resolve it again).
If the resolver exits non-zero, stop without any external mutation and tell the user to install
the skill-governance-adapters plugin.
python3 "<GUARD_PLUGIN_ROOT>/scripts/build-external-mutation-guard.py" preview --project-root "$PWD" --entrypoint-ref "plugin:<PLUGIN_NAME>/skills/<SKILL_NAME>/SKILL.md" --target-scope "<TARGET_SCOPE>" --diff-summary "<DIFF_SUMMARY>" --side-effect-summary "<SIDE_EFFECT_SUMMARY>" --command-json '<MUTATION_ARGV_JSON>'
Present that official preview output to the user. Only the exact user reply printed by preview
may trigger the registered hook-confirm producer. Then use the two returned receipt paths:
python3 "<GUARD_PLUGIN_ROOT>/scripts/build-external-mutation-guard.py" authorize --project-root "$PWD" --preview-receipt "<PREVIEW_RECEIPT_PATH>" --confirmation-receipt "<CONFIRMATION_RECEIPT_PATH>"
python3 "<GUARD_PLUGIN_ROOT>/scripts/build-external-mutation-guard.py" execute --project-root "$PWD" --authorization-receipt "<AUTHORIZATION_RECEIPT_PATH>" --command-json '<MUTATION_ARGV_JSON>'
Do not use an auto-approval flag or invoke the mutation command outside this receipt flow.
<!-- /external-mutation-guard-cli:v1 -->run-contract-generate
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
管理台帳(Google Sheets)の「作成指示◯ かつ 未作成」行ごとに、契約タイプ(個人/法人)に応じた Drive 上の .docx ひな形を差込・条項分岐し、AI記入箇所を黄色化した Google Docs 版(下書き・要確認) を個人/法人フォルダへ保存→Slackに通知→台帳を draft 化(ファイル名/契約書URL/Slack TS/日時)。承認後の提出用PDFは run-contract-finalize が担う(責務分離)。実体は共有エンジン ../../lib/engine.py --phase draft。法務承認済の条文は改変しない。概念は references/concept.md、差込仕様は references/injection-mapping.md、設定は plugin直下 README.md。
境界
下書き生成(Docs黄色版)+法人別紙1-3生成+Slack通知+台帳draft化まで。承認検知・PDF確定・共有は run-contract-finalize、ひな形変更追従は run-template-sync に分離。7専門家による法的レビュー/Notion連携/Markdown副系は対象外。後方互換: --phase 未指定で従来の1パス(Docs+PDF即時)も可。
主要ルール
- ひな形不改変: 法務承認済
.docxの条文本文は変更しない。黄色プレースホルダ(●/XXXX/第6条記の空欄)のみ差込む。 - 甲はSSOT:
lib/config_auth.load_party_a()から取得(台帳/Drive/直書きよりlib/config_authが優先)。台帳に甲列を作らない。具体値は config_auth に集約。 - 黄色二系統: 差込んだ run は黄色維持→Google Docs版。複製してハイライト除去→PDF版。
- 個人/法人分離: 台帳は同一スプレッドシート内の
個人/法人2シート。列構成・ひな形・出力フォルダを分ける(法人①は成果物/検収を別紙委譲・署名欄に代表者)。 - 認証と機密: Service Account 鍵は macOS Keychain(
gdrive-service-account.<keychain-prefix>/contract-generate/service-account-json)。環境依存IDはgoogle-config.json(gitignore)。乙住所/代表者/口座は機微情報、台帳・出力フォルダの共有を最小化。 - 冪等性: 台帳の冪等キーで重複生成を防止。
completed行は既定スキップ。 - セットアップは
references/README-setup.md(GCP有効化・SA作成・Keychain登録コマンド・フォルダ共有・config記入)。
ゴールシーク実行
固定手順は書かない。毎周「ゴール・目的/背景・チェックリスト」を読み、その時点で最適な手順を AI が生成・実行する。詳細は run-build-skill
references/goal-seek-paradigm.md。重い周回は SubAgent に fork し親へは要約のみ返す。
ゴール (Goal)
管理台帳の作成指示◯行が、個人/法人それぞれのひな形から**黄色維持 Google Docs 版(下書き・要確認)**として該当フォルダに生成され、Slack通知のうえ台帳へ ファイル名・契約書URL・Slack_メッセージTS・ステータス=draft・日時が書き戻された状態。黄色除去 PDF 化・ステータス=completed 書戻しは run-contract-finalize の責務(本スキルの draft 停止条件には含めない)。後方互換の1パス(legacy)モード(--phase 未指定で Docs+PDF即時・completed)を明示利用した場合のみ PDF/completed まで一括する。
目的・背景 (Why)
1人事業の契約書作成負荷を機構に肩代わりさせ本業(AIコンサル)へ時間を再配分する。法務承認済 .docx ひな形と都度変わりうる台帳を単一の照合エンジンで結び、二重管理とレイアウト崩れを排除する。
完了チェックリスト (Checklist)
-
google-config.jsonと Keychain 鍵を読み込み Service Account で認証できる(python3 ${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/lib/config_auth.py --check。セットアップ全体はpython3 ${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/lib/setup_doctor.pyで横断診断) - 管理台帳に
個人/法人2シートが存在し各スキーマのヘッダを持つ(無ければ整備・既存サンプル行は保持) - 作成指示◯かつステータス∈{空,未作成} の行を冪等キー付きで抽出できる(既定の draft phase の
_PHASE_STATUS_FILTER。後方互換の legacy 1パスのみ ステータス≠completed) - 契約タイプに応じ法人①/個人②の
.docxを名前パターンで取得できる - 標準ライブラリ実装(docx_lib)で黄色run置換・条件分岐(業務内容方式/料金方式/個人情報処分・個人のみ成果物有無)・AI記入の黄色維持ができる
- 黄色維持版を Google Docs 化し該当フォルダへ保存できる
- ファイル名
{No}_{乙名}_業務委託契約書_{YYYYMMDD}で生成される - 欠損必須列は
needs-inputとして行番号・列名を報告し、ユーザーが管理台帳SSOTを修正した後に再実行する - 生成後に未置換プレースホルダ(
●/XXXX)が残っていない - Slack 通知のうえ 台帳へ ファイル名/契約書URL/Slack_メッセージTS/ステータス=
draft/作成・更新日時 を書き戻せる(draft の停止条件はここまで) - (legacy 1パスモード専用) 黄色除去版を PDF 化し該当フォルダへ保存・台帳へ PDF_URL/ステータス=
completedを書き戻せる ※既定の draft 経路ではrun-contract-finalizeの責務であり本チェックは対象外
ゴールシークループ
- 未達
[ ]を特定 → 2. 手順を都度生成(固定化禁止)→ 3. 実行 → 4. チェックリスト再評価し[x]更新 → 全[x]まで反復。規定周回(3)で未達なら open_issues に差し戻す。
ゴールシーク配線
量産案件(複数行)を多周回す場合の周回状態とドリフト圧縮の配線。周回末に eval-log/run-contract-generate-intermediate.jsonl へ {iteration, original_goal, current_goal_snapshot, delta_from_original, merged_directive_for_next, drift_signal} を1行追記する。original_goal は全周回で不変(SHA-256 を eval-log/run-contract-generate-progress.json の original_goal_hash に固定し毎周回照合)。次周回の手順生成は直前の merged_directive_for_next と original_goal を必須入力として読む(AI 単独再導出禁止)。重い周回は Skill(run-goal-seek) に fork 委譲する。
python3 "${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/lib/check_intermediate.py" run-contract-generate
# → eval-log/run-contract-generate-intermediate.jsonl の original_goal_hash 不変・required_keys 充足を検査
# 不整合は exit 2 で次周回を停止
ゴールシーク品質ループ (正負フィードバック)
各周回末に lib/feedback_loop.py の record_positive() / record_negative() を呼び、シグナルを eval-log/run-contract-generate-feedback.jsonl に追記。次周回開始時に derive_next_directive("run-contract-generate", round) を参照し、戻り値を merged_directive_for_next の先頭に prepend する(過去周回の負シグナルを次手順に必ず反映)。
正負シグナル定義表 (run-contract-generate)
正負シグナルの定義(positive/negative の各シグナルと検出元)は、責務単位 7 層プロンプト
prompts/R1-select-and-fill.md§4.4「正負フィードバックループ」を**正本(SSOT)**とする。本スキルは重複定義せず同表を参照する。
反映タイミング: 周回末 record_* → 次周回開始時 derive_next_directive → merged_directive に prepend。
検証
口座番号=7桁半角数字 /口座種類∈{普通,当座}契約開始日<契約終了日かつ両者YYYY/MM/DD金額=半角整数(差込時100,000円へ整形)- 必須非空: 乙名称 / 乙住所(法人は代表者役職・氏名も)
- 生成後に未置換プレースホルダ(
●/XXXX)残存なし - 実装は
${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/lib/validate.py(差込前)+${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/lib/docx_fill.py末尾の残存チェック(差込後)
Gotchas
read_file_content系ではハイライト属性を取得できない。差込アンカーは${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/lib/docx_fill.pyがrun.font.highlight_color==WD_COLOR_INDEX.YELLOWを機械抽出して特定する。- PDF は Drive 上で Google Docs 変換→
export(application/pdf)で生成する(LibreOffice 不要)。 - 機微情報(住所/代表者/口座)を扱うため、台帳・出力フォルダの共有範囲を最小化する。
- 副作用(外部書込)を伴う。
--dry-runで台帳書込・Drive保存を抑止して検証可能。
変数化契約
契約タイプ(個人/法人) / ひな形DocID(個人②/法人①) / 台帳シート名 / 出力フォルダID を google-config.json と台帳から注入。具体値は本文に直書きせず config と台帳に置く。
追加リソース
references/README-setup.md— スキル内部参照用の技術要約(CI/pre-commit配線・template-mapping二重定義注意)。セットアップ手順の正本は plugin直下README.mdのセットアップ節lib/setup_doctor.py— セットアップ総合診断(cwd/Python/gcloud/env/Keychain/config/Drive/Sheets/Slack を横断点検し未完了 Task を名指し)references/concept.md— 概念設計(参考スキル継承/転換・概念図)references/injection-mapping.md— 個人/法人の台帳列⇄ひな形プレースホルダ差込マッピングreferences/legal-knowledge-index.md— 法令ナレッジ(参考スキル references/00-11)索引references/google-config.sample.json—google-config.jsonのひな形prompts/R1-select-and-fill.md— 行選択・差込・欠損補完の責務単位7層プロンプト(SSOT正本)。../../agents/contract-draft-agent.mdは本プロンプトを参照する薄い実行アダプタ(本文を持たない)。- 追加リソースは plugin 直下
lib/ディレクトリ全体を参照。各ファイルは PEP723 風メタブロックで purpose を記載。 - 本 skill が強く依存する lib:
engine.py(--phase draft 委譲先) /docx_fill.py(黄色 run 差込) /scan_template.py(差込アンカー抽出) /validate.py(差込前検証) /config_auth.py(SSOT 甲情報) scripts/draft.py— 薄い shim(lib/engine.py --phase draftへの委譲のみ)
セキュリティと権限
本Skillは外部書込(Drive/Sheets, effect=external-mutation)を伴うため二段防御を実装済み:
- 動的層(実装):
hooks/hook-guard-secret.py(PreToolUse/Bash, plugin.json 配線済)が SA 鍵の平文出力経路(廃止済--print-unsafe含む再導入防御)・誤削除(delete-generic-password)をブロック。keychain_get_secret.pyはCLAUDE_HOOK_INVOKED=1必須化で直接呼び出しを exit 2 で拒否。 - 静的層(ユーザー適用):
references/settings-hardening.jsonのpermissions.denyを.claude/settings.jsonにマージすると鍵流出系コマンドを拒否。 - 設計上の保護: 書込先は
google-config.jsonの許可ID(台帳/個人・法人フォルダ)に限定(config_auth.load_configが必須キー検証)、鍵は Keychain のみ・平文保存禁止、--dry-runで副作用抑止、ensure_schemaは非破壊追記。 - 将来拡張: spreadsheetId/folderId の config 許可値を実行時照合する追加 PreToolUse hook(現状は config 経由注入のため CLI に ID は露出しない)。
レビュー
まだレビューはありません。使ってみた感想をお寄せください。
同じリポジトリのスキル
概要と使いどころ
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 基準で機械検証したいときに使う。