LongCut logo

Let it Cook - Agent Skills aka Skills.md in VS Code

By Visual Studio Code

Summary

Topics Covered

  • Skills Optimize Context Windows
  • Craft Descriptions for Precise Invocation
  • Skills Fix Model Hallucinations
  • CLI Skills Enable Non-Coding Tasks
  • Skills Mandate Migration Workflows

Full Transcript

[music] [music] [music] Woohoo! [music]

Woohoo! [music] Heat!

Woo!

[music] [music] [music] [music] Woo!

Woo!

[music] [music] Woo!

[music] [music] >> [music] >> Welcome back everyone to the holiday edition of Let It Cook. This is our last cooking of the year. We took a little break from cooking, but we are back.

This is the show here on the VS Code channel where we break down all the latest in agentic development inside of your favorite code editor, VS Code. We

have folks all around the globe coming in and Jonas hates the intro music and we're going to totally fix it one day for sure. That is for sure. People from

for sure. That is for sure. People from

all over the place tuning in. I am super excited today because the team and the community just dropped agent skills all over the place and I have two of the

most amazing people in the entire world with me today to break it all down. Mr.

Harold and Tim, how's it going guys?

>> Hey, how's it going?

>> It is going great. We have our holiday thing happening and and I don't I I love it and I and [laughter] I I'm not sure how I feel about it, but I love it. We'll get rid of it. Don't

worry. We'll go back to some classic streams. So, we have like tropical snow.

Oh, you can't even see the tropical snowman. Let's see. We'll pull that

snowman. Let's see. We'll pull that some. We have like cozy night back here.

some. We have like cozy night back here.

Wow, this is great. We have this Streamyard just going crazy with the stuff. So, uh Oh, we have a boxing day.

stuff. So, uh Oh, we have a boxing day.

That seems like something I don't know what that is, but that sounds great.

Sounds like something maybe Tim knows about.

>> Don't worry about it. [laughter]

>> Holiday. All right, we'll go back to classic VS Code uh over here. This is

great. Um I hope everyone is having a great great December. I cannot believe it is the end of December already and I refuse to go on break. And it's because Harold and Tim won't let me to be honest with you because they're like, "Hey,

we're dropping a whole bunch of goodies and we got to try it out everywhere.

Gentlemen, I have to know what is an agent skill. [laughter]

I have no idea." So, so you just everyone you guys just dropped it on us and I was just like, okay, Eleanor um who I've been following for a long time on on Twitter has have been like this

huge um I'll drop her her Twitter in here. Huge believer of agent skills. I

here. Huge believer of agent skills. I

haven't really been following them at all because I'm too busy writing custom instructions and and um uh and and um agent MDs and all this other stuff. So,

what are agent skills and why should people care about them? We'll start with Harold. Yeah, I can take a stab. I think

Harold. Yeah, I can take a stab. I think

yeah, both Elellanar and Simon well our kind of influencer community have been really vocal about them. Uh Simon has some good blogs to figure out like why they work so well for him and Elanor as

well. So I think the excitement is

well. So I think the excitement is there's a ton of agent primitives out there. How do you customize your agents

there. How do you customize your agents and agent skills really came out as a really simple and effective way that that just works for people and it's easy to reason about. It's easy to create and

basically what they are at the basis it's a markdown file in a folder called skill.mmd and it has a description that

skill.mmd and it has a description that tells the agent when to include it and then that means the agent like as it sees like oh like this description cell

tells me I should look at this when I think about front end development it loads up the skill uh but then the magic is so that's that's like one progressive disclosure

aspect of agents um that that they can figure out what they need at the time of running and then load it up. And that's

that's uh agent skills has that kind of baked in as a primitive. Um

but there's more progressive disclosure that you can actually in the folder you can have additional files that then that markdown file can also point to and those could be scripts those could be

just uh documentation u that could be images even and just anything that the agent then can pulls in based on the description for the skill and can go go deeper. So it's very

easy to kind of bundle it up in a very minimal description and then a little bit of expanding into the prompt as it loads the skill.mmd file and then even like oh now you actually have a full

workflow and you can look at all these other files. So that's what agent skills

other files. So that's what agent skills are. Um they they are very close to

are. Um they they are very close to existing primitives we already have but but they they do have this sweet spot of nice distribution through this folder system.

>> Nice. How do you see them Tim?

>> Yeah definitely agree. I think the thing that excites me the most about agent skills is one of the things that kind of Harold was pointing to there, like the fact that it basically enables you to use your context window more

effectively. You know, [clears throat]

effectively. You know, [clears throat] >> I'm I'm sure a lot of people here watching this are very familiar with that idea, but basically what context window is about is effectively like you can only send a certain amount of

information to to the agent and to the model. And after that you have to start

model. And after that you have to start cutting things and truncating things and summarizing things. And up until now

summarizing things. And up until now probably you know if you wanted to teach the agent how to do something the solution you would be likely to reach for would be putting a load of stuff in your custom instructions. But then what

you end up doing is like every single time you do anything in that project then polluting the context window with a load of stuff that's just not relevant for the thing you're trying to do right

now. So whereas with agent skills what I

now. So whereas with agent skills what I can do is kind of create these little packages these little boxes you know of a spe that then gets pulled into the context window when I actually need it.

So I can effectively balance across the two. So for me what I would do is use

two. So for me what I would do is use custom instructions for things that are like basically going to be relevant every single time I use the agent. And

then agent skills are a great fit for things that are a little bit more specialist. you know, like routines or

specialist. you know, like routines or advice or workflows that are going to be useful some of the time but not all of the time.

>> That makes sense. So, what you're saying, Tim, is that my custom instruction that I have here that is

very um you it's kind of built up over the year, if you will. Um it just keeps going. This is this isn't a best

going. This is this isn't a best practice.

[laughter] Yeah, I think until now this has been like how custom instructions have turned out for many of us. And I think there's a bunch of things in here that you probably would want to keep in your custom instructions. So like as you were

