paddleocr
Reads text from scanned pages, photos and PDFs and returns it as structured Markdown or JSON, so you can pull tables, formulas and headers out of a document without retyping them. Covers many languages and works as input for AI tools.
Agent skills for analytics work: auditing assumptions, experiments and forecasts, checking changes and their impact, and briefing findings to stakeholders. Each claim keeps its provenance in one knowledge base.
Claude Code
> /plugin marketplace add debabsah/analytics-office> /plugin install analytics-office@analytics-office
Codex
$ npx skills add debabsah/analytics-office -a codex
Cursor
$ npx skills add debabsah/analytics-office -a cursor
Gemini CLI
$ npx skills add debabsah/analytics-office -a gemini-cli
GitHub Copilot
$ copilot plugin marketplace add debabsah/analytics-office$ copilot plugin install analytics-office@analytics-office
OpenCode
$ npx skills add debabsah/analytics-office -a opencode
Windsurf
$ npx skills add debabsah/analytics-office -a windsurf
A discipline harness for AI-assisted analytics.
AI is genuinely good at analytics work. It fails in one specific way: not by being unable, but by being agreeable. Handed an inherited warehouse with no docs, it starts building instead of orienting. Handed "build me a dashboard with these KPIs," it builds exactly that — without ever asking what decision the dashboard serves. Asked what "active customer" means, it picks a sensible default instead of pinning the choice with the person who owns it. Handed a number, it writes the confident story. The fix is a model that refuses and redirects — that refusal-then-redirect is the whole product.
analytics-office is a bench of 19 read-only skills for Claude Code that switches the model out of answer-mode and into the discipline each moment of analytics work actually needs — orienting on an unfamiliar estate, interrogating requirements, proposing the questions worth asking when the stakeholder has none, locking metric definitions, designing models, auditing inherited premises, reviewing the code behind a number, diagnosing a break, exploring a dataset without dredging it, mapping the estate, scoping a change's blast radius, QA-ing the dashboard before the QBR, proving a migration ties out, briefing stakeholders, writing the weekly status, surviving the meeting. Each skill is engineered against a documented failure of the bare model. All of them write to one living knowledge base you resume from.
Read-only by construction · computes instead of eyeballing · no required sequence — any skill, any moment.
/plugin marketplace add debabsah/analytics-office
/plugin install analytics-office@analytics-office
Nineteen skills in five families — each family owns an ask-shape, and every member's description opens with its family's shared stanza (that structure is measured, not aesthetic; see Engineered, not vibed). The deep dive — every skill's job, trap, loop, and artifact, with diagrams — is docs/skills-deep-dive.md. Ordered here like a project — but there is no pipeline. Every skill fires independently, at any moment, with or without the others having run.
Shape — the work itself is still being shaped, before anything is built
| You say | What fires | You walk away with |
|---|---|---|
| "I inherited this warehouse and the analyst left." | groundwork | a living knowledge-base/ — and a map of what you don't know yet |
| "Build me a dashboard with these KPIs." | requirements-interrogator | the decision behind the ask, the requested-vs-derived delta, a verdict |
| "We don't know what we need — what can our data tell us?" | worth-knowing | the question charter: candidate questions ranked by decision-weight, the unasked included, hypotheses never findings |
| "Lock down what 'active customer' actually means." | kpi-contract | a versioned contract — every definitional fork pinned by its owner or flagged [needs decision] |
| "How should I model this mart?" | model-contract | a logical star with the grain declared and gated on evidence — no DDL invented on a guess |
Audit — a built thing is about to be trusted; the gate fires before the work leans on it
| You say | What fires | You walk away with |
|---|---|---|
| "Turn this proc's output into the board number." | audit-my-assumptions | a graded register of every silent premise, falsified before you build on it |
| "Is this SQL right?" | review-my-query | findings graded Blocking / Latent / Advisory against the locked definition — a review, never a rewrite |
| "Is our knowledge base still true?" | kb-reconcile | a graded drift report — contradictions, stale claims, unsourced numbers |
| "QA my dashboard before the QBR." | review-my-dashboard | the assembly review: dashboards fail between correct parts — totals, defaults, titles, staleness |
Validate — a measured result is about to drive a decision; the checks are computed first
| You say | What fires | You walk away with |
|---|---|---|
| "Did our A/B test really win?" | audit-my-experiment | computed validity checks (SRM, peeking, multiplicity, power) gating the ship decision |
| "Can we plan against this forecast?" | audit-my-forecast | leakage, backtest, interval-honesty, and drift checks gating the plan |
| "The totals match — sign off the migration." | prove-my-parity | the stratified parity proof: offsetting errors caught, tolerance owned before results |
Investigate — hands-in-the-data right now
| You say | What fires | You walk away with |
|---|---|---|
| "Churn jumped to 11% overnight. Why?" | triage-my-number | a ranked differential across code / data / pipeline / definition / real change — plus a calibrated line for the exec who's asking |
| "Explore this data — find me insights." | explore-my-data | a harnessed exploration: every cut counted, found ≠ confirmed, the lucky cell never becomes the headline |
| "Draw the ER / lineage diagram of our mart." | map-my-estate | a cited map: every edge carries its evidence, guesses render dashed, islands stay islands |
| "What breaks if I rename this column?" | change-impact | the graded blast radius: breaks, silent meaning-drifts, and honest UNKNOWNs — before it ships |
Deliver — work is leaving the desk
| You say | What fires | You walk away with |
|---|---|---|
| "Write up my findings for the VP." | brief-my-findings | a brief where every claim carries its provenance and open questions stay open |
| "The CFO will grill me on this number." | defend-my-number | a live sparring drill, graded honestly, and a defense sheet of what held and what cracked |
| "Write my weekly status update for steering." | status-truth | a provenance-graded status where every green earns its color and slips carry their delta |
A mode adds a job to a moment a skill already owns — a branch inside the host, zero new routing surface (that's the growth rule: modes before skills). The daily ones:
[unconfirmed], owner-pinned before write.LLMs in analytics fail through answer-mode: the pull to be immediately useful. Answer-mode inherits a stale filter as fact because "that's what the proc does." It eyeballs a check it could compute. It resolves a contested definition with a "sensible default, confirm later." It smooths an open question into a clean narrative because the deck reads better that way. None of these are knowledge failures — they're discipline failures, and they produce confident, well-formatted, plausible, wrong output.
A harness is the countermeasure, built into every skill:
A trap, named. Each skill documents the exact thing a capable model does by default — then refuses it. The skills know their own failure modes before you hit them.
Bright lines. Non-negotiables with teeth: never touch a live system, never compute the user's deliverable, never resolve an owner's decision silently, never grade a guess as a finding.
Anti-evasion tables. The mid-task rationalizations, pre-rebutted. Two real rows:
| The thought | The reality |
|---|---|
| "The QBR's in an hour, I'll just write the SQL so they're unblocked." | Surface, don't build. The contract is the deliverable; the runnable query is downstream of the pinned definition. |
| "It's obviously X." | Obvious = untested. Hold the differential until a check confirms. |
A graded artifact, every time. No skill ends in vibes. Each emits a committable file where every line carries a status. The signature example — kpi-contract's fork log:
Fork Options Pinned Why it matters
Revenue basis bookings/recognized recognized biggest gap vs Finance
Refunds gross/net net gross overstates by refund rate
Attribution first/last/multi [needs decision] changes who gets credit
Verdicts that carry. A "not ship-ready" from an audit cannot be upgraded into a win by the write-up downstream. The brief inherits the verdict; it does not soften it.
Engineering constraints, enforced. Every skill body is capped at 200 lines by a structural validator (depth lives in references/, loaded on demand), and every skill declares least-privilege tool access — the validator rejects a wildcard grant. The whole bench is about 1,300 lines of always-loaded skill text — roughly 4,000 counting the on-demand references and kits.
Every skill reads from and writes to the same knowledge-base/ directory in your project — current truth in STATE files, history in an append-only timeline, and one graded artifact per job done.
flowchart TD
KB[("knowledge-base/<br/>STATE + timeline + decisions<br/>catches.md + house-rules.md + inputs/")]
GW[groundwork] -->|stands up + seeds| KB
KC[kpi-contract] -->|locked fork log| KB
AA[audit-my-assumptions] -->|assumption register| KB
ME[map-my-estate] -->|the cited map| KB
KB -->|the contract anchors the review| RQ[review-my-query]
RQ -->|graded findings| KB
KB -->|known defects become first suspects| TN[triage-my-number]
KB -->|the map becomes the blast radius| CI[change-impact]
KB -->|verdicts carried with their age — expired ones can't be quoted| DEL[brief-my-findings<br/>status-truth<br/>defend-my-number]
Reads text from scanned pages, photos and PDFs and returns it as structured Markdown or JSON, so you can pull tables, formulas and headers out of a document without retyping them. Covers many languages and works as input for AI tools.
Gives your AI assistant a memory that persists across sessions, so it remembers your preferences and earlier work in this repository instead of starting fresh. Search, forget, pause and resume memories with simple commands.
Gives AI agents a library of ready-made skills for scientific work such as metabolic flux analysis, protein experiment design, time series modeling, and analytical method validation, so research tasks need less hand-built code. It works with any agent that supports the open Agent Skills standard.
Gives Claude Code skills, agents, and commands for PostHog analytics, session replay, feature flags, error tracking, and LLM observability. Includes MCP server setup and project access checks.
Agent skills for analytics work: auditing assumptions, experiments and forecasts, checking changes and their impact, and briefing findings to stakeholders. Each claim keeps its provenance in one knowledge base. Install it with the command on its page. It includes audit-my-assumptions, audit-my-experiment, audit-my-forecast. Its skills do not fire on their own yet. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it