geekfujiwara/codeappsdevelopmentstandard/alm
Claude Code and agent skill by geekfujiwara/codeappsdevelopmentstandard
- community
- ext:[{"type":"hook","description":"Pre/post lifecycle hooks"}]
Checking that the SKILL.md file is still in the repository.
コードファースト資産(エージェント定義・Code Apps の構成・IaC など)を秘匿化・汎用化したテンプレートとして Git 管理し、pre-commit ゲート → 自律レビューゲート → 承認・デプロイ → リリース記録までを CI/CD で回すための共通基盤。GitHub Actions / Azure Pipelines / その他 Git ホスティングと、GitHub Secrets / Azure DevOps 変数グループ / Azure Key Vault の各シークレットストアに対応し、プロダクト固有のデプロイ手順は各スキルへ委譲する。
Install
npx vskill@latest install geekfujiwara/codeappsdevelopmentstandard/almSemi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard
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 で次をまとめて確認する。
| # | 質問 | 合格条件 | |
|---|---|---|---|
| 1 | Git provider、repository、visibility、既定 branch は何か | GitHub / Azure DevOps / その他と private / public を確定している | |
| 2 | branch protection と environment approval を変更できる担当者は誰か | repository / project の管理担当者と承認者を記録している | |
| 3 | secret backend と CI identity は何か | GitHub Secrets / variable group / Key Vault、OIDC / workload identity、rotation owner を確定している | |
| 4 | CI が各デプロイ先へ持つ最小権限は何か | 対象環境ごとの scope、期限、role assignment 担当者を記録している | |
| 5 | release、rollback、監査ログの運用は何か | version 規則、成果物保持、失敗時の戻し方、通知先を承認済みである |
personal access token や長期 client secret を既定にせず、OIDC / workload identity を優先する。 repository 管理権限、secret backend、CI identity のいずれかが未確定ならパイプラインを有効化しない。
各プロダクトスキルとの責務分担
| 担当 | 内容 | 参照先 | |
|---|---|---|---|
| `alm`(本スキル) | 秘匿化・汎用化・pre-commit・レビューゲート・承認・リリース記録 | 本ファイル | |
foundry-autopilot | Foundry エージェント定義、ブループリント、Teams パッケージ、公開 | `foundry-autopilot` | |
code-apps | Code Apps の実装、npm run deploy などのデプロイ手順 | `code-apps` | |
standard | ソリューション運用・環境戦略などの上位ルール | `standard` |
プロダクトスキル側は「何をデプロイするか」だけを定義し、 「どう秘匿化し、どう検証し、どう承認して記録するか」は本スキルに従う。
スキル同梱スクリプト
テーマリポジトリの scripts/ へそのままコピーして使う(alm_config.py を必ず一緒に置く)。
| スクリプト | 用途 | 実行場所 | |
|---|---|---|---|
| scripts/alm_config.py | alm.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 を追跡禁止)で動く。
| キー | 意味 | 例(foundry-autopilot) | 例(code-apps) | |
|---|---|---|---|---|
forbidden_tracked | 追跡してはいけないファイル | .env, a365.generated.config.json | .env, .power/ の生成物 | |
templates | ${VAR} 入りテンプレート(コミット対象) | agents/**/*.template.yaml | power.config.template.json | |
rendered | レンダリング結果(追跡禁止) | agents/**/agent.yaml | power.config.json | |
artifacts | ビルド生成物(追跡禁止) | teams/*.zip | dist/** | |
non_secret_vars | 公開識別子(${VAR} 化しない) | AGENT_NAME, BLUEPRINT_ID | APP_NAME | |
contents_write_jobs | contents: write を許可するジョブ | release | release |
Step 2: 秘匿値を .env に隔離する
.env(実値・.gitignore)と.env.example(プレースホルダーのみ・コミット対象)を作る。
- テンプレートには実値を一切書かない。環境依存値はすべて
${VAR}にする。 - 公開識別子(アプリ名・エージェント名など)は
non_secret_varsに入れる。
これを入れないと、文章中の名称まで ${VAR} に置換されてテンプレートが壊れる。
Step 3: pre-commit ゲートを有効化する
.gitignore を含む雛形一式は references/repo-scaffold.md。
Step 4: シークレットストアを選ぶ
SECRET_BACKEND で送信先が切り替わる。Git ホスティングとは独立に選べる。
| Git ホスティング | CI 定義 | シークレット保管先 | SECRET_BACKEND | |
|---|---|---|---|---|
| GitHub(private) | .github/workflows/ | GitHub Actions Secrets | github | |
| Azure DevOps Repos(private) | .azuredevops/ | 変数グループ(Key Vault 連携可) | azure-devops | |
| その他 Git | 各 CI の規約 | Azure Key Vault | keyvault | |
| ローカルのみ(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-inspector | YAML の妥当性、テンプレートの構文、.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) |
ワークフロー定義・ルール一覧・プロンプトの書き方は references/review-gates.md。
Step 6: デプロイを承認付きで実行する
- 既定ブランチへのマージでデプロイジョブを起動する。
- デプロイの実処理はプロダクトスキルが定義する(
foundry-autopilotならdeploy.py、
code-apps なら npm run deploy)。ALM 側は認証・環境・順序だけを規定する。
- 承認の扱いは 2 択にする。両方を併用しない。
- 自律運用: ゲート連鎖を審査とみなし、Environment の必須レビュアーを外す。
- 有人運用: Environment に必須レビュアーを設定し、ゲート連鎖は補助にする。
Step 7: リリースとして記録する
デプロイ結果とレビュー結果は、バージョンごとの GitHub Release に残す。
- タグはデプロイしたバージョンに対応させる(例:
agent-v<version>)。 - 本文は
review_report.pyが生成したレビュー結果表をそのまま使う。 - 同じバージョンを再デプロイしたときは新規作成せず
gh release editで上書きする。 - Issue にメモを積む方式は採らない(Issue は課題管理のための場所であり、
デプロイ履歴を混ぜると課題一覧としての意味が失われる)。
検証チェックリスト
- [ ]
.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 つに決まっている
- [ ] デプロイのたびにリリースが作成/更新される
参考リンク
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryChecking.github/skills/alm/SKILL.md
Popularity
- Repository stars
- 57
- Repository forks
- 20
- 7-day trend score
- 20
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Extension points
hookPre/post lifecycle hooks
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/geekfujiwara/codeappsdevelopmentstandard/alm)