Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2428 commits
Select commit Hold shift + click to select a range
f0acb7e
update github actions
MervinPraison Jul 29, 2025
21372a1
fix: resolve MongoDB SearchIndexModel missing definition argument
github-actions[bot] Jul 29, 2025
7a84a5b
fix: apply SearchIndexModel compatibility fix to memory.py and mongod…
github-actions[bot] Jul 29, 2025
c571bfb
Merge pull request #1072 from MervinPraison/claude/issue-1071-2025072…
MervinPraison Jul 29, 2025
31fe65a
chore: update MongoDB connection strings from localhost to remote clu…
MervinPraison Jul 31, 2025
2c45766
perf: optimize agent performance with lazy loading and caching strate…
MervinPraison Jul 31, 2025
68f99ab
feat: optimize LLM performance with caching and lazy loading
MervinPraison Jul 31, 2025
6f2040e
fix: Fix RAG integration tests to respect lazy loading pattern
github-actions[bot] Jul 31, 2025
81d084e
Merge pull request #1075 from MervinPraison/claude/issue-1074-2025073…
MervinPraison Jul 31, 2025
b7789d7
feat: make XML tool call parsing dynamic and configurable
github-actions[bot] Aug 5, 2025
9d2f57f
fix: improve XML tool call parsing robustness and type handling
github-actions[bot] Aug 5, 2025
5c6e4f1
feat: optimize OpenAIClient with lazy loading and tool caching
MervinPraison Aug 5, 2025
10f0c74
Merge branch 'main' of https://github.com/MervinPraison/PraisonAI
MervinPraison Aug 5, 2025
f122e23
Merge pull request #1079 from MervinPraison/claude/issue-1077-2025080…
MervinPraison Aug 5, 2025
9ccd715
feat: bump praisonai to 2.2.83 and add xml-toolcall-agent implementation
MervinPraison Aug 5, 2025
9f2f616
refactor: update model name from gpt-4o-mini to gpt-5-nano across all…
MervinPraison Aug 8, 2025
e4c25a9
chore: bump PraisonAI to v2.2.84 and PraisonAI Agents to v0.0.158 acr…
MervinPraison Aug 8, 2025
10e2a16
refactor: replace gpt-4o model references with gpt-5-mini across code…
MervinPraison Aug 8, 2025
19bade5
chore: bump PraisonAI to v2.2.85 and PraisonAI Agents to v0.0.159
MervinPraison Aug 8, 2025
0a5bf22
refactor: replace all instances of gpt-5-mini with gpt-5-nano across …
MervinPraison Aug 8, 2025
a83e259
chore: bump praisonai to v2.2.86 and praisonaiagents to v0.0.160
MervinPraison Aug 8, 2025
428a04a
chore: bump PraisonAI to v2.2.87, PraisonAI Agents to v0.0.161 and in…
MervinPraison Aug 8, 2025
b2e6196
refactor: optimise ChatOpenAI instantiation by using a dictionary for…
MervinPraison Aug 8, 2025
993ae07
chore: bump PraisonAI to v2.2.88 and update dependencies across Docke…
MervinPraison Aug 8, 2025
5583dd0
Add agentic_rag example to cookbooks
Dhivya-Bharathy Aug 28, 2025
112fdef
Update PraisonAI_RecipeAgent.ipynb
Dhivya-Bharathy Aug 28, 2025
0b26ad9
Add agentic RAG Python implementation to tools
Aug 28, 2025
bef9161
Add files via upload
Dhivya-Bharathy Aug 29, 2025
5f08657
Add agentic_rag_gpt5 example with GPT-5 integration
Aug 29, 2025
afa4df5
feat: add async run support and example scripts for multi-turn conver…
MervinPraison Aug 30, 2025
eabe80b
Merge pull request #1085 from Dhivya-Bharathy/feat/agentic-rag-tools
MervinPraison Nov 3, 2025
97e9cc8
Merge pull request #1084 from Dhivya-Bharathy/feature/agentic-rag
MervinPraison Nov 3, 2025
13c6a5b
docs: rewrite README from MCP SSE implementation to comprehensive Pra…
MervinPraison Dec 13, 2025
10ec948
Merge branch 'main' of https://github.com/MervinPraison/PraisonAI
MervinPraison Dec 13, 2025
46ca1f9
feat: add Deep Research Agent support with OpenAI and Gemini integration
MervinPraison Dec 13, 2025
2885a47
chore: bump version to 2.2.89 and update praisonaiagents dependency t…
MervinPraison Dec 13, 2025
8b5d346
docs: add Deep Research CLI documentation and bump version to 2.2.90
MervinPraison Dec 13, 2025
a77a41f
chore: bump version to 2.2.91 and update praisonaiagents dependency t…
MervinPraison Dec 13, 2025
704ae63
feat: add default research instructions to DeepResearchAgent and bump…
MervinPraison Dec 13, 2025
88a6f13
chore: bump version to 2.2.92 and update praisonaiagents dependency t…
MervinPraison Dec 13, 2025
6684fec
feat: add --save flag to research command for markdown output and bum…
MervinPraison Dec 13, 2025
832a6f4
feat: add Query Rewriter Agent with multiple rewrite strategies and b…
MervinPraison Dec 13, 2025
d0e9291
docs: add query rewrite flag to research command and bump version to …
MervinPraison Dec 13, 2025
9cc330c
feat: add custom tools support to research command with file and buil…
MervinPraison Dec 15, 2025
9c4cb09
Release v2.2.96
MervinPraison Dec 15, 2025
4a843b3
Release v2.2.97
MervinPraison Dec 15, 2025
37e7caa
feat: add plugin system with tool registry and BaseTool support for e…
MervinPraison Dec 15, 2025
03714ee
docs: add custom tools documentation with decorator, BaseTool class, …
MervinPraison Dec 15, 2025
4c35801
test: convert test assertions to pytest format and add TaskOutput des…
MervinPraison Dec 15, 2025
dd40315
Release v2.2.98
MervinPraison Dec 15, 2025
bbc3ddb
Release v2.2.99
MervinPraison Dec 15, 2025
567c024
test: add skipif decorator for OPENAI_API_KEY check in CrewAI environ…
MervinPraison Dec 15, 2025
e18108d
test: add OPENAI_API_KEY environment variable to comprehensive test w…
MervinPraison Dec 15, 2025
27ec1b1
fix: QueryRewriterAgent preserves task intent instead of converting t…
MervinPraison Dec 15, 2025
26aa5d3
feat: add PromptExpanderAgent for detailed prompt expansion
MervinPraison Dec 15, 2025
c698e09
docs: add PromptExpanderAgent to README
MervinPraison Dec 15, 2025
f185ee8
chore: bump praisonaiagents version to 0.0.170
MervinPraison Dec 15, 2025
0cf1aea
Release v2.3.0
MervinPraison Dec 15, 2025
943a752
chore: add uv cache clean before uv lock in bump_and_release.py
MervinPraison Dec 15, 2025
5c94090
chore: add uv cache clean before uv lock in release.py
MervinPraison Dec 15, 2025
a14746b
feat: add native web search support for OpenAI, Gemini, Anthropic, xA…
MervinPraison Dec 15, 2025
18a5304
feat: expand structured outputs support for OpenAI, Anthropic, and Ge…
MervinPraison Dec 15, 2025
1de0336
feat: add native web fetch support for Anthropic Claude models
MervinPraison Dec 15, 2025
b45b3b2
feat: add native web search and web fetch documentation to README
MervinPraison Dec 15, 2025
25d11f6
feat: refactor model capabilities to use LiteLLM helper functions
MervinPraison Dec 15, 2025
edbb591
Release v2.3.1
MervinPraison Dec 15, 2025
86587d2
feat: add CLI flags for web-search, web-fetch, and prompt-caching
MervinPraison Dec 15, 2025
83fde57
fix: add current date to PromptExpanderAgent for time-sensitive context
MervinPraison Dec 15, 2025
5d047c2
feat: add --save support for direct prompts
MervinPraison Dec 15, 2025
0506603
Release v2.3.2
MervinPraison Dec 15, 2025
5293137
feat: add Claude Memory Tool support for persistent cross-conversatio…
MervinPraison Dec 15, 2025
f84990f
feat: add zero-dependency file-based memory system for all agents
MervinPraison Dec 15, 2025
55f1ac2
feat: add memory info display and improve memory integration with sys…
MervinPraison Dec 15, 2025
3da9c34
Release v2.3.3
MervinPraison Dec 15, 2025
d0dad99
test: add multi-agent memory sharing and integration tests
MervinPraison Dec 15, 2025
2c674c0
docs: add advanced memory features and rules management system
MervinPraison Dec 15, 2025
37b2426
docs: add advanced rules features and new memory capabilities
MervinPraison Dec 15, 2025
2368936
Release v2.3.4
MervinPraison Dec 15, 2025
1dcae4e
feat: Add Planning Mode - plan before execution like Cursor, Windsurf…
MervinPraison Dec 15, 2025
66613f5
Release v2.3.5
MervinPraison Dec 15, 2025
c816f4c
update
MervinPraison Dec 15, 2025
b2ddb33
update
MervinPraison Dec 15, 2025
dc637ed
update
MervinPraison Dec 15, 2025
76c1177
docs: simplify feature descriptions by removing tool comparisons
MervinPraison Dec 15, 2025
ef81d43
g
MervinPraison Dec 15, 2025
101e66e
feat: add planning tools and reasoning mode for research-enabled plan…
MervinPraison Dec 15, 2025
975eecc
Release v2.3.6
MervinPraison Dec 15, 2025
4a28fde
update
MervinPraison Dec 15, 2025
1452e12
planning example
MervinPraison Dec 15, 2025
824ef30
Release v2.3.7
MervinPraison Dec 15, 2025
aff13be
fix: resolve Mintlify parsing errors
MervinPraison Dec 15, 2025
39298f4
Release v2.3.7
MervinPraison Dec 16, 2025
810f3f0
Release v2.3.8
MervinPraison Dec 16, 2025
ebcef4c
Release v2.3.9
MervinPraison Dec 16, 2025
e96afb5
workflow
MervinPraison Dec 16, 2025
df031d3
Release v2.3.10
MervinPraison Dec 16, 2025
f074b59
Release v2.3.11
MervinPraison Dec 16, 2025
9f94f0d
Add Fast Context feature to README highlights
MervinPraison Dec 16, 2025
d3e58fc
Update README.md to include detailed feature table with example code …
MervinPraison Dec 16, 2025
8c8c334
Refactor feature table in README.md for improved clarity and consiste…
MervinPraison Dec 16, 2025
2bf649e
Add advanced features section to README.md, detailing new capabilitie…
MervinPraison Dec 16, 2025
d986db8
Enhance README.md with new agent types and advanced features, includi…
MervinPraison Dec 16, 2025
0df00b8
Update README.md to refine feature table, enhancing clarity by renami…
MervinPraison Dec 16, 2025
15b564b
Add supported providers section to README.md, listing various AI prov…
MervinPraison Dec 16, 2025
ee38a15
Update README.md to consolidate and enhance the Supported Providers s…
MervinPraison Dec 16, 2025
7064894
Release v2.3.12
MervinPraison Dec 16, 2025
ddbd8d0
Add comprehensive CLI feature documentation to README.md, including G…
MervinPraison Dec 16, 2025
20cb83f
Add CLI Features table with docs links
MervinPraison Dec 16, 2025
9d5753a
Fix CLI docs links to use /docs/cli/ path
MervinPraison Dec 16, 2025
5398be5
Reorganize README.md by moving Prompt Expansion, Web Search/Fetch, an…
MervinPraison Dec 16, 2025
820e622
Fix: Instruct PromptExpanderAgent to use tools for context gathering
MervinPraison Dec 16, 2025
6a94153
Improve: Dynamic tool instructions from docstrings instead of hardcod…
MervinPraison Dec 16, 2025
9762215
Add --tools support for all agents including planning mode
MervinPraison Dec 16, 2025
fca8679
Add --max-tokens flag and improve planning mode output compilation
MervinPraison Dec 16, 2025
d22a25d
Improve planning mode: compile all step results into comprehensive fi…
MervinPraison Dec 16, 2025
70e2dd0
Fix: Pass max_tokens as dict config to Agent
MervinPraison Dec 16, 2025
2e6e56d
Remove unused --compile-results flag
MervinPraison Dec 16, 2025
4eb7c27
Release v2.3.13
MervinPraison Dec 16, 2025
7945120
Add --final-agent flag for post-processing output with specialized agent
MervinPraison Dec 16, 2025
1471f49
feat(workflows): Add context passing, per-step agents, async execution
MervinPraison Dec 16, 2025
ea3fc63
Release v2.3.14
MervinPraison Dec 16, 2025
4c48f4e
feat(cli): Add complete workflow CLI options
MervinPraison Dec 16, 2025
4016f92
feat(cli): Add inline workflow support without .md template
MervinPraison Dec 16, 2025
eea609d
refactor(cli): Use global flags for workflow instead of workflow-spec…
MervinPraison Dec 16, 2025
9fe8a10
fix(workflow): Actually use planning mode when --planning is enabled
MervinPraison Dec 16, 2025
93c3b48
docs: Update README workflow CLI with new features
MervinPraison Dec 16, 2025
bbfb8f2
Release v2.3.15
MervinPraison Dec 16, 2025
24ed7ee
feat(workflows): Add branching, loops, callbacks, and per-step variables
MervinPraison Dec 16, 2025
0be408f
Release v2.3.16
MervinPraison Dec 16, 2025
64310da
Release v2.3.18
MervinPraison Dec 16, 2025
5cd5b59
Release v2.3.19
MervinPraison Dec 16, 2025
ed5bb54
Release v2.3.20
MervinPraison Dec 16, 2025
a667eb6
Release v2.3.21
MervinPraison Dec 17, 2025
8ab8fb9
Release v2.3.22
MervinPraison Dec 17, 2025
f3ca2d9
Release v2.3.23
MervinPraison Dec 17, 2025
b61e137
Release v2.3.24
MervinPraison Dec 17, 2025
fd48d7c
Release v2.3.25
MervinPraison Dec 17, 2025
7ec1b71
feat(docs): Simplify workflow documentation to focus on agent-first a…
MervinPraison Dec 17, 2025
4122d11
fix: exclude real tests from all pattern and fix session test assertions
MervinPraison Dec 17, 2025
062b19c
feat(workflows): Add YAMLWorkflowParser for YAML-based workflow defin…
MervinPraison Dec 17, 2025
5b4248e
docs: Add YAML workflow loading documentation to README
MervinPraison Dec 17, 2025
c3bec3a
feat(cli): Add YAML workflow CLI commands
MervinPraison Dec 17, 2025
016ed04
feat: Extend agents.yaml with workflow patterns (Option D)
MervinPraison Dec 17, 2025
6ace640
refactor: Remove duplicate code
MervinPraison Dec 17, 2025
2af38aa
feat: Add feature parity between agents.yaml and workflow.yaml
MervinPraison Dec 17, 2025
f13c325
Release v2.3.26
MervinPraison Dec 17, 2025
337d260
feat: Add workflow auto-generation (--auto for workflow.yaml)
MervinPraison Dec 17, 2025
ca67dd1
docs: Update README with workflow features and feature parity
MervinPraison Dec 17, 2025
074c2fa
Release v2.3.27
MervinPraison Dec 17, 2025
a011502
feat: Add unified field names with A-I-G-S mnemonic
MervinPraison Dec 17, 2025
79439a0
docs: Update README examples to use canonical field names
MervinPraison Dec 17, 2025
69e2fff
fix: Use _yaml_action from YAML parser when executing workflow steps
MervinPraison Dec 17, 2025
0130f74
docs: Update examples to use canonical field names (agents, instructi…
MervinPraison Dec 17, 2025
1a841b0
fix(ci): Fix Docker publish workflow - trigger on release, update act…
MervinPraison Dec 17, 2025
6028ffe
fix: Fix 15 test failures across multiple test files
MervinPraison Dec 17, 2025
a599cc4
docs: Enhance README with emoji for section headers for better readab…
MervinPraison Dec 17, 2025
5a53eb9
chore: Update dependencies and versioning for PraisonAI
MervinPraison Dec 17, 2025
7037c86
Release v2.3.28
MervinPraison Dec 17, 2025
9d32e38
fix(tests): Mark test_phase2_refactor tests as @pytest.mark.real
MervinPraison Dec 17, 2025
77c0aa6
Release v2.3.29
MervinPraison Dec 18, 2025
0434f54
Release v2.3.30
MervinPraison Dec 18, 2025
c69ea6c
Release v2.3.31
MervinPraison Dec 18, 2025
5826cc2
Release v2.3.32
MervinPraison Dec 18, 2025
146fffc
Release v2.3.33
MervinPraison Dec 18, 2025
69948d6
Release v2.3.30
MervinPraison Dec 18, 2025
5fcc978
Release v2.3.31
MervinPraison Dec 18, 2025
89de548
Release v2.3.32
MervinPraison Dec 18, 2025
19d0e70
docs: Add performance benchmarks and auto-update functionality
MervinPraison Dec 18, 2025
9e0b0ab
Release v2.3.33
MervinPraison Dec 18, 2025
846802f
Release v2.3.34
MervinPraison Dec 18, 2025
5eef49a
Release v2.3.35
MervinPraison Dec 18, 2025
aacbb8a
Release v2.3.36
MervinPraison Dec 18, 2025
ce0c409
Release v2.3.37
MervinPraison Dec 18, 2025
841c45d
Release v2.3.38
MervinPraison Dec 18, 2025
a1748da
Release v2.3.39
MervinPraison Dec 18, 2025
642a3c8
Release v2.3.40
MervinPraison Dec 18, 2025
a458683
Release v2.3.41
MervinPraison Dec 18, 2025
32412b1
upate
MervinPraison Dec 18, 2025
b8c81f2
Release v2.3.42
MervinPraison Dec 18, 2025
a410073
Add MCP Registry badge and ignore MCP tokens
MervinPraison Dec 18, 2025
23d77f2
docs: Add AutoAgents workflow patterns examples and update README
MervinPraison Dec 19, 2025
8e49f32
refactor: Add BaseAutoGenerator class and improve WorkflowAutoGenerator
MervinPraison Dec 19, 2025
d340fbe
feat: Implement all remaining AutoAgents improvements (TDD)
MervinPraison Dec 19, 2025
5e53a37
Release v2.3.43
MervinPraison Dec 19, 2025
3c65f62
Release v2.3.44
MervinPraison Dec 19, 2025
ccacbf6
Add External Agents CLI documentation to README
MervinPraison Dec 19, 2025
a6d759a
Add Code category with individual examples for external CLI integrations
MervinPraison Dec 19, 2025
26aef3b
docs: Update README with Model Router info and fix links
MervinPraison Dec 19, 2025
0bff67e
docs: Add examples README with quick links to docs
MervinPraison Dec 19, 2025
fae0c16
Release v2.3.45
MervinPraison Dec 19, 2025
806d1ee
fix: suppress crewai.cli.config INFO log at startup
MervinPraison Dec 19, 2025
7caa74e
Release v2.3.46
MervinPraison Dec 19, 2025
1b869a8
Release v2.3.47
MervinPraison Dec 19, 2025
a9a6c38
Release v2.3.48
MervinPraison Dec 19, 2025
858a0c1
docs(readme): update AI commit CLI with security scanning and auto mode
MervinPraison Dec 19, 2025
46594d5
Release v2.3.49
MervinPraison Dec 19, 2025
90f88db
fix(readme): correct CLI docs URLs to include /docs/ prefix
MervinPraison Dec 19, 2025
6dbbeac
Release v2.3.50
MervinPraison Dec 19, 2025
9ae516d
Release v2.3.51
MervinPraison Dec 19, 2025
3aa994c
Release v2.3.52
MervinPraison Dec 19, 2025
b62ea0a
Release v2.3.53
MervinPraison Dec 19, 2025
7f83e80
Release v2.3.54
MervinPraison Dec 19, 2025
3766924
Release v2.3.55
MervinPraison Dec 19, 2025
3d37164
Release v2.3.56
MervinPraison Dec 19, 2025
f02a12c
Release v2.3.57
MervinPraison Dec 19, 2025
2bd6930
Release v2.3.58
MervinPraison Dec 20, 2025
23dc647
Release v2.3.59
MervinPraison Dec 20, 2025
9e2f9cd
Release v2.3.60
MervinPraison Dec 20, 2025
a230fd8
fix: Fix failing unit tests for ClaudeCodeSDK and QueryRewriter CLI
MervinPraison Dec 20, 2025
04f1aa0
fix: Skip integration tests when using test API key
MervinPraison Dec 20, 2025
46e4fbf
fix: Improve API key validation in integration test skip conditions
MervinPraison Dec 20, 2025
4562fb5
fix: Preserve real API keys for integration tests in conftest.py
MervinPraison Dec 20, 2025
08af052
Release v2.3.61
MervinPraison Dec 20, 2025
b4765f0
Release v2.3.62
MervinPraison Dec 20, 2025
fc9e2bf
Release v2.3.63
MervinPraison Dec 20, 2025
152a130
Release v2.3.64
MervinPraison Dec 20, 2025
d971e94
Release v2.3.65
MervinPraison Dec 20, 2025
d2809e8
Fix duplicate --max-retries argument conflict in CLI parser
MervinPraison Dec 21, 2025
9f93b84
Release v2.3.66
MervinPraison Dec 22, 2025
702de8c
Release v2.3.67
MervinPraison Dec 22, 2025
08ce396
Release v2.3.68
MervinPraison Dec 22, 2025
d6ad09a
Release v2.3.69
MervinPraison Dec 22, 2025
a238073
Release v2.3.70
MervinPraison Dec 22, 2025
eeb46fe
Release v2.3.71
MervinPraison Dec 22, 2025
ae08ca6
Release v2.3.72
MervinPraison Dec 22, 2025
253f378
Reorganize README feature table with improved categorization and hier…
MervinPraison Dec 22, 2025
eb82429
Release v2.3.73
MervinPraison Dec 22, 2025
579da50
Release v2.3.74
MervinPraison Dec 22, 2025
18b620d
Release v2.3.75
MervinPraison Dec 22, 2025
909ccc5
Release v2.3.76
MervinPraison Dec 23, 2025
dffd8d0
Release v2.3.77
MervinPraison Dec 23, 2025
6e7156e
Release v2.3.78
MervinPraison Dec 23, 2025
3591c53
Release v2.3.79
MervinPraison Dec 23, 2025
9f11771
Release v2.3.80
MervinPraison Dec 23, 2025
ae7f3a8
Release v2.3.81
MervinPraison Dec 23, 2025
9c39354
Release v2.3.82
MervinPraison Dec 23, 2025
7a2fc19
Release v2.3.83
MervinPraison Dec 23, 2025
453efa2
Release v2.3.83
MervinPraison Dec 23, 2025
d4710f8
Release v2.3.84
MervinPraison Dec 23, 2025
10bff9a
Release v2.3.84
MervinPraison Dec 23, 2025
0404a41
Release v2.3.85
MervinPraison Dec 23, 2025
4519473
Release v2.3.86
MervinPraison Dec 23, 2025
608fe7e
Release v2.3.87
MervinPraison Dec 23, 2025
e1489af
Add 'response' field to workflow API for consistency with single-agen…
MervinPraison Dec 23, 2025
b10c3e0
Release v2.4.0
MervinPraison Dec 24, 2025
b77ee1b
Add documentation for 6 new features: Shadow Git Checkpoints, Backgro…
MervinPraison Dec 24, 2025
53d2eb5
Release v2.4.1
MervinPraison Dec 24, 2025
038f267
Update database initialization to use db() shortcut and expand tools …
MervinPraison Dec 25, 2025
b69e528
Release v2.4.2
MervinPraison Dec 25, 2025
85bc2b7
Add Smithery badge
gurdasnijor Dec 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
patreon: MervinPraison
ko_fi: MervinPraison
34 changes: 34 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
name: Bug report
about: Create a report to help us improve
title: '[BUG] '
labels: bug
assignees: ''
---

## Environment
- Provider (select one):
- [ ] Anthropic
- [ ] OpenAI
- [ ] Google Vertex AI
- [ ] AWS Bedrock
- [ ] Other: <!-- specify -->
- PraisonAI version: <!-- if known -->
- Operating System: <!-- e.g. macOS 14.3, Windows 11, Ubuntu 22.04 -->

## Full Code
<!-- Full code that reproduces the bug -->

## Steps to Reproduce
1. <!-- First step -->
2. <!-- Second step -->
3. <!-- And so on... -->

## Expected Behavior
<!-- What you expected to happen -->

## Actual Behavior
<!-- What actually happened -->

## Additional Context
<!-- Add any other context about the problem here, such as screenshots, logs, etc. -->
256 changes: 256 additions & 0 deletions .github/actions/claude-code-action/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,256 @@
name: "Claude Code Action"
description: "Run Claude Code in GitHub Actions workflows"

inputs:
anthropic_api_key:
description: "Anthropic API key"
required: false
github_token:
description: "GitHub token for Claude to operate with"
required: false
default: ${{ github.token }}
trigger_phrase:
description: "The trigger phrase to look for in comments, issue/PR bodies, and issue titles"
required: false
default: "@claude"
assignee_trigger:
description: "The assignee username that triggers the action (e.g. @claude). Only used for issue assignment"
required: false
max_turns:
description: "Maximum number of conversation turns Claude can take"
required: false
timeout_minutes:
description: "Timeout in minutes for execution"
required: false
default: "30"
model:
description: "Model to use (provider-specific format required for Bedrock/Vertex)"
required: false
use_bedrock:
description: "Use Amazon Bedrock with OIDC authentication instead of direct Anthropic API"
required: false
default: "false"
use_vertex:
description: "Use Google Vertex AI with OIDC authentication instead of direct Anthropic API"
required: false
default: "false"
allowed_tools:
description: "Additional tools for Claude to use (the base GitHub tools will always be included)"
required: false
default: ""
disallowed_tools:
description: "Tools that Claude should never use"
required: false
default: ""
custom_instructions:
description: "Additional custom instructions to include in the prompt for Claude"
required: false
default: ""
mcp_config:
description: "Additional MCP configuration (JSON string) that merges with the built-in GitHub MCP servers"
required: false
default: ""
claude_env:
description: "Custom environment variables to pass to Claude Code execution (YAML format)"
required: false
default: ""
direct_prompt:
description: "Direct prompt for Claude to execute automatically without needing a trigger (for automated workflows)"
required: false

runs:
using: "composite"
steps:
- name: Install Claude Code
shell: bash
run: npm install -g @anthropic-ai/claude-code

- name: Install GitHub MCP Server
shell: bash
run: |
claude mcp add-json github '{
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server:sha-ff3036d"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${{ inputs.github_token }}"
}
}'

