agent-skill-manager 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,233 @@
1
+ # env
2
+ .claude/
3
+
4
+ # Skill Manager temporary and metadata files
5
+ .tmp_skills/
6
+ .tmp_update/
7
+ .trash/
8
+ .backup/
9
+ .skill_metadata.json
10
+ */.skill_metadata.json
11
+
12
+ # AI Agent skill directories
13
+ .cursor/skills/
14
+ .windsurf/skills/
15
+ .opencode/skills/
16
+ .codex/skills/
17
+ .agents/skills/
18
+ .kilocode/skills/
19
+ .roo/skills/
20
+ .goose/skills/
21
+ .gemini/skills/
22
+ .agent/skills/
23
+ .github/skills/
24
+ .factory/skills/
25
+ skills/
26
+
27
+ # Byte-compiled / optimized / DLL files
28
+ __pycache__/
29
+ *.py[codz]
30
+ *$py.class
31
+
32
+ # C extensions
33
+ *.so
34
+
35
+ # Distribution / packaging
36
+ .Python
37
+ build/
38
+ develop-eggs/
39
+ dist/
40
+ downloads/
41
+ eggs/
42
+ .eggs/
43
+ lib/
44
+ lib64/
45
+ parts/
46
+ sdist/
47
+ var/
48
+ wheels/
49
+ share/python-wheels/
50
+ *.egg-info/
51
+ .installed.cfg
52
+ *.egg
53
+ MANIFEST
54
+
55
+ # PyInstaller
56
+ # Usually these files are written by a python script from a template
57
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
58
+ *.manifest
59
+ *.spec
60
+
61
+ # Installer logs
62
+ pip-log.txt
63
+ pip-delete-this-directory.txt
64
+
65
+ # Unit test / coverage reports
66
+ htmlcov/
67
+ .tox/
68
+ .nox/
69
+ .coverage
70
+ .coverage.*
71
+ .cache
72
+ nosetests.xml
73
+ coverage.xml
74
+ *.cover
75
+ *.py.cover
76
+ .hypothesis/
77
+ .pytest_cache/
78
+ cover/
79
+
80
+ # Translations
81
+ *.mo
82
+ *.pot
83
+
84
+ # Django stuff:
85
+ *.log
86
+ local_settings.py
87
+ db.sqlite3
88
+ db.sqlite3-journal
89
+
90
+ # Flask stuff:
91
+ instance/
92
+ .webassets-cache
93
+
94
+ # Scrapy stuff:
95
+ .scrapy
96
+
97
+ # Sphinx documentation
98
+ docs/_build/
99
+
100
+ # PyBuilder
101
+ .pybuilder/
102
+ target/
103
+
104
+ # Jupyter Notebook
105
+ .ipynb_checkpoints
106
+
107
+ # IPython
108
+ profile_default/
109
+ ipython_config.py
110
+
111
+ # pyenv
112
+ # For a library or package, you might want to ignore these files since the code is
113
+ # intended to run in multiple environments; otherwise, check them in:
114
+ # .python-version
115
+
116
+ # pipenv
117
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
118
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
119
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
120
+ # install all needed dependencies.
121
+ #Pipfile.lock
122
+
123
+ # UV
124
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
125
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
126
+ # commonly ignored for libraries.
127
+ #uv.lock
128
+
129
+ # poetry
130
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
131
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
132
+ # commonly ignored for libraries.
133
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
134
+ #poetry.lock
135
+ #poetry.toml
136
+
137
+ # pdm
138
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
139
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
140
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
141
+ #pdm.lock
142
+ #pdm.toml
143
+ .pdm-python
144
+ .pdm-build/
145
+
146
+ # pixi
147
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
148
+ #pixi.lock
149
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
150
+ # in the .venv directory. It is recommended not to include this directory in version control.
151
+ .pixi
152
+
153
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
154
+ __pypackages__/
155
+
156
+ # Celery stuff
157
+ celerybeat-schedule
158
+ celerybeat.pid
159
+
160
+ # SageMath parsed files
161
+ *.sage.py
162
+
163
+ # Environments
164
+ .env
165
+ .envrc
166
+ .venv
167
+ env/
168
+ venv/
169
+ ENV/
170
+ env.bak/
171
+ venv.bak/
172
+
173
+ # Spyder project settings
174
+ .spyderproject
175
+ .spyproject
176
+
177
+ # Rope project settings
178
+ .ropeproject
179
+
180
+ # mkdocs documentation
181
+ /site
182
+
183
+ # mypy
184
+ .mypy_cache/
185
+ .dmypy.json
186
+ dmypy.json
187
+
188
+ # Pyre type checker
189
+ .pyre/
190
+
191
+ # pytype static type analyzer
192
+ .pytype/
193
+
194
+ # Cython debug symbols
195
+ cython_debug/
196
+
197
+ # PyCharm
198
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
199
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
200
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
201
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
202
+ #.idea/
203
+
204
+ # Abstra
205
+ # Abstra is an AI-powered process automation framework.
206
+ # Ignore directories containing user credentials, local state, and settings.
207
+ # Learn more at https://abstra.io/docs
208
+ .abstra/
209
+
210
+ # Visual Studio Code
211
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
212
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
213
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
214
+ # you could uncomment the following to ignore the entire vscode folder
215
+ # .vscode/
216
+
217
+ # Ruff stuff:
218
+ .ruff_cache/
219
+
220
+ # PyPI configuration file
221
+ .pypirc
222
+
223
+ # Cursor
224
+ # Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
225
+ # exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
226
+ # refer to https://docs.cursor.com/context/ignore-files
227
+ .cursorignore
228
+ .cursorindexingignore
229
+
230
+ # Marimo
231
+ marimo/_static/
232
+ marimo/_lsp/
233
+ __marimo__/
@@ -0,0 +1,32 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v6.0.0
4
+ hooks:
5
+ - id: check-yaml
6
+ - id: end-of-file-fixer
7
+ - id: trailing-whitespace
8
+ - id: mixed-line-ending
9
+ args: [--fix=lf]
10
+ - repo: https://github.com/astral-sh/ruff-pre-commit
11
+ rev: v0.14.13
12
+ hooks:
13
+ - id: ruff-check
14
+ args: [--fix, --unsafe-fixes]
15
+ types_or: [python, pyi]
16
+
17
+ default_language_version:
18
+ python: python3.13
19
+
20
+ exclude: |
21
+ (?x)^(
22
+ \.git/|
23
+ \.venv/|
24
+ __pycache__/|
25
+ \.pytest_cache/|
26
+ \.ruff_cache/|
27
+ build/|
28
+ dist/|
29
+ .*\.egg-info/|
30
+ data/|
31
+ logs/
32
+ )$
@@ -0,0 +1 @@
1
+ 3.13
@@ -0,0 +1,21 @@
1
+ FROM python:3.13-slim-trixie
2
+
3
+ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
4
+
5
+ ENV UV_CACHE_DIR=/root/.cache/uv \
6
+ UV_LINK_MODE=copy \
7
+ UV_COMPILE_BYTECODE=1
8
+
9
+ WORKDIR /app
10
+
11
+ RUN --mount=type=cache,target=${UV_CACHE_DIR} \
12
+ --mount=type=bind,source=uv.lock,target=uv.lock \
13
+ --mount=type=bind,source=pyproject.toml,target=pyproject.toml \
14
+ uv sync --locked --no-install-project
15
+
16
+ COPY . .
17
+
18
+ RUN --mount=type=cache,target=${UV_CACHE_DIR} \
19
+ uv sync --locked
20
+
21
+ CMD ["uv", "run", "python", "main.py"]
@@ -0,0 +1,244 @@
1
+ Metadata-Version: 2.4
2
+ Name: agent-skill-manager
3
+ Version: 0.1.0
4
+ Summary: CLI tool for managing AI agent skills across multiple platforms
5
+ Author-email: ackness <ackness8@gmail.com>
6
+ Requires-Python: >=3.13
7
+ Requires-Dist: httpx>=0.28.1
8
+ Requires-Dist: inquirerpy>=0.3.4
9
+ Requires-Dist: loguru>=0.7.3
10
+ Requires-Dist: rich>=14.2.0
11
+ Description-Content-Type: text/markdown
12
+
13
+ # Agent Skill Manager
14
+
15
+ A comprehensive CLI tool for managing AI agent skills across multiple platforms. Download, deploy, update, and manage skills for AI coding assistants like Claude Code, Cursor, Windsurf, and more.
16
+
17
+ [![PyPI version](https://badge.fury.io/py/agent-skill-manager.svg)](https://pypi.org/project/agent-skill-manager/)
18
+ [![Python 3.13+](https://img.shields.io/badge/python-3.13+-blue.svg)](https://www.python.org/downloads/)
19
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
20
+
21
+ ## Features
22
+
23
+ - 📥 **Download** skills from GitHub with metadata tracking
24
+ - 🚀 **Deploy** skills to multiple AI agents (global or project-level)
25
+ - 🔄 **Update** skills automatically from GitHub sources
26
+ - 🗑️ **Uninstall** with safe deletion (move to trash) or hard delete
27
+ - ♻️ **Restore** deleted skills from trash
28
+ - 📋 **List** all installed skills with version information
29
+
30
+ ## Supported AI Agents
31
+
32
+ - Claude Code
33
+ - Cursor
34
+ - Windsurf
35
+ - OpenCode
36
+ - GitHub Copilot
37
+ - Goose
38
+ - Gemini CLI
39
+ - Roo Code
40
+ - Kilo Code
41
+ - Amp
42
+ - Codex
43
+ - Antigravity
44
+ - Clawdbot
45
+ - Droid
46
+
47
+ ## Installation
48
+
49
+ ### From PyPI
50
+
51
+ ```bash
52
+ # Using pip
53
+ pip install agent-skill-manager
54
+
55
+ # Using uv (recommended)
56
+ uv pip install agent-skill-manager
57
+
58
+ # Using pipx (isolated installation)
59
+ pipx install agent-skill-manager
60
+ ```
61
+
62
+ ### From Source
63
+
64
+ ```bash
65
+ git clone https://github.com/ackness/skill-manager.git
66
+ cd skill-manager
67
+ uv sync
68
+ uv pip install -e .
69
+ ```
70
+
71
+ ## Quick Start
72
+
73
+ ```bash
74
+ # Install a skill from GitHub
75
+ sm install
76
+
77
+ # List installed skills
78
+ sm list
79
+
80
+ # Update all skills
81
+ sm update --all
82
+
83
+ # Deploy local skills to agents
84
+ sm deploy
85
+
86
+ # Uninstall a skill (safe delete)
87
+ sm uninstall
88
+ ```
89
+
90
+ ## Commands
91
+
92
+ | Command | Description |
93
+ |---------|-------------|
94
+ | `sm download` | Download a skill from GitHub |
95
+ | `sm deploy` | Deploy local skills to agents |
96
+ | `sm install` | Download and deploy in one step |
97
+ | `sm uninstall` | Remove skills (safe delete/hard delete) |
98
+ | `sm restore` | Restore deleted skills from trash |
99
+ | `sm update` | Update selected skills from GitHub |
100
+ | `sm update --all` | Update all GitHub-sourced skills |
101
+ | `sm list` | Show installed skills with versions |
102
+
103
+ ## Usage Examples
104
+
105
+ ### Install a skill from GitHub
106
+
107
+ ```bash
108
+ sm install
109
+ # Enter URL: https://github.com/user/repo/tree/main/skills/example-skill
110
+ # Follow the prompts to save locally and deploy
111
+ ```
112
+
113
+ ### Update all skills
114
+
115
+ ```bash
116
+ sm update --all
117
+ # Automatically updates all skills installed from GitHub
118
+ ```
119
+
120
+ ### List installed skills with versions
121
+
122
+ ```bash
123
+ sm list
124
+ # Shows a table for each agent with:
125
+ # - Skill Name
126
+ # - Version/Updated timestamp
127
+ # - Source (GitHub/Local)
128
+ # - GitHub URL (for updatable skills)
129
+ ```
130
+
131
+ ### Safe delete and restore
132
+
133
+ ```bash
134
+ # Uninstall with safe delete (default)
135
+ sm uninstall
136
+
137
+ # Restore if needed
138
+ sm restore
139
+ ```
140
+
141
+ ## Version Tracking
142
+
143
+ The tool uses two methods for version identification:
144
+
145
+ 1. **GitHub Metadata** (for installed skills)
146
+ - Tracks installation and update timestamps
147
+ - Stores repository information
148
+ - Enables automatic updates
149
+
150
+ 2. **File Modification Time** (for local skills)
151
+ - Uses SKILL.md modification time as fallback
152
+ - For skills without metadata
153
+
154
+ ## Directory Structure
155
+
156
+ ### Global Installation
157
+ Skills are available to all projects:
158
+ ```
159
+ ~/.claude/skills/ # Claude Code
160
+ ~/.cursor/skills/ # Cursor
161
+ ~/.codeium/windsurf/skills/ # Windsurf
162
+ # ... other agents
163
+ ```
164
+
165
+ ### Project Installation
166
+ Skills are only available in the current project:
167
+ ```
168
+ project-root/
169
+ .claude/skills/
170
+ .cursor/skills/
171
+ # ... other agents
172
+ ```
173
+
174
+ ## Configuration
175
+
176
+ Each skill installed from GitHub includes metadata in `.skill_metadata.json`:
177
+
178
+ ```json
179
+ {
180
+ "source": "github",
181
+ "github_url": "https://github.com/...",
182
+ "owner": "user",
183
+ "repo": "repo-name",
184
+ "branch": "main",
185
+ "path": "skills/skill-name",
186
+ "installed_at": "2026-01-20T14:30:52+00:00",
187
+ "updated_at": "2026-01-20T14:30:52+00:00"
188
+ }
189
+ ```
190
+
191
+ ## Development
192
+
193
+ ### Adding Support for New Agents
194
+
195
+ Edit `src/skill_manager/agents.py` and add the agent configuration:
196
+
197
+ ```python
198
+ "agent-id": {
199
+ "name": "Agent Name",
200
+ "project": ".agent/skills/",
201
+ "global": "~/.agent/skills/",
202
+ }
203
+ ```
204
+
205
+ ### Running Tests
206
+
207
+ ```bash
208
+ uv run pytest
209
+ ```
210
+
211
+ ### Code Formatting
212
+
213
+ ```bash
214
+ uv run ruff format .
215
+ uv run ruff check . --fix
216
+ ```
217
+
218
+ ## Contributing
219
+
220
+ Contributions are welcome! Please feel free to submit a Pull Request.
221
+
222
+ 1. Fork the repository
223
+ 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
224
+ 3. Commit your changes (`git commit -m 'Add some amazing feature'`)
225
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
226
+ 5. Open a Pull Request
227
+
228
+ ## Related Projects
229
+
230
+ - [Agent Skills Specification](https://agentskills.io/specification)
231
+ - [Agent Skills Registry](https://agentskills.io)
232
+
233
+ ## License
234
+
235
+ MIT License - See [LICENSE](LICENSE) file for details
236
+
237
+ ## Author
238
+
239
+ **ackness** - [ackness8@gmail.com](mailto:ackness8@gmail.com)
240
+
241
+ ## Acknowledgments
242
+
243
+ - Built following the [Agent Skills specification](https://agentskills.io/specification)
244
+ - Supports all major AI coding assistants