[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71RH1VNAXTYYYV9DKV057A4":3,"skill-same:01M71RH1VNAXTYYYV9DKV057A4":104},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":59,"ownerHtmlUrl":60,"ownerBlogUrl":59,"ownerDescription":6,"updatedAt":61,"install":62,"resources":75},"01M71RH1VNAXTYYYV9DKV057A4","sigma-api",null,"Authenticate against the Sigma Computing REST API and obtain a bearer token. Use whenever the user wants to call the Sigma API directly with curl\u002FHTTP, exchange OAuth client credentials for an access token, sign in interactively via a browser OAuth login (authorization-code + PKCE), configure SIGMA_BASE_URL \u002F SIGMA_CLIENT_ID \u002F SIGMA_CLIENT_SECRET, troubleshoot 401\u002F403 responses, or pick the right Sigma API hostname for their cloud. Use as a prerequisite when another Sigma skill needs an SIGMA_API_TOKEN.","sigmacomputing\u002Fsigma-agent-skills","sigmacomputing","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F7460687?v=4","01M71RGQ6AE5S9T049REJ3K4TH","Sigma Computing","01M71RGQ6Z8DH62Q715RZDC6FA",23,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-api\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"sigma api","sigma","api","as","needs","responses","secret","when","for","login","URL","hostname","troubleshoot","token","pick","configure","access","credentials","browser","code","2026-11-10 13:02:02",false,"---\nname: sigma-api\ndescription: >-\n  Authenticate against the Sigma Computing REST API and obtain a bearer token.\n  Use whenever the user wants to call the Sigma API directly with curl\u002FHTTP,\n  exchange OAuth client credentials for an access token, sign in interactively\n  via a browser OAuth login (authorization-code + PKCE), configure\n  SIGMA_BASE_URL \u002F SIGMA_CLIENT_ID \u002F SIGMA_CLIENT_SECRET, troubleshoot 401\u002F403\n  responses, or pick the right Sigma API hostname for their cloud. Use as a\n  prerequisite when another Sigma skill needs an\n  SIGMA_API_TOKEN.\n---\n\n# Sigma REST API Authentication\n\nAuthenticate against the Sigma Computing REST API and obtain a bearer token. This skill is a prerequisite for any skill that calls the Sigma API directly with `curl`.\n\n`curl`, `jq`, and `base64` must be available. `curl` and `base64` ship with macOS and most Linux distros; `jq` usually does not — install with `brew install jq` (macOS) or `apt install jq` (Debian\u002FUbuntu).\n\n## Reference Index\n\n| File                                                                 | When to load                                                                                                                                                                                   |\n| -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [reference\u002Fbrowser-oauth-login.md](reference\u002Fbrowser-oauth-login.md) | The user wants an interactive browser sign-in (OAuth authorization-code + PKCE) instead of a client ID\u002Fsecret — the discovery-driven flow, code exchange, and encrypted refresh-token storage. |\n\n## Base URL Selection\n\nThe host depends on the user's Sigma cloud and region. Confirm with the user before exporting. The user can also look up their base URL in **Administration → Developer Access** in the Sigma app.\n\nThe authoritative list lives in the Sigma help docs: [Supported regions, data platforms, and features](https:\u002F\u002Fhelp.sigmacomputing.com\u002Fdocs\u002Fregion-warehouse-and-feature-support). Mirror below:\n\n| Cloud | Region                | Base URL                                  |\n| ----- | --------------------- | ----------------------------------------- |\n| AWS   | US West (Oregon)      | `https:\u002F\u002Faws-api.sigmacomputing.com`      |\n| AWS   | US East (N. Virginia) | `https:\u002F\u002Fapi.us-a.aws.sigmacomputing.com` |\n| AWS   | Canada (Central)      | `https:\u002F\u002Fapi.ca.aws.sigmacomputing.com`   |\n| AWS   | Europe (Frankfurt)    | `https:\u002F\u002Fapi.eu.aws.sigmacomputing.com`   |\n| AWS   | Asia Pacific (Sydney) | `https:\u002F\u002Fapi.au.aws.sigmacomputing.com`   |\n| AWS   | UK (London)           | `https:\u002F\u002Fapi.uk.aws.sigmacomputing.com`   |\n| Azure | US (Virginia)         | `https:\u002F\u002Fapi.us.azure.sigmacomputing.com` |\n| Azure | Europe (Netherlands)  | `https:\u002F\u002Fapi.eu.azure.sigmacomputing.com` |\n| Azure | Canada (Toronto)      | `https:\u002F\u002Fapi.ca.azure.sigmacomputing.com` |\n| Azure | UK (London)           | `https:\u002F\u002Fapi.uk.azure.sigmacomputing.com` |\n| Azure | Australia             | `https:\u002F\u002Fapi.au.azure.sigmacomputing.com` |\n| GCP   | US (Iowa)             | `https:\u002F\u002Fapi.sigmacomputing.com`          |\n| GCP   | Saudi Arabia (Dammam) | `https:\u002F\u002Fapi.sa.gcp.sigmacomputing.com`   |\n\n> `SIGMA_BASE_URL` is the **API host**, not the app URL — `https:\u002F\u002Faws-api.sigmacomputing.com`, not `https:\u002F\u002Fapp.sigmacomputing.com`.\n\n## Step 1 — Set Credentials\n\nWhere to find credentials: Sigma admin settings → Administration → APIs and Tokens (also surfaced as Developer Access → API credentials).\n\n```sh\nexport SIGMA_BASE_URL=\"https:\u002F\u002Faws-api.sigmacomputing.com\"  # adjust per cloud\nexport SIGMA_CLIENT_ID=\"your-client-id\"\nexport SIGMA_CLIENT_SECRET=\"your-client-secret\"\n```\n\n## Step 2 — Exchange Credentials for a Bearer Token\n\nThere are **two independent ways** to obtain a token — use whichever suits you, and switch between them freely:\n\n- **Client credentials** (this section) — an admin provisions a client ID\u002Fsecret up front; the right fit for headless or automated use.\n- **[Interactive browser login](#alternative-interactive-browser-login)** — sign in through the browser with no pre-issued credentials; the right fit when a human is at the keyboard.\n\nEither way the token is short-lived (~1 hour TTL). The client-credentials grant (this section) uses OAuth 2.0 with HTTP Basic auth on the token endpoint.\n\n### Client credentials: bundled helper script\n\n`scripts\u002Fget-token.sh` reads the three env vars, fails loudly on missing inputs or non-2xx responses, and prints a single `export SIGMA_API_TOKEN=...` line. `eval` it to load the token into the current shell:\n\n- **Claude Code:** `eval \"$(${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fsigma-api\u002Fscripts\u002Fget-token.sh)\"`\n- **Cursor \u002F Codex \u002F generic:** `eval \"$(bash \u003Crepo-root>\u002Fskills\u002Fsigma-api\u002Fscripts\u002Fget-token.sh)\"`\n\nThe script's interface:\n\n| In (env)                                                   | Out (stdout)                                |\n| ---------------------------------------------------------- | ------------------------------------------- |\n| `SIGMA_BASE_URL`, `SIGMA_CLIENT_ID`, `SIGMA_CLIENT_SECRET` | A single line: `export SIGMA_API_TOKEN=...` |\n\nNon-zero exit on missing env vars or token-exchange failure; error message goes to stderr.\n\n### Manual token exchange (inline fallback)\n\n```sh\nCREDENTIALS=$(printf '%s:%s' \"$SIGMA_CLIENT_ID\" \"$SIGMA_CLIENT_SECRET\" | base64)\n\nexport SIGMA_API_TOKEN=$(curl -sf -X POST \\\n  -H \"Authorization: Basic ${CREDENTIALS}\" \\\n  -H \"Content-Type: application\u002Fx-www-form-urlencoded\" \\\n  -d \"grant_type=client_credentials\" \\\n  \"$SIGMA_BASE_URL\u002Fv2\u002Fauth\u002Ftoken\" \\\n  | jq -r '.access_token')\n\n[ -z \"$SIGMA_API_TOKEN\" ] || [ \"$SIGMA_API_TOKEN\" = \"null\" ] && { echo \"Token exchange failed\" >&2; exit 1; }\n```\n\n### Alternative: interactive browser login\n\nPrefer signing in through a browser over provisioning a client ID\u002Fsecret? Sigma also supports an interactive **OAuth 2.1 authorization-code + PKCE** login — no pre-issued credentials, the client registers itself. It's the right fit when a human is at the keyboard; keep the client-credentials flow above for headless automation.\n\n`scripts\u002Fbrowser-login.sh` packages the whole flow: it reads `SIGMA_BASE_URL`, discovers the OAuth endpoints, opens your browser, reads back the pasted callback URL, exchanges the code, stores the refresh token in the OS keychain, and prints an `export SIGMA_API_TOKEN=…` line to `eval` — just like `get-token.sh`.\n\n- **Claude Code:** `eval \"$(${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fsigma-api\u002Fscripts\u002Fbrowser-login.sh)\"`\n- **Cursor \u002F Codex \u002F generic:** `eval \"$(bash \u003Crepo-root>\u002Fskills\u002Fsigma-api\u002Fscripts\u002Fbrowser-login.sh)\"`\n\nThe script picks a random high loopback port that nothing is currently listening on for its redirect URI, so the one-time authorization code is never delivered to another local process. Prompts go to stderr; only the `export` line reaches stdout.\n\nFull discovery-driven walkthrough (including the refresh-token storage the script performs) in **[reference\u002Fbrowser-oauth-login.md](reference\u002Fbrowser-oauth-login.md)** — read it to understand or customize what the script does.\n\n#### Reusing a browser login headlessly\n\nAfter `browser-login.sh` has run once, `scripts\u002Frefresh-token.sh` mints a valid access token with no further browser interaction — the headless counterpart to `get-token.sh` for the browser flow. It serves a cached access token while it is still valid (~1h) and only redeems the stored refresh token when the cache is stale, rotating the stored refresh token when the server issues a new one.\n\n- **Claude Code:** `eval \"$(${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fsigma-api\u002Fscripts\u002Frefresh-token.sh)\"`\n- **Cursor \u002F Codex \u002F generic:** `eval \"$(bash \u003Crepo-root>\u002Fskills\u002Fsigma-api\u002Fscripts\u002Frefresh-token.sh)\"`\n\nRun it once per shell (or per phase of work) and reuse the exported `SIGMA_API_TOKEN` across calls; it is cheap to call repeatedly since a valid cache is served without a network round-trip. If it reports the refresh token is expired or revoked, run `browser-login.sh` again.\n\n## Shared paginated metadata helper\n\nAPI-dependent skills use `scripts\u002Flist-table-columns.sh \u003Ctable-inode-id>` to\nretrieve complete warehouse-table metadata. The underlying endpoint defaults\nto 50 columns; the helper requests 1,000 per page and follows the opaque\n`nextPageToken` as `pageToken` until it is absent.\n\n```bash\nbash scripts\u002Flist-table-columns.sh \"$INODE_ID\" |\n  jq '.entries[] | {name, type, visibility}'\n```\n\nNever conclude that a warehouse column is missing from only the first API\nresponse. The helper emits one object containing all `entries`, `pageCount`,\nand `totalCount`.\n\n## Step 3 — Verify the Token\n\n`GET \u002Fv2\u002Fwhoami` is the canonical sanity check that the token is valid and the base URL is correct — use it after each token exchange and any time a later call's response is suspect.\n\n```sh\ncurl -sf -H \"Authorization: Bearer $SIGMA_API_TOKEN\" \\\n  \"$SIGMA_BASE_URL\u002Fv2\u002Fwhoami\" | jq .\n```\n\nThe response includes `userId`, `organizationId`, and `accountType`.\n\n## Token Expiry\n\nTokens last about an hour. Re-`eval` the helper (or repeat the manual exchange) to refresh. For long-running sessions, it's fine to refresh at the top of each phase of work.\n\n## Interpreting HTTP Status Codes\n\n- **2xx.** Success.\n- **401 Unauthorized.** The token is missing, expired, or otherwise not accepted. Re-run the token exchange.\n- **403 Forbidden.** The credentials authenticated, but the caller isn't permitted to make this request.\n- **404 Not Found.** Wrong path, wrong `SIGMA_BASE_URL` for the user's cloud, or the resource doesn't exist.\n- **5xx.** Server-side error. Retry with backoff.\n\n## Security Notes\n\n- Never echo `$SIGMA_API_TOKEN`, `$SIGMA_CLIENT_SECRET`, or any other secret to logs the user can share.\n- Don't write secrets to files inside the workspace.\n- Treat the bearer token like a password — only pass it via the `Authorization` header, never on a query string.\n","# Sigma REST API Authentication\n\nAuthenticate against the Sigma Computing REST API and obtain a bearer token. This skill is a prerequisite for any skill that calls the Sigma API directly with `curl`.\n\n`curl`, `jq`, and `base64` must be available. `curl` and `base64` ship with macOS and most Linux distros; `jq` usually does not — install with `brew install jq` (macOS) or `apt install jq` (Debian\u002FUbuntu).\n\n## Reference Index\n\n| File                                                                 | When to load                                                                                                                                                                                   |\n| -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [reference\u002Fbrowser-oauth-login.md](reference\u002Fbrowser-oauth-login.md) | The user wants an interactive browser sign-in (OAuth authorization-code + PKCE) instead of a client ID\u002Fsecret — the discovery-driven flow, code exchange, and encrypted refresh-token storage. |\n\n## Base URL Selection\n\nThe host depends on the user's Sigma cloud and region. Confirm with the user before exporting. The user can also look up their base URL in **Administration → Developer Access** in the Sigma app.\n\nThe authoritative list lives in the Sigma help docs: [Supported regions, data platforms, and features](https:\u002F\u002Fhelp.sigmacomputing.com\u002Fdocs\u002Fregion-warehouse-and-feature-support). Mirror below:\n\n| Cloud | Region                | Base URL                                  |\n| ----- | --------------------- | ----------------------------------------- |\n| AWS   | US West (Oregon)      | `https:\u002F\u002Faws-api.sigmacomputing.com`      |\n| AWS   | US East (N. Virginia) | `https:\u002F\u002Fapi.us-a.aws.sigmacomputing.com` |\n| AWS   | Canada (Central)      | `https:\u002F\u002Fapi.ca.aws.sigmacomputing.com`   |\n| AWS   | Europe (Frankfurt)    | `https:\u002F\u002Fapi.eu.aws.sigmacomputing.com`   |\n| AWS   | Asia Pacific (Sydney) | `https:\u002F\u002Fapi.au.aws.sigmacomputing.com`   |\n| AWS   | UK (London)           | `https:\u002F\u002Fapi.uk.aws.sigmacomputing.com`   |\n| Azure | US (Virginia)         | `https:\u002F\u002Fapi.us.azure.sigmacomputing.com` |\n| Azure | Europe (Netherlands)  | `https:\u002F\u002Fapi.eu.azure.sigmacomputing.com` |\n| Azure | Canada (Toronto)      | `https:\u002F\u002Fapi.ca.azure.sigmacomputing.com` |\n| Azure | UK (London)           | `https:\u002F\u002Fapi.uk.azure.sigmacomputing.com` |\n| Azure | Australia             | `https:\u002F\u002Fapi.au.azure.sigmacomputing.com` |\n| GCP   | US (Iowa)             | `https:\u002F\u002Fapi.sigmacomputing.com`          |\n| GCP   | Saudi Arabia (Dammam) | `https:\u002F\u002Fapi.sa.gcp.sigmacomputing.com`   |\n\n> `SIGMA_BASE_URL` is the **API host**, not the app URL — `https:\u002F\u002Faws-api.sigmacomputing.com`, not `https:\u002F\u002Fapp.sigmacomputing.com`.\n\n## Step 1 — Set Credentials\n\nWhere to find credentials: Sigma admin settings → Administration → APIs and Tokens (also surfaced as Developer Access → API credentials).\n\n```sh\nexport SIGMA_BASE_URL=\"https:\u002F\u002Faws-api.sigmacomputing.com\"  # adjust per cloud\nexport SIGMA_CLIENT_ID=\"your-client-id\"\nexport SIGMA_CLIENT_SECRET=\"your-client-secret\"\n```\n\n## Step 2 — Exchange Credentials for a Bearer Token\n\nThere are **two independent ways** to obtain a token — use whichever suits you, and switch between them freely:\n\n- **Client credentials** (this section) — an admin provisions a client ID\u002Fsecret up front; the right fit for headless or automated use.\n- **[Interactive browser login](#alternative-interactive-browser-login)** — sign in through the browser with no pre-issued credentials; the right fit when a human is at the keyboard.\n\nEither way the token is short-lived (~1 hour TTL). The client-credentials grant (this section) uses OAuth 2.0 with HTTP Basic auth on the token endpoint.\n\n### Client credentials: bundled helper script\n\n`scripts\u002Fget-token.sh` reads the three env vars, fails loudly on missing inputs or non-2xx responses, and prints a single `export SIGMA_API_TOKEN=...` line. `eval` it to load the token into the current shell:\n\n- **Claude Code:** `eval \"$(${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fsigma-api\u002Fscripts\u002Fget-token.sh)\"`\n- **Cursor \u002F Codex \u002F generic:** `eval \"$(bash \u003Crepo-root>\u002Fskills\u002Fsigma-api\u002Fscripts\u002Fget-token.sh)\"`\n\nThe script's interface:\n\n| In (env)                                                   | Out (stdout)                                |\n| ---------------------------------------------------------- | ------------------------------------------- |\n| `SIGMA_BASE_URL`, `SIGMA_CLIENT_ID`, `SIGMA_CLIENT_SECRET` | A single line: `export SIGMA_API_TOKEN=...` |\n\nNon-zero exit on missing env vars or token-exchange failure; error message goes to stderr.\n\n### Manual token exchange (inline fallback)\n\n```sh\nCREDENTIALS=$(printf '%s:%s' \"$SIGMA_CLIENT_ID\" \"$SIGMA_CLIENT_SECRET\" | base64)\n\nexport SIGMA_API_TOKEN=$(curl -sf -X POST \\\n  -H \"Authorization: Basic ${CREDENTIALS}\" \\\n  -H \"Content-Type: application\u002Fx-www-form-urlencoded\" \\\n  -d \"grant_type=client_credentials\" \\\n  \"$SIGMA_BASE_URL\u002Fv2\u002Fauth\u002Ftoken\" \\\n  | jq -r '.access_token')\n\n[ -z \"$SIGMA_API_TOKEN\" ] || [ \"$SIGMA_API_TOKEN\" = \"null\" ] && { echo \"Token exchange failed\" >&2; exit 1; }\n```\n\n### Alternative: interactive browser login\n\nPrefer signing in through a browser over provisioning a client ID\u002Fsecret? Sigma also supports an interactive **OAuth 2.1 authorization-code + PKCE** login — no pre-issued credentials, the client registers itself. It's the right fit when a human is at the keyboard; keep the client-credentials flow above for headless automation.\n\n`scripts\u002Fbrowser-login.sh` packages the whole flow: it reads `SIGMA_BASE_URL`, discovers the OAuth endpoints, opens your browser, reads back the pasted callback URL, exchanges the code, stores the refresh token in the OS keychain, and prints an `export SIGMA_API_TOKEN=…` line to `eval` — just like `get-token.sh`.\n\n- **Claude Code:** `eval \"$(${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fsigma-api\u002Fscripts\u002Fbrowser-login.sh)\"`\n- **Cursor \u002F Codex \u002F generic:** `eval \"$(bash \u003Crepo-root>\u002Fskills\u002Fsigma-api\u002Fscripts\u002Fbrowser-login.sh)\"`\n\nThe script picks a random high loopback port that nothing is currently listening on for its redirect URI, so the one-time authorization code is never delivered to another local process. Prompts go to stderr; only the `export` line reaches stdout.\n\nFull discovery-driven walkthrough (including the refresh-token storage the script performs) in **[reference\u002Fbrowser-oauth-login.md](reference\u002Fbrowser-oauth-login.md)** — read it to understand or customize what the script does.\n\n#### Reusing a browser login headlessly\n\nAfter `browser-login.sh` has run once, `scripts\u002Frefresh-token.sh` mints a valid access token with no further browser interaction — the headless counterpart to `get-token.sh` for the browser flow. It serves a cached access token while it is still valid (~1h) and only redeems the stored refresh token when the cache is stale, rotating the stored refresh token when the server issues a new one.\n\n- **Claude Code:** `eval \"$(${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fsigma-api\u002Fscripts\u002Frefresh-token.sh)\"`\n- **Cursor \u002F Codex \u002F generic:** `eval \"$(bash \u003Crepo-root>\u002Fskills\u002Fsigma-api\u002Fscripts\u002Frefresh-token.sh)\"`\n\nRun it once per shell (or per phase of work) and reuse the exported `SIGMA_API_TOKEN` across calls; it is cheap to call repeatedly since a valid cache is served without a network round-trip. If it reports the refresh token is expired or revoked, run `browser-login.sh` again.\n\n## Shared paginated metadata helper\n\nAPI-dependent skills use `scripts\u002Flist-table-columns.sh \u003Ctable-inode-id>` to\nretrieve complete warehouse-table metadata. The underlying endpoint defaults\nto 50 columns; the helper requests 1,000 per page and follows the opaque\n`nextPageToken` as `pageToken` until it is absent.\n\n```bash\nbash scripts\u002Flist-table-columns.sh \"$INODE_ID\" |\n  jq '.entries[] | {name, type, visibility}'\n```\n\nNever conclude that a warehouse column is missing from only the first API\nresponse. The helper emits one object containing all `entries`, `pageCount`,\nand `totalCount`.\n\n## Step 3 — Verify the Token\n\n`GET \u002Fv2\u002Fwhoami` is the canonical sanity check that the token is valid and the base URL is correct — use it after each token exchange and any time a later call's response is suspect.\n\n```sh\ncurl -sf -H \"Authorization: Bearer $SIGMA_API_TOKEN\" \\\n  \"$SIGMA_BASE_URL\u002Fv2\u002Fwhoami\" | jq .\n```\n\nThe response includes `userId`, `organizationId`, and `accountType`.\n\n## Token Expiry\n\nTokens last about an hour. Re-`eval` the helper (or repeat the manual exchange) to refresh. For long-running sessions, it's fine to refresh at the top of each phase of work.\n\n## Interpreting HTTP Status Codes\n\n- **2xx.** Success.\n- **401 Unauthorized.** The token is missing, expired, or otherwise not accepted. Re-run the token exchange.\n- **403 Forbidden.** The credentials authenticated, but the caller isn't permitted to make this request.\n- **404 Not Found.** Wrong path, wrong `SIGMA_BASE_URL` for the user's cloud, or the resource doesn't exist.\n- **5xx.** Server-side error. Retry with backoff.\n\n## Security Notes\n\n- Never echo `$SIGMA_API_TOKEN`, `$SIGMA_CLIENT_SECRET`, or any other secret to logs the user can share.\n- Don't write secrets to files inside the workspace.\n- Treat the bearer token like a password — only pass it via the `Authorization` header, never on a query string.\n",{"name":5,"description":7},"main","234c4c30e9d45319a33d2ef1a26cc89ad10aeb2a","skills\u002Fsigma-api",8,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills","https:\u002F\u002Fsigmacomputing.com","https:\u002F\u002Fgithub.com\u002Fsigmacomputing","2026-11-10 04:54:22",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add sigmacomputing\u002Fsigma-agent-skills --skill sigma-api",{"tool":68,"command":69},"bunx","bunx skills add sigmacomputing\u002Fsigma-agent-skills --skill sigma-api",{"tool":71,"command":72},"pnpm","pnpm dlx skills add sigmacomputing\u002Fsigma-agent-skills --skill sigma-api","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-api\u002FSKILL.md",true,[76,82,88,92,96,100],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"reference\u002Fbrowser-oauth-login.md","REFERENCE","参考文档",7288,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-api\u002Freference\u002Fbrowser-oauth-login.md",{"path":83,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":86,"sourceHtmlUrl":87},"scripts\u002Fbrowser-login.sh","SCRIPT","脚本",14399,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-api\u002Fscripts\u002Fbrowser-login.sh",{"path":89,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":90,"sourceHtmlUrl":91},"scripts\u002Fget-token.sh",2809,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-api\u002Fscripts\u002Fget-token.sh",{"path":93,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":94,"sourceHtmlUrl":95},"scripts\u002Flist-table-columns.sh",2870,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-api\u002Fscripts\u002Flist-table-columns.sh",{"path":97,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":98,"sourceHtmlUrl":99},"scripts\u002Frefresh-token.sh",4662,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-api\u002Fscripts\u002Frefresh-token.sh",{"path":101,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":102,"sourceHtmlUrl":103},"scripts\u002Ftest-list-table-columns.rb",3295,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-api\u002Fscripts\u002Ftest-list-table-columns.rb",[105,132,158,181,201,206],{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":114,"publishedAt":49},"01M71RHSZVP0RQSQHX92K459NP","sigma-workbooks","Build, edit, and iterate on Sigma workbook specs — the JSON definition you send as `contents` in a POST to \u002Fv2\u002Fworkbooks, covering pages, layout, controls, charts, KPIs, tables, formulas, and sources. The Sigma OpenAPI is the source of truth for every shape and field; this skill adds navigation, style guidance, and proven recipes for effective dashboards and operational apps. Use when the user wants to construct a dashboard from a spec, generate a Sigma app (planning, approval, allocation, or exception), reproduce a screenshot\u002Fmockup\u002FClaude design artifact as a native Sigma app, add or modify pages \u002F elements \u002F controls \u002F formulas, validate a spec before submission, or work through the workbook spec lifecycle programmatically. Requires an SIGMA_API_TOKEN — obtain via the sigma-api skill first.","https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-workbooks\u002FSKILL.md",[111],{"categoryNo":112,"categoryName":113,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[115,30,116,117,118,119,37,120,121,122,123,124,125,126,32,127,128,129,130,131],"sigma workbooks","apps","modify","send","definition","allocation","tables","formulas","you","design","recipes","app","artifact","edit","Charts","screenshot","generate",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":142,"publishedAt":49},"01M71RHDYSG56QM7R693SGWG8V","sigma-reports","Build, validate, retrieve, and safely update Sigma report code representations through \u002Fv2\u002Freports. Use for fixed-layout or pixel-perfect reports, executive board packets, wide operational tables, invoices, statements, regulatory documents, and PDF delivery. Covers reusable report scaffolds, report pages, absolute pixel layout, header\u002Ffooter panels, common elements, verification, full-contents replacement, and workbook conversion to reports. Do not use for responsive dashboards; use sigma-workbooks instead. Requires SIGMA_API_TOKEN from the sigma-api skill.","https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-reports\u002FSKILL.md",[138,141],{"categoryNo":139,"categoryName":140,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[143,144,30,145,146,147,31,148,149,150,42,151,152,153,48,121,154,155,156,157],"sigma reports","reports","dashboards","common","conversion","pixel","delivery","full","responsive","layout","panels","verification","update","documents","PDF",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":167,"publishedAt":49},"01M71RH9RGX6RKXJW8E0ENZJFJ","sigma-data-models","Create, retrieve, or modify a Sigma data model spec (the JSON\u002FYAML semantic-layer definition with sources, columns, metrics, relationships, filters, controls, folder groupings, and column-level security) by calling the Sigma REST API directly. Use when the user wants to author a new data model from a description, export\u002Finspect\u002Fdownload an existing model's spec, edit columns or metrics, change a model's source, add relationships or row-level filters, or otherwise round-trip a data model through code. Requires an SIGMA_API_TOKEN — obtain via the sigma-api skill first.","https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-data-models\u002FSKILL.md",[164],{"categoryNo":165,"categoryName":166,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000033","数据分析师",[168,169,30,170,48,171,172,173,174,36,119,175,176,177,42,178,179,128,180,31],"sigma data models","models","data","create","change","inspect","new","layer","columns","sources","filters","export","model",{"skillNo":182,"name":183,"nameZh":6,"description":184,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":185,"categories":186,"keywords":187,"publishedAt":49},"01M71RH5K6VDAA8JKAEJC640K9","sigma-cli","Drive the full Sigma Computing REST API surface from the local `sigma` binary (Sigma CLI) and its OpenAPI-generated command tree. Use whenever the user wants to call any Sigma endpoint from the command line, needs a uniform `--params` \u002F `--json` shape across resources, wants to install or configure the CLI, or asks about `sigma api …`, `sigma auth login`, `list-prefixes`, or `schema`. Prefer this skill over raw `curl` when the user has the `sigma` binary installed; fall back to `sigma-api` for OAuth fundamentals and direct HTTP.","https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-cli\u002FSKILL.md",[],[188,30,189,190,44,191,33,36,38,31,192,150,193,194,195,196,197,198,199,200],"sigma cli","cli","resources","direct","line","local","across","back","install","generated","list","auth","command",{"skillNo":202,"name":107,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":203,"categories":204,"keywords":205,"publishedAt":49},"01M71RGZTNJ2YQJTZ57BARBYM6","https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002F.cortex\u002Fskills\u002Fsigma-workbooks\u002FSKILL.md",[],[30,115],{"skillNo":207,"name":134,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":208,"categories":209,"keywords":210,"publishedAt":49},"01M71RGY6ZWV700RA2XCJDK912","https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002F.cortex\u002Fskills\u002Fsigma-reports\u002FSKILL.md",[],[144,30,143]]