custom instructions. So like as you were scrolling there was a section on like coding guidelines. That's probably some

coding guidelines. That's probably some something that I'd be tempted still to keep in custom instructions because it's so like broadly useful for many many like almost every activity you're going

to do with your agent. whereas when it gets to more specialist things, you know, talking I think there was a section on like how you do CSS for example, that thing could be a good fit for a skill because when the agent gets

into the mode of like, hey, now my job is to write some CSS, it can then pull in that that relevant context and you can help to have a better balance of like what things are exposed to the model all the time and what things are

exposed to the model part of the time.

But this isn't exact science. Like we're

all going to be kind of figuring out together and as a community like how we split between these different primitives. And you know, this is very

primitives. And you know, this is very new. So if you if if right now you've

new. So if you if if right now you've got this massive custom instructions file, don't feel bad. I've got that.

Like lots of our projects at GitHub have got that. And we all we can all use the

got that. And we all we can all use the holiday break to like figure out how to pull these things apart and deal with the spaghetti.

>> Totally. Yeah, I think that makes a lot of sense. I think the other thing that

of sense. I think the other thing that was really fascinating, I was building some skills last night was that I had a bunch of information in my custom instructions uh that were that were

about running like CLIs or you know applications on my machine. Like for

example, I have this website visualstudio wallpapers.com. It's a very

visualstudio wallpapers.com. It's a very beautiful website that you can switch between purple and blue uh on here, but I vive coded this out. And you have like all these different desktop wallpapers of all the different things inside of

here for like the 50th uh 50 million user stuff, right? So, you have all these different like VS and VS Code themes in here, which is really cool.

And this is all vioded out. But I have all these super high-res images over here. And I actually had this in my

here. And I actually had this in my custom instructions last night, which was using image magic to do all of my um image resizing, but I was passing that

context every single time I was just making a CSS change. So I put that into a skill, right? Here's how you use image magic. Here's how you do like these

magic. Here's how you do like these PowerShell scripts that I run, right? To

actually do the different resizing and and as I'm building these out, it has to figure it out itself. It has to figure out how I want it to be done and different guidelines in here. And that

sort of like was the thing that you were just saying is this was stuck in my custo this entire 150 lines maybe it's 100 lines of code uh or markdown were stuck inside of my custom instructions.

That's just a shame to waste that context window. So this is an open

context window. So this is an open standard right? This isn't like a

standard right? This isn't like a Microsoft thing. Correct.

Microsoft thing. Correct.

>> Yeah. It's currently so um originally created by anthropic was cloud skills for around uh since October. Like that's

that's what's interesting about the timeline. People were excited about this

timeline. People were excited about this in October and now it's uh December and it's already something that the community adopts at large as something

that we all should kind of do as a as a best practice because we got so excited.

So it's an open standard that defines the very basics of just the files. I

think it's it's early. So I think that's what I want to call out is that there's more questions on like oh maybe there is could be a shared folder for all of these like what is the story for the

script runtime like right now a lot of the anthropic skills won't just work out of the box in any other client because they they're optimized for kind of the VM that cloud.AI runs potentially. So

there's a lot of assumptions people make when they built these skills on where they run and how they run. So there's

probably more either in this bag or related work to kind of make it easier to just created once and share it out um as well. Right.

as well. Right.

>> Very cool. Yeah. And it looks like here there's some front matter. So name

description. I'm assuming the models are using that to understand like what they're calling. Is that correct?

they're calling. Is that correct?

>> Yeah. Yeah. the the basically what what you happen what you have when you have a list of skills that the agent is aware of that means just they're in the system prompt kind of the agent harness

co-pilot or claude gave the agent a list of here's all your skills >> it frames it as basically as soon as you start before you start a task check this list if you need anything like this

specialist knowledge that will make you better please look at it the problem crafting blah blah around it like to really really look at it Um, and then it just the the main information it has is

basically the the description on what is when and how to use it. That's what you should think about when you kind of prompt craft the description. And then

it gets the name and the location of the skill.md. That's kind of the main entry

skill.md. That's kind of the main entry points.

>> Very cool.

>> Yeah. My experience of playing with this so far is that all the normal prompt crafting stuff that we've all got used to continues to be really important. So

you know the description you give in that front matter is going to make a big difference to whether your agent decides to pull in the skill at the time you want to pull it in. And then the tech the instructions you have inside are

also going to have a massive impact. So

when I was kind of playing around with skills I found you know if you just write it as kind of advice then I found the agent would decide you know sometimes I'm going to listen sometimes I'm just going to ignore you. Whereas

writing it clearly as like you must do X like this is the process you have to follow then I saw a lot more success. So

all the stuff you've learned about generally prompting LMS or writing custom instructions is going to work really well here as well. Here's what I did last night is I copied this URL the

specification and I went into into VS Code and I was like hey I opened it this nice and wide and I zoomed in. This is how I code. I

said "Hey I want you to like I want I want you to extract skills into my skills folder and use the

spec, you know, use the specification link basically like go analyze my custom instructions, see if I have skills, and then break them into skills." Basically,

[laughter] that's what I did last night and that was actually pretty helpful because like you said, Tim, I think what I love here, I feel like this this documentation was almost written for models to consume because like good,

poor, like you know what I mean like required, not required, you know, it's like very [laughter] very very nice of exactly what it's going to do and a good example of it which I think is is delightful. We have

our own documentation. I'll put a link there for all the customization. So

people were asking a lot of questions about custom agents and instructions which are kind of like rule files and prompt files and all those things like that as well. There's all that stuff uh which is cool. So you can you can dive

into this uh as well which is great and I love this is like skills versus custom instructions. When would you use it?

instructions. When would you use it?

When wouldn't you use it? You know you can expand this table. That's a quick fact um for you. Very nice uh there. So

all sorts of things and our skills can live in the clawed skills or GitHub skills which is nice. We're going to talk about that as well. Before we get into a demo, also point out awesome co-pilot, which is a great uh GitHub,

