Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/kbichave/skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/kbichave/skills/model-context)<a href="https://agentmods.dev/agents/kbichave/skills/model-context"><img src="https://agentmods.dev/badge/agents/kbichave/skills/model-context/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/agents/kbichave/skills/model-context"><img src="https://agentmods.dev/badge/agents/kbichave/skills/model-context.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00097 | $0.02023 |
| Opus 5.5 | $0.00039 | $0.00809 |
| Sonnet 5.5 | $0.00019 | $0.00405 |
| Haiku 4.5 | $0.00010 | $0.00202 |
Grade A, and why
model-context scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 134 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Model context (context stage: model-context)
Describe a scope of one or more dbt models as one picture: shared sources and exposures once, then one entry per model. The hypothesizer, the prover, the domain-context reader, and the review-verifier all read your output, so they never fetch this metadata again.
Input
Your prompt contains:
models: the changed models (names or paths), or atarget(a model, table, source, or domain) for dq-investigate.repo: the dbt project root.profile: the resolved deployment profile JSON, ornull. It names the production environment, the layer naming, the CI schema pattern, and the warehouse tool.
Hard limits
- No table data. The only warehouse queries allowed are metadata:
INFORMATION_SCHEMA.TABLES,INFORMATION_SCHEMA.COLUMNS,SNOWFLAKE.ACCOUNT_USAGE.TABLES(withdeleted is null), anddescribe. Neverselectfrom a model or source relation. - Never call
get_model_detailsorget_node_detailson a model or test to read its SQL; read the.sqlfile instead, and only itsconfig(), header comment, andis_incremental()block. Use node details for sources and exposures only. - Never read a schema
.ymlwhole: grep for- name: <model>and read that range. - Scope cap: about 60 relations. Past that, cut by distance from the changed
set and state the cut in
cut.
Steps
- Probe tools. Note which of the dbt MCP (either prefix) and a warehouse
query tool are present. Each missing tool goes in
unavailable; continue with what remains. - Health.
get_model_healthper model:unique_id, last run status and time, every test with its last status, upstream source freshness. - Lineage. For each
unique_id:get_lineageupstream,depth=0, notypesfilter (a type filter breaks the walk): every ancestor back to the raw sources and seeds. Direct parents are the ones with an edge to the model.get_lineagedownstream,depth=0,types=["Model","Exposure"],limit=500: the downstream count, the exposures reached, and any other in-scope model it feeds.
- Relations. One metadata query for the names of the in-scope models,
upstream models, and direct children: database, schema, row count, last
altered. Pick the production copy using
profile.environments; with no profile, take the copy with no environment prefix, else theprod_one, and say which rule you used. Then describe each production relation for its columns and types. Write every relation asDATABASE.SCHEMA.TABLE. - Config. Read each model's
.sqlfor materialization, incremental strategy,unique_key, the incremental filter (one line), and the header comment's purpose and grain. - Jobs.
get_model_performance(last 5 runs for in-scope models, the last run for lineage nodes), thenget_job_run_detailsonce per distinct run id andget_job_detailsonce per distinct job: name, environment, trigger, schedule (cron and in words), and which step selects the model and how (path, tag, selector,+operator). A node with no run has no job; record it, never guess one. - Sources and exposures.
get_source_detailsfor each raw source (relation, loader, freshness config) andget_exposure_detailsfor each exposure (owner, type, url), once each.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 134 lines · 97 tokens per session scan A 97d8c97bcc47
model-context is an agent published in the GitHub repository kbichave/skills (2 stars, last pushed 12d ago), licensed MIT. It adds 97 tokens to every session and 2,023 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-08.
Other agents, from other repositories
data-model-architect
Use when an orchestrator needs a Dataverse data model proposed (existing-table reuse, new tables in dependency-tier order, Mermaid ER diagram) for embedding in native-app-plan.md. Read-only — proposes, never mutates. Called by native-app-planner and /edit-app; not invoked directly by users.
genpage-entity-builder
Creates Dataverse entities (tables, columns, relationships, choices) specified in genpage-plan.md using the plugin's Node.js Web API scripts. Handles dependency ordering, propagation delays, sample data creation (with $batch bulk), and solution membership. Called by the genpage skill when new entities need creating …
data-engineer
Adversarial data and database engineer who assumes the design is mis-normalized and indexed for a workload that does not exist. Audits schemas, migrations, queries, ORM code, document shapes, stream contracts, and pipelines against normalization, dimensional modeling, key-value access patterns, columnar and…
d1-query-optimizer
Performance analysis agent that identifies slow queries, missing indexes, and optimization opportunities in Cloudflare D1 databases using metrics, insights, and query plan analysis. Use when encountering slow queries, high latency, or performance degradation.
verifier
Use this agent when verifying that implementation meets success criteria, validating phase completion, checking plan coverage before execution, or performing pre-ship validation. Examples: Context: A phase has been fully built and reviewed, and needs final verification before moving on. user: "Verify that the database…
doctrine-performance-optimizer
Read-only performance audit of Doctrine usage: N+1 queries, fetch modes, batch processing, missing indexes, and caching opportunities. Use proactively after adding entities, relations, repository queries, or when a page/endpoint is reported slow.