Open-source · Agent Skills · v2.0.0

Ask your survey data a question. Get a report you can defend.

An open toolkit of Agent Skills that analyses quantitative survey CSVs on your own machine. Free and MIT-licensed, pure Python 3, no dependencies to install.

MIT licensed · Python 3, no dependencies · works with Claude Code, Codex, Cursor & more

/survey-report How satisfied are users overall?

reports/2026-07-24_satisfaction.md

How satisfied are users overall?

52.1% are satisfied or very satisfied — but 47.9% sit at neutral or worse. Satisfaction does not vary reliably by company size.

Top-2 (satisfied) 52.1% (73)
Neutral 25.0% (35)
Bottom-2 (unhappy) 22.9% (32)

Chi² = 19.14 · df = 16 · p = 0.26 → not significant at α = 0.05 · Cramér's V = 0.185

Over 20% of cells had an expected frequency < 5 — weakly reliable here.

n = 140 · synthetic sample data

The problem

Three things that happen to every survey export.

  1. It goes into a folder and stays there.

    Fieldwork is done, the CSV is downloaded, and the questions you actually ran the survey for never get asked.

  2. Pivot tables eat the afternoon.

    You build the two obvious breakdowns, run out of time, and the interesting cross-tab is never built at all.

  3. A chatbot answers confidently either way.

    Paste the export into a chat window and you get fluent, plausible numbers with no computation behind them — and no way to check them.

This keeps the speed of asking in plain language, and puts a real, named computation behind every number.

How it works

Three steps, one folder.

  1. Put your CSV in the folder.

    Clone the repository, drop your survey export next to it. Nothing to install, nothing to configure, no account.

  2. Ask your question in plain language.

    Start your AI coding agent in that folder and type the question you have — or call a skill by name, like /survey-report.

  3. Get a Markdown report in reports/.

    Key takeaway, tables, significance, method, and the source column behind every figure. A file you own and can forward.

Example report

One question in. One document out.

Not a screenshot of an app. This is the shape of what you get: a Markdown file in your own folder.

You ask

/survey-report How satisfied are users overall?

In plain language, or by skill name. Both work.

You get

reports/2026-07-24_satisfaction.md

Overall satisfaction

Key takeaway

A slim majority of users are satisfied (52.1% satisfied or very satisfied), but nearly a quarter are unhappy (22.9%) and a full quarter sit on the fence (25.0%). Satisfaction does not vary reliably by company size — the apparent differences are within the range of chance.

Distribution

Overall satisfaction (n = 140)

Very satisfied 19 (13.6%)
Satisfied 54 (38.6%)
Neutral 35 (25.0%)
Dissatisfied 25 (17.9%)
Very dissatisfied 7 (5.0%)

Top-2 73 (52.1%) Bottom-2 32 (22.9%)

Significance test by company size

  • Chi² = 19.14, df = 16, p = 0.26not significant at α = 0.05
  • Cramér's V = 0.185weak effect

Note: Over 20% of cells had an expected frequency < 5, so this test is only weakly reliable here.

Method

Frequencies computed from absolute counts, source column “Overall, how satisfied are you with TeamSync?”. Cross-tab against “How many employees does your company have?”. Chi-square test of independence with Cramér's V. Percentages relative to respondents who answered this question.

Real output from the synthetic sample dataset shipped with the repository — a fictional product called “TeamSync”, n = 140. No real and no personal data.

Note what it did here: it reported a negative result and a reliability warning instead of selling you a finding.

Why the numbers hold up

Every figure is computed, not written.