and there's now I saw I don't know, did you do this Harold? Was this you, Harold, that did a uh uh skills >> was me? Yes, I did this the day before and then uh the awesome people from

awesome co-pilot helped me get it in quickly. So,

quickly. So, >> very nice. We have a skill web app testing. We'll go through that as well,

testing. We'll go through that as well, but let's just get into it. Uh Harold, I know that you got a sweet, sweet demo.

It's kind of like let's do like a hello world. A lot of people asking like how

world. A lot of people asking like how do you where is it at in VS Code? Can

you enable it in VS Code? And Tim's

going to show the CLI and cloud agent as well. So, I'm super excited about that.

well. So, I'm super excited about that.

But yeah, let's uh you want me to bring up your screen?

>> Yes.

>> Okay. I always like I always like to ask first. Uh oh,

first. Uh oh, >> you need to do that.

>> You're good. Okay, you're good. Please

appear >> there. There you go. My powers. Um yeah,

>> there. There you go. My powers. Um yeah,

so we This is insiders. So that's really important to call out um the the latest and greatest of agent skills. The thing

actually called agent skills is an insiders. If you open VS Code stable,

insiders. If you open VS Code stable, which is the blue icon, then you will still have claw skills. So that's just the the speed of development that's happening here.

Probably going to pull it into stable beginning of January just to make it easier to use. Um so you will see that happening. So basically it's um this use

happening. So basically it's um this use agent skills setting has to be checked and then we going to look into basically. GitHub site skills the

basically. GitHub site skills the co-edited uh folder and new user folder and still look at cloud skills because that's kind of the ecosystem where people have skills right now that's just

a folder and it's the same for the coding agent and CLI as well and we also link you to our helpful docs um that I also wrote up. So yeah, once you have

that enabled basically it falls into the like list of things that the agent already looks at. So the agent already has in this case I have a uh I have a

workshop open that I that you can find on YouTube from from two weeks ago and it was like the basically used all the primitives we have. So we have promps

for like one is just to set up the repo which is a really cool prompt. Um we

have agents >> control can you control plus for me one time >> plus >> command plus there. Oh perfect. Ah I can read it now. Thank you. just just yell

and hands right um okay so we have these these in these these agents these instructions um and then promps and uh anything else and yeah I guess we have

we don't have an instructions file in general that was like part of the workshop create one so you can imagine that one but I have this one which is really cool uh this is actually based on

a blog post by anthropic that they have is front improving front end design through skills and they basically have and you we all ran into this. As soon as

we go into VIP coding mode with cloud, you will get purple gradients if you're not careful. [laughter] So just make me

not careful. [laughter] So just make me a beautiful website is going to be purpley and it's going to have gradients and then you can really see the models design aesthetics through some of these

uh design choices it makes. So this is just copied from this blog. Um and I love this this prompting style of like kind of helpful prompting next morning.

Hey, you tend to converge toward generic like on distribution output and front design. This people call this AI slop.

design. This people call this AI slop.

I'm sorry, but you do this. And so it's it's really cool system. But then now that we have skills, this this could be a skill. This is not something

a skill. This is not something necessarily you need to have an instruction. It doesn't describe your

instruction. It doesn't describe your codebase. It's just like this is how you

codebase. It's just like this is how you make better code in general. It could be used maybe doing code review. is like

when the the code review agent on the GitHub site can see like oh like actually I shouldn't use overused font families and then once I see a design with that like you shouldn't use inter robboto here like maybe pick something

more different but it's not necessary code review it's more of a design review so let's make this a skill so you're going to take this whole thing you already see this has a name descriptions

so and this is what custom instructions and copilot already gave you um so we can do it here we can just uh copy this file and make it we're in GitHub so we

can keep staying here and make a new folder skills and copy this in. Now we got to rename

this to front end design slashskll.md

and we we got the skill.

>> Wow. Skill skill made >> skill made. Yeah, this is now only for GitHub copilot agents. So if you want to have it across all maybe other agents

we're using. We want to maybe put this

we're using. We want to maybe put this into cloud. That's where right now most

into cloud. That's where right now most most look and hopefully in the future there's a one place to put those or I

can put them into my user folder. I also

have um this is actually the way I I work in my user folder for cloud skills.

I just basically have it in VS Code. So

if I just open this one, I have it open here on the side. These are all kind of cloud skills I was trying around playing around. So one is actually a skill

around. So one is actually a skill creator. That's what you did. just point

creator. That's what you did. just point

it to the website to make a skill.

There's a skill to make more skills. So,

but that's one way to manage it as well.

So, but to look at like now now I can actually go in um and ask it which skills do you have? Classic

question. Um it actually have a bunch of ideas what skills it has. It it

understands its tools also as skills and a few other things.

But there's a skills section and I so it now has front end design which is mine and then the other stuff I have from the from the user folder right and the way

now to look behind the scenes a bit this is the chat debug log which you can enable in inst

view right that's the view if I click into it we can kind of look behind the scenes briefly to see skills down here So that's how it looks like in a prompt. It's just here's a

list of skills name description. So as

Tim said, the description really matters to make sure this is used at the right time. And as I said for front-end

time. And as I said for front-end design, it's like use this skill when user asks design like give it context when to use it and what it provides so the agent can figure out how to use it.

Yeah. So that's the basics of like the simple skill. There's no additional

simple skill. There's no additional context here. I could pull in maybe a

context here. I could pull in maybe a design reference guide in a markdown file if it really wants to go deep.

maybe some examples.

Um, but that's that's kind of the basic just skill.md version of this.

just skill.md version of this.

>> That's really cool. I like that you had the sort of user level stuff like, hey, I'm doing this all the time in a bunch of different areas and I want these skills to be available. And previously,

you can even have custom instructions that are doing that as well. But again,

that's a lot of overhead compared to really what I'm understanding from you and Tim is that it's really just understanding that that front matter metadata. So the context is really

