Skip to content

IDE install targets

FieldValue
Slugide-targets
Statusimplemented
Last review2026-08-10

Summary

Registry of IdeId values and primary filesystem directories where skli deploys Skills, Rules, and Agents (project vs global). Consumed by skli install <ide> … to resolve target folders before copy/deploy.

User flows

Flow-01 — Parse multi-IDE argument

Persona: CLI skli.
Preconditions: <ide> string provided.

StepActionExpected resultError
1Parse CSVOrdered unique IdeId[]Empty / unknown id → error listing known ids

Flow-02 — Resolve install directories

StepActionExpected resultError
1For each IdeId × PackageKind × scopeAbsolute primary dirsKind unsupported for that IDE → omit from list

Data model

IdeId (primary install dirs)

Relative segments; project paths join {projectRoot}; global paths join ~ (os.homedir()).

IdeIdScoperuleskillagent
cursorproject.cursor/rules.cursor/skills.cursor/agents
cursorglobal.cursor/rules.cursor/skills.cursor/agents
claudeproject.claude/rules.claude/skills.claude/agents
claudeglobal.claude/rules.claude/skills.claude/agents
codexproject. (AGENTS.md at root).agents/skills
codexglobal.codex/rules.agents/skills
copilotproject.github/skills
copilotglobal.copilot/skills
windsurfproject.windsurf/rules.windsurf/skills
windsurfglobal.codeium/windsurf/skills

Cells marked — are unsupported for directory install in skli v0 (omitted from resolve).

Secondary/compat locations (e.g. .agents/skills for Cursor, .claude/skills for Copilot) are not primary targets.

CLI

Consumed by install:

<ide>    One or more IdeId, comma-separated (e.g. cursor or cursor,claude). No special "all" value.

Business rules

IdRule
BR-ide-targets-001Known IdeId: cursor, claude, codex, copilot, windsurf.
BR-ide-targets-002Multi-IDE = CSV only; trim; dedupe; preserve first-seen order. No all IdeId.
BR-ide-targets-003--global selects global layout; otherwise project layout under cwd/project root.
BR-ide-targets-004When resolving for a single PackageKind, unsupported IdeId×kind pairs are skipped.
BR-ide-targets-005Primary dirs only; no copy in this feature alone.
BR-ide-targets-006Reverse resolve: an install path under a primary layout maps to { ide, kind, id } (skill = directory basename; rule/agent = file basename without extension). Match across all IdeIds; prefer the most specific (longest) segment match. Used by cmd-update / cmd-restore / cmd-remove path form.

User scenarios

skli install cursor,claude skill owner/repo:skills/foo --debug resolves Cursor and Claude skill dirs, then installs.
skli update .cursor/skills/arcade-bootstrap reverse-resolves to cursor / skill / arcade-bootstrap.
skli link cursor owner/repo --all uses the same primary dirs for linked package copies.

Dependencies

Out of scope

  • File copy / format conversion between IDEs.
  • Secondary compat path mirrors.
  • Codex execpolicy semantics vs AGENTS.md content merge.

Acceptance criteria

  • [x] parseIdeArgument CSV + validation.
  • [x] resolveInstallDirs for all IdeId primary layouts.
  • [x] Spec table matches code registry.
  • [x] Reverse path → { ide, kind, id } for all IdeId layouts (update/restore/remove).

Terminology

See domain-glossary. Path details live here.

Implementation notes

src/lib/ide-targets.ts.

Released under the MIT License.