AgentKit
DocsKitsCLI ReferenceDesktop App

ak kit

ak kit install-path

Resolve the lexical user-level Claude Code plugin path for one kit without installing it.

Use ak kit install-path to inspect the path used by the user-scoped Claude Code plugin route. It calculates and validates a path; it does not install, download, or verify a kit.

Usage

ak kit install-path <kit-name>

Exactly one positional argument is required. There are no command-specific flags. Shared output flags are described in CLI conventions.

Know what the path represents

With no override, the result is:

PlatformResult for engineer
macOS/Linux$HOME/.claude/plugins/ak-engineer
Windows%USERPROFILE%\.claude\plugins\ak-engineer

The ak- prefix is added to the user-facing kit name.

This is specifically the user Claude Code plugin destination. It is not the path for:

  • a project-scoped Claude plugin;
  • Claude native delivery;
  • Codex or Cursor output;
  • AgentKit lifecycle metadata; or
  • a build/export directory.

Use the install command’s preview for those routes.

Override and validation behavior

If AGENTKIT_PLUGIN_DIR is set, it replaces the plugin root and must be an absolute path. The resolver:

  • rejects relative and drive-relative overrides;
  • rejects an override containing a .. path component;
  • rejects an existing override that is itself a symlink or junction;
  • rejects an existing root that is not a directory;
  • resolves existing ancestor links for validation; and
  • returns the cleaned lexical override plus ak-<kit-name>.

The root does not need to exist yet when it has a valid existing ancestor. The command only inspects the root or its ancestors; it creates no directory.

The command does not validate the argument against a registry kit ID or check that the kit exists. Pass the same canonical kit ID you would use with ak kit init; do not treat arbitrary input as a trusted path.

Network and disk effects

The command performs no network, authentication, entitlement, provider, cache, process-launch, stdin, or confirmation operation. It reads filesystem metadata needed to validate the plugin root and writes nothing.

Output modes

On an interactive color-capable TTY, human stdout is labeled:

engineer install path: /home/you/.claude/plugins/ak-engineer

In a pipe, CI, NO_COLOR, or --no-interactive mode, stdout is the raw path followed by one newline. That makes this safe for command substitution after a successful exit:

plugin_path="$(ak kit install-path engineer --no-interactive)"

--quiet suppresses human success output. --json takes precedence over --quiet and emits:

{
  "schema_version": 1,
  "kind": "kit.install_path",
  "data": {
    "kit": "engineer",
    "path": "/home/you/.claude/plugins/ak-engineer"
  }
}

In JSON mode, path-resolution errors use the shared JSON error envelope on stderr. Missing or extra positional arguments fail before the renderer is created and therefore do not receive that envelope. Flag-parse failures also remain on the CLI-wide plain error path.

Exit status

ExitMeaningSafe next step
0The path was resolved and rendered.Use it only for the user Claude plugin route.
1The argument count/name or plugin-root resolution failed.Supply one canonical kit ID and fix the home or override path.
2A flag could not be parsed.Correct the invocation.

The command has no preview/apply/force/backup/rollback cycle because it never mutates state.