- name: Extract GitHub Context and Create Prompt
shell: bash
id: prepare_context
env:
# Pass user-controlled inputs via environment variables to prevent script injection (GHSL-2025-093)
EVENT_COMMENT_BODY: ${{ github.event.comment.body }}
EVENT_ISSUE_TITLE: ${{ github.event.issue.title }}
EVENT_ISSUE_BODY: ${{ github.event.issue.body }}
EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}
EVENT_PR_TITLE: ${{ github.event.pull_request.title }}
EVENT_PR_NUMBER: ${{ github.event.pull_request.number }}
EVENT_REVIEW_BODY: ${{ github.event.review.body }}
EVENT_ASSIGNEE_LOGIN: ${{ github.event.assignee.login }}
INPUT_TRIGGER_PHRASE: ${{ inputs.trigger_phrase }}
INPUT_ASSIGNEE_TRIGGER: ${{ inputs.assignee_trigger }}
INPUT_DIRECT_PROMPT: ${{ inputs.direct_prompt }}
EVENT_ACTION: ${{ github.event.action }}
EVENT_NAME: ${{ github.event_name }}
REPO_NAME: ${{ github.repository }}
run: |
echo "🔍 Extracting GitHub context from event: $EVENT_NAME"

# Function to check for trigger phrase
check_trigger() {
local text="$1"
local trigger="$INPUT_TRIGGER_PHRASE"
if [[ "$text" == *"$trigger"* ]]; then
return 0
fi
return 1
}

