io.github.divitkashyap/auto-skill-loader
Auto-loads skills into agent sessions. MiniMax vision and search proxy.
Ask AI about io.github.divitkashyap/auto-skill-loader
Powered by Claude Β· Grounded in docs
I know everything about io.github.divitkashyap/auto-skill-loader. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
auto-skill-loader
Give your AI agent a persistent skill library it auto-loads at session start.
OpenCode image note: OpenCode doesn't yet expose real file paths when you paste images β the agent sees a filename instead. Workaround: give the agent an actual file path instead of pasting. Skills auto-load at session start as expected.
mcp-name: io.github.divitkashyap/auto-skill-loader
How it works
- You configure which skills to auto-load in
~/.config/auto-skill-loader/config.yaml - The MCP server reads skill files from your skills directory and exposes them via
skills://active - At session start your agent reads
skills://activeand gets all approved skills auto-injected - No explicit triggers needed β the agent already knows your skills
Why
The main problem: In OpenCode, skills don't auto-load β the agent has to explicitly invoke them or rely on unreliable fuzzy matching. auto-skill-loader solves this by exposing your skill library as an MCP resource that gets read at session start. Deterministic, no guessing.
Bonus: Our proxy tools also work around OpenCode's broken MCP stdio transport for the MiniMax vision and web search tools.
Installation
Option 1: uvx (recommended β no install needed)
uvx auto-skill-loader
Option 2: pip
pip install auto-skill-loader
auto-skill-loader
Option 3: Build from source
git clone https://github.com/divitkashyap/auto-skill-loader.git
cd auto-skill-loader
pip install -e .
auto-skill-loader
Configuration
OpenCode
Add to ~/.config/opencode/opencode.json:
{
"mcp": {
"auto-skill-loader": {
"type": "local",
"command": ["uvx", "auto-skill-loader"],
"enabled": true
}
}
}
Claude Code
Note: Claude Code requires a specific JSON format via add-json:
claude mcp add-json -s user auto-skill-loader '{"type":"stdio","command":"/FULL/PATH/TO/python","args":["-m","server"],"env":{"MINIMAX_TOKEN_PLAN_KEY":"sk-cp-YOUR-KEY-HERE"}}'
Replace /FULL/PATH/TO/python with the path to your Python (e.g. /Users/YOU/auto-skill-loader/.venv/bin/python).
Or for uvx (requires network on first run):
claude mcp add -s user --transport stdio -e MINIMAX_TOKEN_PLAN_KEY=sk-cp-YOUR-KEY auto-skill-loader -- uvx auto-skill-loader
Tested On
| Host | Skill Auto-Load | Vision Proxy | Image Paste | Notes |
|---|---|---|---|---|
| Claude Code (macOS) | β | β Not needed | β | Use minimax-token-plan MCP directly instead |
| OpenCode (macOS) | β | β Works | β Broken | Give file paths instead of pasting |
Skill auto-loading confirmed working on both hosts. The vision proxy bypasses OpenCode's broken stdio transport, but image paste-to-path is a separate rendering issue in OpenCode that requires using file paths.
Other MCP-compatible hosts (Cursor, Zed, etc.) should work with the same configuration β contributions welcome.
Platform Differences & Known Issues
Image Input: OpenCode vs Claude Code
Both hosts work with auto-skill-loader vision tools, but image input behaves differently:
| Host | How images are passed | Recommended workflow |
|---|---|---|
| Claude Code | Images uploaded to URL automatically β tool receives URL | Paste image directly β works |
| OpenCode | Inline images render visually but may not give tools a real path | Give a file path instead of pasting |
OpenCode note: When you paste an image in OpenCode, it may render inline but the agent sees it as a filename string (e.g. logo.png) rather than a real filesystem path. This is a known OpenCode rendering behavior.
Workaround for OpenCode: Instead of pasting, give the agent the actual file path:
analyze this image: /path/to/your/image.png
The agent can access local files directly in OpenCode. If the image is only in your clipboard, the agent can extract it to /tmp/ first.
What We're Monitoring
We actively track the following OpenCode issues:
- Inline image rendering (images pasted don't expose real paths to tools)
- MCP stdio transport for local servers (our proxy tools work around this)
- Session persistence of skills across restarts
If OpenCode releases a fix for inline image paths, this documentation and the vision-analysis skill will be updated to support direct paste workflow. We monitor OpenCode's changelog and release notes β check this repo for updates.
Other Known Issues
| Issue | Severity | Workaround |
|---|---|---|
| OpenCode inline images show as filename, not path | Medium β affects paste workflow | Use file paths instead |
| Claude Code auth conflict (ANTHROPIC_AUTH_TOKEN vs managed key) | Low β cosmetic warning | Harmless, can be ignored |
| First vision call may take 3-5s (uvx download) | Low β one-time | Subsequent calls are ~200ms |
Setup
- Create skills directory (symlink to your existing skills):
mkdir -p ~/.config/auto-skill-loader
ln -sf ~/.config/opencode/skills ~/.config/auto-skill-loader/skills
- Edit
~/.config/auto-skill-loader/config.yaml:
active_skills:
- vision-analysis
- context-maintainer
- markdown-mcp
skills_dir: ~/.config/auto-skill-loader/skills
- Restart your agent. It will now auto-load all listed skills at session start.
Tools
| Tool | What it does |
|---|---|
list_skills | List all available skills in skills_dir with descriptions |
activate_skill | Add a skill to your approved list (persists to config.yaml) |
deactivate_skill | Remove a skill from your approved list |
get_skill_info | Get details about a specific skill |
get_active_skills | List currently active skill names |
suggest_skills | If no skills are active, suggests common ones to get started |
check_prerequisites | Validate a skill's dependencies (MCP tools, API keys, env vars) |
Bonus: MiniMax Vision & Web Search Proxy
auto-skill-loader also exposes two tools that proxy to minimax-coding-plan-mcp with a working stdio transport:
| Tool | What it does |
|---|---|
minimax_understand_image | Analyze images (JPEG, PNG, GIF, WebP up to 20MB) |
minimax_web_search | Web search using MiniMax |
Note: For vision specifically, mmx-cli is now the recommended approach β it's a direct REST call to MiniMax VLM, no MCP transport issues, and handles URLs natively. These proxy tools are useful if you want a unified MCP interface for both skill loading and vision.
The OpenCode MCP Bug
When OpenCode's built-in minimax-coding-plan-mcp MCP integration (minimax-token-plan) is configured, the understand_image tool fails with:
API Error: login fail: Please carry the API secret key in the 'Authorization' field
This happens even when:
- β
MINIMAX_API_KEY/MINIMAX_TOKEN_PLAN_KEYis set correctly - β API key is valid (same key works via direct API calls)
- β Token Plan has available vision quota
Root cause: OpenCode's stdio transport for local MCP servers sends messages in a way that breaks the MCP protocol β likely batched writes without proper flush between JSON-RPC messages. Direct subprocess tests with sequential writes + flush() work fine.
The fix: Our proxy tools in auto-skill-loader use proper sequential stdio communication, bypassing OpenCode's broken transport layer.
Setup
- Set your MiniMax Token Plan key in
~/.config/opencode/.env:
MINIMAX_TOKEN_PLAN_KEY=sk-cp-your-key-here
- Add auto-skill-loader to
~/.config/opencode/opencode.json:
{
"mcp": {
"auto-skill-loader": {
"type": "local",
"command": ["/path/to/venv/bin/python", "-m", "server"],
"enabled": true
}
}
}
-
Critical: If you have
minimax-coding-plan-mcpconfigured directly in opencode.json (theminimax-token-planentry), remove or disable it β its broken stdio transport will cause "login fail" errors. The proxy tools in auto-skill-loader replace it entirely. -
Restart OpenCode and verify:
/ask Do you have auto-skill-loader_minimax_understand_image available?
Diagnosis
If you see "login fail" errors after setup:
- Disable the broken minimax MCP β ensure
"minimax-token-plan": { "enabled": false }or remove it entirely - Restart OpenCode completely β MCP servers are re-spawned on each session
- Check with:
/ask Call minimax_understand_image with image_source="/any/real/image.png" and prompt="test"
Resources
| Resource | What it does |
|---|---|
skills://active | All approved skill contents concatenated β read by host at session init |
skills://config | Your current config.yaml content |
Security
- User-controlled β only skills in
config.yamlare loaded - No network fetches β everything is local
- No prompt injection β skills come from your own configured directory
Repo Structure
auto-skill-loader/
βββ src/
β βββ server.py # MCP server (Python stdlib + mcp package)
βββ pyproject.toml # Package config
βββ README.md # This file
βββ SKILL.md # For agent onboarding
βββ LICENSE # MIT
Requirements
- Python 3.9+
mcppackage (pip install mcp)pyyamlpackage (pip install pyyaml)
Or just use uvx auto-skill-loader which fetches dependencies automatically.
