Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
b119bcf
skills_upload_prototype
Pakchoioioi Feb 4, 2026
187353d
Merge branch 'main' into skill_upload_prototype
4pmtong Feb 10, 2026
637310c
WIP: skill_toolkit
4pmtong Feb 11, 2026
b2515ed
WIP skill config by user
4pmtong Feb 11, 2026
f49933f
Merge branch 'main' into feat-skills
4pmtong Feb 13, 2026
e63538e
Update skill ui (#1252)
Douglasymlai Feb 13, 2026
5780199
add config for skills
4pmtong Feb 13, 2026
7206787
prompt for SOCIAL_MEDIA_SYS_PROMPT
4pmtong Feb 13, 2026
a2431ec
:fire: remove skill_config_api.router
4pmtong Feb 13, 2026
1c6c664
Merge branch 'main' into feat-skills
4pmtong Feb 13, 2026
41a522e
Fix: skill load (#1277)
Pakchoioioi Feb 16, 2026
1869f73
feat(skills): example skills no delete, agents tab reorder, SkillTool…
4pmtong Feb 16, 2026
69928c3
Merge branch 'main' into feat-skills
4pmtong Feb 16, 2026
93ee3da
Potential fix for code scanning alert no. 103: Incomplete string esca…
4pmtong Feb 16, 2026
55ed0f9
fix: apply ruff lint and format fixes
4pmtong Feb 16, 2026
40a1805
fix: apply ruff lint and format fixes
4pmtong Feb 16, 2026
d5feb71
sync from disk for zip
4pmtong Feb 18, 2026
94ff13e
:fire: move example skills
4pmtong Feb 18, 2026
df701ef
Fix skill upload bug (#1278)
Douglasymlai Feb 18, 2026
e92dae0
Merge branch 'main' into feat-skills
4pmtong Feb 18, 2026
2348977
:fire: remove social_media_agent
4pmtong Feb 18, 2026
c5ab587
bug fix for duplicated name detection-keep only skill file name detec…
Douglasymlai Feb 18, 2026
71f0ed8
enhance: Feat skills PR1221 (#1303)
Wendong-Fan Feb 18, 2026
fda45a9
Merge branch 'main' into feat-skills
Wendong-Fan Feb 18, 2026
2e94c52
Merge branch 'main' into feat-skills
Wendong-Fan Feb 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ Built on [CAMEL-AI][camel-site]'s acclaimed open-source project, our system intr
- [📄 Open Source License](#-open-source-license)
- [🌐 Community & contact](#-community--contact)

####
####

<br/>

Expand Down
2 changes: 1 addition & 1 deletion README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
- [📄 开源许可证](#-%E5%BC%80%E6%BA%90%E8%AE%B8%E5%8F%AF%E8%AF%81)
- [🌐 社区与联系](#-%E7%A4%BE%E5%8C%BA%E4%B8%8E%E8%81%94%E7%B3%BB)

####
####

<br/>

Expand Down
2 changes: 1 addition & 1 deletion README_JA.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@
- [📄 オープンソースライセンス](#-%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9)
- [🌐 コミュニティ & お問い合わせ](#-%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3--%E3%81%8A%E5%95%8F%E3%81%84%E5%90%88%E3%82%8F%E3%81%9B)

####
####

<br/>

Expand Down
2 changes: 1 addition & 1 deletion README_PT-BR.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ Construído sobre o aclamado projeto open source da [CAMEL-AI][camel-site], noss
- [📄 Licença Open Source](#-licen%C3%A7a-open-source)
- [🌐 Comunidade & Contato](#-comunidade--contato)

####
####

<br/>

Expand Down
10 changes: 10 additions & 0 deletions backend/app/agent/factory/browser.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
# TODO: Remove NoteTakingToolkit and use TerminalToolkit instead
from app.agent.toolkit.note_taking_toolkit import NoteTakingToolkit
from app.agent.toolkit.search_toolkit import SearchToolkit
from app.agent.toolkit.skill_toolkit import SkillToolkit
from app.agent.toolkit.terminal_toolkit import TerminalToolkit
from app.agent.utils import NOW_STR
from app.component.environment import env
Expand Down Expand Up @@ -97,6 +98,13 @@ def browser_agent(options: Chat):
)
note_toolkit = message_integration.register_toolkits(note_toolkit)

skill_toolkit = SkillToolkit(
options.project_id,
Agents.browser_agent,
working_directory=working_directory,
)
skill_toolkit = message_integration.register_toolkits(skill_toolkit)

search_tools = SearchToolkit.get_can_use_tools(options.project_id)
if search_tools:
search_tools = message_integration.register_functions(search_tools)
Expand All @@ -111,6 +119,7 @@ def browser_agent(options: Chat):
*terminal_toolkit,
*note_toolkit.get_tools(),
*search_tools,
*skill_toolkit.get_tools(),
]

system_message = BROWSER_SYS_PROMPT.format(
Expand All @@ -135,6 +144,7 @@ def browser_agent(options: Chat):
HumanToolkit.toolkit_name(),
NoteTakingToolkit.toolkit_name(),
TerminalToolkit.toolkit_name(),
SkillToolkit.toolkit_name(),
],
toolkits_to_register_agent=[web_toolkit_for_agent_registration],
enable_snapshot_clean=True,
Expand Down
10 changes: 10 additions & 0 deletions backend/app/agent/factory/developer.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
# TODO: Remove NoteTakingToolkit and use TerminalToolkit instead
from app.agent.toolkit.note_taking_toolkit import NoteTakingToolkit
from app.agent.toolkit.screenshot_toolkit import ScreenshotToolkit
from app.agent.toolkit.skill_toolkit import SkillToolkit
from app.agent.toolkit.terminal_toolkit import TerminalToolkit
from app.agent.toolkit.web_deploy_toolkit import WebDeployToolkit
from app.agent.utils import NOW_STR
Expand Down Expand Up @@ -70,6 +71,13 @@ async def developer_agent(options: Chat):
)
terminal_toolkit = message_integration.register_toolkits(terminal_toolkit)

skill_toolkit = SkillToolkit(
options.project_id,
Agents.developer_agent,
working_directory=working_directory,
)
skill_toolkit = message_integration.register_toolkits(skill_toolkit)

tools = [
*HumanToolkit.get_can_use_tools(
options.project_id, Agents.developer_agent
Expand All @@ -78,6 +86,7 @@ async def developer_agent(options: Chat):
*web_deploy_toolkit.get_tools(),
*terminal_toolkit.get_tools(),
*screenshot_toolkit.get_tools(),
*skill_toolkit.get_tools(),
]
system_message = DEVELOPER_SYS_PROMPT.format(
platform_system=platform.system(),
Expand All @@ -99,5 +108,6 @@ async def developer_agent(options: Chat):
TerminalToolkit.toolkit_name(),
NoteTakingToolkit.toolkit_name(),
WebDeployToolkit.toolkit_name(),
SkillToolkit.toolkit_name(),
],
)
10 changes: 10 additions & 0 deletions backend/app/agent/factory/document.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
# TODO: Remove NoteTakingToolkit and use TerminalToolkit instead
from app.agent.toolkit.note_taking_toolkit import NoteTakingToolkit
from app.agent.toolkit.pptx_toolkit import PPTXToolkit
from app.agent.toolkit.skill_toolkit import SkillToolkit
from app.agent.toolkit.terminal_toolkit import TerminalToolkit
from app.agent.utils import NOW_STR
from app.model.chat import Chat
Expand Down Expand Up @@ -82,6 +83,13 @@ async def document_agent(options: Chat):
options.project_id, options.get_bun_env()
)

skill_toolkit = SkillToolkit(
options.project_id,
Agents.document_agent,
working_directory=working_directory,
)
skill_toolkit = message_integration.register_toolkits(skill_toolkit)

tools = [
*file_write_toolkit.get_tools(),
*pptx_toolkit.get_tools(),
Expand All @@ -93,6 +101,7 @@ async def document_agent(options: Chat):
*note_toolkit.get_tools(),
*terminal_toolkit.get_tools(),
*google_drive_tools,
*skill_toolkit.get_tools(),
]
system_message = DOCUMENT_SYS_PROMPT.format(
platform_system=platform.system(),
Expand All @@ -118,5 +127,6 @@ async def document_agent(options: Chat):
NoteTakingToolkit.toolkit_name(),
TerminalToolkit.toolkit_name(),
GoogleDriveMCPToolkit.toolkit_name(),
SkillToolkit.toolkit_name(),
],
)
10 changes: 10 additions & 0 deletions backend/app/agent/factory/multi_modal.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
from app.agent.toolkit.note_taking_toolkit import NoteTakingToolkit
from app.agent.toolkit.openai_image_toolkit import OpenAIImageToolkit
from app.agent.toolkit.search_toolkit import SearchToolkit
from app.agent.toolkit.skill_toolkit import SkillToolkit
from app.agent.toolkit.terminal_toolkit import TerminalToolkit
from app.agent.toolkit.video_download_toolkit import VideoDownloaderToolkit
from app.agent.utils import NOW_STR
Expand Down Expand Up @@ -75,6 +76,13 @@ def multi_modal_agent(options: Chat):
working_directory=working_directory,
)
note_toolkit = message_integration.register_toolkits(note_toolkit)

skill_toolkit = SkillToolkit(
options.project_id,
Agents.multi_modal_agent,
working_directory=working_directory,
)
skill_toolkit = message_integration.register_toolkits(skill_toolkit)
tools = [
*video_download_toolkit.get_tools(),
*image_analysis_toolkit.get_tools(),
Expand All @@ -83,6 +91,7 @@ def multi_modal_agent(options: Chat):
),
*terminal_toolkit.get_tools(),
*note_toolkit.get_tools(),
*skill_toolkit.get_tools(),
]
if options.is_cloud():
# TODO: check llm has this model
Expand Down Expand Up @@ -147,5 +156,6 @@ def multi_modal_agent(options: Chat):
TerminalToolkit.toolkit_name(),
NoteTakingToolkit.toolkit_name(),
SearchToolkit.toolkit_name(),
SkillToolkit.toolkit_name(),
],
)
28 changes: 28 additions & 0 deletions backend/app/agent/prompt.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,13 @@

<capabilities>
Your capabilities include:
- **Skills System**: You have access to a library of specialized skills that
provide expert guidance for specific tasks. When a skill is referenced with
double curly braces (e.g., {{pdf}} or {{data-analyzer}}), you should use
`list_skills` to discover available skills and `load_skill` to retrieve the
skill's full content. Skills contain tested code examples, best practices,
and detailed instructions that you MUST follow as your PRIMARY reference when
working on tasks that mention them.
- Video & Audio Analysis:
- Download videos from URLs for analysis.
- Transcribe speech from audio files to text with high accuracy
Expand Down Expand Up @@ -263,6 +270,13 @@

<capabilities>
Your capabilities include:
- **Skills System**: You have access to a library of specialized skills that
provide expert guidance for specific tasks. When a skill is referenced with
double curly braces (e.g., {{pdf}} or {{data-analyzer}}), you should use
`list_skills` to discover available skills and `load_skill` to retrieve the
skill's full content. Skills contain tested code examples, best practices,
and detailed instructions that you MUST follow as your PRIMARY reference when
working on tasks that mention them.
- Document Reading:
- Read and understand the content of various file formats including
- PDF (.pdf)
Expand Down Expand Up @@ -413,6 +427,13 @@

<capabilities>
Your capabilities are extensive and powerful:
- **Skills System**: You have access to a library of specialized skills that
provide expert guidance for specific tasks. When a skill is referenced with
double curly braces (e.g., {{pdf}} or {{data-analyzer}}), you should use
`list_skills` to discover available skills and `load_skill` to retrieve the
skill's full content. Skills contain tested code examples, best practices,
and detailed instructions that you MUST follow as your PRIMARY reference when
working on tasks that mention them.
- **Unrestricted Code Execution**: You can write and execute code in any
language to solve a task. You MUST first save your code to a file (e.g.,
`script.py`) and then run it from the terminal (e.g.,
Expand Down Expand Up @@ -581,6 +602,13 @@

<capabilities>
Your capabilities include:
- **Skills System**: You have access to a library of specialized skills that
provide expert guidance for specific tasks. When a skill is referenced with
double curly braces (e.g., {{pdf}} or {{data-analyzer}}), you should use
`list_skills` to discover available skills and `load_skill` to retrieve the
skill's full content. Skills contain tested code examples, best practices,
and detailed instructions that you MUST follow as your PRIMARY reference when
working on tasks that mention them.
- Search and get information from the web using the search tools.
- Use the rich browser related toolset to investigate websites.
- Use the terminal tools to perform local operations. **IMPORTANT:** Before the
Expand Down
Loading