analytics
Use when answering a question that needs data from a ktx-connected database - investigating, analyzing, "how many", "show me", "what's the breakdown of",…
Extract durable ktx wiki knowledge from staged Sigma data model specs and workbook summaries. Load for WorkUnits with unitKey sigma-data-models or sigma-workbooks.
$ npx -y skills add Kaelio/ktx --skill sigma_ingest --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/sigma_ingestContext preview
The summary Claude sees to decide when to auto-load this skill.
Extract durable ktx wiki knowledge from staged Sigma data model specs and workbook summaries. Load for WorkUnits with unitKey sigma-data-models or sigma-workbooks.
name: sigma_ingest description: Extract durable ktx wiki knowledge from staged Sigma data model specs and workbook summaries. Load for WorkUnits with unitKey sigma-data-models or sigma-workbooks. callers: [memory_agent]
Sigma ingest turns staged data model specs and workbook summaries into durable ktx wiki knowledge. The deterministic `project()` step has already written semantic-layer YAML for all warehouse-table data model elements before this skill runs — do not re-write those SL sources.
Sigma produces at minimum two work units per ingest run:
`sigma-manifest.json` and `sigma-projection-config.json` are never in `rawFiles`. They live at the staged dir root and always appear in `peerFileIndex`.
**`data-models/<id>.json`** — one per data model (in `rawFiles` for data-model units):
{
"sigmaId": "abc-123",
"name": "Revenue Model",
"path": "Finance/Revenue Model",
"latestVersion": 3,
"updatedAt": "2026-01-15T00:00:00Z",
"isArchived": false,
"spec": {
"name": "Revenue Model",
"pages": [{
"id": "p1",
"name": "Main",
"elements": [{
"id": "elem1",
"kind": "table",
"name": "Opportunities",
"hidden": false,
"source": {
"kind": "warehouse-table",
"connectionId": "<sigma-internal-uuid>",
"path": ["DATABASE", "SCHEMA", "OPPORTUNITIES"]
},
"columns": [
{ "id": "c1", "name": "Deal Amount", "formula": "[OPPORTUNITIES/Amount]", "description": "Net contract value in USD" },
{ "id": "c2", "name": "Total ARR", "formula": "Sum([OPPORTUNITIES/ARR])", "description": "Annualised recurring revenue" }
]
}]
}]
}
}`source.kind` discriminates:
**`workbooks/<id>.json`** — one per workbook, in `rawFiles` for workbook units (summary only; no spec endpoint exists):
{
"sigmaId": "wb-abc",
"name": "ARR Tracker",
"path": "Finance/Dashboards",
"latestVersion": 2,
"updatedAt": "2026-01-16T00:00:00Z",
"isArchived": false,
"workbookUrlId": "57a96EMo3G...",
"description": "Tracks ARR by segment and cohort for the finance team"
}**Peer files (available via `peerFileIndex`, not `rawFiles`):**
**`sigma-manifest.json`** — fetch summary; use for provenance only.
**`sigma-projection-config.json`** — written by `fetch()`, contains two fields the skill must read:
`sigma-manifest.json` also reflects any active `dataModelFilter`. When `dataModelFilter.updatedSince` was set during fetch, `dataModelCount` reflects only matching models, not the full workspace. Do not infer that absent data models were deleted.
Read `sigma-projection-config.json` first and keep `workbookFilter` in scope while processing the WorkUnit.
1. Read every `rawFiles` entry for the WorkUnit. 2. Read `sigma-projection-config.json` from the staged dir to get `connectionMappings`. 3. For each data model file: extract business semantics from element names, column descriptions, and the domain context of the model. Skip hidden elements and hidden columns. 4. For each workbook file: extract business domain knowledge from the name and description. When `workbookFilter.updatedSince` is set, treat the staged set as a recent-changes slice — absent workbooks were not deleted, they were simply outside the filter window. 5. Use `discover_data` before writing to find existing wiki pages on the same topic. 6. Write wiki candidates with `context_candidate_write`. Do not call `wiki_write` directly from a Sigma WorkUnit; Stage 4 reconciliation promotes candidates. 7. Do not write or edit SL sources. The `project()` step owns all SL output for Sigma.
Before writing a wiki page or
ktx is an executable context layer for data and analytics agents 🐙 Allow Claude Code, Codex, or other AI agents to query analytical databases accurately and with full context of your company
Repo: Kaelio/ktx
Use when answering a question that needs data from a ktx-connected database - investigating, analyzing, "how many", "show me", "what's the breakdown of",…
Map dbt `schema.yml` / `properties.yml` models and sources into ktx semantic-layer overlays and column notes. Covers `sources:` vs `models:`, column…
Synthesize durable KTX wiki pages from staged Google Drive document pulls. Load when a WorkUnit contains Google Doc raw files from `docs/**`.
Identify recurring cross-table historic-SQL analytical intents from a bounded pattern shard and emit typed pattern evidence for deterministic wiki projection.
Convert one changed historic-SQL table usage bucket into typed table usage evidence for deterministic _schema projection.
Classify and resolve conflicts detected during bundle ingest (structural duplicates, definitional contradictions, near-duplicate clusters, re-ingest changes,…