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
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.
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:
{"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:
The
/pluginand/pluginsaliases 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/skillsis a management UI in TUI but a different listing/control surface in ACP.Guidelines precedence is materially important: project
.junie/AGENTS.mdwins; 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.
/mcpcan 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
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.