The engine does the arithmetic and the statistics. The model only writes the sentences around them.

  • All figures come from the Python engine. Nothing is estimated by the model.
  • Percentages are always relative to the people who answered that question, not to the whole sample.
  • Aggregates like top-2-box are computed from absolute counts, never by adding up rounded percentages.
  • Group differences report a Chi-square test and an effect size (Cramér's V) together — significance without effect size says very little.
  • Reliability warnings are passed through, for example an expected cell frequency below 5, instead of being quietly swallowed.
  • Subgroups smaller than n = 30 are flagged as weakly reliable.
  • Reports state where correlation is not causation, instead of implying it.
  • No personal raw data in the output: no ids, no timestamps, no identifying quotes.

The skills

Seven jobs, each in English and German.

Every skill exists twice with identical behaviour. The report comes back in the language of your question.

  • What does the data actually say?

    survey-reportGerman: umfrage-report

    /survey-report Which tasks do users perform most often?

  • Is this difference real — or chance?

    hypothesis-checkGerman: hypothese-check

    /hypothesis-check Larger companies are less satisfied than smaller ones.

  • Which option should we go with?

    decision-briefGerman: entscheidungsvorlage

    /decision-brief Should we prioritize a better mobile app?

  • Can I put this on one page for the board?

    executive-summaryGerman: management-summary

    /executive-summary Q3 user survey

  • Who are these people, exactly?

    segment-profileGerman: segment-profil

    /segment-profile Daily users

  • What are people complaining about in the free text?

    verbatim-themesGerman: freitext-themen

    /verbatim-themes What do users say about onboarding?

  • Can I trust this dataset at all?

    data-checkGerman: daten-check

    /data-check Check the export before I analyse it

Scope

What it isn't.

  • It is not a survey tool. It does not collect responses — it starts where your export ends.
  • It is not for qualitative interview transcripts. It reads quantitative survey CSVs, including their free-text columns.
  • It is not a replacement for a statistician. It does frequencies, cross-tabs, Chi-square and effect size — no regression, no factor analysis, no weighting.
  • If your analysis needs those, this is the wrong tool, and it will not pretend otherwise.

Compatibility

Works with the agent you already have.

One set of skills, built on the open Agent Skills standard. No lock-in to a single vendor.

  • Claude Code
  • Codex CLI
  • Antigravity CLI
  • Cursor
  • Copilot / VS Code
  • OpenCode
  • Amp
  • Goose

In Claude Code you type /survey-report …, in Codex CLI $survey-report … — and in any of them you can simply ask in plain language.

Try it

Two minutes with the sample data.

Before your own data is anywhere near it.

What you need

  • An AI coding agent of your choice — any of the tools above.
  • A folder on your computer, and a survey CSV when you are ready for it.
  • And yes: you will type three commands into a terminal once. That is the entire technical part of this page.

If that last line lost you, it would have lost you two minutes later anyway. If it didn't: this genuinely is all of it.

Copy this into your terminal

git clone https://github.com/kayspiegel/survey-insight-skills.git
cd survey-insight-skills
cp ~/Downloads/my-survey.csv .

Then start your agent in that folder and ask your question.

A synthetic sample survey with 140 responses and a German one with 160 responses ship with the repository, so you can run the whole flow end to end before touching anything real.

FAQ

Reasonable questions.

Do I need to be able to code?

No. You need to be able to copy three commands into a terminal once, and then you write in plain language. The skills are instructions for your agent, not something you program.

What does it cost?

The toolkit is free and MIT-licensed, now and later. You need your own AI coding agent, and those may cost money depending on which one you pick.

Where does my data go?

The CSV stays in your folder and the reports are written next to it as plain Markdown. There is no upload to an analytics service and no telemetry. Be aware of the honest limit: the questions you ask, and the data needed to answer them, are processed by whichever AI agent you choose — so pick that tool according to how sensitive your data is.

Which CSVs work?

Any quantitative survey export: Google Forms, LimeSurvey, Qualtrics, SurveyMonkey, or an Excel sheet saved as CSV. The engine detects each column as single-choice, multi-select (semicolon-separated), free text or metadata, and understands English as well as German headers and timestamps.

Can it hallucinate numbers at me?

The numbers come from the Python engine, not from the model, and every report names its method and the source column it used — so any figure can be recomputed and checked. What the model does is write the prose around those numbers.

Does it work in German?

Fully. Every skill exists in German with identical behaviour, column and timestamp detection handles German exports, and the report comes back in the language you asked in.

Can I use it on client projects?

Yes. MIT license, commercial use included. Attribution is welcome but not required.