🔴 Learning AI Agent Skills From Scratch

nunomaduro| 02:24:34|Mar 12, 2026
Chapters7
Host greets the audience and outlines the session focus on learning what skills are and why they matter in Laval.

Nuno Maduro dives into how AI agents use modular skills to avoid context bloat, demos installing and using Laravel/Lavl skills, and how Tune could reshape agent outputs.

Summary

In this 2.5-hour live deep-dive, Nuno Maduro boldly clarifies what “skills” are in the AI agent ecosystem and why they matter for Laravel projects. He contrasts the old monolithic agents.md approach with a new, scalable library of individual skills that agents can load on demand. The stream features hands-on exploration of Lavl’s skills repository (skills.laravel.cloud), how to install and trigger skills in Cloud Code, and a live audit of a sample Laravel app using the Laravel security audit skill. Nuno also compares formats like ASK/JSON versus Tune for more compact agent outputs, and tests a Sparkly example where an 8- to 10-minute audit becomes a targeted, low-token interaction. Throughout, he teases practical features heading to Laravel 13—such as a Sluggable feature for friend URL routing—and riffs on the broader implications of AI workflows, including local vs. cloud models and the token-cost benefits of Tune. The chat bursts with real-time discovery: what skills exist, how to install them, and how they change the way developers write, test, and deploy code. This stream is equal parts tutorial, product update, and open-forum brainstorm about the future of AI-assisted Laravel development, with practical demos and live coding experiments.

Key Takeaways

  • Skills replace bloated context by organizing instructions into discrete, load-on-demand files (e.g., a security-audit skill) instead of lugging everything into agents.md.
  • Laravel Pint now offers a no-comments/no-typing-annotations option (type annotations only) to trim token usage while preserving essential PHPDoc data during linting.
  • The Lavl skills repository (skills.laravel.cloud) enables one-click installation of community-made skills (e.g., “Laravel security audit,” “past4,” and browser navigation) that an agent can activate on demand.
  • Tune is presented as a more efficient agent-output format than JSON/ASK, reducing token costs and streamlining data exchange between CLI tools and LLMs.
  • A practical Laravel 13 direction includes a built-in Sluggable feature to generate friendly, conflict-resilient URLs, with plans for reserved slugs and multi-tenant scoping.
  • The host demos how to trigger skills (e.g., asking Cloud Code to perform a “security audit”) and shows how skills are automatically selected based on the user’s request, rather than pre-loading all possible capabilities.
  • There’s a broader conversation about AI workflow: staying connected to code while still leveraging AI writing for rapid iteration, and the role of local vs. cloud models in a developer’s toolkit.

Who Is This For?

Essential viewing for Laravel developers curious about AI-assisted development, especially those exploring Laravel Pint, Lavl Cloud skills, and Tune-based agent outputs. It’s also valuable for anyone tracking how AI agents scale with modular skills and for contributors curious about Laravel 13 features like Sluggable.

Notable Quotes

""Skills are literally like a library of how to do things—you load only what you need when you need it, not everything all at once.""
Core concept of skills as loading-on-demand modules to avoid bloating the agent context.
""The library of skills is literally like a directory where you can install a thousand open-source skills and just pick the ones you want.""
Shows how public skill directories enable extensibility without hard-coding all behavior.
""Tune is smaller, faster, and more efficient for agent outputs—the tokens are cheaper and the LM can respond more accurately.""
Discussion of Tune vs JSON/ASK for agent communication.
""This is not merged yet; it’s a pull request and a work in progress for Laravel 13, but the idea is solid and already getting good vibes from the community.""
Status update on Laravel 13 features like Sluggable and their integration with the skills workflow.
""If you have a form request after() closure, the idea is to simplify by keeping logic at the root rather than inside nested closures.""
Live brainstorming about improving Laravel form requests and code cleanliness.

Questions This Video Answers

  • How do Laravel AI skills differ from traditional agent rules files?
  • What is Lavl Cloud and how do I install skills from the skills directory?
  • What is Tune and why should I consider using it for AI agent outputs?
  • What is the Laravel 13 Sluggable feature and how would it work with friendly URLs?
  • How can I backfill slugs for existing models in Laravel?
