Skip to content

#332: Support Jetbrains's Junie CLI Agentic AI.#1877

Open
Basster wants to merge 2 commits intogithub:mainfrom
Basster:feature/junie-cli
Open

#332: Support Jetbrains's Junie CLI Agentic AI.#1877
Basster wants to merge 2 commits intogithub:mainfrom
Basster:feature/junie-cli

Conversation

@Basster
Copy link

@Basster Basster commented Mar 17, 2026

Description

Add Junie CLI support across all relevant scripts, configurations, and tests.

Testing

  • Tested locally with uv run specify --help
  • Ran existing tests with uv sync && uv run pytest
  • Tested with a sample project (if applicable)

AI Disclosure

  • I did not use AI assistance for this contribution
  • I did use AI assistance (describe below)

Code generated by Junie.

Replacement for #1831, covers #332.

Add Junie CLI support across all relevant scripts, configurations, and tests.
@Basster Basster requested a review from mnriem as a code owner March 17, 2026 10:36
…e preserving Junie CLI support

Co-authored-by: Junie <junie@jetbrains.com>
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds support for JetBrains Junie CLI as a first-class AI agent option in Spec Kit, aligning runtime configuration, scaffolding/release packaging, dev tooling, and documentation.

Changes:

  • Add junie to runtime agent configuration and extension command registration (.junie/commands, Markdown, .md).
  • Update agent-context update scripts (bash + PowerShell) and release packaging scripts/docs to include Junie.
  • Add consistency tests ensuring Junie appears across key integration surfaces.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/test_agent_config_consistency.py Adds Junie cross-surface consistency checks (runtime config, registrar, scripts, help).
src/specify_cli/agents.py Registers Junie command output target/format for command generation.
src/specify_cli/__init__.py Adds Junie to AGENT_CONFIG so CLI help and specify check include it.
scripts/powershell/update-agent-context.ps1 Adds Junie agent type support and .junie/guidelines.md target file.
scripts/bash/update-agent-context.sh Adds Junie agent type support and .junie/guidelines.md target file.
README.md Documents Junie support in agent list, check tool list, and --ai options/examples.
AGENTS.md Documents Junie command directory and CLI requirement.
.github/workflows/scripts/create-release-packages.sh Adds Junie package generation targeting .junie/commands.
.github/workflows/scripts/create-release-packages.ps1 Adds Junie to agent lists (but currently missing build support in Build-Variant).
.github/workflows/scripts/create-github-release.sh Includes Junie artifacts in GitHub release creation.
.devcontainer/post-create.sh Installs Junie CLI in the devcontainer environment.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 472 to 474
# Define all agents and scripts
$AllAgents = @('claude', 'gemini', 'copilot', 'cursor-agent', 'qwen', 'opencode', 'windsurf', 'codex', 'kilocode', 'auggie', 'roo', 'codebuddy', 'amp', 'kiro-cli', 'bob', 'qodercli', 'shai', 'tabnine', 'agy', 'vibe', 'kimi', 'generic')
$AllAgents = @('claude', 'gemini', 'copilot', 'cursor-agent', 'qwen', 'opencode', 'windsurf', 'codex', 'kilocode', 'auggie', 'roo', 'codebuddy', 'amp', 'kiro-cli', 'bob', 'qodercli', 'junie', 'shai', 'tabnine', 'agy', 'vibe', 'kimi', 'generic')
$AllScripts = @('sh', 'ps')
Comment on lines +256 to +270
def test_junie_in_release_agent_lists(self):
"""Bash and PowerShell release scripts should include junie in agent lists."""
sh_text = (REPO_ROOT / ".github" / "workflows" / "scripts" / "create-release-packages.sh").read_text(encoding="utf-8")
ps_text = (REPO_ROOT / ".github" / "workflows" / "scripts" / "create-release-packages.ps1").read_text(encoding="utf-8")

sh_match = re.search(r"ALL_AGENTS=\(([^)]*)\)", sh_text)
assert sh_match is not None
sh_agents = sh_match.group(1).split()

ps_match = re.search(r"\$AllAgents = @\(([^)]*)\)", ps_text)
assert ps_match is not None
ps_agents = re.findall(r"'([^']+)'", ps_match.group(1))

assert "junie" in sh_agents
assert "junie" in ps_agents
Copy link
Collaborator

@mnriem mnriem left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please address Copilot feedback. If not applicable please explain why

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants