From homelab
Terraform Cloud operations and registry documentation lookup. Watch runs, view plan/apply logs, check workspace status, look up provider docs. Invokes Terraform MCP server on-demand without loading tool definitions into context.
npx claudepluginhub fzymgc-house/fzymgc-house-skills --plugin homelabThis skill is limited to using the following tools:
You MUST have the following environment variables configured:
CHANGELOG.mdreferences/providers.mdreferences/runs.mdreferences/workspaces.mdscripts/terraform_mcp.pytests/capture_fixtures.pytests/capture_list_runs_api.pytests/fixtures/get_provider_details.jsontests/fixtures/get_workspace_details.jsontests/fixtures/list_runs.jsontests/fixtures/list_runs_api.jsontests/fixtures/list_workspaces.jsontests/fixtures/search_providers.jsontests/test_terraform_mcp.pyGuides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
You MUST have the following environment variables configured:
You MAY set:
Note: Provider documentation commands do not require TFE_ORG.
All operations MUST use the gateway script:
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py
IMPORTANT: When running the gateway script, you MAY see
errors/stacktraces from uv when running in a sandboxed environment. If
you do, you MUST attempt to re-run the command outside the sandbox, if
permitted.
You MUST use run-details for completed runs:
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
run-details <run-id>
This command:
Expected output structure:
Status: applied
Message: "Update security group rules"
Changes: +2 ~1 -0
Plan Output:
✓ Resource changes validated
Apply Output:
aws_security_group_rule.allow_https: Creating...
aws_security_group_rule.allow_https: Creation complete
Error format when issues occur:
ERROR: Reference to undeclared resource
File: main.tf:32:20
Detail: A managed resource "aws_instance" "web" has not been
declared in the root module.
You MUST use watch-run for in-progress runs:
# Watch specific run
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
watch-run <run-id>
# Watch latest run for a workspace
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
watch-run --workspace <workspace-name>
This command:
--interval)You SHOULD NOT use --logs flag with watch-run for completed runs.
Use run-details instead for formatted output.
The command will guide you:
Run run-abc123 is already in 'applied' state.
Use 'run-details run-abc123' for formatted logs.
You MUST use list-runs:
# List recent runs (default: 10 most recent)
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
list-runs <workspace-name>
# More results
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
list-runs <workspace-name> --limit 20
# Filter by status
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
list-runs <workspace-name> --status errored
This returns:
run-details or watch-run)Common status values:
applied - Successfully completederrored - Failed during plan or applyplanning - Currently generating planapplying - Currently applying changesplanned_and_finished - Plan completed, not appliedTypical workflow:
run-details <run-id> to view completed run logswatch-run <run-id> to monitor in-progress runYou MUST use workspace-status:
# List all workspaces
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
workspace-status
# Detailed view of specific workspace
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
workspace-status <workspace-name>
Without a workspace name, this shows:
With a workspace name, this shows:
Use this workflow:
workspace-status without args to see all workspacesworkspace-status <name> for detailsrun-details <run-id> or watch-run <run-id> as appropriateYou MUST use run-outputs:
# From specific run
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
run-outputs <run-id>
# From latest successful apply in workspace
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
run-outputs --workspace <workspace-name>
This command:
applied state<sensitive> (actual values not
retrieved)Expected output:
vpc_id: vpc-abc123
subnet_ids:
- subnet-123
- subnet-456
database_endpoint: <sensitive>
You MUST use provider-docs:
# Provider overview
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
provider-docs <provider-name>
# Specific resource documentation
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
provider-docs <provider-name> --resource <resource-type>
# Data source documentation
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
provider-docs <provider-name> --data-source <data-source-type>
# List all resources for a provider
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
provider-docs <provider-name> --list-resources
Examples:
# AWS Lambda function resource docs
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
provider-docs aws --resource lambda_function
# AWS AMI data source docs
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
provider-docs aws --data-source ami
# See all AWS resources
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
provider-docs aws --list-resources
This returns:
You MUST use list-providers:
# Search by keyword
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
list-providers --search <keyword>
# List by namespace
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
list-providers --namespace <namespace>
Examples:
# Find cloud providers
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
list-providers --search cloud
# All Cloudflare providers
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
list-providers --namespace cloudflare
You MAY specify output format for any command:
--format yaml # YAML output (default, most readable)
--format json # Compact JSON (for parsing)
--format compact # Minimal output (for quick checks)
When you need to understand available MCP tools:
# List all tools
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
list-tools
# Get tool schema and parameters
${CLAUDE_PLUGIN_ROOT}/skills/terraform/scripts/terraform_mcp.py \
describe <tool-name>
You SHOULD use this when:
Use this to determine the correct command:
| Question | Command | Notes |
|---|---|---|
| Is the run complete? | run-details <run-id> | Formatted logs |
| Is the run in progress? | watch-run <run-id> | Live monitoring |
| Which workspace? | workspace-status | Overview of all |
| Recent runs? | list-runs <workspace> | Get run IDs |
| What are the outputs? | run-outputs <run-id> | Applied runs only |
| Need provider docs? | provider-docs <provider> | Resource docs |
| Find a provider? | list-providers --search | Discover |
You MUST:
run-details for completed runs instead of watch-run --logsworkspace-status before investigating runslist-runs to find run IDs, not guess themYou SHOULD:
--workspace flag with watch-run to monitor latest run--limit values for list-runs (default 10 is
usually sufficient)--format compact for quick status checksYou SHOULD NOT:
watch-run --logs for runs already in terminal stateLoad these only when you need detailed implementation information: