Skip to content

Launch prep: startup-data-kit hook, one-line installs, sample-data demo - #4

Merged
arsalann merged 1 commit into
mainfrom
arsalann/agent-resource-kit-public-launch
Oct 5, 2026
Merged

arsalann merged 1 commit into
mainfrom
arsalann/agent-resource-kit-public-launch

Conversation

@arsalann

@arsalann arsalann commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

Linear: BRU-6682

Gets the repo ready for a public launch that leads with startup-data-kit.

demo

What changed

  • README. The top now has a startup-data-kit hook, npx skills add bruin-data/agent-resource-kit, the demo GIF and a 3-step "Try it in 2 minutes". The "Example code, provided as-is" disclaimer moved, wording unchanged, to a new "Provided as-is" section above Licence. "Use it" documents skills.sh and the Claude Code plugin marketplace above the cp -R method. Added a "Tested" section with a TODO placeholder table (question | without skill | with skill).
  • .gitattributes. *.md is marked linguist-detectable (Markdown is a prose language, so Linguist ignores it otherwise). *.py and resources/**/scripts/** are marked linguist-vendored and *.py is marked not detectable. The sample CSVs are marked linguist-generated.
  • .claude-plugin/marketplace.json. A marketplace named bruin-agent-resource-kit; agent-skills is reserved by Anthropic. It has one plugin per group (bruin-agent, startup-data-kit, data-engineering-skills, coding-agent-workflows, tools), each with source: "./", strict: false and every skill folder listed. This shape is needed for skills.sh as well: once a manifest exists, skills.sh discovers skills through it instead of searching the whole tree.
  • resources/startup-data-kit/ai-coding-spend/sample-data/.
    • Fake Claude Code and Cursor usage with a fixed seed: 7 fictional example.com people, 1 CI API key, and 2026-09-14 to 2026-09-27. The model names and per-token rates are invented.
    • Three duckdb.seed assets replace the template's three ingestr API assets. They use the same asset names and columns. Everything downstream is the template, unchanged.
    • The data has a story in it: one person moves to the expensive model in week 2, so Anthropic estimated cost rises about 40% while tokens rise about 5%. It also carries two traps: an API-key actor counted as an active user, and a multi-model model_set row.
    • Also included: generate.py (stdlib only, reproducible byte for byte) and a README that explains why each flag is there.
  • ai-coding-spend/SKILL.md. Adds a pointer to the sample data and a first-run --full-refresh note. The upstream note is bumped to v0.11.767, checked 2026-10-02.
  • demo/. A VHS tape and the rendered GIF (3.3 MB, 29 s), made with record-terminal-demo. I looked at the contact sheet and full-resolution frames: every command succeeds, and the only paths shown are /tmp/try-ai-coding-spend.
  • tests/check.py.
    • New: every SKILL.md folder must be listed in exactly one plugin, and every listed path must have a SKILL.md.
    • New: emails in any sample-data/ file must be on example.com, example.org or example.net.
    • .csv and .tape files are now included in the internal-identifier scan.
    • CONTRIBUTING, AGENTS, the PR template and the CI comment are updated to match.
  • .gitignore. Adds *.duckdb and *.duckdb.wal.

Verification

Bruin CLI v0.11.767, skills CLI 1.7.0, Claude Code 2.1.287, VHS 0.11.0, macOS.

  • ./tests/check.py: ok, 0 warnings. I negative-tested the new checks by removing a skill from the manifest, adding a phantom path and adding a gmail.com row; all three fail as expected.
  • gitleaks v8.30.1 (the CI image) on the working tree: no leaks.
  • The demo steps were run verbatim from a fresh git clone of this branch over the network: 13 assets and 62 checks pass, and the query returns the table shown in the GIF.
  • npx skills add <fresh clone of this branch> --list: finds all 21 skills.
  • claude plugin validate . --strict: passes.
  • claude plugin marketplace add ./ followed by claude plugin install startup-data-kit@bruin-agent-resource-kit, in a throwaway CLAUDE_CONFIG_DIR, not a real config: installs, and plugin details lists all 9 startup-data-kit skills.

What I could not verify

  • Both one-line installs against GitHub itself. npx skills add bruin-data/agent-resource-kit and /plugin marketplace add bruin-data/agent-resource-kit read the default branch, so they only work after merge. I couldn't point skills.sh at this branch either, because it reads the / in arsalann/... as a path. Re-run both after merge.
  • The other four plugins. They validate, but I only installed startup-data-kit.
  • The GitHub language bar. Linguist only recomputes on the default branch after merge. Its documentation.yml probably excludes README.md and CONTRIBUTING.md from the stats, but the SKILL.md files and the other Markdown should count.
  • schema_naming: direct on the Cursor seed assets. It is not in the seed asset docs. Without it, the seed loader snake_cases isActive and similar columns, and the template's staging SQL fails. It works on v0.11.767 and is listed under ## Unverified in the sample-data README.
  • First run needs --full-refresh. On a new database, the time_interval marts fail with "table does not exist" unless created this way. Bruin's materialization docs say so, but the ai-coding-usage template README shows a plain bruin run .. That is worth fixing upstream in bruin-data/bruin, since real users of the template will hit it too. The demo uses the flag on a fresh database only, and the README says why.
  • --workers 1. With the default worker count, 2 of 5 runs failed on the DuckDB file lock. I did not check whether the real ingestr assets race the same way.
  • The agent's answer. I did not test what an agent says to the suggested question about week-2 cost. That belongs to the separate "Tested" run.
  • Other platforms. Tested on macOS only. The cp ...*.{asset.yml,csv} step needs bash or zsh brace expansion.
  • Recording setup. The demo's hidden setup links the working tree in place of the visible step 1 git clone, so the GIF shows this commit's data. The tape comments say so.
  • Follow-up, not fixed here. The PS1 that record-terminal-demo recommends does not wrap its colour codes in \[ \], which garbles long command lines in bash. The tape here uses the corrected form.

Repo description and topics (not run)

gh repo edit bruin-data/agent-resource-kit --description "Open-source agent skills that give Claude Code, Cursor and Codex a startup's data: revenue, marketing, product, finance, AI coding spend"
gh repo edit bruin-data/agent-resource-kit --add-topic agent-skills,claude-code,claude-skills,cursor,codex,startup,analytics,data-engineering,bruin,mcp

🤖 Generated with Claude Code

- README: startup-data-kit hook, install command and demo GIF at the top;
  "Try it in 2 minutes"; skills.sh and Claude Code plugin install methods
  above the cp -R method; TODO "Tested" table; as-is disclaimer moved to a
  "Provided as-is" section near the bottom, wording unchanged.
- .claude-plugin/marketplace.json: one plugin per group, every skill listed.
- .gitattributes: Markdown detectable, Python vendored and not detectable.
- ai-coding-spend/sample-data: seeded fake Claude Code and Cursor usage, as
  seed assets that replace the template's three API assets.
- demo/: VHS tape and rendered GIF of the sample-data run.
- tests/check.py: marketplace coverage and sample-data email domain checks.

Refs BRU-6682

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@arsalann
arsalann merged commit 71b236c into main Oct 5, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant