agent-skill-search 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,8 @@
1
+ __pycache__/
2
+ *.pyc
3
+ *.egg-info/
4
+ dist/
5
+ build/
6
+ .venv/
7
+ *.db
8
+ uv.lock
@@ -0,0 +1,228 @@
1
+ # Installing skill-search into agent clients
2
+
3
+ `skill-search` ships an MCP server (`skill-search-mcp`) and a CLI (`skill-search`). Every
4
+ major agent client can use it; the right channel depends on what the client supports:
5
+
6
+ | Client | Channel | What `install` does |
7
+ | --- | --- | --- |
8
+ | Claude Code | stdio MCP | runs `claude mcp add --scope user` |
9
+ | Codex CLI | stdio MCP | runs `codex mcp add` |
10
+ | OpenClaw | stdio MCP | runs `openclaw mcp add` |
11
+ | Hermes | stdio MCP | runs `hermes mcp add` |
12
+ | Gemini CLI | stdio MCP | merges `~/.gemini/settings.json` |
13
+ | Claude Desktop | stdio MCP | merges `claude_desktop_config.json` |
14
+ | pi | stdio MCP | merges `./mcp.json` (needs the `pi-mcp` extension) |
15
+ | ChatGPT | remote HTTPS MCP | prints self-host instructions (no local config) |
16
+ | Anything else | CLI from a SKILL.md | nothing to install — see below |
17
+
18
+ ## 1. Install the package
19
+
20
+ Python 3.10+ required.
21
+
22
+ ```bash
23
+ # recommended — isolated tool install, no environment conflicts
24
+ uv tool install agent-skill-search
25
+ # or
26
+ pipx install agent-skill-search
27
+ # or, into the current environment
28
+ pip install agent-skill-search
29
+ ```
30
+
31
+ This gives you:
32
+
33
+ - `skill-search` — the CLI (`search`, `view`, `list`, `add`, `install`, `uninstall`)
34
+ - `skill-search-mcp` — the MCP server binary
35
+
36
+ > **Name collision warning:** an unrelated PyPI package named `skill-search` also installs
37
+ > a `skill-search` command. This project's distribution is **`agent-skill-search`**. If both
38
+ > end up in one environment, whichever was installed last owns the command — prefer
39
+ > `uv tool install` / `pipx`, which isolate each tool.
40
+
41
+ ## 2. Prepare a catalog (optional)
42
+
43
+ The server reads SKILL.md catalogs from, in order:
44
+
45
+ 1. `SKILL_CATALOG_DIRS` (colon-separated, e.g. `~/skills:~/more-skills`)
46
+ 2. `~/.agents/skills-catalog` (default; created on demand)
47
+ 3. `./.agents/skills-catalog` (project-local default)
48
+
49
+ `skill-search install` writes the resolved catalog dirs into each client's config as
50
+ `SKILL_CATALOG_DIRS`, so the client does not need the env var set. Override per install:
51
+
52
+ ```bash
53
+ skill-search install gemini --catalog ~/my-skills --catalog ~/team-skills
54
+ ```
55
+
56
+ ## 3. Install into clients
57
+
58
+ Run `skill-search install --list` for the registry, then per client:
59
+
60
+ ### Claude Code
61
+
62
+ ```bash
63
+ skill-search install claude-code # claude mcp add --scope user
64
+ skill-search install claude-code --dry-run # print the command, write nothing
65
+ ```
66
+
67
+ Verify: `claude mcp list`, or `/mcp` inside a session.
68
+
69
+ ### Codex CLI
70
+
71
+ ```bash
72
+ skill-search install codex
73
+ ```
74
+
75
+ Verify: `codex mcp list`, then start `codex` and confirm the `skill_search` tools.
76
+
77
+ If your Codex version's `mcp add` does not accept `-e KEY=VALUE`, remove the
78
+ `[mcp_servers.skill-search]` entry it may have half-written and add it by hand:
79
+
80
+ ```toml
81
+ [mcp_servers.skill-search]
82
+ command = "/absolute/path/to/skill-search-mcp"
83
+ env = { "SKILL_CATALOG_DIRS" = "/path/to/catalog" }
84
+ ```
85
+
86
+ ### Gemini CLI
87
+
88
+ ```bash
89
+ skill-search install gemini
90
+ ```
91
+
92
+ Merges `mcpServers` into `~/.gemini/settings.json`, backs the file up first
93
+ (`settings.json.bak-1`), and refuses to touch a malformed file. Verify: run `gemini`
94
+ and use `/mcp`.
95
+
96
+ Manual fallback:
97
+
98
+ ```json
99
+ {
100
+ "mcpServers": {
101
+ "skill-search": {
102
+ "command": "/absolute/path/to/skill-search-mcp",
103
+ "args": [],
104
+ "env": { "SKILL_CATALOG_DIRS": "/path/to/catalog" }
105
+ }
106
+ }
107
+ }
108
+ ```
109
+
110
+ ### OpenClaw
111
+
112
+ ```bash
113
+ skill-search install openclaw
114
+ ```
115
+
116
+ Verify: `/mcp` in an OpenClaw session. If your OpenClaw version has no `mcp add`
117
+ command, add the entry under `mcp.servers` in `~/.openclaw/openclaw.json` by hand —
118
+ same shape as the Gemini snippet above, nested under `"mcp": {"servers": {...}}`.
119
+
120
+ ### Hermes
121
+
122
+ ```bash
123
+ skill-search install hermes
124
+ ```
125
+
126
+ Hermes config is YAML, so the installer goes through `hermes mcp add` rather than
127
+ editing the file. Manual fallback: add a `skill-search` entry under `mcp_servers` in
128
+ `~/.hermes/config.yaml`.
129
+
130
+ ### pi
131
+
132
+ ```bash
133
+ skill-search install pi
134
+ ```
135
+
136
+ Writes `mcp.json` in the **current project root**. Requires the
137
+ [`pi-mcp` extension](https://github.com/badlogic/pi-mcp) in that project. Verify:
138
+ restart pi and check the tool list.
139
+
140
+ ### Claude Desktop
141
+
142
+ ```bash
143
+ skill-search install claude-desktop
144
+ ```
145
+
146
+ macOS/Windows only (there is no official Linux build). Merges `mcpServers` into:
147
+
148
+ - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
149
+ - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
150
+
151
+ Verify: fully quit and reopen Claude Desktop — the server appears under
152
+ Settings → Connectors / the tools icon. Logs: `~/Library/Logs/Claude/mcp*.log`
153
+ (macOS) or `%APPDATA%\Claude\logs` (Windows).
154
+
155
+ ### ChatGPT (self-hosted connector)
156
+
157
+ ChatGPT cannot run local stdio MCP servers. It connects to remote HTTPS MCP
158
+ endpoints, so run this server in HTTP mode and expose it over TLS:
159
+
160
+ ```bash
161
+ skill-search-mcp --http --host 127.0.0.1 --port 8787
162
+ # then terminate TLS and forward, e.g. with Caddy:
163
+ # caddy reverse-proxy --from mcp.example.com --to 127.0.0.1:8787
164
+ ```
165
+
166
+ In ChatGPT: **Settings → Apps & Connectors → enable Developer mode → Create**,
167
+ with Server URL `https://your-domain/mcp`.
168
+
169
+ Server flags: `--host` (default `127.0.0.1`), `--port` (default `8787`).
170
+
171
+ > **Warning:** the endpoint publishes the whole catalog, read-only, to anyone who can
172
+ > reach it. The server implements no auth — authentication and TLS are the reverse
173
+ > proxy's job. Keep it behind auth or a private network. Binding a non-loopback host
174
+ > disables the SDK's DNS-rebinding protection for exactly this reason.
175
+
176
+ ### Any other agent (CLI fallback)
177
+
178
+ Agents that load `SKILL.md` skills but have no MCP support can shell out to the CLI.
179
+ Install the package, then drop this repo's `SKILL.md` into their skills directory and
180
+ point the agent at:
181
+
182
+ ```bash
183
+ skill-search search "react performance" # find skills
184
+ skill-search view "react-perf" # load one
185
+ ```
186
+
187
+ ## CLI usage hint for agents without MCP
188
+
189
+ Agents without an MCP connection can still call the CLI directly. Opt in with
190
+ `--cli-hint` to append a short usage snippet to existing `CLAUDE.md`/`AGENTS.md`
191
+ files (`~/.claude/CLAUDE.md`, `~/CLAUDE.md`, `~/AGENTS.md`, `./CLAUDE.md`,
192
+ `./AGENTS.md`). Append-only: marker-checked, skipped when already present,
193
+ backed up before the write, never created from scratch. `--dry-run` shows
194
+ what would change. `uninstall --cli-hint` removes the snippet again.
195
+
196
+ ```bash
197
+ skill-search install gemini --cli-hint # MCP config + hint snippet
198
+ skill-search install gemini --cli-hint --dry-run # preview both, write nothing
199
+ ```
200
+
201
+ ## Uninstall
202
+
203
+ ```bash
204
+ skill-search uninstall claude-code # claude mcp remove
205
+ skill-search uninstall gemini # removes the JSON entry, keeps a backup
206
+ skill-search uninstall --all # every detected client
207
+ skill-search uninstall gemini --cli-hint # also removes the hint snippet
208
+ ```
209
+
210
+ ## Troubleshooting
211
+
212
+ - **Server won't start in the client** — the config must reference an absolute path.
213
+ The installer resolves `skill-search-mcp` on your `PATH` and writes the absolute
214
+ location; if it wasn't found it writes `<python> -m skill_search.server` instead
215
+ (printed at install time). Hand-edited configs must do the same.
216
+ - **No skills found** — `SKILL_CATALOG_DIRS` is colon-separated
217
+ (`dir1:dir2`). Check what got written with `skill-search install <client> --dry-run`,
218
+ and test locally with `SKILL_CATALOG_DIRS=... skill-search list`.
219
+ - **`skill-search` command belongs to another package** — see the collision warning
220
+ above; use `uv tool install agent-skill-search` or `pipx`.
221
+ - **Claude Desktop logs** — `~/Library/Logs/Claude/mcp*.log` (macOS),
222
+ `%APPDATA%\Claude\logs` (Windows).
223
+ - **`skill-search add` moves directories** — it moves skill dirs out of the source
224
+ tree into `~/.agents/skills-catalog` (not a copy).
225
+ - **Client config schema drift** — command-backed clients (Claude Code, Codex,
226
+ OpenClaw, Hermes) delegate to their own `mcp add`, so their vendor owns the schema.
227
+ The file-backed targets (Gemini CLI, Claude Desktop, pi) are the ones that may need
228
+ updates if their config format changes.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 kinged007
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,58 @@
1
+ Metadata-Version: 2.5
2
+ Name: agent-skill-search
3
+ Version: 0.1.0
4
+ Summary: Portable skill catalog search for AI agents — MCP server + CLI
5
+ Project-URL: Homepage, https://github.com/kinged007/agent-skill-search
6
+ Project-URL: Repository, https://github.com/kinged007/agent-skill-search
7
+ License-Expression: MIT
8
+ License-File: LICENSE
9
+ Requires-Python: >=3.10
10
+ Requires-Dist: mcp>=2.0.0
11
+ Provides-Extra: dev
12
+ Requires-Dist: pytest; extra == 'dev'
13
+ Description-Content-Type: text/markdown
14
+
15
+ # skill-search
16
+
17
+ Portable skill catalog search for AI agents. MCP server + CLI.
18
+
19
+ Universal skill search tool. Use grep like search terms to find relevant skills for your task. Always use this tool.
20
+
21
+ ## Install
22
+
23
+ ```bash
24
+ # recommended — isolated tool install
25
+ uv tool install agent-skill-search
26
+ # or
27
+ pip install agent-skill-search
28
+ ```
29
+
30
+ > The PyPI distribution is **`agent-skill-search`** — the name `skill-search` on PyPI
31
+ > belongs to an unrelated package. The commands stay `skill-search` and `skill-search-mcp`.
32
+
33
+ ## Usage
34
+
35
+ ### CLI
36
+
37
+ ```bash
38
+ export SKILL_CATALOG_DIRS="$HOME/.hermes/skills"
39
+
40
+ skill-search search "react performance"
41
+ skill-search view "vercel-react-best-practices"
42
+ skill-search list
43
+
44
+ # Move skills from a source dir into the catalog (frees agent context).
45
+ # Note: `add` MOVES directories out of the source tree, it does not copy.
46
+ skill-search add ~/.hermes/skills
47
+ ```
48
+
49
+ ### MCP server
50
+
51
+ One command installs it into your client:
52
+
53
+ ```bash
54
+ skill-search install claude-code # or codex / gemini / openclaw / hermes / pi / claude-desktop / chatgpt
55
+ ```
56
+
57
+ See **[INSTALL.md](INSTALL.md)** for per-client details, manual config snippets, the
58
+ ChatGPT remote-HTTP setup, and troubleshooting.
@@ -0,0 +1,44 @@
1
+ # skill-search
2
+
3
+ Portable skill catalog search for AI agents. MCP server + CLI.
4
+
5
+ Universal skill search tool. Use grep like search terms to find relevant skills for your task. Always use this tool.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ # recommended — isolated tool install
11
+ uv tool install agent-skill-search
12
+ # or
13
+ pip install agent-skill-search
14
+ ```
15
+
16
+ > The PyPI distribution is **`agent-skill-search`** — the name `skill-search` on PyPI
17
+ > belongs to an unrelated package. The commands stay `skill-search` and `skill-search-mcp`.
18
+
19
+ ## Usage
20
+
21
+ ### CLI
22
+
23
+ ```bash
24
+ export SKILL_CATALOG_DIRS="$HOME/.hermes/skills"
25
+
26
+ skill-search search "react performance"
27
+ skill-search view "vercel-react-best-practices"
28
+ skill-search list
29
+
30
+ # Move skills from a source dir into the catalog (frees agent context).
31
+ # Note: `add` MOVES directories out of the source tree, it does not copy.
32
+ skill-search add ~/.hermes/skills
33
+ ```
34
+
35
+ ### MCP server
36
+
37
+ One command installs it into your client:
38
+
39
+ ```bash
40
+ skill-search install claude-code # or codex / gemini / openclaw / hermes / pi / claude-desktop / chatgpt
41
+ ```
42
+
43
+ See **[INSTALL.md](INSTALL.md)** for per-client details, manual config snippets, the
44
+ ChatGPT remote-HTTP setup, and troubleshooting.
@@ -0,0 +1,125 @@
1
+ ---
2
+ name: skill-search
3
+ description: "Universal skill search tool. Use grep like search terms to find relevant skills for your task. Always use this tool."
4
+ ---
5
+
6
+ # Skill Search
7
+
8
+ A portable tool that lets agents search through a catalog of SKILL.md files and load only the relevant ones — instead of dumping 100+ skills into context.
9
+
10
+ ## How It Works
11
+
12
+ The tool has two modes:
13
+
14
+ 1. **MCP Server** — for Claude Code, Claude Desktop, Codex, Gemini CLI, OpenClaw, Hermes, pi, or any MCP-capable agent. Exposes `skill_search`, `skill_view`, and `skill_list` as tools.
15
+ 2. **CLI** — for any agent. Run `skill-search search <query>` to find skills, `skill-search view <name>` to load one.
16
+
17
+ ## Setup
18
+
19
+ Install the package first (distribution name is `agent-skill-search`):
20
+
21
+ ```bash
22
+ uv tool install agent-skill-search
23
+ # or: pip install agent-skill-search
24
+ ```
25
+
26
+ ### Option A: MCP Server (recommended)
27
+
28
+ One command per client:
29
+
30
+ ```bash
31
+ skill-search install claude-code # or codex / gemini / openclaw / hermes / pi / claude-desktop
32
+ ```
33
+
34
+ Manual fallback for any `mcpServers`-style JSON config:
35
+
36
+ ```json
37
+ {
38
+ "mcpServers": {
39
+ "skill-search": {
40
+ "command": "/absolute/path/to/skill-search-mcp",
41
+ "args": [],
42
+ "env": {
43
+ "SKILL_CATALOG_DIRS": "/path/to/your/skills:/path/to/more/skills"
44
+ }
45
+ }
46
+ }
47
+ }
48
+ ```
49
+
50
+ Or with `uvx` (note the `--from`, since the distribution is `agent-skill-search`):
51
+
52
+ ```json
53
+ {
54
+ "mcpServers": {
55
+ "skill-search": {
56
+ "command": "uvx",
57
+ "args": ["--from", "agent-skill-search", "skill-search-mcp"],
58
+ "env": {
59
+ "SKILL_CATALOG_DIRS": "~/.hermes/skills:~/.agents/skills"
60
+ }
61
+ }
62
+ }
63
+ }
64
+ ```
65
+
66
+ Full per-client instructions, the ChatGPT remote-HTTP setup, and troubleshooting:
67
+ **[INSTALL.md](INSTALL.md)**.
68
+
69
+ ### Option B: CLI (any agent)
70
+
71
+ ```bash
72
+ pip install agent-skill-search
73
+
74
+ # Set your catalog directories (colon-separated)
75
+ export SKILL_CATALOG_DIRS="$HOME/.hermes/skills:$HOME/.agents/skills"
76
+
77
+ # Search
78
+ skill-search search "react performance"
79
+
80
+ # View a skill
81
+ skill-search view "vercel-react-best-practices"
82
+
83
+ # List all
84
+ skill-search list
85
+ ```
86
+
87
+ ### Option C: Local development
88
+
89
+ ```bash
90
+ cd skill-search
91
+ pip install -e .
92
+ export SKILL_CATALOG_DIRS="."
93
+ skill-search list
94
+ ```
95
+
96
+ ## Catalog management
97
+
98
+ `skill-search add <dir>` **moves** skill directories out of the source tree into
99
+ `~/.agents/skills-catalog` — it does not copy them. The originals will no longer be in
100
+ place for the tool they came from.
101
+
102
+ ## Usage Pattern for Agents
103
+
104
+ 1. **Discover** — run `skill_search(query="your topic")` to find matching skills
105
+ 2. **Evaluate** — read the name + description from results
106
+ 3. **Load** — run `skill_view(name="the-skill")` to get full instructions
107
+ 4. **Execute** — follow the skill's procedure
108
+
109
+ This keeps context lean: only the catalog index (~3k tokens) plus the one skill you actually need.
110
+
111
+ ## Catalog Structure
112
+
113
+ Point the tool at directories containing SKILL.md files:
114
+
115
+ ```
116
+ your-catalog/
117
+ ├── react-performance/
118
+ │ └── SKILL.md
119
+ ├── kubernetes-deploy/
120
+ │ └── SKILL.md
121
+ └── api-design/
122
+ └── SKILL.md
123
+ ```
124
+
125
+ Any directory tree containing SKILL.md files works — the tool scans recursively.
@@ -0,0 +1,28 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "agent-skill-search"
7
+ version = "0.1.0"
8
+ description = "Portable skill catalog search for AI agents — MCP server + CLI"
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ license = "MIT"
12
+ dependencies = [
13
+ "mcp>=2.0.0",
14
+ ]
15
+
16
+ [project.optional-dependencies]
17
+ dev = ["pytest"]
18
+
19
+ [project.scripts]
20
+ skill-search = "skill_search.cli:main"
21
+ skill-search-mcp = "skill_search.server:run"
22
+
23
+ [project.urls]
24
+ Homepage = "https://github.com/kinged007/agent-skill-search"
25
+ Repository = "https://github.com/kinged007/agent-skill-search"
26
+
27
+ [tool.hatch.build.targets.wheel]
28
+ packages = ["skill_search"]
@@ -0,0 +1,3 @@
1
+ """Skill Search — portable skill catalog search for AI agents."""
2
+
3
+ __version__ = "0.1.0"