metadata. So the context is really shrunk down very small basically.

>> Yeah. Yeah. These these things shouldn't be necessary and then also to make them transferable, right? You can have a

transferable, right? You can have a tailwind for scale. I could move this out now. Um it's mostly about how to

out now. Um it's mostly about how to write it. I think that's that's still

write it. I think that's that's still the discussion we still have to have. Um

like when to use instructions versus skills. I feel like instructions are

skills. I feel like instructions are still more helpful in the way when they purely focus on how to write good code because then they can help you to pull it in for example into code review as

well.

>> So any coding related agent >> if you have a good custom instruction set that has like a domain instructions file and a domain specific instructions file for the repo. you can still

automatically pull those in because I also have these apply to systems in in the in the front matter and say like oh you write wrote tests like let me look at my test instructions and then review

that those uh passcode. You don't want to necessarily have a skill that describes how to basically write write the best tests in that folder. That that should be a

that folder. That that should be a probably custom structure for now. And

then skill can maybe talk about how to think about tests, how to like have a workflow to write good tests. Maybe it's

about test-driven development. Um so

there's still um probably some convergence happening in that in this primitive space to figure out like these are these are the right path right now.

There's definitely if you think about one use case, you can find probably find this a solution for that use case in four different ways.

>> Very cool. Awesome. How do you how does it know how to run the skills? So you

put it into subfolder front end design skill MD like how does it know to actually run those?

>> This is what I showed here the the log for the the prompt. It basically what tells you when the user asks you to perform a task >> use the read file tool. So this what

happens here. Uh, if I go in here and

happens here. Uh, if I go in here and ask it to, for example, redesign the app to

be a cozy coffee shop design.

>> Oh, I like that. That's my jam.

[sighs and gasps] >> So, it gets context. Uh,

it will ignite this left side. Make it

pop.

and it should look at the skill.

>> So, we're assuming here that like just how like we previously like load up a bunch of custom instructions that it would [clears throat] now understand, hey, here are the skills that I have going on and then here are the skills that I'm

going to apply basically like it's not like it's not like a it's it's not like a script that it's running. I wanted to like sometimes I think when I first saw skills I was like, "Oh, it's going to like run this script." Like that's not what it's doing, right? It's not like a

script that it's running. It's a set of uh it could be scripts, it could be information about that, but it's a set of of anything like here's how to do this thing and then incorporate that into your context window. Is that

correct?

>> Yes, it's more it's more in the or at least out of the box, it's more context than scripting. Like in some cases, it

than scripting. Like in some cases, it is very scripting heavy. Um, like the other example I'd like to show that makes a lot of sense is

where's my test skill? This one is maybe easier to understand in a way that so you can just ask it like as soon as you install a skill basically just ask it I edit the skill can you make something

cool with it and that's really like the most basic example like you don't necessarily attach the skill but it's just natural language like there's a skill look at description load it up and

do something with it and that's also the way I like to use MCP server sometimes I just install MP server I I don't want to look at all the tools I just want to ask the LM this is speed over like what can it

because the tools often describe specific workflows and specific like use this tool first and this tool and the agent can figure it out and then have a

much nicer onboarding to the MCP uh compared to what I would I would do. So

in this case we can see basically it loads up the skill on D which is in my folder and that's an interesting example of of a skill description. A it's very

long this it's massive. So it's like a fullon basically how to do algorithmic art workshop in a markdown document.

It's like you're >> you're reading you think about algorithmic philosophy creation uh then you express it with p5 js. So you

wouldn't if you that I that's I think what people have to be careful about like if you just imagine oh this is a cool skill that just describes how to do p5 js it's not that it's a full-on

algorithmic art mindset in a box so you have to be this is what what makes I think skills tricky just like you makes custom agents tricky you have to understand what's behind the prompt and

how it's meant to work but this is like deeply analytical of understanding uh a group philosophy uh the seed the conceptual seed and but

then it it's very practical as well because it has this example viewer file in here as well of just a starter template to go from >> and that's that's why it's so good in the end to create this because it has

like a good starter template.

>> It has this reasoning approach and how to create interesting examples and then because it has files and context and a workflow it just comes up with something really cool.

>> Very cool. I think um Bill here in the chat was saying are you are we to think about it more of like metacognitive recipe like you know kind of like you're saying like here's a recipe on how to do something like you know I think I'm one

of us said the way you think about it right here's the way to think about processing a PDF here's a way of thinking of doing algorithmic art is that kind of like recipe style

I think it's that's where I see many of the example skills also going for anthropic it's more Um, it's more about the LM couldn't do this before, the

agent couldn't create PDFs before, the agent couldn't create powerpoints before, and then the skill basically is like here's a script uh to create these things. If you have this over here, so

things. If you have this over here, so it now loaded up, we're going to run the server.

So this was it create the file. It runs

the HP server from Python to preview it.

And now it's actually going to open the in editor preview to show it to us.

>> Wow, cool.

>> And there we have the [sighs] beautiful bioluminescent depths.

>> Yeah. So kind of like before if you didn't have this skill the model right whether it be opus or GPT or whatever the model is right it would look at its corpus of data or like understand it and

it would try to figure out what it interprets right but what we're doing is sort of guard rails and how to think and how to construct it. But if you're building and you're in this repo, I think the important part is like you're

saying is this application be doing a thousand different things. But if you throw that all into your custom instructions, that's going to be parsed every single time kind of blowing your context window for there where now we're like, hey, we're doing this specific

thing. We're creating this art. So let's

thing. We're creating this art. So let's

deploy this one. We're load up this one thing into the context window and then do it. I think that's what Tim was

do it. I think that's what Tim was saying before. So I think like breaking

saying before. So I think like breaking it down like we've broken custom instructions into like hey here's how I want my C#, here's how I want my CSS, here's how I want this thing, but now this is like here's I want you to think

about CSS in general, but don't do that unless you're actually doing CSS work.

>> Yeah. Yeah. It's it's definitely leaning into something. So what does

