Skill: incus-tf
- Purpose: Ground every terraform-incus provider answer, Terraform configuration, and HCL snippet in authoritative offline documentation to eliminate hallucinations.
- Use when: The user asks to generate Terraform configurations for Incus, asks about
incus_* resources or data sources, wants to manage Incus with Terraform, or asks questions about the lxc/incus Terraform provider.
- Don't use when: The question is purely about Incus CLI commands (use incus-doc skill), general Terraform concepts unrelated to the Incus provider, or non-Incus Terraform providers.
- Success looks like: Every
incus_* resource/data source name, argument, attribute, and configuration option is verified against the skill's reference files before being emitted; no fabricated resource types, arguments, or behaviors.
Inputs
This skill does not require explicit inputs — it activates on context (mentions of terraform-incus, incus_* resources, managing Incus with Terraform). The skill's own reference files serve as the input.
Assumptions:
- The
references/ directory within the skill folder (incus-tf/references/) exists and is up to date.
incus-tf/references/docs/index.md contains the authoritative documentation tree with links to all markdown files in incus-tf/references/docs/.
incus-tf/references/docs/provider-index.md contains the provider overview including authentication, remote configuration, and environment variables.
- Resource documentation files are in
incus-tf/references/docs/resources/.
- Data source documentation files are in
incus-tf/references/docs/data-sources/.
Output
Format: Grounded answer / Terraform HCL configuration / corrected resource block
Every incus_* resource or data source name, argument, attribute, or configuration option must be traceable to a reference file. If the reference does not contain the claim, the claim must not be emitted.
Reasoning
- Understand — Parse the user request; identify all
incus_* resources, data sources, arguments, and provider configuration blocks.
- Plan — Determine which reference files to consult:
- Provider configuration (authentication, remotes, environment variables) →
incus-tf/references/docs/provider-index.md
- Resource arguments and attributes →
incus-tf/references/docs/resources/<resource>.md
- Data source arguments and attributes →
incus-tf/references/docs/data-sources/<datasource>.md
- Full documentation tree navigation →
incus-tf/references/docs/index.md
- Generate — Produce answer with every
incus_* element verified.
- Verify — Re-read relevant reference lines to confirm every resource type, argument, and attribute exists.
When uncertain: Consult reference files. If not covered, state "Not found in the terraform-incus provider reference documentation."
Decision Rules
| If |
Then |
| User asks about provider setup/auth |
Open incus-tf/references/docs/provider-index.md, answer from it |
User asks about an incus_* resource |
Open incus-tf/references/docs/index.md, find resource, open linked incus-tf/references/docs/resources/<resource>.md, answer from it |
User asks about an incus_* data source |
Open incus-tf/references/docs/index.md, find data source, open linked incus-tf/references/docs/data-sources/<datasource>.md, answer from it |
| User asks to generate Terraform config |
Verify every resource/data source type and its arguments against its reference file |
| User asks about provider-supported features |
Consult relevant resource/data source doc and provider-index.md |
| Not in references |
"This is not covered in the bundled terraform-incus provider reference documentation." |
Documentation Pages
Provider
| Page |
Summary |
| provider-index |
Provider configuration, authentication, remotes, environment variables |
Resources
| Page |
Summary |
| certificate |
Manage Incus client certificates |
| cluster_group |
Manage Incus cluster groups |
| image |
Manage locally-stored Incus images |
| instance |
Manage Incus instances (containers and VMs) |
| instance_snapshot |
Manage Incus instance snapshots |
| network |
Manage Incus networks |
| network_acl |
Manage Incus network ACLs |
| network_address_set |
Manage Incus network address sets |
| network_forward |
Manage Incus network forwards |
| network_integration |
Manage Incus network integrations |
| network_load_balancer |
Manage Incus network load balancers |
| network_peer |
Manage Incus network peers |
| network_zone |
Manage Incus network zones |
| network_zone_record |
Manage Incus network zone records |
| profile |
Manage Incus profiles |
| project |
Manage Incus projects |
| server |
Manage Incus server configuration |
| storage_bucket |
Manage Incus storage buckets |
| storage_bucket_key |
Manage Incus storage bucket keys |
| storage_pool |
Manage Incus storage pools |
| storage_volume |
Manage Incus storage volumes |
Data Sources
| Page |
Summary |
| cluster |
Query Incus cluster information |
| image |
Query locally-stored Incus images |
| instance |
Query Incus instances |
| network |
Query Incus networks |
| network_acl |
Query Incus network ACLs |
| network_address_set |
Query Incus network address sets |
| network_forward |
Query Incus network forwards |
| network_integration |
Query Incus network integrations |
| network_load_balancer |
Query Incus network load balancers |
| network_peer |
Query Incus network peers |
| network_zone |
Query Incus network zones |
| profile |
Query Incus profiles |
| project |
Query Incus projects |
| storage_bucket |
Query Incus storage buckets |
| storage_pool |
Query Incus storage pools |
| storage_volume |
Query Incus storage volumes |
Guardrails
Must: Consult references before every incus_* claim · cite reference file path · verify every resource type, argument, and attribute exists before using · open specific doc file for exact resource/data source.
Must not: Invent resource types, arguments, or configuration options · guess HCL syntax for incus resources · output unverified incus_* blocks · reference non-existent documentation paths.
Priority: [1] Exact resource/data source doc text > [2] Provider overview > [3] No answer
Edge Cases
| Situation |
Response |
| Missing reference files |
Refuse: "terraform-incus provider reference files not found." |
| Resource exists but argument not in doc |
Don't use the argument |
| Feature not in docs |
"Not covered in bundled terraform-incus provider reference documentation." |
| User asks about incus CLI (not Terraform) |
"This skill covers the Terraform Incus provider, not the incus CLI. Use the incus-doc skill for CLI questions." |
| User asks about non-Incus Terraform provider |
"This skill only covers the lxc/incus Terraform provider." |
| Complex config with many resources |
Verify each resource type and its arguments independently |
Self-Check (run before returning)
If a check fails after 2 attempts: Refuse with "Unable to ground the answer in the terraform-incus provider reference documentation."
Examples
Good: User asks "How do I create an incus container with Terraform?" → Agent opens incus-tf/references/docs/index.md, finds instance resource → incus-tf/references/docs/resources/instance.md, reads arguments (name, image, type), answers with verified HCL.
Bad: User asks "Use incus_init resource" → Agent guesses incus_init is valid, but it doesn't exist in the reference files. Correct: use incus_instance.
Change log
- v1.0.0 — initial: Ground all terraform-incus provider AI output in bundled offline documentation to eliminate hallucinations.
1---2name: incus-tf3description: Ground AI responses, Terraform project generation, and infrastructure-as-code questions in offline authoritative terraform-incus provider documentation. Must be loaded before generating Terraform configurations for Incus, writing HCL that references incus_* resources/data sources, or answering questions about managing Incus with Terraform. Reduces hallucinations by routing all claims through verified reference files.4license: Apache-2.05---67# Skill: incus-tf89- **Purpose:** Ground every terraform-incus provider answer, Terraform configuration, and HCL snippet in authoritative offline documentation to eliminate hallucinations.10- **Use when:** The user asks to generate Terraform configurations for Incus, asks about `incus_*` resources or data sources, wants to manage Incus with Terraform, or asks questions about the lxc/incus Terraform provider.11- **Don't use when:** The question is purely about Incus CLI commands (use incus-doc skill), general Terraform concepts unrelated to the Incus provider, or non-Incus Terraform providers.12- **Success looks like:** Every `incus_*` resource/data source name, argument, attribute, and configuration option is verified against the skill's reference files before being emitted; no fabricated resource types, arguments, or behaviors.1314## Inputs1516This skill does not require explicit inputs — it activates on context (mentions of terraform-incus, incus_* resources, managing Incus with Terraform). The skill's own reference files serve as the input.1718**Assumptions:**19- The `references/` directory within the skill folder (`incus-tf/references/`) exists and is up to date.20- `incus-tf/references/docs/index.md` contains the authoritative documentation tree with links to all markdown files in `incus-tf/references/docs/`.21- `incus-tf/references/docs/provider-index.md` contains the provider overview including authentication, remote configuration, and environment variables.22- Resource documentation files are in `incus-tf/references/docs/resources/`.23- Data source documentation files are in `incus-tf/references/docs/data-sources/`.2425## Output2627**Format:** Grounded answer / Terraform HCL configuration / corrected resource block2829Every `incus_*` resource or data source name, argument, attribute, or configuration option **must** be traceable to a reference file. If the reference does not contain the claim, the claim must not be emitted.3031## Reasoning32331. **Understand** — Parse the user request; identify all `incus_*` resources, data sources, arguments, and provider configuration blocks.342. **Plan** — Determine which reference files to consult:35 - Provider configuration (authentication, remotes, environment variables) → `incus-tf/references/docs/provider-index.md`36 - Resource arguments and attributes → `incus-tf/references/docs/resources/<resource>.md`37 - Data source arguments and attributes → `incus-tf/references/docs/data-sources/<datasource>.md`38 - Full documentation tree navigation → `incus-tf/references/docs/index.md`393. **Generate** — Produce answer with every `incus_*` element verified.404. **Verify** — Re-read relevant reference lines to confirm every resource type, argument, and attribute exists.4142**When uncertain:** Consult reference files. If not covered, state "Not found in the terraform-incus provider reference documentation."4344## Decision Rules4546| If | Then |47|----|------|48| User asks about provider setup/auth | Open `incus-tf/references/docs/provider-index.md`, answer from it |49| User asks about an `incus_*` resource | Open `incus-tf/references/docs/index.md`, find resource, open linked `incus-tf/references/docs/resources/<resource>.md`, answer from it |50| User asks about an `incus_*` data source | Open `incus-tf/references/docs/index.md`, find data source, open linked `incus-tf/references/docs/data-sources/<datasource>.md`, answer from it |51| User asks to generate Terraform config | Verify every resource/data source type and its arguments against its reference file |52| User asks about provider-supported features | Consult relevant resource/data source doc and provider-index.md |53| Not in references | "This is not covered in the bundled terraform-incus provider reference documentation." |5455## Documentation Pages5657### Provider5859| Page | Summary |60|------|---------|61| [provider-index](references/docs/provider-index.md) | Provider configuration, authentication, remotes, environment variables |6263### Resources6465| Page | Summary |66|------|---------|67| [certificate](references/docs/resources/certificate.md) | Manage Incus client certificates |68| [cluster_group](references/docs/resources/cluster_group.md) | Manage Incus cluster groups |69| [image](references/docs/resources/image.md) | Manage locally-stored Incus images |70| [instance](references/docs/resources/instance.md) | Manage Incus instances (containers and VMs) |71| [instance_snapshot](references/docs/resources/instance_snapshot.md) | Manage Incus instance snapshots |72| [network](references/docs/resources/network.md) | Manage Incus networks |73| [network_acl](references/docs/resources/network_acl.md) | Manage Incus network ACLs |74| [network_address_set](references/docs/resources/network_address_set.md) | Manage Incus network address sets |75| [network_forward](references/docs/resources/network_forward.md) | Manage Incus network forwards |76| [network_integration](references/docs/resources/network_integration.md) | Manage Incus network integrations |77| [network_load_balancer](references/docs/resources/network_load_balancer.md) | Manage Incus network load balancers |78| [network_peer](references/docs/resources/network_peer.md) | Manage Incus network peers |79| [network_zone](references/docs/resources/network_zone.md) | Manage Incus network zones |80| [network_zone_record](references/docs/resources/network_zone_record.md) | Manage Incus network zone records |81| [profile](references/docs/resources/profile.md) | Manage Incus profiles |82| [project](references/docs/resources/project.md) | Manage Incus projects |83| [server](references/docs/resources/server.md) | Manage Incus server configuration |84| [storage_bucket](references/docs/resources/storage_bucket.md) | Manage Incus storage buckets |85| [storage_bucket_key](references/docs/resources/storage_bucket_key.md) | Manage Incus storage bucket keys |86| [storage_pool](references/docs/resources/storage_pool.md) | Manage Incus storage pools |87| [storage_volume](references/docs/resources/storage_volume.md) | Manage Incus storage volumes |8889### Data Sources9091| Page | Summary |92|------|---------|93| [cluster](references/docs/data-sources/cluster.md) | Query Incus cluster information |94| [image](references/docs/data-sources/image.md) | Query locally-stored Incus images |95| [instance](references/docs/data-sources/instance.md) | Query Incus instances |96| [network](references/docs/data-sources/network.md) | Query Incus networks |97| [network_acl](references/docs/data-sources/network_acl.md) | Query Incus network ACLs |98| [network_address_set](references/docs/data-sources/network_address_set.md) | Query Incus network address sets |99| [network_forward](references/docs/data-sources/network_forward.md) | Query Incus network forwards |100| [network_integration](references/docs/data-sources/network_integration.md) | Query Incus network integrations |101| [network_load_balancer](references/docs/data-sources/network_load_balancer.md) | Query Incus network load balancers |102| [network_peer](references/docs/data-sources/network_peer.md) | Query Incus network peers |103| [network_zone](references/docs/data-sources/network_zone.md) | Query Incus network zones |104| [profile](references/docs/data-sources/profile.md) | Query Incus profiles |105| [project](references/docs/data-sources/project.md) | Query Incus projects |106| [storage_bucket](references/docs/data-sources/storage_bucket.md) | Query Incus storage buckets |107| [storage_pool](references/docs/data-sources/storage_pool.md) | Query Incus storage pools |108| [storage_volume](references/docs/data-sources/storage_volume.md) | Query Incus storage volumes |109110## Guardrails111112**Must:** Consult references before every `incus_*` claim · cite reference file path · verify every resource type, argument, and attribute exists before using · open specific doc file for exact resource/data source.113114**Must not:** Invent resource types, arguments, or configuration options · guess HCL syntax for incus resources · output unverified `incus_*` blocks · reference non-existent documentation paths.115116**Priority:** [1] Exact resource/data source doc text > [2] Provider overview > [3] No answer117118## Edge Cases119120| Situation | Response |121|-----------|----------|122| Missing reference files | Refuse: "terraform-incus provider reference files not found." |123| Resource exists but argument not in doc | Don't use the argument |124| Feature not in docs | "Not covered in bundled terraform-incus provider reference documentation." |125| User asks about incus CLI (not Terraform) | "This skill covers the Terraform Incus provider, not the incus CLI. Use the incus-doc skill for CLI questions." |126| User asks about non-Incus Terraform provider | "This skill only covers the lxc/incus Terraform provider." |127| Complex config with many resources | Verify each resource type and its arguments independently |128129## Self-Check (run before returning)130131- [ ] Correctness — every `incus_*` resource/data source/argument verified against a reference file132- [ ] Format — output contains reference file paths for traceability133- [ ] Safety — no fabricated Terraform resources or arguments134- [ ] Completeness — all incus Terraform-related parts addressed135136**If a check fails after 2 attempts:** Refuse with "Unable to ground the answer in the terraform-incus provider reference documentation."137138## Examples139140**Good:** User asks "How do I create an incus container with Terraform?" → Agent opens `incus-tf/references/docs/index.md`, finds `instance` resource → `incus-tf/references/docs/resources/instance.md`, reads arguments (`name`, `image`, `type`), answers with verified HCL.141142**Bad:** User asks "Use `incus_init` resource" → Agent guesses `incus_init` is valid, but it doesn't exist in the reference files. Correct: use `incus_instance`.143144## Change log145146- v1.0.0 — initial: Ground all terraform-incus provider AI output in bundled offline documentation to eliminate hallucinations.