Borrowing it
Nothing to install: this file belongs to Kemetra/Seshat-BI. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/Kemetra/Seshat-BI/main/.claude/skills/retail-init/SKILL.mdgit clone --depth 1 https://github.com/Kemetra/Seshat-BIWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/kemetra/seshat-bi/retail-init)<a href="https://agentmods.dev/skills/kemetra/seshat-bi/retail-init"><img src="https://agentmods.dev/badge/skills/kemetra/seshat-bi/retail-init/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/kemetra/seshat-bi/retail-init"><img src="https://agentmods.dev/badge/skills/kemetra/seshat-bi/retail-init.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00193 | $0.01448 |
| Opus 5 | $0.00097 | $0.00724 |
| Sonnet 5 | $0.00039 | $0.00290 |
| Haiku 4.5 | $0.00019 | $0.00145 |
Grade A, and why
retail-init scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 96 lines — stays where its author put it; the contents beside it link to each section on GitHub.
retail-init
The install-time front door for the Compass-Driven kit. Its one job is to turn a
fresh pip install into a first visible result on the user's own table — leading
with analyst value, keeping the substrate backstage. You (the agent) perform this
flow; the retail init CLI only writes substrate and prints the next step. This is
Phase-1 Step 1-2 of docs/roadmap/distribution-ideas.md.
Scope + non-negotiables (read first)
- Agent-first, not a wizard (Principle I). The
retail initCLI is substrate-writing ONLY — it writes.seshat/+ the fenced regions and prints the next step. It never prompts, shows a menu, or emits a profile. The delegate → route → profile flow is YOU performing this skill over the existing prose verbs. - Delegate, never fork (anti-fork). The worked-example offer, the human-seam
list, and the single-table orientation card belong to
first-hour-compass— its single source. The Stage-1 profile belongs toretail-onboard-table. Do NOT restate any of them here; route into them. - No run-state (FR-005).
compass.yamldeclares the orientation protocol and points at per-tablereadiness-status.yaml; it stores nocurrent_stage. There is no repo-level stage. - Fence-only writes (FR-006/FR-007). The substrate write touches only the
<!-- SESHAT-KIT START -->…<!-- SESHAT-KIT END -->region of AGENTS.md / CLAUDE.md; everything outside is hand-authored / constitution-owned and stays byte-identical. - Stop at judgment (Principle V). Grain, PII publish-safety, business
rollup/segment, product identity are the human's — surfaced (via
first-hour-compass) and STOPPED on, never self-granted. - ASCII only, UTF-8 no BOM.
The flow (what you perform)
- Bootstrap the substrate. Run
retail init(orretail init --repo <path>). It writes.seshat/compass.yaml+ manifests and projects theSESHAT-KITfenced regions of AGENTS.md / CLAUDE.md, then prints the next step. Do NOT narrate the substrate as steps — it is backstage. - Set expectations honestly (FR-009). State up front: the agent handles the
sequence and the plumbing; you still own the judgment seams. Surface the seam
wording from
first-hour-compass(its single source) — do not re-type a divergent list. - Delegate the worked-example offer. Route into
first-hour-compass, which presentsretail-store-sales(full seven-stage spine,docs/worked-examples/ retail-store-sales.md) and takes the user's pick as a narrative pattern to steer by (not a file template). - Route into the profile. Hand the user's named table to
retail-onboard-table(the Source → Mapping front door, which owns the Stage-1 read-only profile). The agent-visible first result is the grain candidates + column types it returns. - Degrade honestly when there's no DB. The Stage-1 profile is DB-backed
(
profile.pyover aQueryRunner). If nodbextra / DSN is configured, report the boundary and the enable steps (pipx inject seshat-bi psycopg2-binaryorpip install "seshat-bi[db]"; setDATABASE_URLorANALYTICS_DB_*in the gitignored.env), mark profile numbers[PENDING LIVE PROFILE], author the source-map / orientation structure, and STAY USEFUL — never traceback, never fake a pass. There is no CSV/Excel profiler (YAGNI).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 9d ago First seen · 96 lines · 193 tokens per session scan A 00c15c167bfe
retail-init is a skill published in the GitHub repository Kemetra/Seshat-BI (2 stars, last pushed 6d ago), licensed Apache-2.0. It adds 193 tokens to every session and 1,448 once invoked, about $0.0010 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
ktx-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", finding records by value, exploring tables, comparing periods, explaining metrics, or any data-analysis request. Triggers even when the user does not say…
metabase_ingest
Convert Metabase questions, models, and metrics into ktx Semantic Layer source definitions. Covers result-metadata to KSL column type mapping, FK/PK detection, near-duplicate deduplication, pre-aggregation decomposition, join-graph connectivity, and how to react to priorProvenance from earlier ingest syncs. Load when…
sl_capture
How to capture new reusable patterns into ktx's semantic layer - when a measure, segment, or join belongs in the catalog and how to write it generically so it stays small and useful over time. Loaded by the post-turn memory-agent only. The research agent does not write to the SL.
metricflow_ingest
Map a MetricFlow semanticmodel or metric into ktx semantic layer sources. Covers the MetricFlow to ktx primitive table, extends: inheritance flattening, metric-type handling (simple / derived / ratio / cumulative / conversion), model: ref('x') resolution, and four worked examples. Load when the turn contains…
looker_ingest
Extract durable ktx knowledge and semantic-layer contribution proposals from staged Looker runtime dashboard, Look, and explore JSON. Load for WorkUnits whose raw files are under explores/, dashboards/, or looks/.
lookml_ingest
Map a LookML view/model/explore into ktx semantic layer sources. Covers the LookML to ktx primitive table, provenance tagging, and three worked examples (overlay, standalone from derivedtable, standalone with sqlalwayswhere). Load when the turn contains .lkml content.