AI Engineer World's Fair 2026
Skills are new features: Building Skill-Centric Harness — Yogendra Miraje, FactSet
Read the talk
Skills are features: building the harness that runs them
A financial research workflow shows how skill discovery, on-demand instructions, evaluation, and governance turn a general agent into a product.
From a talk by Yogendra Miraje
Before you start: Familiarity with system prompts, tool calls, and a basic agent loop will help you follow the harness design.
Give the agent a recipe
How do you keep an agent from rediscovering the execution path every time it performs a familiar task? For Yogendra Miraje, who introduces himself as a principal AI engineer at FactSet, that question sits inside financial data and research products. His earlier answer was a blueprint: a sequence of steps that tells the agent how to approach the work.
The opening example is a blueprint for NVIDIA earnings research and reporting. It breaks the work into a four-step recipe spanning retrieval, reasoning, and reporting. Looking back, Miraje recognizes the blueprint as an early, simple form of a skill: reusable instructions for completing a particular task.
The release of Agent Skills gave his team a shared format to adopt instead of maintaining its own blueprint standard. Anthropic launched Skills in October 2025; publication as an open standard followed in December. Miraje’s team moved from its internal recipes to skills and began building around them.
That changes the engineering question. In the audience, many people have written skills for Claude Code or Codex, but far fewer have added skill support to their own harnesses. The problem here is how to make skills work inside an agentic product—and how to keep that product coherent as its skill library grows.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Where features live when the agent is the interface
In a conventional product, users navigate screens, buttons, forms, and dashboards. In an agentic product, they may speak directly to an agent, or an agent may make decisions behind the scenes that guide them through the product. Once the agent becomes the main interface, where does the behavior formerly attached to those controls live?
The useful separation is who, what, and how:
| Component | Responsibility |
|---|---|
| Prompt | Who the agent is |
| Tools | What it can connect to |
| Skills | How it completes a task |
Skills provide a home for the business logic that shapes the agent’s behavior. In equity research and wealth management, workflows previously reached through buttons, menus, and screens can become skills. Skills become the product’s features.
That also changes who can contribute. Someone who understands the product can express how a workflow should run, without necessarily implementing a new screen. As more people in the company can author those features, engineers increasingly own the harness: the runtime that discovers, loads, and supports the skills.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Separate discovery metadata from instructions
A skill teaches an agent how to perform a specific task well. The model may already be able to attempt that task; the skill supplies the method it should follow. A simple package can be just Markdown. A more involved package can reference supporting files and executable scripts.
The heart of the package is SKILL.md, defined by the Agent Skills specification. Its front matter contains a name and description for discovery. Its body contains the instructions and business logic, including references to any supporting files or scripts. Keeping these responsibilities separate lets the harness advertise a capability without loading its full implementation into the conversation.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Build the smallest skill-aware harness
The minimum harness needs three components: a skill registry, a system prompt, and a file-read tool. If a skill runs scripts, it also needs an execution facility such as Bash or a code sandbox. Instruction-only skills do not require that additional execution layer.
A registry is a collection of names, descriptions, and paths. Miraje’s example has three capabilities:
| Skill | Input or work | Output |
|---|---|---|
| Company research | Web research about a company | Markdown |
| Report HTML | Markdown report | HTML |
| Report PDF | Markdown report |
The research step produces an intermediate document that either reporting skill can consume. The registry tells the agent what is available and where to read the instructions.
To expose those capabilities, concatenate each entry’s name, description, and path into the system prompt. Leave the skill bodies out. The agent first sees the catalog, selects a relevant skill, and then reads its file to obtain the instructions. This is progressive disclosure: discovery metadata is available up front, while task-specific instructions enter the context only when selected.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Follow the NVIDIA report through the loop
The agent loop keeps a messages array containing the conversation history. Each model call receives those messages and the available agent tools. A response requesting tools continues the loop; a response without a tool call becomes the final output. The essential sequence is:
- Call the model with the current messages and tools.
- If it requests tools, run them and append the tool interaction to the conversation.
- Call the model again with the updated history.
- When it returns without requesting tools, display its answer and stop.
Reading a skill is part of this same tool-driven interaction, so the loaded instructions become available to subsequent turns.
For a request to publish a report about NVIDIA, the agent first sees the available skill metadata. It activates company research, performs web searches, and produces Markdown. It then reads the reporting instructions and turns the research into HTML. The activation slide shows those two stages: company research followed by the build-report skill.
Miraje then displays an example report output. The important connection is the handoff: company research supplies the content, and the reporting skill supplies the presentation procedure. Both run through the same agent loop.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Descriptions are routing signals
Why did the NVIDIA request produce HTML when the registry also contained a PDF skill? The PDF description restricted its use to requests that explicitly ask for a PDF report. The word PDF supplied a distinguishing trigger; the generic report request did not activate it. The description is part of the routing mechanism, not merely a label for a capability.
A compact SKILL.md example makes that boundary explicit:
markdown
---
name: report-pdf
description: Use only when the user explicitly asks for a PDF report.
---
# PDF report
Convert the Markdown report into a PDF document.
The description expresses when the user needs this skill. The body expresses what to do after selecting it. Describing only the implementation—such as saying that a skill converts documents—would leave more of the selection decision implicit.
Descriptions must also remain distinct and current. Overlapping descriptions make selection ambiguous; stale descriptions can prevent a skill from being triggered for the requests it should handle. This matters particularly in products for nontechnical users, where routing is mostly model-driven. Users should not have to memorize the skill catalog to obtain the right behavior.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Draw skill boundaries around user intent
Miraje initially organized his library around narrow data categories, including estimation analysis and fundamentals. Real requests did not follow those categories. They reflected work that users needed to complete, which forced repeated refactoring of the library. Starting with narrow use cases was useful; treating those initial boundaries as permanent was not.
The resulting shift is from data-oriented capabilities to recognizable workflows:
| Initial framing | User-intent framing |
|---|---|
| Estimate analysis | Earnings preparation |
| News and analyst ratings | Pre-market preparation |
An earnings-preparation request may need estimates, but estimates are only part of the job. Naming and scoping the skill around preparation gives the agent a procedure aligned with the user’s goal. The same reasoning brings news and analyst ratings together under pre-market preparation.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Evaluate the skill with the model that runs it
After a model upgrade, Miraje’s agent began failing to obey its skills even though no lines in the skills had changed. On investigation, he found that the new model appeared to emphasize the beginning of a skill, while critical instructions sat at the end. This was a reported failure in his system; the talk does not identify the models or quantify the failures.
The operational consequence is straightforward: rerun evaluations whenever the model changes. A skill is a behavioral contract tied to a model, not documentation that can be assumed to retain the same effect across upgrades. Keeping the Markdown unchanged does not establish that the resulting behavior is unchanged. Evaluation has to test whether the new model still follows the procedure and its critical instructions.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Change discovery as the catalog grows
For a small library, putting every skill’s metadata into the system prompt is a workable starting point. Miraje suggests considering shortlisting once the library exceeds roughly ten skills; this is a tentative design heuristic, not a measured routing limit. The next step is to select a relevant subset before constructing the prompt.
Two approaches can supply that shortlist:
- Embedding similarity search: retrieve skill entries that are similar to the user’s request.
- A smaller model: ask a separate model to select the entries that should be exposed to the main agent.
Both approaches move part of discovery ahead of the main agent call. The prompt now contains a selected catalog instead of the entire library.
With hundreds of skills, Miraje calls for hierarchy, metadata filters, and governance to keep the library searchable and coherent. At that scale, the problem extends beyond fitting descriptions into context. The system needs an organized way to find the right part of the library and maintain meaningful boundaries between its capabilities.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Give the library an admission process and owners
Miraje names five aspects of skill-library governance: admission, ownership, boundaries, lifecycle, and governance of the library as a whole. These need not become a bureaucratic bottleneck. Automated checks combined with human review can borrow practices already familiar from maintaining code.
Admission asks whether a proposed skill should exist independently or belong inside an existing skill. An automated registry gate, with a human review loop, serves a role analogous to pull-request review. It provides a point to examine the proposed addition before it becomes another capability the agent must distinguish and maintain.
Ownership answers who keeps the skill working. Application teams should maintain skills just as they maintain product features, with named maintainers analogous to code owners. Making authorship accessible to more people does not remove the need for someone to remain accountable for the resulting behavior.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Maintain behavior, coherence, and access boundaries
Skills also need a lifecycle. Miraje recommends semantic versions, deprecation warnings when retiring skills, and changelog entries that record changes. Those practices make the evolution of a capability visible to the teams that depend on it.
The library needs maintenance beyond individual files. Periodic audits and skill-validation checks help preserve coherence as the number of skills grows. Just as a well-designed product has features that fit together, a useful skill library should remain understandable as a collection.
Finally, skills need explicit tool boundaries. Miraje recommends tool allowlists and access-controlled tools. A declared list and an enforced permission boundary are different: the current specification’s allowed-tools field is optional and experimental, and support varies by implementation. The harness and tool layer must enforce authorization; putting a tool name in a skill file does not establish access control.
Treating skills as features makes the harness a central engineering responsibility. It must support contributions from people who understand the product while preserving reliable execution. As the library grows, routing requires a different mechanism, not just further tuning of the original prompt. At enterprise scale, ownership, lifecycle controls, coherent discovery, and enforced boundaries become part of operating the product itself.
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
The portable skill format, including SKILL.md metadata, supporting files and validation requirements.
Further reading
Anthropic's original explanation of skill packages, progressive disclosure, executable scripts and evaluation.
Implementation guidance for advertising available skills and loading instructions and resources when needed.
Example skill folders, a starter template and installation instructions. Individual skills have different licenses.
- Building agents with SkillsArticle
Explains how a general agent runtime combines with reusable domain expertise, including financial workflows.
Read the complete timestamped transcript
- 0:00
[on-hold music] Hi, everyone. I'm Yogi.
- 0:15
I work at FactSet as principal AI engineer. We are a financial data and research company. I'm going to talk about how to build skill-centric agentic products, and I'm going to post slides so you don't have to keep, uh, taking photos.
- 0:34
So that's my X handle, [REDACTED:username]. Um, so let's connect there, and, uh, let's begin.
- 0:49
So in the last year's talk in this very conference, I talked about blueprints and what blueprints were really a simple set of steps or recipe that you can hand over to agents so that agent doesn't have to discover its path every time.
- 1:10
And when I look back, it was simply a skill in a very naive form.
- 1:17
And a lot has changed since then. Anthropic has shipped skills in last year October, and even warned us not to build agents. But on serious note, since Anthropic had already open sourced the skills, there was no point in trying to maintain our own standards, so we moved away from blueprints and just adopted
- 1:42
skills fully. And this talk really inspired me to build skill-centric agent, and I'm going to share some of my learnings from the journey.
- 1:55
So a quick raise of hands, how many of you really build skills here?
- 2:02
So almost all of you. Now, lower your hands if you have built that only in context of Claude Code and Codex, and raise your hand if you have, like, built your own harness and added, you know, skills to that.
- 2:19
So okay. So I see a few hands. So reason I'm asking is, when I see most of the online discourse, it's about, you know, coding harnesses and skills in context of the coding agents and how to write great skills.
- 2:35
Like, so we need that, but today I'm not going to talk about that. What I'm going to focus on is skills in the context of agentic products and how do you really add support for skills in, in your own harness and how to scale it at enterprise scale.
- 2:55
So traditionally, product used to look like this, a surface made of screens,
- 3:01
buttons, forms, and dashboards. The user navigated this UI.
- 3:08
But nowadays, we are seeing more and more these kind of interfaces where agent is at the forefront.
- 3:15
The user either talks to the agent or agent behind the scene is the main decision-maker, helping users navigate your product.
- 3:26
Now, if the agent becomes the main interface for your product, then where do features live?
- 3:37
This framing of who, what, and how really helps to answer that question. Prompts define who the agent is, tools define what it can connect to, and skills really tell you how a task gets done.
- 3:53
And this is the great place to keep your business logic that shapes your agent's behavior. So skills are the new features, and you can see this with this example.
- 4:06
So equity research and wealth management are two very important workflows in, uh, finance, and these all used to be the buttons, drop-downs, and screens, and now they are merely skills.
- 4:23
One of the most, uh, underrated thing about skills, especially when talking about agentic products, is how it has enabled to build skills for anyone who has good understanding of the product.
- 4:37
So if skills are new features and these new features can be shipped by anyone in the company, the question is: What's the role of engineer then?
- 4:47
The role of engineer is shifting from shipping features to shipping harnesses, harnesses that are smooth vehicles for your skills to run. But before diving into that, let's just get to the basics and try to understand what skill is.
- 5:04
The dictionary meaning of skill is the ability to do something well, and what it means is that your model can live with it, without it, but it obviously gonna do better in presence of skill.
- 5:20
A better definition for agent skill is a standardized way to teach AI agents how to do a specific task well.
- 5:29
And a simple skill could contain just, like, a markdown, but a very complex can have multiple references to the files and executable scripts.
- 5:43
The skill.md is the heart of your skill. Name and description in the front matter are the key, uh, things that will help you to discover the skill, and the business logic and instruction goes into the body of the skill, and which will also contain references to the files and scripts.
- 6:04
So let's see how to add a skill support in your harness.
- 6:08
So what do you need? To do like a bare minimum skill in your harness, you only need these three things, like skill registry, a system prompt, and a basic file read tool.
- 6:21
If you are running scripts, then obviously you're gonna need either Bash or maybe a code, uh, running sandbox environment. But this is the bare minimum requirement for adding support of skills like in your harness.
- 6:37
A simple skill registry looks like this. So what is a skill registry? It just like collection of skills with their name, description, and path. And we are going to see this with three example skills: company research skill,
- 6:56
which is supposed to do a very basic web search for a company and produce a Markdown;
- 7:02
a report HTML skill that will turn the Markdown into an HTML; a report PDF skill that will take that Markdown and turn into PDF.
- 7:15
Now, how does really the agent discover the skill? So you have your registry, then you form a skill concaten- concatenating the name description path and put it in your system prompt.
- 7:30
So if you notice, like we are only using the name and description path in, in the s- system prompt and not the skill body, and that's what, what they call about is progressive disclosure.
- 7:44
Agent is going to read the skills and only pick the skills that it is going to read and follow the instructions from there.
- 7:52
And then you need your agentic loop that will run the system prompt. Here, we are keeping track of all the messages in, uh, in that messages array, and we are going to call the model with messages and agent tools.
- 8:09
And for every turn, it's either looking for like making a tool call, and all the tool calls get appended to the messages. And if there is like no tool call, we are just gonna output the end of the, uh, program and going to show the output.
- 8:29
So in this case, what does like agent see in our example? So it sees that the skills that are available, and
- 8:40
then the activation part is when it looks for the company research skill for take this example of if you're asking to publish a r- report of NVIDIA, it is going to call company research, do the web searches, and then use the build report skill to produce the report HTML.
- 9:03
And the output looks like something like this.
- 9:07
Now, what are the learnings from some of this is the descriptions are really the routing signals. And what I mean by that. If you noticed, I had like two different skills, report HTML and report PDF, but when I showed the example, you saw only HTML.
- 9:28
And the reason is, I have this description saying that use the skill only when user ask for a PDF report. Focus on this word PDF, right? So that is the trigger word that helps agent to know which skill to pick, and that's why descriptions are called routing signals.
- 9:51
And it's very important to keep your descriptions aligned to the user request and not a- about the skill itself.
- 10:04
It's also important to keep your descriptions distinct enough so that agent d- doesn't get confused. And make sure don't let your skills get stale because these are the reasons why your skills don't get triggered.
- 10:21
One more like very important difference between like skills when we talk in agentic product context is most of the skills are only mo- module three one because for non-technical user, we are not adding that cognitive load to remember them, uh, to keep the track of all the skills.
- 10:44
Another learning that I had was cut by user intent and not by data model. So when I started building the skill library, I had very narrow use cases, so add a skill for estimation analysis or add for fundamentals.
- 10:58
But I got real use cases, and those use cases were not reflecting the data model. Those were really about the real use cases, and I had to refactor this multiple times, and that is okay, right?
- 11:14
You start simply with narrow use cases, and as you discover more use cases, you start refactoring your skill library.
- 11:23
So in practice, it means that, you know, instead of having an estimate analysis skill, you should have earning preparation skill. Instead of having a skill for news and analysis...
- 11:35
analyst rating skill, you should have a pre-market preference skill.
- 11:41
So we updated our, uh, stack to a new model, and our agent start, uh, failing because it was not obeying the skills. Nothing was changed, not a single line in the skill was changed, but still, it failed.
- 11:59
And when, when we digged under the hood, what was happening, it was that this like new model was very focusing on beginning of the skill. And- We had very critical instruction at the end of the skill.
- 12:15
So that's why it's very important to run evals, and skills without evals are really just wishful thinking.
- 12:24
Skills are not the documentation, and a lot of people treat them like that, and skills are really the contracts versioned to a model. So whenever you're upgrading a model, make sure to rerun, uh, your evals.
- 12:43
So when you have, like, a few skills, shoving them in the system prompt really works, but as soon as you start growing your skill stack, this falls apart. When you have, like, more than ten skill, maybe that's, like, a good point to think-- start thinking about, you know, how can you shortlist the skills that you're gonna add
- 13:06
to the system prompt? And this could mean just, like, having embeddings and have similarity search and shortlist those skills or a smaller model that can shortlist the skills and add to the system prompt.
- 13:20
The real trouble really starts when you have hundreds of skills. At that point, you really need hierarchy of skills and metadata filters and the governance in the place to keep your, uh, library searchable and coherent.
- 13:40
So there are like five aspect of skill library governance, and these are admission, ownership, boundaries, life cycle, and governance. Sounds very enterprise-y, right? But each of these really as- answer, like, a very core question,
- 14:01
and we will get to that in a second. But when you hear governance, it really doesn't need to be a red tape bottleneck. It really depends on how you're implementing it, how much automation is in place with proper human in the loop.
- 14:19
And the good news is that we can borrow a lot of good practices from code and apply them to the skills, and these coding practices, like, has worked for decades.
- 14:34
So what does admission even mean? What it means that should this skill even exist, or it should go to an already existing skill? And in practice, we build automated Git for the registries with human in the loop, and this is very analog-logous to how we do the PR review process.
- 14:58
Who maintains your skill? Just like how features are maintained by application teams, we need skills to be maintained by application teams, and like code owners, we need to have a dedicated skill owners, like named maintainers for your skills.
- 15:17
What happens to the skill over time? You need to have semantic version of the skills, and also whenever you're getting rid of skills, you need to have deprecation warnings and make sure that your changes are reflected in the change logs.
- 15:42
So when you have large number of skills, the library should still make sense, and just like features are cohesive in a good product, we need to make sure that we are conducting periodic audits and skill validation checks so that your skills would really make sense.
- 16:06
Whenever you have a lot of skills, it's important to have the allowlist tools in, in the skills, and your tools are supposed to be access control, and this is very important to keep the correct boundaries around skills.
- 16:30
So what are the main takeaways? The main takeaways are skills are the features in your agentic products. Our role is shifting from features, that is shipping features to shipping harnesses.
- 16:46
And routing mechanism doesn't get tuned as you scale. It changes the mechanism itself. And at enterprise scale, the skill library governance is really non-negotiable.
- 17:01
That was my talk. Thank you very much for listening. [audience applauding] [outro jingle]