into something. So what does capabilities in an agent mean really? Um

and it could be something that the agent usually gets wrong or cannot do at all.

Like if you ask it to make a PDFs, it probably finds 10 different ways to somehow make a PDF and maybe one of them succeeds or all of them fail. But this

is kind of in this case there's a this is the anthropic skills repo on on GitHub and it has basically it has all the scripts that are proven to work with

the right dependency, the right packages already baked in. So it just raises the chance from one out of 10 to 10 out of 10 that it gets it right. Once you ask

it to make a PDF, it's like I have this skill. Let me look it up in my in my

skill. Let me look it up in my in my skill database, my capabilities, and it will will find just the right amount of information, just the right amount of

scripts to do this, right?

>> That's cool. And like you're saying here, there's not just markdown files, there's more code in there, too. Like

you can have script files, for example, like C# script files, Python script files, JavaScript files, and they're kind of like tiny little helper

utilities to to deploy. Tim's shaking

his head. I'm getting it right. If Tim

If Tim's approving, then I feel like I feel smart all of a sudden. Thanks. Am I

getting it right, Tim?

>> You are. [laughter]

>> I like that. Cool. This is awesome.

Yeah, I think that that's that's this is cool to see, too. And I hope awesome co-pilot grows into this and it's cool just to see the cloud skills there.

That's awesome. Awesome. This is Harold.

This is fantastic. Should we hop over to Tim to see it in the CLI and cloud or you got more Harold? Are you good?

>> No, this is all I had. We're all

>> That's cool.

>> That's much much cooler stuff.

>> Well, it's Tim. So only high expectations are high.

Howard Howard set the expectations very high for me here, which is dangerous, but I'm gonna I'm gonna try my best to live up to those high expectations. So,

let me just um share my screen. So, I'm

going to start by showing some stuff in the Copilot CLI. If you haven't already used the Copilot CLI, then definitely give it a try. It's super easy to install. You can just install it by

install. You can just install it by running npm install-g github/copilot and then you're going to get it. Um,

what is the copilot CLI? It's pretty

simple. It's like the agent that you have in VS Code except instead of running an ID, it runs in your terminal.

I wouldn't say that it's like better or worse than what you have in your IDE. I

think it just comes down to like different people like different things and and that's okay. We don't all have to like using the same things and we can have like different different products, different tools for different people and

and how they how they like working. Um,

and the the example I want to show today is kind of maybe a little bit interesting and a bit weird in that I'm going to kind of confess that I don't only use the Copilot CLI for doing

coding. I use it for doing other things

coding. I use it for doing other things as well because it's useful to have an agent that can use my computer and do stuff for other kinds of tasks as well.

So, one of the things that I do relatively frequently because I'm, you know, sharing demos and like sharing kind of examples of my products being used is editing videos and cutting them

up. So I'll do like a screen recording

up. So I'll do like a screen recording that's maybe like five minutes long and then I'll want to take like a specific 20 seconds from it or a specific one minute from it or something like that

and take it into its own file so that I can share it. And if you've ever used ffmpeg which is like a very popular tool for doing these kind of video editing things in the command line you will know

that like the command line arguments are pretty insane and confusing and hard to learn. So whilst I like do this video

learn. So whilst I like do this video editing stuff somewhat frequently, I don't do it often enough to like actually remember how to use it. So

every single time in the old days I went to Google to get advice like on how do I use this tool? Like what are the arguments? So I'd end up on Stack

arguments? So I'd end up on Stack Overflow. But now I use an OM to do it.

Overflow. But now I use an OM to do it.

I I use an agent to help me to do it.

But one of the things that I found often doing that is that the the models both like open AAI models and entropic models make some common mistakes from my perspective in how they

use ffmpeg and they like every single time you use it make the same mistakes that mess up your video. And one example I've got is like I don't actually understand how any of this works but there's a thing in videos called key

frames. And what I find is like when I

frames. And what I find is like when I try to cut a video up, it will have like weird black sections at the beginning and the beginning and the end. And every

single time I ask an agent to do that, it always messes it up in that way, which is very annoying. But I don't necessarily want to put that in my custom instructions because like doing video editing is like 0.1% of the stuff

that I do with my agent and it's just like essentially rubbish in the context window that's not useful most of the time. So this is a great example of how

time. So this is a great example of how I can use a skill to help me to do stuff better. And I'm going to use a slightly

better. And I'm going to use a slightly different example to what we saw with Harold. So Harold showed kind of having

Harold. So Harold showed kind of having skills inside your repository, but with the C-Pilot CLI, and I think this is coming to VS Code as well soon, we also have the ability for you to kind of have

skills that live in your home directory.

So instead of just having it for one repository, you can just have a skill for like for you as a person. So for the copilot CLI, we store them in um copilot

in the home directory and we have a copilot skills and in there I've created a skill called video editing and I can jump into that and you can see it's super super simple. It's just that

skill.md file that we've already been

skill.md file that we've already been talking about. So if I just open that

talking about. So if I just open that up, we can see how that file kind of looks and works. So it has a simple name. It has a description. So here I

name. It has a description. So here I kind of I had this thing where it says invoke this skill whenever you were asked to edit a video because I found when I was using this that if I didn't put something like that it would often

just ignore me and not do what I wanted it to do. Then I've got a bunch of instructions here which are basically explaining like how you deal with this key frame issue like how you do this video cutting in a way that doesn't lead

to weird results. And it has a few other tips in here as well on like how to slow speed up and how to slow down videos.

like I actually unsurprisingly used Copilot to write this skill. So I talked about the things that I wanted to be able to do and the problems that I'd had and asked it to help me to to write a

skill to do that. So that's kind of the setup there. And now I'm going to jump

setup there. And now I'm going to jump into the Copilot CLI to actually see that in action. So I'm going to run Copilot. I like running it with the dash

Copilot. I like running it with the dash banner or because then you get a nice fancy animation when it loads and I I like seeing that especially if I'm doing a demo. And to be honest, I like seeing

