We can't find the internet
Attempting to reconnect
Something went wrong!
Attempting to reconnect
Analysis Summary
Ask yourself: “Did I notice what this video wanted from me, and did I decide freely to say yes?”
Performed authenticity
The deliberate construction of "realness" — confessional tone, casual filming, strategic vulnerability — designed to lower your guard. When someone appears unpolished and honest, you evaluate their claims less critically. The spontaneity is rehearsed.
Goffman's dramaturgy (1959); Audrezet et al. (2020) on performed authenticity
Worth Noting
Positive elements
- This video provides a very thorough, 47-minute deep dive into the technical architecture of Claude Code, including advanced features like MCP and custom hooks that are often skipped in shorter tutorials.
Be Aware
Cautionary elements
- The use of the creator's own commercial products as the primary 'success stories' creates a closed loop where the tutorial serves as a long-form sales funnel for his academy.
Influence Dimensions
How are these scored?About this analysis
Knowing about these techniques makes them visible, not powerless. The ones that work best on you are the ones that match beliefs you already hold.
This analysis is a tool for your own thinking — what you do with it is up to you.
Related content covering similar topics.
Claude Just Rolled Out 2 Big New Features
Matt Wolfe
This New Claude Code Feature is a Game Changer
Nate Herk | AI Automation
STOP Using 10 Agents #ai #tech
EO
AI Agents That Actually Do Work (2 Real Examples)
Travis Media
Build Apps Faster with AI | Vibe Coding with Goose
goose OSS
Transcript
Hey everyone, I'm Sha. In this video, I'm going to give a short and practical introduction to Claude Code. Although you'll find countless tutorials for this on YouTube, my goal here is to cover the most important concepts and features you need to start building today. So, here's a quick overview of what I'm going to talk about in this video. I'll start with a short introduction explaining what Claude Code is and how I use it. Then, I'll cover some of the basics and do a hands-on demo. Then I'll go into how you can customize Claude code with skills MCP and sub aents and show a demo of that. Finally, I'll talk about more advanced features like building custom hooks and plugins and show a demo of that as well. Starting with the basic question, what is Claude Code? And all this is is a AI agent that can build software. Claude Code brings together two key ingredients. The first is Claude which is the underlying AI model behind the application and the second are all the various tools and features built around the model to make it a helpful coding agent. To be bit more specific, Claude Code has access to about a dozen different tools. This includes tools for reading and writing files, a tool for running shell commands, tools for interacting with the internet. It can also spin up sub agents which we'll talk about and create these different task lists. It also has access to tools like accessing skills, entering and exiting plan mode, asking users questions, and more. Although this tool set seems to change every month or so, if you're unsure about Claude's capabilities, you can just ask Claude. Just to give you a flavor of what Claude Code can do, here are some of the things I've been using it for over the past 8 months or so. First and foremost, I use Claude Code to build SAS products. So, I recently used it to build a tool called Ghost, which was a LinkedIn Ghostriter. And more recently, I'm using it to build a new learning platform called AI Builder Academy. These aren't just simple prototypes. They're full web applications with databases, Stripe integration, multiple pages, custom branding, and much more. Another thing I use Claude Code for a lot is to build custom automations and tools. For example, I used it recently to create a tool that will automatically update all the call to actions in my YouTube videos programmatically, which has saved me hours of manually copy pasting updates to YouTube descriptions. Also, I used it to create this markdown to PDF converter, which I used to create free resources such as a 30 AI projects guide and more recently a 100 AI terms glossery. Finally, I use Claude Code a lot for ad hoc analytics. Recently, I had this folder full of CSV files of students from my various AI cohorts. And I wanted to do some ad hoc analytics on this and it was a lot to just upload to chat. But since Cloud Code is made to handle multiple files and large code bases, it was able to handle this analytics task pretty easily. So I wanted to know the unique number of students across all my cohorts and the unique number of companies that these students worked at. This analytics task gives a flavor of how claude code can be useful for not just coding tasks but also non-coding tasks which I'll talk about a little later. Now that we've talked about what Claude code is and what we can use it for. Now let's talk about how we can actually use it. To get started with cloud code we need to complete two key steps. The first is we'll need a Claude subscription. Although you can use Claude for free in the web in their chat interface. If you want to use Claude Code, you're going to need at least a Claude Pro subscription. But once you've done that, you can install Cloud Code. So you can do this via the command line. So if you're on Mac or Linux, you can open the terminal and just run this single command. If you're on Windows, you can open up your PowerShell and just run this single command. This brings up the native interface for claude code which is the terminal. A lot of different people are using claude code these days. This could be salespeople, data analysts, designers, product managers, and a lot of people that don't come from a coding background. So the terminal may not be a familiar interface for interacting with a computer. But using Claude in the terminal is actually very straightforward. Once you have it installed, all you have to do is just type claude into the terminal and that's going to pop up the user interface. From there, you're in Claude Code and then you can just talk to it in English. You don't need to know any terminal commands or how to navigate a computer using it. Also, there's some benefits to knowing how to use Claude Code in the terminal because the terminal is a very old interface for interacting with computers. This makes it a pretty universal tool no matter where you are developing your software or your product. So it doesn't matter if you're using cursor, VS Code, anti-gravity, Jupyter notebooks, or even using Vim. All these different idees have a terminal built into them. And in the case of Vim, that's actually living in the terminal itself. This makes the terminal a very powerful interface because this is compatible for people who are super technical and love to code in the terminal all the way to people who are less technical and using more modern tools like cursor or even Jupyter notebooks. But once you've got Claude code opened up, there are three basic features worth calling out. The first are different modes that you can put Claude code into. By default, Claude is going to be in this chat mode. So in this mode, you can send requests to Claude and then it will respond accordingly. You can ask it to write code or perform tasks and anytime it tries to do something, it's going to require some kind of approval. However, if you get tired of having to manually accept all the edits that Claude is trying to make, you can also put it into accept edits mode, which will allow Claude to freely read and write files without your explicit approval. While this allows Claude to build things much faster, it's usually not the best place to start. Instead, it's usually a good idea to start in the so-called plan mode. This mode has one key difference from the other two, which is that Claude will not write any code when in plan mode. Instead, it's going to come up with a plan to do whatever task you asked it to do. And you can easily switch between all these three different modes using shift tab. The second key feature is that you're able to tag files and folders when sending requests to Claude. This is helpful if you have a lot of files and folders in your project by tagging specific locations. You can help Claude get the relevant information faster without wasting time searching around the codebase. Finally, you can undo stuff. So, if you type a long request and you change your mind, you can hit the escape key and it'll clear the entire message. Or if Claude does something that you don't like, you can hit the escape key twice and you can rewind and restore the conversation and code. This makes it really easy to undo any changes that you don't like. So, we talked a lot about the basic usage. Now, let's see this stuff in action. Here, I've got my terminal opened up. So, if you're on Mac, you can just type command space and do terminal, and then that will open up your terminal for you. And if you're on Windows, you can just open your PowerShell and you'll see a similar thing. From here, if we want to open Claude, we just type Claude and then it's going to open up the Claude code interface. Just looking at those basic features we talked about earlier. So here I'm hitting shift tab to cycle between the various modes. We have the default mode, we've got accept edits mode, we've got plan mode. But for right now, I'll just start in the default mode. Earlier I mentioned all the different tools that Claude has access to, but if we don't remember them or next month the tool set changes, we can just ask what tools do you have available? One of the key benefits of Claude Code is that anytime you're unsure about something or you feel stuck or confused, you can just ask Claude how to do something and it will be able to explain how to use the tool. Here we have the different tools. We've got file operations. We didn't see this earlier. This is actually coming from a MCP server which we'll talk about a little later. We saw the web tools, we saw the agent tools, we saw the planning and task tools and it's also showing the skills that Claude has available which we'll talk about in a second. From here we can keep asking questions like maybe what is GP? And then it'll give us a little explanation of what this tool does and then you can just keep doing this going down the rabbit hole. Maybe you'll ask what is Regg X, what is Glob to improve your understanding of what all these different tools are. But what I'm going to do is I'm going to hit escape twice and I'm going to rewind the conversation back to the beginning. So you have different options here. You can restore the conversation. You can also summarize from here. So basically compress the conversation, but I'm going to go ahead and restore. Then I'm going to say something like tell me about the files in this folder. Now we can see Claude is doing some work. So it's searching and reading the four files in the current folder. We can also do control O to get more details. So we're seeing that it used the bash command. It used the search tool. It used a read tool. Read tool. Claude is using all those different tools it has at its disposal to fulfill this request. Then I'm going to hit control O to get out of the detailed mode. And now it's giving me a summary of the project. So Claude code crash course companion app. This is a brand new project that hasn't been built yet. Only the scaffolding in PRD exist. And then it's giving me a summary of what's in this folder. So I've got this prd.md file which is the product requirements document. I've got this pi project.toml and then some other things that are relevant to the project. The most important thing to keep in mind when using AI apps like Claude Code is this idea of context management, which is essentially giving Claude the right context at the right time. What I mean by this is that Claude operates on a so-called context window. Within the context window is all the information, all the text that we want Claude to process in order to do what we want. So in the context window we'll have things like the system message which give highle instructions to claude to behave like claude code. We'll also have all the various tools that it has access to. Any request that we send to claude code will be in the context window. If cla is going to think about our request that's going to be in the context window. If cla calls a tool that's going to be the context window. The results of that tool call will be in here and the final response from claude will be in the context window. Naturally, as you have very long conversations and you do more and more with Claude, the context window is going to get more and more full and the conversation might be about a lot of different things. Maybe you're going down the rabbit hole trying to understand how Grep works and then you jump over to iterating and refining the PRD. Then you go down another rabbit hole researching a specific Python library and asking a lot of questions about that. And then you want to start building something. While Claude will be able to do a pretty good job despite jumping around to a lot of different topics and calling a lot of tools and thinking a lot over the course of the conversation as the context grows more and more. You might notice that Claude starts to get confused or a degradation in its performance. This is just because there is a known limitation of large language models in which the more context is in their context window, the worse their performance tends to get. So, a few tips for managing the context window well are as follows. The first is instead of just asking Claude to start coding things up for you is to start in plan mode. This is just because one, it's easier to iterate on plans than it is to have Claude implement something and then review the code or run the code and look at the output and giving you feedback. And two, a plan doesn't add as much text into the context window. This just allows you to ensure that you and Claude are aligned on what you're trying to build before actually building it and blowing up the context window. The second is to tag specific files so Claude doesn't have to waste tokens or time looking for it using its tools. Even though it can use its tools to find the file, if you have a big code base and there's only one specific file you want Claude to consider, just tag it so Claude doesn't fill up the context window with thinking tool calls and tool results trying to find that specific file. Finally, if you do find yourself going off on these tangents, maybe you're doing some brainstorming and research on specific tools or Claude makes a mistake or you're having arguments with Claude, going back and forth a lot. Once those things are resolved, you can just double tap escape and rewind to the point in the conversation where that tangent happened. And this is just an easy way to manage the context window. Another very handy way of managing the context window is the so-called claude.md file. This is just a text file which you can use to give Claude persistent memory across sessions. Here we have that same picture of the context window as before, but now we've added this claude.md file. So this file will automatically be added to the context window of each new session. There actually two different flavors of cloud.md files. The first are project level files. This will be just a claw.md file living in your project folder or in thecloud folder of your project folder. But you can also have userlevel claw.md files. This will live in your home directory or wherever you have claude installed on your system. And this will be applied to all new projects and claude code sessions. While the project level cla.md file will only apply to the current project that you're working on. If you have both of these types of claw.md files, the context window will actually look like this where you'll have the global or user level claw.md file and then you'll have the project level claw.md file. And as a tip, when you create a new project, you can run this command slashinit to automatically create your claw.md file. Also, if you make progress on the project, you can run /init and it'll automatically update the project level claw.md file. This slashinit is actually an example of a so-called slash command. These are shortcuts for various cloud code features. So again, let's look at our context window. Other than in it, there's a /context command which allows you to view the contents of the context window. With a context window like this, the context usage will look like this. Here we'll have a set of tokens dedicated to the system prompt and tools. So that's about 10% of the context window here. If you have any skills, which we'll talk about shortly, that'll take up some context as well. And then if you've been talking to Claude, those will also be in the context window. For a short conversation like this, you'll still have 70% of the context free. And you'll also notice that there is a autoco compact buffer. As Claude starts to approach 100%. So when it hits about 84% of the context window, Claude Code will automatically summarize and compress the conversation to basically do this context management automatically. Another handy slash command for context management is /clear which will clear the conversation history. So if this is our context window and we run /cle, it will just delete all the messages but maintain the system message, the tools and the claw.md file. Another thing we could do is maybe we don't want to clear the conversation because we want to keep that context for future requests. Instead, we could just run compact, which will clear the combo history, but keep a summary. So, we'll have a little summary here, and then we can just continue the conversation. This is exactly what happens when we get to that 85% mark of the context window automatically. But if we just want to do it before that point, we can do it manually. Final tip, there are actually dozens of different slash commands that come out of the box with Claude. So if you want to see all of them, you can just run slashhelp. Here we are back at our same Claude code session. Let's try out some of these slash commands that we talked about earlier. So we can run slashcle and we'll clear the context window like that. And we can just make sure that worked by typing /context. Here we see the full context window. Got the system prompt and system tools. We also have these MCP tools and skills which we'll talk about in a second and then we basically have no messages. We can run this slashinit and this will have claude analyze the codebase but instead of it just generating a summary like we did earlier, it's going to create that claude.md file. And now since we're in the default mode, Claude is going to explicitly ask us if we want it to create this claw.md file. So here we have a couple options. We can just allow this specific edit or we can do the shift tab and put it into accept edits mode so that Claude will be able to automatically create changes on its own. I'll do that. We'll see that we automatically switch to acceptedit mode. And now Claude is writing this MD file. I'll go ahead and open this up. The cla.md file is just a text file. It starts with some basic scaffolding and then it gives a project overview, the tech stack, various commands that Claude can use. It has the architecture of the project and then some key design decisions. This is again this persistent project level memory that Claude can use across different sessions because maybe we have multiple instances of Claude running and working on the same project or maybe we're working on this project over multiple days and multiple sessions and Claude is an amnesiac. So unless we save things in claw.md, it's not going to remember that we talked about them. I'll switch back to the default mode and then I'll clear the conversation. And as a final thing, I'll just run slashhelp so we can view all the different commands. Help will tell you some like general shortcuts for claude, but we can tab over to commands and we'll see all the different slash commands that are available in claude code. You don't need to know all of these things. And then you can also have custom commands which we'll talk about right now. So far, I've mentioned this concept of skills a couple of times in this tutorial. And all this is is a folder with instructions in it that Claude can access as needed. The way this looks is we've got Claude code here and we'll give it access to a folder with whatever we want to call our skill whether that's front-end designer SAS idea validator competitor analysis researcher and on and on and on. And in that folder we'll have a skill.md file. And the skill.md file will have two key parts to it. It'll have a name of the skill. This one is called API conventions. And then it'll have a description. The description is very helpful because this is what Claude is going to use to decide whether this skill is relevant to the task at hand. And if the skill is relevant to a user's request, it will then read the rest of the skill. The top part here with the name and description is called the front matter. This is what we were seeing loaded into the context window earlier. Just going here and running context, we see that we had 311 tokens dedicated to skills. These are the various front matters for different skills that I have installed in my claude code system. Then if a particular skill is relevant to a particular request, it's only then that Claude will read the body. This is another example of context management because if we were to load the entire body of all the different skill files into our context window, we might have a lot of irrelevant information and just waste a lot of Claude's attention on things that don't matter. But by splitting it up like this, skills give Claude a more efficient way of getting instructions. However, skills aren't just limited to this single file. We can also have as many files and folders in this skill folder as we like. We could have references which are additional documentation. We could have assets which are resources and templates. We can have scripts which is executable code that Claude can run via its bash tool and on and on and on. So we can put whatever we want in this skill folder. And similar to the claude.md file, skills also have two different scopes. You can have project level skills which will live in this.claude/skills folder or you can have userlevel skills. So these are skills that will exist across all your new cla projects and this will live in your home directory in thecloud/skills folder. The only difference between project level and user level skills is one is going to exist in your project folder. The other one's going to exist in your home directory. Project level skills will only be available in the project you're working on while user level skills will be available across all your projects. Skills can be used with Claude in three key different ways. Most often they will be invoked automatically by Claude when it deems it relevant. Alternatively, if you want Claude to use a specific skill, you can just tell Claude to use that skill in your request. Or if you want something more concise, you can just use a slash command. Before, custom slash commands and skills were two different things, but now they've been merged together. So, anytime you create a skill, a custom slash command will be created for that. Peeking over again here and running the help command. We can go over to custom commands. These are various skills that I have available in my cloud code environment. Another way we can customize and augment cloud code are through so-called MCP servers. MCP is a universal way to give cloud access to external tools and context. The punch line with MCP is that it allows us to connect Claude to basically any application whether that's GitHub, Gmail, Slack, Google Drive, Notion. if we want to connect it to a external SQL database like Superbase or we want to connect it to like an S3 bucket or some other external data source or if we want to connect it with thirdparty tools like Microsoft has this playwright MCP server which allows Claude to take screenshots of web pages and interact with them. Just like skills and claw.md there are different scopes for MCP servers. Again we have the project level scope which will live in this MCP.json JSON file. We'll have userlevel MCP servers available across all projects that will live in this.cloud.json file. Finally, you can have local MCP servers. These will be project level, but they won't be shared if you commit your code to GitHub or the like. Project level MCP servers are great for MCP servers you want for a specific project. User level MCP servers are great for tools that you want available across all your projects. And then local MCP servers are great for MCP servers you want to use on specific projects, but they're not necessarily helpful to other people that you might share the code with. The way you install MCP servers is actually through the command line. So this is not within Claude Code, but using the terminal or PowerShell directly. And the syntax will be something like this where you'll type claude which is what we typed to open claude in the first place but instead of just typing claude you type mcp add. Then you can pick the transport. So this is basically saying whether the mcp server lives on your computer or if it lives in the cloud somewhere. And then you can type in the name and the location of the MCP server. Then you can set the scope of the MCP server by doing d- scope and you can either pick local project or user scoped. People are often confused about the differences between skills and MCP servers. So I actually talked all about that in a previous video. So I won't go into the details here, but a key point is that both skills and MCP give you ways to augment Claude with tools and context. But a key difference is that MCP comes with a bit more overhead because it's meant to support things like authentication and to work between entire applications, while skills are a bit more lightweight and are an easier way to customize Claude code. So I'd recommend to use skills when you're trying to build the customizations yourself and to use MCP when you're trying to connect Claude to a thirdparty tool. And the last way to customize Claude code that I'll talk about before the demo is via so-called sub aents. This allows Claude to outsource work to fresh specialized agents. Out of the box, Claude Code comes with a few different sub aents. The first is this explore agent which will explore and research code bases. There's a planning sub agent that will also research a codebase but specifically tasked with coming up with plans. Finally, there's a general purpose agent which is basically a copy of the main agent you are interacting with via Claude code. But instead of you interacting with the sub agent, Claude will create and interact with this sub agent to complete a particular request. The main value of sub aents ultimately boils down to context management because whenever a sub agent is spun up, it will have its own context window that is independent of the main agent which allows the main agent to do more complex tasks without filling up its own context window. For example, if you want to research a bunch of Python libraries before making a decision on what you want to use for a specific project, you can have Claude spin up three different sub agents. Each sub agent can go off and do research, and then the main agent can synthesize all the results of that research, and then you can go back and forth with that main agent to make a final decision. However, you're not limited to these built-in sub aents. You can also create custom ones. And the way you do this is by creating a markdown file which is very similar to what we saw with skills. So it'll have again this front matter part which will have a bunch of metadata. Here you'll have the name of the agent, its description which Claude can use when deciding to use it or not use it. You can list all the tools that that agent has access to. You can specify what model that agent uses. But you can also specify other things. So you can give specific skills to sub agents. You can give specific MCP servers to sub aents and actually much more. So if you want a full list, you can check out the documentation which is reference number six and there you can go to the supported front matter fields section to see all the different options. The second part is the instructions which will basically be specialized instructions for this particular sub aent. Again there are different scopes for sub aents. So you can have project specific sub aents that will live in the do.claude/ aents folder or you can have userlevel sub aents that are available across all your projects and that will live in your home directory in thecloud/ aagents folder. More recently claude code came out with a so-called agent teams feature that allows you to create teams of sub aents that interact with one another. And so if you're curious about that, I talked about the key differences between sub aents and agent teams in my previous video. So we've talked about a lot of conceptual things. Let's make this a bit more concrete with a demonstration. Here I've got cursor opened up. If you're not familiar with cursor, it's just an app where you can write code. What's helpful about cursor is that it'll allow you to look at all the different files in a particular folder. Here's that prd file that we've seen in this project. Here is the claude.md file that Claude just created for us. And then down here we have a terminal. So here we can just type claude and this will open up claude code. Also if we don't like how this looks I can go here and I can change the panel to go to the right. So the first thing I want to do is to add a custom skill. The way we do that is we see we have this secret.claude folder here. I'll add a skills folder and then in that skills folder I can create a new skill. I'll actually go over here to GitHub where Anthropic has this skills GitHub repository and in it are a bunch of different skills. We can see them here. So there's this front-end design skill here which has the skill.md file. So I'm basically going to copy this skill over to my project. What I'll do is create a front end design folder. And then in this folder, I'm going to create a skill.md file. Then I will just copy all this and paste that over here. So here's that skill created by Anthropic. It's a front-end design skill. Create distinctive production grade front-end interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications. Examples include websites, landing pages, dashboards, React components, layouts, styling, on and on and on. Then it has a bunch of instructions for doing good front-end designs. And just like that, the skill is now installed. All we had to do was add this file here. We can exit Claude. I'll clear this out and I'll go back into Claude. Now, when we go to slashkills, we now see this front-end design skill. This is the skill we just created. I also have these two user level skills that are saved in my home directory. Additionally, we could have asked Claude to create this skill for us. For example, I could have just copied this URL. And then let me just delete this. And then I'll say please add this skill to my project. And I'll just say not user account. And because Claude has web search tools, it can read and write files. It has everything it needs to actually create this skill. So, I'll just allow it to fetch this content. Now, it wants to create this directory. It's creating it in the right place in thecloud skills folder, and it's creating this front-end design folder. So, I'm just going to accept edits from now on. And we can see it's created this file here, and we'll accept that. And now, it's done. We can see the same exact file is now here in the skills folder. Again, if you are trying to customize Claude and you're not sure how to do it, you can always just ask Claude how to do it or to just ask Claude to do it on your behalf. The next thing I want to do is to add a custom MCP server. So for this, we're going to have to exit out of Claude and then I'm going to add this Playright MCP server. This is a MCP server made by Microsoft. Playright is this library that allows you to do browser automations. So, this Playright MCP server allows an LLM to interact with web pages and to take screenshots and things like that. This is really helpful if you're building some kind of front end and you want your AI agent to be able to actually look at the front end and to see if there are any design mistakes or opportunities for improvement. There are like two versions of this. There's a skills version, there's a MCP version. Here, I'm going to use the MCP version. And then there's a command here for installing this with cloud code. You can also see there instructions for a bunch of other applications. But here I'll just paste this command. And then because I just want this to be project scoped, I'll do d-scope and I'll type project. And now it's added the MCP server. So we'll see that this MCP.json file was created. And this just has the configurations of this MCP server. So, you don't have to manually create this, but you could manually create it if you want to. Now, I'll just type Claude again. New MCP servers found. Claude is just making sure that we want to use this MCP server. So, I'll just say use this and all future MCP servers in this project. And if we type /mcp, oh, that's not right. /mcp, we'll see that we have this local MCP server. You can also see I have these other MCP servers that are imported automatically from my claude.ai account. So if you use Claude in the browser and you've connected some MCP servers there, those will automatically be added to Claude code, but you can disable them here if you want to. So I have them disabled. I can enable them easily, but I don't want to. And I'll just keep this Playright MCP server. The last thing I want to do is to create a sub agent. So I'll clear out this. Although we could manually go here and add a agents folder and create a MD file for our sub agent here. I'm just going to do the /command agents. And this will list out all the agents I have available or I can create a new one. So I'm just going to go and create a new one. I'll do a project level agent. So this will be saved in this.claude secret folder. I can do it manually or I can generate with claude. So I'm going to generate it with claude. So I'm just going to say use the front end and design skill and play write MCP server to create and validate beautiful front ends. Now I'm actually using the skill and the MCP server that we've just added to cloud code to create this agent. Now it's asking us to say what tools that we want this agent to have access to. So we can say all tools, read only tools, edit tools, execution tools, and so on. We can also look at all the tools individually and approve them like this. But I'll just go ahead and allow it to use all tools and hit continue. We can also specify what model we want to use. So sonnet is like the midsize model. Opus is the big one. Haiku is the small one. Or it can inherent from parent. So basically whatever model you're using for the main agent will be used for the sub agent. So I'll just do sonnet. And we can pick a color which is fun. Let's do purple. You can also give agents memory. This is basically a claw.md file but instead of being for the main agent, it's for this specific sub agent. We can create this project level memory. We can also have no persistent memory or we can have user scoped or local scoped. For this case, I'll just do no persistent memory. There's no need for that. And now it's creating this new agent. Here is the front matter. And then here is the instructions. And then we could edit this if we want to. So I could hit E and then it allows us to edit, but I think it looks fine. And so now our front-end design validator agent has been created. So far we've talked about the basics of cloud code and then we've talked about how we can customize it through skills, MCP servers, and sub aents. The last thing I want to talk about are some other optimizations we can make with cloud code, specifically via so-called hooks. Hooks give us a way to automate actions before and after tool calls as well as other triggers. The way this works is that Claude can call a tool. A tool call is basically just going to execute some code on our computer and then once that code is executed, the result of the tool will get passed to Claude's context window. And again, there are a lot of different tools that Claude has access to. Read write tools, bash execution, web search tools, creating agents, managing the workflow, and if you have MCP servers, this is going to be even more. While all these tools make Claude a very powerful and helpful AI assistant, it can also potentially make it a very powerful unhelpful AI assistant in which it's actually harming the project or doing things that we don't want it to do. This is where hooks are handy. We can have different kinds of hooks. For example, we can have a hook called before any tool execution and a hook called automatically after any tool execution. For example, we can create a hook like this. So, this is going to live in a settings.json file. And we can configure the hook like this where we'll have a hook trigger. This could be a pre-tool hook or a post tool hook. We can have like a matcher. So if a specific tool is used or it matches a specific pattern, we can trigger this hook and then we can have different types of hooks. We could have a pre-tool hook to protect specific files. For example, if we have av file with sensitive information in it and we never want claude to be able to read that sensitive information, we can have a pre-tool hook to see if a readtool is being used on av file. And in that case, we can just block the tool execution. Or if we want to do some kind of automated linting or code cleanup anytime Claude creates a new file, we could have a post tool hook. So we could just change the hook trigger to post tool use. We can have the matcher be any kind of write tool. And then we can just do some automated linting of the new files. We'll see examples of each of these in a second, but I'll just mention that again like other features of Cloud Code, there are different scopes for hooks. So, we can have project level hooks that live in our project directory in thecloud folder in this settings.json file or we can have user level hooks that live in our home directory in thecloud folder. And then a couple of more advanced points is that there are a lot of different triggers we can use for hooks. Pre-tool and posttool use are just two options. You can also have hooks that run anytime we create a new session or Claude sends a notification and actually much more. You can actually see a full list here. So session start, user prompt submitted, pre-tool use, permission request, post tool use, and on and on and on. So there are a lot of different triggers we can set up. Additionally, there are different hook types. So shell commands are just one option, but we could also have prompts. So we can automatically send a prompt to Claude to perform a specific task. We can automatically spin up a sub agent or we can automatically make a API request to some endpoint. So you can actually do a lot of pretty advanced things with hooks. But after using cloud code for like eight or nine months, I haven't set up any. But this is definitely something you can do if you find yourself doing the same thing over and over again manually. You can just automate it with a hook. Last thing I'll mention is we've talked about a lot of ways of like customizing cloud code through skills, MCP servers, agents, and hooks. Turns out you can actually bundle all these customizations together into so-called plugins. There's actually a marketplace of these plugins freely available in cloud code. So if you run the /plugin command, you'll be able to see a bunch of popular plugins. Here you'll find pre-built skills, MCP servers, sub aents, and hooks. And you can configure them at the local level, the project level, and the user level. Here we are again in our project opened up in cursor. So far, we've created a custom skill for this front-end design agent. We've configured this playright MCP server, and then we've created this front-end design validator sub agent. So, the final thing I want to do is to create a pre-tool use and postto use hook. While we could do this manually by creating a settings.json JSON file in this.claude folder. We can also just ask Claude to do this for us. So we'll do a pre-tool use one to protect the progress.json file and then we'll do a posttool use one to do linting with rough. And then I'll just add a note via UV. You know, stuff like this, creating these like config files that are really meant for computers to be read is a bit tedious and easy to make a mistake if you're creating them manually. So this is like the perfect kind of thing to have Claude create on your behalf. So I just noticed an issue. So it created a settings.local.json file for the MCP server. So let me just say keep going but also move play write MCP2 settings.json. I guess when we created the MCP server for whatever reason it made it locally scoped instead of project scoped. Here we go. So, we're going to allow claw to edit its own settings. So, it removed the MCP server from the settings.local.json and then added it to settings.json. So, now we see the MCP server here. And now we also see the hooks have automatically been added. Here we have the trigger. We have the matcher. So, this is anytime it tries to edit or write a file. Here it's going to print the tool input. It's going to check if that input matches this progress.json file and then it's going to return an error if the progress.json file is trying to be written over. For the post tool use, this is the trigger for the hook. Again, it's anytime there's an edit or write command. But here, instead of blocking the change, it's going to run this UV run ruff check-fix. So, rough is a linting tool, and it basically will just clean up any messy code. Now that it's all done, we can just tell claw to test the hooks. Now, it's going to create files to run the test. So, I'll just switch it to accept edits mode. I think it's getting confused. Probably what's happening is I need to restart the claude session. So I will exit and then I'll clear and then I'll claude and then I'll say test the project level hooks in settings.json. Okay, so now it tested both the hooks and they seem to be working which is cool. Let me get back into the default mode. I'll clear the context window. And then the last thing I'll just show quickly is the plugins. Doing/plugin will open up the plug-in marketplace. These are ranked by popularity. So there's a superpowers plugin, code review, GitHub, code simplifier, Ralph loop, which went viral a while ago, and a bunch of other things. You can also look at the plugins you have installed. So we have the Playright MCP installed locally. I've also got some user level plugins. So, context 7 fetches up-to-date Python documentations. Playwright is the same playwright we have here, but there's a whole plugin for it. And then pyrite. LSP. Makes it easier for Claude to debug and make sure Python code is valid. The main point with plugins is that if you don't want to do all this stuff manually one at a time, you can just grab a plugin that maybe has everything that you need. So, for example, you don't have to create a whole GitHub text stack manually. You can just go to this plugin and then you can see more details here. Can user scope it, project scope it or local scope it. You can look at the homepage and so on and so forth. Even though Claude is super helpful for software engineering tasks, as we've seen, Claude isn't just a coding agent because again Claude has access to a bunch of different tools. And these tools are helpful for coding, but they're also helpful for non-coding tasks as well. For example, in my previous video, I used Claude Code to put together a list of leads at local midsize PEbacked software and technology companies in the DFW area. So, I could potentially do cold outreach to these businesses. You can also use it for copywriting and drafting emails. So, for example, I could take the lead list and then I could have Claude write me personalized emails for each lead based on the research and a template and the services that I'm selling. And then finally, because we can give Claude access to MCP servers, we can allow it to take actions like writing drafts in my Gmail account, accessing context in notion or Google Drive, managing projects with linear or Jira, messaging team members in Slack, and on and on and on. So there are hundreds of MCP servers out there and really no limit to the kinds of things that you can do with claude code. This is why you might hear people say cla code isn't just a coding agent. It's a general purpose agent that just happens to code. And this is why because once you understand how to customize and use cla code, you can really use it for whatever you want. We covered a lot of ground in this video. So I just wanted to recap with a few key takeaways. First, Claude is a helpful agent. You can access via the terminal. You can also use Claude in the web, on your phone, and in the Claude desktop app, not just the terminal, but the terminal is a pretty flexible interface for it. We also talked about various basic usages. So, the importance of managing Claude's context window, how we can give Claude persistent memory with the claude.md file, and then how slash commands give us shortcuts for managing Claude and its context. We also talked about how we can customize Claude via skills, MCP servers, and sub agents. Finally, we talked about how we can optimize Claude via hooks and then we can augment it using third-party plugins, which are these bundles of skills, MCP servers, sub aents, and hooks. There's definitely a lot to chew on when getting started with Claude Code. The best advice I can give you is to just get started with it because at this point it's probably still a bit abstract. But when you start actually getting your hands on the keyboard and interacting with Claude, all this stuff's going to become much more concrete. And then again, it doesn't matter if you get stuck or you're trying to do something you don't know how to do. You can always just ask Claude how to do it or to just do it on your behalf. So, I hope this video was helpful in getting you started with Claude Code. If you have any questions or suggestions for future videos, please let me know in the comments below. And as always, thank you so much for your time and thanks for watching.
Video description
🤝 Work with me: https://www.shawhintalebi.com 🚀 Ship AI apps in weeks, not months: https://aibuilder.academy/yt/wtOnAZUdP0A Claude Code is an AI agent that can code. In this video, I share a practical guide for builders covering everything you need to know. ▶️ AI Coding Playlist: https://www.youtube.com/playlist?list=PLz-ep5RbHosVfra9AXAOq105gzlXY4HsT References [1] https://code.claude.com/docs/en/overview [2] https://youtu.be/PCLu84VLF1w [3] https://anthropic.skilljar.com/claude-code-in-action [4] https://youtu.be/vEvytl7wrGM [5] https://youtu.be/N3vHJcHBS-w [6] https://code.claude.com/docs/en/sub-agents [7] https://code.claude.com/docs/en/hooks-guide [8] https://code.claude.com/docs/en/plugins Intro - 0:00 What is Claude Code? - 0:43 How I use it - 1:45 Getting Started - 3:28 The Terminal - 4:10 Basic Usage - 5:36 Demo 1: The basics - 7:22 Context Management - 10:10 CLAUDE.md - 13:19 Slash Commands - 14:50 Demo 2: Context & commands - 16:41 Skills - 18:52 MCP - 22:24 Subagents - 25:14 Demo 3: Customizing Claude Code - 28:08 Hooks - 35:35 Plugins - 39:18 Demo 4: Custom hooks & plugins - 39:52 Beyond coding - 43:57 Takeaways - 45:25