本文へ移動
cccskills
無料GitHub で公開

alm

コードファースト資産(エージェント定義・Code Apps の構成・IaC など)を秘匿化・汎用化したテンプレートとして Git 管理し、pre-commit ゲート → 自律レビューゲート → 承認・デプロイ → リリース記録までを CI/CD で回すための共通基盤。GitHub Actions / Azure Pipelines / その他 Git ホスティングと、GitHub Secrets / Azure DevOps 変数グループ / Azure Key Vault の各シークレットストアに対応し、プロダクト固有のデプロイ手順は各スキルへ委譲する。

インストール方法を見る

含まれるファイル(14)

  • SKILL.md14.2 KB
  • alm.config.example.json756 B
  • references/.env.example1.7 KB
  • references/ci-providers.md9.6 KB
  • references/repo-scaffold.md5.1 KB
  • references/review-gates.md15.9 KB
  • references/troubleshooting.md4.2 KB
  • scripts/alm_config.py4.2 KB
  • scripts/check_secrets.py3.2 KB
  • scripts/gate_rules.py16.8 KB
  • scripts/render.py3.1 KB
  • scripts/review_report.py3.9 KB
  • scripts/review_sanitization.py4.0 KB
  • scripts/sanitize.py9.9 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

ALM(秘匿化・汎用化・CI/CD)共通スキル

コードファースト資産を安全に Git へ載せ、機械判定だけでデプロイまで到達させるための共通基盤。 プロダクト非依存であり、foundry-autopilot(Foundry エージェント)、code-apps(Code Apps)など どのスキルからも同じ仕組みで利用できる。デプロイの実処理だけを各プロダクトスキルへ委譲する。

原則内容
テンプレートのみコミット追跡するのは ${VAR} 入りテンプレートだけ。実値は .env とシークレットストアにのみ存在する
二重の防御ローカルは pre-commit(sanitize.py → check_secrets.py)、CI は決定論ゲート(review_sanitization.py)
機械判定レビューはルールベース。人手の承認(HITL)を前提にせず、判定を再現可能にする
ホスティング非依存Git ホスティングとシークレットストアは GIT_PROVIDER / SECRET_BACKEND で差し替える
最小権限ワークフローは permissions: を明示。contents: write はリリースジョブだけに許可する
記録はリリースに残すデプロイ結果とレビュー結果は GitHub Releases(バージョンごと)に残す。Issue には残さない
設定の外出しパス・許可リスト等は alm.config.json。スクリプト本体はどのリポジトリでも無改変で使う

前提ツール: Python 3.10+、Git、Azure CLI(az)。 シークレットストアに応じて GitHub CLI(gh)または az extension add --name azure-devops を追加する。

事前確認(会話の最初に 1 回だけ)

本スキルの利用が確定したら、standard の共通契約に加え、 1 回の AskUserQuestion で次をまとめて確認する。

#質問合格条件
1Git provider、repository、visibility、既定 branch は何かGitHub / Azure DevOps / その他と private / public を確定している
2branch protection と environment approval を変更できる担当者は誰かrepository / project の管理担当者と承認者を記録している
3secret backend と CI identity は何かGitHub Secrets / variable group / Key Vault、OIDC / workload identity、rotation owner を確定している
4CI が各デプロイ先へ持つ最小権限は何か対象環境ごとの scope、期限、role assignment 担当者を記録している
5release、rollback、監査ログの運用は何かversion 規則、成果物保持、失敗時の戻し方、通知先を承認済みである

personal access token や長期 client secret を既定にせず、OIDC / workload identity を優先する。 repository 管理権限、secret backend、CI identity のいずれかが未確定ならパイプラインを有効化しない。

各プロダクトスキルとの責務分担

担当内容参照先
alm(本スキル)秘匿化・汎用化・pre-commit・レビューゲート・承認・リリース記録本ファイル
foundry-autopilotFoundry エージェント定義、ブループリント、Teams パッケージ、公開foundry-autopilot
code-appsCode Apps の実装、npm run deploy などのデプロイ手順code-apps
standardソリューション運用・環境戦略などの上位ルールstandard

