ASTO
A domain-specific language for organizing and documenting CLI commands - built in Rust.

Summary
๐ค What is Asto?
Asto is a small but powerfull DSL designed to help CLI engineers organize, describe, and document command-line tools - clearly and efficiently.
Whether you're designing a new CLI or keeping track of a large one, Asto gives you a clean structure to define:
- Inputs
- Descriptions
- Output behavior
- Status/version
- Params/Actions
- Exportable documentation
๐๐ซด Why Asto?
- Minimal syntax
- Easy to read
- Fast to write
- Exportable to
.jsonor.md - Perfect for documenting CLI tools
- Designed for DevTools engineers
- Fully Offline
- Runs on Windows, Linux and macOS
- Built in Rust for performance
Asto is not a replacement for your CLI. Asto is the language you use to structure it.
๐คจ Who is Asto for?
- CLI engineer
- DevTools Creators
- Backend Developers
- Documenting Writers
- Anyone building command-line tools
The Asto Syntax
Using a fictional CLI called friend-cli (fnd).
friend_cli_commands.asto
> fnd hi --name
/ "Print 'Hi NAME'"
: new
{
--name STRING "Username"
}
> fnd bye --name
/ "Print 'Bye NAME'"
: new
{
--name STRING "Username"
}
| Symbol | Meaning |
|---|---|
> |
Input command |
/ "" |
Description |
--param |
it represents a parameter |
: |
Command's status (new, depr, expm, stable) |
{} |
Param info |
Params with Asto
To use params, use --:
> fn hi --name
To specific param's type or what the param represents, use {}
For example:
> fn hi --name --lastname
/ "Print 'Hi name lastname'"
: new
{
--name string "First name"
--lastname string "Last name"
}
The syntax is:
--param_name type "Description"
๐ฅ installation
With Cargo
Verify installation:
asto --version
Output:
Without Cargo
Download the latest installer (.exe) from the releases page
๐งฉ VS Code Extension
Get syntax highlighting for your .asto files: gabrielxavier.Asto-Plugin (Search with this in vscode).
Exporting .asto files
Export to JSON
Output:
It generates:
friend_cli_command.json:
Export to MARKDOWN
Output (friend_cli_commands.md):
Project Name
By: YOUR_NAME_HERE
Informations about project...
Commands
fnd hi --name
Say hi for someone
Status: ๐ก New
Params
- --name or -n (
str): Username
fnd bye --name
Say bye for someone
Status: ๐ก New
Params
- --name or -n (
str): Username
Contribute
- Fork
- Create Branch
git branch -b my-improvement - Commit
git commit -m "improve:: description of commands" - Push
git push origin my-improvement - Open a PR
Ideas, docs, features and fixes are welcome.
License
MIT License - free to use, modify and integrate.