geekfujiwara/codeappsdevelopmentstandard/model-driven-app
Claude Code and agent skill by geekfujiwara/codeappsdevelopmentstandard
- community
Checking that the SKILL.md file is still in the repository.
モデル駆動型アプリを Dataverse Web API(appmodules / sitemaps テーブル)で作成・構成・公開する。
Install
npx vskill@latest install geekfujiwara/codeappsdevelopmentstandard/model-driven-appSKILL.md
モデル駆動型アプリ構築スキル
Dataverse Web API(appmodules / sitemaps テーブル)でモデル駆動型アプリを ソリューション対応で 作成・構成・公開する。
前提:setup_dataverse.pyで Dataverse テーブルが作成済みであること。テーブルが存在しないとアプリに追加するコンポーネントがない。
大前提: 一つのソリューション内に開発
Dataverse テーブル・Code Apps・Power Automate フロー・Copilot Studio エージェント・モデル駆動型アプリ は すべて同一のソリューション内 に含める。 .env の SOLUTION_NAME と PUBLISHER_PREFIX を全フェーズで統一して使用する。
認証: Python スクリプトの認証はstandardスキルのauth_helper.pyを使用。
前提: 設計フェーズ完了後にデプロイに入る(必須)
アプリをデプロイする前に、アプリ設計をユーザーに提示し承認を得ていること。
設計提示時に含める内容:
| 項目 | 内容 | |
|---|---|---|
| アプリ名 | 表示名とユニーク名(英語のみ) | |
| アプリ説明 | アプリの目的の簡潔な説明 | |
| 含めるテーブル一覧 | ソリューション内のどのテーブルをアプリに含めるか | |
| ナビゲーション構造 | SiteMap の Area/Group/SubArea 構成 | |
| ビュー・フォーム | 各テーブルで表示するビューとフォーム(デフォルト: 全て含む) | |
| セキュリティロール | アプリに関連付けるロール |
必須要件
AppModule 作成の必須プロパティ
clienttype=4 を必ず指定する【必須】
uniquename は英語のみ
SiteMap が必須(ValidateApp で検証される)
SiteMap XML の正式フォーマット【必須】
Area: ナビゲーションの最上位区分Group: Area 内のグループ(複数テーブルをまとめる)SubArea: 個別テーブルへのナビゲーション。Entityは 論理名(例:geek_project)- 複数の Area / Group を定義可能(例: マスタデータとトランザクションデータを分離)
ShowGroups="true" を必ず指定する【必須】
教訓: 複数 Group がある SiteMap でShowGroups="true"を忘れると、最初のグループのアイテムしか表示されず、他のグループが完全に消える。これはエラーにならず ValidateApp も通るため発見が困難。
SiteMap XML 必須属性一覧
| 要素 | 必須属性 | 説明 | |
|---|---|---|---|
| SiteMap | IntroducedVersion="7.0.0.0" | バージョニング用。Unified Interface で必要 | |
| Area | ShowGroups="true", IntroducedVersion="7.0.0.0" | ShowGroups がないと複数グループが表示されない | |
| Group | IntroducedVersion="7.0.0.0", IsProfile="false" | IsProfile=false でプロファイルグループと区別 | |
| SubArea | Entity, AvailableOffline="true" | オフラインアクセス。モバイル対応に必要 |
Title は属性ではなく Titles 子要素で指定する
LCID="1041"は日本語。英語は1033。Title 属性でも動作する場合があるが、正式フォーマットは Titles 子要素。
SiteMap レコードは isappaware: true で作成
コンポーネント追加は AddAppComponents アクション
注意: テーブルのビューとフォームを追加すると、テーブルも自動的にアプリに含まれる。ただしAppComponents.Entitiesは空のままになる場合がある(appmodulecomponent テーブルに Entity Type=1 のレコードが自動作成されない)。これはアプリの動作には影響しない。SiteMap の SubArea で Entity を指定していれば正常にナビゲーションに表示される。
AddAppComponents のバッチ分割パターン
Entity コンポーネント (Type=1) は API で直接追加できない
教訓: Market Insight App のように UI で作成したアプリは Entity (Type=1) コンポーネントが登録されるが、API で作成したアプリでは savedquery/systemform のみが登録される。これは正常動作であり修正不要。
ビューとフォームの取得パターン
セキュリティロール関連付け
- Basic User(旧 Common Data Service User)ロールを最低限関連付ける
- 追加のカスタムロールがあれば同様に関連付け
ValidateApp で事前検証
- SiteMap がない → Error
- テーブルにフォーム/ビュー参照がない → Warning
PublishXml でアプリ公開
個別テーブルの PublishXml(ビュー・フォーム変更時)
PublishXml vs PublishAllXml: テーブル単位の変更は<entities>で個別公開するのが高速。PublishAllXmlは全コンポーネントを公開するため時間がかかる。
アプリ URL フォーマット
デプロイスクリプトは完了時に.envへAPP_MODULE_IDを自動保存する。この値はdeploy_security_role.pyのアプリ関連付けステップで使用される。
ソリューション含有の検証
べき等デプロイパターン
.env パラメータ
全パラメータの定義(取得元コメント付き)は references/.env.example を参照。 実値はリポジトリルートの .env に置く(.gitignore 済み)。
デプロイ・設計パターン
デプロイスクリプト・ナビゲーション設計パターンの詳細は デプロイリファレンス を参照。
トラブルシューティングは トラブルシューティング を参照。
コンポーネントタイプ定数
| コンポーネント | ComponentType | OData Type | |
|---|---|---|---|
| SiteMap | 62 | Microsoft.Dynamics.CRM.sitemap | |
| AppModule | 80 | Microsoft.Dynamics.CRM.appmodule | |
| Entity (テーブル) | 1 | — | |
| View (savedquery) | 26 | Microsoft.Dynamics.CRM.savedquery | |
| Form (systemform) | 60 | Microsoft.Dynamics.CRM.systemform | |
| Dashboard | 60 | — | |
| Security Role | 20 | Microsoft.Dynamics.CRM.role |
クイックリファレンス: 必須要件
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 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/model-driven-app/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.
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/model-driven-app)