Skip to content

Host support: JetBrains Junie — extension marketplace, skills, guidelines, MCP and gated hook profiles #710

Description

@ScriptedAlchemy

Scope / research status

P2 feature expansion. Research date 2026-09-06; Agent Bundle baseline 5fc8de37c9695b816d55bdcf18a6bcb1dfee69f5. Read current JetBrains/Junie documentation and first-party extension source; no native installation or authenticated execution was run.

Junie is no longer accurately described as only a manually configured AGENTS.md reader. Its CLI supports extension marketplaces, packaged skills/MCP/agents/commands/guidelines/hooks. IDE integrations and ACP still require separate capability checks. This is one Junie-family issue, not a request for a custom IntelliJ Platform plugin.

Primary specifications and examples

Pin host version/channel and parser revision. Do not combine an old IDE limitation, the new CLI guide, and a beta hook API into one unsupported universal profile.

Native extension and marketplace

Native marketplaces use .junie-extension/marketplace.json; Claude-compatible marketplace manifests are also accepted. Extensions are downloaded into a user cache and enabled by project/user reference files. Installation is available in-session; removing a reference need not delete the shared cache.

The first-party repository gives this package structure:

composite-root/
  extension.json
  skills/review/SKILL.md
  guidelines/project.md
  mcp/.mcp.json
  hooks/hooks.json             # only for a supported installed hook profile
  hooks/before.junie.mjs
{"name":"example-plugin","description":"Project review capabilities"}

The marketplace can point at this extension directory; do not force a second physical copy of the shared compiled application. Reuse the existing Claude projection where its exact supported subset works, or emit the native extension marker and documented component paths. Verify lookup precedence when both are present.

Documented interactive management:

/extensions
/extensions marketplace add https://github.com/example/plugin
/extensions install example-plugin

The /plugin and /plugins aliases are native UI aliases, not proof of equivalent standalone shell subcommands. The UI supports local directories, Git repositories and direct marketplace.json URLs. Project references live in .junie/extensions.json; user references and cache live under ~/.junie/extensions/, with an explicit override available. Use native identifiers and preserve cached data used by other projects.

Skills and persistent guidance

Skills are found under project/user .junie/skills, trusted .agents/skills, installed extensions and configured extra locations. Project skills can override user names, and disabled state persists. Preserve explicit names and descriptions instead of depending on fallback description extraction. Native /skills is a management UI in TUI but a different listing/control surface in ACP.

Guidelines precedence is materially important: project .junie/AGENTS.md wins; otherwise root AGENTS.md is combined with Junie playbook/rules; legacy guidelines are fallback. Do not create a new highest-precedence file that hides existing authored guidance. Global and project content may both apply. Test required and forbidden cross-host discovery before allowing the composite combination.

MCP configuration

Independent project MCP configuration is .junie/mcp/mcp.json, with user equivalent under ~/.junie. Installed extensions can carry their own server definitions. Avoid registering the same canonical server twice.

{"mcpServers":{"example":{"command":"node","args":["/absolute/installed-plugin/mcp/example.mjs"],"env":{}}}}

The example is an operator setting, not a published absolute build path. Use a proven extension-root token/binding for packaged content and native secrets/OAuth. /mcp can configure and authorize in TUI, but ACP only lists local/client-provided servers; do not expect an interactive installation wizard to work headlessly.

Hook capability boundary

The hook guide is Early Access. Installed extension hooks use hooks/hooks.json, and ${JUNIE_EXTENSION_ROOT}/${CLAUDE_PLUGIN_ROOT} resolve to the installed extension. Default repository-local hook config is ignored unless explicitly selected; never enable it globally as a workaround.

Map exact event semantics. A synchronous PreToolUse hook can adjust input or deny; asynchronous hooks cannot block. PermissionRequest is not observational: an apparently harmless successful callback can authorize an action. Do not register a no-op observer on that event. Session and Stop effects differ, and TUI/batch/ACP firing coverage is not uniform. Pin and test these differences; shared field names do not establish full Claude parity.

Acceptance and implementation

  • Pin CLI/IDE/ACP profiles and the Early Access hook requirement; unsupported combinations yield clear diagnostics.
  • Native and Claude-compatible marketplace/extension discovery is deterministic with one canonical application identity.
  • Static skills/guidelines install with no synthetic MCP/Flight/state process.
  • Test default/custom skill roots, duplicate names, disabled state and guideline precedence without overwriting user files.
  • Execute one generated MCP operation from an installed relocated source-free package, with correct schema/result/cancellation and native authorization.
  • Hook before-tool denial prevents a sentinel action; async/observer/permission-request semantics never widen authority accidentally.
  • Verify exact root-token expansion, quoting, timeout and unsupported-client behavior.
  • Project/user enablement and shared cache survive update/removal without deleting another installation's content or state.
  • Add Composite conformance: test cross-host auto-discovery and precedence, not only file collisions #651 composite and Small-plugin acceptance: skills and plain hooks without an unnecessary MCP/RSC runtime or empty Workbench #652 small-plugin acceptance, plus a real successful native run distinct from listed resources or emitted requests.
  • Document setup in English/Chinese with versioned source provenance.

Use existing adapters, content lowering, canonical manifests/executable records and receipts. No IDE extension authoring, authentication provisioning, Brave-mode enablement, new agent orchestration, automatic cache purge or blanket removal of AB4106.

Activity

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions