Command Reference
All commands support --help. kt --version prints the package version.
Update Checks
When a kt subcommand runs, Ktesio checks whether a newer GitHub Release is
available. The check uses an hourly cache, so repeated commands only contact
GitHub after the cached result is at least one hour old.
If an update is available, Ktesio prints a short notice to stderr that asks you
to run kt self-update. Machine-readable JSON output on stdout remains
unchanged.
Disable automatic update checks with:
KTESIO_NO_UPDATE_CHECK=1 kt listkt self-update
Update the kt binary itself.
kt self-updateBehavior:
- Detects the current install channel automatically.
- Uses
brew upgrade imagdy/tap/ktesiofor Homebrew installs. - Uses
cargo install ktesio --forcefor Cargo installs. - Downloads, verifies, extracts, and replaces the current binary for manual release installs.
- Fails with an actionable Cargo install recommendation when no prebuilt binary exists for the current platform.
- Skips the passive update notice while the explicit update command is running.
kt search <query>
Search public skill listings from skills.sh.
kt search tests
kt search "react native" --limit 10
kt search tests --json
kt search tests --installBehavior:
- Uses the public skills.sh search endpoint by default.
- Uses the documented authenticated skills.sh API when
KTESIO_SKILLS_SH_API_KEYis set. - Prints install commands for GitHub-backed results, such as
kt install owner/repo/skill. - Marks unsupported sources as
not installable yet. - Retries rate limits, temporary service failures, and transient network errors up to 3 total attempts.
- For
429 Too Many Requests, respectsRetry-AfterorX-RateLimit-Resetbefore falling back to short exponential backoff with jitter. - Shows friendly retry and final failure messages instead of raw HTTP or JSON errors.
Ktesio uses the skills.sh public API responsibly as described in the skills.sh terms, respects rate limits, and will use the documented authenticated API once API access is available.
kt init <path>
Create a skills.json manifest in a directory.
kt init .Behavior:
- Creates
skills.jsonwithdependenciesandpublishfields. - Scans existing
.agents/skills/*directories. - Shows per-skill progress while looking up public matches, cloning matched repos to resolve commits, and falling back to local path dependencies.
- Uses existing
skills.lockentries or exact public skills.sh matches to adopt known installed skills as remote dependencies and lock their current commit. - Records unmatched installed skills as local path dependencies.
- Does not automatically publish adopted local skills.
- Leaves an existing manifest untouched.
- Fails if the target directory does not exist.
kt install
Install every dependency declared in skills.json. If dependencies is omitted, it is treated as empty.
kt installBehavior:
- Fetches each remote dependency into a temporary workspace.
- Shows a progress bar while cloning each repo and copying published content.
- Suppresses raw git clone progress; clone failures are summarized after the skill finishes.
- Installs only paths declared in the source repo's
skills.jsonpublishlist. - Supports local path dependencies with
dependencies.<name>.path. - Supports optional
revselectors:commit:<sha>,branch:<name>, ortag:<name>. - If the source repo has no
skills.json, asks before discovering directories underskills/,SKILLS/, or.agents/skills/; multiple directories can be selected. - Records resolved commits in
skills.lockonly for successful installs. - Continues after individual clone/copy failures and reports all errors.
kt install <name:repo>
Add one skill to skills.json and install it.
kt install docs:https://github.com/example/agent-docs.git
kt install docs:example/agent-docs
kt install docs:example/agent-docs --ssh
kt install docs:example/agent-docs/reviewThe repo value can be an HTTPS URL, SSH URL, local git path, GitHub owner/repo shorthand, or GitHub owner/repo/skill shorthand. GitHub shorthand resolves to HTTPS by default; --ssh resolves shorthand to an SSH clone URL.
Ktesio updates skills.json and skills.lock only after the repo is fetched and installable content is copied successfully. A bad target, failed clone, missing published skill, cancelled fallback, or missing fallback skill directory leaves those files unchanged.
The single-skill install flow uses the same progress bar and quiet git output as bulk install.
kt install <repo>
Install one or more published skills from a source repository without naming the package first.
kt install https://github.com/example/agent-docs.git
kt install example/agent-docs
kt install example/agent-docs/review
kt install example/agent-docs --skill review
kt install --all https://github.com/example/agent-docs.gitBehavior:
- Reads the source repo's
skills.jsonpublishlist and derives destination names from published skill names. - Prompts when multiple published skills are available.
--allinstalls every published skill without prompting.--skill <name>installs one matching published or fallback-discovered skill.--yesaccepts safe defaults, such as a single obvious fallback skill.--no-inputfails instead of prompting when a choice is required.- Repos without
skills.jsoncan use fallback discovery from.mdfiles or directories underskills/,SKILLS/, or.agents/skills/.
kt publish
Publish local skills from this repo.
kt publishBehavior:
- Selects local path dependencies or directories under
.agents/skills/. - Writes selected skill names to the
publishlist. - If an untracked
.agents/skills/<name>directory is selected, first records it as a local path dependency. - Does not publish remote dependencies.
- Creates a manifest if needed.
kt publish add <name> <path>
Add or update one published local skill in skills.json.
kt publish add docs skills/docsBehavior:
- Creates
skills.jsonif needed. - Preserves existing dependencies and publish entries.
- Fails if the name is invalid, the path does not exist, or the path is outside the project.
kt upgrade
Fetch latest commits for installed skills.
kt upgradeBehavior:
- Uses
skills.lockwhen present, otherwise falls back toskills.json. - Runs git fetch and checks out the resolved default branch behind a progress bar.
- Updates
skills.lockfor successful upgrades. - Reports per-skill errors without stopping the whole command.
- Suppresses raw git fetch and checkout output unless a failure needs a short git error summary.
kt list
Show all known skills.
kt listStatuses:
installed: manifest or lockfile entry exists and files are present.missing: lockfile entry exists but files are missing.not locked: manifest entry exists but no lock entry exists.orphaned: lockfile entry exists but no manifest entry exists.
The table uses icons and color-coded status labels when the terminal supports them.
Use kt list --json for machine-readable output. JSON entries include name, repo, commit, path, and status.
kt show <name>
Show one skill.
kt show docsOutput includes name, repo, commit, local path, and status.
Status is color-coded the same way as kt list.
Use kt show <name> --json for machine-readable output with name, repo, commit, path, and status.
kt doctor
Validate project skill state.
kt doctorBehavior:
- Checks
skills.json,skills.lock,.agents/skills/, published local paths, orphaned lock entries, missing installed directories, and git availability. - Exits successfully when no errors are found.
- Prints actionable warnings and errors for repairable project state.
kt uninstall <name>
Remove a skill from manifest, lockfile, and disk.
kt uninstall docskt remove <name>
Alias for kt uninstall <name>.
kt remove docs