Agent skill

Gram Demo Seed

by speakeasy-api in speakeasy-api/gram

A skill your agent uses when adding a new feature or changing an existing one that surfaces data in the dashboard — the demo org (app.getgram.ai/explore-demo) must show it — and when editing or…

AGPL-3.0Auto-check passedDatabases

Install Gram Demo Seed

skills CLI
$ npx skills add speakeasy-api/gram --skill gram-demo-seed -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install speakeasy-api/gram gram-demo-seed --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/speakeasy-api/gram.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/gram-demo-seed .claude/skills/gram-demo-seed && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
gram-demo-seed
GitHub stars
273
Token cost
~2.5k tokens
SKILL.md length
1,263 words
Files
1
Skills in repo
40
Repo updated
First seen
Licence
AGPL-3.0

At a glance

A skill your agent uses when adding a new feature or changing an existing one that surfaces data in the dashboard — the demo org (app.getgram.ai/explore-demo) must show it — and when editing or…

  • Works in 4 steps: Data that survives a rerun uncleaned, or… → Telemetry rows missing the demo-seed… → New identifier families no Spec… → …
  • Adding a new feature
  • SKILL.md covers When the seed must change, Quick reference, One script body, three tenants and The two scripts, plus 3 more sections
  • Calls mise

What it does

Gram Demo Seed is an agent skill from speakeasy-api/gram. Use when adding a new feature or changing an existing one that surfaces data in the dashboard — the demo org (app.getgram.ai/explore-demo) must show it — and when editing or extending the demo org seed or the local dev seed — server/internal/demoseed/{postgres,clickhouse}.sql, demoseed.Spec, RunLocalFixtures, demo.ensuredemoorg(), gram demo-seed, mise run seed, mise run seed:demo, seed/demo/ docs, TestDemoSeedSafety, the demo-seed-safety CI job, orggramdemoworkspace, dec0de00 uuids — or when that CI check fails…

Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Databases, covering Data warehousing and SQL. It works with SQL, ClickHouse and PostgreSQL. The repository describes itself as: Securely scale AI usage across your organization. A single stack to Connect, Secure, Observe and Distribute agents, MCPs, and Skills within your company. The licence is AGPL-3.0.

