Skip to content

fix(cli): kilo local-path install leaves plugin rules inert #1081

Open

Description

@BlandineRdl

Description

aidd plugin install <local plugin path> --tool kilo copies every plugin Rule verbatim into .kilo/rules/<plugin>/<name>.md, including path-scoped Rules with their paths frontmatter, and adds no instructions entry. Kilo never loads Rules placed there, so every Rule installed this way is inert. If anyone lists them, the path-scoped ones apply to every file, because Kilo ignores paths.

The marketplace install (aidd plugin install <name>, aidd setup) and the flat archive (aidd translate --to kilo --as flat) already handle this, through the flat build strategy delivered with #868 (PR #1069):

  • all-files Rules land at top-level .kilo/rules/<plugin>-<group>-<name>.md;
  • path-scoped Rules are skipped with a warning naming the Rule and its paths (install), or fail the build (translate).

The local-path install goes through the Kilo profile's RulesCapability instead, which predates that work.

Affected file(s)

cli/src/contexts/tools/domain/profiles/kilo/profile.ts (rules: new RulesCapability(...))

Expected behaviour

A local-path install for Kilo matches the marketplace install:

  • each all-files Rule is written to top-level .kilo/rules/<plugin>-<group>-<name>.md, so Kilo loads it;
  • each path-scoped Rule is skipped with the same warning;
  • plugin remove deletes exactly what the install wrote.

Observed behaviour

With a plugin holding 1 all-files Rule and 7 path-scoped Rules (aidd-craft), the install exits 0 and prints no warning:

  • all 8 Rules are copied to .kilo/rules/aidd-craft/, with their paths frontmatter;
  • .kilo/kilo.jsonc has no instructions key;
  • none of the 8 Rules reaches the model.

Measured on Kilo 7.7.5, real runtime, with a fake OpenAI-compatible server capturing the prompt:

  • a top-level .kilo/rules/*.md reaches the model without an instructions entry;
  • a file in .kilo/rules/<subdir>/ reaches it only when listed in instructions;
  • a Rule with paths: ["**/*.ts"] reaches a session that touches no .ts file, so paths is ignored.

Repro, from a CLI build of next, with an isolated HOME:

  1. Stage a marketplace (.claude-plugin/marketplace.json plus plugins/<plugin>/) whose plugin has one all-files Rule and one paths Rule.
  2. In a scratch git project, run aidd setup --ai kilo --plugins none --no-default-marketplace --yes.
  3. Run aidd plugin install <path-to-plugin> --tool kilo --yes.
  4. Run find .kilo/rules and grep instructions .kilo/kilo.jsonc.

AI tool

Kilo Code

aidd-cli version

5.5.0 (next, plus PR #1069)

OS

macOS 26.6.2

Additional context

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions