Claude Code is not a Chatbot… It is an Execution Engine

Many people use Claude Code as a chatbot… they write a prompt, wait for the reply, modify it, and repeat. Over time you'll notice you're consuming a lot of Tokens, and you're repeating the same explanation every time.

2026-04-19 13:53:00 - Mohamad Abuzaid

The problem here is in the way of thinking. Claude Code is not designed as a chatbot, but rather closer to an Execution Engine that manages context, rules, and tasks. And here I want to talk about five of the most important components of Claude Code, which if you use properly, will get you excellent results at the lowest cost.

[1] CLAUDE.md

This is a MarkDown file that exists in the root of your project or Workspace. This file gets fully loaded with every session.

You fill it with all the information Claude needs throughout the session whatever the task is.

For example, the Architecture of the project or the important commands it needs to build. Or file naming conventions. You can also mention the files that Claude should refer to as reference, like for example a Theme file or RoadMap.

There are two viewpoints regarding the size of CLAUDE.md file

Personally :

I create more than one CLAUDE.md... So, if my project is modular and I have data - presentation - domain modules. Then I create a CLAUDE.md for each one of them. Instead of one huge file in the root carrying everything about the project. And if the Agent is going to work in one of these modules, it will load its file first thing. Otherwise no.

-----------

[2] SKILLs (.claude/skills)

These are a group of files whose role is to teach the Agent how to execute specific tasks in the fastest and most economical way. For example:

Inside the file you give it all the instructions to follow to execute the required skill.

The Skill file is written with YAML format. And at the very beginning of the file there are two very important pieces of information. The name and description.

---
name: create database
description: Create database...
---


Through them the Agent can understand the Skill and use it when it needs it

Notes:

---------

[3] RULES (.claude/rules)

These are also a group of files whose function is to define the rules the Agent adheres to while working on specific files. Remember the name and description of Skills?... Well the Rules have another parameter which is paths

---
paths:
- "**/*.kt"
- "**/*.kts"
- "**/android/**/*"
---


Here we're telling the Agent adhere to these rules when you work on files of the mentioned type or in the specified paths. You can then write all the rules after... For example:

- Use data classes for models and DTOs
- Prefer sealed classes for state representations

And any other rules you want

Notes:

---

[4] COMMANDS (.claude/commands)

These are of the most important features in Claude. And through them you can shorten dozens of lines of repeated prompts that you use every time.

For example, if every time you start working on a new Ticket you do the following

  1. You move the Ticket to 'In Progress'
  2. Create a new branch for the feature or fix
  3. Execute the feature and modify the required files
  4. Open a PR from your branch to the base branch

Then you can simply create a new command called start-feature

Inside this file you will tell Claude all the required steps in order. And afterwards through the chat you say to it:

/start-feature

And that's it.. it will go off and execute all these boring steps and return to you when it finishes.

You might ask, how will it know the ticket number? Or the branch I'm working on right now?.. Surely I'm not going to create a new command for every ticket..

Well, I'll tell you a beautiful thing: this command can take Arguments. Just like the Bash command exactly

Arguments: {ticket} {branch}
Example usage: /start-task 1324 feature/auth_login

Parse the arguments:
First argument: Jira ticket number
Second argument: Working branch

And this way you can send your command any number of Arguments you need.

Notes:

-----

What's the difference between Commands and Skills?

[1] Skills

These are the steps required to execute one specific task only. You can't put two skills in the same file.

For example:

---
name: reset-database
description: "This is the manual to how you can reset the current example-database"
---
# Reseting database and repopulating it with updated data.

## Overview
After making any updates to example database scheme you MUST drop the current database and recreate it again and populate it with the updated scheme and initial entries.

## The Process
**Drop the current database:**
- Use this terminal command to drop/delete the current database
```
mysql -h localhost -P 3306 -u root -p***** -e "DROP DATABASE IF EXISTS example_db;"
```

**Recreate a new empty database:**
- Use this terminal command to recreate the database
```
mysql -h localhost -P 3306 -u root -p*** -e "CREATE DATABASE example_db;"
```

**Repopulate database:**
- Use this terminal command to populate the database with updated scheme and initial entries
```
mysql -h localhost -P 3306 -u root -p**** example_db ..
```


[2] Commands

These are ordered actions you define for the Agent inorder to execute a complete task consisting of several missions. And during the execution of these commands the Agent calls the Skills it needs.

For example if I have a task to add a new API and modify data in the database and then test the application on an emulator. Instead of telling the Agent several commands:

Now. I can create a command and name it add-end-point as follows

Arguments: {ticket} {branch} {end-point}
Example usage: /add-end-point 2323 feature/new-api login-user

Parse the arguments:
- First argument: Jira ticket number
- Second argument: Working branch
- Third argument: End-point to add

As the Leader agent, orchestrate this feature:
1. Checkout {branch} or create it if not found
2. Read and review Jira ticket PROJ-{ticket}
3. Move ticket to 'In Progress'
4. Make all necessary modification to add the end-point
5. Reset the database
6. Build and install new APK


And with that all I need is to go into the chat and say to claude

/add-end-point 2323 feature/new-api login-user

Notes:

----

[5] AGENTS (.claude/agents)

Here you define all the Agents or roles that Claude will play in your project. There are many examples of this:

Leader - Designer - Code Reviewer - Debugger

With each Agent you determine the shape of its job and what tasks it will do and if there are steps or instructions it needs to follow to execute this job or if there are reference files it needs to look at before working.

Notes:

For example: it's preferable that the Leader be Opus because it's the one that will organize and divide the work among the rest of the Agents. While the Designer and Code Reviewer can be Sonnet and so on..

You can activate the Agents by saying for example:

Using Leader agent, orchestrate the following ...

At that point the Leader will start reading the task and decide which Agent is appropriate for each stage. And when an Agent finishes, the Leader returns to follow up and hand over to the next agent. And so on.

------

Conclusion

If you start thinking of Claude as an execution engine, and consciously distribute the work among its components… you'll find that you're working in a calmer, clearer, and much more efficient way.

More Posts