Skip to main content

CLI tool for managing Kiro IDE configuration bundles

Project description

Kiro Settings Manager (ksm)

A CLI tool for managing Kiro IDE configuration bundles. ksm lets you install, remove, sync, and organise bundles of skills, steering files, hooks, and agents across local (workspace) and global (~/.kiro/) scopes.

Table of Contents

Features

  • Install configuration bundles locally (.kiro/) or globally (~/.kiro/)
  • Interactive terminal selector for browsing and choosing bundles
  • Dot-notation targeting to install a single item from a bundle (e.g. git_and_github.skills.github-pr)
  • Subdirectory filters to install only skills, steering, hooks, or agents
  • Registry system with a built-in default registry and support for adding external git registries
  • Ephemeral installs from any git URL via --from
  • Sync installed bundles to pull the latest changes from their source registries
  • Persistent manifest tracking what is installed, where, and when

Prerequisites

  • Python 3.10 or later

Installation

From PyPI (recommended)

pip install kiro-settings-manager

Once installed, the ksm command is available in your shell. If you prefer an isolated install that won't affect your global Python environment, use pipx:

pipx install kiro-settings-manager

From GitHub

# Latest from main
pip install git+https://github.com/staneslevski/Kiro-Settings-Manager.git

# Specific version tag
pip install git+https://github.com/staneslevski/Kiro-Settings-Manager.git@v0.1.0

# Specific branch
pip install git+https://github.com/staneslevski/Kiro-Settings-Manager.git@branch-name

From source (for development)

git clone https://github.com/staneslevski/Kiro-Settings-Manager.git
cd Kiro-Settings-Manager

python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

See the Development section for the full dev workflow.

Quick Start

# Browse available bundles interactively
ksm add --display

# Install a bundle globally
ksm add python_dev -g

# Install a single skill from a bundle
ksm add git_and_github.skills.github-pr -g

# List installed bundles
ksm ls

# Sync all installed bundles to latest
ksm sync --all --yes

# Remove a bundle
ksm rm python_dev -g

Usage

ksm add

Install a bundle or a specific item from a bundle.

# Install a full bundle locally (into .kiro/)
ksm add python_dev

# Install globally (into ~/.kiro/)
ksm add python_dev -g

# Interactive selector
ksm add --display

# Dot notation — install one item
ksm add git_and_github.skills.github-pr -g

# Install only steering files from a bundle
ksm add project_foundations --steering-only -g

# Install from an external git repo (ephemeral, not registered)
ksm add my-bundle --from https://github.com/org/repo.git -g

Subdirectory filter flags: --skills-only, --steering-only, --hooks-only, --agents-only. These are mutually exclusive with dot notation.

ksm ls

List all installed bundles tracked in the manifest (~/.kiro/ksm/manifest.json). Output is grouped by scope — local (workspace .kiro/) bundles first, then global (~/.kiro/) bundles. Each entry shows the bundle name, source registry, and a relative timestamp of the last install or sync.

# List all installed bundles
ksm ls

# Include the file paths installed by each bundle
ksm ls -v

# Show only workspace-level bundles
ksm ls --scope local

# Show only user-level bundles
ksm ls --scope global

# Machine-readable JSON output (pipe to jq, etc.)
ksm ls --format json

Example output:

Local bundles:
  git_and_github  (default)  2 days ago

Global bundles:
  python_dev      (default)  5 minutes ago
  aws             (default)  1 week ago

With -v (verbose), installed file paths appear under each bundle:

Local bundles:
  git_and_github  (default)  2 days ago
    steering/git-branching.md
    skills/github-pr/SKILL.md

If no bundles are installed, a message is printed to stderr and the command exits 0.

ksm sync

Re-install bundles from their source registries to pick up changes. For git-based registries, sync pulls the latest commits before copying.

# Sync specific bundles
ksm sync python_dev

# Sync everything
ksm sync --all

# Skip the confirmation prompt
ksm sync --all --yes

ksm rm

Remove an installed bundle and its files.

# Remove a local bundle
ksm rm python_dev

# Remove a global bundle
ksm rm python_dev -g

# Interactive removal selector
ksm rm --display

ksm add-registry

Register an external git repository as a bundle source. The repo is cloned into ~/.kiro/ksm/cache/ and must contain at least one valid config bundle.

ksm add-registry https://github.com/org/shared-bundles.git

After registering, bundles from that registry appear in ksm add --display and can be installed by name.

Config Bundles

