Discover Database
rand/cc-polymath
Automatically discover database skills when working with SQL, PostgreSQL, MongoDB, Redis, database schema design, query optimization, migrations, connection pooling, ORMs, or database selection.
Domain-first store/port design for any codebase: product-shaped APIs, swappable backends, schema at boundaries, one vocabulary catalog (derive don’t re-author), no infrastructure names on the domain…
$ npx skills add TryCaspian/caspian-sdk --skill taste -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install TryCaspian/caspian-sdk taste --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/TryCaspian/caspian-sdk.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.cursor/skills/taste .claude/skills/taste && rm -rf skills-srcUse ~/.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/
Install the "taste" agent skill from https://github.com/TryCaspian/caspian-sdk/tree/main/.cursor/skills/taste into .claude/skills/taste/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "taste", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/TryCaspian/caspian-sdk/tree/main/.cursor/skills/tasteType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add TryCaspian/caspian-sdk --skill taste -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install TryCaspian/caspian-sdk taste --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TryCaspian/caspian-sdk.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.cursor/skills/taste .agents/skills/taste && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "taste" agent skill from https://github.com/TryCaspian/caspian-sdk/tree/main/.cursor/skills/taste into .agents/skills/taste/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "taste", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add TryCaspian/caspian-sdk --skill taste -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install TryCaspian/caspian-sdk taste --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TryCaspian/caspian-sdk.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.cursor/skills/taste .cursor/skills/taste && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "taste" agent skill from https://github.com/TryCaspian/caspian-sdk/tree/main/.cursor/skills/taste into .cursor/skills/taste/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "taste", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/TryCaspian/caspian-sdk.git --path .cursor/skills/taste--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add TryCaspian/caspian-sdk --skill taste -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install TryCaspian/caspian-sdk taste --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TryCaspian/caspian-sdk.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.cursor/skills/taste .gemini/skills/taste && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "taste" agent skill from https://github.com/TryCaspian/caspian-sdk/tree/main/.cursor/skills/taste into .gemini/skills/taste/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "taste", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install TryCaspian/caspian-sdk tasteInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add TryCaspian/caspian-sdk --skill taste -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/TryCaspian/caspian-sdk.git skills-src && mkdir -p .github/skills && cp -r skills-src/.cursor/skills/taste .github/skills/taste && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "taste" agent skill from https://github.com/TryCaspian/caspian-sdk/tree/main/.cursor/skills/taste into .github/skills/taste/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "taste", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add TryCaspian/caspian-sdk --skill taste -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install TryCaspian/caspian-sdk taste --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TryCaspian/caspian-sdk.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.cursor/skills/taste .opencode/skills/taste && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "taste" agent skill from https://github.com/TryCaspian/caspian-sdk/tree/main/.cursor/skills/taste into .opencode/skills/taste/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "taste", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
tasteDomain-first store/port design for any codebase: product-shaped APIs, swappable backends, schema at boundaries, one vocabulary catalog (derive don’t re-author), no infrastructure names on the domain…
Taste is an agent skill from TryCaspian/caspian-sdk. Domain-first store/port design for any codebase: product-shaped APIs, swappable backends, schema at boundaries, one vocabulary catalog (derive don’t re-author), no infrastructure names on the domain surface. Use when adding or refactoring persistence, cache, policy resolve, registries, or anything that might leak Redis/SQL/HTTP/SDK names into shared contracts. Taste: one fact one place, HOF as shared ritual not twin wrappers, call-site clarity, dumb engines, challenge early / cut ruthlessly, DX (cascading…
Its SKILL.md is about 1.8k 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 Query optimization and Refactoring. It works with Redis and SQL. The repository describes itself as: Agent communication SDK. The open-source agent communication layer for AI agents — email, WhatsApp, Slack, Discord, Telegram, SMS. Python & TypeScript. The licence is AGPL-3.0.
7 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 718a96d. It shows what the files ask for, not the result of running them.
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.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Taste loads about 1.8k tokens when it runs. Until then it costs about 166 tokens; SKILL.md has 903 words of instructions outside code blocks.
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.
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.
The full file from TryCaspian/caspian-sdk at commit 718a96d, republished under its AGPL-3.0 licence (© TryCaspian). 903 words, ~1,827 tokens.
.claude/skills/taste/SKILL.md (or your agent's skills folder).Portable agent law for persistence, cache, policy documents, and similar ports.
If the repo has its own AGENTS.md overlay, read that after this file and
prefer project overrides for paths and house libraries.
Designing or changing shared domain surfaces: stores, registries, policy resolve, CAS/publish, desired-set membership, or multi-service clients that must not fork wire APIs.
One fact, one place. Vocabulary and policy live in small catalogs
(dimensions, fields, families). Everything else is derived. If adding
one concept means editing three sibling types (FooConfig + FooContext +
FooDims), delete the twins.
Indexed ideas over parallel nouns. Prefer catalog row + allowed dims → context/result over re-authored per-family Structs. Types should cascade from the catalog.
HOF means shared ritual, not twin wrappers. Three helpers that only
inject the same default are copy. Lift once when compose actually repeats;
otherwise inline. Prefer decodeFamily(family, …) over decodeFoo /
decodeBar / decodeBaz.
Call sites stay obvious. Pass raw fields; schema owns null/empty. Don’t hide a one-liner behind a named helper. One context type: scalar or non-empty array per dim; match with equality or ∈. Closed dims declare enums on the registry; open dims stay free strings.
Engine stays dumb; boundaries stay sharp. Cascade/match with a simple
priority rule — no expand/desugar pass. Allowlists and IntelliSense live at
catalog / publish / family resolve — not a second “pass a Policy bag” API.
Resolve on use (ports); never freeze knobs at create* / make* boot.
Challenge early, cut ruthlessly. Prefer deleting a layer to polishing a wrong one. Redundant Structs and family-specific context exports are smell, not thoroughness.
DX is part of correctness. If IntelliSense doesn’t follow a new dim or field, the type model failed — even when runtime works. Adding a dim = registry row; adding a field = one catalog row (+ family key list if needed).
Call site stays clean. Decode at the family/resolve boundary — not
scattered ?? / === "" ? null / dual APIs for the same policy.
Invariants at the boundary. Decode once; the rest of the system only sees a clean shape. Schema bounds are the ceiling — don’t re-clamp the same knobs via env at boot.
Resolve from real context. Hot path uses identity dims that exist
(fooId / bar / region / …) against defaults + overrides — not a bare
env-only context when richer identity is available, and not a parallel
Policy injection. Example:
resolve.foo({ env: "published", fooId, bar }).
Pass the whole port, not plucked fields. Wire resolve.foo (or the
whole resolve bag) into consumers — don’t extract fooLimit at main /
server and pass a number.
One concern, one return. Boot/open helpers return the store (or one
domain value) — not { store, resolveEverything }. Callers compose resolve
ports at the edge.
Share the ritual, don’t twin it. One module per compose; no service-local copies of the same decode/match/apply.
Defaults everywhere, scoped when stated. Defaults are the base case; dimensions/overrides only matter when specified.
Ugly in adapters/scripts, not the server. Seeds and fixtures are scripts; empty required config → fail loud.
Explain by flow, not jargon. Show a concrete resolve example
(defaults + matching override → result).
Live day one, minimal now. Production-minded (version/revert, HA) but ruthlessly cut scope. Ship the flexible core; defer authoring UI / extra domains until needed.
House schema library owns Encoded/Type. Prefer derived
FamilyContextEncoded<"foo"> over hand-rolled { fooId: string; … } bags.
Policy resolve drives the query — don’t filter the world in JS.
Derive a conservative DB/search plan from the same resolve port
(probe closed dims like bar from the registry), push
WHERE / ORDER / LIMIT (or equivalent), then re-resolve with full row
context (fooId, …) only on the small result for open-dim overrides.
Example: planFooLoad(resolveFoo) → SQL filters + LIMIT → JS finish for
per-fooId keep/drop.
No hardcodes when the row or closed enum already names it. Don’t bake
bar = 'qux' into loaders that should follow the registry. Prefer
bar IN (enabled…) from resolve, or no bar predicate when the plan is
“all enabled bars.” Hardcodes fight multi-value dims and make admin
overrides lie.
Prefilter is conservative; finish pass is exact. Under-fetching because
the plan guessed wrong is worse than a slightly larger LIMIT. Closed-dim
floors/size from resolve are safe bounds; open dims (fooId) stay in the
post-load pass. Skip the query when every probed context resolves disabled.
Domain API first. Public names describe product concepts
(getFields, writeAll, publish, retain), never wire commands
(hgetall, INSERT, GetItem) or vendor products in types, factories,
errors, or domain comments.
Backends are swappable. Runtime adapters (cache, SQL, HTTP, SDK) vs in-process backends for unit tests. Do not bake wire commands into the Tag / port interface.
Service shape. Prefer an explicit service interface + tagged errors.
Factories return the service / Layer — not createVendorX(client).
Wire only at the edge. Adapters map infrastructure → domain. Scripts, pipelines, and SDK calls stay inside adapters — not on public contract exports’ names.
One shared module per concern. Do not fork the same store into two
services. Put it in a shared package (packages/domain, packages/contracts, …).
No duplicate client interfaces. If the domain service already defines ops, don’t redefine the same Promise surface under another name in a service package.
Side channels stay adapters. Pub/sub channel strings, queue names, and
publish transport calls are adapter details. Domain may expose
publish → boolean and an optional sink — not transport identifiers on the
Tag.
Comments stay product-shaped. Don’t document “Redis-backed” / “Dynamo-backed” on domain constructors. Say what the backend does (in-process cache, scripted CAS).
© TryCaspian, 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
Just SKILL.md in .cursor/skills/taste of TryCaspian/caspian-sdk.
Open the folder on GitHubat commit 718a96d
Taste 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Taste this skillTryCaspian/caspian-sdk | 973 | — | ~1.8k | Automated safety check: Pass | AGPL-3.0 | |
| Discover Databaserand/cc-polymath | 181 | — | ~2k | Automated safety check: Pass | MIT | |
| Django Filter Benchmarksaleor/saleor | 23k | — | ~2.3k | Automated safety check: Pass | BSD-3-Clause | |
| SQL Optimization Patternsynulihao/AgentSkillOS | 617 | 11 repos | ~3.3k | Automated safety check: Pass | None | |
| PostgreSQL Documentation Reference2025Emma/vibe-coding-cn | 23k | 1 repos | ~19k | Automated safety check: Pass | MIT | |
| Relational Query ProcessorFoundationDB/fdb-record-layer | 675 | — | ~1k | Automated safety check: Pass | Apache-2.0 |
rand/cc-polymath
Automatically discover database skills when working with SQL, PostgreSQL, MongoDB, Redis, database schema design, query optimization, migrations, connection pooling, ORMs, or database selection.
saleor/saleor
Benchmarks Django ORM filters in Saleor by generating bulk data, extracting the SQL and running EXPLAIN ANALYZE to check index usage.
ynulihao/AgentSkillOS
Master SQL query optimization, indexing strategies, and EXPLAIN analysis to dramatically improve database performance and eliminate slow queries.
2025Emma/vibe-coding-cn
PostgreSQL database documentation - SQL queries, database design, administration, performance tuning, and advanced features. Use when working with PostgreSQL…
FoundationDB/fdb-record-layer
Specialized skill for working in the fdb-relational-core SQL processing layer — parser, plan generator, and Cascades planner.
FrankChen021/datastoria
Query ClickHouse system tables to inspect query logs, monitor cluster health, check replication status, and analyze slow queries.
TryCaspian/caspian-sdk
Dummy skill to test OpenCode TUI toast UI (and optional system notification) via caspiantesttoast.
TryCaspian/caspian-sdk
Connect Caspian email for OpenCode: ensure credentials (sandbox or dashboard API key), write caspian.env, connect inbox, enable email in caspian.json.
TryCaspian/caspian-sdk
Connect Caspian Discord for OpenCode (install OAuth or BYO bot token), enable discord in caspian.json channels, and tell the user to restart.
TryCaspian/caspian-sdk
Connect Caspian Telegram for OpenCode, enable telegram in caspian.json channels, and tell the user to restart.
TryCaspian/caspian-sdk
Post a Discord message via Caspian to a channel snowflake id.
TryCaspian/caspian-sdk
Caspian Inbox (caspian:Inbox) — list agent email and other configured channel conversations/messages.
Categories
Domain-first store/port design for any codebase: product-shaped APIs, swappable backends, schema at boundaries, one vocabulary catalog (derive don’t re-author), no infrastructure names on the domain…. Taste is an agent skill from TryCaspian/caspian-sdk. Domain-first store/port design for any codebase: product-shaped APIs, swappable backends, schema at boundaries, one vocabulary catalog (derive don’t re-author), no infrastructure names on the domain surface.
Taste fits situations like: refactoring persistence; anything that might leak Redis/SQL/HTTP/SDK names into shared contracts.
Run `npx skills add TryCaspian/caspian-sdk --skill taste -a claude-code`. Or copy the skill folder (.cursor/skills/taste in TryCaspian/caspian-sdk) into .claude/skills/taste in your project. Claude Code loads it when a task matches its description.
Run `npx skills add TryCaspian/caspian-sdk --skill taste -a codex`. Or copy the skill folder (.cursor/skills/taste in TryCaspian/caspian-sdk) into .agents/skills/taste in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add TryCaspian/caspian-sdk --skill taste -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/taste, .gemini/skills/taste, .github/skills/taste and .opencode/skills/taste in your project.
SKILL.md names no scripts, command-line tools or credentials: Taste is instructions for the agent only.
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.
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.
Taste 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.
About 1.8k tokens (SKILL.md is roughly 7.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Taste: Discover Database (rand/cc-polymath, 181 stars), Django Filter Benchmark (saleor/saleor, 23k stars), SQL Optimization Patterns (ynulihao/AgentSkillOS, 617 stars) and PostgreSQL Documentation Reference (2025Emma/vibe-coding-cn, 23k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
TryCaspian (a GitHub organization) maintains it in TryCaspian/caspian-sdk, which has 973 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on August 25, 2026.
Source: TryCaspian/caspian-sdk on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.