[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71RHDYSG56QM7R693SGWG8V":3,"skill-same:01M71RHDYSG56QM7R693SGWG8V":144},{"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},"01M71RHDYSG56QM7R693SGWG8V","sigma-reports",null,"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.","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-reports\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理","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],"reports","sigma reports","sigma","pixel","documents","tables","panels","layout","responsive","token","full","delivery","code","PDF","conversion","common","dashboards","api","update","verification","2026-11-10 13:02:02",false,"---\nname: sigma-reports\ndescription: >-\n  Build, validate, retrieve, and safely update Sigma report code\n  representations through \u002Fv2\u002Freports. Use for fixed-layout or\n  pixel-perfect reports, executive board packets, wide operational tables,\n  invoices, statements, regulatory documents, and PDF delivery. Covers\n  reusable report scaffolds, report pages, absolute pixel layout,\n  header\u002Ffooter panels, common elements, verification, full-contents\n  replacement, and workbook conversion to reports. Do not use for responsive dashboards; use\n  sigma-workbooks instead. Requires SIGMA_API_TOKEN from the sigma-api skill.\n---\n\n# Sigma Reports (Code Representation via REST API)\n\nUse this skill for Sigma **reports**, the fixed-page authoring surface exposed\nby `\u002Fv2\u002Freports`. Reports are a private-beta resource. They share common\nelement shapes with workbooks but have a different resource lifecycle and a\ndifferent layout language.\n\n## Choose the correct resource\n\nUse a report for invoices, statements, regulatory packets, printable forms,\nbranded documents, and other outputs whose physical page size matters. Use\n`sigma-workbooks` for responsive dashboards, exploratory analysis, application\nworkflows, containers, tabs, modals, drawers, or workbook navigation.\n\nNever create a report by sending `kind: report` to a workbook endpoint. The\nresource families are separate:\n\n- Reports: `POST \u002Fv2\u002Freports`, `GET \u002Fv2\u002Freports\u002F{reportId}?includeContents=true`, `PUT \u002Fv2\u002Freports\u002F{reportId}\u002Fcontents`\n- Workbooks: `POST \u002Fv2\u002Fworkbooks`, `GET \u002Fv2\u002Fworkbooks\u002F{workbookId}?includeContents=true`, `PUT \u002Fv2\u002Fworkbooks\u002F{workbookId}\u002Fcontents`\n- Conversion: `\u002Fv2\u002Fworkbooks\u002F{workbookId}\u002FconvertToReport`\n\n## Source of truth\n\nUse the current compiled OpenAPI for endpoint envelopes and published shapes:\n\n```\nhttps:\u002F\u002Fassets.sigmacomputing.com\u002Fopenapi\u002Fpublic-rest-api\u002Fsigma-computing-public-rest-api.json\n```\n\nThe report endpoints currently declare `application\u002Fjson` only. Author JSON\nunless a live request proves another media type works. The schema is broader\nthan the documented report contract, so a published element kind is not proof\nthat reports can safely author it. Read\n`reference\u002Fspecification\u002Fsupport-matrix.md` before selecting elements.\n\nLive baseline, verified 2026-08-11: a JSON report with a warehouse-table\nsource, text, KPI, combo-chart, bar-chart, grouped presentation table, data\nbars, a hidden dependency page, and header\u002Ffooter panels passed a `dryRun: true`\ndry run, created successfully, survived GET readback, updated as a new document version,\nand exported as a one-page landscape PDF with populated data. The support\nmatrix records which findings this proves and which schema-published features\nremain gated.\n\nExpanded baseline, verified from a populated five-page PDF on 2026-09-19:\ncustom-SQL sources on a hidden data page, comparative KPI scorecards, inline\nSVG hero\u002Fband images, themed multi-page output, conditional tables, and a\ncolumn-backed `waterfall-chart` all rendered successfully. This evidence\nsupersedes the earlier policy that rejected waterfall charts and treated\nreport settings as unproven.\n\nShared-shape refresh, verified 2026-09-15 against the compiled OpenAPI and a\nnon-persistent `dryRun: true` request: common element pointers now use\n`{columnId: ...}`, pivot shelves use `{columnId: ...}`, and\n`seriesLineAreaStyle` is a list of `{columnId, style}` objects. Text\u002FKPI\nalignment uses directional values (`left`\u002F`center`\u002F`right` and\n`top`\u002F`center`\u002F`bottom`), not `start`\u002F`middle`\u002F`end`. The old pointer, map, and\nalignment forms returned HTTP 400 while the replacement forms verified\n`valid:true`. Report PUT also publishes optional `documentVersion` for\noptimistic concurrency.\n\nWhen documentation, this skill, and a live verify\u002Freadback disagree, prefer\nthe live result and preserve the evidence.\n\n## Prerequisites and safety\n\n1. Authenticate with the `sigma-api` skill. Set `SIGMA_BASE_URL` and\n   `SIGMA_API_TOKEN`.\n2. Confirm reports are enabled for the organization and the caller has\n   **Create, edit, and publish reports** permission. Updating also requires\n   **Can edit** access to the report.\n3. Treat every create as persistent. The current OpenAPI exposes no report\n   DELETE endpoint. Do not create a probe report without explicit user\n   approval and a named destination folder.\n4. Treat PUT as full-contents replacement, and remember it's **contents-only**\n   — `name`, `folderId`, or `description` sent alongside `contents` are\n   silently ignored, not applied. Always GET, back up, compare, edit,\n   validate, verify, PUT with the retrieved `documentVersion`, and read back.\n5. A report GET can omit unsupported UI-authored features. Never assume a GET\n   representation is lossless merely because the request succeeded.\n\n## Recommended workflow\n\n### Step 1: Discover identity and folder; use references only when needed\n\n```bash\ncurl -sf -H \"Authorization: Bearer $SIGMA_API_TOKEN\" \\\n  \"$SIGMA_BASE_URL\u002Fv2\u002Fwhoami\" > \u002Ftmp\u002Fwhoami.json\n```\n\nDo not browse arbitrary reports. If the OpenAPI, scaffolds, and references do\nnot answer a specific shape question, list reports once, choose one relevant\nreference, cache its spec, and use it only for that question. Obtain the\ncurrent `schemaVersion` from a relevant report GET or a user-provided target;\ndo not hardcode the value shown in examples.\n\n```bash\n# List once; pick one relevant reference.\ncurl -sf -H \"Authorization: Bearer $SIGMA_API_TOKEN\" \\\n  \"$SIGMA_BASE_URL\u002Fv2\u002Freports?limit=25\" | jq '.entries[] | {reportId, name, path}'\n\n# Cache its spec and read the current schemaVersion.\ncurl -sf -H \"Authorization: Bearer $SIGMA_API_TOKEN\" -H \"Accept: application\u002Fjson\" \\\n  \"$SIGMA_BASE_URL\u002Fv2\u002Freports\u002F\u003Creference-report-id>?includeContents=true\" \\\n  > \u002Ftmp\u002Freference-report.json\njq '.contents.schemaVersion' \u002Ftmp\u002Freference-report.json\n```\n\nLoad `reference\u002Fworkflows\u002Fdiscover.md` and resolve the report's source,\nall paginated columns, grain, period rules, and page-slice counts before\ndrafting. The raw table-columns endpoint returns only 50 entries by default.\n\n### Step 2: Classify and scaffold the report\n\nLoad `reference\u002Fworkflows\u002Fgenerate.md`. Classify the request as an executive\u002F\nboard report, wide operational table, or statement. Generate a complete local\nstarting point instead of drafting raw JSON from nothing:\n\n```bash\nruby scripts\u002Fscaffold-report.rb \\\n  --template board \\\n  --name \"Quarterly Business Review\" \\\n  --folder-id \"\u003Cfolder-id>\" \\\n  --connection-id \"\u003Cconnection-id>\" \\\n  --company \"ACME\" \\\n  --output \u002Ftmp\u002Freport-spec.json\n```\n\nUse `--template wide-table` for multi-page tabloid-landscape tables. Replace\nthe synthetic SQL\u002Fdata labels while retaining the proven geometry, panels,\nhidden data page, and explicit column contracts.\n\n### Step 3: Load the relevant references\n\nAlways read:\n\n- `reference\u002Fspecification\u002Fschema.md`\n- `reference\u002Fspecification\u002Flayout.md`\n- `reference\u002Fspecification\u002Fsupport-matrix.md`\n- `reference\u002Fworkflows\u002Fdiscover.md`\n- `reference\u002Fworkflows\u002Fvalidate.md`\n\nAlso read `reference\u002Fworkflows\u002Fcrud.md` before an API write and\n`reference\u002Fworkflows\u002Fconvert.md` before converting a workbook.\n\nCommon element internals, source formulas, and column shapes are published in\nthe same OpenAPI union used by workbooks. If `sigma-workbooks` is installed,\nits table, chart, map, KPI, control, source, formula, and formatting references\nare useful shape recipes. Apply only kinds allowed by the report support\nmatrix, and never copy workbook grid layout or workbook-only elements.\n\nFor shared shapes changed by the released code contract:\n\n- use `columnId`, never `id`, in map channels and pivot\n  `rowsBy`\u002F`columnsBy` shelf entries;\n- emit `seriesLineAreaStyle` and theme `colorOverrides` as lists, not\n  ID\u002Fname-keyed maps;\n- use `verticalAlign: top|center|bottom`;\n- use KPI `layout.anchor: left|center|right` and\n  `layout.verticalAnchor: top|center|bottom`;\n- wrap page background URLs as\n  `backgroundImage: {source: {kind: url, url: ...}, style: ...}`;\n- use `settings.theme.{name,overrides}`, not the removed contents-level\n  `themeName`\u002F`themeOverrides`.\n\n### Step 4: Draft the wrapped JSON representation\n\nStart with `reference\u002Fspecification\u002Fexample-minimal.json`. The create and\nverify envelope is:\n\n```json\n{\n  \"name\": \"Monthly Statement\",\n  \"folderId\": \"\u003Cfolder-id>\",\n  \"contents\": {\n    \"schemaVersion\": 1,\n    \"kind\": \"report\",\n    \"config\": {\"pageWidth\": 816, \"pageHeight\": 1056, \"margin\": 48},\n    \"elements\": [],\n    \"pages\": [{\"id\": \"page-1\", \"name\": \"Page 1\"}],\n    \"layout\": \"\u003CPage id=\\\"page-1\\\">\u003C\u002FPage>\"\n  }\n}\n```\n\nRules:\n\n- Keep literal elements in flat `contents.elements`.\n- Keep pages and panels as metadata; never nest `elements` inside them.\n- Put all placement in `contents.layout` XML.\n- Place leaves with absolute `x`, `y`, `width`, and `height` pixel values.\n- Use report panels only for `header` and `footer` regions.\n- Do not emit workbook `gridColumn`, `gridRow`, container, tab, overlay, or\n  sidebar syntax.\n- Compute horizontal positions from widths + gaps and vertical positions from\n  a y-cursor. Never rely on unrelated magic-number offsets.\n- Put reusable SQL\u002Fdata-model sources on a hidden data page and declare every\n  custom-SQL alias through `[Custom SQL\u002F\u003Calias>]`.\n- For wide multi-page output, clone the visible table per page and filter each\n  clone with an explicit page-slice key; do not rely on one tall table flowing\n  without inspection.\n\n### Step 5: Validate locally\n\n```bash\nruby scripts\u002Fvalidate-spec.rb --mode create \u002Ftmp\u002Freport-spec.json\n```\n\nFix every error. The validator catches pointer casing\u002Ftargets, grouped-table\nmistakes, SQL contracts, overlaps, geometry, and representation shape.\nWarnings identify schema-only\u002Funknown capabilities or visible detail columns\nthat need a deliberate decision.\n\n### Step 6: Verify without persistence\n\nAdd `\"dryRun\": true` to the request body (`contents` is required when\n`dryRun` is true — a 400 results otherwise), then POST to the same create\nendpoint:\n\n```bash\ncurl -sf -X POST \\\n  -H \"Authorization: Bearer $SIGMA_API_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Accept: application\u002Fjson\" \\\n  --data-binary @\u002Ftmp\u002Freport-spec-dry-run.json \\\n  \"$SIGMA_BASE_URL\u002Fv2\u002Freports\" \\\n  > \u002Ftmp\u002Freport-verify.json\n```\n\nA valid spec returns either bare metadata (no `valid` key) or `{\"valid\":\ntrue, \"warnings\": [...]}`; an invalid one returns `{\"valid\": false, \"errors\":\n[{\"summary\": ...}], \"warnings\": [...]}`. Verification checks server-side\nrepresentation and dependencies without creating a report. It does not prove\nthe PDF layout is correct or that GET will round-trip every UI feature.\n\n### Step 7: Create only with explicit approval\n\nAfter the user approves the persistent write and destination folder:\n\n```bash\ncurl -sf -X POST \\\n  -H \"Authorization: Bearer $SIGMA_API_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Accept: application\u002Fjson\" \\\n  --data-binary @\u002Ftmp\u002Freport-spec.json \\\n  \"$SIGMA_BASE_URL\u002Fv2\u002Freports\" \\\n  > \u002Ftmp\u002Freport-create.json\n```\n\nSave the submitted representation under a report-ID-specific path. Report the\nreport URL, ID, and saved path.\n\n### Step 8: Read back and inspect output\n\nImmediately GET the representation and compare normalized documents. Confirm\nthat optional fields survived and that no element, panel, page, or setting was\nsilently dropped. Then export the affected pages to PDF and inspect the actual\npage breaks, clipping, typography, header\u002Ffooter repetition, and margins.\n\n```bash\nruby scripts\u002Fverify-report.rb \"\u003Creport-id>\"\nruby scripts\u002Frender-report.rb \"\u003Creport-id>\" \u002Ftmp\u002Freport-render --layout portrait\n```\n\nRead every generated `page-N.png`. For dense tables, verify the final visible\nrow and each subtotal; for board reports, verify the narrative hierarchy,\nKPI labels\u002Fdeltas, chart axes, bridge start\u002Fend totals, and negative colors.\n\nDo not claim parity from a successful POST or PUT alone.\n\n### Step 9: Update with a loss check\n\nFollow `reference\u002Fworkflows\u002Fcrud.md`. The short version is:\n\n1. GET and back up the current report representation\n   (`GET \u002Fv2\u002Freports\u002F{id}?includeContents=true`).\n2. Inventory the report with `GET \u002Fv2\u002Freports\u002F{id}\u002Fpages`, `\u002Felements`, and\n   `\u002Fcontrols` (commands in `reference\u002Fworkflows\u002Fcrud.md`).\n3. Stop if the inventory contains content absent from the GET representation.\n4. Edit the complete `contents`.\n5. Validate in `--mode update` and dry-run it with `POST \u002Fv2\u002Freports` +\n   `dryRun: true`, assembled from the current name\u002Ffolder and edited `contents`.\n6. PUT `{\"contents\": {...}, \"documentVersion\": \u003Cversion-from-GET>}` to\n   `PUT \u002Fv2\u002Freports\u002F{id}\u002Fcontents`. The version is optional in OpenAPI but\n   strongly recommended so a concurrent edit fails instead of being\n   overwritten. Sending `name`\u002F`folderId`\u002F`description` here is silently\n   ignored — this endpoint only ever touches `contents`.\n7. GET again, compare, export, and inspect.\n\n## Reference index\n\n| File | Load when |\n|---|---|\n| `reference\u002Fspecification\u002Fschema.md` | Always. Wrapped envelope, contents fields, pages, panels, response metadata. |\n| `reference\u002Fspecification\u002Flayout.md` | Always. Pixel XML, bounds, page and panel placement. |\n| `reference\u002Fspecification\u002Fsupport-matrix.md` | Always. Safe, gated, unsupported, and workbook-only kinds. |\n| `reference\u002Fspecification\u002Fexample-minimal.json` | Starting a new report representation. |\n| `reference\u002Fworkflows\u002Fdiscover.md` | Finding sources\u002Fcolumns, proving grain, resolving periods, and sizing page slices. |\n| `reference\u002Fworkflows\u002Fgenerate.md` | Generating executive\u002Fboard reports, statements, or wide multi-page operational tables. |\n| `reference\u002Fworkflows\u002Fcrud.md` | Creating, retrieving, or replacing a report's contents. |\n| `reference\u002Fworkflows\u002Fvalidate.md` | Before every verify, POST, or PUT and after readback. |\n| `reference\u002Fworkflows\u002Fconvert.md` | Converting an existing workbook into a report. |\n\n## Troubleshooting\n\n| Symptom | Action |\n|---|---|\n| `unknown field`, `unexpected property`, or missing field | Compare the endpoint against the compiled OpenAPI and rerun the contract test. |\n| `Invalid kind` after adding a channel or shelf | Replace legacy `{id: ...}` with `{columnId: ...}` and check list-vs-map fields. |\n| A field or element disappears on GET | Treat the representation as lossy; do not PUT until the omitted feature is removed intentionally or preserved another way. |\n| Content overlaps or clips | Check pixel bounds, page dimensions, margins, and repeated panel height; inspect a PDF export. |\n| A wide table clips or loses its final rows | Split it into explicit page-filtered table clones, budget row height, and inspect every rendered page. |\n| `columnID`, `{id: ...}`, or an unknown column pointer appears | Use exact `columnId` and a column ID declared on the owning element; run the local validator before verify. |\n| A custom-SQL source renders unknown columns | Quote aliases in SQL and declare each with `[Custom SQL\u002F\u003Cexact alias>]`. |\n| A workbook grid attribute appears in report XML | Replace it with absolute `x`, `y`, `width`, and `height`. |\n| `progress` or synced control is requested | Stop or redesign; the published schema is not a safe report-authoring guarantee. `waterfall-chart` is supported using the proven shape in the board scaffold. |\n| Conversion succeeds with warnings | Review every warning and its element IDs before accepting the generated report. |\n\nReports are private beta. Prefer explicit evidence and reversible local edits\nover speculative API writes.\n","# Sigma Reports (Code Representation via REST API)\n\nUse this skill for Sigma **reports**, the fixed-page authoring surface exposed\nby `\u002Fv2\u002Freports`. Reports are a private-beta resource. They share common\nelement shapes with workbooks but have a different resource lifecycle and a\ndifferent layout language.\n\n## Choose the correct resource\n\nUse a report for invoices, statements, regulatory packets, printable forms,\nbranded documents, and other outputs whose physical page size matters. Use\n`sigma-workbooks` for responsive dashboards, exploratory analysis, application\nworkflows, containers, tabs, modals, drawers, or workbook navigation.\n\nNever create a report by sending `kind: report` to a workbook endpoint. The\nresource families are separate:\n\n- Reports: `POST \u002Fv2\u002Freports`, `GET \u002Fv2\u002Freports\u002F{reportId}?includeContents=true`, `PUT \u002Fv2\u002Freports\u002F{reportId}\u002Fcontents`\n- Workbooks: `POST \u002Fv2\u002Fworkbooks`, `GET \u002Fv2\u002Fworkbooks\u002F{workbookId}?includeContents=true`, `PUT \u002Fv2\u002Fworkbooks\u002F{workbookId}\u002Fcontents`\n- Conversion: `\u002Fv2\u002Fworkbooks\u002F{workbookId}\u002FconvertToReport`\n\n## Source of truth\n\nUse the current compiled OpenAPI for endpoint envelopes and published shapes:\n\n```\nhttps:\u002F\u002Fassets.sigmacomputing.com\u002Fopenapi\u002Fpublic-rest-api\u002Fsigma-computing-public-rest-api.json\n```\n\nThe report endpoints currently declare `application\u002Fjson` only. Author JSON\nunless a live request proves another media type works. The schema is broader\nthan the documented report contract, so a published element kind is not proof\nthat reports can safely author it. Read\n`reference\u002Fspecification\u002Fsupport-matrix.md` before selecting elements.\n\nLive baseline, verified 2026-08-11: a JSON report with a warehouse-table\nsource, text, KPI, combo-chart, bar-chart, grouped presentation table, data\nbars, a hidden dependency page, and header\u002Ffooter panels passed a `dryRun: true`\ndry run, created successfully, survived GET readback, updated as a new document version,\nand exported as a one-page landscape PDF with populated data. The support\nmatrix records which findings this proves and which schema-published features\nremain gated.\n\nExpanded baseline, verified from a populated five-page PDF on 2026-09-19:\ncustom-SQL sources on a hidden data page, comparative KPI scorecards, inline\nSVG hero\u002Fband images, themed multi-page output, conditional tables, and a\ncolumn-backed `waterfall-chart` all rendered successfully. This evidence\nsupersedes the earlier policy that rejected waterfall charts and treated\nreport settings as unproven.\n\nShared-shape refresh, verified 2026-09-15 against the compiled OpenAPI and a\nnon-persistent `dryRun: true` request: common element pointers now use\n`{columnId: ...}`, pivot shelves use `{columnId: ...}`, and\n`seriesLineAreaStyle` is a list of `{columnId, style}` objects. Text\u002FKPI\nalignment uses directional values (`left`\u002F`center`\u002F`right` and\n`top`\u002F`center`\u002F`bottom`), not `start`\u002F`middle`\u002F`end`. The old pointer, map, and\nalignment forms returned HTTP 400 while the replacement forms verified\n`valid:true`. Report PUT also publishes optional `documentVersion` for\noptimistic concurrency.\n\nWhen documentation, this skill, and a live verify\u002Freadback disagree, prefer\nthe live result and preserve the evidence.\n\n## Prerequisites and safety\n\n1. Authenticate with the `sigma-api` skill. Set `SIGMA_BASE_URL` and\n   `SIGMA_API_TOKEN`.\n2. Confirm reports are enabled for the organization and the caller has\n   **Create, edit, and publish reports** permission. Updating also requires\n   **Can edit** access to the report.\n3. Treat every create as persistent. The current OpenAPI exposes no report\n   DELETE endpoint. Do not create a probe report without explicit user\n   approval and a named destination folder.\n4. Treat PUT as full-contents replacement, and remember it's **contents-only**\n   — `name`, `folderId`, or `description` sent alongside `contents` are\n   silently ignored, not applied. Always GET, back up, compare, edit,\n   validate, verify, PUT with the retrieved `documentVersion`, and read back.\n5. A report GET can omit unsupported UI-authored features. Never assume a GET\n   representation is lossless merely because the request succeeded.\n\n## Recommended workflow\n\n### Step 1: Discover identity and folder; use references only when needed\n\n```bash\ncurl -sf -H \"Authorization: Bearer $SIGMA_API_TOKEN\" \\\n  \"$SIGMA_BASE_URL\u002Fv2\u002Fwhoami\" > \u002Ftmp\u002Fwhoami.json\n```\n\nDo not browse arbitrary reports. If the OpenAPI, scaffolds, and references do\nnot answer a specific shape question, list reports once, choose one relevant\nreference, cache its spec, and use it only for that question. Obtain the\ncurrent `schemaVersion` from a relevant report GET or a user-provided target;\ndo not hardcode the value shown in examples.\n\n```bash\n# List once; pick one relevant reference.\ncurl -sf -H \"Authorization: Bearer $SIGMA_API_TOKEN\" \\\n  \"$SIGMA_BASE_URL\u002Fv2\u002Freports?limit=25\" | jq '.entries[] | {reportId, name, path}'\n\n# Cache its spec and read the current schemaVersion.\ncurl -sf -H \"Authorization: Bearer $SIGMA_API_TOKEN\" -H \"Accept: application\u002Fjson\" \\\n  \"$SIGMA_BASE_URL\u002Fv2\u002Freports\u002F\u003Creference-report-id>?includeContents=true\" \\\n  > \u002Ftmp\u002Freference-report.json\njq '.contents.schemaVersion' \u002Ftmp\u002Freference-report.json\n```\n\nLoad `reference\u002Fworkflows\u002Fdiscover.md` and resolve the report's source,\nall paginated columns, grain, period rules, and page-slice counts before\ndrafting. The raw table-columns endpoint returns only 50 entries by default.\n\n### Step 2: Classify and scaffold the report\n\nLoad `reference\u002Fworkflows\u002Fgenerate.md`. Classify the request as an executive\u002F\nboard report, wide operational table, or statement. Generate a complete local\nstarting point instead of drafting raw JSON from nothing:\n\n```bash\nruby scripts\u002Fscaffold-report.rb \\\n  --template board \\\n  --name \"Quarterly Business Review\" \\\n  --folder-id \"\u003Cfolder-id>\" \\\n  --connection-id \"\u003Cconnection-id>\" \\\n  --company \"ACME\" \\\n  --output \u002Ftmp\u002Freport-spec.json\n```\n\nUse `--template wide-table` for multi-page tabloid-landscape tables. Replace\nthe synthetic SQL\u002Fdata labels while retaining the proven geometry, panels,\nhidden data page, and explicit column contracts.\n\n### Step 3: Load the relevant references\n\nAlways read:\n\n- `reference\u002Fspecification\u002Fschema.md`\n- `reference\u002Fspecification\u002Flayout.md`\n- `reference\u002Fspecification\u002Fsupport-matrix.md`\n- `reference\u002Fworkflows\u002Fdiscover.md`\n- `reference\u002Fworkflows\u002Fvalidate.md`\n\nAlso read `reference\u002Fworkflows\u002Fcrud.md` before an API write and\n`reference\u002Fworkflows\u002Fconvert.md` before converting a workbook.\n\nCommon element internals, source formulas, and column shapes are published in\nthe same OpenAPI union used by workbooks. If `sigma-workbooks` is installed,\nits table, chart, map, KPI, control, source, formula, and formatting references\nare useful shape recipes. Apply only kinds allowed by the report support\nmatrix, and never copy workbook grid layout or workbook-only elements.\n\nFor shared shapes changed by the released code contract:\n\n- use `columnId`, never `id`, in map channels and pivot\n  `rowsBy`\u002F`columnsBy` shelf entries;\n- emit `seriesLineAreaStyle` and theme `colorOverrides` as lists, not\n  ID\u002Fname-keyed maps;\n- use `verticalAlign: top|center|bottom`;\n- use KPI `layout.anchor: left|center|right` and\n  `layout.verticalAnchor: top|center|bottom`;\n- wrap page background URLs as\n  `backgroundImage: {source: {kind: url, url: ...}, style: ...}`;\n- use `settings.theme.{name,overrides}`, not the removed contents-level\n  `themeName`\u002F`themeOverrides`.\n\n### Step 4: Draft the wrapped JSON representation\n\nStart with `reference\u002Fspecification\u002Fexample-minimal.json`. The create and\nverify envelope is:\n\n```json\n{\n  \"name\": \"Monthly Statement\",\n  \"folderId\": \"\u003Cfolder-id>\",\n  \"contents\": {\n    \"schemaVersion\": 1,\n    \"kind\": \"report\",\n    \"config\": {\"pageWidth\": 816, \"pageHeight\": 1056, \"margin\": 48},\n    \"elements\": [],\n    \"pages\": [{\"id\": \"page-1\", \"name\": \"Page 1\"}],\n    \"layout\": \"\u003CPage id=\\\"page-1\\\">\u003C\u002FPage>\"\n  }\n}\n```\n\nRules:\n\n- Keep literal elements in flat `contents.elements`.\n- Keep pages and panels as metadata; never nest `elements` inside them.\n- Put all placement in `contents.layout` XML.\n- Place leaves with absolute `x`, `y`, `width`, and `height` pixel values.\n- Use report panels only for `header` and `footer` regions.\n- Do not emit workbook `gridColumn`, `gridRow`, container, tab, overlay, or\n  sidebar syntax.\n- Compute horizontal positions from widths + gaps and vertical positions from\n  a y-cursor. Never rely on unrelated magic-number offsets.\n- Put reusable SQL\u002Fdata-model sources on a hidden data page and declare every\n  custom-SQL alias through `[Custom SQL\u002F\u003Calias>]`.\n- For wide multi-page output, clone the visible table per page and filter each\n  clone with an explicit page-slice key; do not rely on one tall table flowing\n  without inspection.\n\n### Step 5: Validate locally\n\n```bash\nruby scripts\u002Fvalidate-spec.rb --mode create \u002Ftmp\u002Freport-spec.json\n```\n\nFix every error. The validator catches pointer casing\u002Ftargets, grouped-table\nmistakes, SQL contracts, overlaps, geometry, and representation shape.\nWarnings identify schema-only\u002Funknown capabilities or visible detail columns\nthat need a deliberate decision.\n\n### Step 6: Verify without persistence\n\nAdd `\"dryRun\": true` to the request body (`contents` is required when\n`dryRun` is true — a 400 results otherwise), then POST to the same create\nendpoint:\n\n```bash\ncurl -sf -X POST \\\n  -H \"Authorization: Bearer $SIGMA_API_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Accept: application\u002Fjson\" \\\n  --data-binary @\u002Ftmp\u002Freport-spec-dry-run.json \\\n  \"$SIGMA_BASE_URL\u002Fv2\u002Freports\" \\\n  > \u002Ftmp\u002Freport-verify.json\n```\n\nA valid spec returns either bare metadata (no `valid` key) or `{\"valid\":\ntrue, \"warnings\": [...]}`; an invalid one returns `{\"valid\": false, \"errors\":\n[{\"summary\": ...}], \"warnings\": [...]}`. Verification checks server-side\nrepresentation and dependencies without creating a report. It does not prove\nthe PDF layout is correct or that GET will round-trip every UI feature.\n\n### Step 7: Create only with explicit approval\n\nAfter the user approves the persistent write and destination folder:\n\n```bash\ncurl -sf -X POST \\\n  -H \"Authorization: Bearer $SIGMA_API_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Accept: application\u002Fjson\" \\\n  --data-binary @\u002Ftmp\u002Freport-spec.json \\\n  \"$SIGMA_BASE_URL\u002Fv2\u002Freports\" \\\n  > \u002Ftmp\u002Freport-create.json\n```\n\nSave the submitted representation under a report-ID-specific path. Report the\nreport URL, ID, and saved path.\n\n### Step 8: Read back and inspect output\n\nImmediately GET the representation and compare normalized documents. Confirm\nthat optional fields survived and that no element, panel, page, or setting was\nsilently dropped. Then export the affected pages to PDF and inspect the actual\npage breaks, clipping, typography, header\u002Ffooter repetition, and margins.\n\n```bash\nruby scripts\u002Fverify-report.rb \"\u003Creport-id>\"\nruby scripts\u002Frender-report.rb \"\u003Creport-id>\" \u002Ftmp\u002Freport-render --layout portrait\n```\n\nRead every generated `page-N.png`. For dense tables, verify the final visible\nrow and each subtotal; for board reports, verify the narrative hierarchy,\nKPI labels\u002Fdeltas, chart axes, bridge start\u002Fend totals, and negative colors.\n\nDo not claim parity from a successful POST or PUT alone.\n\n### Step 9: Update with a loss check\n\nFollow `reference\u002Fworkflows\u002Fcrud.md`. The short version is:\n\n1. GET and back up the current report representation\n   (`GET \u002Fv2\u002Freports\u002F{id}?includeContents=true`).\n2. Inventory the report with `GET \u002Fv2\u002Freports\u002F{id}\u002Fpages`, `\u002Felements`, and\n   `\u002Fcontrols` (commands in `reference\u002Fworkflows\u002Fcrud.md`).\n3. Stop if the inventory contains content absent from the GET representation.\n4. Edit the complete `contents`.\n5. Validate in `--mode update` and dry-run it with `POST \u002Fv2\u002Freports` +\n   `dryRun: true`, assembled from the current name\u002Ffolder and edited `contents`.\n6. PUT `{\"contents\": {...}, \"documentVersion\": \u003Cversion-from-GET>}` to\n   `PUT \u002Fv2\u002Freports\u002F{id}\u002Fcontents`. The version is optional in OpenAPI but\n   strongly recommended so a concurrent edit fails instead of being\n   overwritten. Sending `name`\u002F`folderId`\u002F`description` here is silently\n   ignored — this endpoint only ever touches `contents`.\n7. GET again, compare, export, and inspect.\n\n## Reference index\n\n| File | Load when |\n|---|---|\n| `reference\u002Fspecification\u002Fschema.md` | Always. Wrapped envelope, contents fields, pages, panels, response metadata. |\n| `reference\u002Fspecification\u002Flayout.md` | Always. Pixel XML, bounds, page and panel placement. |\n| `reference\u002Fspecification\u002Fsupport-matrix.md` | Always. Safe, gated, unsupported, and workbook-only kinds. |\n| `reference\u002Fspecification\u002Fexample-minimal.json` | Starting a new report representation. |\n| `reference\u002Fworkflows\u002Fdiscover.md` | Finding sources\u002Fcolumns, proving grain, resolving periods, and sizing page slices. |\n| `reference\u002Fworkflows\u002Fgenerate.md` | Generating executive\u002Fboard reports, statements, or wide multi-page operational tables. |\n| `reference\u002Fworkflows\u002Fcrud.md` | Creating, retrieving, or replacing a report's contents. |\n| `reference\u002Fworkflows\u002Fvalidate.md` | Before every verify, POST, or PUT and after readback. |\n| `reference\u002Fworkflows\u002Fconvert.md` | Converting an existing workbook into a report. |\n\n## Troubleshooting\n\n| Symptom | Action |\n|---|---|\n| `unknown field`, `unexpected property`, or missing field | Compare the endpoint against the compiled OpenAPI and rerun the contract test. |\n| `Invalid kind` after adding a channel or shelf | Replace legacy `{id: ...}` with `{columnId: ...}` and check list-vs-map fields. |\n| A field or element disappears on GET | Treat the representation as lossy; do not PUT until the omitted feature is removed intentionally or preserved another way. |\n| Content overlaps or clips | Check pixel bounds, page dimensions, margins, and repeated panel height; inspect a PDF export. |\n| A wide table clips or loses its final rows | Split it into explicit page-filtered table clones, budget row height, and inspect every rendered page. |\n| `columnID`, `{id: ...}`, or an unknown column pointer appears | Use exact `columnId` and a column ID declared on the owning element; run the local validator before verify. |\n| A custom-SQL source renders unknown columns | Quote aliases in SQL and declare each with `[Custom SQL\u002F\u003Cexact alias>]`. |\n| A workbook grid attribute appears in report XML | Replace it with absolute `x`, `y`, `width`, and `height`. |\n| `progress` or synced control is requested | Stop or redesign; the published schema is not a safe report-authoring guarantee. `waterfall-chart` is supported using the proven shape in the board scaffold. |\n| Conversion succeeds with warnings | Review every warning and its element IDs before accepting the generated report. |\n\nReports are private beta. Prefer explicit evidence and reversible local edits\nover speculative API writes.\n",{"name":5,"description":7},"main","234c4c30e9d45319a33d2ef1a26cc89ad10aeb2a","skills\u002Fsigma-reports",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-reports",{"tool":68,"command":69},"bunx","bunx skills add sigmacomputing\u002Fsigma-agent-skills --skill sigma-reports",{"tool":71,"command":72},"pnpm","pnpm dlx skills add sigmacomputing\u002Fsigma-agent-skills --skill sigma-reports","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-reports\u002FSKILL.md",true,[76,82,86,90,94,98,102,106,110,114,120,124,128,132,136,140],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"reference\u002Fspecification\u002Fexample-minimal.json","REFERENCE","参考文档",1175,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-reports\u002Freference\u002Fspecification\u002Fexample-minimal.json",{"path":83,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":84,"sourceHtmlUrl":85},"reference\u002Fspecification\u002Flayout.md",4946,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-reports\u002Freference\u002Fspecification\u002Flayout.md",{"path":87,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":88,"sourceHtmlUrl":89},"reference\u002Fspecification\u002Fschema.md",9128,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-reports\u002Freference\u002Fspecification\u002Fschema.md",{"path":91,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":92,"sourceHtmlUrl":93},"reference\u002Fspecification\u002Fsupport-matrix.md",6259,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-reports\u002Freference\u002Fspecification\u002Fsupport-matrix.md",{"path":95,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":96,"sourceHtmlUrl":97},"reference\u002Fworkflows\u002Fconvert.md",1721,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-reports\u002Freference\u002Fworkflows\u002Fconvert.md",{"path":99,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":100,"sourceHtmlUrl":101},"reference\u002Fworkflows\u002Fcrud.md",5189,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-reports\u002Freference\u002Fworkflows\u002Fcrud.md",{"path":103,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":104,"sourceHtmlUrl":105},"reference\u002Fworkflows\u002Fdiscover.md",4109,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-reports\u002Freference\u002Fworkflows\u002Fdiscover.md",{"path":107,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":108,"sourceHtmlUrl":109},"reference\u002Fworkflows\u002Fgenerate.md",6429,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-reports\u002Freference\u002Fworkflows\u002Fgenerate.md",{"path":111,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":112,"sourceHtmlUrl":113},"reference\u002Fworkflows\u002Fvalidate.md",6566,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-reports\u002Freference\u002Fworkflows\u002Fvalidate.md",{"path":115,"resourceType":116,"resourceTypeDesc":117,"sizeBytes":118,"sourceHtmlUrl":119},"scripts\u002Flib\u002Freport_builder.rb","SCRIPT","脚本",11465,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-reports\u002Fscripts\u002Flib\u002Freport_builder.rb",{"path":121,"resourceType":116,"resourceTypeDesc":117,"sizeBytes":122,"sourceHtmlUrl":123},"scripts\u002Flib\u002Freport_spec_validator.rb",30559,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-reports\u002Fscripts\u002Flib\u002Freport_spec_validator.rb",{"path":125,"resourceType":116,"resourceTypeDesc":117,"sizeBytes":126,"sourceHtmlUrl":127},"scripts\u002Flib\u002Freport_verifier.rb",444,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-reports\u002Fscripts\u002Flib\u002Freport_verifier.rb",{"path":129,"resourceType":116,"resourceTypeDesc":117,"sizeBytes":130,"sourceHtmlUrl":131},"scripts\u002Frender-report.rb",3244,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-reports\u002Fscripts\u002Frender-report.rb",{"path":133,"resourceType":116,"resourceTypeDesc":117,"sizeBytes":134,"sourceHtmlUrl":135},"scripts\u002Fscaffold-report.rb",24680,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-reports\u002Fscripts\u002Fscaffold-report.rb",{"path":137,"resourceType":116,"resourceTypeDesc":117,"sizeBytes":138,"sourceHtmlUrl":139},"scripts\u002Fvalidate-spec.rb",1085,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-reports\u002Fscripts\u002Fvalidate-spec.rb",{"path":141,"resourceType":116,"resourceTypeDesc":117,"sizeBytes":142,"sourceHtmlUrl":143},"scripts\u002Fverify-report.rb",2231,"https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-reports\u002Fscripts\u002Fverify-report.rb",[145,173,197,220,241,246],{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":154,"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",[151],{"categoryNo":152,"categoryName":153,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[155,31,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,34],"sigma workbooks","design","modify","allocation","generate","screenshot","send","Charts","edit","definition","artifact","as","for","app","recipes","apps","you","formulas",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":182,"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",[179],{"categoryNo":180,"categoryName":181,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000033","数据分析师",[183,184,31,185,46,186,163,187,188,38,189,190,191,192,164,193,194,41,195,196],"sigma data models","models","data","model","export","filters","sources","columns","inspect","layer","when","new","create","change",{"skillNo":198,"name":199,"nameZh":6,"description":200,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":201,"categories":202,"keywords":203,"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",[],[204,31,205,206,207,46,208,209,210,211,193,212,213,39,214,215,216,217,218,219],"sigma cli","cli","direct","configure","auth","command","resources","needs","login","line","local","across","back","install","generated","list",{"skillNo":221,"name":222,"nameZh":6,"description":223,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":224,"categories":225,"keywords":230,"publishedAt":49},"01M71RH1VNAXTYYYV9DKV057A4","sigma-api","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.","https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsigma-api\u002FSKILL.md",[226,229],{"categoryNo":227,"categoryName":228,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[231,31,46,41,193,232,211,233,234,167,212,235,236,166,38,237,207,238,239,240],"sigma api","credentials","responses","secret","URL","hostname","pick","access","browser","troubleshoot",{"skillNo":242,"name":147,"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":243,"categories":244,"keywords":245,"publishedAt":49},"01M71RGZTNJ2YQJTZ57BARBYM6","https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002F.cortex\u002Fskills\u002Fsigma-workbooks\u002FSKILL.md",[],[155,31],{"skillNo":247,"name":5,"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":248,"categories":249,"keywords":250,"publishedAt":49},"01M71RGY6ZWV700RA2XCJDK912","https:\u002F\u002Fgithub.com\u002Fsigmacomputing\u002Fsigma-agent-skills\u002Fblob\u002Fmain\u002F.cortex\u002Fskills\u002Fsigma-reports\u002FSKILL.md",[],[29,31,30]]