Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@ The rules the checker enforces:
- Every resource is listed in the root `README.md` index.
- Local links resolve, and no internal identifiers (Slack channel IDs, project
ULIDs, service accounts) or forbidden files (`.bruin.yml`, `.env`) appear.
- Files shared across a group of skills stay identical. Every
`startup-data-kit` skill carries the same `workflow.md`; change one copy and
copy it to the rest.

Push depth into sibling files referenced by relative path, so `SKILL.md` stays
short enough to load whole. The checker warns past 2,000 words.
Expand Down
15 changes: 8 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,17 @@ saying there as much as in an issue.
|---|---|---|---|
| [`bruin-agent`](resources/bruin-agent/) | experimental | read-only | Installing the Bruin CLI, creating a project, choosing a template, connecting a source, registering the Bruin MCP server, installing Bruin's agent skills |

**[`startup-data-kit`](resources/startup-data-kit/)**: answering business
questions from a startup's data, one domain per folder:
**[`startup-data-kit`](resources/startup-data-kit/)**: an agent works with you
to set up and customise a Bruin template for your startup, then answers
questions from it. One domain per folder:

| Resource | Status | Risk | Use it when |
|---|---|---|---|
| [`revenue-analytics`](resources/startup-data-kit/revenue-analytics/) | experimental | read-only | MRR, churn, expansion, failed payments, cash collection. Stripe, Chargebee, Paddle |
| [`marketing-analytics`](resources/startup-data-kit/marketing-analytics/) | experimental | read-only | CAC, ROAS, attribution, campaigns, CRM pipeline. Google Ads, Meta, HubSpot, Klaviyo |
| [`product-analytics`](resources/startup-data-kit/product-analytics/) | experimental | read-only | Activation, feature adoption, retention, usage-based churn signals. PostHog, Mixpanel, Amplitude |
| [`web-analytics`](resources/startup-data-kit/web-analytics/) | experimental | read-only | Traffic, landing pages, channels, funnel drop-off. GA4, Search Console |
| [`ai-search-visibility`](resources/startup-data-kit/ai-search-visibility/) | experimental | read-only | SEO, GEO and AEO. Search Console, AI crawler traffic, whether assistants mention you |
| [`revenue-analytics`](resources/startup-data-kit/revenue-analytics/) | experimental | approval-required | MRR, churn, expansion, failed payments, cash collection. Stripe, Chargebee, Paddle |
| [`marketing-analytics`](resources/startup-data-kit/marketing-analytics/) | experimental | approval-required | CAC, ROAS, attribution, campaigns, CRM pipeline. Google Ads, Meta, HubSpot, Klaviyo |
| [`product-analytics`](resources/startup-data-kit/product-analytics/) | experimental | approval-required | Activation, feature adoption, retention, usage-based churn signals. PostHog, Mixpanel, Amplitude |
| [`web-analytics`](resources/startup-data-kit/web-analytics/) | experimental | approval-required | Traffic, landing pages, channels, funnel drop-off. GA4, Search Console |
| [`ai-search-visibility`](resources/startup-data-kit/ai-search-visibility/) | experimental | approval-required | SEO, GEO and AEO. Search Console, AI crawler traffic, whether assistants mention you |

**[`data-engineering-skills`](resources/data-engineering-skills/)**: keeping
pipelines healthy. Install Bruin's seven maintained skills, then add the
Expand Down
33 changes: 25 additions & 8 deletions resources/startup-data-kit/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@
> **Upstream documentation wins.** Where a skill here disagrees with the tool's
> own documentation or its `--help` output, upstream is right and the file here
> is stale. Each skill states the version and date it was written against.
> Checked 2026-09-30.
> Checked 2026-10-01.

Answering business questions from a startup's data. One resource per domain,
because the traps are domain-specific: what ruins a revenue number is not what
ruins an attribution number.
Getting a startup's data into shape and answering questions from it. Each skill
has an agent work with the user to set up a maintained Bruin template and
customise it to how the business actually works, then answer questions from
what it built. One resource per domain, because the traps are domain-specific:
what ruins a revenue number is not what ruins an attribution number.

Each folder is an independent skill. Take the ones you need.

Expand All @@ -23,12 +25,27 @@ The sources are examples, not the supported list. Check what Bruin can ingest
today with the local Bruin MCP server's `bruin_get_docs_tree` (the `ingestion/`
section), and read `ingestion/<source>` before promising one.

## Start here
## How each skill works

Every folder holds the same three kinds of file:

| File | What it is |
|---|---|
| `SKILL.md` | What is specific to the domain: which templates to consider, what usually needs the user's input, what to reconcile against |
| `workflow.md` | The shared process: check Bruin is installed and its MCP server connected, work inside the user's git repository, confirm the warehouse, pick a template, set up credentials, then ask, customise, run and reconcile |
| `analysis.md` | How to answer questions once the pipeline exists |

Set up Bruin first with [`../bruin-agent`](../bruin-agent/): CLI, project,
template, connection, agent skills.
`workflow.md` is identical in every folder, so a skill copied on its own still
works. `tests/check.py` fails if the copies drift apart; edit one and copy it to
the rest.

The skills do not carry a fixed list of questions. Templates change, so the
agent reads the template as it is and works out what this user needs to decide.
Answers go in a `decisions.md` beside the pipeline.

## Start here

Then take the domain that answers the question you actually have. Most startups
Take the domain that answers the question you actually have. Most startups
should get one domain reconciling against its own source before adding a second.
Connecting five sources before any of them is trusted produces a dashboard
nobody believes.
Expand Down
Loading
Loading