decimalai skills command, with its flags and exit codes. For the workflows, read Skills on disk and Authoring Skills.
Skills on disk
Registry skills installed into a project like packages. Skills on disk explains the files. The commands in this section share these options, so their own tables leave them out:
Exit codes are the same for each of these commands, and stable across releases.
decimalai skills --help prints the same table.
decimalai skills search
Find a skill in the public registry: no signup, no API key. Each result says how an agent did with the skill and without it, the same sentence the skill’s page leads with, and gives the command that adds it. A Blocked skill is named apart, with no such command.
A skill tested before August 2026 shows no count, because results were counted differently then. Its page has the detail.
It always reads anonymously, even with
DECIMAL_API_KEY set. No results is not an error: it exits 0 and suggests what to try. Exit 8 means the registry could not be reached or did not answer.
decimalai skills add
Add a skill: one from the registry, or one you wrote in .agents/skills.
- Not connected: on the project’s list,
.decimal/skills.toml. A registry skill is also installed and locked. A skill you wrote is listed under[authored]. - Connected (
.decimal/link.tomlexists), or with--to-agent: on the agent on DecimalAI. A registry skill is assigned to it, and a skill you wrote is uploaded to your organization, not published, and added..decimal/skills.tomldoesn’t change. It needs an API key.
The registry chooses the install name, and the trust gate decides what is installed, refused or asked about. Tools dropped from
allowed-tools, and attachments the registry cannot serve, are printed.
A new skill’s output ends with how to try it: a question to ask your agent, which names the skill, and where to ask it. When DecimalAI wrote a test that a model failed without the skill and passed with it, the question comes from that test.
decimalai skills install
Make .agents/skills match the manifest and the lock. New manifest entries are resolved and installed, entries it no longer lists are removed, and missing folders are fetched at their locked version. It never moves a version: that is update. Folders the lock does not list are never touched.
decimalai skills update
Move skills to newer versions. Each changed folder is replaced whole, and folder names never change. If any skill cannot be updated, none is.
decimalai skills remove
Take a skill off the project’s list. A registry skill’s folder goes too, with its manifest and lock entries; a skill you wrote (listed under [authored]) keeps its folder.
No network call is made, and nothing changes on the registry. In a project connected to DecimalAI, its agents keep the skill: remove it from an agent in the dashboard. A name the project does not list exits 7.
decimalai skills status
Show the installed skills, and how the skills you author compare with the platform.
Installed section. Each folder of
.agents/skills against the lock: clean, modified, missing (locked, not on disk), unmanaged (not in the lock), illegal (a symlink or a file), interrupted. Authored section. When ./skills exists and an API key is set, each SKILL.md there against this checkout’s last skills sync: in_sync, local_ahead, remote_ahead, conflict, local_only. Drift changes the exit code only with --check; a refusal, such as a network failure under --remote, exits with its own code.
decimalai skills verify
Check skill folders the way the native skill loaders read them. It only reads: it takes no lock on the project and writes nothing.
Without
PATH, every folder the lock lists must hold exactly its locked files, and every rule is an error there. Folders the lock does not list are checked like PATH: rules of scope loader (at least one native loader rejects, drops or renames a skill that breaks it) are errors, and rules of scope sdk are warnings. Exit 0 with no errors, 1 with any; 3 when the lock is unreadable or a version 1 lock, or there is neither a lock nor a root; 2 for a PATH that is not a skill folder.
In an unmanaged folder, F11-F13, V3 and V4 do not apply, and F14 reports only an unsafe path. Each finding prints its rule, the file and a fix.
decimalai skills migrate
Move a project from a version 1 lock or an npx lock to the manifest and a version 2 lock. Every entry is installed fresh from the registry. Old folders inside .agents/skills and the old locks move to .decimal/migrated-v1/<txid>/, nothing is deleted, and a second run does nothing. The full procedure: Migrations.
--yes migrates the entries that resolve even when others do not. Without it, an entry that does not resolve stops the migration (exit 7) before anything changes.
decimalai skills pull
Copy a public registry skill to disk: no signup, no API key. It writes the registry’s own files into a folder named by the skill’s install name. It is a loose copy: nothing locks it and nothing updates it. To manage a skill, use skills add.
- It always fetches anonymously, even with
DECIMAL_API_KEYset. A Blocked or Withheld skill is refused (exit 7); a Caution or not-yet-reviewed one is written without a question. - A folder that already holds different files is left alone (exit 5) unless
--force. A symlink in the way, or a target inside the.agents/skillsof a project with a manifest or a lock, is always refused (exit 5).
Removed skills commands
The old verbsdecimalai skills export <ref> and decimalai skills install <ref>
(with their --agent, --scope and --out flags) were removed, along with the SDK methods that
wrapped them. Use
decimalai skills add <ref>; Migrations lists what replaces
each one. SkillRouter.export(), update_skills() and status() run skills add,
skills update and skills status through the same engine.
Skills you author
list, sync, review, benchmark and push also take --api-key and --base-url (Global options). scan takes neither.
decimalai skills list
List the skills in your workspace, with each one’s latest version. --limit caps the results, 50 by default.
decimalai skills sync
Sync the SKILL.md files you wrote with your organization on DecimalAI. The guide compares it with the other ways in.
Each skill’s instructions are compared with DecimalAI’s copy and with what this checkout last synced:
- Only your file changed: it is uploaded as a new version.
- Only DecimalAI’s copy changed (an edit in the dashboard, or another checkout’s sync): it is written into your file.
- Both changed: DecimalAI’s copy wins. Your file is copied to
.decimal/backup/sync-<time>/<name>/SKILL.mdfirst, and the line for it says where. To upload your version instead, copy it back and sync again.
eval.yaml beside a SKILL.md is uploaded too, and so are text files one level under references/, scripts/, templates/ and assets/ (50 files, 500 KB each). A per-skill error is listed as failed, and the rest of the batch still syncs. A folder installed from the registry, whose SKILL.md carries metadata.decimalai-skill-id, is skipped and named in the output.
decimalai skills scan
Run the static safety scan on your SKILL.md files: free, with no API key and no network. Scan before you publish explains what a clean scan does and doesn’t promise, and has a GitHub Actions job.
Exit 0 when nothing reached
--fail-on; 1 when a skill did, or the path holds no SKILL.md; 2 for a usage error.
decimalai skills review
Run the full safety review on a skill you already synced, on DecimalAI, to find a rejection before you publish. Each review counts against your plan’s deep-review quota. Deep review has the quotas and what a verdict does.
decimalai skills benchmark
Run a skill’s eval suite on DecimalAI’s runner, each case with the skill and without it, and print the difference. This is a verified run: it counts against your plan’s monthly case quota and feeds the skill’s registry numbers. To iterate for free on your own key, use the local runner and skills push.
It first uploads the folder’s
SKILL.md and eval.yaml, and your local copy wins. An eval.yaml that doesn’t parse stops the command. If the upload fails, the run warns and uses the copy already on DecimalAI. A skill created this way is on no agent until you add it. Exit 1 when the run couldn’t start or finish, which includes being over quota. A run that finishes exits 0 whatever its verdict.
decimalai skills push
Attach the results.json of a local skillevaluation run to a skill on DecimalAI. It’s a JSON upload, so it’s free and uses no quota. The run shows on the skill’s Benchmark tab tagged unverified and never feeds registry rankings.
The skill has to exist on DecimalAI, so run
skills sync first. Otherwise, or when the results document is rejected, it exits 1 and says why. A pushed case with no matching case on DecimalAI is skipped and named in the output.