# Extract context based on event type
TRIGGER_FOUND="false"
USER_REQUEST=""
CONTEXT_INFO=""

case "$EVENT_NAME" in
"issue_comment")
COMMENT_BODY="$EVENT_COMMENT_BODY"
ISSUE_TITLE="$EVENT_ISSUE_TITLE"
ISSUE_NUMBER="$EVENT_ISSUE_NUMBER"

if check_trigger "$COMMENT_BODY"; then
TRIGGER_FOUND="true"
USER_REQUEST="$COMMENT_BODY"
CONTEXT_INFO="Issue Comment on #$ISSUE_NUMBER: $ISSUE_TITLE"
fi
;;

"pull_request_review_comment")
COMMENT_BODY="$EVENT_COMMENT_BODY"
PR_TITLE="$EVENT_PR_TITLE"
PR_NUMBER="$EVENT_PR_NUMBER"

if check_trigger "$COMMENT_BODY"; then
TRIGGER_FOUND="true"
USER_REQUEST="$COMMENT_BODY"
CONTEXT_INFO="PR Comment on #$PR_NUMBER: $PR_TITLE"
fi
;;

"pull_request_review")
REVIEW_BODY="$EVENT_REVIEW_BODY"
PR_TITLE="$EVENT_PR_TITLE"
PR_NUMBER="$EVENT_PR_NUMBER"