a demo. And to be honest, I like seeing it every time. So I I have it there. And

then in the latest version of the CLI, we have a SLS skills list commands. We

can quickly see what skills we have installed. And it will show me personal

installed. And it will show me personal skills that are for my user. And it will also show me like skills in my project.

And now I know that it's there. I can

now actually try to use it. So, I'm

going to say to co-pilot like, can you cut can you take the last 20 seconds from movie.mpp4

from movie.mpp4 and put them in a output.mpp4 file. So,

before I had to like go on Google or Slack overflow whatever to like find out how to do this and then like hack around and try a bunch of things and now copilot can do it for me. So in the CLI

we have this experience where when the skill gets invoked we just show a little thing in the timeline so you can see that the skill has been pulled into context just to kind of give you that

understanding of what's going on. Um

then the first thing it's doing in my prompt I said the last 20 seconds and in order to do that the first thing it has to figure out is like how long actually is this video that you've given me. So

it's going to run a command in order to do that and I'm going to say yes like go ahead and do that. We can see here it figured out it's 40.27 seconds long.

Very precise. I like that it's got six decimal places just to make sure that we're really certain about how long the video is going to be. And then it knows how long it is. And now I can run a command to actually make that edit for

me. And because it has the skill, it

me. And because it has the skill, it isn't going to make that annoying key frames mistake and leave me with like a weird black part at the start of the video. It's going to give me exactly

video. It's going to give me exactly what I wanted. There we go. It's doing

it now. Finish. Done. I extracted it.

So, this is a nice like I think really practical example of of using a skill.

You know, it's not something I'm doing all the time, so it probably doesn't make sense to have it in my custom instructions, but it can pull it in and add that extra context when I want to do this kind of task. And maybe this isn't

relevant to you. Like, you're probably not a weird person like me who like uses the copilot CLI to like do video editing, but there probably are other examples that may be a little bit like this that are useful for you. Well, I

think this is super cool because it kind of gets to the example that I just had, which is like image resizing. Like I'm

building iOS apps all the time and I'm building websites all the time. I need

to resize images. I need to work with SVGs all the time, which are super complex. And I that wallpaper website is

complex. And I that wallpaper website is just that like how often am I adding a wallpaper? Well, not that often, but

wallpaper? Well, not that often, but when I do, I need it to very much understand how I resize and where I put the files and where I do everything.

Like you're saying, you might be working on like a video website, right? And this

might be a core piece of functionality where you are literally putting different brand assets and things all over the place. And now you have this skill this with you all the time no matter where you go.

>> Yeah, >> that's super cool. I like that some of the the nicities there of the CLI. I'm

sure that um Harold and the the VS Code team will steal some of the nicities of what skill was run and when it was parsed and we'll get a slashkills.

Harold, get on that.

Yeah, there's already tons of feedback like one one is for tools, you can nicely select which tools are available during a run. So for skills, you might also eventually reach a point like I have 50 skills installed like I don't

want to and then you're in my user folder because like sometimes I want to extract the video but then suddenly you talk about like some other video piece on your website and then suddenly it always reads the other skill and then as it's all context right and especially in

this one it can be also a large document as I showed with the computational art.

Um, so it's going to be interesting how to um basically make skills behave at scale without constantly readjusting the description to like, oh, it triggered

because I talked about art like I need to just like don't don't use this when I just talk about art or something. So

that's that's going to be still like the control layer for users too. going to be interesting. Also, I think in this demo

interesting. Also, I think in this demo is what is highlighted that I think one question I get like I get many questions about is like the two questions like how is this different than all the other stuff like

instructions and I think we talked about that one but like how's it different than MCP I think that's an interesting one because there is this control layer in

all the agents that you still get script execution you like command execution and script execution and you can confirm it.

So it's a really uh good control layer to understand like what's being executed because of a skill and then still being in charge versus

>> a lot of skills uh run scripts in VMs and other places where you might not even have control about u when it runs how it runs uh what the inputs are but this is think the the some of those

controllers will help to make skills more approachable that you can just try out skills because you're still in charge to hitting yes execute this at at the point in time and which makes them

also more composable than maybe other primitives.

>> That's cool. Now, what I like here so far is that these same exact skills, you could just pick that skill up anywhere, right? In in in VS Code, but also in the

right? In in in VS Code, but also in the cloud agent, correct, Tim? Uh because I don't know if you know, Tim, quick little humble brag. I I'll remove your screen so you can bring up your other

one. Um, the cloud agent team when the

one. Um, the cloud agent team when the mission control was coming out, they did reach out to me and they said, "Hey, James, I see that you're a power user of the cloud agent. Um, we would like for

you to to demo this bubble and like or like uh try out some of the new features." Uh, I'm not going to humble

features." Uh, I'm not going to humble brag that maybe I use the cloud agent all the time, but I have this philosophy is that um before I sign out for the day at work, I assign something to the cloud

agent. Before I go to bed, I assign

agent. Before I go to bed, I assign something from the cloud agent. And when

I wake up in the morning, I assign something to cloud agent and like you know when you're like in the shower and like your best ideas like there in the shower somehow I don't know what it is something about showering just unlocks

magic like ideas. Well, you know, we just have our cell phones. I just open the GitHub mobile app and I always just assign something. So it's like get out

assign something. So it's like get out of a shower, have an idea, assign it.

And uh the cool part yesterday my power was out for five hours here and I joked to Pierce because he's like is everything okay? I'm like, uh, I don't

everything okay? I'm like, uh, I don't know if I've written uh more code in my life when the power has been out for 5 hours because I have 18 ongoing tasks right now in the cloud [laughter] agent

and I'm reviewing them and merging them and then just downloading like new builds of my iOS app. Uh, I'm sitting here and I'm doing an entire new achievement system. I kicked it off

achievement system. I kicked it off before we stream because why waste an hour?

>> Yeah.

