skill-control-plane 1.0.1__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.
- skill_control_plane-1.0.1/LICENSE +21 -0
- skill_control_plane-1.0.1/PKG-INFO +168 -0
- skill_control_plane-1.0.1/README.md +138 -0
- skill_control_plane-1.0.1/pyproject.toml +44 -0
- skill_control_plane-1.0.1/setup.cfg +4 -0
- skill_control_plane-1.0.1/skill_control_plane.egg-info/PKG-INFO +168 -0
- skill_control_plane-1.0.1/skill_control_plane.egg-info/SOURCES.txt +58 -0
- skill_control_plane-1.0.1/skill_control_plane.egg-info/dependency_links.txt +1 -0
- skill_control_plane-1.0.1/skill_control_plane.egg-info/entry_points.txt +2 -0
- skill_control_plane-1.0.1/skill_control_plane.egg-info/top_level.txt +1 -0
- skill_control_plane-1.0.1/skillsmgr/__init__.py +3 -0
- skill_control_plane-1.0.1/skillsmgr/__main__.py +10 -0
- skill_control_plane-1.0.1/skillsmgr/archive.py +433 -0
- skill_control_plane-1.0.1/skillsmgr/atomic_io.py +85 -0
- skill_control_plane-1.0.1/skillsmgr/cli.py +156 -0
- skill_control_plane-1.0.1/skillsmgr/cli_handlers.py +955 -0
- skill_control_plane-1.0.1/skillsmgr/cli_output.py +52 -0
- skill_control_plane-1.0.1/skillsmgr/cli_parser.py +269 -0
- skill_control_plane-1.0.1/skillsmgr/colors.py +57 -0
- skill_control_plane-1.0.1/skillsmgr/diagnostics.py +15 -0
- skill_control_plane-1.0.1/skillsmgr/frontmatter.py +1022 -0
- skill_control_plane-1.0.1/skillsmgr/insights.py +486 -0
- skill_control_plane-1.0.1/skillsmgr/loader.py +98 -0
- skill_control_plane-1.0.1/skillsmgr/observations.py +50 -0
- skill_control_plane-1.0.1/skillsmgr/path_safety.py +49 -0
- skill_control_plane-1.0.1/skillsmgr/paths.py +73 -0
- skill_control_plane-1.0.1/skillsmgr/root_discovery.py +73 -0
- skill_control_plane-1.0.1/skillsmgr/scopes.py +738 -0
- skill_control_plane-1.0.1/skillsmgr/search.py +79 -0
- skill_control_plane-1.0.1/skillsmgr/store.py +1567 -0
- skill_control_plane-1.0.1/skillsmgr/templates.py +74 -0
- skill_control_plane-1.0.1/skillsmgr/tokens.py +121 -0
- skill_control_plane-1.0.1/skillsmgr/validator.py +396 -0
- skill_control_plane-1.0.1/skillsmgr/web_security.py +56 -0
- skill_control_plane-1.0.1/skillsmgr/web_serialization.py +33 -0
- skill_control_plane-1.0.1/skillsmgr/web_upload.py +108 -0
- skill_control_plane-1.0.1/skillsmgr/webapp.py +913 -0
- skill_control_plane-1.0.1/skillsmgr/webui/app.js +983 -0
- skill_control_plane-1.0.1/skillsmgr/webui/domain.js +161 -0
- skill_control_plane-1.0.1/skillsmgr/webui/index.html +784 -0
- skill_control_plane-1.0.1/skillsmgr/webui/static/vendor/vue.global.prod.js +9 -0
- skill_control_plane-1.0.1/skillsmgr/webui/styles.css +878 -0
- skill_control_plane-1.0.1/tests/test_archive_contracts.py +500 -0
- skill_control_plane-1.0.1/tests/test_ci_release_contracts.py +331 -0
- skill_control_plane-1.0.1/tests/test_cli_contract.py +82 -0
- skill_control_plane-1.0.1/tests/test_compatibility.py +55 -0
- skill_control_plane-1.0.1/tests/test_complexity_budget.py +111 -0
- skill_control_plane-1.0.1/tests/test_concurrency_contracts.py +322 -0
- skill_control_plane-1.0.1/tests/test_docs_consistency.py +58 -0
- skill_control_plane-1.0.1/tests/test_frontmatter_contracts.py +219 -0
- skill_control_plane-1.0.1/tests/test_insights_contracts.py +854 -0
- skill_control_plane-1.0.1/tests/test_package_data.py +84 -0
- skill_control_plane-1.0.1/tests/test_path_safety.py +507 -0
- skill_control_plane-1.0.1/tests/test_scope_contracts.py +243 -0
- skill_control_plane-1.0.1/tests/test_search_contracts.py +320 -0
- skill_control_plane-1.0.1/tests/test_smoke_fixtures.py +35 -0
- skill_control_plane-1.0.1/tests/test_store.py +583 -0
- skill_control_plane-1.0.1/tests/test_store_contracts.py +504 -0
- skill_control_plane-1.0.1/tests/test_web_scopes.py +307 -0
- skill_control_plane-1.0.1/tests/test_webapp.py +457 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 skills-manager contributors
|
|
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,168 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: skill-control-plane
|
|
3
|
+
Version: 1.0.1
|
|
4
|
+
Summary: Local control plane for AI coding-agent skills: manage SKILL.md across agents from one CLI + web UI
|
|
5
|
+
Author: skills-manager contributors
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/udayvarmora07/skills-manager
|
|
8
|
+
Project-URL: Repository, https://github.com/udayvarmora07/skills-manager
|
|
9
|
+
Project-URL: Issues, https://github.com/udayvarmora07/skills-manager/issues
|
|
10
|
+
Project-URL: Documentation, https://github.com/udayvarmora07/skills-manager#readme
|
|
11
|
+
Project-URL: Changelog, https://github.com/udayvarmora07/skills-manager/blob/main/CHANGELOG.md
|
|
12
|
+
Keywords: ai-agents,agent-skills,skill-management,cli,claude-code,cursor,opencode
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
24
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
25
|
+
Classifier: Topic :: Utilities
|
|
26
|
+
Requires-Python: >=3.10
|
|
27
|
+
Description-Content-Type: text/markdown
|
|
28
|
+
License-File: LICENSE
|
|
29
|
+
Dynamic: license-file
|
|
30
|
+
|
|
31
|
+
# skills-manager
|
|
32
|
+
|
|
33
|
+
**The local control plane for your AI coding-agent skills.** Create, organize, sync, back up, and quality-check `SKILL.md` skills across every agent you use — from one CLI and one local web UI.
|
|
34
|
+
|
|
35
|
+
[](https://github.com/udayvarmora07/skills-manager/actions/workflows/ci.yml)
|
|
36
|
+
[](LICENSE)
|
|
37
|
+
[](pyproject.toml)
|
|
38
|
+
|
|
39
|
+
> `skills-manager` on GitHub: `udayvarmora07/skills-manager`. PyPI badge tracks a future release: `skill-control-plane` is not on PyPI yet, so install from source or `pip install` the CI-built wheel/sdist below. Distribution name `skill-control-plane` (`skills-mgr` entry point) is reserved for that release.
|
|
40
|
+
|
|
41
|
+
## Why this exists
|
|
42
|
+
|
|
43
|
+
The [Agent Skills](https://agentskills.io) format (`SKILL.md`) is now an open standard supported by Claude Code, Cursor, Gemini CLI, OpenCode, Copilot/VS Code, Goose, Amp, and more. The ecosystem has **skill libraries** ([vercel-labs/agent-skills](https://github.com/vercel-labs/agent-skills)), **installers** ([skills.sh](https://skills.sh)), and a **spec** — but nobody owns the *management* problem:
|
|
44
|
+
|
|
45
|
+
- The same skill copy-pasted into `~/.claude/skills`, `~/.codex/skills`, Cursor dirs… edits diverge.
|
|
46
|
+
- Vague descriptions cause false activation or misses; oversized bodies eat context.
|
|
47
|
+
- No versioning, no safe update/rollback, no backup story, no cross-tool view.
|
|
48
|
+
|
|
49
|
+
`skills-manager` fills that gap: one store, every scope, full lifecycle.
|
|
50
|
+
|
|
51
|
+
| | skills-manager | `skills.sh` / `npx skills add` | skill libraries |
|
|
52
|
+
|---|---|---|---|
|
|
53
|
+
| Install remote skills | ✅ (via `install`) | ✅ | — (source) |
|
|
54
|
+
| Create / edit / validate locally | ✅ | — | — |
|
|
55
|
+
| Manage across **all** your agents | ✅ (`--scope all`) | single-target | — |
|
|
56
|
+
| Sync + dedup between agents | ✅ | — | — |
|
|
57
|
+
| Version history + trash/rollback | ✅ | — | — |
|
|
58
|
+
| Token-footprint budgeting | ✅ (`tokens`) | — | — |
|
|
59
|
+
| Local web UI | ✅ | — | — |
|
|
60
|
+
|
|
61
|
+
## Install
|
|
62
|
+
|
|
63
|
+
Requires Python ≥ 3.10. The runtime is **stdlib-only** — no dependencies.
|
|
64
|
+
|
|
65
|
+
PyPI is not published yet (see `.github/workflows/release.yml` for the
|
|
66
|
+
controlled Trusted Publishing path). Until the first GitHub Release lands:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
pipx install skill-control-plane # recommended (isolated)
|
|
70
|
+
# or
|
|
71
|
+
pip install skill-control-plane
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Run without installing:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
git clone https://github.com/udayvarmora07/skills-manager
|
|
78
|
+
cd skills-manager
|
|
79
|
+
python3 -m skillsmgr --help
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Quickstart
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# 1. See everything you have, everywhere
|
|
86
|
+
skills-mgr list --scope all
|
|
87
|
+
|
|
88
|
+
# 2. Create a skill once…
|
|
89
|
+
skills-mgr create my-workflow -d "Deploys our staging stack. Use when shipping to staging."
|
|
90
|
+
|
|
91
|
+
# 3. …sync it to every agent you use
|
|
92
|
+
skills-mgr sync my-workflow
|
|
93
|
+
|
|
94
|
+
# 4. Or manage it visually (localhost only, no build step, works offline)
|
|
95
|
+
skills-mgr webui
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
More:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
skills-mgr search "deploy" --scope all # scored search across agents
|
|
102
|
+
skills-mgr tokens --scope all # context-footprint budgeting
|
|
103
|
+
skills-mgr validate --all # spec lint incl. description/body guidance
|
|
104
|
+
skills-mgr export # timestamped backup tarball
|
|
105
|
+
skills-mgr install vercel-labs/agent-skills --dry-run # preview remote install
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Agent scopes
|
|
109
|
+
|
|
110
|
+
One command surface, per-agent directories underneath:
|
|
111
|
+
|
|
112
|
+
| Scope | Directory |
|
|
113
|
+
|---|---|
|
|
114
|
+
| `global` (default) | manager store (`~/.local/share/skills-manager/skills/`) |
|
|
115
|
+
| `claude-code` | `~/.claude/skills` |
|
|
116
|
+
| `codex` | `~/.codex/skills` |
|
|
117
|
+
| `cursor` | `~/.cursor/skills` |
|
|
118
|
+
| `opencode` | `~/.config/opencode/skills` |
|
|
119
|
+
| `gemini` | `~/.gemini/skills` |
|
|
120
|
+
| `commandcode` | `~/.commandcode/skills` |
|
|
121
|
+
| `agents` | `~/.agents/skills` |
|
|
122
|
+
| `all` | merged read-only view |
|
|
123
|
+
|
|
124
|
+
`list`, `view`, `search`, `doctor`, `stats` accept `--scope`; `sync` copies between scopes; `tokens`/`install` have their own scope semantics. Agent-scope writes go straight to the agent dir (no DB) — disable renames `SKILL.md` ⇄ `SKILL.md.disabled` in place, which Claude Code and Command Code both respect.
|
|
125
|
+
|
|
126
|
+
## Web UI
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
skills-mgr webui # http://127.0.0.1:8765, opens browser
|
|
130
|
+
skills-mgr webui --no-browser # server only
|
|
131
|
+
skills-mgr webui --port 9000 # custom port
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Stdlib `ThreadingHTTPServer` backend + vendored Vue 3 (no npm, no CDN, works offline). Scope switcher, live search, trash with undo, validate/doctor/stats/history, templates, tar export plus tar/ZIP import, sync modal. Binds loopback only — never expose it; there is no auth (see [Threat model](skills-manager-threat-model.md)).
|
|
135
|
+
|
|
136
|
+
## Data model
|
|
137
|
+
|
|
138
|
+
- **Filesystem is the source of truth**: `<data>/skills/<name>/SKILL.md`.
|
|
139
|
+
- **SQLite is a rebuildable index only** (`db rebuild` / `db resync` repair any drift; never hand-edit it).
|
|
140
|
+
- Data dir: `$SKILLS_MANAGER_DATA` → `$XDG_DATA_HOME` → `~/.local/share`, then `/skills-manager`.
|
|
141
|
+
|
|
142
|
+
## CLI reference
|
|
143
|
+
|
|
144
|
+
37 invocable names: 27 top-level commands + 7 `trash`/`templates`/`db` subcommands + 3 `ls`/`rm`/`gui` aliases. Exit codes: `0` ok · `1` error · `2` usage · `130` interrupt. `--json` on data commands.
|
|
145
|
+
|
|
146
|
+
Full surface: [`docs/03-cli-surface.md`](docs/03-cli-surface.md).
|
|
147
|
+
|
|
148
|
+
## Contributing
|
|
149
|
+
|
|
150
|
+
PRs welcome — start with [`CONTRIBUTING.md`](CONTRIBUTING.md). Locked constraints for any change:
|
|
151
|
+
|
|
152
|
+
1. Filesystem stays the source of truth.
|
|
153
|
+
2. SQLite schema unchanged.
|
|
154
|
+
3. CLI stays stdlib-only.
|
|
155
|
+
4. Web UI: stdlib backend, no build step, no new runtime deps, loopback bind.
|
|
156
|
+
5. No new CLI commands or Store methods without maintainer approval — open an issue first.
|
|
157
|
+
|
|
158
|
+
## Security
|
|
159
|
+
|
|
160
|
+
See [`SECURITY.md`](SECURITY.md) for disclosure policy. Design notes: [`security_best_practices_report.md`](security_best_practices_report.md), [`skills-manager-threat-model.md`](skills-manager-threat-model.md).
|
|
161
|
+
|
|
162
|
+
## Roadmap
|
|
163
|
+
|
|
164
|
+
Where this is going: [`ROADMAP.md`](ROADMAP.md) (spec-lint+, cross-scope dedup, registry bridge, eval harness, VS Code extension…).
|
|
165
|
+
|
|
166
|
+
## License
|
|
167
|
+
|
|
168
|
+
MIT — see [LICENSE](LICENSE).
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# skills-manager
|
|
2
|
+
|
|
3
|
+
**The local control plane for your AI coding-agent skills.** Create, organize, sync, back up, and quality-check `SKILL.md` skills across every agent you use — from one CLI and one local web UI.
|
|
4
|
+
|
|
5
|
+
[](https://github.com/udayvarmora07/skills-manager/actions/workflows/ci.yml)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
[](pyproject.toml)
|
|
8
|
+
|
|
9
|
+
> `skills-manager` on GitHub: `udayvarmora07/skills-manager`. PyPI badge tracks a future release: `skill-control-plane` is not on PyPI yet, so install from source or `pip install` the CI-built wheel/sdist below. Distribution name `skill-control-plane` (`skills-mgr` entry point) is reserved for that release.
|
|
10
|
+
|
|
11
|
+
## Why this exists
|
|
12
|
+
|
|
13
|
+
The [Agent Skills](https://agentskills.io) format (`SKILL.md`) is now an open standard supported by Claude Code, Cursor, Gemini CLI, OpenCode, Copilot/VS Code, Goose, Amp, and more. The ecosystem has **skill libraries** ([vercel-labs/agent-skills](https://github.com/vercel-labs/agent-skills)), **installers** ([skills.sh](https://skills.sh)), and a **spec** — but nobody owns the *management* problem:
|
|
14
|
+
|
|
15
|
+
- The same skill copy-pasted into `~/.claude/skills`, `~/.codex/skills`, Cursor dirs… edits diverge.
|
|
16
|
+
- Vague descriptions cause false activation or misses; oversized bodies eat context.
|
|
17
|
+
- No versioning, no safe update/rollback, no backup story, no cross-tool view.
|
|
18
|
+
|
|
19
|
+
`skills-manager` fills that gap: one store, every scope, full lifecycle.
|
|
20
|
+
|
|
21
|
+
| | skills-manager | `skills.sh` / `npx skills add` | skill libraries |
|
|
22
|
+
|---|---|---|---|
|
|
23
|
+
| Install remote skills | ✅ (via `install`) | ✅ | — (source) |
|
|
24
|
+
| Create / edit / validate locally | ✅ | — | — |
|
|
25
|
+
| Manage across **all** your agents | ✅ (`--scope all`) | single-target | — |
|
|
26
|
+
| Sync + dedup between agents | ✅ | — | — |
|
|
27
|
+
| Version history + trash/rollback | ✅ | — | — |
|
|
28
|
+
| Token-footprint budgeting | ✅ (`tokens`) | — | — |
|
|
29
|
+
| Local web UI | ✅ | — | — |
|
|
30
|
+
|
|
31
|
+
## Install
|
|
32
|
+
|
|
33
|
+
Requires Python ≥ 3.10. The runtime is **stdlib-only** — no dependencies.
|
|
34
|
+
|
|
35
|
+
PyPI is not published yet (see `.github/workflows/release.yml` for the
|
|
36
|
+
controlled Trusted Publishing path). Until the first GitHub Release lands:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
pipx install skill-control-plane # recommended (isolated)
|
|
40
|
+
# or
|
|
41
|
+
pip install skill-control-plane
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Run without installing:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
git clone https://github.com/udayvarmora07/skills-manager
|
|
48
|
+
cd skills-manager
|
|
49
|
+
python3 -m skillsmgr --help
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Quickstart
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# 1. See everything you have, everywhere
|
|
56
|
+
skills-mgr list --scope all
|
|
57
|
+
|
|
58
|
+
# 2. Create a skill once…
|
|
59
|
+
skills-mgr create my-workflow -d "Deploys our staging stack. Use when shipping to staging."
|
|
60
|
+
|
|
61
|
+
# 3. …sync it to every agent you use
|
|
62
|
+
skills-mgr sync my-workflow
|
|
63
|
+
|
|
64
|
+
# 4. Or manage it visually (localhost only, no build step, works offline)
|
|
65
|
+
skills-mgr webui
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
More:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
skills-mgr search "deploy" --scope all # scored search across agents
|
|
72
|
+
skills-mgr tokens --scope all # context-footprint budgeting
|
|
73
|
+
skills-mgr validate --all # spec lint incl. description/body guidance
|
|
74
|
+
skills-mgr export # timestamped backup tarball
|
|
75
|
+
skills-mgr install vercel-labs/agent-skills --dry-run # preview remote install
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Agent scopes
|
|
79
|
+
|
|
80
|
+
One command surface, per-agent directories underneath:
|
|
81
|
+
|
|
82
|
+
| Scope | Directory |
|
|
83
|
+
|---|---|
|
|
84
|
+
| `global` (default) | manager store (`~/.local/share/skills-manager/skills/`) |
|
|
85
|
+
| `claude-code` | `~/.claude/skills` |
|
|
86
|
+
| `codex` | `~/.codex/skills` |
|
|
87
|
+
| `cursor` | `~/.cursor/skills` |
|
|
88
|
+
| `opencode` | `~/.config/opencode/skills` |
|
|
89
|
+
| `gemini` | `~/.gemini/skills` |
|
|
90
|
+
| `commandcode` | `~/.commandcode/skills` |
|
|
91
|
+
| `agents` | `~/.agents/skills` |
|
|
92
|
+
| `all` | merged read-only view |
|
|
93
|
+
|
|
94
|
+
`list`, `view`, `search`, `doctor`, `stats` accept `--scope`; `sync` copies between scopes; `tokens`/`install` have their own scope semantics. Agent-scope writes go straight to the agent dir (no DB) — disable renames `SKILL.md` ⇄ `SKILL.md.disabled` in place, which Claude Code and Command Code both respect.
|
|
95
|
+
|
|
96
|
+
## Web UI
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
skills-mgr webui # http://127.0.0.1:8765, opens browser
|
|
100
|
+
skills-mgr webui --no-browser # server only
|
|
101
|
+
skills-mgr webui --port 9000 # custom port
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Stdlib `ThreadingHTTPServer` backend + vendored Vue 3 (no npm, no CDN, works offline). Scope switcher, live search, trash with undo, validate/doctor/stats/history, templates, tar export plus tar/ZIP import, sync modal. Binds loopback only — never expose it; there is no auth (see [Threat model](skills-manager-threat-model.md)).
|
|
105
|
+
|
|
106
|
+
## Data model
|
|
107
|
+
|
|
108
|
+
- **Filesystem is the source of truth**: `<data>/skills/<name>/SKILL.md`.
|
|
109
|
+
- **SQLite is a rebuildable index only** (`db rebuild` / `db resync` repair any drift; never hand-edit it).
|
|
110
|
+
- Data dir: `$SKILLS_MANAGER_DATA` → `$XDG_DATA_HOME` → `~/.local/share`, then `/skills-manager`.
|
|
111
|
+
|
|
112
|
+
## CLI reference
|
|
113
|
+
|
|
114
|
+
37 invocable names: 27 top-level commands + 7 `trash`/`templates`/`db` subcommands + 3 `ls`/`rm`/`gui` aliases. Exit codes: `0` ok · `1` error · `2` usage · `130` interrupt. `--json` on data commands.
|
|
115
|
+
|
|
116
|
+
Full surface: [`docs/03-cli-surface.md`](docs/03-cli-surface.md).
|
|
117
|
+
|
|
118
|
+
## Contributing
|
|
119
|
+
|
|
120
|
+
PRs welcome — start with [`CONTRIBUTING.md`](CONTRIBUTING.md). Locked constraints for any change:
|
|
121
|
+
|
|
122
|
+
1. Filesystem stays the source of truth.
|
|
123
|
+
2. SQLite schema unchanged.
|
|
124
|
+
3. CLI stays stdlib-only.
|
|
125
|
+
4. Web UI: stdlib backend, no build step, no new runtime deps, loopback bind.
|
|
126
|
+
5. No new CLI commands or Store methods without maintainer approval — open an issue first.
|
|
127
|
+
|
|
128
|
+
## Security
|
|
129
|
+
|
|
130
|
+
See [`SECURITY.md`](SECURITY.md) for disclosure policy. Design notes: [`security_best_practices_report.md`](security_best_practices_report.md), [`skills-manager-threat-model.md`](skills-manager-threat-model.md).
|
|
131
|
+
|
|
132
|
+
## Roadmap
|
|
133
|
+
|
|
134
|
+
Where this is going: [`ROADMAP.md`](ROADMAP.md) (spec-lint+, cross-scope dedup, registry bridge, eval harness, VS Code extension…).
|
|
135
|
+
|
|
136
|
+
## License
|
|
137
|
+
|
|
138
|
+
MIT — see [LICENSE](LICENSE).
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "skill-control-plane"
|
|
7
|
+
version = "1.0.1"
|
|
8
|
+
description = "Local control plane for AI coding-agent skills: manage SKILL.md across agents from one CLI + web UI"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
license = { text = "MIT" }
|
|
12
|
+
authors = [{ name = "skills-manager contributors" }]
|
|
13
|
+
keywords = ["ai-agents", "agent-skills", "skill-management", "cli", "claude-code", "cursor", "opencode"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 4 - Beta",
|
|
16
|
+
"Environment :: Console",
|
|
17
|
+
"Intended Audience :: Developers",
|
|
18
|
+
"License :: OSI Approved :: MIT License",
|
|
19
|
+
"Operating System :: OS Independent",
|
|
20
|
+
"Programming Language :: Python :: 3",
|
|
21
|
+
"Programming Language :: Python :: 3.10",
|
|
22
|
+
"Programming Language :: Python :: 3.11",
|
|
23
|
+
"Programming Language :: Python :: 3.12",
|
|
24
|
+
"Programming Language :: Python :: 3.13",
|
|
25
|
+
"Programming Language :: Python :: 3.14",
|
|
26
|
+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
27
|
+
"Topic :: Utilities",
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
[project.urls]
|
|
31
|
+
Homepage = "https://github.com/udayvarmora07/skills-manager"
|
|
32
|
+
Repository = "https://github.com/udayvarmora07/skills-manager"
|
|
33
|
+
Issues = "https://github.com/udayvarmora07/skills-manager/issues"
|
|
34
|
+
Documentation = "https://github.com/udayvarmora07/skills-manager#readme"
|
|
35
|
+
Changelog = "https://github.com/udayvarmora07/skills-manager/blob/main/CHANGELOG.md"
|
|
36
|
+
|
|
37
|
+
[project.scripts]
|
|
38
|
+
skills-mgr = "skillsmgr.cli:main"
|
|
39
|
+
|
|
40
|
+
[tool.setuptools.packages.find]
|
|
41
|
+
include = ["skillsmgr*"]
|
|
42
|
+
|
|
43
|
+
[tool.setuptools.package-data]
|
|
44
|
+
skillsmgr = ["webui/*", "webui/static/vendor/*"]
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: skill-control-plane
|
|
3
|
+
Version: 1.0.1
|
|
4
|
+
Summary: Local control plane for AI coding-agent skills: manage SKILL.md across agents from one CLI + web UI
|
|
5
|
+
Author: skills-manager contributors
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/udayvarmora07/skills-manager
|
|
8
|
+
Project-URL: Repository, https://github.com/udayvarmora07/skills-manager
|
|
9
|
+
Project-URL: Issues, https://github.com/udayvarmora07/skills-manager/issues
|
|
10
|
+
Project-URL: Documentation, https://github.com/udayvarmora07/skills-manager#readme
|
|
11
|
+
Project-URL: Changelog, https://github.com/udayvarmora07/skills-manager/blob/main/CHANGELOG.md
|
|
12
|
+
Keywords: ai-agents,agent-skills,skill-management,cli,claude-code,cursor,opencode
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
24
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
25
|
+
Classifier: Topic :: Utilities
|
|
26
|
+
Requires-Python: >=3.10
|
|
27
|
+
Description-Content-Type: text/markdown
|
|
28
|
+
License-File: LICENSE
|
|
29
|
+
Dynamic: license-file
|
|
30
|
+
|
|
31
|
+
# skills-manager
|
|
32
|
+
|
|
33
|
+
**The local control plane for your AI coding-agent skills.** Create, organize, sync, back up, and quality-check `SKILL.md` skills across every agent you use — from one CLI and one local web UI.
|
|
34
|
+
|
|
35
|
+
[](https://github.com/udayvarmora07/skills-manager/actions/workflows/ci.yml)
|
|
36
|
+
[](LICENSE)
|
|
37
|
+
[](pyproject.toml)
|
|
38
|
+
|
|
39
|
+
> `skills-manager` on GitHub: `udayvarmora07/skills-manager`. PyPI badge tracks a future release: `skill-control-plane` is not on PyPI yet, so install from source or `pip install` the CI-built wheel/sdist below. Distribution name `skill-control-plane` (`skills-mgr` entry point) is reserved for that release.
|
|
40
|
+
|
|
41
|
+
## Why this exists
|
|
42
|
+
|
|
43
|
+
The [Agent Skills](https://agentskills.io) format (`SKILL.md`) is now an open standard supported by Claude Code, Cursor, Gemini CLI, OpenCode, Copilot/VS Code, Goose, Amp, and more. The ecosystem has **skill libraries** ([vercel-labs/agent-skills](https://github.com/vercel-labs/agent-skills)), **installers** ([skills.sh](https://skills.sh)), and a **spec** — but nobody owns the *management* problem:
|
|
44
|
+
|
|
45
|
+
- The same skill copy-pasted into `~/.claude/skills`, `~/.codex/skills`, Cursor dirs… edits diverge.
|
|
46
|
+
- Vague descriptions cause false activation or misses; oversized bodies eat context.
|
|
47
|
+
- No versioning, no safe update/rollback, no backup story, no cross-tool view.
|
|
48
|
+
|
|
49
|
+
`skills-manager` fills that gap: one store, every scope, full lifecycle.
|
|
50
|
+
|
|
51
|
+
| | skills-manager | `skills.sh` / `npx skills add` | skill libraries |
|
|
52
|
+
|---|---|---|---|
|
|
53
|
+
| Install remote skills | ✅ (via `install`) | ✅ | — (source) |
|
|
54
|
+
| Create / edit / validate locally | ✅ | — | — |
|
|
55
|
+
| Manage across **all** your agents | ✅ (`--scope all`) | single-target | — |
|
|
56
|
+
| Sync + dedup between agents | ✅ | — | — |
|
|
57
|
+
| Version history + trash/rollback | ✅ | — | — |
|
|
58
|
+
| Token-footprint budgeting | ✅ (`tokens`) | — | — |
|
|
59
|
+
| Local web UI | ✅ | — | — |
|
|
60
|
+
|
|
61
|
+
## Install
|
|
62
|
+
|
|
63
|
+
Requires Python ≥ 3.10. The runtime is **stdlib-only** — no dependencies.
|
|
64
|
+
|
|
65
|
+
PyPI is not published yet (see `.github/workflows/release.yml` for the
|
|
66
|
+
controlled Trusted Publishing path). Until the first GitHub Release lands:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
pipx install skill-control-plane # recommended (isolated)
|
|
70
|
+
# or
|
|
71
|
+
pip install skill-control-plane
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Run without installing:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
git clone https://github.com/udayvarmora07/skills-manager
|
|
78
|
+
cd skills-manager
|
|
79
|
+
python3 -m skillsmgr --help
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Quickstart
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# 1. See everything you have, everywhere
|
|
86
|
+
skills-mgr list --scope all
|
|
87
|
+
|
|
88
|
+
# 2. Create a skill once…
|
|
89
|
+
skills-mgr create my-workflow -d "Deploys our staging stack. Use when shipping to staging."
|
|
90
|
+
|
|
91
|
+
# 3. …sync it to every agent you use
|
|
92
|
+
skills-mgr sync my-workflow
|
|
93
|
+
|
|
94
|
+
# 4. Or manage it visually (localhost only, no build step, works offline)
|
|
95
|
+
skills-mgr webui
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
More:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
skills-mgr search "deploy" --scope all # scored search across agents
|
|
102
|
+
skills-mgr tokens --scope all # context-footprint budgeting
|
|
103
|
+
skills-mgr validate --all # spec lint incl. description/body guidance
|
|
104
|
+
skills-mgr export # timestamped backup tarball
|
|
105
|
+
skills-mgr install vercel-labs/agent-skills --dry-run # preview remote install
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Agent scopes
|
|
109
|
+
|
|
110
|
+
One command surface, per-agent directories underneath:
|
|
111
|
+
|
|
112
|
+
| Scope | Directory |
|
|
113
|
+
|---|---|
|
|
114
|
+
| `global` (default) | manager store (`~/.local/share/skills-manager/skills/`) |
|
|
115
|
+
| `claude-code` | `~/.claude/skills` |
|
|
116
|
+
| `codex` | `~/.codex/skills` |
|
|
117
|
+
| `cursor` | `~/.cursor/skills` |
|
|
118
|
+
| `opencode` | `~/.config/opencode/skills` |
|
|
119
|
+
| `gemini` | `~/.gemini/skills` |
|
|
120
|
+
| `commandcode` | `~/.commandcode/skills` |
|
|
121
|
+
| `agents` | `~/.agents/skills` |
|
|
122
|
+
| `all` | merged read-only view |
|
|
123
|
+
|
|
124
|
+
`list`, `view`, `search`, `doctor`, `stats` accept `--scope`; `sync` copies between scopes; `tokens`/`install` have their own scope semantics. Agent-scope writes go straight to the agent dir (no DB) — disable renames `SKILL.md` ⇄ `SKILL.md.disabled` in place, which Claude Code and Command Code both respect.
|
|
125
|
+
|
|
126
|
+
## Web UI
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
skills-mgr webui # http://127.0.0.1:8765, opens browser
|
|
130
|
+
skills-mgr webui --no-browser # server only
|
|
131
|
+
skills-mgr webui --port 9000 # custom port
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Stdlib `ThreadingHTTPServer` backend + vendored Vue 3 (no npm, no CDN, works offline). Scope switcher, live search, trash with undo, validate/doctor/stats/history, templates, tar export plus tar/ZIP import, sync modal. Binds loopback only — never expose it; there is no auth (see [Threat model](skills-manager-threat-model.md)).
|
|
135
|
+
|
|
136
|
+
## Data model
|
|
137
|
+
|
|
138
|
+
- **Filesystem is the source of truth**: `<data>/skills/<name>/SKILL.md`.
|
|
139
|
+
- **SQLite is a rebuildable index only** (`db rebuild` / `db resync` repair any drift; never hand-edit it).
|
|
140
|
+
- Data dir: `$SKILLS_MANAGER_DATA` → `$XDG_DATA_HOME` → `~/.local/share`, then `/skills-manager`.
|
|
141
|
+
|
|
142
|
+
## CLI reference
|
|
143
|
+
|
|
144
|
+
37 invocable names: 27 top-level commands + 7 `trash`/`templates`/`db` subcommands + 3 `ls`/`rm`/`gui` aliases. Exit codes: `0` ok · `1` error · `2` usage · `130` interrupt. `--json` on data commands.
|
|
145
|
+
|
|
146
|
+
Full surface: [`docs/03-cli-surface.md`](docs/03-cli-surface.md).
|
|
147
|
+
|
|
148
|
+
## Contributing
|
|
149
|
+
|
|
150
|
+
PRs welcome — start with [`CONTRIBUTING.md`](CONTRIBUTING.md). Locked constraints for any change:
|
|
151
|
+
|
|
152
|
+
1. Filesystem stays the source of truth.
|
|
153
|
+
2. SQLite schema unchanged.
|
|
154
|
+
3. CLI stays stdlib-only.
|
|
155
|
+
4. Web UI: stdlib backend, no build step, no new runtime deps, loopback bind.
|
|
156
|
+
5. No new CLI commands or Store methods without maintainer approval — open an issue first.
|
|
157
|
+
|
|
158
|
+
## Security
|
|
159
|
+
|
|
160
|
+
See [`SECURITY.md`](SECURITY.md) for disclosure policy. Design notes: [`security_best_practices_report.md`](security_best_practices_report.md), [`skills-manager-threat-model.md`](skills-manager-threat-model.md).
|
|
161
|
+
|
|
162
|
+
## Roadmap
|
|
163
|
+
|
|
164
|
+
Where this is going: [`ROADMAP.md`](ROADMAP.md) (spec-lint+, cross-scope dedup, registry bridge, eval harness, VS Code extension…).
|
|
165
|
+
|
|
166
|
+
## License
|
|
167
|
+
|
|
168
|
+
MIT — see [LICENSE](LICENSE).
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
README.md
|
|
3
|
+
pyproject.toml
|
|
4
|
+
skill_control_plane.egg-info/PKG-INFO
|
|
5
|
+
skill_control_plane.egg-info/SOURCES.txt
|
|
6
|
+
skill_control_plane.egg-info/dependency_links.txt
|
|
7
|
+
skill_control_plane.egg-info/entry_points.txt
|
|
8
|
+
skill_control_plane.egg-info/top_level.txt
|
|
9
|
+
skillsmgr/__init__.py
|
|
10
|
+
skillsmgr/__main__.py
|
|
11
|
+
skillsmgr/archive.py
|
|
12
|
+
skillsmgr/atomic_io.py
|
|
13
|
+
skillsmgr/cli.py
|
|
14
|
+
skillsmgr/cli_handlers.py
|
|
15
|
+
skillsmgr/cli_output.py
|
|
16
|
+
skillsmgr/cli_parser.py
|
|
17
|
+
skillsmgr/colors.py
|
|
18
|
+
skillsmgr/diagnostics.py
|
|
19
|
+
skillsmgr/frontmatter.py
|
|
20
|
+
skillsmgr/insights.py
|
|
21
|
+
skillsmgr/loader.py
|
|
22
|
+
skillsmgr/observations.py
|
|
23
|
+
skillsmgr/path_safety.py
|
|
24
|
+
skillsmgr/paths.py
|
|
25
|
+
skillsmgr/root_discovery.py
|
|
26
|
+
skillsmgr/scopes.py
|
|
27
|
+
skillsmgr/search.py
|
|
28
|
+
skillsmgr/store.py
|
|
29
|
+
skillsmgr/templates.py
|
|
30
|
+
skillsmgr/tokens.py
|
|
31
|
+
skillsmgr/validator.py
|
|
32
|
+
skillsmgr/web_security.py
|
|
33
|
+
skillsmgr/web_serialization.py
|
|
34
|
+
skillsmgr/web_upload.py
|
|
35
|
+
skillsmgr/webapp.py
|
|
36
|
+
skillsmgr/webui/app.js
|
|
37
|
+
skillsmgr/webui/domain.js
|
|
38
|
+
skillsmgr/webui/index.html
|
|
39
|
+
skillsmgr/webui/styles.css
|
|
40
|
+
skillsmgr/webui/static/vendor/vue.global.prod.js
|
|
41
|
+
tests/test_archive_contracts.py
|
|
42
|
+
tests/test_ci_release_contracts.py
|
|
43
|
+
tests/test_cli_contract.py
|
|
44
|
+
tests/test_compatibility.py
|
|
45
|
+
tests/test_complexity_budget.py
|
|
46
|
+
tests/test_concurrency_contracts.py
|
|
47
|
+
tests/test_docs_consistency.py
|
|
48
|
+
tests/test_frontmatter_contracts.py
|
|
49
|
+
tests/test_insights_contracts.py
|
|
50
|
+
tests/test_package_data.py
|
|
51
|
+
tests/test_path_safety.py
|
|
52
|
+
tests/test_scope_contracts.py
|
|
53
|
+
tests/test_search_contracts.py
|
|
54
|
+
tests/test_smoke_fixtures.py
|
|
55
|
+
tests/test_store.py
|
|
56
|
+
tests/test_store_contracts.py
|
|
57
|
+
tests/test_web_scopes.py
|
|
58
|
+
tests/test_webapp.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
skillsmgr
|