if check_trigger "$REVIEW_BODY"; then
TRIGGER_FOUND="true"
USER_REQUEST="$REVIEW_BODY"
CONTEXT_INFO="PR Review on #$PR_NUMBER: $PR_TITLE"
fi
;;

"issues")
ISSUE_BODY="$EVENT_ISSUE_BODY"
ISSUE_TITLE="$EVENT_ISSUE_TITLE"
ISSUE_NUMBER="$EVENT_ISSUE_NUMBER"

if check_trigger "$ISSUE_TITLE" || check_trigger "$ISSUE_BODY"; then
TRIGGER_FOUND="true"
USER_REQUEST="$ISSUE_BODY"
CONTEXT_INFO="Issue #$ISSUE_NUMBER: $ISSUE_TITLE"
elif [[ "$EVENT_ACTION" == "assigned" && -n "$INPUT_ASSIGNEE_TRIGGER" ]]; then
ASSIGNEE="$EVENT_ASSIGNEE_LOGIN"
if [[ "$ASSIGNEE" == "$INPUT_ASSIGNEE_TRIGGER" ]]; then
TRIGGER_FOUND="true"
USER_REQUEST="$ISSUE_BODY"
CONTEXT_INFO="Issue #$ISSUE_NUMBER assigned to $ASSIGNEE: $ISSUE_TITLE"
fi
fi
;;
esac

