Apex GitHub Operations
jonathan-vella/apex
WORKFLOW SKILL — Full GitHub contribution lifecycle: branches, conventional commits, issues, PRs, Actions, releases.
Research SDK contracts, design Terraform schema approach, and compose a GitHub issue for a new resource, data source, ephemeral resource, or enhancement to an existing resource.
$ npx skills add microsoft/terraform-provider-fabric --skill resource-designer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install microsoft/terraform-provider-fabric resource-designer --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/microsoft/terraform-provider-fabric.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/resource-designer .claude/skills/resource-designer && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "resource-designer" agent skill from https://github.com/microsoft/terraform-provider-fabric/tree/main/.github/skills/resource-designer into .claude/skills/resource-designer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "resource-designer", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/microsoft/terraform-provider-fabric/tree/main/.github/skills/resource-designerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add microsoft/terraform-provider-fabric --skill resource-designer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install microsoft/terraform-provider-fabric resource-designer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/terraform-provider-fabric.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/resource-designer .agents/skills/resource-designer && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "resource-designer" agent skill from https://github.com/microsoft/terraform-provider-fabric/tree/main/.github/skills/resource-designer into .agents/skills/resource-designer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "resource-designer", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add microsoft/terraform-provider-fabric --skill resource-designer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install microsoft/terraform-provider-fabric resource-designer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/terraform-provider-fabric.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/resource-designer .cursor/skills/resource-designer && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "resource-designer" agent skill from https://github.com/microsoft/terraform-provider-fabric/tree/main/.github/skills/resource-designer into .cursor/skills/resource-designer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "resource-designer", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/microsoft/terraform-provider-fabric.git --path .github/skills/resource-designer--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add microsoft/terraform-provider-fabric --skill resource-designer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install microsoft/terraform-provider-fabric resource-designer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/terraform-provider-fabric.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/resource-designer .gemini/skills/resource-designer && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "resource-designer" agent skill from https://github.com/microsoft/terraform-provider-fabric/tree/main/.github/skills/resource-designer into .gemini/skills/resource-designer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "resource-designer", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install microsoft/terraform-provider-fabric resource-designerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add microsoft/terraform-provider-fabric --skill resource-designer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/microsoft/terraform-provider-fabric.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/resource-designer .github/skills/resource-designer && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "resource-designer" agent skill from https://github.com/microsoft/terraform-provider-fabric/tree/main/.github/skills/resource-designer into .github/skills/resource-designer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "resource-designer", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add microsoft/terraform-provider-fabric --skill resource-designer -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install microsoft/terraform-provider-fabric resource-designer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/terraform-provider-fabric.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/resource-designer .opencode/skills/resource-designer && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "resource-designer" agent skill from https://github.com/microsoft/terraform-provider-fabric/tree/main/.github/skills/resource-designer into .opencode/skills/resource-designer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "resource-designer", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
resource-designerResearch SDK contracts, design Terraform schema approach, and compose a GitHub issue for a new resource, data source, ephemeral resource, or enhancement to an existing resource.
Resource Designer is an agent skill from microsoft/terraform-provider-fabric, published by the product's own GitHub organization. Research SDK contracts, design Terraform schema approach, and compose a GitHub issue for a new resource, data source, ephemeral resource, or enhancement to an existing resource. USE FOR: analyzing SDK DTOs, determining design patterns (polymorphic flattening, immutability, enum filtering), and creating well-structured GitHub issues. INVOKES: GitHub MCP tools for issue creation, sdk-contract-navigator skill for SDK analysis.
Its SKILL.md is about 6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in DevOps & Cloud, covering Infrastructure as code, Design patterns and Project management. It works with GitHub and Terraform. The repository describes itself as: Terraform Provider for Microsoft Fabric. The licence is MPL-2.0.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 86c83be. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown and terraform).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
learn.microsoft.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Resource Designer loads about 6k tokens when it runs. Until then it costs about 111 tokens; SKILL.md has 1,447 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from microsoft/terraform-provider-fabric at commit 86c83be, republished under its MPL-2.0 licence (© microsoft). 1,447 words, ~5,982 tokens.
.claude/skills/resource-designer/SKILL.md (or your agent's skills folder).Research SDK contracts, design the Terraform schema approach, and compose a GitHub issue for a new resource, data source, ephemeral resource, or enhancement to an existing resource.
#skill:sdk-contract-navigator has already been run to identify SDK availabilityIf a milestone name was provided (e.g. "2026-04"), resolve it to its numeric ID:
Query the GitHub REST API:
GET /repos/microsoft/terraform-provider-fabric/milestones?state=all&per_page=100Parse the response and find the milestone object where title matches the user's input (case-insensitive)
Extract the number field from that milestone object
If no match is found, report an error with the list of available milestones and ask the user to retry
If no milestone was specified, set milestone: null and proceed.
Choose the correct issue template based on what is being requested.
| Scenario | Title Prefix | Label | Template File |
|---|---|---|---|
| New resource (Fabric Item or non-item) | [RS] | tf/resource | tfprovider_resource_request.yml |
| New data source | [DS] | tf/data-source | tfprovider_data_source_request.yml |
| New ephemeral resource | [EPH] | tf/ephemeral | tfprovider_ephemeral_resource_request.yml |
| Enhancement to existing resource | [FEAT] | feature | feature_request.yml |
[RS] / [DS] — A completely new Terraform resource or data source that doesn't exist yet. Applies to both Fabric Items (Lakehouse, Eventhouse, etc.) and non-item resources (Connection, Shortcut, Gateway, Workspace Role Assignment, etc.)[EPH] — A new ephemeral resource (short-lived, not stored in state)[FEAT] — Adding new attributes to an existing resource, changing behavior, adding support for a new API feature on an existing resource, or any other enhancement that modifies existing codeIf both a resource and data source are needed for the same Fabric resource, create two separate issues.
From the user's description and SDK analysis, gather:
| Detail | How to Determine |
|---|---|
| Resource name | fabric_<snake_case> — e.g. fabric_lakehouse, fabric_connection, fabric_shortcut |
| Display name | PascalCase with spaces — e.g. "Lakehouse", "Connection", "Shortcut" |
| API doc links | Browse learn.microsoft.com/rest/api/fabric/ for API pages |
| SDK availability | Check if the SDK package/client exists (from #skill:sdk-contract-navigator) |
| Resource category | Fabric Item (~60%) or non-item (~40%) — see below |
| Item archetype | For Fabric Items only: basic, definition, properties, definition-properties, config-properties, config-definition-properties |
| Complexity | easy (basic/definition), moderate (properties/non-item), hard (config-*/complex non-item) |
| Definition paths | For Fabric Items with definitions: fetch the definition article to list supported definition parts — see below |
| Related resources | Existing resources that interact with this one |
| Preview status | Check if the Fabric API is marked as preview |
| SPN support | Check if the API supports service principal authentication |
Fabric Items — Standard items managed in workspaces (Lakehouse, Eventhouse, SQL Database, Data Pipeline, Notebook, etc.). These use the fabricitem generic abstraction and have ItemType constants in the core SDK.
Non-item resources — Specialized resources with bespoke CRUD logic. Each belongs to an implementation pattern (A–H) that determines canonical reference, lifecycle semantics, and test structure:
| Pattern | Characteristic | SDK Client | Canonical Reference |
|---|---|---|---|
| A | Workspace policy singleton (no ID, delete=reset) | fabcore.WorkspacesClient | internal/services/workspacencp/ |
| B | Workspace settings (dedicated client, validators) | fabspark.* | internal/services/sparkwssettings/ |
| C | Role assignment (parent+principal+role, ImportState) | Various *Client | internal/services/workspacera/ |
| D | Batch assignment (immutable set, no update) | fabadmin.DomainsClient | internal/services/domainra/ |
| E | Standalone entity, standard CRUD | Various dedicated clients | internal/services/workspace/ |
| E | Standalone entity, polymorphic types | fabcore.GatewaysClient | internal/services/gateway/ |
| E | Standalone entity, tenant-scoped | fabadmin.DomainsClient | internal/services/domain/ |
| E | Standalone entity, connect/disconnect lifecycle | fabcore.GitClient | internal/services/workspacegit/ |
| F | Item-scoped (workspace_id+item_id, 3+ path params) | fabcore.OneLakeShortcutsClient | internal/services/shortcut/ |
| F | Item-scoped (ModifyPlan, conditional validation) | fabcore.JobSchedulerClient | internal/services/itemjobscheduler/ |
| F | Item-scoped (simple CRUD, no Update) | fabcore.ExternalDataSharesClient | internal/services/externaldatashare/ |
| G | Tenant-level, custom identity/delete semantics | fabadmin.TenantsClient | internal/services/tenantsetting/ |
| H | Complex: dual clients, write-only secrets, KV refs | fabcore.ConnectionsClient | internal/services/connection/ |
Pattern classification decision tree:
Is it a workspace policy/settings with no real entity ID?
├── YES → Uses WorkspacesClient sub-endpoint, delete=reset? → Pattern A
│ Uses dedicated Spark/Environment client, ConfigValidators? → Pattern B
│
├── NO → Is it an assignment of principals/items to a parent?
│ ├── Single-item assignment with updatable role, ImportState? → Pattern C
│ └── Batch set assignment, fully immutable, no Import? → Pattern D
│
├── NO → Is it scoped to a specific item (workspace_id + item_id)?
│ └── YES → Pattern F
│
├── NO → Is it a tenant-level admin resource with non-UUID identity or custom delete?
│ └── YES → Pattern G
│
├── NO → Does it have write-only secrets, dual clients, KV references?
│ └── YES → Pattern H
│
└── NO → Standalone entity with dedicated client → Pattern EWhen composing the issue, include the pattern letter in the "Details / References" section so downstream agents can immediately route to the correct implementation reference.
For Fabric Items that support definitions (archetypes: definition, definition-properties, config-definition-properties), fetch the item definition article to discover the supported definition parts/paths:
https://learn.microsoft.com/rest/api/fabric/articles/item-management/definitions/<item-kebab-case>-definitionFor example:
https://learn.microsoft.com/rest/api/fabric/articles/item-management/definitions/notebook-definitionhttps://learn.microsoft.com/rest/api/fabric/articles/item-management/definitions/report-definitionhttps://learn.microsoft.com/rest/api/fabric/articles/item-management/definitions/spark-job-definition-definitionUse the fetch_webpage tool to read the article and extract the list of definition paths (e.g. notebook-content.py, definition.pbir/report.json). Each definition part has a path and format. Record all supported definition paths for inclusion in the issue.
If the article does not exist or returns a 404, the item likely does not support definitions — adjust the archetype accordingly.
Fabric REST API docs follow this pattern (never include en-us locale):
https://learn.microsoft.com/rest/api/fabric/<service>/itemsFor non-item resources, the API path varies:
https://learn.microsoft.com/rest/api/fabric/core/connections
https://learn.microsoft.com/rest/api/fabric/core/shortcuts
https://learn.microsoft.com/rest/api/fabric/core/gateways
https://learn.microsoft.com/rest/api/fabric/core/workspacesAfter gathering SDK details (Step 3), analyze the DTOs to determine which design patterns apply to this resource. This produces the "🎨 Terraform Design Notes" section in the issue body, giving the implementor explicit guidance.
Perform each check by comparing the SDK DTOs discovered in Step 3:
| # | Check | How to Detect | Output |
|---|---|---|---|
| 1 | Immutable fields | Fields present in Create<Resource>Request but absent from Update<Resource>Request (or no Update method exists) | List fields → RequiresReplace |
| 2 | Computed-only fields | Fields in response DTO absent from all request DTOs | List fields → Computed: true + UseStateForUnknown |
| 3 | Polymorphic flattening | Response/request DTO has an interface type, or a struct with a Type/Kind discriminator and variant-specific fields | Describe variants → separate optional nested blocks + ExactlyOneOf |
| 4 | Write-only secrets | Request DTO has *Password/*Secret/*Token/*Key/*Credential fields absent from response DTO | List fields → WriteOnly: true + *_reference alternative |
| 5 | Conditional fields | Properties that only apply when a type discriminator has a specific value (variant-specific fields) | List field→type mappings → NullIfAttributeIsOneOf/RequireIfAttributeIsOneOf |
| 6 | Enum filtering | Possible*Values() contains values representing system-managed/read-only states that cannot be set via Create/Update | List values to exclude from OneOf validator |
| 7 | Composite ID for import | Sub-resource with 3+ path parameters (e.g., workspace_id + item_id + name) | Describe import ID format |
basic or definition with no properties), checks 3–6 typically don't apply — skip them.[FEAT]), only run checks relevant to the new fields being added.| Type | Format |
|---|---|
| New resource | [RS] fabric_<snake_case_name> |
| New data source | [DS] fabric_<snake_case_name> |
| New ephemeral | [EPH] fabric_<snake_case_name> |
| Enhancement | [FEAT] <short description of enhancement> |
[RS]) and Data Sources ([DS])Use Job Story format:
When managing Microsoft Fabric infrastructure as code,
I want to create/manage <ResourceName> resources via Terraform,
so I can automate provisioning and maintain consistent <ResourceName> configurations across environments.For Fabric Items:
Important: Do NOT include SDK CRUD method signatures (e.g.
Get,Create,Update,Delete,List,GetDefinition,UpdateDefinition) in the issue body. Fabric Items follow standardized method patterns determined by the archetype — listing them adds noise without value. Only include the SDK package, archetype, DTO fields (Properties/CreationPayload), enum types, and definition paths.
- Resource Name: `fabric_<snake_case_name>`
- API documentation:
- https://learn.microsoft.com/rest/api/fabric/<itemtype>/items/create-<item>
- https://learn.microsoft.com/rest/api/fabric/<itemtype>/items/get-<item>
- https://learn.microsoft.com/rest/api/fabric/<itemtype>/items/list-<items>
- Definition article: https://learn.microsoft.com/rest/api/fabric/articles/item-management/definitions/<item-kebab-case>-definition
- SDK Package: `github.com/microsoft/fabric-sdk-go/fabric/<package>`
- Item Archetype: `<archetype>`
- Definition Paths (if applicable):
- `<path>` (format: `<format>`)
- `<path>` (format: `<format>`)
- Estimated complexity/effort: <easy|moderate|hard>
- Preview: <yes|no>
- SPN Supported: <yes|no>
- Related resources/data-sources:
- `fabric_workspace` (required parent)For non-item resources:
- Resource Name: `fabric_<snake_case_name>`
- API documentation:
- https://learn.microsoft.com/rest/api/fabric/core/<service>/create-<resource>
- https://learn.microsoft.com/rest/api/fabric/core/<service>/get-<resource>
- https://learn.microsoft.com/rest/api/fabric/core/<service>/list-<resources>
- SDK Client: `fabcore.<Resource>Client`
- Resource Category: non-item (bespoke CRUD)
- Implementation Pattern: <A|B|C|D|E|F|G|H> — <pattern description>
- Estimated complexity/effort: <easy|moderate|hard>
- Preview: <yes|no>
- SPN Supported: <yes|no>
- Related resources/data-sources:
- <related resources>Pattern key: A=Workspace policy singleton, B=Workspace settings (Spark), C=Role assignment, D=Batch assignment, E=Standalone entity, F=Item-scoped, G=Tenant-level custom, H=Connection (complex credentials)
Include this section only for [RS] and [DS] issues where the SDK DTOs have 3+ nesting levels (slices containing structs with nested slices/pointers to other structs). Skip for flat resources (Workspace, Domain, role assignments, basic Fabric Items without properties).
Render a tree showing the SDK DTO hierarchy with type annotations. This helps implementors plan model structs, set() methods, and SetNull(ctx) placement.
Format — use indented tree with type annotations at leaf/branch nodes:
<RootDTO>
├── Field1 (string)
├── Field2 (enum)
├── NestedSlice []ChildDTO ← Level 1
│ ├── ScalarField (string)
│ ├── DeepSlice []GrandchildDTO ← Level 2
│ │ ├── LeafSlice []string ← Level 3
│ │ └── LeafField (enum)
│ └── OptionalNested *AnotherDTO ← Level 2
│ └── Items []ItemDTO ← Level 3
└── OptionalTop *TopDTO ← Level 1
└── Children []ChildDTO ← Level 2Rules:
[]Type, optional nested as *Type, scalars as (type)← Level N comments on lines introducing a new struct depth...)Include this section for all [RS] and [DS] issues. Populate from the analysis in Step 3.5. Only include applicable items — omit checks that returned no findings.
Format:
**Immutable fields** (→ `RequiresReplace`):
- `<field_name>` — only in Create request, not updatable
**Computed-only fields** (→ `Computed: true`):
- `<field_name>` — response-only, server-generated
**Polymorphic type** (→ separate optional blocks + `ExactlyOneOf`):
- SDK type `<InterfaceName>` has variants: `<Variant1>`, `<Variant2>`, ...
- Model as: `<variant_1> {}`, `<variant_2> {}` optional nested blocks
**Write-only secrets** (→ `WriteOnly: true` + `*_reference` alternative):
- `<field_name>` — credential/secret in request, absent from response
**Conditional fields** (→ `NullIfAttributeIsOneOf` / `RequireIfAttributeIsOneOf`):
- `<field_name>` only applies when `type == "<value>"`
**Enum filtering** (→ exclude from `OneOf` validator):
- `<EnumType>`: exclude `<Value1>`, `<Value2>` (system-managed/non-creatable)
**Import ID format**:
- `<workspace_id>/<item_id>/<name>` (composite)Generate sample HCL based on SDK properties discovered and informed by the design notes above (use optional blocks for polymorphic types, add comments for immutable/computed fields):
resource "fabric_<snake_case_name>" "example" {
display_name = "example"
description = "Example resource"
workspace_id = fabric_workspace.example.id
# Item-specific attributes
}- [ ] Can create a new <ResourceName> with required attributes
- [ ] Can read <ResourceName> by ID
- [ ] Can update <ResourceName> mutable attributes
- [ ] Can delete <ResourceName>
- [ ] Can import existing <ResourceName>
- [ ] Properties are correctly mapped from SDK responseFor Resource:
- [ ] Data Transfer Objects (DTOs)
- [ ] Resource Implementation
- [ ] Resource Added to Provider
- [ ] Unit Tests for Happy path
- [ ] Unit Tests for Error path
- [ ] Acceptance Tests
- [ ] Example in the ./examples folder
- [ ] Schema documentation in code
- [ ] Updated auto-generated provider docs with `task docs`For Data Source:
- [ ] Data Transfer Objects (DTOs)
- [ ] Data-Source Implementation
- [ ] Data-Source Added to Provider
- [ ] Unit Tests for Happy path
- [ ] Unit Tests for Error path
- [ ] Acceptance Tests
- [ ] Example in the ./examples folder
- [ ] Schema documentation in code
- [ ] Updated auto-generated provider docs with `task docs`[FEAT])Use the feature_request.yml template structure.
Job Story format describing the enhancement:
When using the existing `fabric_<resource>` resource,
I want to <what is missing or needs to change>,
so I can <expected outcome>.Explain why the enhancement is needed — e.g. new API capability, missing attribute, user request.
Describe workarounds or alternative approaches considered.
#skill:sdk-contract-navigator)Compare the current SDK DTOs against the existing implementation to identify what's new. Include this section in the issue body so the implementor agent has a clear change list:
For Fabric Item enhancements:
### SDK Diff
Resource: `fabric_<snake_case_name>`
Category: Fabric Item (`<archetype>`)
Service package: `internal/services/<package>/`
| Change | SDK Field | Go Type | Current Status |
| --------- | ----------------------------- | ------------------------ | --------------------------------- |
| + New | `Properties.<FieldName>` | `*string` | Not in `<item>PropertiesModel` |
| + New | `Properties.<NestedField>` | `*<NestedDTO>` | New sub-model needed |
| + New | `CreationPayload.<FieldName>` | `*bool` | Not in `<item>ConfigurationModel` |
| ~ Changed | `Properties.<FieldName>` | `*int32` (was `*string`) | Type change in model |For non-item enhancements:
### SDK Diff
Resource: `fabric_<snake_case_name>`
Category: non-item (bespoke CRUD)
Service package: `internal/services/<package>/`
SDK Client: `fabcore.<Resource>Client`
| Change | SDK Field | Go Type | Current Status |
| ------------ | --------------------------- | --------- | --------------------------------------- |
| + New | `<ResponseDTO>.<FieldName>` | `*string` | Not in `base<Resource>Model` |
| + New | `<RequestDTO>.<FieldName>` | `*bool` | Not in `request<Action><Resource>Model` |
| + New method | `client.<NewMethod>(...)` | — | No CRUD handler |Show HCL demonstrating the desired new behavior:
resource "fabric_<existing_resource>" "example" {
# existing attributes...
# NEW: proposed enhancement
new_attribute = "value"
}- [ ] New attribute `<name>` is added to the schema
- [ ] SDK mapping is correct for new fields
- [ ] `set()` methods updated for new fields
- [ ] Fakes updated with new field test data
- [ ] Existing tests still pass
- [ ] New test assertions for added attributes
- [ ] Documentation updatedUse the GitHub MCP server create_issue tool:
owner: microsoft
repo: terraform-provider-fabric
title: <composed title from Step 4>
body: <composed body from Step 5>
labels: [<appropriate label>]
milestone: <resolved milestone number from Step 1, or null if not specified>Label mapping:
[RS] → ["tf/resource"][DS] → ["tf/data-source"][EPH] → ["tf/ephemeral"][FEAT] → ["feature"]After creating the issue, report:
© microsoft, MPL-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .github/skills/resource-designer of microsoft/terraform-provider-fabric.
Open the folder on GitHubat commit 86c83be
Resource Designer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Resource Designer this skillmicrosoft/terraform-provider-fabric | 128 | — | ~6k | Automated safety check: Pass | MPL-2.0 | |
| Apex GitHub Operationsjonathan-vella/apex | 217 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Azure CopilotMicrosoftDocs/Agent-Skills | 775 | — | ~1.4k | Automated safety check: Pass | CC-BY-4.0 | |
| Datadog Data Source GeneratorDataDog/terraform-provider-datadog | 468 | — | ~2.7k | Automated safety check: Pass | MPL-2.0 | |
| Avm Tf ClassificationsAzure/terraform-azurerm-avm-ptn-alz | 135 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Admingrafana/skills | 278 | — | ~1.5k | Automated safety check: Pass | Apache-2.0 |
jonathan-vella/apex
WORKFLOW SKILL — Full GitHub contribution lifecycle: branches, conventional commits, issues, PRs, Actions, releases.
MicrosoftDocs/Agent-Skills
Expert knowledge for Azure Copilot development including troubleshooting, decision making, architecture & design patterns, security, configuration, and integrations & coding patterns.
DataDog/terraform-provider-datadog
Generates a Datadog Terraform provider data source from an OpenAPI operation with tfgen and opens a review-ready GitHub PR with a risk scan and testing guide.
Azure/terraform-azurerm-avm-ptn-alz
A skill your agent uses whenever a contributor is deciding what KIND of Azure Verified Module to build in Terraform — resource module, pattern module, or utility module — or is naming a module /…
grafana/skills
Manage Grafana Cloud accounts — organizations, stacks, RBAC roles and assignments, SSO/SAML/OAuth/GitHub auth, service accounts for CI/CD, user invites, team membership, and API-driven provisioning.
mizchi/skills
OpenTofu/Terraform pattern for GitHub Actions OIDC trust with AWS IAM.
microsoft/terraform-provider-fabric
Given SDK analysis results, automatically determine the correct itemgen archetype and build the full go run tools/itemgen/main.go command.
microsoft/terraform-provider-fabric
Given a Go SDK contract (DTOs), generate the corresponding Terraform schema attributes and model structs with high fidelity.
microsoft/terraform-provider-fabric
Navigate the fabric-sdk-go SDK source to find the correct client factory, DTOs, item type constants, and pager methods for a given Fabric Item or non-item resource.
microsoft/terraform-provider-fabric
Analyze dependencies and determine what infrastructure must be added to tools/scripts/Set-WellKnown.ps1 and internal/testhelp/wellknown.go so that acceptance tests for a new resource have all…
Categories
Research SDK contracts, design Terraform schema approach, and compose a GitHub issue for a new resource, data source, ephemeral resource, or enhancement to an existing resource. Resource Designer is an agent skill from microsoft/terraform-provider-fabric, published by the product's own GitHub organization. Research SDK contracts, design Terraform schema approach, and compose a GitHub issue for a new resource, data source, ephemeral resource, or enhancement to an existing resource.
Resource Designer fits situations like: : analyzing SDK DTOs; determining design patterns (polymorphic flattening; enum filtering); creating well-structured GitHub issues.
Run `npx skills add microsoft/terraform-provider-fabric --skill resource-designer -a claude-code`. Or copy the skill folder (.github/skills/resource-designer in microsoft/terraform-provider-fabric) into .claude/skills/resource-designer in your project. Claude Code loads it when a task matches its description.
Run `npx skills add microsoft/terraform-provider-fabric --skill resource-designer -a codex`. Or copy the skill folder (.github/skills/resource-designer in microsoft/terraform-provider-fabric) into .agents/skills/resource-designer in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add microsoft/terraform-provider-fabric --skill resource-designer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/resource-designer, .gemini/skills/resource-designer, .github/skills/resource-designer and .opencode/skills/resource-designer in your project.
SKILL.md names no scripts, command-line tools or credentials: Resource Designer is instructions for the agent only.
SKILL.md names 1 domain. In commands or code: learn.microsoft.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Resource Designer is published under the MPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6k tokens (SKILL.md is roughly 24k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Resource Designer: Apex GitHub Operations (jonathan-vella/apex, 217 stars), Azure Copilot (MicrosoftDocs/Agent-Skills, 775 stars), Datadog Data Source Generator (DataDog/terraform-provider-datadog, 468 stars) and Avm Tf Classifications (Azure/terraform-azurerm-avm-ptn-alz, 135 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
microsoft (a GitHub organization, an official publisher) maintains it in microsoft/terraform-provider-fabric, which has 128 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 6, 2026.
Source: microsoft/terraform-provider-fabric on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.