mirror of
https://github.com/Mintplex-Labs/anything-llm.git
synced 2026-07-19 14:13:35 -04:00
[GH-ISSUE #4837] [Bug] Custom Skill enabled globally but missing in @agent bubble and Workspace settings (macOS Desktop brew) #3047
Closed
opened 2026-02-22 18:32:24 -05:00 by yindo
·
3 comments
No Branch/Tag Specified
master
5846-bug-when-scrolling-up-scrolling-jumps
refactor-remove-workspace-pfp
5969-bug-stopgenerationbutton-disappears-on-the-first-prompt-that-initiates-an-agent-session
2235-bug-how-to-upload-a-folder-with-subfolders-with-files-to-anythingllm
5990-workspace-update-fails-with-unknown-argument-router_id-v1130v1150-intel-mac
opencomputer-examples
pg
feat/image-generation-translations
feat/image-generation
5924-bug-meeting-summary-fails-with-sincludes-is-not-a-function-when-default-llm-is-anthropic-claude
render
feat/uniform-modal-component
5883-bug-unescaped-content-in-json-strings-being-passed-to-document-generator-tools
5901-bug-api-update-embeddings-fails-prisma-argument-filename-is-missing-on-workspace_documentscreate-desktop-windows-v1141
hybrid-search
1981-translations
5752-bug-prompts-to-local-jan-endpoint-unresponsive
feat-disable-native-tool-calling-env-var
5676-bug-non-ollama-agent-providers-do-not-parse-and-present-reasoning-content
feat/markdown-web-scraping
5717-bug-apiv1documentupload-silently-drops-metadata-field-in-desktop-1130-arg-count-mismatch-nested-payload-key
fix/aibitat-context-overflow
5711-bug-erratic-deepseek-v4-flash-the-agent-model-failed-to-respond-400-the-reasoning_content
5631-feat-custom-api-request-timeouts-for-ai-providers
feat-reasoning-control
feat-agent-clarifying-questions-translations
5583-bug-lm-studio-provider-does-not-present-reasoning-output
5313-normalize-translations
feat/memory-translations
5305-lemonade-embedding-engine-swallows-errors-falsely-reports-documents-as-embedded
5060-bug-agent-interactions-agent-are-not-persisted-to-thread-history-via-api
pptx-subagent
feat-render-images-from-mcp-tool-results
stt-provider-expansion-openai-api-compatible
feat-file-search-agent-tool
feat-native-embedder-job-queue
5189-normalize-translations
feat-file-search-agent-tool-translations
i18n-eslint
5140-auto-migration
5112-bug-openrouter-failed-message-bug
3506-feat-parameters-for-openrouter-models
4992-feat-preserve-scroll-position
4973-bug-markdown-numbered-list-display-in-reasoning-pane
desktop
4938-bug-pending-chat-rerendering-ui-bug
quickstart-env
node-llama-cpp-in-container-cuda
node-llama-cpp-in-container
ollama-in-container
4817-feat-set-cooldown-per-mcp-server
4845-keyboard-shortcuts-to-navigate-in-chat
4844-feat-reorder-threads-by-latest-interaction
standardize-username-constraints-normalize-translations
4792-feat-refactor-workspacepfp-image
1382-embed-ip-improvements
1382-bug-embed-api-improvements
refactor-eslint-frontend
4687-feat-refactor-vector-db-providers
4615-feat-disable-apidocs-with-environment-variable
4559-feat-agent-web-search-enable-ordering-of-results
4599-bug-ollama-race-condition-bug
4572-bug-lmstudio-provided-llm-stopped-working-with-anything-llm-after-upgrading-to-190
4508-agent-youtube-transcript-analysis
4497-feat-workspace-names
frontend-eslint
ollama-lmstudio-auto-context-window
4431-validate-vector-database-connectioN
2019-slash-command-keyboard-selection
microsoft-foundry-provider
4431-validate-vector-database-connection
4325-sys-prompt-var-improvements
3209-feat-apiv1workspacestream-chat-sources-citations
4210-bug-voice-to-text-overwrite
4136-feat-jan-as-a-backend-server-option
4172-feat-openai-o3-support
1.8.3-rerelease
web-push-notifications-service
tasks
3955-feat-jinaai-embedder-provider-support
3921-feat-agent-skills-uiux-improvements
3901-bug-validfunccall-checks-optional-arguments
keyboard-dev
1787-custom-roles-and-permissions
add-jira-slack-data-connector
office-extension-wip
lightmode-dropdown-color-update
3586-bug-agent-flow-function-description-provided-by-user-is-not-seen-in-the-llm-query
3463-bug-agent-continues-to-run-if-request-failed-even-after-exit
3439-feat-call-variables-within-the-flow-api-block-url-field
3282-manager-view-models-workspace
3280-token-counting-server-side-truncation-improvements
3147-bug-embedded-chat-widget---not-considering-query-mode-option-always-working-in-chat-mode
2995-feat-disable-temperature-setting-for-deepseek-r1-deepseek-reasoner-model
2827-feat-perplexity-citations
2866-feat-finally-a-gemini-models-endpoint
2647-feat-hpp-header-for-a-c++-code-file-mime-addition
lancedb-revert
1656-feat-implement-tooltip-ui-designs
2011-feat-bump-perplexity-models
1873-feat-auto-add-and-watch-folder-for-document-uploads
1297-feat-gemini-agent-support
1759-bug-ui-bug-fixes
1686-feat-implement-winston-for-logging
1536-bug-toggling-on-users-can-delete-workspaces-does-not-take-effect
agent-ui-mobile-styles
1522-feat-chromadb-support
1595-bug-unable-to-get-live-web-search-and-browsing-agent-working-using-google-custom-search-engine-error-getaddrinfo-enotfound-http-errno-3008
1582-bug-lm-studio-does-not-allow-for-different-model-selection
1312-bug-usernames-should-not-be-case-sensitive-when-logging-in
1029-feat-hf-serverless-inference-api
1086-feat-implement-normalized-input-fields
knowledge-graph-support
644-bug-uploaded-file-name-does-not-match-the-displayed-file-name-after-the-upload
v1.15.0
v1.14.2
v1.14.1
v1.14.0
v1.13.0
v1.12.1
v1.12.0
v1.11.2
v1.11.1
v1.11.0
v1.10.0
v1.9.1
v1.9.0
v1.8.5
v1.8.4
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.7.8
v1.7.6
v1.7.5
v1.7.4
v1.4.0
v1.3.0
v1.2.4
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.1.1
v1.1.0
v1.0.0
Labels
Clear labels
Desktop
Docker
Integration Request
Integration Request
OS: Linux
OS: Mobile
OS: Windows
UI/UX
blocked
bug
bug
core-team-only
documentation
duplicate
embed-widget
enhancement
feature request
github_actions
good first issue
investigating
needs info / can't replicate
possible bug
pull-request
question
stage: specifications
wontfix
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: Mintplex-Labs/anything-llm#3047
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Fywzero on GitHub (Jan 8, 2026).
Original GitHub issue: https://github.com/Mintplex-Labs/anything-llm/issues/4837
How are you running AnythingLLM?
Local development
What happened?
Description: I am unable to use a custom agent skill even though it is correctly placed in the storage folder and toggled ON in the global settings.
Environment:
OS: macOS (Mac Studio)
Installation Method: Homebrew (brew install --cask anythingllm)
Version: Latest Desktop Version
Storage Location: Default (~/Library/Application Support/anythingllm-desktop/storage)
Steps to Reproduce:
Created a custom skill folder sd-painter in storage/plugins/agent-skills/.
Added plugin.json (v1.0.0 schema) and handler.js following the Official Developer Guide.
In Global Settings -> Agent Skills, the "Sd painter" skill appears and is toggled ON.
Navigate to a Workspace (e.g., "default") -> Settings -> Agent Configuration.
Click "Configure Agent Skills".
Expected Behavior: The UI should show a list of skills (including the custom one) with checkboxes to enable them for the specific workspace.
Actual Behavior:
Clicking "Configure Agent Skills" in Workspace settings redirects me back to the Global Agent Skills page instead of showing the selection list.
Typing @agent in the chat does not show the custom skill icon/tag, even though other core skills like native-python work perfectly.
Cleaned .DS_Store and restarted the app multiple times, but the issue persists.
Code Used (plugin.json):
JSON
{
"schema": "skill-1.0.0",
"id": "sd-painter",
"version": "1.0.0",
"name": "SD Painter",
"hubId": "sd-painter",
"description": "Stable Diffusion integration",
"active": true,
"setup_args": {
"SD_URL": {"type": "string", "required": true, "input": {"type": "text", "default": "http://127.0.0.1:7860"}}
},
"call_args": {
"prompt": {"type": "string", "description": "prompt"}
}
}
Are there known steps to reproduce?
No response
@timothycarambat commented on GitHub (Jan 8, 2026):
Is there any way you can post the
plugin.jsonand thehandler.jsfile that runs the skill? The bug would seemingly be indicate something going wrong with loading or execution.If a custom skill fails to validate or load, we don't abort the agent call entirely and just log it as invalid and move on.
Since the plugin shows in the UI for skills that at least means the plugin json is being found, but something is going wrong during the bootstrap process for making it truly available to the agent flow.
That being said, I'm sure it can be a simple fix. If you can make that handler available, we can see what exactly is going wrong.
@Fywzero commented on GitHub (Jan 9, 2026):
Hi @timothycarambat,
Thank you for the quick response! I'm glad to hear that the plugin.json is at least being recognized.
To help you diagnose why the bootstrap process is failing, here are the exact contents of my plugin.json and handler.js. I have ensured that the files are saved in UTF-8 encoding and the folder name matches the hubId.
plugin.json
handler.js
JSON
{
"schema": "skill-1.0.0",
"id": "sd-painter-final",
"version": "1.0.0",
"name": "Local Stable Diffusion",
"hubId": "sd-painter-final",
"description": "Generate images using local Stable Diffusion API",
"active": true,
"setup_args": {
"SD_URL": {
"label": "Stable Diffusion URL",
"type": "string",
"required": true,
"input": {
"type": "text",
"default": "http://127.0.0.1:7860"
}
}
},
"call_args": {
"prompt": {
"type": "string",
"description": "The prompt for image generation"
}
}
}
3. handler.js:
JavaScript
/**
*/
async function handler(args) {
// 1. 按照规范从 this.runtimeArgs 获取通过 UI 配置的 SD_URL
const sdUrl = (this.runtimeArgs || {}).SD_URL;
// 2. 获取 LLM 传入的 prompt
const prompt = args?.prompt;
if (!prompt) {
return "Error: Prompt is required but was not provided.";
}
try {
// 3. 安全检查并调用 introspect (反馈给前端气泡)
if (typeof this.introspect === "function") {
this.introspect(
Generating image with prompt: ${prompt});}
} catch (error) {
// 6. 按照规范记录错误并返回字符串
if (typeof this.logger === "function") {
this.logger(
Skill Error: ${error.message});}
return
Skill execution failed: ${error.message};}
}
// 必须使用 CommonJS 导出格式
module.exports = { handler };
I have also attached the original files below for your review. Please let me know if there are any specific logs I should check to provide more detail on the bootstrap failure.
Best regards, fywzero
plugin.json
handler.js
@timothycarambat commented on GitHub (Jan 9, 2026):
Ah, easy fix! Thanks for providing the files. Here are the completed files:
handler.js
plugin.json
What i changed:
hubIdand the folder name must match otherwise you will see this error log in the backend logs[0] [AgentHandler] Imported plugin by hubId sd-painter not found in plugin directory. Skipping inclusion to agent cluster.So you corrected path is
~/Library/Application Support/anythingllm-desktop/storage/plugins/agent-skills/sd-painter-final/In your plugin.json you had
requiredfor SD_URL but also have a default. I removed required since there is a default.The plugin was missing the entire
entrypointblock - here is the plugin.json referenceThe export is not
module.exports = {handler}is itmodule.exports.runtime.handlerso I changed the last line to thismodule.exports = { runtime: { handler } };Here is the reference for that - https://docs.anythingllm.com/agent/custom/handler-js
[Bug] Custom Skill enabled globally but missing in @agent bubble and Workspace settings (macOS Desktop brew)to [GH-ISSUE #4837] [Bug] Custom Skill enabled globally but missing in @agent bubble and Workspace settings (macOS Desktop brew)