# Check for direct prompt override
if [[ -n "$INPUT_DIRECT_PROMPT" ]]; then
TRIGGER_FOUND="true"
USER_REQUEST="$INPUT_DIRECT_PROMPT"
CONTEXT_INFO="Automated GitHub workflow"
fi

if [[ "$TRIGGER_FOUND" != "true" ]]; then
echo "❌ No trigger phrase found or direct prompt provided. Exiting gracefully."
echo "SKIP_EXECUTION=true" >> $GITHUB_ENV
exit 0
fi

echo "✅ Trigger found! Context: $CONTEXT_INFO"

# Create comprehensive prompt
mkdir -p /tmp/claude-action
cat > /tmp/claude-action/github-context-prompt.txt << EOF
You are Claude Code, an AI assistant helping with GitHub workflows and code.

Repository: $REPO_NAME
Context: $CONTEXT_INFO
Event: $EVENT_NAME

User Request:
$USER_REQUEST

Please analyze the request and provide helpful assistance. You have access to repository tools and can help with:
- Code analysis and implementation
- GitHub workflows and automation
- Pull request reviews and feedback
- Issue resolution and bug fixes
- Documentation updates
- Testing and deployment

Respond naturally and helpfully to the user's request using the available tools.
EOF

echo "PROMPT_FILE=/tmp/claude-action/github-context-prompt.txt" >> $GITHUB_ENV
echo "SKIP_EXECUTION=false" >> $GITHUB_ENV

