Remember when writing code with an LLM meant saying "You are a world-class software engineer..." and then just pray for the best? That era is over. Today, prompting an AI looks less like manipulating an intern into thinking they are a world-class engineer, and more like building software: reusable skills, plugins you can install, MCP servers that integrate AI into your tools, heck, even package managers for those types of prompts? In this post I’ll unpack what prompting has become, why the clever one-liner is being replaced by infrastructure, and what that means for anyone who wants to get real work out of a coding agent.
What Are Coding Agents?
AI used to write code for applications are called coding agents. These agents have access to your codebase, can apply changes, and write new code for you based on your input. They can also explain code to you, so you don't have to read that giant method that almost your entire codebase relies on and looks like an intern wrote it.
The industry standard coding agent right now as of October 16th 2026, has to be Claude Code by Anthropic. Other examples are Codex by OpenAI, Gemini Code Assist by Google and Grok Build by SpaceXAI.
To use a coding agent, you first boot it up by running the following in your terminal (let's use Claude Code as an example):
Give it some time to load in (should only take a second or two), and it gives you a TUI. On the bottom you will see something that looks like a textbox for you to start prompting Claude.
Let's give it a shot, shall we?
Imagine have a brand new Laravel application, and we want to start off by creating an authentication system. While we could just manually write everything ourselves, why not put our coding agent on this task?
Let's enter this in our textbox on the bottom of our terminal:
And it gets to work.
As you might see, our prompt is very vague. Luckily, Claude is designed to ask you questions if it's uncertain about your command (though this is not something you should rely on. More on this soon). This might appear as simply questions which you'll have to enter in the textbox again, or as multiple choice questions which you can select.
Since this task is fairly simple, Claude will just go ahead and build it.
Forward a few minutes, aaand done! We now have an authentication system implemented into our application. However, it's important to be careful here. Since this is AI, and our prompt was very vague, AI could have just taken a lazy approach and, for example, "forgot" to hash our passwords when persisting our data to our database. Or it could have done too much like create the authentication pages (which we didn't ask for, and don't need yet).
Great, you now know what a coding agent is, and how to use one!
"That's cool, but if it's inconsistent or writes bad code, why should I use it? Is there a way to make my agent write better code?"
What Is Prompt Engineering?
In simple terms, prompt engineering is making up guidelines your agent has to follow before it does anything.
Imagine an intern. If you give them no guidance, advice or tell them about anything, they won't know what to do and just act on instinct. This is bad. We want our intern to know what they should do and how they should do things.
A coding agent is just that, except it has the attention span of a goldfish: Every new session starts from zero. So instead of rewriting our guidelines into every prompt, we write them once and make sure the agent rereads them before it does anything.
In Claude Code, that place is a file called CLAUDE.md in the root of your project. Claude reads it at the start of every session. You can generate a first draft by running /init, which scans your codebase and writes down what it finds. Then you make it yours:
Remember the two ways our auth system could have gone wrong? Lines two and three fix exactly that. And the last line means we no longer have to hope Claude asks questions.
But CLAUDE.md has a catch: it's read every time, in full. Stuff everything in there, and you waste the agent's limited attention on instructions that have nothing to do with the task at hand. That's where the rest of this post comes in.
Skills
A skill is a folder of instructions the agent only loads when it needs them. Each skill lives in its own folder with a SKILL.md file. The top of that file holds a name and a short description:
Up front, Claude only sees the name and description. When a task matches, say "add an API endpoint for updating a user's profile", it pulls in the full instructions. A skill folder can also hold scripts, templates and reference docs, which the agent only opens when the instructions point to them.
Where do we put 'em? You can put skill files in the .claude/skills/ folder. Claude reads this file from the get go.
Plugins
Once you have a few good skills, commands and settings, you might want to reuse them across different projects. Manually copying folders can get quite old fast. Plugins solve that.
A plugin bundles everything into one package you can install: skills, commands, hooks (scripts that run automatically at certain moments, like formatting code after every edit) and MCP servers (upcoming section).
Plugins are distributed through marketplaces, which are basically repositories that list plugins. In Claude Code, adding a marketplace and installing from it looks something like this:
This way, you can bring coding standards, steps for an AI to take while writing code, etc. to all of your projects, and becomes a dependency you install, update and roll back, just like any other library.
English with a package manager. What a time to be alive.
Artifacts
Artifacts in Claude are standalone, interactive work products that Claude generates in a dedicated side window next to your chat.
Claude automatically creates an artifact when content is significant, self-contained (usually over 15 lines), and something you will want to reuse or modify.
Imagine we want to create a CRUD for our users. A CRUD is pretty straightforward and repetitive: create, read, update, delete. Nothing more, nothing less. Since this is a very repetitive task, and we will ask this multiple times, why not store the steps to take to make life easier?
That's what artifacts do. Very simple, and quite nice.
MCP
Everything so far changes what the agent knows. MCP changes what it can do.
The Model Context Protocol is an open standard, introduced by Anthropic in late 2024 for connecting AI to outside tools and data. An MCP server exposes tools, like "query the database" or "fetch the latest error from XYZ", and any agent that speaks MCP can use them. Think of it as USB-C for an LLM: one plug, many devices.
Adding a server to Claude Code is a single command:
For our Laravel app, the perfect example is Laravel Boost, an MCP server from the Laravel team.
To use boost, run the following in your terminal:
Now, Claude can read your database schema, check your logs, and search documentation that matches the exact package versions in your project. Back to our auth example: instead of guessing what your users table looks like, your agent can check it out for themselves. Instead of "remembering" an API from an older Laravel version, it just looks it up.
Boost also ships Laravel-specific guidelines for your agent, which makes it a neat example of this whole post in one package: written guidance plus real tools, installed with a package manager. Nice!
If this sounds appealing to you, we have another post that goes more in-depth on this, and explains how you can set up one for yourself, right here!
Wrapping Up
What a time to be alive as a software developer/engineer, hm? Or just in general.
While a coding agent can technically do all of the writing for you, it's still important to check its output, fine tune prompts, etc. You basically become the product owner, and not really the developer. Making sure your agent knows exactly what you're building is very important. If it doesn't, its output won't match your vision.
So if you hate interns, well you're stuck with one know. So to make your own life (and it's life) easier, maybe try doing some of these things.
Happy coding!