When UI tests fail, Claude Code now automatically analyzes the failure by examining test reports, video recordings, and IDE logs. The analysis is saved to build/reports/ai-analysis/analysis.txt and included in uploaded artifacts.
Requires ANTHROPIC_API_KEY secret to be configured in GitHub repository settings.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Extend allowed bash tools in all workflow steps to include:
- Bash(grep:*) for text searching and filtering
- Bash(ls:*) for directory listing
This resolves permission denials when Claude needs to run compound
bash commands with grep or ls in the YouTrack auto-analysis workflow.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Uncomment the Claude Code action step now that we've migrated to
API-based tracking.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Replace tag-based tracking (workflow-changelog) with GitHub Actions API
to track last successful workflow run. This approach is more reliable and
eliminates the need to manage tags.
Changes:
- Use gh run list to get last successful run's commit SHA
- Remove tag creation/deletion step
- Delete workflow-changelog tag from repository
- Update changelog skill documentation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Revert ssh-key addition and comment out Claude Code action step to
test if the tag push works in isolation.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The workflow was failing with "Authentication failed" when attempting
to push the workflow-changelog tag. The anthropics/claude-code-action
modifies git configuration during PR creation, which breaks subsequent
tag pushes.
Added ssh-key parameter to checkout step to use SSH authentication,
matching the approach in updateAuthors.yml and other workflows.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Updates artifact paths to use workspace-relative paths starting with
"ideavim" and includes entire reports directories from both main module
and java-tests module. This ensures test reports are available for
debugging failed PR checks.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Informs the reviewer that PRs containing only CHANGES.md and
build.gradle.kts changeNotes are created automatically by
updateChangelogClaude.yml workflow, with actual implementation
in previous commits. Prevents false reports of missing implementation.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This skip reason is used when tests call IdeaVim API functions (both
public plugin API and internal API) that prevent proper Neovim state
synchronization. When these APIs are used directly in tests, we cannot
update the Neovim state accordingly, making test verification impossible.
Tests should only use VimTestCase functions for Neovim compatibility.
Updated the Tests Maintenance workflow to document this constraint,
clarifying that Neovim can only test methods using VimTestCase functions.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Upload the Gradle problems report as an artifact so it can be
downloaded and viewed when tests fail.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Previously only bug-fix and feature-impl steps had Bash(./gradlew:*)
in their allowed tools. Now all 8 Claude steps can run gradle commands
without requiring manual approval.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Create a Claude skill for interacting with YouTrack issue tracker:
- Add CLI wrapper scripts in scripts-ts/src/youtrack-cli/
- Add release management functions to youtrack.ts (ported from Kotlin)
- Update youtrackAutoAnalysis.yml to use the skill instead of curl
- Document YouTrack usage in CLAUDE.md
CLI scripts:
- add-comment.ts, add-tag.ts, remove-tag.ts
- set-status.ts, get-ticket.ts, set-fix-version.ts
- create-version.ts, delete-version.ts
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add missing permissions block with id-token: write required for
anthropics/claude-code-action to obtain OIDC token.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Move the author update script from Kotlin to TypeScript, including tests.
Changes:
- Create scripts-ts/src/updateAuthors.ts
- Create scripts-ts/src/updateAuthors.test.ts with vitest
- Add vitest to package.json
- Create scriptsTests.yml workflow for running tests
- Update updateAuthors.yml workflow to use Node.js
- Remove Kotlin implementation and test
- Remove unused github-api dependency
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Move the plugin dependency checker from Kotlin to TypeScript for
consistency with other scripts.
- Create scripts-ts/src/checkNewPluginDependencies.ts
- Update workflow to use Node.js instead of JDK/Gradle
- Remove Kotlin implementation and Gradle task
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Delete unused integration test infrastructure:
- .github/workflows/integrationsTest.yml
- scripts/src/main/kotlin/scripts/integrationsTest.kt
- Gradle task from build.gradle.kts
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Move the script from Kotlin (scripts/) to TypeScript (scripts-ts/)
for consistency with other YouTrack automation scripts.
Changes:
- Add setStatus() function to youtrack.ts
- Create updateYoutrackOnCommit.ts with git log parsing
- Update GitHub workflow to use Node.js instead of JDK/Gradle
- Remove Kotlin implementation and changelogUtils.kt
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The context7 plugin tools need to be explicitly listed in claude_args
allowed-tools for Claude to use them without permission prompts.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Added a reminder about the available context7 MCP plugin to all Claude
prompts that have it enabled (triage, planning, bug-fix, feature-impl).
This helps Claude know it can look up Vim documentation when needed.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Introduces a planning phase between triage and implementation that:
- Explores the codebase to understand what needs to be implemented
- Creates a detailed implementation plan for bug fixes/features
- Asks for clarification when genuinely ambiguous (posts YouTrack comment)
Smart ticket selection with automatic answer detection:
- Prioritizes tickets with pending clarifications
- Uses AI to check if owner has answered questions
- Automatically removes pending tag when answered
- Falls back to random selection if no pending answers
Key changes:
- youtrack.ts: Add pending clarification tag constant and removeTag()
- selectTicketForAnalysis.ts: Query pending tickets first, add state fields
- completeTicketAnalysis.ts: Skip tagging for needs_clarification/no_answer
- Workflow: Add Step 0 (check answers) and Step 2 (planning)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Age is NEVER a reason to mark a ticket as outdated. Many 10-15+ year
old tickets are still valid. A ticket is outdated only when it has
BOTH vague/environment-specific description AND references to
features/APIs that no longer exist.
Parse the execution_file JSON to find permission_denials array
and automatically report them as attention_reason, even if Claude
doesn't self-report them. This ensures we catch tool permission
issues even when Claude works around them.
- All Claude steps now only update analysis_state.json (no text flags)
- All parse steps read from analysis_state.json using jq
- Added triage_attention_reason and changelog object to JSON structure
- Simpler and more consistent data flow
- attention_reason is now a separate flag that doesn't replace main status
- Workflow continues with main task even when issues are encountered
- Issues are reported alongside the main result (bug/feature/success/etc)
- Workflow fails at the end if any attention_reason was set
This will help understand:
- What outputs claude-code-action provides
- What the execution_file contains
- Whether the TRIAGE_RESULT pattern can be found
The claude-code-action does not have a 'response' output. Instead, it
provides 'execution_file' which is a path to the execution output file.
Changes:
- All parse steps now read from execution_file instead of response
- Added explicit git subcommand patterns to review and PR steps
- Added gh pr pattern for PR creation step
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add explicit patterns for git branch, git log, git blame, git diff,
and git show to ensure these commands are allowed during implementation.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added attention_required mechanism to Step 1 (Triage)
- Added Bash(cat:*) to allowed tools for triage step
- Updated parse-triage to extract attention_reason
- Updated workflow summary to show triage attention reasons
- Updated fail condition to include triage attention_required
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Split the single monolithic Claude prompt (~200 lines) into 5 focused
steps to improve quality and debuggability:
1. Triage: Determines ticket type (bug/feature) and suitability
2. Bug Fix: TDD-based implementation with root cause analysis
3. Feature: Feature implementation with tests
4. Code Review: Uses code-reviewer subagent
5. Changelog & PR: Creates branch, commits, and PR
Key changes:
- Add analysis_state.json for state passing between steps
- Each step has focused prompt with single responsibility
- Conditional execution based on triage result (bug vs feature)
- Preserved attention_required mechanism for all impl steps
- Updated TypeScript scripts to read/write JSON state file
Benefits:
- Focused prompts reduce confusion
- Better debugging (see where pipeline fails)
- Early termination for unsuitable tickets
- Consistent code review (always happens)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This helps with debugging workflow runs by preserving the full
execution log in the workflow artifacts.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add WebFetch permissions for:
- github.com and raw.githubusercontent.com (commits, PRs, raw files)
- vimhelp.org and vimdoc.sourceforge.net (Vim documentation)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Emphasize that Claude should:
- Focus on bug descriptions, not user-suggested solutions which may be
inaccurate or too narrow for IdeaVim's architecture
- Find the actual root cause rather than implementing potentially flawed fixes
- Handle tickets with multiple issues by implementing them in separate commits
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Instruct Claude to be direct and avoid filler words, extra explanations,
or compliments. Focus on actionable feedback only.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
New Claude skill for routine test maintenance focusing on:
- Test quality and readability (meaningful content, clear names)
- Reviewing @Disabled tests to check if they can be re-enabled
- Ensuring @TestWithoutNeovim annotations have clear reasons
- Documenting @VimBehaviorDiffers usage
Daily GitHub Actions workflow runs at 7 AM UTC.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Local changes without a Pull Request are useless - added clear
instruction that the workflow must create a PR on GitHub.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Image attachments from YouTrack tickets are now downloaded locally
so Claude can view them using the Read tool. This enables analysis
of visual bugs and UI issues that require screenshots.
Changes:
- Add downloadAttachment() function to youtrack.ts
- Download images to attachments/ directory during ticket selection
- Update ticket_details.md to reference local image paths
- Add cleanup step to remove temporary files after analysis
- Add prompt instruction about viewing image attachments
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add explicit instructions to create branch, commit, push, then create PR
- Add PR creation failure as a trigger for attention_required status
Fixes issue where Claude forgot to push branch before creating PR.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add step to review source code and git history before writing tests.
If bug appears already fixed (via code review or passing test), post
a private YouTrack comment mentioning @Aleksei.Plate and stop.
New result type: ANALYSIS_RESULT=already_fixed
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Point both workflows to .claude/settings.json to use project
configuration including enabled plugins.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Weekly check that compares current model against latest available.
If a newer model is found, Claude creates a PR with the update.
Uses Haiku for cost efficiency since this is a simple check task.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use the changelog skill to add entries for bug fixes and features
before creating the PR. Added Skill to allowed tools.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Full test suite takes a while. Guidance now suggests:
- Run specific related tests for faster feedback
- Only run full suite for core changes
- CI will run all tests on the PR anyway
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>