About this talk
In this talk, Debbie O'Brien discusses the rapid evolution of AI and how developers can create efficient AI workflows using various tools and techniques. She emphasizes the importance of adopting AI in daily tasks to enhance productivity. The session showcases her personal journey and challenges, including her recent layoffs from major tech companies. Debbie introduces the concept of 'skills' in AI, which are custom workflows designed to automate tasks, such as adding content to a website seamlessly. She demonstrates the use of tools like MCP servers and Playwright CLI to streamline development processes, making it easier to manage content without manual intervention. The talk culminates in a demonstration of an automated release video creation process, highlighting the capabilities of AI to generate engaging content efficiently.
Full transcript
Come on, everyone. Let's dance. Um how are you all doing, everyone? How are you? Good? Yes. It is so good to be here. I love this stage. It's like my favorite conference in the world just because the stage and the people, of course. Um but I I want to have a really good talk. I've I only I'm going to be honest. I built my slides last night.
Because things keep changing too fast. So, if I had to build them at the time I put the talk in, the talk would have been outdated and would have made no sense. So, I'm building the day before the conference, which is super exciting. I also then built something else, which I'm going to show you at the end, towards the end of the talk that I built today,
which is I'm super excited. So super cool. So, I'm I'm very excited right now. Uh we're going to talk about um basically creating AI workflows with MCP and skills. It didn't have skills in the title because skills didn't exist at the moment I submitted this talk. This is how fast AI is changing. Um I want to ask you a question first. Who here is actually using AI
daily, like every single day, every moment of their day? All right, good. Good. Who here refuses to use AI and thinks that they can write code faster? You. Well done. You'll be out of a job tomorrow. I'm only messing. Um Who feels they are actually that it is actually useful? That AI is actually something that they want to learn and use more. Okay, good. And who here
is very worried about the future? Yeah. All right. Good. I can't help you there. But my name is Debbie O'Brien. I I don't know what to say. I didn't know what to put in here. I am I actually spelled it wrong and everything. But I'm a developer relations engineer. I belong to nobody at the moment because I was laid off twice in the last 3 months. I
was laid off from Microsoft first, and then I was one of the 40% laid off from Block just recently. So, I'm having a good time here. Um I know AI. I am living on the bleeding edge of AI and I'm working you might have known me from being Knox ambassador and then from playwright. Uh Um and I was recently doing some goose stuff, which is an AI
coding agent from Block. Um and I got laid off. So, that just means that we are living in very uncertain times. Now, don't worry. I'm pretty confident I will have a job by next month. I'm not worried about that. I do not know how long I will have a job for. That is something that I'm just don't Nobody knows. But, I wanted to address that because I
think we need to be a little bit more cautious of where we're going and not kind of live in this, "Oh, I'm going to stay in this company for 10 years and I'm I'm pretty safe." So, I want you to just kind of reflect a little bit. I think what what you're doing right now is fantastic. You are here to learn more. I think we need to
learn more. We need to continue um being able to change with the times. You're at this conference, you're going to learn some really amazing stuff, but that's going to mean absolutely nothing if you just go home and do nothing with it. So, you need to start applying it. I'm going to show you something today. If you only go home with this one thing and apply this one
thing to your workflow, um you will you will definitely it will help you in uh doing more with AI and just being more productive in general. So, that's as far as I can do in helping you in the future of jobs, but um but yeah, it's tough. Times are tough. So, the only thing is I'm having the most fun of my life right now. So, seriously, don't
worry about the future cuz there's nothing we can do about it. Just have fun. So, let me tell you about the problem I have with my website because that's what we're really here to learn about is identic workflows. Um so, the old way, right? Uh what I used to do. I use Knox content. I'm a big fan of Knox content. Anyone else here using Knox content? Not
enough of you. Oh my gosh. Well done for those who are using it. Like, you don't need CMSs. You don't need to pay all these things, right? You just need Knox content. It's free. And you know what's great? LLMs love Knox content cuz it's just markdown. So, it's fantastic. So, anytime I wanted to add content to my site like a video if I do a a talk,
a podcast, uh a blog post, you know, it doesn't get updated for like weeks because I just couldn't be bothered. Because, you know, you got to duplicate the file, add the metadata, download the image, upload it to to Cloudinary. I use Cloudinary for my images, then create a PR, and it's like just takes too long. And I I don't have time. So, I just don't bother updating
my site. Then, the kind of things changed, and I started from those manual tasks to create reusable prompts. And that was pretty cool. And I have them in in VS Code, and I just into my prompt and just run that prompt using MCP servers. Who here is using MCP servers? All right, good. Not not enough of you, but good for you. Those of you are using it,
you all should be using MCP servers. So, yes, that was then, but now I'm just using skills. Who here is using skills? Not a lot of people, great. You're in the right talk, good. Who here does not know what a skill is? All right, good. I'm going to show you what a skill is today and I'll break it down for you as well. And um Who here
doesn't use skills because they think they don't need to use skills? All right, I'm going to fix you. You need a lot of fixing, man. Today, all I do is say add these videos to my site, and I put in a a URL to the YouTube video, and that's it. Now, that's insane, right? Because that means all of you who want to follow the content I create
can get all the content I create easily from my website, and it takes me no time, right? So, this is just my personal stuff, but imagine at a company level and and at on a different kind of workflow. This is just me personally, but it's insane. One prompt, Um I use Copilot coding agent, and I can use the cloud agent. So, I can even do it from
my mobile phone. I can do it from wherever, and I've basically created a skill called add content. This skill basically tells the L L L L M agent. Now, you could use Cloud Code as well. I was using Goose as well. So, I you know, I've tried it with everyone. They all work. An add content skill, basically tells the agent a little bit about my website. So,
it's kind of like, you know, your instructions for your website a little. It tells it about Nuxt content, how that works, how I have set up my website, what I need from the content. It also explains to it that I'm using Cloudinary. I add in the Cloudinary MCP server, so I don't ever have to actually open the browser and go to Cloudinary, cuz I don't want to
do that, open, go to Cloudinary, upload the image, change the URL, download. Ugh. Right? It does all that. I just put it in the skill. And it basically does everything. I also use the Playwright CLI skill to go and tell it to verify its own work. So, it opens up the browser, it checks that everything is working, and it's added the content that it should have. And
then it goes and uses the GitHub MCP server, and it makes a PR. And then happy days, it's there, done in a second. So, it's one prompt, and all this is done. But this is about writing a skill. So, if you write the skill, everything is going to be the same each time. If you don't write a skill, you don't know if it's going to remember what
you want. Um, so basically this is it. This is uh the Copilot coding agent in the cloud. And I literally just say, "Use this content skill to add this video." And I could put six videos in there. I could even just add a blog post and a podcast, and put the whole list in there. And Copilot just goes and does it while I'm having I was having
a martini on the balcony in the sun, actually, when I was doing this. No messing. Um, and it's really cool. It basically just says, you know, uh this is on the 9th of March. Um, here's the metadata that I need. It's uh closing the Playwright browser there, creates the Git branch, does everything. And that's the only thing that I need. That's the markdown content for Nuxt content.
That's all Nuxt content needs to be able to show that video on my website. But to get to able to go there and get it And you might say, "Oh, why don't you create a script to go to your YouTube channel, scrape it, etc." But some of my talks are on other people's channels, some of the podcast things. It's not about my channel, it's about where my
content lives in various places. So, it's important to improve this workflow based on, you know, my videos could be anywhere, my podcast could be anywhere. So, this is pretty cool. Anyone else doing something like this? Yeah, a few people. Excellent. All right, so you should all be doing this by next year. No, by next week, okay? Cuz things are moving fast. So, now you don't have a
year anymore. You got a week to implement everything. Um so, how does it work? This is basically um the workflow, right? The user requests of the video, it identifies the content type. Is it a video? Is it a podcast? Is it a blog? And I have like different skills, different resources in the skill for each one. So, that they you're not duplicating all the kind of content
across it, but you're sharing some things and then other things like the MCP server for Cloudinary is only used for podcasts because that's the only time I add an image. And then it opens the Playwright CLI skill. Now, you can scrape with the Playwright CLI skill, for example, but you could also use other tools. You could just use a curl command. You could use a lot of
other things. It extracts all the data that it needs. It validates the tags against the taxonomies that I have in there in my actual application. It creates the branch, opens the PR, and then it verifies everything is working, and then it basically says, "Yeah, it's done. Go, and you're done. You're live." And that's the that's the workflow. Super simple. So, this is something I use a lot,
and I I want you to all kind of start using when you're building something as well, not just in skills, but outside of it. The Playwright CLI is a skill. It was released um I don't know, a month ago, maybe. And it's basically instead of the Playwright MCP server. Is anyone using the Playwright CLI skill? Yeah, only a few of you, okay? So, the difference between the
Playwright CLI skill and the Playwright MCP server is the CLI skill is very less token heavy. It's not putting everything into context like an MCP server puts all the tools into the context. Uh the Playwright CLI basically doesn't load anything until you ask for it. So, it's very more um efficient, and it's a lot cheaper then to use. So, definitely check that out. But, I use it
when I'm even building something I'm vibe coding an application or something. And I basically say, Playwright CLI, go and verify your own work. Like, basically tell the LLM to use Playwright CLI to verify its own work. So, then it basically verifies it takes a screenshot. It's able to say, yes, this feature was added, this was done, etc. And it just saves a lot of that back and
forth cuz sometimes it kind of it's actually really good these days, so it doesn't make a lot of of errors. But, sometimes if it sees an error, it can go and correct itself um before it even sends it back to you. And that's like just an automated QA like just there for you. So, that's like just a tip to add into your workflow. So, what are skills
for those of you that do not know what skills are? And it's so actual simple. They're basically just um a way for you to teach your AI all the secret sauce to what you want, all the knowledge that, you know, you have in there that Imagine if you have like someone that's coming along to work for you and you need to tell them what they need to
do. Um it's just all the secrets, right? All the uh the onboarding information. Um basically, you're just giving that to the LLM and saying, this is how we want things to be done. Right? This is the workflow that you need to use in order to get things done. So, think of like a chef, a recipe card. The chef knows how to cook, but they don't they don't
know your recipe. They don't know how to make your tomato sauce, right? And that's basically all it is. It's very, very simple. So simple and easy to use that you should all start implementing it. Um without it, you just might get generic outputs or too many questions back from the LLM or just inconsistent results, right? Because LLMs are indeterministic, so they you know, you're not going to
get all the same things all the time. However, with your skill, you will get the same things back because you've structured it a specific way. Um and you can share it with your team as well. You can create a team, you can create a skill, share it with your team, and then you just reproduce it the whole time. And you can obviously alter it as well if
things change. So, basically, what is a skill? Uh this is the um content skill, the add content skill I've created. And skills live in basically a dot agents folder or dot cloud folder if you're using cloud code. Um, or you could use a dot copilot uh dot GitHub folder, for example. And then they have to be in a skills folder, and then you've just got the um
the skill itself. My skill is called add content. Maybe that's not a great name. I could have added something else. And you've got basically a markdown file, a skill.md file. It must be named skill.md. And inside there you have YAML front matter with a name and a description. The name of your skill must match the folder name. And then you have a description, how the LLM is
going to read your skill. And then you have like something telling it what to do. Now, this is the thing in the difference between MCP servers and skills. The only thing that gets loaded by the LLM is the name and description. It knows the skill is there. That gets loaded into your context each time. Then, when it says, "Oh, I'm She asked me to add a blog
post." I'll go and add and use the add content skill. Then it loads in the rest of the markdown file. So, you know, maybe there's 300 lines of code in there. Now, if it's super super super long, that's you're adding a lot of things into context. So, how do you make that smaller? And that's when you use files such as uh references, for So, I've got a
reference, I've got a video.md, I've got the blog post, and I've got the podcast.md. So, I separate them out because, like I said, Cloudinary is only used in podcast. So, if I call the video.md file, I don't want it to start loading the the Cloudinary MCP server. Um, and then you can have an environment one that tells you that they share. And they only gets called the
references only get called when the LLM actually needs it. So, it makes it super kind of, you know, this is on demand. I need this, I'm going to pull this in, etc. So, yeah, this is really really cool thing to know about it. Something that I didn't know about until I started using it, and I was like, "Ah, okay, it makes sense now." So, basically, this is
all a skill is. You have some YAML in there. A name, description. Remember, it's got to be very descriptive if you want the LLM to be able to use it in a simple prompt like I showed you. If not, you can always just say use the add content skill, right? So, you can totally do that or you could just um use a prompt and and in the
description it's very clear that the LLM wants to use that skill. So, the name has to be the folder name. The description is what triggers the skill. Simple as that. Does that look easy? Yeah? Okay. Um it's three-level loading. Always name and description is always loaded. Remember that. Trigger is a skill MD is triggered, the body gets loaded, and then on demand it pulls in the references.
Super super easy. It's really really So, this is how you build your first skill. I'm just going to break it down to a super super simple. I want you to all go and build this skill. If you go to my website, you'll be able to see a video and a blog post on this because it's so so so super simple. So, minimum. This is a stupid skill,
right? But still, we're going to say good morning. And I basically have a skill that every time I say good morning to my agent, it says good morning back to me in the way I want it to say good morning. Just like how I've programmed Alexa to tell me I'm amazing every day. So, the same thing. Um it responds with a cheerful greeting. And then I tell
it how I want it to respond to me. I basically say, you know, a greeting by name. So, it says good morning, Debbie. It asks about my day and includes a joke, right? That's all you need to create a skill. Now, every time you say good morning into the chat, you can try this out and seriously just build this. It works. It works. And you're like, "Oh
my god, if I can do that, what else can I do?" That's what you need to start thinking about. What else can I do if I can do that? If it's so simple to just do that. So, location is also important. You can build skills at a project level and you can also build skills at global level, right? What's the difference? Obviously, remember the name and description
is getting loaded each time into the context. If it's globally, and you save them all globally, and you have 150 skills, there's 150 name and description of skills going into your context every time you're using the LLM. So, think about when you need to use it and when you don't. For example, Playwright CLI skill, I put it globally because I use it so much. I find it
a skill that is something that I'm going to use on pretty much every repo that I'm using. I'm going to put that globally. Add content kind of only needs to be in my repo because it's literally based on that project. It's only on my It's only relevant to debbie.codes, so I put it in there and that's it. So, that's just something to keep in mind when you're
building skills. Where do I put it is important. And again, I'm using an agents folder. If you're using Claude code, you'll be using a dot Claude folder. Um but agents works across all the other agents. And then, yeah, then you can basically use it in Copilot, in Claude, in Cursor, in Goose, or in any other any other LLM that you want to use it in. So, do
you think you can go build a skill now? Cool. Excellent. I want you to all share that skill with me later. Even if it's just good morning, I want you to tag me and say, "Look, I built this." Uh skills are cool. And you can also find and install skills. This is really cool and it's actually a little bit overwhelming, but you can go to skills.sh and
you can basically just use NPX skills and you can find them. There's an actual skill from Anthropic and telling you how to build a skills. You don't even have to remember, "What did Debbie say about where to put it? Is it in an agents folder? Is it a skills You just run that NPX command, it's just going to build it all out for you. And then you
can just put your good morning in there. Skill done. Happy days. That's how super simple it is. Now, when you when you go to that website, it's like skills for everything. People have created skills, like so many skills. They're a little bit overwhelming cuz it's kind of almost it is written for agents, so when you read the thing, it's like, "What is going on here?" Kind of
almost feels like there should be a a human readable part that tells you a little bit about the skill first rather than just like uh dumping the markdown stuff in there, but it's really really Now, be careful because people build right? That doesn't mean you have to trust everything that people build. So, be careful when you're taking a skill. If I was to take a skill, I
would take the Antropic skill for sure. If I put a skill up there under my name, you have to decide do you want to trust me or not? Because it's very easy to prompt inject something in there into the markdown, and that's going to go ahead and take your API keys and things like that. So, be very careful. You can totally install it, read it, check the
code files if you want, but be very careful because remember that in skills you can have code being executed in there as well. So, yes, be careful. Don't come to me and say like, "Oh my god, it did this." Right? It can do anything, so yes. But, there are some amazing skills out there, so definitely go and clone them, try them out, and then you can rebuild
your own ones based on them. So, they're composable, right? That's the cool thing about skills. My add content skill uses the Playwright CLI. So, it uses other skills. It also uses MCP servers, the Cloudinary MCP and GitHub MCP, for example. And now, you might say, "But, what's the difference MCP server and skills?" There are differences, and sometimes maybe uh you don't need MCP servers cuz you just
have skills, but maybe you need MCP servers along with skills. So, there's kind of a little bit of a a debate out there. Um it depends on what your use case is, what you're using, and what the company provides you with. For example, Cloudinary don't have a CLI, so I can't use a CLI skill. I need to use the MCP server to be able to go to
to Cloudinary, get the stuff done, get the image up there, and give me the URL back to be able to then, you know, have my image uploaded. Which is super cool, like that you don't have to go to the website and do yourself. It's like amazing. So, that gives me power, the power. And then, you can just share that with your team. So, if you're working in
a company and you build something like that, you can share it with everyone. Everyone can use it, so you You have internal skills shared across the company. Um so yeah, and no complex setups required if it's in your repo or you basically can, you know, push it to to a um a repo online. And my skills are online as well, so you can just go to my
my GitHub and you can totally just take them for your own. Okay, so the takeaways. Skills are basically just domain knowledge, right? You just start with one file. Start there and then just build the rest of the stuff that you need. And then compose them for powerful workflows. And then just share your expertise with the world. Okay, now it's time for some fun. I want to tell
you a story. So while I was uh last night in the hotel room, I thought, "What if I could show something on the stage of a different workflow, not just my website? And you're all kind of thinking, is that impressive? Debbie's updated her website." Is it impressive my website update? Yeah, okay, thank you. Yeah, no, a little bit of a yeah, no, all right, okay. I'm going
to show you something that I think is impressive cuz it it it wowed me. It made me go wow. So I want you to go wow, but you can totally be honest and say, "That wasn't wow." I'm okay with people being honest. Um basically what I did was I created this in the last job I was working in for um for the release videos. Release videos are
hard to make and when I was in Playwright, I would go to the GitHub change log, I would read the whole change log, I would open the links to the issues, I would read through some of the issues to get an understanding of what why this feature was created, why people wanted this feature, to then be able to create a release video so that I could share,
you know, what's new in this release. So I basically built a skill because this is a lot of, you know, back and forth. You're repeating the same processes and I wanted to you know, I didn't have enough time in the last job. We didn't have time for release videos, so they just basically said, "It takes too long. Don't do it." And I was like, "What if I
could automate the process? What if I could create a skill that does all this work for me?" Now, it took me about 6 hours to build the But then it takes 30 minutes to run the skill every time. Every time there's a new release, 30 minutes. Now, I got I got let go from my last job, so this skill is meaningless to to anyone else, but I
thought, what if I could use my skill for another type of company, another type of product? It's just based off a GitHub change log. So, if the GitHub change log is the same, the only thing that is different is all the brand details. So, what if I could also pass in to my skill a different brand and say, I want to create a a skill for this
brand and the change log is going to be different, will it work? So, this is me last night at 11:00 p.m. and I got it to work. And I said, "Wow, this is cool." And then I said, "What if I could basically go and create a release video for Daniel's new release that he released earlier today?" So, straight after Daniel's talk, I was over there with Daniel
watching. One prompt, everybody. This was the prompt that I used. It's on my computer. If you don't believe me, I can totally show you. This is the prompt I used and it generated a release video using the skill I made. I'm going to show you the video right now. It is AI generated. Okay? You don't have to love AI generated videos, but I just want to show
you something that is it takes so little time and one prompt. And then I just walked away. It did everything. Half an hour it took for the processing of the stuff, but it was only I want to show you this because I want you to think about ideas. How can you do this for in your company? Some marketing style videos, you know, some other kind of things
that you can use, some onboarding, some training, some whatever. This is cool. I think it is. You can tell me. Let's watch the video and you can tell me what you think. Next version 4.4 is here and it's a big one. Introducing create use fetch and create use async data. You can now build custom instances of your data fetching composables with your own default options. Define your
base URL once, add interceptors and use them exactly like use fetch. Fully typed everywhere. We've upgraded to view router version five. This is the first major router upgrade since next three, removing the dependency on unplugin view router. For most apps, it's a transparent upgrade and typed routes are coming out of experimental next. Layout props are now fully typed. Pass props directly to your layouts from define page
meta. No more provide inject workarounds. Your layouts become truly parameterized per page with full auto complete. Accessibility gets a boost with use announcer. Announce dynamic content changes to screen readers. Perfect for form submissions, loading states, and search results. Just call polite or assertive from anywhere. And route generation just got 28 times faster in development. We've migrated to unrouting using a trie data structure. Changes that don't add
or remove pages are nearly instant. That's next V4.4.0. Upgrade today at next.com. >> me What do you think everyone? That just shows you the power of agentic workflows and things you can do with skills, right? And I want you to just take away from that that you can all build and do anything. Now, that was generated in 30 minutes. I didn't go like you saw, that was
just released today. That was released today and I was able to get a release video out. Um is Daniel here? I don't think Daniel's here. But I Daniel was with me and he verified and he said that it's good enough and that we can put it on the next channel. Like that's amazing. Right? That is amazing that just with that looking at that he was able to
say, yep, this everything is the context, the content, it is perfect. There's nothing wrong, right? Now, if there was, this is actually just code, it's TypeScript. And it's uh it's using Remotion. And it's actually my skill uses Remotion skill to be able to create the video. It It's actually React, don't worry. But it's TypeScript. You can basically just go into it. I've never I don't haven't ever
gone into the code itself, though. I just tell the LLM when I was building the skill, "Actually make this a bit bigger, change this, do this." But it's just code, so you can go in and change it and modify it, and you can own it. You can, you know, do so much more with it. And um I don't know. It also uses the Eleven Labs MCP server.
Did you think that was my voice? That wasn't my voice. That was AI-generated. But that was my Um so that was That was basically my clone that I cloned and that is in the Eleven Labs um my my personal account. And then I use the Eleven Labs MCP server inside the skill. I I again, I don't open Eleven Labs. It basically creates the script for me as
part of my skill. It then goes to Eleven Labs using the Eleven Labs MCP server. It takes the clone that I created and then it generates the the voice clone based off the text that it generated, and then it stitches it all together. It's amazing. I didn't do anything. One That is how cool things are. Now, if I had to been had to do that myself, I
would have literally been, you know, I don't have the recording equipment here. I was in my hotel room when I was over here, actually, while you were all watching the next talk. Um that's the cool thing about it. So, I haven't published this. It's still just on my computer, this skill, but I'll definitely create a a video or a blog post or something and publish it just
in case you all want to try it out on other things, put in your own GitHub MCP or your own GitHub change log, put in something else. You're not getting my voice, though. That's mine. You have to pay me loads of money for my voice. But you could totally clone your own voice. Check out Eleven Labs. It's really, really cool. It's It's pretty amazing, and it sounds
Does it sound like me? Yeah, it's pretty cool. Like, my husband was like, "What? It's like you." Um it's cool. I was I was impressed. There are moments where you go, I wouldn't have said it that way, but it's pretty cool. It doesn't cost me anything to do that. Like it's it's it's amazing. So, everyone that's all I have. If you if only you go away with
one thing is create a skill. If your skill is just to say good morning, create that good morning skill. Check out my my site if you want more information, debbie.codes, and go and just have fun. We are in the time where everything is unstable, so learn everything apply everything that you can, and just just have fun everyone. Be creative, build things because right now you can do
anything. Thank you very