skill-control-plane 1.0.1__py3-none-any.whl

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,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
+ [![CI](https://github.com/udayvarmora07/skills-manager/actions/workflows/ci.yml/badge.svg)](https://github.com/udayvarmora07/skills-manager/actions/workflows/ci.yml)
36
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
37
+ [![Python](https://img.shields.io/badge/python-%3E%3D3.10-blue.svg)](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,38 @@
1
+ skill_control_plane-1.0.1.dist-info/licenses/LICENSE,sha256=eXUBKuw1JnIUB5ZU6PdSzd8D9XUQmA4X9pWQm604U0g,1084
2
+ skillsmgr/__init__.py,sha256=ZvvBeJo-6L-mDMGGaZMIlijoTw7fNdzTQImP3Lipk_c,100
3
+ skillsmgr/__main__.py,sha256=-wWUQk_nbZXKeOmFFvssfYNBkSmqM_N2iu0oqqQk9jk,168
4
+ skillsmgr/archive.py,sha256=SkjI-QNA0xhp-TH1ySrR8RTlDVxIIcg3mralTI7hlWg,19417
5
+ skillsmgr/atomic_io.py,sha256=AfZzRvgnxEeoGaOchMxVIFgDcyaiSKNXf6NTPIb4Q18,2642
6
+ skillsmgr/cli.py,sha256=GYkzitNsembqWm8ofNCs-8Mq9pc1ZtbkXEaUf22Wu8I,3929
7
+ skillsmgr/cli_handlers.py,sha256=m0P7FyIR5aoTIaWuQZ2EEcgS4bw0QSqRruPkN8SV8kk,33663
8
+ skillsmgr/cli_output.py,sha256=tU4_h2nISF2-M3--xTuAwsFzuqaKf5jP0RqqnZXmkdw,1537
9
+ skillsmgr/cli_parser.py,sha256=7_e29NxeFH3G1T33nHnbeXWvq7IadD0kYigIzyOTjn4,13172
10
+ skillsmgr/colors.py,sha256=pSMMo874W2_x2VS9NCpt65P8VdeVdiCvE0HmYKRCprU,1495
11
+ skillsmgr/diagnostics.py,sha256=qz8b9Nx8x0QuXIjlu7sCaETkjFu3m_lBsekHleL_wIA,575
12
+ skillsmgr/frontmatter.py,sha256=dBvC26SBW9dBiMQIwK79VAI4bmoJvYyyVYJ3Lms_Lik,34523
13
+ skillsmgr/insights.py,sha256=-uudJ5pl4wHfIi9IUr3daZ1dKMBVyX5MwaSd_zl8NYE,19015
14
+ skillsmgr/loader.py,sha256=I3djBPQMWwPK0j2jYYszNkUdH_lFasUyyNhe_qll2YU,3452
15
+ skillsmgr/observations.py,sha256=5pl0Dtq9Un40hEiCeECjJx4GIGurPYNdIBSe4GvvKhQ,1490
16
+ skillsmgr/path_safety.py,sha256=RxrYs_poh3zkQ5iRf6lwZCmxYFM8Ai1xzFW_gOFxWuw,1990
17
+ skillsmgr/paths.py,sha256=DivY5vWagNDumH6UpP2PQIvj7XHPoGSpVLIJY5QVqaA,2121
18
+ skillsmgr/root_discovery.py,sha256=qpt9-9nmz-f47A2MOQdVVqLGY3UyKM65Usvp4enAyCY,2566
19
+ skillsmgr/scopes.py,sha256=A5PthMnrnTd79SY6BcvJsGH-5fThKHBioQIn0iSOaZY,29377
20
+ skillsmgr/search.py,sha256=t10ITGjx7tz93UKvxzbac771PXZ4YgzG322hHBA2Lp4,2679
21
+ skillsmgr/store.py,sha256=l3FV-jjPcho3d0TEpJ1Or_vsshdCSz92AWjwpViLdR0,62217
22
+ skillsmgr/templates.py,sha256=HMCCutZzf8YIPsJmkaoZlh7VMeOr9qcVkDP_HL8AGtQ,2176
23
+ skillsmgr/tokens.py,sha256=rmdA6SwWqOvidi2ELSUSNx9LarK2JYF_ZsWRXUjmDcs,3938
24
+ skillsmgr/validator.py,sha256=I2QQcbpy6HNFI74J27uHFVo0K7CDaKmGSpTJhfOAjt0,13128
25
+ skillsmgr/web_security.py,sha256=M_CeFl2f_PIhEl1PUG-JoaH2105kYuB6lLPGNO0FYCg,1963
26
+ skillsmgr/web_serialization.py,sha256=Y1oVaeuYhi5kdRTdVOa7w7NoiB8FftCLmEuT6-nZKGc,1079
27
+ skillsmgr/web_upload.py,sha256=CX-TBXfGjOXlT1PTxLN-ovI_Q7vjjcZdUmmXKAly1QM,3813
28
+ skillsmgr/webapp.py,sha256=ea1SYXZZ7tWkX6zwq9uBw0bFcF4UnyYZKdRZ6y58b5s,38350
29
+ skillsmgr/webui/app.js,sha256=maXnkkN83jT7ioJ62K9PQoCZJmtzJyN0Qf0zLA8Z2Yo,35888
30
+ skillsmgr/webui/domain.js,sha256=4cbsiLPpXKI_JZnPfXYvIP8W2ipRIPaV3IttsEOeL4g,5537
31
+ skillsmgr/webui/index.html,sha256=OPSnySxah_UYD1glIlE5PtXcTqm5h-yGj2wYgJS6gQ0,55840
32
+ skillsmgr/webui/styles.css,sha256=kxtMuMCK2DeWtPXOh10S2KwBVOo3xgVUwINE01G_TJk,25302
33
+ skillsmgr/webui/static/vendor/vue.global.prod.js,sha256=xFm6fMjbZcmCWJ-l1kx_9HiHfo5bD9dWgyB87GpOieg,157924
34
+ skill_control_plane-1.0.1.dist-info/METADATA,sha256=f5Y8QjVzcbi567uV93MIutCxz1WEtR0UcHjQOCeVHrQ,7529
35
+ skill_control_plane-1.0.1.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
36
+ skill_control_plane-1.0.1.dist-info/entry_points.txt,sha256=EiOfHf1_W2moDgJv0HCw8rbWIrO8xA_caGjuEZFSIss,50
37
+ skill_control_plane-1.0.1.dist-info/top_level.txt,sha256=DYf4q_v-ju1sKh8z-3GZMjpRJD3TnDRs6TljjgMeD_c,10
38
+ skill_control_plane-1.0.1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ skills-mgr = skillsmgr.cli:main
@@ -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 @@
1
+ skillsmgr
skillsmgr/__init__.py ADDED
@@ -0,0 +1,3 @@
1
+ """skills-mgr: manage agentic AI skills (SKILL.md) from the command line."""
2
+
3
+ __version__ = "1.0.1"
skillsmgr/__main__.py ADDED
@@ -0,0 +1,10 @@
1
+ """Entry point for ``python3 -m skillsmgr``."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import sys
6
+
7
+ from .cli import main
8
+
9
+ if __name__ == "__main__":
10
+ sys.exit(main())