DB Sculptor
EliasOulkadi/shokunin
Design database schemas with Prisma/Drizzle, PostgreSQL index strategy (B-tree, GIN, GiST, BRIN, Hash), query optimization (EXPLAIN ANALYZE), migration safety (expand/contract, zero-downtime), and…
A skill your agent uses when modeling MongoDB documents (embed versus reference, the 16MB cap, bucket and subset patterns), choosing or fixing indexes (compound order by the ESR rule, partial, TTL…
$ npx skills add ericrisco/rsc-harness --skill mongodb -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ericrisco/rsc-harness mongodb --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/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/mongodb .claude/skills/mongodb && 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 "mongodb" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/mongodb into .claude/skills/mongodb/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mongodb", 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/ericrisco/rsc-harness/tree/main/skills/mongodbType 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 ericrisco/rsc-harness --skill mongodb -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ericrisco/rsc-harness mongodb --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/mongodb .agents/skills/mongodb && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "mongodb" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/mongodb into .agents/skills/mongodb/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mongodb", 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 ericrisco/rsc-harness --skill mongodb -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ericrisco/rsc-harness mongodb --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/mongodb .cursor/skills/mongodb && 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 "mongodb" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/mongodb into .cursor/skills/mongodb/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mongodb", 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/ericrisco/rsc-harness.git --path skills/mongodb--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 ericrisco/rsc-harness --skill mongodb -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ericrisco/rsc-harness mongodb --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/mongodb .gemini/skills/mongodb && 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 "mongodb" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/mongodb into .gemini/skills/mongodb/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mongodb", 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 ericrisco/rsc-harness mongodbInstalls 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 ericrisco/rsc-harness --skill mongodb -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/mongodb .github/skills/mongodb && 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 "mongodb" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/mongodb into .github/skills/mongodb/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mongodb", 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 ericrisco/rsc-harness --skill mongodb -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ericrisco/rsc-harness mongodb --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/mongodb .opencode/skills/mongodb && 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 "mongodb" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/mongodb into .opencode/skills/mongodb/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mongodb", 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.
mongodbA skill your agent uses when modeling MongoDB documents (embed versus reference, the 16MB cap, bucket and subset patterns), choosing or fixing indexes (compound order by the ESR rule, partial, TTL…
Mongodb is an agent skill from ericrisco/rsc-harness. Use when modeling MongoDB documents (embed versus reference, the 16MB cap, bucket and subset patterns), choosing or fixing indexes (compound order by the ESR rule, partial, TTL, multikey, reading explain), writing aggregation pipelines that stay index-eligible, running multi-document transactions with retry, or operating and securing a deployment (replica set, read/write concern, Atlas tiers, Vector Search, Queryable Encryption). MongoDB 8.2, driver-agnostic. NOT relational schema, SQL or EXPLAIN ANALYZE (that is…
Its SKILL.md is about 4.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 9 other files, including scripts and reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/aggregation.md`).
It sits in Databases, covering NoSQL databases, Vector databases and Query optimization. It works with MongoDB and SQL. The repository describes itself as: Your agent invents things because it has no memory, and can't touch your database because it has no arms. rsc is the meta-harness that gives it both, plus the trade to know the… The licence is MIT.
10 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 92fde8f. 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.
Ships 1 file in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
nodeFrom 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.
Mongodb loads about 4.8k tokens when it runs, and up to ~8.9k if it reads all its reference files. Until then it costs about 135 tokens; SKILL.md has 1,898 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); the scripts in this folder are not scanned.
The full file from ericrisco/rsc-harness at commit 92fde8f, republished under its MIT licence (© ericrisco). 1,898 words, ~4,815 tokens.
.claude/skills/mongodb/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.Engine-level MongoDB 8.2 guidance: model documents for the queries you actually run, pick the
index the planner will use, write aggregation pipelines that stay index-eligible, run
multi-document transactions with correct retry, and operate/secure a deployment. Driver-agnostic —
every example is mongosh shell syntax that maps 1:1 to the official drivers (Node, Python, Go,
Java, Rust). This skill owns the server's query and the index it picks, not any ODM's API.
When to use:
2dsphere; and when an index is NOT worth it.explain("executionStats").$match/$sort hit an index, $lookup cost, $unwind
explosion, $group/$sort memory limits and allowDiskUse, $merge/$out, faceting.withTransaction retry semantics, read/write concern.When NOT to use:
EXPLAIN ANALYZE → postgresdb. Different
engine, planner, and concurrency model.bulkWrite return shape,
updateMany's result object) → that tool's own docs. This skill owns the server query and the
index the server picks, not the JS object the driver hands back.Deep dives: data-modeling (embed/reference tree, all six patterns,
16 MB math, polymorphic & schema versioning) · aggregation (per-stage
index eligibility, $lookup variants, $facet, window fns, $merge/$out, reading pipeline
explain) · transactions-and-ops (retry wrappers, concern
semantics, Atlas tiers, Vector Search, Queryable Encryption, RBAC, pooling, change streams).
TOAST-style overflow here.TransientTransactionError label (and commit retries on
UnknownTransactionCommitResult). withTransaction does both for you; a hand-rolled loop must.explain("executionStats") before and after adding an index — confirm IXSCAN, not
COLLSCAN, and totalKeysExamined ≈ nReturned. Or it didn't happen.w:"majority" for money and state transitions, read concern "majority"/"snapshot" when a
read must reflect a durable write. w:1 can be rolled back on a primary failover.Decimal128 (NumberDecimal("...")), never a JS double. Binary floats drift;
0.1 + 0.2 !== 0.3 in your ledger.mongodb://user:pass@ literal.| Relationship | Choose | Why |
|---|---|---|
| Read together, small, bounded (address on a user) | embed | one read, no $lookup, atomic update |
| One-to-few, bounded (≤ a few dozen, won't grow) | embed | stays well under 16 MB |
| One-to-many, growth not bounded (comments on a post) | reference | array would chase the 16 MB cap |
| Many-to-many (students↔courses) | reference (array of ids on the lighter side) | shared, independently mutated |
| Child shared across parents | reference | one source of truth, no duplication drift |
| Child independently and frequently mutated | reference | avoid rewriting a big parent per child edit |
| High-cardinality / huge child set | reference (+ optional subset embed) | keep the hot read small |
| Symptom | Pattern | What it does |
|---|---|---|
| List view reads 3 fields of a heavy doc | subset | embed only the hot fields, reference the rest |
$lookup on every read just to show a name/price | extended reference | copy the few joined fields you display |
| Unbounded time-ordered events (readings, logs) | bucket | group N events per doc by time window |
Same count/sum recomputed on every read | computed | store the rollup, update it on write |
| 1% of docs break the shape (a few mega-children) | outlier | flag them, overflow into linked docs |
| One collection holds several entity shapes | polymorphic | a type discriminator + shared _id space |
Full Bad→Good documents for each in data-modeling.
| Access pattern | Index | Note |
|---|---|---|
= on one field | single-field | also covers the field's sort |
| filter + sort + range together | compound, ordered ESR | one index serves all three |
| query into an array field | multikey (automatic on an array key) | one multikey field per compound index |
query only a subset of docs (status:"active") | partial (partialFilterExpression) | smaller, cheaper to maintain |
| auto-expire docs after a time | TTL (expireAfterSeconds on a Date) | single-field only; deletes in background |
| language-aware text search | text or Atlas Search | Atlas Search is far richer; text is legacy |
| unpredictable / many query shapes on subdocs | wildcard ("$**") | last resort; never beats a targeted index |
| geospatial proximity / within | 2dsphere | GeoJSON Point/Polygon |
| vector similarity (8.2, Community+) | Atlas/Vector Search index | see transactions-and-ops ref |
COLLSCAN wins.Every fence is mongosh syntax.
// BAD: comments embedded in the post — array grows without bound toward 16 MB,
// every post read drags the entire comment history, money is a float.
db.posts.insertOne({
_id: ObjectId(),
title: "Indexing 101",
authorId: ObjectId(),
price: 9.99, // double — drifts in arithmetic
comments: [ /* ...unbounded... */ ] // chases the 16 MB cap
})
// GOOD: post stays small; comments referenced; money is Decimal128;
// the few fields the feed needs are duplicated (extended reference).
db.posts.insertOne({
_id: ObjectId(),
title: "Indexing 101",
author: { _id: ObjectId(), name: "Ada" }, // extended ref: name shown without a $lookup
price: NumberDecimal("9.99"),
commentCount: 0, // computed rollup, bumped on write
createdAt: new Date()
})
db.comments.insertOne({ _id: ObjectId(), postId: ObjectId(), body: "…", createdAt: new Date() })// Feed query: filter by author (equality), sort by date (sort), bound by a date (range).
// ESR => author first, then the sort/range key.
db.posts.createIndex({ "author._id": 1, createdAt: -1 })
db.posts.find({ "author._id": authorId, createdAt: { $gte: since } })
.sort({ createdAt: -1 })
.limit(20)
// Confirm the plan: IXSCAN on the index above, no in-memory SORT stage.// Partial: index only the rows you actually query (active orders), not the archive.
db.orders.createIndex(
{ customerId: 1, createdAt: -1 },
{ partialFilterExpression: { status: "active" } }
)
// TTL: expire sessions 30 minutes after lastSeen. Field MUST be a Date.
db.sessions.createIndex({ lastSeen: 1 }, { expireAfterSeconds: 1800 })$match first, $lookup, $group with allowDiskUsedb.orders.aggregate([
// $match FIRST so it uses the compound index and shrinks the working set early.
{ $match: { status: "paid", createdAt: { $gte: since } } },
{ $sort: { createdAt: -1 } }, // index-eligible here, before any $group/$project
{ $lookup: {
from: "customers",
localField: "customerId",
foreignField: "_id",
as: "customer",
pipeline: [ { $project: { name: 1 } } ] // project inside $lookup: pull only what you need
}},
{ $group: { _id: "$customerId", total: { $sum: "$amount" } } }
], { allowDiskUse: true }) // $group/$sort spill past 100 MB/stage; this lets large groups complete,
// it is NOT a substitute for a missing $match index — see anti-patterns.explain("executionStats") — the four numbersdb.posts.find({ "author._id": authorId }).sort({ createdAt: -1 })
.explain("executionStats")Read these before declaring a fix:
winningPlan.stage — must be IXSCAN (or FETCH→IXSCAN), not COLLSCAN.totalKeysExamined vs nReturned — close means the index is selective; a huge ratio means
the index scans far more than it returns (wrong key order, low selectivity).SORT stage — an in-memory sort the index should have satisfied; reorder by ESR to remove it.rejectedPlans — what the planner considered and dropped; a near-miss hints at a better index.// Use withTransaction — it retries the body on TransientTransactionError and retries the
// commit on UnknownTransactionCommitResult for you. Requires a replica set / sharded cluster.
const session = db.getMongo().startSession();
try {
session.withTransaction(() => {
const orders = session.getDatabase("shop").orders;
const ledger = session.getDatabase("shop").ledger;
orders.updateOne({ _id: orderId, status: "pending" }, { $set: { status: "paid" } }, { session });
ledger.insertOne({ orderId, amount: NumberDecimal("9.99"), at: new Date() }, { session });
}, { readConcern: { level: "snapshot" }, writeConcern: { w: "majority" } });
} finally {
session.endSession();
}
// If both writes target ONE document, drop the transaction — that write is already atomic.bulkWrite upsertdb.inventory.bulkWrite([
{ updateOne: {
filter: { sku: "ABC-1" },
update: { $inc: { qty: 5 }, $setOnInsert: { createdAt: new Date() } },
upsert: true
}}
], { ordered: false }) // ordered:false keeps going past one failed op and parallelizes// Watch only the events you care about; persist resumeToken to restart without gaps.
const cs = db.orders.watch([{ $match: { operationType: { $in: ["insert", "update"] } } }]);
while (cs.hasNext()) { const change = cs.next(); /* process; save change._id as resume token */ }More variants ($facet, window functions, $merge/$out, vector search) live in the references.
| Rationalization | Reality → STOP |
|---|---|
| "Embed all the comments, it's one read" | Array grows unbounded toward 16 MB and bloats every post read. Reference or bucket. |
"$lookup is just a JOIN, use it everywhere" | Mongo is not relational; per-document $lookup is expensive. Prefer modeling (extended reference) so the read needs no join. |
| "Wrap this single-document update in a transaction to be safe" | A single-doc write is already atomic. The transaction adds latency and a replica-set requirement for zero gain. |
"COLLSCAN is fine, it's fast on my 100 docs" | It is O(n); at 4M docs it is a full table read. Add the index now and prove IXSCAN. |
"Set allowDiskUse:true and the slow pipeline is fixed" | That masks a missing $match index by spilling to disk. Fix stage order / add the index first. |
| "Store the price as a number, round on display" | JS doubles drift across $sum/$inc. Use NumberDecimal (Decimal128). |
"Group the whole collection, no $match" | A blocking $group over everything blows the 100 MB/stage limit. $match first to shrink it. |
| "One collection for users, orders, logs — fewer to manage" | Mixed shapes kill index selectivity and balloon working set. Split by access pattern. |
"$where lets me run a quick JS predicate" | Runs JS per document, no index, a server-side injection surface. Use query operators / $expr. |
| "Index every field just in case" | Each index is a write tax and RAM cost; unused indexes return nothing. Index for real query shapes only. |
| Need | Write concern | Read concern | Note |
|---|---|---|---|
| Money / state transition | w:"majority" | "majority" | survives a primary failover |
| Read your own durable write | w:"majority" | "majority" (+ causal session) | no rollback window |
| Transaction default | w:"majority" | "snapshot" | consistent point-in-time |
| Logs / fire-and-forget | w:1 | "local" | fast, may be rolled back |
| Tier | Use it for | Limits |
|---|---|---|
| M0 | learning, tiny prototypes | free forever, up to 5 GB, shared, no SLA |
| Flex (GA Feb 2025) | small prod / variable load | $8 base capped at $30/mo, 100 ops/sec (burst 500), 5 GB; supports Atlas Search, Vector Search, Change Streams, Triggers |
| M10+ (dedicated) | production, isolation, scale-up | from |
M0 does not run Vector Search well for real workloads — move to Flex or dedicated. Legacy Serverless / M2 / M5 were auto-migrated to Flex.
Each blocking stage ($group, $sort without an index, $bucket) is capped at 100 MB. Past it
the stage errors unless allowDiskUse:true lets it spill. Spilling is a correctness fallback for
genuinely large groups, not a performance fix for a missing index.
Run scripts/verify.sh from your project root. It is read-only, never connects to a database, and
never writes. It scans discovered .js/.mongodb.js files and flags foot-guns: a committed
plaintext mongodb://user:pass@ credential (the only hard failure), createIndex calls with no
options, redundant compound-index prefixes, $where predicates, unbounded $lookup,
allowDiskUse:true that may be masking a missing index, and money stored as a JS number in seed
scripts. If node is present it runs node --check for a syntax pass; otherwise that step is
[skip]. Everything except a committed credential is advisory [warn]/[skip]. It runs on stock
macOS bash 3.2 and exits 0 on a clean or empty target.
When this skill runs in a project with a 02-DOCS/ layer (the harness
Karpathy wiki), record this project's MongoDB decisions there and index them from the root
CLAUDE.md, so the next agent inherits the conventions instead of re-deriving them.
02-DOCS/wiki/stack/mongodb.md, indexed in 02-DOCS/wiki/index.md (the
Knowledge map index; root CLAUDE.md points to it).02-DOCS/wiki/index.md (the
Knowledge map; root CLAUDE.md keeps only a short pointer to it).Updated date) in the same change.No 02-DOCS/ layer? Skip silently (optionally suggest harness). Technical conventions are
recorded, not gated — never block the task on this.
$lookup
variants, $facet, window functions, $merge/$out, hybrid $scoreFusion, reading pipeline
explain.harness (scaffolds the 01-TOOLS/MONGODB operational
tool) and secure-coding (auth, encryption, least-privilege).EXPLAIN ANALYZE, MVCC — use
postgresdb, not this skill. Different engine and planner.bulkWrite/updateMany return shapes) and cross-engine vector-store selection.
This skill owns the server query and the index the server picks.© ericrisco, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (scripts, references) in skills/mongodb of ericrisco/rsc-harness.
Open the folder on GitHubat commit 92fde8f
Mongodb 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 |
|---|---|---|---|---|---|---|
| Mongodb this skillericrisco/rsc-harness | 156 | — | ~4.8k | Automated safety check: Pass | MIT | |
| DB SculptorEliasOulkadi/shokunin | 114 | — | ~3.1k | Automated safety check: Notes | MIT | |
| Amazon Documentdbaws/agent-toolkit-for-aws | 2.8k | — | ~5.9k | Automated safety check: Pass | Apache-2.0 | |
| Discover Databaserand/cc-polymath | 181 | — | ~2k | Automated safety check: Pass | MIT | |
| Query Expertjamesrochabrun/skills | 215 | — | ~4.3k | Automated safety check: Pass | MIT | |
| DatabasesMicrock/ordinary-claude-skills | 401 | — | ~1.9k | Automated safety check: Notes | MIT |
EliasOulkadi/shokunin
Design database schemas with Prisma/Drizzle, PostgreSQL index strategy (B-tree, GIN, GiST, BRIN, Hash), query optimization (EXPLAIN ANALYZE), migration safety (expand/contract, zero-downtime), and…
aws/agent-toolkit-for-aws
Manages Amazon DocumentDB end-to-end — serverless-on-8.0 cluster setup, TLS/VPC/driver config, flexible-schema and vector-search data modeling, MongoDB compatibility assessment, DMS-based migration…
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.
jamesrochabrun/skills
Master SQL and database queries across multiple systems. An agent skill from jamesrochabrun/skills.
Microck/ordinary-claude-skills
Work with MongoDB (document database, BSON documents, aggregation pipelines, Atlas cloud) and PostgreSQL (relational database, SQL queries, psql CLI, pgAdmin).
mongodb/agent-skills
Help with MongoDB query optimization and indexing. An agent skill from mongodb/agent-skills.
ericrisco/rsc-harness
A skill your agent uses when designing or analyzing a controlled experiment — falsifiable hypothesis, sample size from an MDE, reading significance/CI/power, CUPED, or rescuing tests that won't go…
ericrisco/rsc-harness
A skill your agent uses when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast…
ericrisco/rsc-harness
A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…
ericrisco/rsc-harness
A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…
ericrisco/rsc-harness
A skill your agent uses when a creative goal must become a finished media file: pick and order generative-media models per modality — AI voiceover, image-to-video clips, score — then glue them with…
ericrisco/rsc-harness
A skill your agent uses when instrumenting product or web analytics — GA4/PostHog SDK wiring, event taxonomy, funnels, double-counted events, consent gating, PII scrubbing.
Categories
A skill your agent uses when modeling MongoDB documents (embed versus reference, the 16MB cap, bucket and subset patterns), choosing or fixing indexes (compound order by the ESR rule, partial, TTL…. Mongodb is an agent skill from ericrisco/rsc-harness. Use when modeling MongoDB documents (embed versus reference, the 16MB cap, bucket and subset patterns), choosing or fixing indexes (compound order by the ESR rule, partial, TTL, multikey, reading explain), writing aggregation pipelines that stay index-eligible, running multi-document transactions with retry, or operating and securing a deployment (replica set, read/write concern, Atlas tiers, Vector Search, Queryable Encryption).
Mongodb fits situations like: modeling MongoDB documents (embed versus reference; bucket and subset patterns); fixing indexes (compound order by the ESR rule; reading explain).
Run `npx skills add ericrisco/rsc-harness --skill mongodb -a claude-code`. Or copy the skill folder (skills/mongodb in ericrisco/rsc-harness) into .claude/skills/mongodb in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ericrisco/rsc-harness --skill mongodb -a codex`. Or copy the skill folder (skills/mongodb in ericrisco/rsc-harness) into .agents/skills/mongodb 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 ericrisco/rsc-harness --skill mongodb -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/mongodb, .gemini/skills/mongodb, .github/skills/mongodb and .opencode/skills/mongodb in your project.
Going by SKILL.md and its folder, Mongodb needs a shell for the scripts in its folder and the command-line tools its instructions call (node). Our summary lists: A Bash shell.
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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Mongodb is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.8k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.1k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Mongodb: DB Sculptor (EliasOulkadi/shokunin, 114 stars), Amazon Documentdb (aws/agent-toolkit-for-aws, 2.8k stars), Discover Database (rand/cc-polymath, 181 stars) and Query Expert (jamesrochabrun/skills, 215 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 156 GitHub stars. The repository holds 229 skills in this directory. The repository was last updated on October 6, 2026.
Source: ericrisco/rsc-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.