Understanding Claude Code Components: A Practical Guide
Using only slash commands? You're automating 20% of what Claude Code handles. Most engineers can't explain when to use Agents vs Tools vs Skills. This practical guide helps eliminate the confusion.
Most developers use Claude Code like a chat interface. They type questions, get answers, copy-paste code. They’re missing the agentic features that optimize entire development workflows.
The confusion is real: When do you use Commands versus Agents? What’s the difference between Tools and Skills? Why bother with Plugins?
I’ll show you the workflow that my team uses. I’ll use an example of making a change to an golang HTTP service and the process we follow that maximizes Claude Code’s automation. But first, this high level diagram should help clarify which components do what in Claude Code:
So how do these pieces fit together in a real workflow?
Workflow Example: Adding Pagination to an API Endpoint
Planning Phase: Define Before You Code
We start with /define-task <jira-id>. This command updates the Jira ticket with a detailed description and definition of done. No context switching to your browser. For this specific task, the command uses the Jira MCP to pull in existing ticket details, then asks clarifying questions to get a crisp Definition of Done. More clarity in this step means less rework later.
Next, we run /plan-task or simply plan task <jira-id> prompt. This invokes the code-planning agent, which applies the Linus method to break down implementation into discrete steps. Each step gets a starting point, execution details and exit criteria.
The Linus Method
Our team’s RFC reviews were broken. Claude Code would cheerfully approve architectural proposals with “This looks good! Maybe consider adding caching for performance.” or “You’re absolutely right! This is an excellent way of solving the problem”. Meanwhile, we were building distributed monoliths and accumulating technical d…
The agent automatically pulls in what it needs:
- Context7 MCP fetches latest Go library docs
- Brave Search MCP finds relevant Stack Overflow discussions and other web resources
- Zen MCP selects the right model for different reasoning tasks
Example: Adding pagination to /api/users endpoint. The planning agent identifies:
1. Modify handler signature to accept page and limit params
2. Update database query with OFFSET/LIMIT
3. Add response metadata (total count, current page)
4. Write unit and integration tests based on existing test patterns
Once the task defintion and plan are ready, the agent updates the Jira ticket with the plan steps. No manual copy-pasting.
Execution Phase: Let Automation Handle the Boring Stuff
This phase starts with a clean context and the prompt implement task <jira-id>. The coding agent:
- Scans existing route handler and middleware patterns
- Writes the handler modifications
- Updates route definitions
- Runs go test ./... automatically
If you’re touching frontend code, Chrome DevTools MCP validates the changes in the UI. No manual browser refresh cycle.
Tools handle file operations (Read, Edit, Write). The agent invokes them based on the plan. You don’t micromanage which tool to use—that’s the point.
The coding agent also keeps updating the task as it progresses. The jira ticket always reflects the current execution status as a result.
Validation Phase: Catch Issues Before Code Review
Run validate task <jira-id>. This triggers:
- Code review agent analyzing architectural consistency
- Downstream service impact check (does the mobile app break?)
- Security review for the new query parameters
The validation agent adapts based on your changes. API endpoint modifications trigger different checks than database schema updates.
Finally, we create the PR with another slash command. It auto-populates the description with DoD, test results, and a summary of changes.
Common Mistakes That Cost You Context Window
Mistake 1: Loading all MCPs at startup. Use Plugins instead. Create packages for different repos: API-specific tools, UI-specific agents. Load what you need, when you need it.
Mistake 2: Only using slash commands. Commands are entry points. Agents handle complex reasoning. Tools execute file operations. Skills provide reusable capabilities.
Mistake 3: Ignoring Skills entirely. Skills like go-test or api-design are modular capabilities that agents invoke automatically.
Mistake 4: Manual invocation of everything. Set up Hooks for post-commit formatting, pre-push test runs. Automation compounds.
Which Component When
- Commands(docs): Entry points you type (/define-task, /plan-task)
- Agents(docs): Complex reasoning tasks (code-planning, code-review)
- Tools(docs): Direct operations (file edits, bash execution)
- Skills(docs): Reusable capabilities agents invoke (go-testing, api-design)
- MCPs(docs): External service connectors (Jira, Brave Search, Context7)
- Plugins(docs): Bundled packages for specific workflows (API development, UI work)
- Hooks(docs): Event-driven automation (format on save, test on commit)
Your Next Step
Pick ONE component you’re not using. This week:
- If you only use Commands, add the code-planning agent to your next feature
- If you skip Plugins, create an API-specific package with your most-used MCPs
- If you ignore Hooks, set up post-commit test automation
The difference between using Claude Code and mastering Claude Code is knowing which component solves which problem. Start with your most frequent workflow bottleneck.
What’s your biggest automation gap right now? The planning phase, execution speed, or validation thoroughness? Pick one and automate it.