>> When I could be coding at the same coding at the same time. So, I'm a big fan of the cloud agent. If anyone knows me, it's my favorite demo on stage is to talk to my phone and then by the end of

the session, I am reviewing that code inside of VS Code, which is amazing. Um,

and Tim, many people do know you from the cloud agent space as well. But, so

can I use these skills there as well?

>> Yeah, you can. Um, and thanks for being an ambassador for the coding agent in the cloud as well. Always always love to have fans out there. Um, it's a super cool tool. I mean, I have to say that

cool tool. I mean, I have to say that given that I work on it, but it's something that I'm using more and more every day. Um, and you know, it's great

every day. Um, and you know, it's great to hear from other people, other people using it as well. So, if you're not familiar, Copilot coding agent is basically an agent that works in the

cloud in the background. So, instead of having to have like VS Code running on your machine or the CLI open, you can start off tasks, then just like shut your laptop, you know, disconnect from

the internet, completely unplug, and that's still going to just keep on running in the background. You can

paralyze many things at the same time.

So in my in my typical workday, I've probably got co-pilot working on two or three things at once most of the time and I can kind of manage that process.

And you know to join VS Code and the CLI, we've added support for that. We've

added support for agent skills here. And

I'm going to show a quick demo of how that works in practice and a nice coding use case that I found for skills. So

this is one of my open source projects.

It's just kind of a simple API built in Typescript and currently it uses Express.js which is a kind of popular but maybe slightly you might say old

school framework for like building APIs.

There's nothing wrong with it but it's not like the most performant or modern option for doing this kind of stuff. So

I was kind of thinking about this and something that I hear a lot from developers wanting to do with agents is like helping them to do migrations and upgrades and things like that. So this

project is not a great example because it's so small. But if you've got a big API, let's say you work at GitHub and you run the GitHub API, you've got thousands, maybe tens of thousands of

APIs. And if you're going to do a

APIs. And if you're going to do a migration to a new tool or a new stack, then that's going to be a lot of work and there's going to be a process you want to follow loads of times. And I

think that's actually a great use case for a skill. So I made a skill called the express to fastify migration skill.

And what this is designed to do is basically teach copilot how to migrate from express which is the framework that I'm using now to a different more

performant one more modern one called fastery. So I have this skill here which

fastery. So I have this skill here which basically explains the process to run through in order to do that upgrade. So

it's quite structured you know it starts with like checking what APIs there are.

Then it has like a benchmark to understand what the performance is before and after so you can actually see the improvements that you're making. And

importantly, it also has a has a step of like making sure that the API doesn't change when you do this migration because that's something you're going to be want to be super careful of if you're doing a migration is like are you actually breaking things or are you

leaving things in the same way that they were before? And I actually did a bunch

were before? And I actually did a bunch of iteration again with Copilot to write this skill because the first time I wrote it, I found that basically it was

kind of it kind of said, "Oh, maybe you might want to do this process this way."

But what I found is like it just ignored it and would like, you know, do step one and then skip straight to step six and it wouldn't do the benchmark and it wouldn't do the like the the checks to make sure that the API hadn't changed.

So I kind of asked Copilot like, "Man, why did you ignore me?" And it came up with this different version of like mandatory workflow. You must pro

mandatory workflow. You must pro complete each phase in order. And this

is the version that we we landed on works. So this is the skill. Let's just

works. So this is the skill. Let's just

see how we trigger it. So to do that, I'm going to use this thing that we have on GitHub now called the agents panel.

And this is just a a a window that we can open anywhere on GitHub to give cloud tasks to the cloud agent. There

are a bunch of other ways you can do this as well. So you can assign an issue to copilot. We've got an integration

to copilot. We've got an integration into VS Code that I've talked about on VS Code Live before and a bunch of other ways as well. It's connected to Slack and GitHub mobile and so many other things. And what we do now is just type

things. And what we do now is just type in our prompt into this box. So I'm

going to say convert or actually I'm going to say migrate the API from express to fastify. I'm going to use claude opus because that's my favorite model at the moment. And then

I'm going to hit start a pull request.

And now that kind of fires off this task that is going to run in the background and copilot's going to go and do its thing. And then once it's done it's

thing. And then once it's done it's going to open a pull request for me and request my review. Now, this is unsurprisingly going to take a little while. So, rather than like trying to

while. So, rather than like trying to use this example, I'm going to go back to one that I did earlier because we don't want to just watch Copilot working for ages and ages. So, if we go through this, we've got a bunch of logs from

Copilot where I asked it to do this task. And very early in the process, we

task. And very early in the process, we have this point where it says activate express to falsify migration skill. So

it quickly identifies that this skill is a good fit for my task and pulls that into the context window and now it's able to actually follow this process that I've told it to follow. So it does

an inventory which is the first step that I give it in the skill. So telling

it like figuring out what APIs there are. It then captures all the responses

are. It then captures all the responses of the APIs that are there now so that it can actually kind of compare them at the end. It runs a benchmark. So we get

the end. It runs a benchmark. So we get um we get some information about the performance of the API before the migration and then it runs through and actually makes the file changes and stuff like that. You know like the agent

you have in the CLI and in VS Code, it's smart. So it like runs your tests and

smart. So it like runs your tests and runs the llinter and things like that to make changes. And then where we really

make changes. And then where we really see the magic in this workflow is that it's actually followed those steps that I set in my skill. So it now at the end actually checks that it hasn't broken

the API and made changes that it didn't mean to change and it runs a benchmark at the end and somewhere further down you can kind of see here. So it notes that it's improved the request per

second by 73% with this migration which is a pretty big improvement from just switching a framework. One of the things that I really liked in here is that when it was doing the benchmarking, it ran into a problem because it found that um

it was hitting rate limits in the API when it was trying to benchmark it, which is kind of funny. So, what does it do? Well, it decides just to remove the

do? Well, it decides just to remove the remove the rate limits for a little while so that it can do the benchmark, which is actually a totally reasonable thing to do to test the performance. So,

