Skip to content

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 26 Jun 01:48

v0.9.0

Released: June 26, 2026 · Download


✨ New features

idx read --compact

idx read gains a --compact flag that suppresses the decorative path header and
outputs raw file content only. This is the recommended mode for agent pipelines and
shell redirects where the header would pollute structured output.

# Without --compact (default): prints a styled header before the content
idx read internal/app/cli/read_command.go

# With --compact: raw content only — ideal for agents
idx read --compact internal/app/cli/read_command.go
idx read --compact main.go --start 10 --end 50

The SKILL.md skill for Claude Code was updated to always use --compact as the
recommended mode.

Project-level enforcement for idx skills install claude

When idx skills install claude is run inside a git repository, it now also
configures the project's .claude/settings.json with two enforcement hooks. No
manual configuration is required — running the install command once is sufficient.

PreToolCall hook (~/.claude/idx-block.sh) — intercepts every Bash call
before execution. If the first command in the pipeline is grep, rg, ag, cat,
head, tail, or similar shell tools targeting repository files, the call is blocked
(exit 2) and Claude receives feedback redirecting it to idx search or idx read.

UserPromptSubmit hook (~/.claude/idx-context-hook.sh) — fires before every
Claude turn and injects the idx enforcement rules as additional context. This ensures
the rules remain active even when the skill file has scrolled out of the context
window.

{
  "hooks": {
    "PreToolCall": [
      {"matcher": "Bash", "hooks": [{"type": "command", "command": "~/.claude/idx-block.sh"}]}
    ],
    "UserPromptSubmit": [
      {"hooks": [{"type": "command", "command": "~/.claude/idx-context-hook.sh"}]}
    ]
  }
}

Hook commands use literal ~ so the file is portable and can be versioned. CLAUDE.md
is never modified. All operations are idempotent.

Skill asset drift detection (make skill-lint)

A new skill-lint Makefile target validates that every flag and subcommand referenced
in the skill asset files (SKILL.md, idx-commands.md) exists in the actual CLI
binary. The check runs as part of CI and fails immediately if the skill docs drift from
the live CLI.

make skill-lint
# ✓  all subcommands validated
# ✓  all idx search flags validated
# ✓  all idx read flags validated
# ✅  Skill assets are in sync with the CLI.

Skill renamed from idx-search to idx

The skill installed by idx skills install <editor> is now named idx (was
idx-search). The installation paths change accordingly:

Editor Old path New path
claude ~/.claude/skills/idx-search/ ~/.claude/skills/idx/
cursor ~/.cursor/skills/idx-search/ ~/.cursor/skills/idx/
copilot ~/.copilot/skills/idx-search/ ~/.copilot/skills/idx/

🏗️ Architecture

  • ADR 0023 — Skills project-level enforcement via PreToolCall + UserPromptSubmit hooks registered in project .claude/settings.json; CLAUDE.md intentionally not modified; make skill-lint CI drift detection.
  • The Installer port signature changed from Install(editor string) to Install(editor, projectRoot string). Empty projectRoot preserves existing behaviour for non-Claude editors and callers without a git root.
  • Hook scripts are embedded in the binary under assets/idx/claude-project/ and excluded from the skill file copy; they are installed separately to ~/.claude/.