Rollbar Skill Monitor and manage Rollbar errors directly from OpenClaw. Setup The script resolves your Rollbar token from the first matching source: | Priority | Method | How | |---|---|---| | 1 | | One-line file in your agent workspace containing the token | | 2 | | MCP-compatible JSON config (cwd, , or ) | | 3 | | File in your agent workspace with | | 4 | | Environment variable (injected or shell) | MCP-Compatible Config (Recommended for multi-project setups) Create in your agent workspace: Use to select a specific project's token when running commands. Tip: Use to have the agent auto-creat…

\\t\\r\\n ']}\"\nfi\n# 2. MCP config (use --project-name to select specific project)\nif [[ -z \"$TOKEN\" && -n \"$MCP_CONFIG\" ]]; then\n TOKEN=$(_mcp_get_token \"$MCP_CONFIG\" \"$PROJECT_NAME\" 2>/dev/null || true)\nfi\n# 3. ROLLBAR_ACCESS_TOKEN from .env or environment\nif [[ -z \"$TOKEN\" ]]; then\n TOKEN=\"${ROLLBAR_ACCESS_TOKEN:-}\"\nfi\n\nif [[ -z \"$TOKEN\" ]]; then\n echo \"Error: No Rollbar token found.\" >&2\n echo \"\" >&2\n echo \"Token resolution order (first match wins):\" >&2\n echo \" 1. \\$PWD/secrets/rollbar — one-line token file\" >&2\n echo \" 2. .rollbar-mcp.json (cwd or ~/) — MCP-compatible JSON config\" >&2\n echo \" Single: { \\\"token\\\": \\\"tok_...\\\" }\" >&2\n echo \" Multiple: { \\\"projects\\\": [{\\\"name\\\": \\\"myapp\\\", \\\"token\\\": \\\"tok_...\\\"}] }\" >&2\n echo \" Custom: set ROLLBAR_CONFIG_FILE env var\" >&2\n echo \" 3. \\$PWD/.env — ROLLBAR_ACCESS_TOKEN=\u003ctoken>\" >&2\n echo \" 4. ROLLBAR_ACCESS_TOKEN — environment variable\" >&2\n exit 1\nfi\n\n# --- HTTP Helpers ---\napi_get() {\n local endpoint=\"$1\"; shift\n curl -sf -H \"X-Rollbar-Access-Token: $TOKEN\" \"$BASE_URL/$endpoint\" \"$@\"\n}\n\napi_post() {\n local endpoint=\"$1\" data=\"$2\"\n curl -sf -X POST \\\n -H \"X-Rollbar-Access-Token: $TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d \"$data\" \\\n \"$BASE_URL/$endpoint\"\n}\n\napi_patch() {\n local endpoint=\"$1\" data=\"$2\"\n curl -sf -X PATCH \\\n -H \"X-Rollbar-Access-Token: $TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d \"$data\" \\\n \"$BASE_URL/$endpoint\"\n}\n\n# Helper: resolve a project-level read token via account token\n_get_project_token() {\n local project_id=\"$1\"\n local tmpfile\n tmpfile=$(mktemp)\n api_get \"project/$project_id/access_tokens\" > \"$tmpfile\" 2>/dev/null || { rm -f \"$tmpfile\"; return 1; }\n python3 - \"$tmpfile\" \u003c\u003c'PYEOF'\nimport json, sys\nwith open(sys.argv[1]) as f:\n tokens = json.load(f).get('result', [])\nfor t in tokens:\n if 'read' in t.get('scopes', []):\n print(t['access_token']); break\nPYEOF\n rm -f \"$tmpfile\"\n}\n\n# Auto-switch to project token for item commands when account token is in use\nif [[ -n \"$PROJECT_ID\" && \"$COMMAND\" != \"projects\" && \"$COMMAND\" != \"project-tokens\" && \\\n \"$COMMAND\" != \"project-token-create\" && \"$COMMAND\" != \"project-token-update\" ]]; then\n PROJECT_TOKEN=$(_get_project_token \"$PROJECT_ID\" 2>/dev/null || true)\n [[ -n \"$PROJECT_TOKEN\" ]] && TOKEN=\"$PROJECT_TOKEN\"\nfi\n\n# --- Commands ---\ncase \"$COMMAND\" in\n\n projects)\n api_get \"projects\" | python3 -c \"\nimport json, sys\ndata = json.load(sys.stdin)\nprojects = data.get('result', [])\nprint(json.dumps([{\n 'id': p['id'],\n 'name': p['name'],\n 'status': p.get('status', '?'),\n 'date_created': p.get('date_created'),\n} for p in projects], indent=2))\n\"\n ;;\n\n items)\n PARAMS=\"?page=1&sort=last_occurrence\"\n [[ -n \"$STATUS\" ]] && PARAMS=\"$PARAMS&status=$STATUS\"\n [[ -n \"$LEVEL\" ]] && PARAMS=\"$PARAMS&level=$LEVEL\"\n api_get \"items$PARAMS\" | _LIMIT=\"$LIMIT\" python3 -c \"\nimport json, sys, os\ndata = json.load(sys.stdin)\nitems = data.get('result', {}).get('items', data.get('result', []))\nlimit = int(os.environ['_LIMIT'])\nif isinstance(items, list): items = items[:limit]\nprint(json.dumps([{\n 'id': i['id'],\n 'counter': i.get('counter'),\n 'title': i.get('title', '')[:150],\n 'level': i.get('level_string', i.get('level', '')),\n 'status': i.get('status', ''),\n 'total_occurrences': i.get('total_occurrences', 0),\n 'last_occurrence': i.get('last_occurrence_timestamp'),\n 'environment': i.get('environment', ''),\n 'framework': i.get('framework', ''),\n} for i in items], indent=2))\n\"\n ;;\n\n item)\n [[ -z \"$ITEM_ID\" ]] && { echo \"Usage: rollbar.sh item \u003citem_id>\" >&2; exit 1; }\n api_get \"item/$ITEM_ID\" | python3 -m json.tool 2>/dev/null || api_get \"item/$ITEM_ID\"\n ;;\n\n occurrences)\n [[ -z \"$ITEM_ID\" ]] && { echo \"Usage: rollbar.sh occurrences \u003citem_id>\" >&2; exit 1; }\n api_get \"item/$ITEM_ID/instances/?page=1\" | python3 -m json.tool 2>/dev/null || \\\n api_get \"item/$ITEM_ID/instances/?page=1\"\n ;;\n\n resolve)\n [[ -z \"$ITEM_ID\" ]] && { echo \"Usage: rollbar.sh resolve \u003citem_id>\" >&2; exit 1; }\n if [[ \"$DRY_RUN\" == \"true\" ]]; then\n echo \"{\\\"dry_run\\\": true, \\\"action\\\": \\\"resolve\\\", \\\"item_id\\\": \\\"$ITEM_ID\\\"}\"\n exit 0\n fi\n if [[ \"$YES\" != \"true\" ]]; then\n echo \"⚠️ This will resolve item $ITEM_ID and suppress future alerts. Pass --yes to confirm, or --dry-run to preview.\" >&2\n exit 1\n fi\n api_patch \"item/$ITEM_ID\" '{\"status\":\"resolved\"}' | python3 -m json.tool 2>/dev/null || \\\n api_patch \"item/$ITEM_ID\" '{\"status\":\"resolved\"}'\n ;;\n\n mute)\n [[ -z \"$ITEM_ID\" ]] && { echo \"Usage: rollbar.sh mute \u003citem_id>\" >&2; exit 1; }\n if [[ \"$DRY_RUN\" == \"true\" ]]; then\n echo \"{\\\"dry_run\\\": true, \\\"action\\\": \\\"mute\\\", \\\"item_id\\\": \\\"$ITEM_ID\\\"}\"\n exit 0\n fi\n if [[ \"$YES\" != \"true\" ]]; then\n echo \"⚠️ This will mute item $ITEM_ID and stop all alerts for it. Pass --yes to confirm, or --dry-run to preview.\" >&2\n exit 1\n fi\n api_patch \"item/$ITEM_ID\" '{\"status\":\"muted\"}' | python3 -m json.tool 2>/dev/null || \\\n api_patch \"item/$ITEM_ID\" '{\"status\":\"muted\"}'\n ;;\n\n activate)\n [[ -z \"$ITEM_ID\" ]] && { echo \"Usage: rollbar.sh activate \u003citem_id>\" >&2; exit 1; }\n if [[ \"$DRY_RUN\" == \"true\" ]]; then\n echo \"{\\\"dry_run\\\": true, \\\"action\\\": \\\"activate\\\", \\\"item_id\\\": \\\"$ITEM_ID\\\"}\"\n exit 0\n fi\n if [[ \"$YES\" != \"true\" ]]; then\n echo \"⚠️ This will reopen item $ITEM_ID. Pass --yes to confirm, or --dry-run to preview.\" >&2\n exit 1\n fi\n api_patch \"item/$ITEM_ID\" '{\"status\":\"active\"}' | python3 -m json.tool 2>/dev/null || \\\n api_patch \"item/$ITEM_ID\" '{\"status\":\"active\"}'\n ;;\n\n deploys)\n api_get \"deploys/?page=1\" | python3 -m json.tool 2>/dev/null || api_get \"deploys/?page=1\"\n ;;\n\n project)\n api_get \"project\" | python3 -m json.tool 2>/dev/null || api_get \"project\"\n ;;\n\n top)\n PARAMS=\"?status=active&sort=total_occurrences&direction=desc&page=1\"\n [[ -n \"$LEVEL\" ]] && PARAMS=\"$PARAMS&level=$LEVEL\"\n api_get \"items$PARAMS\" | _HOURS=\"$HOURS\" _LIMIT=\"$LIMIT\" python3 -c \"\nimport json, sys, os\nfrom datetime import datetime, timedelta, timezone\ndata = json.load(sys.stdin)\nitems = data.get('result', {}).get('items', data.get('result', []))\nhours = int(os.environ['_HOURS'])\nlimit = int(os.environ['_LIMIT'])\ncutoff = datetime.now(timezone.utc) - timedelta(hours=hours)\nprint(json.dumps({\n 'window_hours': hours,\n 'items': [{\n 'id': i['id'],\n 'counter': i.get('counter'),\n 'title': i.get('title', '')[:120],\n 'level': i.get('level_string', i.get('level', '')),\n 'total_occurrences': i.get('total_occurrences', 0),\n 'last_occurrence': i.get('last_occurrence_timestamp'),\n 'environment': i.get('environment', ''),\n } for i in (items if isinstance(items, list) else [])\n if i.get('last_occurrence_timestamp', 0) >= cutoff.timestamp()\n ][:limit]\n}, indent=2))\n\" 2>/dev/null || api_get \"items$PARAMS\"\n ;;\n\n # --- Project Token Management ---\n\n project-tokens)\n [[ -z \"$PROJECT_ID\" ]] && { echo \"Error: --project-id required\" >&2; exit 1; }\n api_get \"project/$PROJECT_ID/access_tokens\" | python3 -c \"\nimport json, sys\ndata = json.load(sys.stdin)\ntokens = data.get('result', [])\nprint(json.dumps([{\n 'access_token': t.get('access_token', '')[:8] + '...',\n 'name': t.get('name', ''),\n 'scopes': t.get('scopes', []),\n 'status': t.get('status', ''),\n 'date_created': t.get('date_created'),\n 'rate_limit_window_size': t.get('rate_limit_window_size'),\n 'rate_limit_window_count': t.get('rate_limit_window_count'),\n} for t in tokens], indent=2))\n\"\n ;;\n\n project-token-create)\n [[ -z \"$PROJECT_ID\" ]] && { echo \"Error: --project-id required\" >&2; exit 1; }\n [[ -z \"$TOKEN_NAME\" ]] && { echo \"Error: --name required (token name)\" >&2; exit 1; }\n if [[ \"$DRY_RUN\" == \"true\" ]]; then\n echo \"{\\\"dry_run\\\": true, \\\"action\\\": \\\"project-token-create\\\", \\\"project_id\\\": \\\"$PROJECT_ID\\\", \\\"name\\\": \\\"$TOKEN_NAME\\\", \\\"scopes\\\": \\\"$SCOPES\\\"}\"\n exit 0\n fi\n if [[ \"$YES\" != \"true\" ]]; then\n echo \"⚠️ This will create a new $SCOPES access token for project $PROJECT_ID. Pass --yes to confirm, or --dry-run to preview.\" >&2\n exit 1\n fi\n # Build scopes array from comma-separated string\n SCOPES_JSON=$(python3 -c \"import json; print(json.dumps('$SCOPES'.split(',')))\")\n PAYLOAD=$(python3 -c \"\nimport json\nprint(json.dumps({'name': '$TOKEN_NAME', 'scopes': '$SCOPES'.split(',')}))\n\")\n RESULT=$(api_post \"project/$PROJECT_ID/access_tokens\" \"$PAYLOAD\")\n echo \"$RESULT\" | python3 -m json.tool 2>/dev/null || echo \"$RESULT\"\n # Optionally save to .rollbar-mcp.json\n if [[ \"$SAVE_TOKEN\" == \"true\" ]]; then\n NEW_TOKEN=$(echo \"$RESULT\" | python3 -c \"\nimport json, sys\ndata = json.load(sys.stdin)\nprint(data.get('result', {}).get('access_token', ''))\n\" 2>/dev/null || true)\n if [[ -n \"$NEW_TOKEN\" ]]; then\n SAVE_NAME=\"${PROJECT_NAME:-$TOKEN_NAME}\"\n CONFIG_DEST=\"${MCP_CONFIG:-$PWD/.rollbar-mcp.json}\"\n _mcp_save_token \"$CONFIG_DEST\" \"$SAVE_NAME\" \"$NEW_TOKEN\"\n else\n echo \"Warning: could not extract token from response; skipping save.\" >&2\n fi\n fi\n ;;\n\n project-token-update)\n # ITEM_ID is used as the token value/id to update\n [[ -z \"$ITEM_ID\" ]] && { echo \"Error: Usage: rollbar.sh project-token-update \u003ctoken_id_or_value> --project-id \u003cid> [--token-status enabled|disabled]\" >&2; exit 1; }\n [[ -z \"$PROJECT_ID\" ]] && { echo \"Error: --project-id required\" >&2; exit 1; }\n if [[ \"$DRY_RUN\" == \"true\" ]]; then\n echo \"{\\\"dry_run\\\": true, \\\"action\\\": \\\"project-token-update\\\", \\\"token_id\\\": \\\"$ITEM_ID\\\", \\\"project_id\\\": \\\"$PROJECT_ID\\\", \\\"token_status\\\": \\\"$TOKEN_STATUS_VAL\\\"}\"\n exit 0\n fi\n if [[ \"$YES\" != \"true\" ]]; then\n echo \"⚠️ This will update token $ITEM_ID on project $PROJECT_ID. Pass --yes to confirm, or --dry-run to preview.\" >&2\n exit 1\n fi\n PATCH_DATA=\"{}\"\n [[ -n \"$TOKEN_STATUS_VAL\" ]] && PATCH_DATA=$(python3 -c \"import json; print(json.dumps({'status': '$TOKEN_STATUS_VAL'}))\")\n api_patch \"project/$PROJECT_ID/access_token/$ITEM_ID\" \"$PATCH_DATA\" | \\\n python3 -m json.tool 2>/dev/null || \\\n api_patch \"project/$PROJECT_ID/access_token/$ITEM_ID\" \"$PATCH_DATA\"\n ;;\n\n *)\n echo \"Unknown command: $COMMAND\" >&2\n echo \"Run: rollbar.sh --help\" >&2\n exit 1\n ;;\nesac\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":16912,"content_sha256":"b43bbb950d04449b7695b1fd6f3579329cd39b60dcdbdca411a53f0fdecc4880"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"Rollbar Skill","type":"text"}]},{"type":"paragraph","content":[{"text":"Monitor and manage Rollbar errors directly from OpenClaw.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Setup","type":"text"}]},{"type":"paragraph","content":[{"text":"The script resolves your Rollbar token from the first matching source:","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Priority","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Method","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"How","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"1","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"$PWD/secrets/rollbar","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"One-line file in your agent workspace containing the token","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"2","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":".rollbar-mcp.json","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"MCP-compatible JSON config (cwd, ","type":"text"},{"text":"~/.rollbar-mcp.json","type":"text","marks":[{"type":"code_inline"}]},{"text":", or ","type":"text"},{"text":"$ROLLBAR_CONFIG_FILE","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"3","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"$PWD/.env","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"File in your agent workspace with ","type":"text"},{"text":"ROLLBAR_ACCESS_TOKEN=your-token","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"4","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"ROLLBAR_ACCESS_TOKEN","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Environment variable (injected or shell)","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"MCP-Compatible Config (Recommended for multi-project setups)","type":"text"}]},{"type":"paragraph","content":[{"text":"Create ","type":"text"},{"text":".rollbar-mcp.json","type":"text","marks":[{"type":"code_inline"}]},{"text":" in your agent workspace:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"// Single project\n{ \"token\": \"tok_abc123\" }\n\n// Multiple projects\n{\n \"projects\": [\n { \"name\": \"linkz-api\", \"token\": \"tok_abc123\" },\n { \"name\": \"linkz-dashboard\", \"token\": \"tok_xyz789\" },\n { \"name\": \"linkz-php\", \"token\": \"tok_def456\" }\n ]\n}","type":"text"}]},{"type":"paragraph","content":[{"text":"Use ","type":"text"},{"text":"--project-name \u003cname>","type":"text","marks":[{"type":"code_inline"}]},{"text":" to select a specific project's token when running commands.","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"Tip:","type":"text","marks":[{"type":"strong"}]},{"text":" Use ","type":"text"},{"text":"project-token-create --save","type":"text","marks":[{"type":"code_inline"}]},{"text":" to have the agent auto-create and persist tokens to ","type":"text"},{"text":".rollbar-mcp.json","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Single-project .env","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# workspace-myagent/.env\nROLLBAR_ACCESS_TOKEN=your-token-here","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Token types","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Project-level token","type":"text","marks":[{"type":"strong"}]},{"text":" — from Rollbar → Project → Settings → Project Access Tokens. Use ","type":"text"},{"text":"read","type":"text","marks":[{"type":"code_inline"}]},{"text":" scope for monitoring; add ","type":"text"},{"text":"write","type":"text","marks":[{"type":"code_inline"}]},{"text":" scope to resolve/mute. Best for single-project use.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Account-level token","type":"text","marks":[{"type":"strong"}]},{"text":" — from Rollbar → Account Settings → Account Access Tokens. Required for ","type":"text"},{"text":"projects","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"project-tokens","type":"text","marks":[{"type":"code_inline"}]},{"text":", and ","type":"text"},{"text":"project-token-create","type":"text","marks":[{"type":"code_inline"}]},{"text":". Use ","type":"text"},{"text":"--project-id","type":"text","marks":[{"type":"code_inline"}]},{"text":" to target specific projects.","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Commands","type":"text"}]},{"type":"paragraph","content":[{"text":"All commands use the helper script ","type":"text"},{"text":"rollbar.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":" in this skill directory.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"List projects (account token only)","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"./skills/rollbar/rollbar.sh projects","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"List recent items (errors/warnings)","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"./skills/rollbar/rollbar.sh items [--project-id \u003cid>] [--project-name \u003cname>] [--status active|resolved|muted] [--level critical|error|warning|info] [--limit 20]","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Get item details","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"./skills/rollbar/rollbar.sh item \u003citem_id>","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Get occurrences for an item","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"./skills/rollbar/rollbar.sh occurrences \u003citem_id> [--limit 5]","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Resolve an item","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"./skills/rollbar/rollbar.sh resolve \u003citem_id> --yes\n# or preview without making changes:\n./skills/rollbar/rollbar.sh resolve \u003citem_id> --dry-run","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Mute an item","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"./skills/rollbar/rollbar.sh mute \u003citem_id> --yes","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Activate (reopen) an item","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"./skills/rollbar/rollbar.sh activate \u003citem_id> --yes","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"Safety interlock:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"resolve","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"mute","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"activate","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"project-token-create","type":"text","marks":[{"type":"code_inline"}]},{"text":", and ","type":"text"},{"text":"project-token-update","type":"text","marks":[{"type":"code_inline"}]},{"text":" require ","type":"text"},{"text":"--yes","type":"text","marks":[{"type":"code_inline"}]},{"text":" to execute or ","type":"text"},{"text":"--dry-run","type":"text","marks":[{"type":"code_inline"}]},{"text":" to preview. Omitting both prints a warning and exits with an error — preventing silent state changes from mistaken or manipulated invocations.","type":"text"}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"List deploys","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"./skills/rollbar/rollbar.sh deploys [--limit 10]","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Get project info","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"./skills/rollbar/rollbar.sh project","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Top active items (summary)","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"./skills/rollbar/rollbar.sh top [--limit 10] [--hours 24]","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Project Access Token Management","type":"text"}]},{"type":"paragraph","content":[{"text":"These commands require an ","type":"text"},{"text":"account-level token with ","type":"text","marks":[{"type":"strong"}]},{"text":"write","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":" scope","type":"text","marks":[{"type":"strong"}]},{"text":".","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"List project access tokens","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"./skills/rollbar/rollbar.sh project-tokens --project-id \u003cid>","type":"text"}]},{"type":"paragraph","content":[{"text":"Token values are truncated in output (first 8 chars + ","type":"text"},{"text":"...","type":"text","marks":[{"type":"code_inline"}]},{"text":") for safety.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Create a project access token","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"./skills/rollbar/rollbar.sh project-token-create \\\n --project-id \u003cid> \\\n --name \"openclaw-agent\" \\\n --scopes read,write \\\n [--project-name \u003cname>] \\\n [--save]","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"--scopes","type":"text","marks":[{"type":"code_inline"}]},{"text":" — comma-separated, e.g. ","type":"text"},{"text":"read","type":"text","marks":[{"type":"code_inline"}]},{"text":" or ","type":"text"},{"text":"read,write","type":"text","marks":[{"type":"code_inline"}]},{"text":" (default: ","type":"text"},{"text":"read,write","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"--save","type":"text","marks":[{"type":"code_inline"}]},{"text":" — automatically saves the new token to ","type":"text"},{"text":".rollbar-mcp.json","type":"text","marks":[{"type":"code_inline"}]},{"text":" using ","type":"text"},{"text":"--project-name","type":"text","marks":[{"type":"code_inline"}]},{"text":" (or ","type":"text"},{"text":"--name","type":"text","marks":[{"type":"code_inline"}]},{"text":") as the key","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"--project-name","type":"text","marks":[{"type":"code_inline"}]},{"text":" — name used as the key in ","type":"text"},{"text":".rollbar-mcp.json","type":"text","marks":[{"type":"code_inline"}]},{"text":" when ","type":"text"},{"text":"--save","type":"text","marks":[{"type":"code_inline"}]},{"text":" is set","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Bootstrap workflow","type":"text","marks":[{"type":"strong"}]},{"text":" — let the agent provision its own project tokens:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Set account token first\nexport ROLLBAR_ACCESS_TOKEN=your-account-token\n\n# Create tokens for each project and save to MCP config\n./rollbar.sh project-token-create --project-id 378962 --name \"linkz-api-agent\" --scopes read,write --project-name linkz-api --save --yes\n./rollbar.sh project-token-create --project-id 462118 --name \"linkz-dashboard-agent\" --scopes read,write --project-name linkz-dashboard --save --yes\n./rollbar.sh project-token-create --project-id 755542 --name \"linkz-php-agent\" --scopes read,write --project-name linkz-php --save --yes\n\n# Now use per-project tokens directly from config\n./rollbar.sh items --project-name linkz-api","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Update a project access token","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"./skills/rollbar/rollbar.sh project-token-update \u003ctoken_id> \\\n --project-id \u003cid> \\\n --token-status enabled|disabled","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Proactive Monitoring","type":"text"}]},{"type":"paragraph","content":[{"text":"To get automatic alerts for new critical/error items, set up a cron job in OpenClaw:","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"\"Check Rollbar for new critical or error-level items in the last hour. If any new items appeared, summarize them and alert me.\"","type":"text"}]}]},{"type":"paragraph","content":[{"text":"Recommended schedule: every 30–60 minutes during work hours.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Notes","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"All output is JSON for easy parsing.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"The ","type":"text"},{"text":"top","type":"text","marks":[{"type":"code_inline"}]},{"text":" command sorts active items by occurrence count — useful for daily triage.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Token values in ","type":"text"},{"text":"project-tokens","type":"text","marks":[{"type":"code_inline"}]},{"text":" output are truncated for safety; full values are only returned on creation.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Rollbar API docs: https://docs.rollbar.com/reference","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}}]},"metadata":{"date":"2026-06-05","name":"rollbar","author":"@skillopedia","source":{"stars":0,"repo_name":"rollbar-openclaw-skill","origin_url":"https://github.com/vittor1o/rollbar-openclaw-skill/blob/HEAD/SKILL.md","repo_owner":"vittor1o","body_sha256":"e4f10f24072b5c1f9541a725a0cdd4888a98cb2b24627654750b8cca1959a5fb","cluster_key":"5795c1e82b5a964fe9092b2bcd9c0cfadcf9d7d2027472eccb5df62170997425","clean_bundle":{"format":"clean-skill-bundle-v1","source":"vittor1o/rollbar-openclaw-skill/SKILL.md","attachments":[{"id":"c7f76721-d201-5416-a75f-f97dc8f9ad8f","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/c7f76721-d201-5416-a75f-f97dc8f9ad8f/attachment","path":".gitignore","size":13,"sha256":"3b34c82857ca291b8b45222d0ca0c6314908eeaef17fe3f9fde1bde15d4c5515","contentType":"text/plain; charset=utf-8"},{"id":"203a5b45-105e-598b-b119-26e8640d4737","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/203a5b45-105e-598b-b119-26e8640d4737/attachment.md","path":"README.md","size":2336,"sha256":"8235f6f35c67839138ef95a6ca229b63fdd149d5bed4b50e61a989bfad412a64","contentType":"text/markdown; charset=utf-8"},{"id":"13a7f812-6330-59dc-afeb-58ae816e6668","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/13a7f812-6330-59dc-afeb-58ae816e6668/attachment.sh","path":"rollbar.sh","size":16912,"sha256":"b43bbb950d04449b7695b1fd6f3579329cd39b60dcdbdca411a53f0fdecc4880","contentType":"application/x-sh; charset=utf-8"}],"bundle_sha256":"5aeb2eaa492b5caee0b04f6885bc4f435e194e781b68fb10768a5bf990b1de06","attachment_count":3,"text_attachments":2,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":1,"excluded_attachments":[]},"cluster_size":1,"skill_md_path":"SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"devops-infrastructure","category_label":"DevOps"},"exact_dupes_collapsed_into_this":0},"version":"v1","category":"devops-infrastructure","homepage":"https://github.com/vittor1o/rollbar-openclaw-skill","metadata":{"openclaw":{"emoji":"🐛","safety":{"interlock":"--yes or --dry-run required for state-changing commands","destructive_commands":["resolve","mute","activate","project-token-create","project-token-update"]},"requires":{"bins":["curl","python3"]},"permissions":{"env":{"read":["ROLLBAR_ACCESS_TOKEN","ROLLBAR_CONFIG_FILE"]},"files":{"read":[".rollbar-mcp.json","secrets/rollbar",".env"],"write":[".rollbar-mcp.json"]},"shell":"exec","network":{"outbound":["https://api.rollbar.com"]}}}},"import_tag":"clean-skills-v1","description":"Monitor and manage Rollbar error tracking. List recent items, get item details, resolve/mute issues, track deployments, and manage project access tokens via the Rollbar API."}},"renderedAt":1782982025071}

Rollbar Skill Monitor and manage Rollbar errors directly from OpenClaw. Setup The script resolves your Rollbar token from the first matching source: | Priority | Method | How | |---|---|---| | 1 | | One-line file in your agent workspace containing the token | | 2 | | MCP-compatible JSON config (cwd, , or ) | | 3 | | File in your agent workspace with | | 4 | | Environment variable (injected or shell) | MCP-Compatible Config (Recommended for multi-project setups) Create in your agent workspace: Use to select a specific project's token when running commands. Tip: Use to have the agent auto-creat…