NAME
App::karr::Cmd::Skill - Install, check, and update bundled agent skills
VERSION
version 0.601
SYNOPSIS
karr skill install
karr skill install --agent codex,cursor
karr skill check --global
karr skill update --force
karr skill show
DESCRIPTION
Installs and maintains the bundled karr skill for supported agent clients. The skill is a directory -- SKILL.md, which an agent loads on every trigger, plus references/*.md, which it reads on demand -- and every action below treats that set as one unit. The command can target project-local directories or global skill locations in the current user's home directory, which makes it useful both for direct Perl installs and Docker-wrapped vendor usage.
Writes go into each target file in place, keeping its inode, so a SKILL.md that is one link of a hardlink chain shared across projects stays part of that chain instead of being silently broken out of it.
--global selects the home-directory location instead of the project-local one; the two coincide for claude-code and cursor but differ for codex (see "SUPPORTED AGENTS").
TARGET DIRECTORY
The project-local target is the current working directory: the skill directory is written straight underneath it, at .claude/skills/kanban-issues-karr-cli/ for claude-code and at the equivalent path for the other agents. Nothing is discovered on the way there and no repository is involved -- this command has no board, and installing into a directory that is not a Git repository at all is a supported use. --global is the same idea one level up: the target is the current user's home directory instead. When --agent is omitted, even the auto-detection reads the current directory, so both which agents are touched and where their files land follow from where the command was run.
The root option --dir is therefore refused, in both placements, and both exit 2: karr skill install --dir PATH is an unknown option (this command declares none), and karr --dir PATH skill install is a usage error that names the current directory as the target. --dir is the starting point of a search upward for one repository's root -- which is why it may name any directory inside that repository -- and that is not what this command's target is; handed the same path, the two would answer about different directories. To install into another tree, cd there. Before ticket #226 the root placement was accepted and then discarded without a word, so the file was written into the tree the caller happened to be standing in while the message read as if the named one had been used.
karr init --claude-skill writes the very same directory and does honour --dir: it installs into the root of the repository it is initializing, and it needs a repository in the first place.
SUPPORTED AGENTS
The built-in agent targets are claude-code, codex, and cursor. When --agent is omitted, the command auto-detects available client directories and falls back to all known agents if nothing is detected.
ACTIONS
installWrites the current bundled skill -- SKILL.md and every references/*.md -- to the selected target locations. A target that already has a SKILL.md is left alone and reported
existsunless--forceis given, which overwrites every file unconditionally. Every target is reported with the absolute path of its SKILL.md, in the plain output as well as under thepathkey of--json, so the message says which tree the skill went into.checkCompares every installed file with the bundled version and exits non-zero when one or more targets are outdated: a shipped file that is missing from the target, or differs from it, makes the target
outdated. A target with no SKILL.md isnot installed, whatever else is under it.updateRefreshes installed copies in place: every shipped file that is missing or differs is rewritten, the ones that match are left untouched, and so is anything in the target that is not shipped (a reference file a later release dropped, say).
currentmeans every file already matched.showPrints the bundled SKILL.md to standard output. With
--jsonthe same content is emitted as a JSON object under thecontentkey instead of raw Markdown.
SEE ALSO
karr, App::karr, App::karr::Cmd::Init, App::karr::Cmd::Context, App::karr::Cmd::Config
SUPPORT
Issues
Please report bugs and feature requests on GitHub at https://github.com/Getty/karr/issues.
IRC
Join #langertha on irc.perl.org or message Getty directly.
CONTRIBUTING
Contributions are welcome! Please fork the repository and submit a pull request.
AUTHOR
Torsten Raudssus <getty@cpan.org>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2026 by Torsten Raudssus <torsten@raudssus.de> https://raudssus.de/.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)