Skip to content
cccskills
FreePublished on GitHub

alm

コードファースト資産(エージェント定義・Code Apps の構成・IaC など)を秘匿化・汎用化したテンプレートとして Git 管理し、pre-commit ゲート → 自律レビューゲート → 承認・デプロイ → リリース記録までを CI/CD で回すための共通基盤。

GitHub Actions / Azure Pipelines / その他 Git ホスティングと、GitHub Secrets / Azure DevOps 変数グループ / Azure Key Vault の各シークレットストアに対応し、プロダクト固有のデプロイ手順は各スキルへ委譲する。

The English summary is being prepared. Showing the original description.

Works withGitHubAzure
See how to install

Files included (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 (original)

Review the instructions the agent will receive before you install.

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 つに決まっている
  • デプロイのたびにリリースが作成/更新される

参考リンク

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

admin

Free

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 にまとめる。

The English summary is being prepared. Showing the original description.

geekfujiwara/CodeAppsDevelopmentStandard74Updated Oct 16, 2026

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

The English summary is being prepared. Showing the original description.

geekfujiwara/CodeAppsDevelopmentStandard74Updated Oct 16, 2026

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

The English summary is being prepared. Showing the original description.

geekfujiwara/CodeAppsDevelopmentStandard74Updated Oct 16, 2026

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

The English summary is being prepared. Showing the original description.

geekfujiwara/CodeAppsDevelopmentStandard74Updated Oct 16, 2026

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

The English summary is being prepared. Showing the original description.

geekfujiwara/CodeAppsDevelopmentStandard74Updated Oct 16, 2026

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

The English summary is being prepared. Showing the original description.

geekfujiwara/CodeAppsDevelopmentStandard74Updated Oct 16, 2026

See all skills by geekfujiwara

Report a problem with this skill