aica - AI Code Analyzer
aica(AI Code Analyzer) reviews your code using AI. Supports CLI and GitHub Actions.
dotneet
README
aica - AI Code Analyzer
Motivation
There are already excellent code review tools such as pr-agent and cursor. However, pr-agent relies on code hosting services like GitHub, which limits its usability, and cursor is not open source, meaning it cannot be fully customized or integrated with other tools.
So, I decided to create a new tool with the following characteristics:
- Customizable
- Open Source
- Platform Independent
Features
- [x] AI Coding Agent
- [x] AI Code Review
- [x] MCP(Model Context Protocol) supported. stdio and SSE transports are supported.
- [x] Automatic knowledge retrieving for code review
- [x] Symbol based code search for retrieving knowledge
- [x] Vector based document search for retrieving knowledge
- [x] Generate summary of changes
- [x] Generate commit message
- [x] Create pull request with AI-generated title and body
- [x] Prompt customization
- [x] Slack notification
- [x] Single binary executable by
bun build --compile
- [x] GitHub Actions integration. (See wiki page to setup actions.)
Install
Build and install a binary:
# Install bun before build aica.
#
# Official Install Document:
# https://bun.sh/docs/installation#installing
git clone https://github.com/dotneet/aica.git
cd aica
bun install
bun run build
cp ./dist/aica path-to-your-bin-directory
Setup GitHub Token:
# if GITHUB_TOKEN is not set, aica try to get token from `gh auth token`.
export GITHUB_TOKEN=your_github_token
Setup LLM:
# You can set the following items in your environment variables or aica.toml file.
# Configure at least one of the following providers:
# Anthropic (If you use agent, strongly recommend to use claude sonnet model)
export AICA_LLM_PROVIDER=anthropic
export ANTHROPIC_API_KEY=your_api_key
export ANTHROPIC_MODEL=claude-3-5-sonnet-20241022
# OpenAI
export AICA_LLM_PROVIDER=openai
export OPENAI_API_KEY=your_api_key
export OPENAI_MODEL=o3-mini
# Gemini
export AICA_LLM_PROVIDER=google
export GOOGLE_API_KEY=your_api_key
export GOOGLE_MODEL=gemini-2.0-flash
Configuration
You can customize the configuration by creating a aica.toml
file.
See aica.example.toml.
aica.toml must be placed in one of the following directories.
- root directory of the repository
- ${HOME}/.config/aica/aica.toml
- ${GITHUB_WORKSPACE}/aica.toml
Language
You can specify the language for AI output. The language can be specified either through AICA_LANGUAGE or in the language section of aica.toml. By default, the language is automatically detected from the LANG environment variable.
export AICA_LANGUAGE=Japanese
Priority:
AICA_LANGUAGE
language.language
in aica.toml- Automatic detection from
LANG
Usage
Review
# review the diff from HEAD
aica review [options] [pattern]
# review specific files
aica review src/main.ts
# review the files matching the specific glob pattern
aica review "src/**/*.ts"
Options:
--dir
: Target directory path--slack
: Send notification to Slack
Agent
# execute AI agent with a prompt
aica agent "your prompt here"
# execute AI agent with a instruction file
aica agent -f instruction.txt
# conversation mode. You can interact with AI agent by typing your prompt.
aica agent
This command executes a task using an AI agent. The agent automatically determines and executes the necessary actions based on the given prompt.
Recommend to use anthropic claude 3.5 sonnet for agent.
NOTE: This command has potential to break your file system. Please be careful.
Aica Agent as an MCP Server
# start a MCP server
aica mcp server
# start a MCP server with a config file
aica mcp server --config aica.toml
Reindex
# reindex the code and document databases
aica reindex
Summary
# generate a summary of the diff from HEAD
aica summary [options]
Options:
--dir
: Target directory path
Commit Changes
This command commits changes with an AI-generated commit message.
# commit all changes(including untracked and unstaged changes) with an AI-generated commit message
aica commit [options] # commits all changes (including untracked and unstaged changes) with an AI-generated commit message
aica commit --staged # commits only staged changes with an AI-generated commit message
aica commit --push # commits all changes and pushes to remote repository
Options:
--staged
: commit only staged changes.--dryRun
: Show result without execution--push
: Push to remote repository after committing
Create Pull Request
This command creates a pull request on GitHub.
# Creates a pull request. If there are changes, they will be committed automatically.
aica create-pr [options]
# Creates a pull request with only staged changes
aica create-pr --staged
Options:
--withSummary
: Generate summary of diff from HEAD (default: true)--body
: Pull request body--dryRun
: Show result without execution--staged
: Only include staged changes
Generate Commit Message
# generate a one-line commit message based on the diff from HEAD
aica commit-message [options]
Options:
--dir
: Target directory path
Show Configuration
# show current configuration
aica show-config [options]
Options:
--default
: Show default configuration
Other Commands
aica --version
: Show version informationaica --help [command]
: Show help information for a specific command or general help
Add Context
.cursorrules and .clinerules are automatically added to the context. To customize the context, configure the [rules] section in aica.toml.
Additionally, .cursor/rules/*.mdc files are supported by default. This function can be disabled through the settings.
MCP(Model Context Protocol)
create a mcp.json file to define the MCP server.
example:
[
{
"name": "example-server",
"type": "stdio",
"command": "node",
"args": ["./server.js"]
},
{
"name": "example-server",
"type": "sse",
"url": "http://localhost:3001/sse"
}
]
set setupFile
in aica.toml like below.
[mcp]
setupFile = "mcp.json"
GitHub Actions
Setup
See wiki page for details.
Commands
You can interact with AI features by leaving comments with the following commands.
# edit the code with AI
/aica edit "your prompt here"
# update summary in the pull request body
/aica summary
# review the latest diff
/aica review
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
MCP Package Docs Server
Facilitates LLMs to efficiently access and fetch structured documentation for packages in Go, Python, and NPM, enhancing software development with multi-language support and performance optimization.
Claude Code MCP
An implementation of Claude Code as a Model Context Protocol server that enables using Claude's software engineering capabilities (code generation, editing, reviewing, and file operations) through the standardized MCP interface.
@kazuph/mcp-taskmanager
Model Context Protocol server for Task Management. This allows Claude Desktop (or any MCP client) to manage and execute tasks in a queue-based system.
Linear MCP Server
Enables interaction with Linear's API for managing issues, teams, and projects programmatically through the Model Context Protocol.
mermaid-mcp-server
A Model Context Protocol (MCP) server that converts Mermaid diagrams to PNG images.
Jira-Context-MCP
MCP server to provide Jira Tickets information to AI coding agents like Cursor

Linear MCP Server
A Model Context Protocol server that integrates with Linear's issue tracking system, allowing LLMs to create, update, search, and comment on Linear issues through natural language interactions.

Sequential Thinking MCP Server
This server facilitates structured problem-solving by breaking down complex issues into sequential steps, supporting revisions, and enabling multiple solution paths through full MCP integration.