プロダクトスキル側は「何をデプロイするか」だけを定義し、 「どう秘匿化し、どう検証し、どう承認して記録するか」は本スキルに従う。

スキル同梱スクリプト

テーマリポジトリの scripts/ へそのままコピーして使う(alm_config.py を必ず一緒に置く)。

スクリプト用途実行場所
scripts/alm_config.pyalm.config.json の読み込み(他スクリプトが import)-
scripts/sanitize.py実値入りファイルを ${VAR} 化し、シークレットストアへ同期pre-commit
scripts/check_secrets.pyステージ済み差分への実値混入を検査pre-commit
scripts/render.pyテンプレートの ${VAR} を環境変数で解決ローカル / CI
scripts/review_sanitization.py秘匿化・汎用化の決定論レビューゲートCI(必須チェック)
scripts/gate_rules.py品質 / 汎用性 / セキュリティ / 可読性 / リリース判定のルールエンジンCI(各ゲート)
scripts/review_report.py各ゲートの判定を 1 枚のレビュー結果表に統合CI(レポート)

Step 1: レイアウトを alm.config.json で宣言する

スクリプトは無改変で使い、リポジトリごとの差分は設定ファイルだけにする。 未作成なら既定値(**/*.template.* をテンプレート、.env を追跡禁止)で動く。

Copy-Item .github/skills/alm/scripts/*.py scripts/
Copy-Item .github/skills/alm/alm.config.example.json alm.config.json
キー意味例(foundry-autopilot)例(code-apps)
forbidden_tracked追跡してはいけないファイル.env, a365.generated.config.json.env, .power/ の生成物
templates${VAR} 入りテンプレート(コミット対象)agents/**/*.template.yamlpower.config.template.json
renderedレンダリング結果(追跡禁止)agents/**/agent.yamlpower.config.json
artifactsビルド生成物(追跡禁止)teams/*.zipdist/**
non_secret_vars公開識別子(${VAR} 化しない)AGENT_NAME, BLUEPRINT_IDAPP_NAME
contents_write_jobscontents: write を許可するジョブreleaserelease

Step 2: 秘匿値を .env に隔離する

  1. .env(実値・.gitignore)と .env.example(プレースホルダーのみ・コミット対象)を作る。 雛形は references/.env.example。
  2. テンプレートには実値を一切書かない。環境依存値はすべて ${VAR} にする。
  3. 公開識別子(アプリ名・エージェント名など)は non_secret_vars に入れる。 これを入れないと、文章中の名称まで ${VAR} に置換されてテンプレートが壊れる。
python scripts/render.py --template agents/<name>/agent.template.yaml --output agents/<name>/agent.yaml

Step 3: pre-commit ゲートを有効化する

git config core.hooksPath .githooks
#!/bin/sh
set -e
# 1. 実値入りファイルを汎用化し、シークレットストアへ同期してテンプレートをステージ
python scripts/sanitize.py --env .env --set-secrets --stage
# 2. ステージ済み差分に実値が残っていないか検査(残っていればコミット中止)
python scripts/check_secrets.py --env .env

.gitignore を含む雛形一式は references/repo-scaffold.md。

Step 4: シークレットストアを選ぶ

SECRET_BACKEND で送信先が切り替わる。Git ホスティングとは独立に選べる。

python scripts/sanitize.py --env .env --set-secrets --secret-backend github --stage
python scripts/sanitize.py --env .env --set-secrets --secret-backend azure-devops --stage
python scripts/sanitize.py --env .env --set-secrets --secret-backend keyvault --stage
Git ホスティングCI 定義シークレット保管先SECRET_BACKEND
GitHub(private).github/workflows/GitHub Actions Secretsgithub
Azure DevOps Repos(private).azuredevops/変数グループ(Key Vault 連携可)azure-devops
その他 Git各 CI の規約Azure Key Vaultkeyvault
ローカルのみ(PoC)なし.env のみnone

Azure へのログインは必ず OIDC / ワークロード ID フェデレーションを使い、 クライアントシークレットを保管しない。設定手順は references/ci-providers.md。

Step 5: レビューゲートを CI に組み込む

5.1 最小構成(決定論ゲートのみ)

PR で review_sanitization.py を実行し、必須ステータスチェックにする。 これだけで「実値混入」「テンプレート未汎用化」はマージできなくなる。

5.2 推奨構成(自律レビューゲート連鎖)

5 体のレビューエージェントを直列に並べ、全ゲート PASS のときだけデプロイする。 各エージェントは gate_rules.py のルールを評価するだけなので、判定は決定論的で人手承認が不要。

ゲートエージェント主なルール
1. 品質quality-inspectorYAML の妥当性、テンプレートの構文、.env.example との整合、スクリプトの構文
2. 汎用性generalization-auditor実値混入なし、${VAR} がすべてシークレット経由、ワークフローに環境固有リテラルなし
3. セキュリティsecurity-reviewer最小権限、pull_request_target 禁止、Action 許可リスト、シークレット持ち出し検出
4. 可読性readability-editorジョブ/ステップ名、ヘッダーコメント、行長、TODO 残存
5. リリース判定release-gatekeeper上流 4 ゲートがすべて PASS か(GO / NO-GO)
python scripts/gate_rules.py --gate quality --out .gate/quality.json
python scripts/gate_rules.py --gate release --verdict-dir .gate
python scripts/review_report.py --verdict-dir .gate --out .gate/review-report.md

ワークフロー定義・ルール一覧・プロンプトの書き方は references/review-gates.md。

Step 6: デプロイを承認付きで実行する

  1. 既定ブランチへのマージでデプロイジョブを起動する。
  2. デプロイの実処理はプロダクトスキルが定義する(foundry-autopilot なら deploy.py、 code-apps なら npm run deploy)。ALM 側は認証・環境・順序だけを規定する。
  3. 承認の扱いは 2 択にする。両方を併用しない。
    • 自律運用: ゲート連鎖を審査とみなし、Environment の必須レビュアーを外す。
    • 有人運用: Environment に必須レビュアーを設定し、ゲート連鎖は補助にする。

Step 7: リリースとして記録する

デプロイ結果とレビュー結果は、バージョンごとの GitHub Release に残す。

  • タグはデプロイしたバージョンに対応させる(例: agent-v<version>)。
  • 本文は review_report.py が生成したレビュー結果表をそのまま使う。
  • 同じバージョンを再デプロイしたときは新規作成せず gh release edit で上書きする。
  • Issue にメモを積む方式は採らない(Issue は課題管理のための場所であり、 デプロイ履歴を混ぜると課題一覧としての意味が失われる)。
flowchart TD
    A[ローカル編集] --> B[git commit]
    B -->|pre-commit| C[汎用化 + シークレット同期 + 漏洩検査]
    C --> D[PR]
    D --> E[決定論ゲート: review_sanitization]
    E --> F[自律レビューゲート連鎖 5 体]
    F -->|GO| G[既定ブランチへマージ]
    G --> H[デプロイ(プロダクトスキルの手順)]
    H --> I[GitHub Release にレビュー結果を記録]

検証チェックリスト

  • .env と rendered / artifacts に該当するファイルが追跡されていない
  • テンプレートに実 GUID・ARM パス・接続文字列・エンドポイントが無い
  • .env.example にすべての変数がプレースホルダー付きで存在する
  • 公開識別子が non_secret_vars に登録されている
  • git config core.hooksPath .githooks が有効
  • python scripts/review_sanitization.py が Pass し、必須チェックになっている
  • ワークフローが permissions: を宣言し、contents: write がリリースジョブ限定
  • 承認方式(自律 / 有人)が 1 つに決まっている
  • デプロイのたびにリリースが作成/更新される

参考リンク

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

admin

無料日本語概要

Power Platform のテナント / 環境ガバナンスを確認・設定する管理スキル。開発着手前の環境チェック(既定環境ではないか・マネージド環境・Dataverse / Code Apps / MCP の有効化・セキュリティ ロール・管理 API アクセス)と DLP 事前チェックを非対話スクリプトで実行し、必要ならマネージド環境設定・カスタムコネクタの DLP 分類・ACP(Advanced connector policies)の許可コネクタを dry-run 付きで変更する。Microsoft 第一者サービスだけを許可する ACP 推奨プロファイルの適用と、クラシック DLP から ACP への移行も支援する。クラシック DLP と ACP は既定の混成モードで併用され、より制限の厳しい方が適用されるため両方を確認する。オプションとして、既定環境 / 個人開発者環境 / 市民開発者環境 / AI CoE セントラル / AI CoE 内製開発の 5 グループからなるテナント全体の環境戦略を、読み取り専用スキャン → 移行プラン(admin-migration-plan.md)→ レビュー → 適用の順で策定・実行する。設定は環境グループのルールで行うのを原則とし、グループ ルールに無い項目(既定環境ルーティング・Dataverse for Teams 禁止・Dataverse 検索・グループへの割り当て・Copilot クレジット配分)だけをテナント設定・環境個別設定・Dataverse の組織設定で補う。IP 制限・テナント分離・監査ログ・ライセンス配分などの管理設定は references にまとめる。

geekfujiwara/CodeAppsDevelopmentStandard722026年10月9日 更新

agent-flows

無料日本語概要

Copilot Studio 新 UI の Agent flows / Workflows を構築・公開・検証する。Dataverse レコード作成/更新トリガーから既存の発行済み Copilot Studio v2 を Agent ノードで呼ぶ標準経路、Code Apps との非同期要求/結果連携、および手動 Start + inline Agent の API ライフサイクル検証を扱う。

geekfujiwara/CodeAppsDevelopmentStandard722026年10月9日 更新

agm-qa-authoring

無料日本語概要

株主総会の想定問答を、IR 抜粋(決算短信・説明資料・招集通知など)を根拠に下書きし、利用者の確認後に Dataverse の想定問答テーブルへ「下書き」として登録するスキル。 Use when ユーザーが「配当について想定問答を作って」「この論点の想定問答を 3 件追加して」「招集通知から想定問答を作って」「想定問答を登録して」と依頼したとき。 Dataverse MCP コネクタ(describe / read_query / search_data / create_record / update_record)を使用する。削除・テーブル変更のツールは使わない。

geekfujiwara/CodeAppsDevelopmentStandard722026年10月9日 更新

agm-qa-review

無料日本語概要

株主総会の想定問答を点検し、根拠の IR 抜粋に無い数値・存在しない根拠 ID・回答者や注意事項の抜け・趣旨の重複・下書きのまま残っているものを一覧にするスキル(書き込みはしない)。 Use when ユーザーが「想定問答を点検して」「根拠の無い数値が無いか確認して」「下書きの想定問答を一覧にして」と依頼したとき。 Dataverse MCP コネクタ(describe / read_query / search_data)を使用する。書き込み・削除のツールは使わない。

geekfujiwara/CodeAppsDevelopmentStandard722026年10月9日 更新

agm-rehearsal-script

無料日本語概要

株主総会の質疑応答のリハーサル台本(議長・株主・回答役員の読み上げ原稿)を、承認済みの想定問答から作り、Dataverse のリハーサル台本テーブルへ登録するスキル。 Use when ユーザーが「リハーサルの台本を作って」「QA-001〜QA-010 で読み上げ原稿を作って」「番号を言わない株主も入れた台本を作って」と依頼したとき。 Dataverse MCP コネクタ(describe / read_query / search_data / create_record / update_record)を使用する。削除・テーブル変更のツールは使わない。

geekfujiwara/CodeAppsDevelopmentStandard722026年10月9日 更新

ai-builder

無料日本語概要

AI Builder の AI プロンプト(GPT Dynamic Prompt)を Dataverse API で作成し、Copilot Studio エージェントにツール(アクション)として追加する。Power Automate フローとの統合パターンも含む。

geekfujiwara/CodeAppsDevelopmentStandard722026年10月9日 更新

geekfujiwara のスキルをすべて見る

このスキルの問題を報告する