- name: Run Claude Code
if: env.SKIP_EXECUTION != 'true'
shell: bash
run: |
echo "🚀 Running Claude Code with GitHub context..."

# Build command arguments
CMD_ARGS=("-p" "--verbose" "--output-format" "stream-json")

# Add max turns if specified
if [[ -n "${{ inputs.max_turns }}" ]]; then
CMD_ARGS+=("--max-turns" "${{ inputs.max_turns }}")
fi

# Add allowed tools (include GitHub tools by default)
TOOLS="mcp__github__get_issue,mcp__github__get_issue_comments,mcp__github__update_issue,mcp__github__search_issues,mcp__github__list_issues,mcp__github__create_comment,Read,Write,Edit,Bash"
if [[ -n "${{ inputs.allowed_tools }}" ]]; then
TOOLS="$TOOLS,${{ inputs.allowed_tools }}"
fi
CMD_ARGS+=("--allowedTools" "$TOOLS")

# Add disallowed tools
if [[ -n "${{ inputs.disallowed_tools }}" ]]; then
CMD_ARGS+=("--disallowedTools" "${{ inputs.disallowed_tools }}")
fi

echo "📝 Executing Claude Code with prompt from file..."

# Execute Claude Code with timeout, using stdin for the prompt
TIMEOUT_SECONDS=$((${{ inputs.timeout_minutes }} * 60))
timeout $TIMEOUT_SECONDS claude "${CMD_ARGS[@]}" < "${{ env.PROMPT_FILE }}"