A config bundle is a directory containing one or more of these subdirectories:

my-bundle/
├── skills/       # Kiro skill definitions (SKILL.md + scripts)
├── steering/     # Steering markdown files
├── hooks/        # Hook JSON files
└── agents/       # Custom agent definitions

A bundle is valid if it contains at least one of these four subdirectories.

Built-in Bundles

Bundle Contents Description
aws skills, steering AWS-focused skills and steering rules
example_conf_bund agents, hooks, skills, steering Example bundle demonstrating all subdirectory types
git_and_github agents, skills, steering Git branching rules, GitHub PR skill, README writer agent
kiro_skill_authoring skills Skill for authoring Kiro skills
project_foundations skills, steering Project structure and scaffolding guidance
python_dev steering Python development standards

Authoring a Bundle

  1. Create a directory under config_bundles/ with your bundle name.
  2. Add one or more subdirectories: skills/, steering/, hooks/, agents/.
  3. Populate them with the appropriate files (e.g. SKILL.md for skills, .md for steering, .json for hooks).
  4. The bundle is automatically discovered by ksm through the default registry.

Architecture

src/ksm/
├── cli.py              # Argument parsing and command dispatch
├── commands/
│   ├── add.py          # ksm add
│   ├── add_registry.py # ksm add-registry
│   ├── ls.py           # ksm ls
│   ├── rm.py           # ksm rm
│   └── sync.py         # ksm sync
├── scanner.py          # Discovers valid bundles in a registry directory
├── resolver.py         # Finds a bundle by name across all registries
├── installer.py        # Copies bundle files to target .kiro/ directory
├── copier.py           # Low-level file/tree copy operations
├── remover.py          # Deletes installed bundle files
├── manifest.py         # Tracks installed bundles (manifest.json)
├── registry.py         # Manages registered bundle sources (registries.json)
├── persistence.py      # JSON I/O and path constants
├── selector.py         # Interactive terminal bundle selector
├── dot_notation.py     # Parses bundle.subdir.item selectors
├── git_ops.py          # Git clone/pull operations
└── errors.py           # Custom exception types

State is stored in ~/.kiro/ksm/:

  • manifest.json — records every installed bundle, its scope, source, and file list
  • registries.json — lists all registered bundle sources (default + any added git registries)
  • cache/ — cloned git registries

Development

# Create venv and install
python -m venv .venv
source .venv/bin/activate && pip install -e ".[dev]"

# Run tests
source .venv/bin/activate && pytest

# Run tests with coverage
source .venv/bin/activate && pytest --cov=ksm tests/

# Format
source .venv/bin/activate && black src/ tests/

# Lint
source .venv/bin/activate && flake8 src/ tests/

# Type check
source .venv/bin/activate && mypy src/ tests/

# Run thorough property tests (CI mode)
source .venv/bin/activate && HYPOTHESIS_PROFILE=ci pytest

Utility Scripts

Script Purpose
scripts/install-steering-and-skills.sh Copies docs/steering/ and docs/skills/ to ~/.kiro/
scripts/sync-to-kiro-settings.sh Merges settings/allowed_commands.txt into Kiro's settings.json
scripts/update-allowed-commands.sh Extracts trusted commands from Kiro's settings.json into settings/allowed_commands.txt

License

Apache 2.0 — see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kiro_settings_manager-0.2.0.tar.gz (139.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kiro_settings_manager-0.2.0-py3-none-any.whl (54.1 kB view details)

Uploaded Python 3

File details

Details for the file kiro_settings_manager-0.2.0.tar.gz.

File metadata

  • Download URL: kiro_settings_manager-0.2.0.tar.gz
  • Upload date:
  • Size: 139.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for kiro_settings_manager-0.2.0.tar.gz
Algorithm Hash digest
SHA256 274e0018b90ee2dfd9ddc51138e70d0f6256e9f904f1f6942b1bba2fb0fc70ca
MD5 6461282d655d834813585a1fd44260fe
BLAKE2b-256 5c134978f09d419bf57f5cf0380cdd6b904e7cfa658ec56ff264a8755b5cec2e

See more details on using hashes here.

File details

Details for the file kiro_settings_manager-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for kiro_settings_manager-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fb7cf084911510f1c39ef460be6872040d34ca9842ed215e07601279056c88aa
MD5 d056d3deb654bbda3b62b21b84d789d8
BLAKE2b-256 11b02aaf87130d7b1dfe06abb3a75bb63d131e6da3e746504a04d9857c93fff8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page