by cloudwego
deep, reliable and confidential coding-context
# Add to your Claude Code skills
git clone https://github.com/cloudwego/abcoder
ABCoder, an AI-oriented Code-processing Framework, is designed to enhance and extend the coding context for Large-Language-Model (LLM), finally boosting the development of AI-assisted-programming applications.
Universal Abstract-Syntax-Tree (UniAST), a language-independent, AI-friendly specification of code information, providing a boundless, flexible and structural coding context for both AI and humans.
General Parser, parses arbitrary-language codes to UniAST.
General Writer transforms UniAST back to code.
Code-Retrieval-Augmented-Generation (Code-RAG), provides a set of MCP tools to help the LLM understand code repositories precisely and locally. And it can support both in-workspace and out-of-workspace third-party libraries simultaneously -- I guess you are thinking about DeepWiki and context7, but ABCoder is more reliable and confidential -- no need to wait for their services to be done, and no worry about your codes will be uploaded!
Based on these features, developers can easily implement or enhance their AI-assisted programming applications, such as reviewing, optimizing, translating, etc.
ABCoder provides deep integration with Claude Code through the AST-Driven Coding workflow, enabling hallucination-free code analysis and precise execution. Check Claude Code Specification for more details.
No comments yet. Be the first to share your thoughts!
Use the init-spec command to automatically configure Claude Code integration for your project:
# Install ABCoder
go install github.com/cloudwego/abcoder@latest
# Run init-spec in your project directory (optional: specify target path)
cd /path/to/your/project
abcoder init-spec
The init-spec command will:
.claude directory to your project root~/.claude.json:
abcoder: for code analysis using ASTsequential-thinking: for complex problem decomposition{{CLAUDE_HOME_PATH}} placeholders with actual project pathsOnce setup, you can start coding with Claude Code:
/abcoder:schedule <problem_desc> to address your feature/requirement/issue, and ABCoder will help you analyze the codebase and design a technical solution./abcoder:task <task_name> to create a coding task(specification)/abcoder:recheck <task_name> before real implementation.claude/hooks provide a 4-layer analysis chain from repository to node details:
list_repos → get_repo_structure → get_package_structure → get_file_structure → get_ast_node
│ │ │ │ │
└── repo_name └── mod/pkg list └── file list └── node list └── dependencies/references
.claude/commands provide three custom slash commands to streamline development:
| Command | Function | Description |
|---------|----------|-------------|
| /abcoder:schedule <task_desc> | Design implementation | Analyze codebase by using ABCoder, design technical solution |
| /abcoder:task <name> | Create coding task | Generate standardized CODE_TASK document |
| /abcoder:recheck <task> | Verify solution | Critically check CODE_TASK feasibility, useful when a CODE_TASK contains external dependencies |
User Request
│
▼
/abcoder:schedule ──────────→ Design Solution (ABCoder Analysis)
│ │
▼ ▼
/abcoder:task ─────────→ CODE_TASK (with Technical Specs, including accurate `get_ast_node` call args)
│ │
▼ ▼
/abcoder:recheck ────→ Verify Solution (ABCoder Validation. After `/abcoder:task` Claude Code will tell you what the external dependencies CODE_TASK contains, use `/abcoder:recheck` to analyze external ast_node and technical detail with ABCoder)
│ │
▼ ▼
Start coding(sub-agent) ─────────→ Execute Implementation
| File | Purpose |
|------|---------|
| CLAUDE.md | Core AST-Driven Coder role definition |
| settings.json | Hooks and permissions configuration |
| hooks/ | Automation scripts (parse/prompt/reminder) |
| commands/ | Slash command definitions (abcoder:task/abcoder:schedule/abcoder:recheck) |
| tmpls/ABCODER_CODE_TASK.md | Coding task template |
mcp__abcoder tools)mcp__sequential_thinking tools, automatically configured by init-spec)For detailed configuration, see claude-code-spec.md
Watch the demo video here
Install ABCoder:
go install github.com/cloudwego/abcoder@latest
Use ABCoder to parse a repository to UniAST (JSON)
abcoder parse {language} {repo-path} -o xxx.json
ABCoder will try to install any dependency automatically. In case of failure (or if you want to customize installation), refer to the docs.
For example, to parse a Go repository:
git clone https://github.com/cloudwego/localsession.git localsession
abcoder parse go localsession -o /abcoder-asts/localsession.json
Integrate ABCoder's MCP tools into your AI agent.
{
"mcpServers": {
"abcoder": {
"command": "abcoder",
"args": [
"mcp",
"{the-AST-directory}"
]
}
}
}
Enjoy it!
Try to click and watch the video below:
You can add more repo ASTs into the AST directory without restarting abcoder MCP server.
Try to use the recommended prompt and combine planning/memory tools like sequential-thinking in your AI agent.
You can also use ABCoder as a command-line Agent like:
export API_TYPE='{openai|ollama|ark|claude}'
export API_KEY='{your-api-key}'
export MODEL_NAME='{model-endpoint}'
abcoder agent {the-AST-directory}
For example:
$ API_TYPE='ark' API_KEY='xxx' MODEL_NAME='zzz' abcoder agent ./testdata/asts
Hello! I'm ABCoder, your coding assistant. What can I do for you today?
$ What does the repo 'localsession' do?
The `localsession` repository appears to be a Go module (`github.com/cloudwego/localsession`) that provides functionality related to managing local sessions. Here's a breakdown of its structure and purpose:
...
If you'd like to explore specific functionalities or code details, let me know, and I can dive deeper into the relevant files or nodes. For example:
- What does `session.go` or `manager.go` implement?
- How is the backup functionality used?
$ exit
ABCoder currently supports the following languages:
| Language | Parser | Writer | | -------- | ------ | ----------- | | Go | ✅ | ✅ | | Rust | ✅ | Coming Soon | | C | ✅ | Coming Soon | | Python | ✅ | Coming Soon | | JS/TS | ✅ | Coming Soon | | Java | ✅ | Coming Soon |
We encourage developers to contribute and make this tool more powerful. If you are interested in contributing to ABCoder project, kindly check out our guide:
Note: This is a dynamic README and is subject to changes as the project evolves.
Thank you for your contribution to ABCoder!
This project is licensed under the Apache-2.0 License.