{"id":"f0ac0195-2f8b-46b6-b0b4-fa12a09a16de","slug":"kiro-settings-manager","kind":"skill","name":"Kiro-Settings-Manager","summary":"Krio Steering doc","owner":"staneslevski","repoUrl":"https://github.com/staneslevski/Kiro-Settings-Manager","license":"Apache-2.0","licenseTier":"permissive","trust":"community","stars":5,"match":null,"fewStars":false,"format":"skill","createdAt":"2026-03-19T00:55:19.000Z","addedAt":"2026-10-21T22:46:09.264Z","logoUrl":"https://avatars.githubusercontent.com/u/15650428?u=872138564cc1ad4cdc51f1cbb6306f158c0ccaa8&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["files-documents"],"tags":[],"runtime":"python","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-25T22:34:15.046Z","sample":false,"url":"https://conduits.dev/tools/kiro-settings-manager","language":"Python","transports":["stdio"],"install":{"pypi":"kiro-settings-manager"},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# Kiro Settings Manager (`ksm`)\n\nA CLI tool for managing [Kiro IDE](https://kiro.dev) configuration bundles. Install, remove, sync, and organise bundles of skills, steering files, hooks, and agents across workspace and global scopes.\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Concepts](#concepts)\n- [Quick Start](#quick-start)\n- [Command Reference](#command-reference)\n- [Usage](#usage)\n  - [ksm add](#ksm-add)\n  - [ksm list](#ksm-list)\n  - [ksm remove](#ksm-remove)\n  - [ksm sync](#ksm-sync)\n  - [ksm init](#ksm-init)\n  - [ksm info](#ksm-info)\n  - [ksm search](#ksm-search)\n  - [ksm registry](#ksm-registry)\n  - [ksm completions](#ksm-completions)\n  - [ksm ide2cli](#ksm-ide2cli)\n- [Built-in Bundles](#built-in-bundles)\n- [Creating and Sharing Bundles](#creating-and-sharing-bundles)\n  - [Bundle Structure](#bundle-structure)\n  - [Create a Bundle Repository](#create-a-bundle-repository)\n  - [Register and Install](#register-and-install)\n  - [Share with Your Team](#share-with-your-team)\n  - [Keep Bundles in Sync](#keep-bundles-in-sync)\n- [Shell Completions](#shell-completions)\n- [Development](#development)\n- [Architecture](#architecture)\n- [License](#license)\n\n## Installation\n\nRequires Python 3.10 or later.\n\n### With pipx (recommended)\n\n[pipx](https://pipx.pypa.io/) installs `ksm` in an isolated environment so it won't affect your global Python setup:\n\n```bash\npipx install kiro-settings-manager\n```\n\n### With pip\n\n```bash\npip install kiro-settings-manager\n```\n\n### From GitHub\n\n```bash\npip install git+https://github.com/staneslevski/Kiro-Settings-Manager.git\n\n# Or a specific version\npip install git+https://github.com/staneslevski/Kiro-Settings-Manager.git@v0.2.0\n```\n\n### From source (for development)\n\n```bash\ngit clone https://github.com/staneslevski/Kiro-Settings-Manager.git\ncd Kiro-Settings-Manager\npython -m venv .venv\nsource .venv/bin/activate\npip install -e \".[dev]\"\n```\n\nSee [Development](#development) for the full dev workflow.\n\n## Concepts\n\n**Bundle** — A directory containing one or more of `skills/`, `steering/`, `hooks/`, and `agents/`. Each bundle packages related Kiro configuration that you can install as a unit.\n\n**Registry** — A source of bundles. `ksm` ships with a built-in default registry. You can register additional git repositories as registries to share bundles across teams.\n\n**Scope** — Where bundles get installed. *Local* scope installs into the current workspace's `.kiro/` directory. *Global* scope installs into `~/.kiro/`, making bundles available across all workspaces. Local is the default.\n\n**Manifest** — A JSON file (`~/.kiro/ksm/manifest.json`) that tracks every installed bundle, its scope, source registry, installed files, and timestamps.\n\n## Quick Start\n\nBundles package Kiro skills, steering rules, hooks, and agents into installable units. Here's the typical workflow:\n\n```bash\n# Initialise .kiro/ in your project\nksm init\n\n# Browse available bundles interactively\nksm add -i\n\n# Install a bundle globally (available in all workspaces)\nksm add python_dev -g\n\n# Install a single skill from a bundle\nksm add git_and_github.skills.github-pr -g\n\n# List what's installed\nksm list\n\n# Sync all installed bundles to pick up changes\nksm sync --all --yes\n\n# Remove a bundle\nksm remove python_dev -g\n\n# Check version\nksm --version\n```\n\n## Command Reference\n\n| Command | Description |\n|---------|-------------|\n| `ksm add <bundle>` | Install a bundle or specific item |\n| `ksm list` | List installed bundles (alias: `ls`) |\n| `ksm remove <bundle>` | Remove an installed bundle (alias: `rm`) |\n| `ksm sync` | Update bundles from their source registries |\n| `ksm init` | Create `.kiro/` in the current directory |\n| `ksm info <bundle>` | Show bundle metadata and install status |\n| `ksm search <query>` | Find bundles by name across all registries |\n| `ksm registry add\\|list\\|remove\\|inspect` | Manage bundle registries |\n| `ksm completions <shell>` | Generate shell completion scripts |\n| `ksm ide2cli` | Convert IDE-format agent and hook files to CLI JSON |\n| `ksm --version` | Show version |\n\n## Usage\n\n### ksm add\n\nInstall a bundle or a specific item from a bundle.\n\n```bash\n# Install locally (into .kiro/ — this is the default)\nksm add python_dev\n\n# Install globally (into ~/.kiro/)\nksm add python_dev -g\n\n# Interactive selector — browse and pick\nksm add -i\n\n# Dot notation — install one specific item\nksm add git_and_github.skills.github-pr -g\n\n# Install only certain subdirectories (comma-separated)\nksm add project_foundations --only steering -g\nksm add aws --only skills,steering\n\n# Install from any git URL (one-off, source is not registered)\nksm add my-bundle --from https://github.com/org/repo.git -g\n```\n\n| Flag | Description |\n|------|-------------|\n| `-l`, `--local` | Install into workspace `.kiro/` (default) |\n| `-g`, `--global` | Install into `~/.kiro/` |\n| `-i`, `--interactive` | Launch the interactive bundle selector |\n| `--only <types>` | Comma-separated filter: `skills`, `steering`, `hooks`, `agents` |\n| `--from <url>` | Install from a git URL without registering it |\n\nThe `--from` flag clones the repository temporarily, copies the bundle files, and removes the clone. The installed files are tracked in the manifest, but the source is not saved as a registry. To permanently register a source, use `ksm registry add`.\n\nDot notation (`bundle.subdir.item`) and `--only` are mutually exclusive.\n\n### ksm list\n\nList all installed bundles. Output is grouped by scope — local bundles first, then global. Each entry shows the bundle name, source registry, and a relative timestamp.\n\nAlias: `ksm ls`\n\n```bash\nksm list                # List all installed bundles\nksm list -v             # Include installed file paths\nksm list --scope local  # Show only workspace-level bundles\nksm list --scope global # Show only user-level bundles\nksm list --format json  # Machine-readable JSON (pipe to jq, etc.)\n```\n\nExample output:\n\n```\nLocal bundles:\n  git_and_github  (default)  2 days ago\n\nGlobal bundles:\n  python_dev      (default)  5 minutes ago\n  aws             (default)  1 week ago\n```\n\nWith `-v`, installed file paths appear under each bundle:\n\n```\nLocal bundles:\n  git_and_github  (default)  2 days ago\n    steering/git-branching.md\n    skills/github-pr/SKILL.md\n```\n\n### ksm remove\n\nRemove an installed bundle and delete its files.\n\nAlias: `ksm rm`\n\n```bash\nksm remove python_dev      # Remove a local bundle\nksm remove python_dev -g   # Remove a global bundle\nksm remove -i              # Interactive removal selector\n```\n\n| Flag | Description |\n|------|-------------|\n| `-l`, `--local` | Remove from workspace `.kiro/` |\n| `-g`, `--global` | Remove from `~/.kiro/` |\n| `-i`, `--interactive` | Launch the interactive removal selector |\n\n### ksm sync\n\nRe-install bundles from their source registries to pick up changes. For git-based registries, `sync` pulls the latest commits before copying.\n\n```bash\nksm sync python_dev    # Sync specific bundles\nksm sync --all         # Sync everything\nksm sync --all --yes   # Skip the confirmation prompt\n```\n\nSync respects the original install scope — a bundle installed globally will be synced globally.\n\n### ksm init\n\nCreate the `.kiro/` directory in the current workspace. If running in an interactive terminal, `ksm init` also launches the bundle selector so you can install bundles straight away.\n\n```bash\nksm init\n```\n\n```\n✓ Initialised .kiro/ in current directory\n  Run 'ksm add' to install your first bundle.\n```\n\n### ksm info\n\nShow metadata for a bundle: its registry, contents breakdown, and whether it's currently installed.\n\n```bash\nksm info python_dev\n```\n\n```\npython_dev\n  Registry   default\n  Contents   agents/ 2 items · steering/ 2 items\n  Installed  global\n```\n\nIf the bundle doesn't exist, `ksm` tells you what went wrong and what to do:\n\n```\nerror: Bundle 'nonexistent' not found.\n  Searched: default\n  Run `ksm search <query>` to find available bundles.\n```\n\n### ksm search\n\nCase-insensitive name search across all registered registries.\n\n```bash\nksm search python\n```\n\n```\n  python_dev  default  agents, steering\n```\n\n### ksm registry\n\nManage bundle registries. The `registry` command has four subcommands:\n\n```bash\n# Add a git repository as a registry\nksm registry add https://github.com/org/shared-bundles.git\n\n# Give it a custom name\nksm registry add https://github.com/org/shared-bundles.git --name team\n\n# Force re-clone a cached registry\nksm registry add https://github.com/org/shared-bundles.git -f\n\n# List all registered registries\nksm registry list\n\n# Inspect a registry — see all its bundles\nksm registry inspect team\n\n# Remove a user-added registry\nksm registry remove team\n```\n\nAliases: `ksm registry ls`, `ksm registry rm`\n\nThe legacy `ksm add-registry` command still works but `ksm registry add` is preferred.\n\n### ksm completions\n\nGenerate shell completion scripts for tab-completion of commands and arguments.\n\n```bash\nksm completions bash   # Bash\nksm completions zsh    # Zsh\nksm completions fish   # Fish\n```\n\nSee [Shell Completions](#shell-completions) for setup instructions.\n\n### ksm ide2cli\n\nConvert Kiro IDE-format agent markdown files and hook files into CLI-compatible JSON. The IDE files remain the source of truth; the CLI JSON files are derived output. Skills and steering use identical formats on both platforms and need no conversion.\n\n```bash\nksm ide2cli\n```\n\nThe command scans both the workspace `.kiro/` and global `~/.kiro/` directories in a single pass:\n\n- **Agents** — `.md` files in `agents/` with YAML frontmatter (`name`, `description`, `tools`) are converted to `.json` files in the same directory. IDE tool names are mapped automatically (e.g. `read` → `fs_read`, `grep`, `glob`, `code`).\n- **Hooks** — `.kiro.hook` files in `hooks/` are converted to a grouped `_cli_hooks.json` file. Event types are mapped (e.g. `promptSubmit` → `userPromptSubmit`). Hooks with `enabled: false` are skipped silently. Hook types without a CLI equivalent (`askAgent`, `fileEdited`, etc.) are skipped with a warning.\n\nThe command is idempotent — running it multiple times on unchanged input produces identical output. A summary of converted, skipped, and failed files is printed to stderr.\n\n## Built-in Bundles\n\nThese bundles ship with `ksm` in the default registry:\n\n| Bundle | Contents | Description |\n|--------|----------|-------------|\n| `aws` | skills, steering | AWS-focused skills and steering rules (IAM, MCP) |\n| `cli-tools` | agents | CLI engineering agent |\n| `example_conf_bund` | agents, hooks, skills, steering | Example bundle demonstrating all subdirectory types |\n| `git_and_github` | agents, skills, steering | Git branching rules, GitHub PR skill, README writer agent |\n| `kiro_power_usage` | agents, skills | Task builder agent, skill-creating skill |\n| `project_foundations` | skills, steering | Project structure and scaffolding guidance |\n| `python_dev` | agents, steering | Python development standards, hypothesis testing agent |\n| `ux-design` | agents | UX designer agent |\n\nBrowse them interactively with `ksm add -i`, or inspect one with `ksm info <bundle>`.\n\n## Creating and Sharing Bundles\n\nYou can create your own bundles and share them with your team through a git repository.\n\n### Bundle Structure\n\nA bundle is a directory with at least one of these subdirectories:\n\n```\nmy-bundle/\n├── skills/       # Kiro skill definitions (SKILL.md files)\n├── steering/     # Steering markdown files (.md)\n├── hooks/        # Hook definitions (.json)\n└── agents/       # Custom agent definitions\n```\n\n| Type | File format | Purpose |\n|------|-------------|---------|\n| `skills/` | `SKILL.md` per skill | Define agent capabilities and workflows |\n| `steering/` | `.md` files | Provide rules and context to guide agent behaviour |\n| `hooks/` | `.json` files | Automate agent actions on IDE events |\n| `agents/` | Agent definitions | Custom specialised agents |\n\n### Create a Bundle Repository\n\n1. Create a new GitHub repository to hold your bundles:\n\n```bash\nmkdir my-kiro-bundles\ncd my-kiro-bundles\ngit init\n```\n\n2. Add one or more bundle directories. Each top-level directory that contains `skills/`, `steering/`, `hooks/`, or `agents/` is automatically recognised as a bundle:\n\n```\nmy-kiro-bundles/\n├── team-standards/\n│   ├── steering/\n│   │   ├── code-review.md\n│   │   └── testing-policy.md\n│   └── hooks/\n│       └── lint-on-save.json\n├── backend-tools/\n│   ├── skills/\n│   │   └── api-design/\n│   │       └── SKILL.md\n│   └── agents/\n│       └── backend-reviewer.md\n└── README.md\n```\n\n3. Commit and push:\n\n```bash\ngit add .\ngit commit -m \"Initial bundles\"\ngit remote add origin https://github.com/your-org/my-kiro-bundles.git\ngit push -u origin main\n```\n\n### Register and Install\n\nRegister your repository as a bundle source, then install bundles from it:\n\n```bash\n# Register the repository\nksm registry add https://github.com/your-org/my-kiro-bundles.git\n\n# Verify it was added\nksm registry list\n\n# See what bundles are available\nksm registry inspect my-kiro-bundles\n\n# Install a bundle globally\nksm add team-standards -g\n\n# Or install just the steering files\nksm add team-standards --only steering -g\n```\n\nYou can also do a one-off install without registering the repository:\n\n```bash\nksm add team-standards --from https://github.com/your-org/my-kiro-bundles.git -g\n```\n\n### Share with Your Team\n\nOnce your repository is on GitHub, teammates register it with a single command:\n\n```bash\nksm registry add https://github.com/your-org/my-kiro-bundles.git\nksm add team-standards -g\n```\n\nFor private repositories, ensure team members have git access (SSH keys or HTTPS credentials).\n\n### Keep Bundles in Sync\n\nWhen you push updates to your bundle repository, team members pull the latest with:\n\n```bash\nksm sync team-standards          # Sync a specific bundle\nksm sync --all --yes             # Sync everything at once\n```\n\n`sync` pulls the latest commits from the source registry before re-copying the bundle files.\n\n## Shell Completions\n\nEnable tab-completion for `ksm` commands and arguments:\n\n```bash\n# Bash — add to ~/.bashrc\neval \"$(ksm completions bash)\"\n\n# Zsh — add to ~/.zshrc\neval \"$(ksm completions zsh)\"\n\n# Fish\nksm completions fish > ~/.config/fish/completions/ksm.fish\n```\n\n## Development\n\n```bash\ngit clone https://github.com/staneslevski/Kiro-Settings-Manager.git\ncd Kiro-Settings-Manager\npython -m venv .venv\nsource .venv/bin/activate\npip install -e \".[dev]\"\n```\n\nAll commands below assume the virtual environment is activated (`source .venv/bin/activate`):\n\n```bash\npytest                              # Run tests\npytest --cov=ksm tests/             # Run tests with coverage\nblack src/ tests/                   # Format code\nflake8 src/ tests/                  # Lint\nmypy src/ tests/                    # Type check\nHYPOTHESIS_PROFILE=ci pytest        # Thorough property tests (CI mode)\n```\n\n### Utility Scripts\n\n| Script | Purpose |\n|--------|---------|\n| `scripts/sync-to-kiro-settings.sh` | Merges `settings/allowed_commands.txt` into Kiro's `settings.json` |\n| `scripts/update-allowed-commands.sh` | Extracts trusted commands from Kiro's `settings.json` |\n\n## Architecture\n\n```\nsrc/ksm/\n├── cli.py              # Argument parsing and command dispatch\n├── commands/\n│   ├── add.py          # ksm add\n│   ├── add_registry.py # ksm add-registry (legacy)\n│   ├── completions.py  # ksm completions\n│   ├── ide2cli.py      # ksm ide2cli\n│   ├── info.py         # ksm info\n│   ├── init.py         # ksm init\n│   ├── ls.py           # ksm list / ls\n│   ├── registry_add.py # ksm registry add\n│   ├── registry_inspect.py # ksm registry inspect\n│   ├── registry_ls.py  # ksm registry list\n│   ├── registry_rm.py  # ksm registry remove\n│   ├── rm.py           # ksm remove / rm\n│   ├── search.py       # ksm search\n│   └── sync.py         # ksm sync\n├── converters/\n│   ├── tool_map.py          # IDE → CLI tool name mapping\n│   ├── agent_converter.py   # Agent .md → .json conversion\n│   └── hook_converter.py    # Hook .kiro.hook → CLI hook dict\n├── scanner.py          # Discovers valid bundles in a registry directory\n├── resolver.py         # Finds a bundle by name across all registries\n├── installer.py        # Copies bundle files to target .kiro/ directory\n├── copier.py           # Low-level file/tree copy operations\n├── remover.py          # Deletes installed bundle files\n├── manifest.py         # Tracks installed bundles (manifest.json)\n├── registry.py         # Manages registered bundle sources (registries.json)\n├── persistence.py      # JSON I/O and path constants\n├── selector.py         # Interactive terminal bundle selector\n├── dot_notation.py     # Parses bundle.subdir.item selectors\n├── git_ops.py          # Git clone/pull operations\n└── errors.py           # Custom exception types\n```\n\nState is stored in `~/.kiro/ksm/`:\n- `manifest.json` — records every installed bundle, its scope, source, and file list\n- `registries.json` — lists all registered bundle sources (default + any added git registries)\n- `cache/` — cloned git registries\n\n## License\n\nApache 2.0 — see [LICENSE](LICENSE) for details.\n\nSee [Shell Completions](#shell-completions) for setup instructions.\n\n## Built-in Bundles\n\nThese bundles ship with `ksm` in the default registry:\n\n| Bundle | Contents | Description |\n|--------|----------|-------------|\n| `aws` | skills, steering | AWS-focused skills and steering rules (IAM, MCP) |\n| `cli-tools` | agents | CLI engineering agent |\n| `example_conf_bund` | agents, hooks, skills, steering | Example bundle demonstrating all subdirectory types |\n| `git_and_github` | agents, skills, steering | Git branching rules, GitHub PR skill, README writer agent |\n| `kiro_power_usage` | agents, skills | Task builder agent, skill-creating skill |\n| `project_foundations` | skills, steering | Project structure and scaffolding guidance |\n| `python_dev` | agents, steering | Python development standards, hypothesis testing agent |\n| `ux-design` | agents | UX designer agent |\n\nBrowse them interactively with `ksm add -i`, or inspect one with `ksm info <bundle>`.\n\n## Creating and Sharing Bundles\n\nYou can create your own bundles and share them with your team through a git repository.\n\n### Bundle Structure\n\nA bundle is a directory with at least one of these subdirectories:\n\n```\nmy-bundle/\n├── skills/       # Kiro skill definitions (SKILL.md files)\n├── steering/     # Steering markdown files (.md)\n├── hooks/        # Hook definitions (.json)\n└── agents/       # Custom agent definitions\n```\n\n| Type | File format | Purpose |\n|------|-------------|---------|\n| `skills/` | `SKILL.md` per skill | Define agent capabilities and workflows |\n| `steering/` | `.md` files | Provide rules and context to guide agent behaviour |\n| `hooks/` | `.json` files | Automate agent actions on IDE events |\n| `agents/` | Agent definitions | Custom specialised agents |\n\n### Create a Bundle Repository\n\n1. Create a new GitHub repository to hold your bundles:\n\n```bash\nmkdir my-kiro-bundles\ncd my-kiro-bundles\ngit init\n```\n\n2. Add one or more bundle directories. Each top-level directory that contains `skills/`, `steering/`, `hooks/`, or `agents/` is automatically recognised as a bundle:\n\n```\nmy-kiro-bundles/\n├── team-standards/\n│   ├── steering/\n│   │   ├── code-review.md\n│   │   └── testing-policy.md\n│   └── hooks/\n│       └── lint-on-save.json\n├── backend-tools/\n│   ├── skills/\n│   │   └── api-design/\n│   │       └── SKILL.md\n│   └── agents/\n│       └── backend-reviewer.md\n└── README.md\n```\n\n3. Commit and push:\n\n```bash\ngit add .\ngit commit -m \"Initial bundles\"\ngit remote add origin https://github.com/your-org/my-kiro-bundles.git\ngit push -u origin main\n```\n\n### Register and Install\n\nRegister your repository as a bundle source, then install bundles from it:\n\n```bash\n# Register the repository\nksm registry add https://github.com/your-org/my-kiro-bundles.git\n\n# Verify it was added\nksm registry list\n\n# See what bundles are available\nksm registry inspect my-kiro-bundles\n\n# Install a bundle globally\nksm add team-standards -g\n\n# Or install just the steering files\nksm add team-standards --only steering -g\n```\n\nYou can also do a one-off install without registering the repository:\n\n```bash\nksm add team-standards --from https://github.com/your-org/my-kiro-bundles.git -g\n```\n\n### Share with Your Team\n\nOnce your repository is on GitHub, teammates register it with a single command:\n\n```bash\nksm registry add https://github.com/your-org/my-kiro-bundles.git\nksm add team-standards -g\n```\n\nFor private repositories, ensure team members have git access (SSH keys or HTTPS credentials).\n\n### Keep Bundles in Sync\n\nWhen you push updates to your bundle repository, team members pull the latest with:\n\n```bash\nksm sync team-standards          # Sync a specific bundle\nksm sync --all --yes             # Sync everything at once\n```\n\n`sync` pulls the latest commits from the source registry before re-copying the bundle files.\n\n## Shell Completions\n\nEnable tab-completion for `ksm` commands and arguments:\n\n```bash\n# Bash — add to ~/.bashrc\neval \"$(ksm completions bash)\"\n\n# Zsh — add to ~/.zshrc\neval \"$(ksm completions zsh)\"\n\n# Fish\nksm completions fish > ~/.config/fish/completions/ksm.fish\n```\n\n## Development\n\n```bash\ngit clone https://github.com/staneslevski/Kiro-Settings-Manager.git\ncd Kiro-Settings-Manager\npython -m venv .venv\nsource .venv/bin/activate\npip install -e \".[dev]\"\n```\n\nAll commands below assume the virtual environment is activated (`source .venv/bin/activate`):\n\n```bash\npytest                              # Run tests\npytest --cov=ksm tests/             # Run tests with coverage\nblack src/ tests/                   # Format code\nflake8 src/ tests/                  # Lint\nmypy src/ tests/                    # Type check\nHYPOTHESIS_PROFILE=ci pytest        # Thorough property tests (CI mode)\n```\n\n### Utility Scripts\n\n| Script | Purpose |\n|--------|---------|\n| `scripts/sync-to-kiro-settings.sh` | Merges `settings/allowed_commands.txt` into Kiro's `settings.json` |\n| `scripts/update-allowed-commands.sh` | Extracts trusted commands from Kiro's `settings.json` |\n\n## Architecture\n\n```\nsrc/ksm/\n├── cli.py              # Argument parsing and command dispatch\n├── commands/\n│   ├── add.py          # ksm add\n│   ├── add_registry.py # ksm add-registry (legacy)\n│   ├── completions.py  # ksm completions\n│   ├── ide2cli.py      # ksm ide2cli\n│   ├── info.py         # ksm info\n│   ├── init.py         # ksm init\n│   ├── ls.py           # ksm list / ls\n│   ├── registry_add.py # ksm registry add\n│   ├── registry_inspect.py # ksm registry inspect\n│   ├── registry_ls.py  # ksm registry list\n│   ├── registry_rm.py  # ksm registry remove\n│   ├── rm.py           # ksm remove / rm\n│   ├── search.py       # ksm search\n│   └── sync.py         # ksm sync\n├── converters/\n│   ├── tool_map.py          # IDE → CLI tool name mapping\n│   ├── agent_converter.py   # Agent .md → .json conversion\n│   └── hook_converter.py    # Hook .kiro.hook → CLI hook dict\n├── scanner.py          # Discovers valid bundles in a registry directory\n├── resolver.py         # Finds a bundle by name across all registries\n├── installer.py        # Copies bundle files to target .kiro/ directory\n├── copier.py           # Low-level file/tree copy operations\n├── remover.py          # Deletes installed bundle files\n├── manifest.py         # Tracks installed bundles (manifest.json)\n├── registry.py         # Manages registered bundle sources (registries.json)\n├── persistence.py      # JSON I/O and path constants\n├── selector.py         # Interactive terminal bundle selector\n├── dot_notation.py     # Parses bundle.subdir.item selectors\n├── git_ops.py          # Git clone/pull operations\n└── errors.py           # Custom exception types\n```\n\nState is stored in `~/.kiro/ksm/`:\n- `manifest.json` — records every installed bundle, its scope, source, and file list\n- `registries.json` — lists all registered bundle sources (default + any added git registries)\n- `cache/` — cloned git registries\n\n## License\n\nApache 2.0 — see [LICENSE](LICENSE) for details.\n"}