Faced with the Clever Cloud CLI, an assistant with no context does what it can: it guesses. It invents an option that doesn’t exist, mixes the syntax of an old version with today’s, or falls back on manual git push commands. It often works in the end, after a few round trips.
Clever Tools now ships a skill: a small package of knowledge your assistant loads when it needs it, which teaches it the CLI from the source rather than by approximation. In this post, we install it, then watch it work on a real deployment: a todo application backed by Materia KV.
What is a skill?
A skill is a folder containing a SKILL.md file. That file starts with a name and a description, followed by instructions in Markdown, and can come with reference files. The format is open – it’s the Agent Skills specification – and it’s supported by Claude Code, Cursor, Codex, Copilot and others.
The idea is frugal. At startup, the assistant reads only the name and description of each installed skill. It loads the full content only when the task calls for it: you talk about deploying to Clever Cloud, it opens the clever-tools skill. The rest of the time, it costs nothing in your context.
Ours lives in the Clever Tools repository, next to the CLI’s code. It contains a cheat sheet of the essential commands (deployment, logs, environment variables, domains, add-ons, scaling, SSH) and a complete reference of every command, option, runtime, add-on and zone. Since it evolves in the same repository as the CLI, it follows its releases.
Installation
You need Node.js for npx, and Clever Tools installed and logged in to your account (clever login). Then, a single command:
npx skills add CleverCloud/clever-tools
skills is the installer of the Agent Skills ecosystem. It clones the repository, finds the clever-tools skill, then asks you two questions:
- which assistants to install it for: Claude Code, Cursor, Codex…
- where to install it: in the current project only, or globally for all your projects.
If you deploy to Clever Cloud from several projects, the global install is the most convenient. If you want the whole team to benefit, install it in the project and commit it with the rest.
Two commands will come in handy afterwards: npx skills list to see what’s installed, and npx skills update to get the latest version of the skill when the CLI evolves.
You may come across npx add-skill in older documentation: it’s the former name of the same tool, which now prints a warning and redirects to npx skills add.
A real session
To see what it looks like, I asked Claude Code, with the skill installed, for something simple: “make a small todo application that uses Materia KV as if it were a Redis, and deploy it to Clever Cloud”.
Materia KV is our serverless key-value database, built on FoundationDB and replicated across three datacenters in Paris. It speaks the Redis protocol: any Redis client works, with no specific SDK.
What follows are the commands the assistant actually ran, with their output.
The application and its database
After writing a small Node.js application (an HTTP server, an HTML page, the official redis client), the assistant created the application and the add-on:
$ clever create --type node todo-kv --region par
✓ Application todo-kv successfully created!
$ clever addon create kv todo-kv-store --plan base --region par --link todo-kv
Add-on created and linked to application todo-kv successfully!
/!\ The Materia KV provider is in beta testing phase
--link does the wiring: on creation, the add-on is linked to the application, and its environment variables are injected into it. The assistant checked they were there:
$ clever env
KV_HOST=…
KV_PORT=…
KV_TOKEN=…
REDIS_HOST=…
REDIS_PORT=…
REDIS_PASSWORD=…
REDIS_URL=…
…
That’s what the REDIS_* aliases are for: an application expecting a Redis finds what it’s looking for without changing a line of configuration.
An interesting detail slipped in here. Before writing the code, the assistant read the Materia KV documentation, in Markdown, and found the list of supported commands there. Materia KV doesn’t support Redis lists (LPUSH, LRANGE) yet. So instead of a list, the todos are stored in a hash, with a counter for the IDs:
const id = await kv.incr('todos:next-id');
await kv.hSet('todos', String(id), JSON.stringify({ id, title, done: false }));
Deployment
$ clever deploy
✓ Code pushed to Clever Cloud (0.6s)
✓ Deployment started
Starting with Node.js v24.21.0
Installing dependencies…
todo-kv listening on 8080
Response from GET / is 200 (within expected range 200...500)
Successfully deployed in 0 minutes and 7 seconds
✓ Access your application: https://app-….cleverapps.io/
clever deploy pushes the code and follows the deployment to the end, logs included. For the assistant, that’s valuable: it sees the result in the same command, without having to look for it elsewhere.
Checking, from the application down to the database
The assistant then tested the live API: creating three todos, marking one as done, reading the list. Then it checked directly in Materia KV with clever kv, which sends a raw command to the database without installing redis-cli.
First hiccup: clever kv didn’t appear in the help. The command is an experimental feature that has to be enabled first. The assistant listed the features with clever features, found the right one, and enabled it:
$ clever features enable kv
Experimental feature 'kv' enabled
$ clever kv todo-kv-store PING
PONG
$ clever kv todo-kv-store HGETALL todos
[
'1', '{"id":1,"title":"Écrire le billet sur le skill","done":false}',
'2', '{"id":2,"title":"Tester npx skills add","done":true}',
'3', '{"id":3,"title":"Ouvrir une PR sur le SKILL.md","done":false}'
]
Reading the logs
Last step, asking what’s going on in the application:
$ clever logs --app todo-kv --since 15m --until 1m
…
todo-kv listening on 8080
Successfully deployed in 0 minutes and 7 seconds
KV error SocketClosedUnexpectedlyError: Socket closed unexpectedly
One error, three minutes after the last request. The assistant read it, assumed an idle connection closed on the server side, and checked: the redis client reconnects on its own, and a new write through the API went through fine. Nothing to fix, but it needed to be observed rather than assumed.
Along the way, a useful option: --until bounds the log read. Without it, clever logs --since 15m keeps following the stream forever, which suits a human in front of a terminal much better than an assistant waiting for the command to finish. The assistant learned this the hard way with clever accesslogs, which followed the stream without ever returning, and which it ended up interrupting.
Takeaways
The whole session took about a dozen commands. Most of them did what the assistant expected the first time, and that’s what the skill brings: the right command, with the right options, without fumbling.
What also makes it work is the short loop between a command and its result. Run, read the output, correct: clever deploy showing the build logs, clever env showing what was injected, clever kv showing what’s actually in the database. The assistant never works blind.
The session also showed the skill’s current limits, and that’s a good thing: it didn’t mention that clever kv needs clever features enable kv, nor how --until behaves. Those are two lines to add to SKILL.md, and exactly the kind of feedback we’re after.
Skill or MCP server?
The skill isn’t the only way in for an assistant. Clever Cloud also offers an MCP server, which gives the assistant direct access to the API without going through the CLI, through three tools: search to discover operations, execute to call them, doc to read the documentation. And the whole documentation is readable in Markdown, with an llms.txt index that lets an assistant find the right page without crawling the site.
The three complement each other. The skill is the simplest starting point: one install command, and your assistant speaks Clever Tools fluently. The MCP server is for when you want to go beyond what the CLI exposes. The Markdown documentation, as we saw with Materia KV, helps in every case. All of this is described on the Drive Clever Cloud from an AI agent page of our documentation.
In short
npx skills add CleverCloud/clever-tools
One command, two questions, and your assistant knows how to deploy to Clever Cloud, manage your add-ons and environment variables and read your logs, with the CLI as it is today.
The skill is open source and lives in the Clever Tools repository. It improves like the rest of the code: if your assistant stumbles on a command, open an issue or a PR on SKILL.md. And to tell us what works, what doesn’t and what’s missing, the discussion is open on our GitHub community.