skillnet
skillnet is a CLI for reconciling local AI skill directories into a checked-in mirror, editing mirrored skills, syncing selected mirror state back to live agent directories, and recording calibration data for multi-phase-plan.
The supported interface in 0.2.0 is the skillnet binary. This crate does not commit to a stable embeddable Rust API yet.
Install
For a source checkout:
Nix Home Manager
Add the flake input and import the module:
inputs.skillnet.url = "git+ssh://git@codeberg.org/caniko/skillnet.git";
# In your Home Manager config:
imports = [ inputs.skillnet.hmModules.default ];
programs.skillnet.enable = true;
The module is exported as both hmModules.default and hmModules.skillnet.
It installs skillnet on PATH, creates the runtime data directory, and
exports skillnet_DATA_DIR and SKILLNET_DATA_DIR for the CLI.
SQLite is the default calibration backend. To use Postgres, select the backend and provide a connection URL:
programs.skillnet = {
enable = true;
package = inputs.skillnet.packages.${pkgs.system}.skillnet;
database = {
backend = "postgres";
url = "postgres://user:password@db.example.com/skillnet";
};
};
The Postgres backend requires a skillnet package built with the postgres
feature. The module does not rewrite programs.skillnet.package; choose a
package that matches the backend you enable.
The database.url value is written into the Nix store. For production secrets,
prefer setting SKILLNET_DATABASE_URL through your usual secret mechanism, such
as sops-nix, agenix, or a shell-sourced environment file.
Options:
programs.skillnet.dataDirdefaults to${config.xdg.dataHome}/skillnet.programs.skillnet.database.backendselectssqliteorpostgresand defaults tosqlite.programs.skillnet.database.pathoptionally sets the SQLite database path; when unset, calibration data lives at<dataDir>/multi-phase-plan/calibration.sqlite.programs.skillnet.database.urlsetsSKILLNET_DATABASE_URLand is required whenprograms.skillnet.database.backend = "postgres".programs.skillnet.packageoverrides the package. Ifpkgs.skillnetis not available in your package set, useinputs.skillnet.packages.${pkgs.system}.skillnet.programs.skillnet.extraConfigis reserved for future declarative config.
Storage backends
SQLite is the default calibration backend and needs no configuration:
[]
= "sqlite"
= "/home/alice/.local/share/skillnet/multi-phase-plan/calibration.sqlite"
The path key is optional. Without it, skillnet uses
$skillnet_DATA_DIR/multi-phase-plan/calibration.sqlite,
$SKILLNET_DATA_DIR/multi-phase-plan/calibration.sqlite, or
$XDG_DATA_HOME/skillnet/multi-phase-plan/calibration.sqlite.
Postgres support is optional and requires a binary built with the postgres
feature:
Select Postgres with an environment variable:
Or with skillnet.toml:
[]
= "postgres"
= "postgres://skillnet@localhost/skillnet"
Or through the Home Manager module:
programs.skillnet = {
enable = true;
package = inputs.skillnet.packages.${pkgs.system}.skillnet;
database = {
backend = "postgres";
url = "postgres://skillnet@localhost/skillnet";
};
};
--database-url <URL> overrides both environment and config for one command.
Plain URLs in programs.skillnet.database.url are written into the Nix store;
use sops-nix, agenix, or another secret-backed environment mechanism for
production credentials.
Quick Start
Inspect the configured scopes and current divergence:
Pull live skills into the mirror and then inspect or regenerate catalog output:
Calibration commands are available under the dedicated command group:
Development
Run the default test suite with:
Postgres parity tests run when SKILLNET_TEST_PG_URL points at a test database:
Configuration Model
skillnet keeps the mirror separate from live agent directories:
global/stores the reconciled global skill mirror.projects/<name>/stores reconciled per-project mirrors.- Live global sources typically come from
~/.agents/skills,~/.claude/skills, and~/.codex/skills. - Project scopes can add
.agents/skills,.claude/skills,.codex/skills, rootskills, plugin skill directories, and other configured paths.
Configuration lives in skillnet.toml. Catalog metadata lives in skillnet.catalog.toml.
Command Surface
The current top-level commands are:
statuscompletionssyncskillscopeprojectcatalogcalibration
Generate shell completions with:
Documentation
- Docs: https://docs.rs/skillnet
- Source: https://codeberg.org/caniko/skillnet
Release Validation
The release-prep flow validates the repository with:
RUSTDOCFLAGS="-D warnings"
License
Licensed under either of:
- MIT (LICENSE-MIT)
- Apache-2.0 (LICENSE-APACHE)