Convenience wrapper for listing Terraform Cloud runs in Forum Virium Helsinki workspaces (github, sentry, gcp, onelogin, twingate). Requires TFE_TOKEN. Use when user mentions TFC runs, Terraform Cloud workspace, listing TFC runs, infrastructure run history, or checking Terraform Cloud status.
View on GitHublaurigates/claude-plugins
terraform-plugin
January 24, 2026
Select agents to install to:
npx add-skill https://github.com/laurigates/claude-plugins/blob/main/terraform-plugin/skills/tfc-workspace-runs/SKILL.md -a claude-code --skill tfc-workspace-runsInstallation paths:
.claude/skills/tfc-workspace-runs/# Terraform Cloud Workspace Runs
Convenience wrapper for quick access to runs in Forum Virium Helsinki Terraform Cloud workspaces.
## Prerequisites
```bash
export TFE_TOKEN="your-api-token" # User or team token
export TFE_ADDRESS="app.terraform.io" # Optional
```
## Known Workspaces
| Shorthand | Full Workspace Name |
|-----------|---------------------|
| `github` | `infrastructure-github` |
| `sentry` | `infrastructure-sentry` |
| `gcp` | `infrastructure-gcp` |
| `onelogin` | `infrastructure-onelogin` |
| `twingate` | `infrastructure-twingate` |
## Core Commands
### Quick List Runs
```bash
#!/bin/bash
set -euo pipefail
TOKEN="${TFE_TOKEN:?TFE_TOKEN not set}"
BASE_URL="https://${TFE_ADDRESS:-app.terraform.io}/api/v2"
ORG="ForumViriumHelsinki"
# Map shorthand to full workspace name
case "${1:-}" in
github) WORKSPACE="infrastructure-github" ;;
sentry) WORKSPACE="infrastructure-sentry" ;;
gcp) WORKSPACE="infrastructure-gcp" ;;
onelogin) WORKSPACE="infrastructure-onelogin" ;;
twingate) WORKSPACE="infrastructure-twingate" ;;
*)
echo "Usage: $0 <workspace> [limit]"
echo "Workspaces: github, sentry, gcp, onelogin, twingate"
exit 1
;;
esac
LIMIT="${2:-10}"
# Get workspace ID
WS_ID=$(curl -sf --header "Authorization: Bearer $TOKEN" \
"$BASE_URL/organizations/$ORG/workspaces/$WORKSPACE" | \
jq -r '.data.id')
# List runs
echo "Recent runs for $WORKSPACE:"
echo ""
curl -sf --header "Authorization: Bearer $TOKEN" \
"$BASE_URL/workspaces/$WS_ID/runs?page[size]=$LIMIT&include=plan" | \
jq -r '
["RUN_ID", "STATUS", "+", "~", "-", "CREATED", "MESSAGE"],
(.data[] |
.relationships.plan.data.id as $pid |
[
.id,
.attributes.status,
((.included[] | select(.id == $pid) | .attributes."resource-additions") // 0 | tostring),
((.included[] | select(.id == $pid) | .attributes."resource-changes") // 0 | tostring),
((.included[] | select(.id == $pid) | .attributes."res