When your agent uses it

  • Adding a new feature
  • Changing an existing one that surfaces data in the dashboard — the demo org (app.getgram.ai/explore-demo) must show it — and when editing
  • Extending the demo org seed
  • The local dev seed — server/internal/demoseed/{postgres

Example prompts

  • “touched another tenant”
  • “reseed is not cleaning up or not idempotent”
  • “still contains the demo identifier”
  • “/gram-demo-seed”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Data that survives a rerun uncleaned, or unstable counts. New inserts
  2. Telemetry rows missing the demo-seed marker. Every
  3. New identifier families no Spec rewrites. If you introduce a new class
  4. New ClickHouse tables with unrecognized scoping columns. The test

What it can do on your machine

Read from SKILL.md and the folder at commit b4c4904. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • mise

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Gram Demo Seed loads about 2.5k tokens when it runs. Until then it costs about 175 tokens; SKILL.md has 1,263 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~175
When it runs · the whole SKILL.md, loaded when a task matches
~2.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from speakeasy-api/gram at commit b4c4904, republished under its AGPL-3.0 licence (© speakeasy-api). 1,263 words, ~2,533 tokens.

Download SKILL.mdSave it as .claude/skills/gram-demo-seed/SKILL.md (or your agent's skills folder).
name
gram-demo-seed
description
Use when adding a new feature or changing an existing one that surfaces data in the dashboard — the demo org (app.getgram.ai/explore-demo) must show it — and when editing or extending the demo org seed or the local dev seed — server/internal/demoseed/{postgres,clickhouse}.sql, demoseed.Spec, RunLocalFixtures, demo.ensure_demo_org(), gram demo-seed, mise run seed, mise run seed:demo, seed/demo/ docs, TestDemoSeedSafety, the demo-seed-safety CI job, org_gram_demo_workspace, dec0de00 uuids — or when that CI check fails with "touched another tenant's rows", "reseed is not cleaning up or not idempotent", "still contains the demo identifier", or a demo seed pre/postflight exception.

Extending the demo org seed

The demo seed provisions the shared read-only demo organization AND, retargeted, your local development organization. Two SQL scripts in server/internal/demoseed/ are go:embedded into the server binary and applied by gram demo-seed — the same code path locally and in prod, versioned atomically with each deploy. Prod reruns it daily; every run deletes all demo-scoped data and reinserts it fresh, so the seed must stay idempotent and perfectly scoped. TestDemoSeedSafety (its own required CI check, demo-seed-safety) enforces that mechanically — this skill explains the system and what the test will reject.

When the seed must change

The demo org (app.getgram.ai/explore-demo) is how customers explore Speakeasy before their own org is set up, and the same seed provisions every developer's local org. So a feature that ships without seed data shows an empty page to both.

Any new feature, or change to an existing one, that introduces or reshapes data a page renders must land with the matching seed change in the same PR. Rule of thumb: if the change adds a table, a column a page reads, a new entity kind, or a new telemetry dimension, the seed needs a row for it. Then verify the affected pages per seed/demo/verify.md and update seed/demo/PAGES.md.

Quick reference

TaskHow
Edit the seedserver/internal/demoseed/postgres.sql / clickhouse.sql
Seed local devmise run seed (= gram demo-seed --local)
Apply the demo orgmise run seed:demo
Verify pagesseed/demo/verify.md playbook; contract in seed/demo/PAGES.md
Run the safety testmise run test:server -tags=demoseed_safety ./internal/demoseed/...
Authoring docsseed/demo/README.md (specs, local fixtures, prod wiring)

One script body, three tenants

The SQL is written against the demo org's literals. Other tenants come from rewriting them — demoseed.Spec (spec.go) names every identifier family, and Spec.Rewrite applies it before execution:

  • DefaultSpec() — the demo org. Rewriting is a no-op, so prod runs the scripts exactly as written.
  • LocalSpec() — the dev-idp's org (dev-idp/pkg/devidentity), writable, what mise run seed provisions.
  • otherTenantSpec — the safety test's adversarial fixture tenant.

Adding a new kind of globally unique identifier to the SQL means adding a field to Spec. Miss it and the local and test tenants write that value into the demo org's scope. TestLocalSpecRewritesEveryDefaultIdentifier fails with still contains the demo identifier %q — no database needed.

Local-only rows (your user, the API key, the MCP App) live in local.go / mcpapp.go as RunLocalFixtures, NOT in the SQL — the shared demo org must never have them.

The test package is server/internal/demoseed; invoke mise run test:server from anywhere — the task chdirs to server/, hence the ./internal/... package path. The safety test is build-tagged (demoseed_safety): running the package without the tag reports "no test files" — that is expected, not a broken package.

The two scripts

  • postgres.sql installs and executes demo.ensure_demo_org(), a single idempotent plpgsql function. Deliberately NOT a migration: migrations are append-only and the seed churns; CREATE OR REPLACE + daily rerun is the upgrade path. It deletes demo data first (projects delete cascades most of it; org-scoped tables are deleted explicitly), then reinserts. Preflight asserts abort if the demo constants collide with anything that is not the demo org; postflight asserts fail the run on missing or leaked rows.
  • clickhouse.sql runs scoped ALTER TABLE … DELETE on the telemetry source, every MV target (enumerate them by grepping MATERIALIZED VIEW in server/clickhouse/schema.sql), and the org-keyed tables, then inserts fresh rows; the MVs repopulate summaries on INSERT. Postflight throwIf statements at the bottom of the script fail the run — the Postgres postflight RAISE asserts likewise sit at the end of ensure_demo_org(). The Go runner splits statements on ; — keep semicolons out of string literals.

Fixed identity: org org_gram_demo_workspace (slug acme-demo), single project dec0de00-0000-4000-a000-000000000001, users user_demo_* / *@demo.getgram.ai. Deterministic uuids come from demo.det_uuid('gram-demo-<thing>-' || n) (md5 with version nibble 5, variant 8) — ClickHouse reproduces the same formula so rows join across stores. det_uuid inputs only need globally unique strings: pick a fresh gram-demo-<thing>- prefix per row family and never reuse one across families. Timestamps are always now()-relative (trailing ~12 days).

Show full SKILL.md (615 more words)Show less

Rules the safety test enforces

TestDemoSeedSafety provisions a fake "customer" tenant by running the seed retargeted at otherTenantSpec, snapshots both databases, runs the real seed twice with tampering in between, and fails on:

  1. Any write outside the demo scope. Every Postgres DELETE/UPDATE must be scoped by the demo org id, demo project id, or ids derived from them; every ClickHouse delete by organization_id or gram_project_id. Failure reads table X: … touched another tenant's rows / a pre-existing row of another tenant was modified or deleted.
  2. Data that survives a rerun uncleaned, or unstable counts. New inserts need a matching delete (or an upsert) so the run stays idempotent — failure reads reseed is not cleaning up or not idempotent. Any NEW table the seed writes needs its own explicit scoped delete unless you have verified it sits inside the demo project's FK delete cascade. Also add a postflight assert on its expected demo row count (Postgres RAISE / ClickHouse throwIf), following the existing ones.
  3. Telemetry rows missing the demo-seed marker. Every telemetry_logs insert must carry '{"gram.deployment.id":"demo-seed"}' in resource_attributes; the seed's own postflights fail otherwise.
  4. New identifier families no Spec rewrites. If you introduce a new class of globally unique identifier (a new uuid prefix, a new something_demo_* id written to a globally-unique column, a new email domain), add a field to demoseed.Spec and set it in every Spec. Miss it and the test fails as a unique-constraint violation during seeding, or with postgres.sql lost literal %q; update DefaultSpec after a rename — and the cheaper TestLocalSpecRewritesEveryDefaultIdentifier fails first, with still contains the demo identifier %q.
  5. New ClickHouse tables with unrecognized scoping columns. The test infers demo scope from organization_id / gram_project_id columns. A demo-written table using a different column name fails the isolation check (fail-safe false positive) — name the scoping column one of those two.

Iteration loop

  1. Edit the SQL; keep every statement scoped and every insert cleaned up. New identifier family? Add a Spec field.
  2. mise run seed against the local stack — this is also how developers get their data, so a broken seed breaks everyone's environment. Run it TWICE: the second run is what proves the delete/reinsert cycle rolls forward.
  3. Verify affected dashboard pages per seed/demo/verify.md; update seed/demo/PAGES.md.
  4. mise run test:server -tags=demoseed_safety ./internal/demoseed/... (~1 min with containers). Fix anything it names — the failure message includes the exact table.
  5. Commit. Prod picks the change up on the next release promotion; the daily CronJob rerun replaces the demo org's data wholesale.

Common mistakes

  • Deleting with an unscoped statement "because the table only holds demo data today" — the safety test plants another tenant's rows in every table the seed touches, so this always fails.
  • Adding a ClickHouse insert without deleting the MV targets it feeds — a DELETE on telemetry_logs never shrinks MV targets; each target needs its own scoped delete.
  • Reusing one trace id across row types — trace_summaries collapses per trace_id, merging them into a single unclassifiable trace.
  • Editing users, organization_features, or organization_metadata expecting deletes: those are upsert-only by design (global/shared tables); removals need an explicit cleanup statement.
  • Real-looking data: this repo is public — fictional companies, *@demo.getgram.ai emails, EXAMPLE/DEMO-marked fake secrets only.
  • Putting a developer-only row in the SQL. Anything that exists so LOCAL dev works (your user, keys, deployments the runtime must execute) belongs in RunLocalFixtures; the SQL is shared with the public demo org.
  • Seeding a child row of projects without checking its FK action. The seed deletes and recreates the project every run, so a RESTRICTing child wedges the next run — and environments is worse: project_id is NOT NULL with ON DELETE SET NULL, so it always errors. Such tables need their own scoped delete before the projects delete.

© speakeasy-api, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/gram-demo-seed of speakeasy-api/gram.

Open the folder on GitHubat commit b4c4904

Compare with similar skills

Gram Demo Seed next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Gram Demo Seed compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Gram Demo Seed this skillspeakeasy-api/gram273—~2.5kAutomated safety check: PassAGPL-3.0
Chdb SQLvemetric/vemetric3951 repos~1.2kAutomated safety check: PassApache-2.0
Querying Tempotempoxyz/tidx108—~3.1kAutomated safety check: PassMIT
Semantic Analystsidequery/sidemantic129—~982Automated safety check: PassAGPL-3.0
Database MigrationRain-kl/OpenFlare289—~1.3kAutomated safety check: PassApache-2.0
Triaging Warehouse Sync TicketsPostHog/posthog40k—~6.3kAutomated safety check: WarnCustom licence

Similar skills

  • Chdb SQL

    vemetric/vemetric

    A skill your agent uses when the user wants to run SQL — especially analytical SQL — on local files (parquet/csv/json), URLs, S3 paths, or remote databases (Postgres, MySQL, MongoDB, ClickHouse…

    395 GitHub starsUsed in 1 repo~1.2k tokens
    DatabasesAuto-check passed
  • Querying Tempo

    tempoxyz/tidx

    Query indexed Tempo chain data via tidx HTTP API and CLI. An agent skill from tempoxyz/tidx.

    108 GitHub stars~3.1k tokensUpdated today
    DatabasesAuto-check passed
  • Semantic Analyst

    sidequery/sidemantic

    Answer analytical, KPI, metric, trend, cohort, and business-performance questions through a Sidemantic semantic layer.

    129 GitHub stars~982 tokensUpdated 3 days ago
    DatabasesAuto-check passed
  • Database Migration

    Rain-kl/OpenFlare

    Wavelet 项目专用:当新增或修改数据库表结构、索引、初始化数据、系统配置 seed、模板 seed、默认管理员、goose SQL 迁移、internal/infra/persistence/migrator、ClickHouse 分析库 DDL 或数据库升级流程时必须使用。本技能指导在 internal/infra/persistence/migrator/goose 下编写…

    289 GitHub stars~1.3k tokensUpdated 2 days ago
    DatabasesAuto-check passed
  • Official

    Debug a customer's data warehouse source, schema, or table from a support ticket, using PostHog's own production data.

    40k GitHub stars~6.3k tokensUpdated today
    DatabasesAuto-check: warnings
  • Clickhouse Logs Queries

    supabase/supabase

    Official

    Write, review, and migrate Supabase logs queries against the ClickHouse-backed logs table (the logs.all.otel analytics endpoint).

    111k GitHub stars~2.4k tokensUpdated today
    DatabasesAuto-check passed

More from speakeasy-api/gram

All 40 skills in this repo
  • Gram Playwright CLI

    speakeasy-api/gram

    A skill your agent uses when automating the Speakeasy dashboard in a browser, capturing screenshots, inspecting pages.

    273 GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Transactional Email

    speakeasy-api/gram

    A skill your agent uses when adding, changing, restyling, reviewing, validating, or previewing a Speakeasy transactional email, in Go or in LMX/MJML — a template<name.go, a TemplateKey constant, a…

    273 GitHub stars~4.7k tokensUpdated today
    Auto-check passed
  • Admin Shadcn

    speakeasy-api/gram

    A skill your agent uses when adding, changing, or styling UI in client/admin (the Speakeasy admin dashboard) that touches shadcn/ui — a button, dialog, table, sidebar, badge, select, tabs, tooltip…

    273 GitHub stars~1k tokensUpdated today
    Auto-check passed
  • A skill your agent uses when adding, editing, reviewing, testing, or locating a reviewed skill distributed with the Platform MCP plugin; triggers include "Platform MCP skill", "platformmcpskills"…

    273 GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Clickhouse

    speakeasy-api/gram

    A skill your agent uses when changing or reviewing Speakeasy ClickHouse schemas, migrations, queries, inserts, access principals, bootstrap SQL, Cloud compatibility, partial migration failures, or…

    273 GitHub stars~3.2k tokensUpdated today
    Auto-check passed
  • Feature Flag

    speakeasy-api/gram

    A skill your agent uses when gating a feature behind a flag, dogfooding or gradually rolling out a change, choosing between productfeatures and PostHog feature flags, adding or checking a product…

    273 GitHub stars~2.6k tokensUpdated today
    Auto-check passed

Categories

Questions about Gram Demo Seed

What does Gram Demo Seed do?

A skill your agent uses when adding a new feature or changing an existing one that surfaces data in the dashboard — the demo org (app.getgram.ai/explore-demo) must show it — and when editing or…. Gram Demo Seed is an agent skill from speakeasy-api/gram.

When should I use Gram Demo Seed?

Gram Demo Seed fits situations like: adding a new feature; changing an existing one that surfaces data in the dashboard — the demo org (app.getgram.ai/explore-demo) must show it — and when editing; extending the demo org seed; the local dev seed — server/internal/demoseed/{postgres.

How do I install Gram Demo Seed in Claude Code?

Run `npx skills add speakeasy-api/gram --skill gram-demo-seed -a claude-code`. Or copy the skill folder (.agents/skills/gram-demo-seed in speakeasy-api/gram) into .claude/skills/gram-demo-seed in your project. Claude Code loads it when a task matches its description.

How do I install Gram Demo Seed in Codex?

Run `npx skills add speakeasy-api/gram --skill gram-demo-seed -a codex`. Or copy the skill folder (.agents/skills/gram-demo-seed in speakeasy-api/gram) into .agents/skills/gram-demo-seed in your project. Codex loads it when a task matches its description.

Can I use Gram Demo Seed in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add speakeasy-api/gram --skill gram-demo-seed -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/gram-demo-seed, .gemini/skills/gram-demo-seed, .github/skills/gram-demo-seed and .opencode/skills/gram-demo-seed in your project.

What does Gram Demo Seed need to run?

Going by SKILL.md and its folder, Gram Demo Seed needs the command-line tools its instructions call (mise).

Does Gram Demo Seed access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Gram Demo Seed safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Gram Demo Seed use?

Gram Demo Seed is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Gram Demo Seed use?

About 2.5k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Gram Demo Seed?

Skills that share tags, products or a category with Gram Demo Seed: Chdb SQL (vemetric/vemetric, 395 stars), Querying Tempo (tempoxyz/tidx, 108 stars), Semantic Analyst (sidequery/sidemantic, 129 stars) and Database Migration (Rain-kl/OpenFlare, 289 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Gram Demo Seed?

speakeasy-api (a GitHub organization) maintains it in speakeasy-api/gram, which has 273 GitHub stars. The repository holds 40 skills in this directory. The repository was last updated on October 10, 2026.

Source: speakeasy-api/gram on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.