echo "✅ Claude Code execution completed"
env:
ANTHROPIC_API_KEY: ${{ inputs.anthropic_api_key }}
GITHUB_TOKEN: ${{ inputs.github_token }}
87 changes: 87 additions & 0 deletions .github/actions/claude-issue-triage-action/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
name: "Claude Issue Triage Action"
description: "Automatically triage GitHub issues using Claude Code"

inputs:
timeout_minutes:
description: "Timeout in minutes for execution"
required: false
default: "5"
anthropic_api_key:
description: "Anthropic API key"
required: true
github_token:
description: "GitHub token with repo and issues permissions"
required: true

runs:
using: "composite"
steps:
- name: Checkout repository code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Create prompt file
shell: bash
run: |
mkdir -p /tmp/claude-prompts
cat > /tmp/claude-prompts/claude-issue-triage-prompt.txt << 'EOF'
You're an issue triage assistant for GitHub issues. Your task is to analyze the issue and select appropriate labels from the provided list.

IMPORTANT: Don't post any comments or messages to the issue. Your only action should be to apply labels.

Issue Information:
- REPO: ${{ github.repository }}
- ISSUE_NUMBER: ${{ github.event.issue.number }}

TASK OVERVIEW:

1. First, fetch the list of labels available in this repository by running: `gh label list`. Run exactly this command with nothing else.

