Help a user create the Instructions field content for their Sanity Agent Context MCP. The goal is a concise set of pure deltas — only information the agent can't figure out from the auto-generated schema.
Works with
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versiondial-your-contextExecute the skills CLI command in your project's root directory to begin installation:
Fetches dial-your-context from sanity-io/agent-context and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate dial-your-context. Access via /dial-your-context in your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Create detailed user stories, acceptance criteria, and feature specs
Example
Generate user stories for 'password reset feature' with acceptance criteria, edge cases, and test scenarios
Reduce spec writing time by 50%, ensure comprehensive coverage
Research competitors, compare features, identify gaps
Example
Analyze 5 competitor products, create feature comparison matrix, suggest differentiation opportunities
Complete competitive research in 2 hours instead of 2 days
Evaluate features using frameworks (RICE, ICE, Kano) and create prioritized backlogs
Example
Score 20 feature ideas using RICE framework, generate prioritized roadmap with rationale
0
total installs
0
this week
4
GitHub stars
0
upvotes
Run in your terminal
0
installs
0
this week
4
stars
Help a user create the Instructions field content for their Sanity Agent Context MCP. The goal is a concise set of pure deltas — only information the agent can't figure out from the auto-generated schema.
The Agent Context MCP already provides the agent with:
The Instructions field you're crafting gets injected as a ## Custom instructions section between ## Response style and ## Tools in the MCP's instructions blob. It should contain only what the schema doesn't make obvious:
body is actually a slug, hero is a reference to mediaAsset)product → productFeature and match on the feature's id field — the schema shows each hop but not the full path")product type has a features array but it's always empty — use support-product instead")subtitle field is unused — ignore it")Never duplicate what the schema already communicates clearly.
You need one of these to run this session:
Path A — Write access (recommended): A Sanity write token or the general Sanity MCP (OAuth). This lets you create a draft context doc, write instructions + filter to it during the session, and promote it to production when done. Production is never touched until you're ready.
Path B — URL params only: Use ?instructions= and ?groqFilter= URL query params on the MCP endpoint to test everything. At the end, provide the final content for the user to enter manually in Sanity Studio. Works with both base and document URLs.
Both paths are safe — neither modifies the production agent during the session.
Goal: Establish MCP access, set up a safe working environment.
Connect to the user's Sanity Agent Context MCP. Get the project ID and dataset from the user if not already known. The slug is only needed if they have an existing Agent Context document.
Set up your working environment:
Path A (write access): Create a new draft context doc by copying the existing one (if any) to a new slug like tuning-draft. All exploration and iteration happens against this draft — the production agent is untouched.
Path B (no write access): Use URL query params throughout the session:
?instructions="" — forces a blank slate (ignores existing instructions)?groqFilter=<expression> — applies a filter without writing to the context docCheck if the context document already has instructions content:
Verify you can query the dataset by running a simple GROQ query like *[0..2]._type to confirm access.
Output: Confirmed MCP access, safe working environment established (draft doc or URL params), any existing instructions surfaced to user.
Goal: Understand the dataset through conversation, not just exploration.
Retrieve the schema (the MCP provides this). Present the document types to the user in a clear list:
Here are the document types in your dataset:
article(14 fields)author(8 fields)category(5 fields)- ...
Which of these are the ones your agent will need to work with?
This is a conversation, not a monologue. Ask the user:
Suggest a filter. The MCP supports a groqFilter — a full GROQ expression that scopes which documents the agent can access. This is high-leverage — it reduces noise significantly and prevents the agent from querying irrelevant types.
The filter is a GROQ expression string, not just a type list. This means you can carve out exactly the document set you want:
_type in ["product", "support-article", "productFeature"]!(_id in path("drafts.**")) && _type in ["product", "article"]_type in ["product", "article"] && lang == "en-us"_type in ["product", "article"] && !(_id in path("drafts.**")) && defined(title)Based on the conversation, propose a filter:
Based on what you've told me, I'd suggest this filter:
_type in ["article", "author", "category", "tag"]This means the agent won't see
siteSettings,redirect,migration, etc. Does that sound right?
Apply the filter immediately. Once the user agrees:
groqFilter field to the draft context doc?groqFilter=<expression> to all subsequent MCP callsAll exploration from this point forward should use the agreed filter.
Output: A shared understanding of which types matter, known quirks, relationships, and an active filter. There's no point exploring types the production agent won't see.
Goal: Get concrete examples of what the production agent will be asked.
Ask the user:
What questions will people ask the agent that uses this context? Give me 5-20 examples — the more realistic, the better.
Examples might be:
These questions drive the exploration in Step 4. They tell you what query patterns actually matter.
For simple datasets, 5 questions is fine. For complex ones, push for 15-20.
Output: A numbered list of expected questions.
Goal: Answer each expected question using the MCP, track what works and what doesn't.
Steps 4–6 are iterative, not sequential. Verify findings with the user as you go. Don't explore 15 questions, draft everything, then discover half your claims don't hold up.
Work through the expected questions one by one (or in logical groups). For each question:
Critical: Do not assume. If a query returns empty results or unexpected data:
Track your findings in a simple table:
| # | Question | Query | Result | Finding |
|---|---|---|---|---|
| 1 | "Recent articles" | *[_type == "article"] | order(publishedAt desc)[0..4] |
✅ 5 results | Works with schema alone |
| 2 | "Articles by author" | *[_type == "article" && references(authorId)] |
⚠️ Empty | Authors linked via contributors[].person, not direct ref |
| 3 | "Published only" | *[_type == "article" && status == "published"] |
❌ No status field |
User confirms: use !(_id in path("drafts.**")) instead |
Adapt to scale:
Output: A findings table with verified results for each expected question.
Goal: Distill findings into concise, factual Instructions content.
Review the findings table from Step 4. Include only items marked ⚠️ or ❌ — things that required non-obvious patterns or failed with the obvious approach.
Write the Instructions as short, declarative statements organized by category:
### Rules
- Always filter drafts: use `!(_id in path("drafts.**"))` — there is no `status` field
- Always include `[_lang == "en"]` for localized content unless user specifies otherwise
### Schema notes
- `contributors` on `article` is an array of objects with a `person` reference to `author` — not a direct author reference
- `hero` on `article` is a reference to `mediaAsset`, not an image field
- `body` on `page` is a Portable Text array, not a string — use `pt::text(body)` for plain text search
### Query patterns
- Articles by author: `*[_type == "article" && contributors[].person._ref == $authorId]`
- Published articles by date: `*[_type == "article" && !(_id in path("drafts.**"))] | order(publishedAt desc)`
### Known limitations
- `subtitle` field on `article` is unused — ignore it
- `relatedArticles` is manually curated and often empty for older content
Keep it tight. Each line should pass this test: "Would an agent with the schema alone get this wrong?" If you're unsure, test it — try answering 2-3 questions with ?instructions="" and see what the model gets wrong on its own. That's your empirical baseline for what actually needs to be here. If no, cut it.
Do not include:
Output: A draft Instructions block, typically 10-40 lines depending on dataset complexity.
Goal: Ensure every line in the draft is backed by evidence.
Go through the draft Instructions line by line. For each claim, show the user:
Example:
Claim: "Always filter drafts using
!(_id in path("drafts.**"))— there is no status field"Evidence:
*[_type == "article" && defined(status)][0..2]→ 0 results.*[_type == "article" && _id in path("drafts.**")][0..2]→ 3 draft documents found.Is this correct?
If the user corrects a claim, update the draft immediately.
If the user adds new information ("oh, and you should also know that..."), add it to the draft and verify it the same way.
Output: A verified Instructions block where every claim has been confirmed by the user.
Goal: Get the Instructions and filter into production safely.
Present the final Instructions content and filter to the user for one last review:
Here's the final configuration:
Filter (GROQ expression):
_type in ["article", "author", "category", "tag"]Instructions: [final instructions block]
Ready to deploy?
Path A (write access):
instructions and groqFilter fields to the draft context doc## Custom instructionsinstructions and groqFilter fields to match, or update the production agent's MCP URL to point to the new slugPath B (no write access):
https://api.sanity.io/vX/agent-context/{project}/{dataset}/{slug}?instructions=<URL-encoded>&groqFilter=<URL-encoded>
After deployment, verify: Query the production MCP endpoint and confirm the instructions and filter are active.
Output: Instructions and filter live in production, verified working.
This workflow scales to any dataset size:
Small dataset (3-5 types, 5 questions):
Large dataset (50+ types, 20 questions):
The filter matters more for large datasets. A 50-type dataset where the agent only needs 8 types benefits enormously from a filter.
Throughout the session, maintain a mental model of:
- [ ] MCP access verified
- [ ] Working environment set up (draft context doc or URL params)
- [ ] Existing instructions reviewed (if any)
- [ ] Schema discussed with user
- [ ] Filter agreed and applied
- [ ] Expected questions collected
- [ ] Questions explored and findings tracked
- [ ] Draft instructions written
- [ ] Each claim verified with evidence
- [ ] Instructions deployed to production
- [ ] Production deployment verified
This checklist is your progress tracker. Share it with the user periodically so they know where you are in the process.
Make data-driven prioritization decisions faster
Draft PRDs, status updates, and stakeholder presentations
Example
Create executive summary of Q3 roadmap, monthly progress report, feature launch announcement
Save 3-5 hours/week on communication overhead
Prerequisites
Time Estimate
30-60 minutes to see productivity improvements
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use for user story writing, competitive research, roadmap prioritization, stakeholder communication, and PRD drafting. Best for reducing repetitive documentation and research work.
✗ Avoid when
Avoid for strategic product vision (requires deep customer empathy), pricing decisions (needs market and financial expertise), or when face-to-face customer discovery is more valuable than speed.
mattpocock/skills
parcadei/continuous-claude-v3
cursor/plugins
ailabs-393/ai-labs-claude-skills
pproenca/dot-skills
ailabs-393/ai-labs-claude-skills
I recommend dial-your-context for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
dial-your-context is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
Registry listing for dial-your-context matched our evaluation — installs cleanly and behaves as described in the markdown.
dial-your-context fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
Useful defaults in dial-your-context — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
We added dial-your-context from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
Solid pick for teams standardizing on skills: dial-your-context is focused, and the summary matches what you get after install.
Keeps context tight: dial-your-context is the kind of skill you can hand to a new teammate without a long onboarding doc.
dial-your-context is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
I recommend dial-your-context for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
showing 1-10 of 70