AI Engineer Europe 2026
Combine Skills and MCP to Close the Context Gap
Read the talk
Combine Skills and MCP to Close the Context Gap
An agent can have the tools to change a database and still miss its security rules. Supabase’s skill shows how product guidance turns access into safer, more effective work.
From a talk by Pedro Rodrigues
Before you start: Basic familiarity with SQL tables and views, database permissions, and agents that call tools will help you follow the examples.
What does an agent need beyond access?
What does an agent need to use a complex product correctly once it has tools to operate it? The debate over MCP versus skills obscures their complementary roles. Pedro Rodrigues, an AI tooling engineer at Supabase, approaches the question through the experience of writing a product skill—a document he says demanded more work than any single document since his master’s thesis. He also introduces himself as a Lisbon AI Week co-founder. The difficulty is not producing Markdown; it is deciding what guidance a complex product needs to give an agent.
A capable agent can complete routine work yet miss a feature introduced after training, omit a security requirement, or choose an awkward workflow. At Supabase, missing row-level security, or RLS, instructions can expose application data. Rodrigues also observes agents relying on stale training knowledge instead of retrieving current documentation. The missing ingredient is product-specific guidance: what must be protected, where current information lives, and how the product team expects work to proceed.
The Agent Skills format makes that guidance available progressively. A skill is a folder containing a main SKILL.md file and optional supporting resources. Its front matter supplies the name and description that help an agent decide whether to load it. The body contains instructions; bundled scripts can perform actions; reference files hold material that need not enter context immediately. This separation keeps initial context small, but it also makes later retrieval a decision the agent must actually take.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
A SQL view can reopen protected data
Supabase tested Claude Sonnet 4.6 with the same prompt under two conditions: access to the Supabase MCP server alone, and MCP plus the skill. The task was to create a SQL view over an existing table in a collaborative application. The table already had RLS enabled so users could see only information belonging to them. Creating a view should preserve that isolation.
The consequential detail was security_invoker = true. Under PostgreSQL view semantics, a default view uses the view owner’s permissions and RLS policies for underlying relations. A privileged owner can therefore bypass the restrictions that apply to an ordinary caller—the risk in this demonstration. Setting security_invoker = true makes the underlying checks use the caller instead. This option requires PostgreSQL 15 or later; a default view does not universally bypass every RLS policy regardless of ownership.
For a collaboration table named public.documents, the essential SQL would look like this:
sql
CREATE VIEW public.document_summary
WITH (security_invoker = true)
AS
SELECT id, owner_id, title
FROM public.documents;
The existing table policies still determine which documents a caller can read. The view option preserves the caller’s security context rather than replacing those policies. In Rodrigues’s comparison, the skill-equipped agent included the option; the MCP-only agent omitted it and exposed data through the view. Access to a tool did not supply the knowledge needed to use it safely.
That example motivated the broader Supabase Agent Skill, which Rodrigues announced after several months of development and publicized with a live tweet on stage. Its instructions encode lessons about operating Supabase correctly. The file format provides a container, but the conventions for writing effective free-text guidance are still evolving.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Keep documentation authoritative and essential checks unavoidable
The first authoring principle is to avoid duplicating product documentation. A skill should tell the agent where and how to find current information, rather than becoming a second copy that can drift. Simply providing a link may not be enough: Rodrigues found that instructions needed to insist on retrieval because agents otherwise continued from their training knowledge.
Supabase’s experimental documentation over SSH explores another way to make retrieval familiar. It exposes documentation through a virtual filesystem that agents can navigate using familiar filesystem and Linux-style tools. The premise is that an interface resembling files and directories will be easier for agents to explore. It is a documentation interface, not an unrestricted remote shell, and easier navigation remained the experiment’s premise rather than a measured result presented here.
The second principle addresses the weakness of progressive loading: optional information can remain unread. Rodrigues observes that fetching fresh information and making tool calls impose costs, encouraging agents to fall back on training data. Even loading SKILL.md does not ensure that the agent reads its references. In Supabase’s experiments, getting an agent to load two necessary reference files was difficult; expecting three or four was still less dependable.
Supabase initially placed its security checklist in a reference file and found that agents frequently missed it. Moving the checklist into SKILL.md made it part of the main instructions. This produces a useful division of responsibility:
- Current product details: Retrieve them from the authoritative documentation.
- Stable, indispensable rules: Put them directly in
SKILL.md. - Optional depth: Keep it in references when skipping it will not undermine the task.
Avoiding duplicated documentation does not mean hiding the product’s essential security rules behind another retrieval step.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Prescribe the schema workflow
The third principle is to be opinionated. A product team knows which workflows fit its system and should make that knowledge explicit. Supabase supplies a database, storage, authentication, and other backend features; an agent working with it can manipulate the database schema directly. The skill therefore needs to explain how that work should proceed, not just which commands exist.
Rodrigues describes this schema-development sequence:
- Iterate with direct DDL on a development or staging database until the schema is satisfactory.
- Run the advisors, which act as linters for database security and performance issues.
- Fix the reported issues before finalizing the change.
- Create the migration file after the schema has settled.
The development-or-staging restriction matters: this is not permission to experiment freely against production. Delaying the migration file also prevents the agent from generating a new migration for every intermediate schema edit. This is the workflow presented in the talk; the current skill has since added distinctions between declarative and imperative projects.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Test the Markdown through agent behavior
A skill can be evaluated through the behavior it induces. Instead of testing the Markdown as text, run an agent on a task and inspect what it does: its tool calls, reasoning, and completion of the requirements. Rodrigues treats these evaluations as analogous to CI tests, with the document supplying instructions to the system under test.
The early evaluation used six scenarios involving ongoing Supabase projects, four agent/model configurations from two vendors, and three conditions:
| Condition | Tool access and guidance |
|---|---|
| Baseline | Neither MCP nor skills |
| MCP only | MCP server, without the skill |
| MCP plus skill | MCP server and product instructions |
Task completeness was graded in Braintrust. Rodrigues describes a four-grade score, but does not define the grading levels in the talk. The design has no skill-only condition, so it tests the benefit of adding the skill to MCP rather than isolating the skill’s performance without tools.
Rodrigues reports that MCP plus the skill achieved higher task-completeness scores than either baseline or MCP alone on every tested model. The configurations were Claude Code with Claude Opus 4.6 and Claude Sonnet 4.6, and Codex with GPT-5.4 and GPT-5.4 mini. The launch article characterizes these as small-sample early results. They support the practical value of product guidance in these scenarios without establishing which particular instruction caused each improvement.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Start small and revise the guidance
Supabase already had the MCP tools. What it needed was guidance on how to operate the product. Skills provide an agent-agnostic format with growing adoption, making the instructions reusable across supporting agents. The authoring approach follows from that: point to one documentation source of truth, prescribe the workflows that matter, and begin with a minimal skill that can expand through testing and new versions. The bottleneck here is guidance, not merely access to more context.
Rodrigues closes the main presentation by pointing to the launch post and project installation. The companion article gives the installation command:
bash
npx skills add supabase/agent-skills
The release makes the skill available to try in a project and iterate on as its instructions evolve. Before audience questions, Rodrigues also announces a launch giveaway: scanning the displayed QR code and signing up for Supabase offered a chance to win a Mac mini.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Semantic retrieval and repository distribution
An audience question about vector databases and RAG extends the retrieval discussion. Rodrigues reports increasing customer exploration of vectors, without giving customer counts. His particular interest is embeddings for semantic search: documentation exposed through SSH could be searched by meaning, rather than only through filesystem navigation and text matching. The proposed extension is to augment familiar Bash-style tools with semantic retrieval. It is a possibility for the SSH interface, not a capability demonstrated in this talk.
The next question is operational: how should an organization distribute its skills—directly, through repositories, or with a package manager? Rodrigues describes distribution as an unsettled part of the ecosystem. The Vercel skills CLI offers one route; plugins offer another, bundling skills with MCP servers and other components, but with packaging tied to particular agent environments.
Supabase’s internal approach is to package skills in the repositories themselves. Rodrigues gives .claude and .cursor plugin packaging as examples of making repository knowledge discoverable to an agent. The skills package can then fetch skills from public repositories or repositories the user can access. He sees other companies following the same pattern: keep the skill with the project knowledge it describes, then distribute it through the available installation mechanism. That gives teams a concrete way to ship guidance while the broader registry and plugin ecosystem continues to develop.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Resources
From the talk
Rodrigues explains the skill's design and publishes the early four-model evaluation.
Installable Supabase skills with instructions for repository and plugin distribution.
The experimental documentation interface exposes markdown through familiar filesystem commands.
A command-line tool for discovering and installing skills across coding agents.
Further reading
- PostgreSQL view security semanticsDocumentation
Explains view ownership, permissions, RLS policies, and security_invoker.
Practical guidance for policies, grants, testing, and safely exposing views.
Defines skill folders, metadata, instructions, optional resources, and progressive loading.
Current connection instructions and security guidance for Supabase's MCP server.
Updates since the talk
The July 2026 release expands evaluation into a public benchmark and regression framework.
Read the complete timestamped transcript
- 0:00
[upbeat music] All right, I get, I have, uh, the green light, so we can get it started.
- 0:18
Uh, hello, everyone. Uh, you might have noticed that the, the title's, uh, changed a bit from the one that we have in, on the schedule. That's because when I've submitted the talk, uh, there's the MCP versus skill debate was still going on, was a hot topic.
- 0:32
I think now we settled on they're b- both different. They all, uh, have their own roles, and now the, I think the debate is more on the MCP versus CLI.
- 0:40
So I thought it would be more useful to come and explain how we've wrote our Supabase skill, uh, and the lessons that we got from writing, uh, the, this document, 'cause I've never spent more time writing a single document since I've wrote my master thesis.
- 0:57
Okay? So I know that writing a skill sounds simple, but it can be very complex, especially when you have a complex product like Supabase. Um, for starters,
- 1:09
I'm Pedro. I'm, uh, an AI tooling engineer, uh, at Supabase. I'm an MCP enthusiast, AI in general. Uh, feel free to connect me on LinkedIn. Uh, and I'm al- also a co-founder of the Lisbon AI Week in, in Lisbon, will be on, uh, late October this year.
- 1:26
And if we're talking about me at the moment, I usually prefer, uh, doing this on a dark, darker, um, darker mode. I don't know. How many of you prefer dark mode over light mode?
- 1:39
The majority. I thought so. So let's do this presentation on dark mode instead. [laughing]
- 1:45
So we, I think we can all agree that agents are already smart enough, right? They can b- do very cap... They are very capable of doing mundane tasks by themselves.
- 1:56
But, uh, spe- when you present a task about something that they've haven't seen yet, or you've updated since they were trained, like your product, for example, they need the right guidance.
- 2:08
Uh, for ex- for example, uh, at Supabase, we noticed that they would usually either miss some, some security pitfalls that we have, uh, like role-level security instructions that, uh, they have to set, uh, to, to basically not expose your app.
- 2:22
Um, they could just usually operate on stale knowledge, uh, on their training data, and they are very lazy to, and very stubborn to admit that they don't know, uh, and they do need to find fresh information.
- 2:35
Um, and also, we would like to guide them on specific workflows that we think are the most optimized for agents, uh, on our product. So for starters, how many of you know or have readen a skill before?
- 2:51
Okay, so what I'm going to say is pr- probably not new for the most of you, but just to get an introduction on skills. So skills, um, are folders containing instructions, scripts, and resources that agents discover, right?
- 3:04
Um, progressively they discover. This is the main selling point of skills. Uh, and they, they have this envelope called front matter, where they have the name and the description.
- 3:13
This is how the agent is going to decide when to load the skill. Then they have the actual instructions inside the file, the main file called skill.md, and then optional bundled resources like scripts to perform actions, um, or reference files that the main file can reference for more information that doesn't have to be loaded immediately to context.
- 3:35
Uh, so we tested out, uh, at Supabase. We experienced giving the same agent, uh, in this case was Claude Sonnet, uh, 4.6, uh, the same prompt for a simple task.
- 3:48
Like, we had an app, like a collaboration, a collaborative app, and we wanted to create this new SQL view, right, on top of a table that already had row-level security enabled.
- 3:58
So the users could only see the information that belonged to them. Um, we gave, uh, we gave them, uh, just the, the MCP, uh, o- on one, uh, condition, and the MCP plus the, the agents, uh, the agent skills.
- 4:14
And the result was, well, the expected. Uh, if you don't know in Postgres, if you create a s- a skill over, uh, a table, uh, on top of a table that has RLS enabled, if you don't explicitly pass that, um, that flag over there, the security invoker equals true, it will bypass the RLS.
- 4:33
So basically, the view will expose data that is not dis- exposed by default on the, uh, uh, on the table. So the agent with the skill, with the knowledge, was able to get this, uh, uh, th- this information implemented correctly and safely, while the one that only had access to the integration to the, to the m- to
- 4:53
the MCP tool did not. So for this, we decided, well, just like this, we wanted to, uh, enable agents to know how to work correctly with, uh, with Supabase.
- 5:07
So we decided to, we are announce- actually announcing today, uh, this, um, this Supabase Agent Skill that I've been working on on this couple, uh, couple passive months. And to make things official, I'm actually going to try something.
- 5:22
Wait. I'm going to live tweet it on stage. So it's live. [clapping]
- 5:37
All right. So, uh, what exactly is this skill about, and what lessons can I share with you? So if you're building a skill for your product, uh, you can build one like we did.
- 5:47
And happy to discuss the, all details, like this is free text- text, and we haven't achieved a, a standard for it. So happy to, to chat about it later.
- 5:56
Uh, so to break down on some principles that we, um, converge to, the first one is that- Don't duplicate information. Yeah, like treat s- uh, skills as a document, uh, documentation for yourself, and you will not do- uh, um, duplicate your documentation, right?
- 6:12
You already have documentation on your product. Just point the agent to it, to the most up-to-date. You'll have to be very stubborn with the model to go to ask them to go f- uh, s- search the, the web or your documentation.
- 6:26
Provide the guidance, the tell where to and how to find the documentation, but be very persistent with it, uh, to go for it.
- 6:36
We're also, uh, did, uh, run a little experiments, and this is, uh, still, um, well, as I said, uh, an experiment and yet to be, um, uh, bit, uh, um, we're still figuring out the details.
- 6:50
But we also announced quite recently, and you can see it, you can read it on our blog, we're expo- we're basically exposing our documentation through, uh, SSH. The main reason behind it is that the agents can now look for the documentation like it was a file system.
- 7:06
So they're very familiar with file systems in general or navigating them, finding files and information on, uh, using Linux-based, um, tools. If we expose, if we give them this interface to also do this but remotely, uh, w- our premise is that they will have easy, um, ease to, to navigate the, the agent.
- 7:26
So would also would love a- after the talk or during the, uh, the conference to see and to hear your opinions on, on this idea. The second principle that I got, that I ge- I have for you is that if something can get skipped, it will be skipped.
- 7:44
What I mean by this is that besides, uh, new information on, uh, searching online, so agents, uh, like fetching information online or tool calling, it's expensive for, for agents, so they mostly defa- uh, default to their training data.
- 7:59
The same is true for reference files. We've noticed that, uh, even if, uh, when the, the agent loaded the skill, uh, it will, uh, even if it had reference files there, uh, it will be very lazy to load them.
- 8:14
And even if it loads one reference file, uh, if your problem requires more than one, the information that it's more the, uh, in more than one file, uh, it will most likely will not load two files, right?
- 8:26
It's almost impossible and not, not even starting on three or four. Um, so you have to be, um, very critical about what you put on your skill.md file from the beginning.
- 8:38
You put information that it's likely not to change, like in our case, a security checklist about Supabase, um, that we didn't really want it the agent to miss at all.
- 8:49
Uh, so we decided this cannot be on a reference file. We actually started by putting it on a reference file, and it usually missed it, so we put it on the skill itself.
- 8:57
So if you have any, um, information that the agent can just not miss and, like, defines your product, goes to the skill.md file. Do not afford it to put on, on a reference file.
- 9:11
And lastly, uh, the third principle that I have for you when writing a product skill is to be opinionated. You know your product the best. You know how to work with it.
- 9:21
You know how your users, or you should know how your users are using it. Um, don't be afraid of guiding the agents on what, on workflows, uh, that you think are the most effective when working with your product.
- 9:35
In our case, for example, uh, managing a database schema, right? I haven't, I actually haven't, uh, asked this and should have i- in the, the beginning. How many of you know Supabase and what Supabase does?
- 9:46
Okay. For, so for the ones who, who don't know, we're basically a back-end service. We provide, uh, a storage b- database, authentication, and other f- uh, features that you would need to create a, uh, back end, uh, out of the box.
- 10:00
So we provi- or as I said, I pro- we provide a database, and the agent can interact and manipulate your, your schema, right? Uh, we found that this, uh, for our platform was the best workflow for the agents to efficiently, uh, manage the schema.
- 10:16
So in this case, it run, uh, direct DDL operations, like change the schema freely on your d- um, development or staging database. Once you're happy about it, we provide, uh, an advisor who are basically linked, uh, to give any, uh, security or performance issues that the database cou- could have, fix them, um, and only then create the
- 10:40
migration file. So this will prevent the agent to create a migration file every time it changes the schema. We found this li- to be the best, um, workflow to manage the schema, so for us, it should be in the, um, in the skill when working with, with, with Supabase.
- 10:59
How we tested this skill? So we're living, uh, a very interesting times where we now can test free tests. We, we can now test, um, documents. We can now test documentation, right?
- 11:10
Uh, this would be, uh, completely bonkers to think, uh, years ago. Now I've basically been testing a markdown file. And how did we do this? Uh, through evals. Uh, so for those of you who don't know evals, evaluations for, short for evaluations, are basically, uh, tests that you can run m- mostly like you would run, uh, on
- 11:31
your CI. Uh, but the, uh, now instead of evaluating code, you're evaluating an agent, an LLM, and its behavior, what tools it's co- it's calling, wha- what's the, its reasoning, right?
- 11:41
And so we ran, on an early stage, we ran, uh, a set of six sp- specific scenarios for Supabase, so Sup- ongoing Supabase projects in different, uh, situ- uh, in different scenarios, right?
- 11:54
And we ran it against four different, uh, agents, uh, from two vendors, um, in three test conditions. So we wanted to test on a baseline, so no MCP, no skills, with just the MCP server and with the MCP server plus the skill.
- 12:09
All this was done based on a task completeness score, uh, four graded score, uh, that run on Braintrust. If you don't know them, they're around. They're sponsors of this, uh, conference.
- 12:21
Go, um, go to their booth and, and talk about it. It's a very cool product. So the results are, uh, are out here. Um- The skills plus the MCP, uh, outperform any other conditions on every model that we, we tested.
- 12:36
So we tested on, on Claude Code for Opus 4.6 and Sonnet 4.6, and also on Codex for GPT-5.4 and GPT-5.4 mini. Uh, so I think we can conclude that it's pretty na- unanimous that the skills were actually improving the performance, the task completeness score, uh, because they were providing the right guidance to, to the agent.
- 12:59
So we had already the tools. We already had an MCP server. We just needed the right guidance on how to operate with, with Supabase. Uh, it's agent a- agnostic.
- 13:09
Uh, most, uh, more and more agents are adopting this, uh, open standard, uh, on, on skills. Um, and currently, as I said, uh, in the beginning, the bottleneck is not the, uh, the context.
- 13:22
It's the guidance. So if you can take something from this talk, uh, when building a skill for your product, is that point for your single source of truth. Point to your documentation, basically.
- 13:36
Be opinionated. You know your product. Don't be afraid to, to show it. And start minimal. Any model vendor, let's say whether that's Anthropic, OpenAI, on any blog post about skills, you will read start s- uh, start minimal, start slow, and then iterate, expand.
- 13:55
Don't be afraid to create new versions for it.
- 14:00
So if you want to know more about it, we, uh, we actually wrote a, a blog post. Uh, it's live today. You can check it out on my Twitter account, on, on Supabase, um, blog.
- 14:12
Uh, or you can just run this, uh, this command and install your, um, install it on your project and start to s- to, to use them now. That's all.
- 14:23
I'll be around. And once again, thank you very much. [audience applauding]
- 14:32
I do have one more thing to show you. So we're running a g- a, a giveaway. If you want to, to have a chance to win a Mac Mini, uh, just scan the, the QR code,
- 14:44
uh, sign up for Supabase, and good luck.
- 14:49
Do I have time for any questions, if there's any?
- 14:53
Yeah.
- 14:54
Yeah? Okay. Yeah.
- 14:55
Uh, I actually have one. Uh, so since we're all moving into RAGs right now, uh, I'm just wondering how much of a demand do you guys see on vectorized databases, uh, on Supabase, right?
- 15:08
Hmm. It's a, it's an interesting, interesting question. So, uh, I mean, it depends. The, the... You, you, you're asking about, like, uh, how many customers are-
- 15:19
How much are you, um, having demand for vectorized databases?
- 15:22
There have been more and more, uh, as the, as the days passed. Like, um,
- 15:28
the use cases for, for vectors are mainly for embeddings, right?
- 15:31
Yeah.
- 15:31
Yeah. And semantic, uh, uh, uh, there are many use cases for, for embeddings. The one that I'm most interested about is, uh, um, semantic search, right? That you could use to provide even more context, uh, for example, through the SSH, uh, exposing, uh, the docs through the SSH.
- 15:49
You can now, instead of naively, uh, let them navigate with the, the bash tools, you can augment the tools, the already known bash tools, into providing some sort of, uh, semantic search.
- 16:02
So I do see a very big potential on vectors. On our data, definitely customers have been exploring more this, uh, this solution. Thank you for the question.
- 16:14
Thanks.
- 16:16
Yeah.
- 16:17
So thank you for the talk. Very interesting. How do you distribute the skills inside your organization? Do you,
- 16:25
do you just pass them? Do you have a repository? You have repository or do you use some package manager?
- 16:31
That's, that's an amazing, that's amazing question because, uh, currently one of the downsides or the, I would say the, the constraints of using skills is their distributions, uh, distribution system, right?
- 16:43
Uh, we're still finding the- there's still some players trying to reclaim, uh, the either the registry or the way to distribute it. So Vercel came up with the skills package.
- 16:53
Uh, we're seeing plug-ins, right, that you can bundle with MCP servers and other things. Uh, but they are model specific. So this is to distribute in general, skills in general.
- 17:04
It's already a pro- a problem for, for itself that we haven't solved it yet. Um, internally, we have, uh, we are packaging the skills on the, the repos them- themselves.
- 17:14
So if you want to, uh, create a plug-in, you just, uh, create a .claude, uh, plug-in or a .cursor plug-in or whatever in that repo, right? Uh, and then it's available, or, or it's discoverable, uh, if the, if the, the repo it's, it's, it's open sourced or, or you have access to it, uh, you can use the
- 17:35
skills package to, to fetch it. So yeah, this... And this is how I've seen the other, uh, companies, uh, uh, distributing their skills. Like a repo, a skill. Trying to package the, the skills into the, the knowledge.
- 17:49
Thank you.
- 17:50
Thank you. Are there any more? I think we have time for one more. Yeah. Yes.
- 17:58
I recently built something to build skills. Should we do a collab?
- 18:02
Sure. Let, let's talk after. All right. So once again, thank you very much. It was a pleasure to be here. I'll be around. Thank you. [audience applauding] [upbeat music]