Summary
Extend the existing IntelliJ plugin to explicitly support JetBrains Rider and add a Junie AI assistant integration.
The current extensions/pycharm plugin uses com.intellij.modules.platform so it technically runs on Rider, but it is not branded, tested, or listed for Rider in the marketplace. Junie (JetBrains' AI coding agent) has no integration at all.
Scope
1. Rider support (extensions/pycharm → extensions/intellij rename or new module)
- Update
plugin.xml to declare explicit compatibility with Rider:
- Add
<depends>com.intellij.modules.rider</depends> as an optional dependency or declare the plugin as platform-level
- Update
<idea-version since-build="233"/> to cover current Rider builds
- Update plugin name/description to mention Rider
- Rename
extensions/pycharm/ → extensions/intellij/ (or keep as-is and add Rider to the supported products list)
- Update
.github/workflows/pycharm.yml → verify plugin against Rider build (add verifyPlugin with Rider IDE type)
- Update root
package.json scripts to reference the renamed extension if applicable
2. Junie integration
Junie exposes an extension point for AI context providers — plugins can register a JunieContextProvider that injects structured context into Junie's AI sessions.
Implement RetortJunieContextProvider:
- Reads the active workspace's
.agentkit/spec/teams.yaml, .claude/state/tasks/*.json, and AGENT_BACKLOG.md
- Returns a formatted context block describing:
- Active orchestration phase
- Current tasks (in-progress)
- Relevant teams for the open file (matched by scope globs)
- Registered via
com.intellij.junie.contextProvider extension point in plugin.xml
3. Junie slash command: /retort-ask
Register a Junie slash command that calls the state-watcher /api/ask endpoint:
- Command:
/retort-ask <query>
- Hits
http://localhost:<port>/api/ask?q=<query> (port from .retort-port or state-watcher discovery)
- Formats top 3
RouteResult entries as markdown for the Junie chat
Implementation Notes
- Junie SDK:
com.intellij.junie plugin dependency (optional — degrade gracefully if Junie not installed)
- State-watcher port discovery: read
.retort-port file written by the IntelliJ plugin when it starts the daemon
- Existing PyCharm functionality must not regress
- Gradle module: add
rider product type to verifyPlugin task in build.gradle.kts
Acceptance criteria
Related
🤖 Generated with Claude Code
Summary
Extend the existing IntelliJ plugin to explicitly support JetBrains Rider and add a Junie AI assistant integration.
The current
extensions/pycharmplugin usescom.intellij.modules.platformso it technically runs on Rider, but it is not branded, tested, or listed for Rider in the marketplace. Junie (JetBrains' AI coding agent) has no integration at all.Scope
1. Rider support (extensions/pycharm → extensions/intellij rename or new module)
plugin.xmlto declare explicit compatibility with Rider:<depends>com.intellij.modules.rider</depends>as an optional dependency or declare the plugin as platform-level<idea-version since-build="233"/>to cover current Rider buildsextensions/pycharm/→extensions/intellij/(or keep as-is and add Rider to the supported products list).github/workflows/pycharm.yml→ verify plugin against Rider build (addverifyPluginwith Rider IDE type)package.jsonscripts to reference the renamed extension if applicable2. Junie integration
Junie exposes an extension point for AI context providers — plugins can register a
JunieContextProviderthat injects structured context into Junie's AI sessions.Implement
RetortJunieContextProvider:.agentkit/spec/teams.yaml,.claude/state/tasks/*.json, andAGENT_BACKLOG.mdcom.intellij.junie.contextProviderextension point inplugin.xml3. Junie slash command:
/retort-askRegister a Junie slash command that calls the state-watcher
/api/askendpoint:/retort-ask <query>http://localhost:<port>/api/ask?q=<query>(port from.retort-portor state-watcher discovery)RouteResultentries as markdown for the Junie chatImplementation Notes
com.intellij.junieplugin dependency (optional — degrade gracefully if Junie not installed).retort-portfile written by the IntelliJ plugin when it starts the daemonriderproduct type toverifyPlugintask inbuild.gradle.ktsAcceptance criteria
RetortJunieContextProviderinjects team context into Junie sessions when.agentkitis present/retort-ask which team handles authreturns top results in Junie chat./gradlew verifyPluginpasses for both PyCharm and Rider build targetsRelated
packages/state-watcher/api/askendpoint (merged in feat(router): semantic team routing and spec-aware Q&A — Phase 1 #4)extensions/pycharm— existing IntelliJ plugin base🤖 Generated with Claude Code