- Rust 98.5%
- Lua 1.5%
|
|
||
|---|---|---|
| .forgejo/workflows | ||
| app | ||
| contrib/models_endpoint | ||
| core | ||
| docs | ||
| plugin | ||
| scripts | ||
| tools | ||
| tui | ||
| .fdignore | ||
| .gitignore | ||
| .rgignore | ||
| AGENTS.md | ||
| Cargo.lock | ||
| Cargo.toml | ||
| DESIGN.md | ||
| pyproject.toml | ||
| README.md | ||
| uv.lock | ||
| zensical.toml | ||
Skate Coding Agent Harness
This is a bespoke coding agent harness with a couple of unique features.
The only supported operating system is Linux.
Unique Features
The features below are the driving factors that led me to writing my own harness instead of reusing an already available one.
Modal Editing
The skate TUI is modal and makes heavy use of hotkeys and commands.
The hotkeys are vim-inspired but are not intented to be a one-to-one mapping. Some shortcuts attempt to mirror existing coding agents instead (for instance Ctrl + G to edit a plan).
Zero Tool Confirmations
The skate harness has no concept of a tool confirmation. Instead the agent is given a set of permissions and these are enforced on tool uses, either working or failing transparently.
By default when executing the agent can modify any files in the current directory but has read only access to files in other directories. (This applies to both the builtin read/edit file tools as well as any bash commands that may be executed). Network access can also be toggled on or off.
Standard Features
Model/Provider Selection
The skate harness can work with multiple different model providers via plugin definitions.
Anthropic and Synthetic are fully supported by default. Vertex AI has partial support for Anthropic models.
Plan/Execute Modes
The skate harness has the concept of different modes for a conversation to be in along with different system prompts for each.
Currently there is plan and execute mode. In planning mode the agent is told to create a plan and only given access to write the current plan file along with read access to the rest of the system.
In execute mode, the agent is provided a pointer to the created plan file and write access to the current directory.
Usage
Start by cloning the repository to your machine
git clone https://git.tiramisu.one/drew/skate.git
# OR for JJ
jj git clone https://git.tiramisu.one/drew/skate.git
Running for test:
cargo run
Installing:
cargo install --path=app/
skate
Sessions
Every run is a session, stored under
$XDG_STATE_HOME/skate/sessions/<project-slug>/<uuid>/. skate opens on a
dashboard: the left pane lists the project's recent sessions (newest first,
with last activity, plan/exec, first message, id and model), the right pane
the available models. j/k move, Enter on <create new agent> (or n
anywhere) opens the new-agent dialog, Enter on a past session resumes it and
q quits. A resumed session restores the conversation for the model,
re-renders the transcript and keeps appending to the same logs. Tool calls
that were still running when the previous run ended are marked as failed.
Sandbox changes made live (such as :net on) are not remembered; a resumed
session starts from the configured policy.
skate # dashboard
skate --exec # skip the dashboard, new session in execute mode
skate --resume <uuid> # skip the dashboard, resume that session
skate sessions # list sessions (time, uuid)
To view the documentation locally, run:
uv run docs
AI Usage
Almost all of the code in this project was produced by LLMs and reviewed by a human. The top level architecture is fairly scrutinized while individual functions and unit tests are not.
This README file and all documentation is human written.