2. Next, use the GitHub tools to get context about the issue:
- You have access to these tools:
- mcp__github__get_issue: Use this to retrieve the current issue's details including title, description, and existing labels
- mcp__github__get_issue_comments: Use this to read any discussion or additional context provided in the comments
- mcp__github__update_issue: Use this to apply labels to the issue (do not use this for commenting)
- mcp__github__search_issues: Use this to find similar issues that might provide context for proper categorization and to identify potential duplicate issues
- mcp__github__list_issues: Use this to understand patterns in how other issues are labeled
- Start by using mcp__github__get_issue to get the issue details

3. Analyze the issue content, considering:
- The issue title and description
- The type of issue (bug report, feature request, question, etc.)
- Technical areas mentioned
- Severity or priority indicators
- User impact
- Components affected

4. Select appropriate labels from the available labels list provided above:
- Choose labels that accurately reflect the issue's nature
- Be specific but comprehensive
- Select priority labels if you can determine urgency (high-priority, med-priority, or low-priority)
- Consider platform labels (android, ios) if applicable
- If you find similar issues using mcp__github__search_issues, consider using a "duplicate" label if appropriate. Only do so if the issue is a duplicate of another OPEN issue.

5. Apply the selected labels:
- Use mcp__github__update_issue to apply your selected labels
- DO NOT post any comments explaining your decision
- DO NOT communicate directly with users
- If no labels are clearly applicable, do not apply any labels

IMPORTANT GUIDELINES:
- Be thorough in your analysis
- Only select labels from the provided list above
- DO NOT post any comments to the issue
- Your ONLY action should be to apply labels using mcp__github__update_issue
- It's okay to not add any labels if none are clearly applicable
EOF

- name: Run Claude Code
uses: ./.github/actions/claude-code-action
with:
prompt_file: /tmp/claude-prompts/claude-issue-triage-prompt.txt
allowed_tools: "Bash(gh label list),mcp__github__get_issue,mcp__github__get_issue_comments,mcp__github__update_issue,mcp__github__search_issues,mcp__github__list_issues"
install_github_mcp: "true"
timeout_minutes: ${{ inputs.timeout_minutes }}
anthropic_api_key: ${{ inputs.anthropic_api_key }}
github_token: ${{ inputs.github_token }}
Loading