LaravelLaravel PintLavl CloudAI agentsSkills (AI)Cloud CodeTune (data format)Laravel 13SluggableSecurity audit skill
Full Transcript
What's up, Nuno Nation? How everyone is feeling today? Welcome back to the live stream. Excited to see you all. How everyone is doing today? Beautiful Wednesday. I hope everyone got to the gym today. Super important. You guys know that. Oscar, what's up? Joanito, what's up? E Joel, what's up? Tik Tockers, how you guys feeling today? Nice to see you all. What's up? What's up? What's up? Hi, nice to see you. Andre, what's up everyone? Welcome back to the live stream. And today will be like a learning thing, you know? We are going to learn all together what the [ __ ] is skills, man. Cuz I've been so busy with like everything LAU kind of the full deal drama and everything, but I haven't actually took the time to learn skills. So, I want to kind of spend some time together with you guys learning what skills are and why should I use skills and you know, kind of to understand the full drill. You know what I mean? Your hairstyle never disappoints. What do you mean? Is it cool? What do you guys think? All right. From 1 to 10, how cool is my hairstyle today? I don't think it's good. I literally I literally showered right now. So, this this cannot be good, but let me know. Let me know. Let me know. Let me know. I'm doing fantastic. Thanks for asking. Thank you. Thank you. Thank you. Sabrina, nice to see you all. How everyone is doing. Super happy people today. Flying David, nice to see you as well, man. Boom. Sh. Today will be exciting. Okay, today will be exciting. I hope you guys are ready because this will be super exciting today. Okay, let me show you what I've been cooking. Well, not cooking but what I have prepared for today. Okay, so what I want to speak to you today is about skills. Okay, so basically like we have skills and boost you know and I think I know what they are but we are going to find together. By the way, if we have an expert on skills amongst you guys, you guys are going to teach me. Okay. But what I think skills are is that when you launch an agent, let's say cloud code or whatever. Okay. And you say something like can you do this pull request? If you have a skill which is how to do a pull request. Let's say let's go here. We have a skill or a b actually let's do this. Okay. Let's do this. And here I this is like a bunch of skills. And one of these skills is how to do how to do a pull request. Cloud code will automatically check the file named how to do a pull request to actually understand how can how can you do a pull request with conventional commits and what is the repo and kind of the full thing instead of guessing basically. Okay. So, I feel like, you know, in the past, we had we we, you know, we went all over the place. We had this agents.mmd with a bunch of [ __ ] together and everything. And the agents were loaded with this context without even understanding if they should literally um even know all that context. And now they have this directory, this index of skills, which is literally like a library of how to do things. That's for that's from my understanding. Okay. This is Sony, by the way. Okay. This is Sony. It's 3.5 in my city. What do you mean? Oh, it's 3:00 a.m. Oh, [ __ ] That's a problem. Hey, look, what's up to do? How you doing today? Nice to see you all, chat. Nice to see you all. Oh my god. Hello world. What's up? What's up? What's up? So, this that's what I think skills are. I kind of want to read a little bit. I want to ask Cloud Code what skills are and how different they are from the regular the regular rules file. I know for a fact that Lavel boost now ships with skills as well. Okay. And so we are going to learn that too. And why do we even ship with skills support? We have all of that to double check. I also want to double check what is this versel skills CLI thing because apparently from what I can understand is that thanks to this library of skills which you can have. There is also people who have developed literally a thousand um open source skills which you can potentially just have a few like here for example I can search for browser and potentially I can have a skill which tells the agent how to navigate the browser. I don't know you know why the agent should need that but apparently we're going to double check today. Lighter context. Yep. Yep. Yep. Jonito. That's what I think this is about. Okay. So I need to learn I need to learn this. Okay. So hopefully you guys are going to enjoy the live stream today. But that's the goal. Okay. Hope you guys are going to have fun. A lot of people already joining the live stream. Let's always say thanks to our sponsors, okay? They make they make this possible. So, let's say thanks to Redberry International, one of the best digital agencies working with Vue.js and Latavl. Check them out. They're awesome. Okay, Redberry. International of course, Titan. Okay, they build and rescue web apps and development teams. In their team, they have Matt Staer, which is the responsible of this beautiful book, Laravel up and running. Okay, check them out. Mail trap, of course, they previously had this local development solution for emails, but now they also allow you to send emails in production. DevOps, awesome, awesome, awesome. Del Mailtrap.io. Check them out. Jet Brains, the company behind the best editor in the entire planet, PHP Storm. Okay, PHPstorm for the win. We know how much we love PHP. It's beautiful and we love it. Okay, Code Rabbit. Of course, Code Rabbit is this company doing AI pull requests through GitHub. They're awesome. They do graphs in your pull requests. They're absolutely awesome. Check them out as well. code rabbit.ai for the win. Okay. Thanks to our sponsor for making my dream come true. Do I need to sing the following? I know Josh was promoting a new skills web page. Oh, really? You mean Josh Siri? Really? Josh Siri skills. Oh, okay. Cannot find anything. Can you guys send it to me like the link, please? I would appreciate that. Okay, I would appreciate that. Maluk is saying the following. From my understanding, skills don't load um skills don't load skills until you think it's needed. Yeah, that's that's what from my understanding is the same thing. So, let's just recap what I think skills are. And you know, maybe like the experts on skills would let me know if it's this is exactly what you guys think it is. Okay. All right. So, let's open here a plain text file. Let's make this a thousand times bigger like this. So previously we had this things called it agents.mmd or um you know we have a bunch of stuff like this like claw.md and everything like that. Now the problem about this situation is that people keep adding up stuff into this. Okay so they would they would add like front end standards you know um like how to use JavaScript properly, how to make solid JavaScript, how to make uh PHP solid as well, how to make whatever solid. And the problem about this is that if you keep if you keep adding stuff and you are just doing backend work all the GS context plus a lot of like all the stuff that you don't need will eventually still be loading to the context. Okay. So what skills are doing and you guys let me know in the chat yes if you think the skills are literally about this is that instead of literally having everything in a single file you are going to have multiple ones. Okay? and you call them skills just like this. Now these skills will have something like uh maybe like a sub a title or whatever which says GS solid principles and you know the same thing for every single one of those skills and the agent will have access to these titles. Okay. And the agent like cloud code opus or whatever will have access to these titles and kind of understand and dynamically load those files individually when you need them. Okay. So how how close I am to skills. Is this what skills is about? Let me know. Write down the chat. Yes. If this is what skills is about. Okay. Yeah. I think skills are just a set of instructions how to load things. Now what is interesting about skills though is that because they are literally single files within a skills folder, I think the community is eventually developing this directory of skills. So here for example I can search Lavel and find one potentially. Here we go. I can find the Tailwind development skill for example which comes within Laravel boost which is interesting and maybe like even past PHP is here by the way. Let me see. Uh not really. Do I find past maybe? H I would have to double check. Okay. Why do you type GS? Why do I type GS? What do you mean? We also use skills to write clean code. Right. because technically you can develop your own skill file as well. Okay, so I want to kind of understand this a little bit and maybe we can just pull one skill locally to see how it goes. Okay, so I have found this repo call it skills literally and potentially I can use this to install new skills on my project. So here we are in the Lavl project uh with Laravel boost. Okay, with Laravel boost and we see already a skill for past 4 because I have past installed which tells me that potentially we're going to be able to install different skills here. Okay, I want to double check this. Um let me see. Let's actually pull like an anthropic official skill. I'm going to just, you know, search for anthropic and see how it goes. Okay, and see how it goes. By the way, shad uh I kind of want to dive into the topics of the moment before we dive into all of this. Okay, so let's basically go into my Twitter real quick and just give you some updates on the recent tweets I have done. And starting with this beautiful tweet I have done, which I am really thankful about how awesome the community is. So you guys know that I want to step up in 2026 regarding my streams. Um I want to I want to make amazing content in 2026. That's why I'm literally doing like a bunch of efforts um which I have talked to you about already. But one of the things I want to do is kind of do these long streams of 40 48 hours. Okay. Literally streaming like okay I'm going to develop this Laravel app for 48 hours and I will be like on this villa with a pool on the background in the barbecue and you know ping pong and snooker and everything. And I needed companies to literally be able to sponsor this because I cannot literally just take vacations and you know, well I could but uh it would just be super expensive for me. So I need companies to be able to sponsor this and I tweeted about this and a lot of companies reached out which is awesome. Okay, so you guys are absolutely awesome. Thank you so much for retweeting, for liking and everything because people literally reached me out and they made they made me offers and I'm super happy about this aka this is happening. Okay, this is happening in very likely to happen more than once and the goal is kind of going bananas with this. Okay, so my goal is like you know I want to I want to kind of gify a little bit development. Okay, so I want to have like a villa like a full house with cameras and everything you know amazing lightning almost like a studio with pingpong barbecue a pool and I can just basically just you know code the app from whatever and you guys are going to see everything. It will be awesome. will be people jumping in as well. People will be flying in. It will be dope. So, if this is happening, I don't I don't have a date. I don't have anything, but it will be awesome. Okay. W sponsors. Exactly. W sponsors for the win. Okay. Yeah, I will be. This is happening more soon than you guys think, actually. Okay. You know, I I hate to prepare things like months in advance. So, I want this to happen literally like either next month or in two months from now. It needs to happen fast. Okay? Okay, it needs to happen fast cuz I, you know, otherwise I just get disappointed and I change my mind. But, uh, it will happen chat. So, it'll be awesome. Okay, next. What else we have here? Um, I want to chat with you guys about something which I have literally noticed recently. If this tweet loads, it'll be awesome. Here we go. Have you guys noticed like recently a lot of these big services, Cloudflare, GitHub, Anthropic, like all of these big companies are literally with a bunch of downtime. Have you guys noticed this recently? It is crazy. I literally noticed that GitHub have a 91% uptime in the last 90 days. This is insane for a a service that needs reliability across the world. This is absolutely insane. Now, this is GitHub, but also like things like Cloudflare have been down like for a like for a big t for a big chunk uh these last three months. But equally other stuff like AWS, you know, it's kind of insane. You think it's AI? I don't I don't even know what it is honestly, but it is crazy, you know. Okay, EGL is saying, did you saw the Amazon news had a beat meeting do a mount of downtime duo do AI changes? Oh, really? So, it was AI. That's interesting. Please include include Brent. Uh, I don't uh So, I reached out Brent already, by the way, because I wanted to fly into his country to do in real life content there. Uh Brent is is not up to it basically. Okay, maybe you guys can convince him on his stream, but I don't think he is up to it. Okay, what else? Umah, and yeah, even today I was developing with cloud code and I had I think it was like 30 minutes downtime on on on cloud code. So cloud code was done for 30 minutes literally this afternoon. YouTube chat not showing on screen. I think it is. Sometimes it is some downtime, but it's back. It's back, baby. Sh forget go all the way down and click like on the video. Okay. Insanely important. Okay, it would mean the world to me if you could do that and subscribe the channel while you do that too. Okay, so a bunch of downtime on cloud code during the afternoon which is you know kind of makes me feel like useless when AI is down. I just feel like useless literally cuz I'm so used to this workflow of uh you know developing with with AI all the time and it's it's just you know so EJL just sent me a tweet today. Let me see. Is it safe to open EJL? I hope it is man if it's not will be a huge problem. Oh, Amazon is holding a mandatory meeting about AI breaking systems. The official framing is part of the normal process. Briefing note describes a trend of accidents with high blast radios caused by generated assistant changes. It does not surprise me but honestly it surprised me like literally 0%. It does not surprise me at all honestly. So even though like all of the code I have seen as part of downtime wasn't actually I think do AI but you know uh well I guess we're going to find out more about this in the future. By the way Shad I forgot to ask how your week is going so far. You guys having a a happy week so far? Hopefully yes. What are you guys working on at the minute? Hopefully some cool stuff. Chat, let me know. I want to see what are you guys working on. What do I have here? Oh, we have a new by the way in cloth code. I want to I want to use this today. Which local model for PHP do you recommend? I don't use any local model. I think actually using a local model is a bad idea because you don't with a local model you don't get even a close like inference that things like cloud opus will give you. You know what I mean? Does anyone is anyone here today using local models? Type yes if you are using any local model. Type no if no because I don't think local models give you you know any any close goodly good inference. Basically by inference I mean like good actually good results. By the way I just noticed that is a new by the way uh command on cloud code. I'm going to I'm going to test it real quick. So if I type cloth here can you get familiar with this project? So now I can type by the way what this what this project is coded on. Oh my god, this is actually cool. Yeah, because in the past we had to Oh, no response received. Well, this is working fantastically. Cloth code. Congratulations. That was my first time trying this feature and it's working fantastically. Good job. Good job. Good job. Oh my god. Let's see what people are saying. Not a lot of people using local models. It's expected. Yeah. Well, Mikey is saying, "My laptop is not powerful enough to use local models." I mean, which laptop is powerful enough to use local models? Let's be realistic. Like, I have 36 I have currently 36 GB of uh memory and this is not enough or not even closely remotely enough to use like the powerful models. tech is not powerful enough for local inference. Absolutely. Even though I think PHP Storm ships with a bit a little bit of local inference. Joan Anito is saying I'm looking for a new PC for local models. That's actually smart. Even though like you need a lot of RAM. Exactly. You just need a lot of RAM basically. Tuakai saying the following. Nope. The cutting edge local models are us. The cutting edge ones are usable, but nothing below that is good enough in my opinion. Oh, yeah. Yeah. Yeah. You mean like the cutting edge models like the online ones? Yep. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Yep. Miluk is saying the following. I'm working with a new LM uh LM LLM, you mean? With AI abilities to help student learning with AI and instructions. Nice, nice, nice, nice. Cool stuff, dude. That's awesome, man. Yeah, I have 36 gigabytes of memory. This is a a MacBook as well. MacBook M4. So, it's not like I can have more than this. Je is saying the following. I'm using Neotron currently on a dedicated server with 3,90. What is even Neotron? I don't even know. Charlie French boy saying the following. Nuno, do you know how public codebase and real stack with action patterns in the Nuno big things? Well, you can see my starter kit. My starter kit is literally like it's literally wrote on uh the React inertia stack and it's awesome. Let me see. React starter kit. So, Laravel React starter kit. Apologize. Uh is this the one? Nope. Laravel inertia react starter kit perhaps. Nope. What the [ __ ] Okay, I'm going to just Google it. Nuno Maduro starter kit. Here we go. In this one, we have an inertia react starter kit, which is this one. In this one, you will see a bunch of action pattern situation here. Okay, a bunch of examples. Okay, I'm going to send it to you. Here we go. Charlie French boy, enjoy. Have fun. Have fun. Alisa Pro, what's up? Nice to see you. Welcome, welcome, welcome. Search Nuno skill. I don't have a N. Wait, what? What do you mean? Like in the No, there is no Maybe there is like a Taylor Otwell skill though. That would be fun if there is a Taylor. We could build one though. Taylor. Oh, well. No, there is no Taylor. That would be dope though. It's really slow this website. Oh, okay. It's back. Yeah, there is no Taylor Hotwell skill. No, that would be dope though. Could be a good idea. You're welcome. You're welcome. Oh, the Neotro model is actually a model from FB4bit. Interesting. Sabrina saying the following. I have a pull request for the past browser plugin and I'm working on adding Z to Li kit. Oh, talking about browser testing. I have a few things I want to show you. I just released a new version of Laravel Pint yesterday and actually allows you to do a very cool thing. Basically like if you have any unimported class in your project, Laravel Pint will automatically import that class. So something like this for example will no longer happen. If you have a a fully qualified namespace in the middle of your code, Laravel Pint will now automatically import that class all the way top. Isn't this cool? Come on, Chad. It's a 10 out of 10, right? I think it's a cool one. I think it's awesome one. Chad, what do you guys think? So this is this is already shipped by the way. Okay, this is already shipped. I did saw so this is how much work it was. I did saw that a few people were not happy. Well, a few people like three or four people were not happy that this literally is a breaking change. Now if you guys want to have a very, you know, a very stable preset of Laravel, you guys should pinpoint Laravel pint. Okay, that's the goal. Oscar is saying try skills.lavel. lavl.cloud. Oh, seriously? skills.laravel.cloud. Oh, what is this? How did an What the [ __ ] An open directory of reusable AI agent skills for Laravel and PHP installed with a single command. Wow. I literally just learned today I've learned. What is all of this? What is all of this PHP guidelines from spasi? Oh wow. Oh, we have a lot of L quality skill. Quilt quality tooling for PHP stand pint in streak types. Wow. Literally learned architectural testing with past PHP. Oh my god. Good stuff. All right. This is badass by the way. chat. How did How did I not know about this? You guys are awesome. I don't know who shared that. Oscar, thank you, man. I appreciate. You guys want the link, chat? Here we go. I'm going to send you the link. Okay, this is cool. Honestly, Veltics, what's up, dude? How you doing? All right, Shad, I sent you the link. We just learned literally. Okay, I just learned that literally you can you on this repo there's a bunch of uh skills. How do I add a skill, though? Like, I'm Noo-Noo. I want to add a skill into this. How do I do that? Is that a login on this thing or a register thing situation? That is Wait, is this like this is route to expose it or why do I add the skill into this? One second. I I want to make sure that route is actually exposed. How do I add uh skill into this? Okay, I'm going to ask Josh Shiri. Oh, wasn't Lavl news? Let me see. Laval news. Lavel skills. Oh, it was. That's how far-fetched I am from stuff. Jesus Christ, that is so many stuff these days. Do you guys feel the same like with AI and AI stuff all the time and new stuff? It feels like every single day there is something new. At least Twitter makes me feel that way. I am the only one here. Or does anyone of you actually feel the same? So much to keep up. Exactly, dude. It feels insane, honestly. Like literally lot we had an open directory with AI agent skills and I didn't know about that. That's how [ __ ] unbelievable things are at the minute. It's just crazy, man. You know, it is crazy. Things are insane at the minute. Like, you know, the world is moving so fast. It's just insane. Okay. Some of you were some of you were saying that you need to pull requested. Can you elaborate a little bit, please? Where do I do that? What kind of stuff can I use from here though? Like, let me search for something. Do we have pasta here? We have a bunch of past stuff here. Modern PHP and [ __ ] PHP 8.6. Who created this? Look at this chat. basically like mo master modern PHP from APHP 8.5 to PHP 8.6 Six. I cannot wait, man. Like living in the future. This dude. See the docks. Okay. Well, I probably should just see the docks. Indeed. How to create a skill. Oh, thank you. Skills are markdown based. Oh, this is awesome. But yeah. Yeah. Yeah. Create a retreat with skill.md file and in a skills directory include blah blah blah blah. Oh, just literally automatically. No way that's true. Can't really keep up really, dude. For sure, man. I honestly feel the same. It is crazy the amount of stuff we see these days like on online. All right, let's try this out a little bit. Okay, chat. Uh, let's see something here we can use. Oh, let's use this one. Okay, chat. I just found something called a lot of security audit. Let's actually use this one. Okay, so I'm going to click on it. And we have I kind of want to see the source. By the way, uh something I have learned is that you should be really careful about the things you add to your codebase because I mean you don't want to add like something unsafe, you know what I mean? So the role is you add a lot of security auditor. You analyze level applications for security vulnerabilities, misconfigurations, insecure coding practices, think like an attacker, blah blah blah blah blah. Use the skills when All right. Yep. Yep. Yep. Yep. Yep. Yep. Yep. So basically this is like a security auditor. Okay, let's actually use this one. This is a fresh Laravel app. So there is no reason why you should just basically um find stuff. But let's see. So I go to the P. So basically I just clicked here. Okay. I'm going to go to my terminal real quick and I'm going to type PHP artisan boost add skill and we have a a few things here. I'm going to say yes. So it's saying the following. Let's give Lavel a boost skills installed. Enjoy the boost. So now we have the skill. Meaning that if I click on skills, I see this skill being installed here. Okay. Okay. Okay. Nice. Cool stuff. Okay. This is kind of crazy though. Like reviewing. Exposure risks. Okay. All right. So, how do I try this now? I just say um h that's actually a very important question. There is a way of actually triggering a skill automatically. Like if I go to cloth code now, can I type like dash skill for example? List available skills. Oh, interesting. Okay, I have three skills available. How do I use them? I'm going to ask cloud code that. Okay, I'm going to say the following. Uh I'm going to put this smaller. I'm going to type Claude. Um, I have just noticed you have three skills available. How typically things work here? Do I have to trigger it? You just know it. Let's see. Okay, Shad. Let's see how it goes now. So, I'm going to literally ask AI like how this how the skills are triggered. Even though I think like they are triggered if I ask for the security audit basically. You need to use you need to ask AI to use the skill. Oh, that's interesting. GTSM, what's up, dude? How you doing? Pick and flow. Nice to see you all. How you guys doing today? Oh, how you doing? Push back. Nice to see you all. You need to check Slack Nuno for knowing this. Shots fired. A lot of Elort team members saying Nuno check Slack. Oh my god. I check Slack, dude. It's just a lot of stuff, you know. It's a lot of people now as well. Don't. Okay, let's see how this works. Great question. Thank you. Thank you. To activ I activate them automatically based on what you ask me to do. For example, you say add a test for the user controller. I will activate the past testing skill. Okay. So, if I say something like check this app for vulnerabilities, it will activate the other one. All right. So, I will just say the following. uh check this app for vulnerabilities and I think that skill will be automatically pulled up. Oh, here we go. Skill Laravel security audit automatically pulled up and now it's scanning my app for vulnerabilities. This is actually cool stuff. Okay. By the way, chat, I am the only one discovering what skills are today and then in everything or you does any of you actually also is discovering skills in the exact same time as me today or um I am the only one and I'm a bad developer. Uh allow reading from streams for this project. Uh yep, you can do it. burn for real, dude. I just got smoked by the Laval team. You also learning? Thank you. Finally, someone. I'm not feeling like an [ __ ] today. That's so awesome. Thank you. Thank you. Holy moly. Okay, so now it's like reading my project and it's kind of getting familiar with things. So then it will give me like a security review. All right, Shad. For those who just arrived, um I'm literally learning skills today. Okay, so apparently what is happening with a bunch of these agents is that they are getting like a little bit overwhelmed with context. Okay, because we have this agent.md file and over time what agents start to understand is that this is getting a little bit bloated. As you can see, there's a lot of stuff here. Okay. And obviously if you keep if you keep adding context like front-end context, CSS context, JavaScript context, PHP context and more things over time you want to work on a small portion of your app and you still get all this context loaded even if you don't need it, you know. So um what the AI people end up doing is developing like individual skills. Okay. And one of the skills is for example learn how to uh write proper tests with past four. Okay. So that will be an individual file which is called skill.mmd. But we also have things like uh how to perform a security audit as an individual file. And what we have discovered today and what we have discovered today is that we can also install individual skills from a public directory. Call it skills.laravl.cloud. Okay. I'm going to send you the link again. Here we go. Here we go. And this is literally a directory of various skills like um how make the AI a lot of specialists, how make the AI very good working with eloquent, how make the AI working very good with chat CNN. Okay, this is a very good example. You just imported chat and you want to make the AI working very well with chat. And we have various examples here like how to do a proper API, um how to work with Symfony, how to do a clean architecture. So you give all these various skills individually to the AI and the AI will only use them when it needs to. Okay. And we just found out that literally I just asked the AI, can you do uh can you do um a nice audit security audit to my app? And as you guys can see literally what the summary is is that this is like literally a clean Laval 12 scaffolding with nice uh defaults. And there is a few things you can do like turn on a few things to make it even more safe. But overall, of course, this is literally no issues found. Okay, good stuff. Yeah, there is a few things we can do likeformational stuff. Uh, this is low as well, but yeah, obviously it doesn't found [ __ ] because this is literally a a fresh Laravel app. So, we don't see anything. Um, but yeah, so it just became good doing audits thanks to this skill, which I think is cool honestly. And tokens cost money. Exactly. Like if you use skills instead of the traditional rules or MD file, it will just become more, you know, better literally handling uh context because it's much smaller context basically. Okay. GTS Mag is saying the following. The question is when implementing let's say authentification system, where do you put the technical skills or technical specs? Well, to be fair like Laravel is already very good with authentification. I would just use a lot of val normal boost guidelines for authentification. Seems like a new concepts like skills are popping up every 3 weeks. Dude, that's you are not like you are not overreacting like all this stuff is popping up uh every week. There is a few other con uh concepts that are just new. For example, uh right now I have literally a huge list of tasks that I will be tackling at Laravel and some of them are for example uh agent output. Okay, so we obviously at Laravel have various things that output uh console information. Okay, we have Laravel pint of course, we have passph and we have artisan, right? So we want all of this to actually um output stuff to the to the agents themselves. So agents now instead of being you guys running pint, agents are going to run pint for you and agents are going to run the test suite for you and agents are going to use PHP artist and make for you, right? So, you know, historically all of the output is in ASKI. So, what I'm doing this week hopefully is instead of outputting ASKI, I'm going to output uh tune. Okay? And if you don't know this, this is like a very simple version of JSON. Okay? And eventually what I want what I'm going to end up doing is like just having all of this tooling on the CLI outputting tune because it's just way more less context heavy for the agents. So that's just one example of one thing I'm going to end up doing. Now I'm going to tell you something. I'm going to tell you something. That's why these things are moving on very very very fast. It's because people realize that Jason was still a lot of tokens. Okay? So they moved away from JSON to tune. But I can tell you this is so new. This is literally three months man or four months or five months. And this will end up now that we think this is a standard. I'm I'm telling you this will change like real real soon. someone will come up with a new standard which is more efficient, less techy, uh, contexty, better for AI and stuff like that. This is just one example, but obviously we can also talk about MCP, right? You guys use MCP now. I think MCP is crap. I think the MCP protocol, it's just literally crap, is super slow, just takes forever, the come and go. And I think like the MCP protocol will be fully rewritten with other stuff in the future. Uh but yeah the currently the problem with MCP is just you know uh you have this list of MCP tools and then for each one of them you just grab the list of the things it can do and then you prompt for something. So all of this all of this come and go is just a lot of stuff. So I am 100% sure like 100% that MCP will be just be fully rewritten in the future to a different standard. Okay. Now all of this to say that this is moving fast. That's the only thing I wanted to say. Oh my god. Uh, The question is, can I add like 20 skills without bloating the context? Yes, that's precisely what skills are about. You can have 300 skills and the AI will automatically just pick the ones that are important for the task you are working on. Okay. Okay. So, I'm going to just repeat this again. Skills are individually think the think skills as a library. Okay, you are a developer and there is a library with books with each one of those books is like is like a different skill. You have a book for how to do browser testing. You have a book on how to do proper TypeScript. You have a book and how to do a proper API. Now your task is to develop I want to develop an API. So we'll ask the AI uh can you develop this API for me? What the AI will do is go to the library and just pick the skill which is important which is the one that develops the AP how to learn how to perform APIs. Okay. So was this clear shed? Are we all in the same in the same understanding of what skills are? Type yes if yes. I want to I want to understand if all of you understood what skills are. And if no just type no and we'll just explain again. I'll do my best to explain again. I think this was clear but let me know please I would love it what is web tune is a new protocol. So you know in the past you have something like this which is Jason right? So Jason is something like this you have a name which is Nuno Maduro and you have an age and whatever. How the [ __ ] does he know that I'm 35? This is like this is so creepy honestly. How the [ __ ] the AI knew this? Like this is so creepy. Honestly, it's just crazy how AI is getting smart. And anyways, okay, the the skills situation was important for everyone. Thank you. That's that's good. That's good. Clear for everyone. Okay. I will explain what tune is in a second. Let me just read the chat here saying the following. Agent still needs context to store what the skill is for what purpose. That's a good point. Okay, that's a good point. So, Yugo is saying something really important here, which is you have this library of skills, but the title of every single book, the title of every single um skill and its purpose, it's still loaded to the context. So, that's a good point. Okay, that's a very good point, Yugo. Thank you. Thank you. AJ is saying type year born is just ridiculous. Let's actually type the from Oh my god. No. If he can figure it out, this I'm I quit. Okay. This is not my brothers. This is not my brothers. [ __ ] you, AI. You don't know [ __ ] about me. Leave me alone. Uh 35 but aging like fine wine. Thank you. Thank you, man. That's what I say myself to make myself to make my to make myself happy, man. All right, Shad, I want to explain what is tune real quick. Okay, for those who are asking. So again, what Atlavea will end up doing in the next few days is making sure every single every single CLI tool you guys are using will end up using tune instead of ASKI. And again, ASI is this when you guys come here and you type a lot of alpine, this is ASKI, okay? You see points, you see like a full line, you see this green thing like for AI, this means nothing. Okay, this means dots and the only thing it means anything here is really this past situation. All of this is like context overloading. We are literally sending tokens for nothing. And obviously we could literally replace this with uh JSON. Okay, which is exactly what we are doing today. So if I go here and I type vendor bean pint uh- format JSON I think. Oh, here we go. So if I do this, you will get uh a few information like what are the files processed? Is it is it format JSON or agent? I think it's agent. It might be agent. Oh, here we go. So, if you do d- format agent, you get this. Now, what is the problem with this? The problem with this is that for the AI, there are there are things here which are not important. Uh, you know, the brackets are not important. Um, this thing right here, how do we call this? Codes. Yeah, codes are not important either. So, what turn have done is literally replace this with with this. So, we'll not we don't have this. We don't have this. It will be just this. This is what I think turn is. Okay. Kind of just removing a bunch of the boiler plate. More dots. No, no, no, no, no. Oh, interesting. Pick and flow is saying that if you type context on cloud, it will show you how much context your skills and plugins are using. Oh, really? So if I go here and I type slashcontext, we visualize. Oh. Oh, that's interesting. This is literally the first time I see this. Oh, this is kind of cool, though. Oh, as you guys can see, we have barely anything on skills. Wow. Very cool stuff. Thank you. Thank you, Pink Floy. That was a good tip, man. Thank you so much. Jeepers is saying YAML. Oh, you think the tune is close to close to YAML? Go DV is saying the following. Let's uh let AI write all the code seems fine, but every time I see code written by an agent, I'm getting less familiar with the code in the codebase. Any concerns or tips to tackle this? Absolutely. Yesterday on my uh two days ago stream we talked about how important having the developer feeling connected with the codebase is for actually finishing the project. And in the past we have seen that AI um so basically in the past you would just open PHP storm and you would feel almost emotionally attached to the code you are reading right now. So you would just wake up in the morning and you would see and you would think like oh now I know how to solve this problem. So I'm going to just you know code that situation and I will finish the project and now because is AI writing the code for you you don't actually feel like you are connected anymore to the code to the project itself you know so that's something we need to think about a little bit okay we need to work together okay chat like to literally understand how can we still feel connected to the things we are building uh in using AI in the process okay GTSME is saying Nuno what's your AI workflow after deploying um DU is like a user agent with Sentry. So I'm not actually working with products anymore. Uh so I'm you know I'm working with the open source team at Latavl um and um so I don't actually you know I spent like the last four years doing product development. So this is like post AI area basically. Okay people are saying tune is even smaller than let's actually just Google this a little bit. Okay Google by asking prompting AI. This is hilarious. Anyways, let's just actually do that. Okay, I'm going to just clear everything here. Let's type claude. Can you explain me the clear difference between uh tune and yl and why should I use tune for AI agents output? Okay, let's see what um uh cloud code thinks about this. thinks I will watch the previous stream. Yeah, the previous stream was a lot about like how do we all feel now that AI Oh, it's not familiar with tune. That's interesting. Can you search online and get familiar? Um I was just saying that in the previous stream we got uh we just were basically like uh talking like how getting emotionally attached to the code is actually important to be able to finish uh project, you know, um and today we feel that we don't actually build it ourselves almost, which eventually ends up like us not being interested by the project anymore. Elsa saying, "Have you tried Polycope?" Yeah, it looks cool. Honestly, I think Polycope honestly it's feels a little bit better than T3 shed uh three T3 co uh codes. I think there is a paper for tune. I think there is a paper fortune. Yes. So tune agent output. Oh, here we go. Let's see what this have. The data format changing how AI's um agents think. Oh, this is what I told you. Basically, like you guys see like how smaller um in terms of context things are. And I think this is like literally 40% smaller over time. Why everyone is talking about tune blah blah blah blah blah. Jason versus side by side. Yep. Push back is saying tune is SV SCV with nested super for real. So why this is important for LLMs? Apparently like we get more data per prompt, smaller bills and cleaner context windows. Yeah, because we don't have like the the codes and everything. Okay. Why tune? Why use tune is important for AI agent output? Costs saving up to 30 to 60% for your tokens. Better LM accuracy. Oh, this is actually important. You see this Chad? So, currently the LLM uh output after that like the the response to your output on the CLI will be a little bit better afterwards. Come more compact. Yep. Yep. Yep. The exchange of data will be lightweave of course objects use like yo nice good stuff what AI model do I use for coding I use code ppos 4 4.6 Googling sounds like Alta Vista today, dude. For real. Like I I just use cloud code and chat the desktop app all the time. I don't Google anymore. Like honestly, it's just better to just cloud code it basically. You know, even for understanding like coding concepts, I just don't Google anymore. I just cloud code it basically. And I don't know how much um Google will adapt to this, you know, because people just use Shachi PT all the time now. Marcel is shipping like crazy. Absolutely. All right, Shad. Uh what what else I want to see about skills? I think that's it, honestly. Let me just double check if we have anything else like on the Laravel um skills thing because I also want to show you something I'm working on today. Okay, Shad, I spend the entire afternoon working on something really cool, which is a new Laravel feature potentially coming for Laravel 13 and I want to show you everything about that. Okay, just out of curiosity chat, how many of you don't work with Laravel? Okay, if you work with Laravel, just say yes. If you don't work with Laravel, if you are literally a JavaScript or a Java developer, uh, type uh, no, please. Literally curious about that. Yeah, this skills.l.cloud looks good. Um, oh my god. That is a skill to do a lot of upgrade. This is insane. This is so dope. This is literally replacing shift at the same time. Yeah, pretty much works with laval everyone. Oh, not Java. Nice, nice, nice. Vanilla PHP monolithic. Well, that's not that bad. It's actually okay. All right, Shad. Uh, I'm gonna finish with skills today and then I'm going to show you something I'm cooking for Laravel 13. Okay, it's kind of a new feature. You guys will have to keep it quiet. Okay, by the way, you guys need to promise me that you are going to keep it quiet. Okay, so everyone say promise on the chat. Otherwise, I won't show you what I'm working on. Okay, this is supposed to be secret. So, just keep it keep it between us, Indonesian. You know what I mean? This is actually cool. Just a full laval upgrade skill. Okay, sh let's tweet about this. All right. So skills are the new way of not overloading your uh model with your agent. Did we say agent or model? Yeah, model with context. You can literally have hundreds of skills and not having their uh content content uh loaded until you need it. Here is a directory of skills you can add to boost. There we go. Bam. Bam. Boom. [ __ ] This is done. That was a nice learning of skills. I thought it would be bigger though. There we go. Okay, we saw two promises. I'm not showing you [ __ ] chat if you guys don't type promise. GTS Mega saying the following. How the agent know which skill to activate and when? So I think um the agent have access to the title in the description of the skill. So we'll kind of understand in the same way that you would read a title a book title of if that book in what that book is about. So all of the titles of the skills are still loaded to the context. The typo on new. Oh, really? Keep it for you. But I actually people like typos. Typos is a new cool thing now. Okay. Typos on tweets means that you have not run your tweet on chatt. And that's a good thing now. You know, we need to be content smart chat, you know. Oh, you meant way. Okay. Is the new away? Oh my god. Yep. Yep. Yep. Yep. Yep. Yep. Oh, I see. Skills should have a structured format. And they do. I think like if you go here and if you click on for example PHPS, MCP, server, whatever you click on source, all these skills have like a format, you know. This is the this is the description. So this is what gets loaded to the context themselves. Okay. All right. Bunch of promises. We're ready to go. Shed. So, I've been working on something for Lavel 13. And you guys let me know what you guys think. Okay. Let me just open it. Uhuh. I should probably create like a skill which is like how to make a good tweet, like tell AI to to make some typos and [ __ ] Oh my god. All right. Sh. Let me show what I've been working on. Um, I want to open this. What else I want to open? Yeah, I want to open my my PHP storm on this project that is like sim linked. One second. I want to open this. I think this is the one. Maybe this is the one. Yep, this is the one. Okay. Uh, All right, Shad. So, here is my pitch and why do I think this feature is needed? Okay, by Josh, thank you so much for becoming a premium sponsor on YouTube. You're absolutely awesome. Okay, thank you for supporting my work. And as a reminder, chat, you guys can support my work financially on on Twitch by becoming a a Twitch subscriber. If you have Prime, we will be literally for free, but also you can become a YouTube member as well. Uh, thank you, Shico, for subscribing. 16 months already. You're absolutely awesome, man. Thank you. Thank you. Thank you. Good evening. How you doing? You're awesome developer. Awesome. Awesome. Awesome. Developed by Josh. Thank you. Thank you. Thank you. All right, Shad. Here is my pitch for what I'm working on. You guys ready? By the way, Shed, ultra top secret. You keep this information for yourself and for yourself only. Okay. So, I'm working on something new. Okay. So at Lavevel Cloud, at Lavl Vapor, on Lavel Forge, we have this concept of friendly URLs. Okay. So you go, you create an application on Lavel cloud for example and if you go to the URL, let's say cloud.lar.commyapp, it will be literally in your app detail. Okay? And then you have an environment which is production. Let's say your URL will be something like uh my application/p production. Okay? So, we don't actually show ids because ids are ugly and you want to have this nice URLs. Okay. Now, also for your own blog uh blog, let's say blog post for your own blog, you also want your article to be something like this. You want to come here and you want you want to have like let's say nunum.com/blog/how to uh install um how to install Laravel 13. Okay, so this is literally what I call a friend URL and it's kind of super important and these days in web development, okay, you don't want to have ids. This is just lame having ids. Okay, now by default the Laravel route key is literally the ids. So what do you need to fight this? You need something called it slugs basically. Okay, so and I was just you know walking around on all these projects forge vapor and cloud and I noticed that the code we use is literally all the same. So I am making a pull request which will be a a community obviously proposal on how to add slugs as a built-in feature and the way it works will be the following. It's kind of ridiculous. Okay, so I hope you guys are ready. So the way it works is that you have your article model and you just come all the way top and you type this sluggable and that's it and it's done. And by doing this automatically you are going to have a column uh call it slug on this article. The slug will be inferred from the name or from the title. Actually you just type this. Let me show you. So you just come here and you type PHP artisan make sluggable. And what we are making sluggable is article. You type this. Oops. It is the make sluggable. Wait a second. Make level not defined. It might not be make sluggable. One second. Oh [ __ ] How is it called? Makes sluggable. Exactly. PHP artisan makes sluggable article. Oh, here we go. So you just type PHP artisan makes sluggable article and automatically the given attribute gets imported. You just select the title and that's it. So automatically you have a slug automatically on this article. Okay, what do you guys think about this top secret information? You guys promised me, okay? I don't want to see a [ __ ] tweet talking about this [ __ ] You guys promised me. Okay, so um but yeah, what do you guys think about this from 1 to 10? Good stuff or not good stuff. Ser, thank you. Thank you. How you doing, man? You love it. Charlie French boy, thank you. Thank you. So uh but yeah this is what you have to do. If you go to um the migrations folder you are going to find a migration that adds the slug thing and automatically this will just do everything you need from this. By the way this is all configurable. So um you know if you have for example an article name instead of title. So here is something interesting. Here we have done from title because there is a title column on this model. But if you had a title name or if you had a name instead, this will be named here. Okay, it will I'll just automatically infer things. 11 out of 10. Thank you. Thank you. Very useful. Thank you. Always great. Well, that's cool. Oo, great question. Okay, there's a few questions here. How how do I scope? Okay, so the way you scope, let's say you want to have, you know, a multi-tenant blog SAS or whatever. So obviously like Nuno will have his own slug. Let's say Nuno Maduro/blog my slug. But within there is also another app on this same SAS call it let's see soncastra.com blog my slug. Okay so you want to you want to kind of scope the slug uniqueness uh to a relation. So to do that you just do scope and you just say in this case let's call it let's call it tenant ID I guess. uh tenant ID. That's how you scope the uniqueness of the slug. Okay, so in this case, both will be allowed to have the same slug. Okay, now something important here. This literally just fights all of the issues I had on Clarival Cloud. Okay. So if someone comes here and tries to create an article, let's say uh article create and then you do something like um title equals to uh let's say how to install what the [ __ ] is happening with my code auto completion just getting nuts at the minute. How to install Laravel. Okay, if you do this obviously the created slug automatically. So if I go here article slug this will be um automatically pointing to how to install Laravel. Okay, this is obvious but something important here is that if you were to do the same thing just below because that slug already exists the new generated slug will have like a suffix. Okay, so it will be how to install Laravel one. Okay, automatically. So that's the answer for what happens if the title is the same. So that that's what this pull request is all about. That's what I'm working literally this afternoon and um you know still a work in progress but uh hopefully it'll be done by tomorrow. Uh great question from what happens if I want to customize the ID if I want to customize the slug. Um so what we are going to end up what you are going to end up doing is providing a closure here. Okay, like this. And by doing that you will be able to customize. I don't think a lot of people will be will be be doing that. Oh by the way if you want just ID and title you can do this. If you want just ID and title of the article you can do this. So this accepts an array. So if you go here, you set you see this array thing. This accepts an array and you can just say I want to have um I want to have like ID and title. By the way, this is not yet confirmed for Laval 13. You guys promising that you keep it quiet. This is not don't tell this anyone. You guys told me that. Uh this is just a work in progress of a pull request I will end up doing. Okay. So this is how you get like um basically ID plus title. So in this case would be something like this ID1 and then how to install Laravel and this will be ID2 how to install Laravel and they are unique just because of that. So this is what I'm working on. Uh there is other things here which are super important um like emoji support. You can have emojis. going to have um different characters like in chi like another dialect like in Chinese for example or um you know and I will automatically translate it and make it nice. So W Nuno, thank you. Thank you. Thank you, Uno. How often Laval devs work on stuff that does not get implemented? Um, you know, it doesn't happen often because before we actually implement things, we just run it like a vibe check. And the vibe check of this feature was very high because you know an advantage of being able to work with projects and now be opening with open source is that you just you just get a lot of real world ideas. That's what that's what wisdom is about. Like wisdom just being just wisdom in general is about having real world experiences and being able to bring those real world experiences to actually work you know like actually would work and I am you know there is a few things other things I have on my list and this is one of them and I'm 100% sure we we are going to end up using this because we need this stuff all the time like every single Laravel project I have worked on in the last 10 years hat slucks somehow somewhere and end up being in multiple models often as well. Okay, so um that's why I'm sure this will be needed. Okay, there's multiple things this thing will provide as well. Uh hopefully if I end up finishing tomorrow. Let me see the options here. Uh yeah, those are more niche though. Yeah, there is a few niche options. um you know because you might want to create a slug on create which is a default slug but then you might want to users allow the users to customize the slug but always keep it the same. So you know that is options for kind of tweaking all of that assuming this attribute setup is the slug for the route model binding too. So developed by Josh I'm still not yet I told you this is this is it but in theory at the minute you still need to do this uh get key I think that's key name. Yeah, at the minute you still need to do this. Okay, now I am not 100% sure convinced if doing this uh route key name or just let's call it route or whatever true. I'm not 100% that's a good idea yet because you know on my Laravel apps for example often what I want is that I go to the web.php PHP file and I want like the get to have the slug but the posts and and deletes I want to work with the ID. Do you know what I mean? So I'm not yet convinced if that is just a good idea because I feel like on my applications at least I want the get verb like the get situation to work with slugs but I want deletes posts patches to work with a regular EU ID. You know you guys know what I mean. type yes if you guys um understand what I'm saying. But typically I feel like I don't think it's overall a good idea to customize like on the model itself the HTTP way of accessing an article. I feel it's too much. Would the slug be exported when using scout? Yes. Oh, thank you Peter Thompson. Appreciate. How you doing? Hey, we have a few people on Twitter. That's awesome. Makes sense. Well, I appreciate you guys understanding what I'm saying. Oh, that's why you asked. Exactly. Like on Laravel cloud is actually a good example. So, we have UIDs all over the place and and like typically I want my users on cloud to be able to do this. Like I am on my Laravel team for example and now I am on the past PHP project. But if I want to [ __ ] update the past website title, I want to do it using a UID, not the slug itself, because the slug itself is also up for update. You know what I mean? So, um, that's why I feel like I probably don't want to touch on the HTTP concerns there. Another thing I'm used to do is having bloggy on the on three directing to the slug route. Exactly. So, oh, great question from Chestnut Breeze. How to backfle how to back fill slugs for existing rows. Dude, that's an ex that's an actually a very actually very good feature request. So hear me hear me out chat hear me out. Just nut breeze from Twitch is saying the following. How do I will backfill like all my existing rows? So if I want to use this feature on existing project, how do I backfill everything? That's actually a very good question and I probably can come up with a nice solution. So obviously we are we are adding this migration right here right we adding a migration and what is what is asking is that well we are going to have existing data so how do we backfield that existing data that's actually a very good question because the field won't be nullable that's why we streamshed we always learn man it's just crazy you guys will find this interesting but I think I have learned more with you guys in the past [ __ ] year than I've learned myself alone cuz I That's so much so much good insights. So, what are you saying is that I have my, you know, I have my list of books already. I have a [ __ ] library and and now I want to have a slug, but if the slug is not nullable, how the [ __ ] I'm going to add it? That's such a good question, honestly. And I literally forgot about that. Thank you for bringing that to my attention. Charlie French boy saying an artisan command. Well, well, definitely will be around an I don't even know if I want to touch on that point cuz I feel like it's almost like up to the user how to back field those H. Now, if I were to do it myself, I would definitely do something like this. I would make one migration that adds this thing nullable way like this basically and then I would run another migration that will remove the nullable and make it unique. But that's a very good problem to have. A very good problem. By the way, two hawks literally said what I said. I would make it nable. I would backfill it and I will make it nullable again. That's awesome, dude. We are on the same page. That's awesome. By the way, Shad, something really important. Hear me out. Hear me out. I have learned over time that is actually not a good idea to backfill stuff on migrations. Okay? In the past, I have done it multiple times. I'm sorry. In the past, I have done multiple times literally backfill stuff on migrations like creating stuff and everything. It's not a good idea, okay? Because then you want to like squeeze migrations to a single file and you're screwed. So, just don't do that. Used to do it. Yeah, Luis. So the problem about doing that if you do that um is that one day you want to squeeze the migrations and if you were to you know populating data like important data through migrations they won't be present on the squeezed um on the squeezed sql you know okay ECDA is saying the developer has to implement another migration or command yeah I feel like you know we can give the basic might add the sluggable thing but you know if you want to make if you want to add this to existing models you kind of have to just find your own way of doing it right so I think like potentially we're going to um ask you know document that basically but yeah so this is what I'll be working on there is many other things I'll be working on and I can share some with you if you guys want to see so I want to work on so this is my plan for the next couple days So the first one was working on lot of alpine and add that rule we talked about today. So on lot of alpine we just shipped um this new feature. What is it? Yeah basically we'll just import everything. So if you have anything on your code that is like partially imported but other stuff is imported it will just basically make it consistent. So this is like literally shipped already. Okay. Let's call it enables fully qualified rule. So this is done. Okay. And I'm h very happy about the result in the community reaction too. So done. Okay. Uh what I'm working on now is on the sluggable sluggable attribute. Okay. Again, keep it quiet chat. Honestly, you guys promised me you would keep it quiet. So I will trust you guys. Okay. If honestly if I see on Twitter like whatever is coming for Larl 13, I will be very disappointed. Okay. Peter Thompson is saying great point. GMAT toss uh migrations for schema. Ceders for content. Exactly. Whoa. Not cedars for content. PHP artisan commands. Okay. If you want to push content, just do an artisan command. You just told my mother. Sorry. Oh my god. What different from slug string slug? Uh this is actually using different things from the string slug. It's um you know preserves dots and everything. SL something you know slugs string slug does not do is that if you have something like this as a name will actually convert to this for example so you know there's a few things like literally not doing this that's one of the things but these are other things we put it on top of that okay also converts like if you have again um characters which are not supported in regular URLs we are going to just lally translate them so if you are if you have on um you know something like on Chinese literally how to how to install Laravel. I will translate it so I then I can sluggify it which is kind of cool. So I have this uh pine thing which is shipped sluggable trait which is I'm work attribute which is I'm working on. Uh what else I have on my list? Uh a bunch of past five stuff. So past five is a work in progress at the minute. Uh here we have a bunch of work already just being you know brainstormed. Um, yeah, a German characters is one very good example of things that are going to work with this too. Can you show us how this will look like at rot level? Oh, well, it's kind of easy, right? So, in you know, if you have nunodu.com, you will have this as rot level. How to install Laravel instead of having you know, like the ID. That's the That's the whole goal of this actually, just having slugs for this. If the if the slug is taken, we'll automatically if you have a a slug which is already like this, we'll automatically suffix the slug with minus one. By the way, um something which I'm not sure if it's on the scope of this feature is that I also want to add the possibility of having reserved slugs, which I'm not sure again if it will be part of this feature and it might come later. But um something that often happens on Laravel cloud is that we have reserved slugs. Okay? So if you go to cloud.laval.com label.com and if you try to do an app with the name help for example, you won't you won't you won't get help. You'll get help- one for example because the help is like reserved. Another example is like contact. Okay. Um so uh I'm currently working well I will be potentially working on something that uh forbiddens like some reserved slugs which is also something which is problematic for these kind of cases. You also want to you know kind of some bad words you don't want to you don't want to allow them as a slugs you know is saying how to install lavl in types how to install l-1 is taken for example but it creates again how to install lavel uh so I guess let me try to understand what are you saying just by the way this logic is heavily tested on serious projects so I'm not actually concerned about the logic but at the minute like if you do how how to install Laval you get this you do again you get the one you do again you get the two that's the way it works just as simple as this you know exactly so um so something we do at Laval as well is that we have basically a way of not adding so of automatically or automatically let's call it that way routes to the list of reserved slugs. So basically if someone tomorrow would come to cloud cloud it will create a new route call it nuno. Nuno will be a reserved slug from that point. Developed by Joshy is saying the following. I added oxmtpl to all the starter kits as drop in replacement for prettier in line with the move uh to ox lint. Oh thank you. I actually want to check that out. DL does he check all models and then looks at the highest number and that's not the way it works. So basically the way it works is that um we compute a slug which is this one. How to install Laravel? We check if it's available before using it. That's the way it works. So I will just actually perform a database query to check oh is this slug already in use? The answer is no. Then I use it. That was Portuguese though. Yep. Yep. Yeah. Spicy Laravel Sluggable is actually um a very similar concept. This is not the first time and probably will not be the last time that we use that we have an idea that is very similar to an existing idea from Spasi. Uh now you know an existing idea from spasi with a lot of with millions of downloads which is the case of this sluggable just proves the idea that this should belong to the core. For me like the question of something belong to the core or not is are people using it all the time and slugs is just something that people use all the time. You know like if you are not using slugs today you probably should be using because users want friendly URLs anyway. You know any any serious app have serious like very good URLs. You go to Twitter for example go to X you get like X not Num Maduro for example you go to you know New York Times or whatever you get a nice slug slugified URL as well. It's just everyone uses this. So it's just expected and you know a lot of spicy packages they they they just prove basically if some something should belong on the core. So this won't be the this won't be the first not or the last time we incorporate some of the spy ideas on Laval itself. But of course this will be a pull request by the way. This is not merged yet and it won't be merged before tailor approval. So this is just an idea in a work in progress and potentially Taylor will just double check it. Spicy sluggable all the time. Yeah, you know, and um that's a good package. They also have other packages like spasi. If you search on packages is just insane. Like if you go to uh packages.org, you search for spasi, you have look at this. It is insane chat. Honestly, it is just insane the amount of downloads spasi has. Laravel permission with 87 million downloads. Okay. Temporary directed with again probably it's included on this one. But like query builder of course uh lot of package tools media library. Oh, this is something I want to tackle too by the way. So potentially something I will be tackling and again this is not a promise. I don't know yet. But something again on Forge on Vapor, but all my projects, uh, something I've noticed is that sometimes I want to have this feature which is, you know, upload an avatar. Okay. And often I don't want to do crazy stuff like I don't need the a front end upload component. I don't need anything really. The only thing I want to do is like literally access the image on the back end and just type optimize. Okay? Because often you want to you want to receive like four megabytes uploads or allow four megabytes uploads, but before you storing it, you kind of want to corp the image and make it like 200 200 kilobytes. Okay. And honestly, like moving this from 4 megabytes to 200 kilobytes is actually you just have to just use some stuff behind the scenes. Now historically um there is a few community packages for this but I don't know it just come with a bunch of stuff and potentially like this is something I will be working on as well just having a very quicky whizzy way of optimizing the given file upload optimizing it corp and that's it. Luis Cruz is saying why is the slug from ID and name? This is that's when you want to have a slug that is a computation of multiple columns. Ideally, we'll just do title. You know, that's the goal. Yeah. Yeah. That's why I think like what do you guys think about the optimize situation? Let me just explain you a little bit better. Okay. So you have a controller. Let's go here to I don't know let's just assume here that is a controller. Okay a controller you just basically access the request layer you know and you have this image coming from avatar or whatever and you want to store the image and potentially like what you are going to end up doing is just call image store or whatever and then you just do something. Okay. Now the problem with this is that the user may actually upload like a [ __ ] eight megabytes image. Okay. And what people end up doing is that, oh, we don't accept that that big of an image. So, you know, the max is 2 megabytes. Now, this as a user experience, this is just, you know, it sucks. It's just, it's just bad. And what I want to do is like a very lightweight, easy API to kind of I'll still accept 8 megabytes, but being able to just optimize this in the very easy way. You just call optimize and automatically this image will be converted to an image that is like 200 kilobytes. Okay. And then you can store it and it will store it as 200 kilobytes image. And I want to kind of add maybe a few methods here like being able to corp the image you know kind of make it small or whatever. Uh because if it's an avatar you kind of want to make it small. So let me know from from one to 10 chat you guys think this is a 10. This is like a one. What do you guys think? All right. Between this one and Sluggable, which one you prefer the most? Ilsa Pro is saying, "Use Cloudflare for Optimize." So that's one of the ideas Taylor have. Taylor literally told me you should consider using Cloudflare or potentially use Cloudflare for that. L Cruz is saying, "Can I steal this idea?" No, no, no, no. Oh, by the way, all of this is top secret. You guys promised me. Okay, you guys promised me that this is secret information. Okay, this is stuff I'm cooking behind the scenes and uh you know I will be doing pull requests just like a normal person and let's see what Taylor thinks in the future. Top secret information chat can also optimize videos. Oh, that's interesting. Didn't know about that. What's the difference between using this in external library like Imagic? I think like imagic will give you more power literally. Okay. Uh I if you use image directly will give you more power but I like it's I don't know if what you guys feel but I imagic is becoming problematic like every single time there is a new PHP version is not just not there yet and it doesn't do the same level of optimization as Cloudflare for example. No no no no no. John Sugar is saying even optimizing images will require extensions and whatever. It's not like that. You can use um other Yeah, I think I'm going to just have drivers basically optimize drivers and you just choose your favorite one. Okay, the ones we want to use Cloudflare, we'll use Cloudflare. The ones we are going to use whatever and uh you know that's the goal. Okay, so that's another thing I will be working on. And I have another ideas like I have so many ideas. Literally a I just delivered yesterday a list of 15 ideas and um Taylor approved all of them. So I'm super happy. Well approved told me like okay you're free to create a pull request but let's see how it goes. But that's the goal. Yeah but there is other stuff. Let me try to think about another one I'm thinking of. Oh there is this one which is like I don't know it feels like a bug fix to me almost. Does any of you use this method? Call it after on form requests. So if you have like create let's say create article request. Does any of you uses the after method that comes with Laravel on form requests? Maybe no. If no like if everyone does not use this like maybe it's not even worth to explain but we use this stuff all the time on cloud for example. JavaScript optimize before upload. Oh, you guys use this too. Well, well, maybe I will just explain. So, something really annoying with the after attribute with the after method on Yeah, what it does. Yeah, I can explain. So, you know, let's assume you have a form request. Let's actually just create one real quick. Let me just remove all of this [ __ ] Let's type here PHP artisan make uh form request. Uh, create article request. Okay. Oh my god, I don't even know how this commands are anymore. AI does all for me. Make form request. Oh, make request. I think that's the name. All right. So, here we go. Um, I'm going to go to HTTP request create articles article. Okay. So, what you know, you just come here. Obviously, you just do all your stuff and blah blah blah blah blah strings and everything. But what ends up happening often is that I want to kind of perform some extra validation after this basic rules. Okay. Often that could be things like you know is the user allowed to do even to even create the article with his name for example. Is the user allowed to create an article this big for example because they have like a different plan or whatever. Okay. And often like what uh I end up using on projects at Laval is that I have this after thing and then I have to provide like an array and this array will have I think like it's the validator I think. Yep. Yep. Yep. And with the validator I can do some stuff like if of if like any of the of the previous step have failed just stop here. And I end up using like a bunch of stuff like this. If any have failed just return like right now. if uh the you of if the given user is like subscribed or whatever then do whatever um if not maybe just throw an error. So there's a bunch of logic that I end up always using the after method on form requests and the API for it like being typically I just have literally a function. I just have like literally a bunch of if conditions and um and to do this I always end up doing this return function blah blah blah blah. Now I found this API kind of funky. What I would love to do is being able to return void here. Just remove this function, remove this return, and have this stuff at root level. Okay, so I know it feels small, but like if you have like 300 after methods, it can just be something annoying. So, what do you guys think? I know it's small, but it's something I wanted to fix. I feel like, you know, the after method is cool, but you just end up having this array with a single closure inside a lot of the time. So, so again, this is an existing API being able to have this after with an array with a function, but I just want to have I just want to have everything at root level. That's it. Yeah. The thing is that I don't need an array with multiple validators. It's just one one most of the time. Yeah, it's a bug. It's almost like a bug fix. Honestly, feels like it feels like a bug fix to me. That's the way I pitch it too. Honestly, I I pitch it in the way that most people just have a single closure here. You didn't even know about this method. So, how were you doing like after stuff? You were doing on a controller itself. You were doing like validate and then perform this logic. Yeah. Well, you can do it here. It's feels better because you are doing on a request itself on a form request itself. Yeah, that's a good point. So, someone is saying it also accepts invocable classes which is a way of cleaning it up. Yeah, I found that as well while I was brainstorming this. Um but but yeah, this API could have been improved. So, I have this. What other stuff I have? I have so many stuff I'm thinking about. Let me just go back. So, yeah, I have this. Let's just do the list again. I have um the pint stuff. I have the sluggable thing. I have the image optimize situation. Uh what else do we have on my pipe? Uh so the form request after that I want to work on. Um I have more. I have 15 items which I probably should just I'm going to double check them real quick. One moment, chat. Okay. So, yeah, agent output. That's another one. So, the agent output will probably either maybe here. So, agent output. That's something I want to fix. Use tune for agent outputs. again having pinted past and um uh pine past and artisan outputting turn for agents. Okay. Oh my god, I have such a big one. Okay, you guys ready? All right, type promise uh if you want to keep this on secret. Okay, type promise, please, if you guys are willing to hear what I have to say, but keep keep it in secret. Okay. Promise, promise, promise. Okay, cool. Okay, so there is another thing I want to work on and this is like honestly super brainstormish. Okay, this is not something that I'm not sure if you'll end up doing a pull request. Uh, but it is something that I want to think about. Okay, so what is the problem with migrations at scale? So you create the migration, right? You make a migration locally. Let's just type here PHP artisan make migration. You create the migration locally and let's actually just actually do the full thing. Okay, let's do a migration which just renames a column. Okay, let's make a migration. Rename um article to name or whatever. Okay, so we create a migration. And we have it here and we have this uh table articles which is right here. We remove the done method and have table articles. Okay. And then what you end up doing on this migration is…

Transcript truncated. Watch the full video for the complete content.

Get daily recaps from
nunomaduro

AI-powered summaries delivered to your inbox. Save hours every week while staying fully informed.