The Kit Installer is a CLI that discovers, validates, and installs AI agent kits into supported harnesses (Claude Code, Codex, Gemini CLI, GitHub Copilot, OpenCode). It supports local or remote kit repositories, manifest-driven installs, and scoped installation (global or project).
Quick Start
``bash
Interactive install (prompts for scope + selection)
--global): user-level installs (e.g., ~/.claude/), available across projects. - Project (--project): repo-level installs (e.g., .claude/), scoped to the current project.
Scope limitations: Some harnesses limit which primitives are supported at project scope. For example, Codex commands and MCP are global-only, and GitHub Copilot hooks are project-only.
Hook programs are stored in the kit hook store: - Global scope:
~/.agents/hooks/ - Project scope: .agents/hooks/
Harness configs reference these hook program paths.
Kits Manifest + Lock
Manifest-driven installs use
kits.json to declare intent and kits-lock.json to record resolved versions.
The lockfile is the source of truth when its hash matches the manifest. It also records shared instance registries (
mcpInstances, hookInstances) plus input schema hashes used to detect configuration changes during upgrades.
If an upgraded MCP server or hook program changes its input schema (MCP: env + headers, hooks: env + args), the upgrade flow prompts to reconfigure those inputs. Non-interactive upgrades fail when new required inputs are introduced without defaults.
Backups
The installer creates backups before modifying files:
- Config backups are stored adjacent to harness config files using a
.backup suffix. - File-based primitive backups (upgrade) are stored in the scope backup store so harnesses never ingest them. - Global backup store: ~/.agents/backups///.backup- - Project backup store: .agents/backups///.backup- - Backups are preserved until you remove them manually.
- Kit repositories can be single-kit or multi-kit with registries. - Primitives may be shared or inline; versioned shared primitives live under
primitives/. - Tool templates ({{tool:...}}) and model templates ({{model:...}}) are resolved by adapters. Concrete files include version-pinned $schema and schemaVersion fields for validation; adapters strip these fields during installation.