this was another funny case. I wanted to like you know show two examples today like one of something not coding related my kind of video editing example and one of this kind of co-pilot working on code

example and if we click view pull request then we can see the pull request that copilot created so wrote me a nice pull request body and then when it was done it requested review from me and

then I can just review this as I would with a pull request created by a human.

>> That's very cool. That's that's awesome.

Uh we did get a good question here uh because I love that we can use them sort of everywhere. Now uh Marshall was

of everywhere. Now uh Marshall was asking does the GitHub skills replace cloud skills when using Copilot? Can you

use either of them? Like will cloud agent CLI look anywhere? Is there

specific like what's the jam there? And

maybe Harold will start with VS Code.

Maybe they all work different. I don't

know. How does VS Code work Harold?

So we we try to align between the CLI and the VS code logic for skills. So we

basically first look into your GitHub skills in the repo. We look into your user co-pilot skills um in from on your

machine and then we look at the claw skills and potentially other places.

We'll see what the ecosystem that's kind of the main place we expect to have users collect their skills right now. So

that's that's kind of the basically the our like one P places we know skills and then we ddup by name in the end. So

that's the the name field is mandatory.

>> So hopefully you have a well scoped name that we can then use to uh to figure out like maybe if you have them in different places maybe you started a new user and

then you moved it into your project and fine-tuned it a bit more. So hopefully

that that order is as expected.

Nice. Tim, what about like CLI and cloud agent stuff?

>> Yeah, same situation. The CLI that works in the same way that that Howard has just described for VS Code. The the

coding agent in the cloud is a little bit different because it doesn't have like a home directory. So, we don't have that part, but it will just load stuff that's in your repository and it supports both the like GitHubskills

path and also the claude skills path.

So, we're trying to be backwards. We're

trying to be like, you know, generally our approach here has been to be very wide on this stuff. And like, you know, why should we only support one place and why should we only support one kind of custom instruction? Like, you know, we

custom instruction? Like, you know, we want to make it really easy to come and use copilot even if you maybe use another tool some of the time. So, wide

compatibility is what we're all about.

>> Yeah, I love that. Makes a lot of sense.

It's pretty easy in code to be like check here or here. U you know, just a little or statement in there. Although,

it does get unruly if there's way too many places to check. Now I don't I know Tim um for custom agents we rolled out like for business and enterprise maybe it's just enterprise like organizational

level agents like so if I have like a I have like a windforms agent I have a C# agent then I have like you know WPF agent that are like because I'm a net developer so I like agents all about like building those types of apps like

especially with cloud agent um is there organizational level skills or instructions for cloud agent? So we for for cloud agent we do have

organizational level instructions but we don't have organizational level skills at the moment. So that is something that we're going to be looking to add in the near future both for organizations and enterprises like feels like a no-brainer

to let people like manage these things at different levels and share stuff across their across their team.

Obviously more dduplication, but it's nice for these ones as as Har said, like they have a have a name and we can use that to dduplicate things. As long as people, you know, use reasonably unique names, then we don't we don't want to

keep sending the same skill to the model 10 times because that's just going to be confusing. But as long as we can kind of

confusing. But as long as we can kind of separate them out and keep them unique, then it will work nicely and we can share stuff all over the place.

>> Very cool. That's awesome. Uh I do love that. Um I'm going to share my screen

that. Um I'm going to share my screen one more time because Harold shared it in the beginning. So if you are using VS Code uh here insiders build you want to update at least to yesterday's or

today's. So I'm going to bring up my

today's. So I'm going to bring up my screen here and Tim I imagine the CLI you just update and cloud agent it just lights up automatically right for this stuff. Yeah for VS Code you

want to go in just type in skills. You

can do it with an S.

Has to be an S, not a Z. I think I think Burke did a Z and like like did not come up. So you type in skills and there's

up. So you type in skills and there's agent.mmds agents.mmd files kind of like

agent.mmds agents.mmd files kind of like instructions but then you'll see use agent skills experimental. So this is kind of what we're talking about. It

looks forgithubskills copilot skills claude skills or claude skills like in in the root name space as well of where they're at. So you can learn more about them there. Um and

they're on the read tool if available as well. So which is cool. Um very very

well. So which is cool. Um very very cool. Um awesome. So if you haven't

cool. Um awesome. So if you haven't enabled it go check it out in insiders.

Harold mentioned it's probably going to drop in to stable in early January. So,

a little uh New Year's celebration, but you I just run we did a survey. I've

been using YouTube surveys a lot. We did

a survey actually uh almost 55% of people watching on YouTube are using either insiders or both. So Rocket

Insiders, it's like you wake up every morning. Not only has the cloud agent

morning. Not only has the cloud agent >> finished a bunch of code for you, but additionally you have a new update to VS Code every single day with goodies inside of there. And then if you're like, "Oh no, something went wrong." You

can just hop over to stable. But I just rock insiders all the time of of VS. >> Yeah, insiders are the people with skills right now.

>> Like the agent skills. Stable has cloud skills.

>> Wow.

>> That's the that naming is just so sweet.

like now we have skill issues that people file. It's

people file. It's so gonna be pretty fun.

>> All right. Well, that on that on that joke, I think we can end the year on a high note with agent skills. Tim Harold,

thank you so much for coming on, showing this all off. I really appreciate it.

It's an honor and a privilege to be on this stream with the two of you.

>> Thank you for having me.

>> Thanks everyone for tuning in this year.

There's so much new goodies. Um, I

believe that Burke and Pierce are recording the final VS Code Insiders podcast in person in the middle of somewhere America. I have no idea it's

somewhere America. I have no idea it's going to happen. So, make sure you go to VS Code podcast.com. Drop a link in the chat over here and subscribe to the VS Code Insiders podcast. You get indepth behind the scenes with the engineering

and PM teams that build the most amazing tools in the entire world. That's going

to do it for this let it cook. So, until

next year, happy [music]

Loading...

Loading video analysis...