polyskills 0.0.1.dev0__tar.gz → 2.0.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.
- {polyskills-0.0.1.dev0 → polyskills-2.0.0}/LICENSE +1 -1
- polyskills-2.0.0/PKG-INFO +259 -0
- polyskills-2.0.0/README.md +211 -0
- polyskills-2.0.0/polyskills/__init__.py +19 -0
- polyskills-2.0.0/polyskills/apps/__init__.py +0 -0
- polyskills-2.0.0/polyskills/apps/tools.py +16 -0
- polyskills-2.0.0/polyskills/cli.py +469 -0
- polyskills-2.0.0/polyskills/error/__init__.py +14 -0
- polyskills-2.0.0/polyskills/error/exceptions.py +0 -0
- polyskills-2.0.0/polyskills/error/warnings.py +0 -0
- polyskills-2.0.0/polyskills/extensions/__init__.py +109 -0
- polyskills-2.0.0/polyskills/remote/__init__.py +11 -0
- polyskills-2.0.0/polyskills/remote/sources.py +603 -0
- polyskills-2.0.0/polyskills/tests/__init__.py +28 -0
- polyskills-2.0.0/polyskills/tests/__main__.py +41 -0
- polyskills-2.0.0/polyskills/tests/base.py +120 -0
- polyskills-2.0.0/polyskills/tests/test_cli.py +770 -0
- polyskills-2.0.0/polyskills/tests/test_remote_sources.py +137 -0
- polyskills-2.0.0/polyskills/tests/test_skill_install.py +281 -0
- polyskills-2.0.0/polyskills.egg-info/PKG-INFO +259 -0
- polyskills-2.0.0/polyskills.egg-info/SOURCES.txt +25 -0
- polyskills-2.0.0/polyskills.egg-info/entry_points.txt +2 -0
- polyskills-2.0.0/polyskills.egg-info/requires.txt +2 -0
- {polyskills-0.0.1.dev0 → polyskills-2.0.0}/polyskills.egg-info/top_level.txt +1 -0
- {polyskills-0.0.1.dev0 → polyskills-2.0.0}/pyproject.toml +8 -2
- polyskills-0.0.1.dev0/PKG-INFO +0 -57
- polyskills-0.0.1.dev0/README.md +0 -11
- polyskills-0.0.1.dev0/polyskills/__init__.py +0 -10
- polyskills-0.0.1.dev0/polyskills.egg-info/PKG-INFO +0 -57
- polyskills-0.0.1.dev0/polyskills.egg-info/SOURCES.txt +0 -8
- {polyskills-0.0.1.dev0 → polyskills-2.0.0}/polyskills.egg-info/dependency_links.txt +0 -0
- {polyskills-0.0.1.dev0 → polyskills-2.0.0}/setup.cfg +0 -0
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: polyskills
|
|
3
|
+
Version: 2.0.0
|
|
4
|
+
Summary: A Python CLI Tool for Skills Management
|
|
5
|
+
Author-email: ZenithClown <dpramanik.official@gmail.com>
|
|
6
|
+
License: MIT License
|
|
7
|
+
|
|
8
|
+
Copyright (c) 2025 Debmalya Pramanik
|
|
9
|
+
|
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
+
in the Software without restriction, including without limitation the rights
|
|
13
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
+
furnished to do so, subject to the following conditions:
|
|
16
|
+
|
|
17
|
+
The above copyright notice and this permission notice shall be included in all
|
|
18
|
+
copies or substantial portions of the Software.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
+
SOFTWARE.
|
|
27
|
+
|
|
28
|
+
Project-URL: Homepage, https://github.com/PyUtility/polyskills
|
|
29
|
+
Project-URL: Repository, https://github.com/PyUtility/polyskills
|
|
30
|
+
Project-URL: Issues, https://github.com/PyUtility/polyskills/issues
|
|
31
|
+
Keywords: skills,anthropic,claude,codex,antigravity
|
|
32
|
+
Classifier: Development Status :: 2 - Pre-Alpha
|
|
33
|
+
Classifier: Intended Audience :: Developers
|
|
34
|
+
Classifier: Programming Language :: Python
|
|
35
|
+
Classifier: Programming Language :: Python :: 3
|
|
36
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
37
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
38
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
39
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
40
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
41
|
+
Classifier: Operating System :: OS Independent
|
|
42
|
+
Requires-Python: >=3.12
|
|
43
|
+
Description-Content-Type: text/markdown
|
|
44
|
+
License-File: LICENSE
|
|
45
|
+
Requires-Dist: requests>=2.31
|
|
46
|
+
Requires-Dist: packaging>=23.0
|
|
47
|
+
Dynamic: license-file
|
|
48
|
+
|
|
49
|
+
<div align = "center">
|
|
50
|
+
|
|
51
|
+
# LLM Essentials - Library of Skills, Agents, Workflows
|
|
52
|
+
|
|
53
|
+

|
|
54
|
+

|
|
55
|
+
|
|
56
|
+
</div>
|
|
57
|
+
|
|
58
|
+
<div align = "justify">
|
|
59
|
+
|
|
60
|
+
A curated collection of AI agents, skills, workflows, etc., that can work across industries - providing Python-based utility
|
|
61
|
+
functions to synchronize the library across multiple systems using a version-controlled system. The project also provides
|
|
62
|
+
connectors for universal loading across different LLM tools (Anthropic's Claude Code, CodeX, Cursor AI, etc.) that can read skills
|
|
63
|
+
either directly (Claude Code) or follow prompts based control. 🤖✨
|
|
64
|
+
|
|
65
|
+
## 🧠 Introduction to LLM Library
|
|
66
|
+
|
|
67
|
+
Artificial Intelligence (AI) systems are revolutionizing the way industries operate. From everyday tasks to specialized,
|
|
68
|
+
automated tasks - AI brings efficiency, innovation, and scalability. With the release of [Claude Skills](https://claude.com/skills),
|
|
69
|
+
[AI Agent Skills](https://agentskills.io/home) and other niche, fast-paced developments in this space - it is now a fundamental
|
|
70
|
+
requirement to maintain a unified, standardized repository of these capabilities.
|
|
71
|
+
|
|
72
|
+
### 🤖 Project Capabilities
|
|
73
|
+
|
|
74
|
+
The project provides a curated list of AI [agents](./library/agents/), [skills](./library//skills/), and other essential tools
|
|
75
|
+
that enhances the way AI agents works and performs. In addition, the skills also provides different customization rules (e.g.,
|
|
76
|
+
generate an code output the way you write code, or generate email content based on your own writing styles).
|
|
77
|
+
|
|
78
|
+
* A categorized list of [AI Skills](./library//skills/) in a standard [Agent Skills](https://agentskills.io/home) format to
|
|
79
|
+
give new capabilities and expertise.
|
|
80
|
+
* A list of [AI Agents](./library/agents/) to break tasks into seperate functional groups that can work concurrently or in a
|
|
81
|
+
sequential manner as per the design pattern.
|
|
82
|
+
* A dedicated *open-source* Python framework to manage all above skills, agents, etc. from any version controlled remote
|
|
83
|
+
repositories across different systems and projects using single source of truth.
|
|
84
|
+
* A set of adapters to convert standard Agent Skills to other AI coding agents (which does not support native `SKILLS.md`,
|
|
85
|
+
or `AGENTS.md` file) by converting files to prompts.
|
|
86
|
+
|
|
87
|
+
## 🚀 Getting Started
|
|
88
|
+
|
|
89
|
+
LLM Tools like Anthropic's Claude Code can directly work with the Agent Skills format that invokes `SKILLS.md` (or `AGENTS.md`)
|
|
90
|
+
file natively based on skill description or keywords defined in a settings file. However, some other tools may require an
|
|
91
|
+
adapter to safely convert to system prompts. The Python [`framework`](./polyskills/) is designed to address the issue by importing
|
|
92
|
+
the required skills from any version controlled systems such that one single source of truth can be maintained across different
|
|
93
|
+
production environment or projects having the same functionalities - thus providing consistent output.
|
|
94
|
+
|
|
95
|
+
### 📦 Installation
|
|
96
|
+
|
|
97
|
+
The package is hosted at [PyPI](http://pypi.org/project/polyskills/) and can be installed using the `pip` package manager as:
|
|
98
|
+
|
|
99
|
+
```shell
|
|
100
|
+
$ pip install polyskills
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
To install the package from source, you need to have `git` client available on your system and install the binaries using the
|
|
104
|
+
below command:
|
|
105
|
+
|
|
106
|
+
```shell
|
|
107
|
+
$ git clone https://github.com/PyUtility/polyskills
|
|
108
|
+
$ pip install . # cd into polyskills; editable install using -e
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
The `**library**` requires **Python 3.12+** and is designed to have minimal overheads, thus providing *long-term compatibility*
|
|
112
|
+
with the upcoming releases (requires [standard libraries](https://docs.python.org/3/library/index.html) which is shipped by
|
|
113
|
+
default) of Python language and AI tools.
|
|
114
|
+
|
|
115
|
+
### 🧰 CLI Overview
|
|
116
|
+
|
|
117
|
+
Once installed, the `polyskills` command is exposed on the system `PATH`. Use the `--help` flag at any level to discover
|
|
118
|
+
documentation for all sub-commands and flags. The CLI is organized around four sub-commands:
|
|
119
|
+
|
|
120
|
+
| 🔖 Command | 🎯 Purpose |
|
|
121
|
+
| :--- | :--- |
|
|
122
|
+
| `tools` | List the supported LLM tools (e.g., Claude Code, GitHub Copilot) and exit. |
|
|
123
|
+
| `sources` | List the supported remote source providers (e.g., GitHub) and exit. |
|
|
124
|
+
| `list` | Enumerate available extensions under a remote `<source>` directory, no download. |
|
|
125
|
+
| `manager` | Fetch a single extension (`skills` / `agents`) from the remote into a local directory. |
|
|
126
|
+
|
|
127
|
+
```shell
|
|
128
|
+
$ polyskills --help # top level documentation and sub-commands
|
|
129
|
+
$ polyskills manager --help # documentation for the 'manager' sub-command
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 🔍 Discover Supported Tools and Sources
|
|
133
|
+
|
|
134
|
+
The `tools` and `sources` sub-commands are *terminal*, i.e., they print and exit. Use them to validate that a target LLM
|
|
135
|
+
tool or remote provider is supported before running a fetch.
|
|
136
|
+
|
|
137
|
+
```shell
|
|
138
|
+
$ polyskills tools
|
|
139
|
+
>> Available LLM Tools:
|
|
140
|
+
>> 01. CLAUDE_CODE - https://claude.com/product/claude-code
|
|
141
|
+
>> 02. GITHUB_COPILOT - https://github.com/features/copilot
|
|
142
|
+
|
|
143
|
+
$ polyskills sources
|
|
144
|
+
>> Available Sources:
|
|
145
|
+
>> 01. GITHUB - https://www.github.com/
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 📜 List Extensions on a Remote
|
|
149
|
+
|
|
150
|
+
Use the `list` sub-command to enumerate the immediate child directories under a remote `--source` path without downloading
|
|
151
|
+
any content. The required positional `LIBRARY` argument selects the extension family (`skills`, `agents`, `commands`,
|
|
152
|
+
`hooks`) and also supplies the default `--source` directory (`./<library>`) when `--source` is omitted.
|
|
153
|
+
|
|
154
|
+
```shell
|
|
155
|
+
$ polyskills list https://github.com/PyUtility/polyskills skills \
|
|
156
|
+
--source ./extensions/skills
|
|
157
|
+
>> Available skills at `extensions/skills` (version = master):
|
|
158
|
+
>> >> 01. git-commiter
|
|
159
|
+
>> >> 02. markdown-format
|
|
160
|
+
>> >> 03. python-code-format
|
|
161
|
+
>> >> 04. sql-code-format
|
|
162
|
+
|
|
163
|
+
$ polyskills list https://github.com/PyUtility/polyskills agents \
|
|
164
|
+
--source ./extensions/agents --version master
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### 📥 Fetch an Extension with `manager`
|
|
168
|
+
|
|
169
|
+
The `manager` sub-command downloads a single extension (`skills` or `agents`) into a destination directory. The library
|
|
170
|
+
type is selected via a sub-sub-parser (`skills` / `agents`) and the extension name comes from `-n / --name`. When
|
|
171
|
+
`--destination` is not provided, the CLI defaults to `./<library>/<name>`.
|
|
172
|
+
|
|
173
|
+
```shell
|
|
174
|
+
$ polyskills manager https://github.com/PyUtility/polyskills \
|
|
175
|
+
--source ./extensions/skills \
|
|
176
|
+
--name python-code-format \
|
|
177
|
+
--destination ./.claude/skills/python-code-format \
|
|
178
|
+
skills
|
|
179
|
+
|
|
180
|
+
$ polyskills manager https://github.com/PyUtility/polyskills \
|
|
181
|
+
--source ./extensions/agents \
|
|
182
|
+
-n python-code-reviewer \
|
|
183
|
+
-d ./.claude/agents/python-code-reviewer \
|
|
184
|
+
agents
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
The `--exists` flag controls behavior when the destination directory already exists and is non-empty:
|
|
188
|
+
|
|
189
|
+
* 🛑 `fail` (default) - raise `FileExistsError`, leave the destination untouched.
|
|
190
|
+
* 🧹 `overwrite` - remove the destination tree and re-extract from scratch.
|
|
191
|
+
* 🛠 `merge` - extract on top of the existing tree, overwriting on conflict.
|
|
192
|
+
|
|
193
|
+
### 🔐 Authentication and Pagination
|
|
194
|
+
|
|
195
|
+
For private or self-hosted repositories, an authentication token is required. The token is resolved with the following
|
|
196
|
+
precedence (highest first):
|
|
197
|
+
|
|
198
|
+
1. Environment variable `POLYSKILLS_REMOTE_TOKEN` (recommended for CI / production).
|
|
199
|
+
2. The `--token` CLI flag (discouraged outside local testing - the value may leak into shell history).
|
|
200
|
+
|
|
201
|
+
```shell
|
|
202
|
+
$ $env:POLYSKILLS_REMOTE_TOKEN = "ghp_xxx" # PowerShell
|
|
203
|
+
$ export POLYSKILLS_REMOTE_TOKEN="ghp_xxx" # bash / zsh
|
|
204
|
+
|
|
205
|
+
$ polyskills list https://github.com/<org>/<private-repo> skills \
|
|
206
|
+
--source ./extensions/skills --pagination 100
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
The `--pagination` flag (defaults to `100`, the GitHub maximum) tunes how many entries are returned per REST API page
|
|
210
|
+
during enumeration. The `--version` flag (defaults to `master`) pins the fetch to an exact tag or commit SHA so the
|
|
211
|
+
extension content is reproducible across systems.
|
|
212
|
+
|
|
213
|
+
### 🐍 Programmatic Usage
|
|
214
|
+
|
|
215
|
+
In addition to the CLI, every primitive is exposed as a Python API so the same workflow can be embedded inside automation
|
|
216
|
+
scripts, CI pipelines, or notebooks.
|
|
217
|
+
|
|
218
|
+
```python
|
|
219
|
+
from pathlib import Path
|
|
220
|
+
|
|
221
|
+
from polyskills.cli import get, listExtensions
|
|
222
|
+
from polyskills.remote.sources import SourceControl
|
|
223
|
+
|
|
224
|
+
control = SourceControl(pagination = 100, token = None)
|
|
225
|
+
|
|
226
|
+
names = listExtensions(
|
|
227
|
+
remote = "https://github.com/PyUtility/polyskills",
|
|
228
|
+
library = "skills",
|
|
229
|
+
source = Path("./extensions/skills"),
|
|
230
|
+
version = "master",
|
|
231
|
+
control = control,
|
|
232
|
+
)
|
|
233
|
+
|
|
234
|
+
get(
|
|
235
|
+
remote = "https://github.com/PyUtility/polyskills",
|
|
236
|
+
name = "python-code-format",
|
|
237
|
+
source = Path("./extensions/skills"),
|
|
238
|
+
destination = Path("./.claude/skills/python-code-format"),
|
|
239
|
+
version = "master",
|
|
240
|
+
exists = "overwrite",
|
|
241
|
+
control = control,
|
|
242
|
+
)
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## ⚖️ Project License
|
|
246
|
+
|
|
247
|
+
This project is licensed under the [MIT License](...). Permission is granted to use, copy, modify, merge, publish,
|
|
248
|
+
distribute, sublicense, and/or sell copies of the software. The software is provided “as is”, without warranty of any kind,
|
|
249
|
+
express or implied. See the LICENSE file for full details.
|
|
250
|
+
|
|
251
|
+
## ⚠️ Project Disclaimer
|
|
252
|
+
|
|
253
|
+
The project provides a curated lists of skills, agents, etc. which can alter the performance of AI tools significantly. AI makes
|
|
254
|
+
mistakes and the tools listed here can worsen the performance. Please read, verify and research before using any content.
|
|
255
|
+
|
|
256
|
+
AI tools often charges based on token consumptions (approx. number of input + output words) and using contents from this library
|
|
257
|
+
may significantly increase the consumption cost. Always check and track usage of the model with/without using the skills.
|
|
258
|
+
|
|
259
|
+
</div>
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
<div align = "center">
|
|
2
|
+
|
|
3
|
+
# LLM Essentials - Library of Skills, Agents, Workflows
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+

|
|
7
|
+
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<div align = "justify">
|
|
11
|
+
|
|
12
|
+
A curated collection of AI agents, skills, workflows, etc., that can work across industries - providing Python-based utility
|
|
13
|
+
functions to synchronize the library across multiple systems using a version-controlled system. The project also provides
|
|
14
|
+
connectors for universal loading across different LLM tools (Anthropic's Claude Code, CodeX, Cursor AI, etc.) that can read skills
|
|
15
|
+
either directly (Claude Code) or follow prompts based control. 🤖✨
|
|
16
|
+
|
|
17
|
+
## 🧠 Introduction to LLM Library
|
|
18
|
+
|
|
19
|
+
Artificial Intelligence (AI) systems are revolutionizing the way industries operate. From everyday tasks to specialized,
|
|
20
|
+
automated tasks - AI brings efficiency, innovation, and scalability. With the release of [Claude Skills](https://claude.com/skills),
|
|
21
|
+
[AI Agent Skills](https://agentskills.io/home) and other niche, fast-paced developments in this space - it is now a fundamental
|
|
22
|
+
requirement to maintain a unified, standardized repository of these capabilities.
|
|
23
|
+
|
|
24
|
+
### 🤖 Project Capabilities
|
|
25
|
+
|
|
26
|
+
The project provides a curated list of AI [agents](./library/agents/), [skills](./library//skills/), and other essential tools
|
|
27
|
+
that enhances the way AI agents works and performs. In addition, the skills also provides different customization rules (e.g.,
|
|
28
|
+
generate an code output the way you write code, or generate email content based on your own writing styles).
|
|
29
|
+
|
|
30
|
+
* A categorized list of [AI Skills](./library//skills/) in a standard [Agent Skills](https://agentskills.io/home) format to
|
|
31
|
+
give new capabilities and expertise.
|
|
32
|
+
* A list of [AI Agents](./library/agents/) to break tasks into seperate functional groups that can work concurrently or in a
|
|
33
|
+
sequential manner as per the design pattern.
|
|
34
|
+
* A dedicated *open-source* Python framework to manage all above skills, agents, etc. from any version controlled remote
|
|
35
|
+
repositories across different systems and projects using single source of truth.
|
|
36
|
+
* A set of adapters to convert standard Agent Skills to other AI coding agents (which does not support native `SKILLS.md`,
|
|
37
|
+
or `AGENTS.md` file) by converting files to prompts.
|
|
38
|
+
|
|
39
|
+
## 🚀 Getting Started
|
|
40
|
+
|
|
41
|
+
LLM Tools like Anthropic's Claude Code can directly work with the Agent Skills format that invokes `SKILLS.md` (or `AGENTS.md`)
|
|
42
|
+
file natively based on skill description or keywords defined in a settings file. However, some other tools may require an
|
|
43
|
+
adapter to safely convert to system prompts. The Python [`framework`](./polyskills/) is designed to address the issue by importing
|
|
44
|
+
the required skills from any version controlled systems such that one single source of truth can be maintained across different
|
|
45
|
+
production environment or projects having the same functionalities - thus providing consistent output.
|
|
46
|
+
|
|
47
|
+
### 📦 Installation
|
|
48
|
+
|
|
49
|
+
The package is hosted at [PyPI](http://pypi.org/project/polyskills/) and can be installed using the `pip` package manager as:
|
|
50
|
+
|
|
51
|
+
```shell
|
|
52
|
+
$ pip install polyskills
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
To install the package from source, you need to have `git` client available on your system and install the binaries using the
|
|
56
|
+
below command:
|
|
57
|
+
|
|
58
|
+
```shell
|
|
59
|
+
$ git clone https://github.com/PyUtility/polyskills
|
|
60
|
+
$ pip install . # cd into polyskills; editable install using -e
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
The `**library**` requires **Python 3.12+** and is designed to have minimal overheads, thus providing *long-term compatibility*
|
|
64
|
+
with the upcoming releases (requires [standard libraries](https://docs.python.org/3/library/index.html) which is shipped by
|
|
65
|
+
default) of Python language and AI tools.
|
|
66
|
+
|
|
67
|
+
### 🧰 CLI Overview
|
|
68
|
+
|
|
69
|
+
Once installed, the `polyskills` command is exposed on the system `PATH`. Use the `--help` flag at any level to discover
|
|
70
|
+
documentation for all sub-commands and flags. The CLI is organized around four sub-commands:
|
|
71
|
+
|
|
72
|
+
| 🔖 Command | 🎯 Purpose |
|
|
73
|
+
| :--- | :--- |
|
|
74
|
+
| `tools` | List the supported LLM tools (e.g., Claude Code, GitHub Copilot) and exit. |
|
|
75
|
+
| `sources` | List the supported remote source providers (e.g., GitHub) and exit. |
|
|
76
|
+
| `list` | Enumerate available extensions under a remote `<source>` directory, no download. |
|
|
77
|
+
| `manager` | Fetch a single extension (`skills` / `agents`) from the remote into a local directory. |
|
|
78
|
+
|
|
79
|
+
```shell
|
|
80
|
+
$ polyskills --help # top level documentation and sub-commands
|
|
81
|
+
$ polyskills manager --help # documentation for the 'manager' sub-command
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 🔍 Discover Supported Tools and Sources
|
|
85
|
+
|
|
86
|
+
The `tools` and `sources` sub-commands are *terminal*, i.e., they print and exit. Use them to validate that a target LLM
|
|
87
|
+
tool or remote provider is supported before running a fetch.
|
|
88
|
+
|
|
89
|
+
```shell
|
|
90
|
+
$ polyskills tools
|
|
91
|
+
>> Available LLM Tools:
|
|
92
|
+
>> 01. CLAUDE_CODE - https://claude.com/product/claude-code
|
|
93
|
+
>> 02. GITHUB_COPILOT - https://github.com/features/copilot
|
|
94
|
+
|
|
95
|
+
$ polyskills sources
|
|
96
|
+
>> Available Sources:
|
|
97
|
+
>> 01. GITHUB - https://www.github.com/
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### 📜 List Extensions on a Remote
|
|
101
|
+
|
|
102
|
+
Use the `list` sub-command to enumerate the immediate child directories under a remote `--source` path without downloading
|
|
103
|
+
any content. The required positional `LIBRARY` argument selects the extension family (`skills`, `agents`, `commands`,
|
|
104
|
+
`hooks`) and also supplies the default `--source` directory (`./<library>`) when `--source` is omitted.
|
|
105
|
+
|
|
106
|
+
```shell
|
|
107
|
+
$ polyskills list https://github.com/PyUtility/polyskills skills \
|
|
108
|
+
--source ./extensions/skills
|
|
109
|
+
>> Available skills at `extensions/skills` (version = master):
|
|
110
|
+
>> >> 01. git-commiter
|
|
111
|
+
>> >> 02. markdown-format
|
|
112
|
+
>> >> 03. python-code-format
|
|
113
|
+
>> >> 04. sql-code-format
|
|
114
|
+
|
|
115
|
+
$ polyskills list https://github.com/PyUtility/polyskills agents \
|
|
116
|
+
--source ./extensions/agents --version master
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### 📥 Fetch an Extension with `manager`
|
|
120
|
+
|
|
121
|
+
The `manager` sub-command downloads a single extension (`skills` or `agents`) into a destination directory. The library
|
|
122
|
+
type is selected via a sub-sub-parser (`skills` / `agents`) and the extension name comes from `-n / --name`. When
|
|
123
|
+
`--destination` is not provided, the CLI defaults to `./<library>/<name>`.
|
|
124
|
+
|
|
125
|
+
```shell
|
|
126
|
+
$ polyskills manager https://github.com/PyUtility/polyskills \
|
|
127
|
+
--source ./extensions/skills \
|
|
128
|
+
--name python-code-format \
|
|
129
|
+
--destination ./.claude/skills/python-code-format \
|
|
130
|
+
skills
|
|
131
|
+
|
|
132
|
+
$ polyskills manager https://github.com/PyUtility/polyskills \
|
|
133
|
+
--source ./extensions/agents \
|
|
134
|
+
-n python-code-reviewer \
|
|
135
|
+
-d ./.claude/agents/python-code-reviewer \
|
|
136
|
+
agents
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
The `--exists` flag controls behavior when the destination directory already exists and is non-empty:
|
|
140
|
+
|
|
141
|
+
* 🛑 `fail` (default) - raise `FileExistsError`, leave the destination untouched.
|
|
142
|
+
* 🧹 `overwrite` - remove the destination tree and re-extract from scratch.
|
|
143
|
+
* 🛠 `merge` - extract on top of the existing tree, overwriting on conflict.
|
|
144
|
+
|
|
145
|
+
### 🔐 Authentication and Pagination
|
|
146
|
+
|
|
147
|
+
For private or self-hosted repositories, an authentication token is required. The token is resolved with the following
|
|
148
|
+
precedence (highest first):
|
|
149
|
+
|
|
150
|
+
1. Environment variable `POLYSKILLS_REMOTE_TOKEN` (recommended for CI / production).
|
|
151
|
+
2. The `--token` CLI flag (discouraged outside local testing - the value may leak into shell history).
|
|
152
|
+
|
|
153
|
+
```shell
|
|
154
|
+
$ $env:POLYSKILLS_REMOTE_TOKEN = "ghp_xxx" # PowerShell
|
|
155
|
+
$ export POLYSKILLS_REMOTE_TOKEN="ghp_xxx" # bash / zsh
|
|
156
|
+
|
|
157
|
+
$ polyskills list https://github.com/<org>/<private-repo> skills \
|
|
158
|
+
--source ./extensions/skills --pagination 100
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
The `--pagination` flag (defaults to `100`, the GitHub maximum) tunes how many entries are returned per REST API page
|
|
162
|
+
during enumeration. The `--version` flag (defaults to `master`) pins the fetch to an exact tag or commit SHA so the
|
|
163
|
+
extension content is reproducible across systems.
|
|
164
|
+
|
|
165
|
+
### 🐍 Programmatic Usage
|
|
166
|
+
|
|
167
|
+
In addition to the CLI, every primitive is exposed as a Python API so the same workflow can be embedded inside automation
|
|
168
|
+
scripts, CI pipelines, or notebooks.
|
|
169
|
+
|
|
170
|
+
```python
|
|
171
|
+
from pathlib import Path
|
|
172
|
+
|
|
173
|
+
from polyskills.cli import get, listExtensions
|
|
174
|
+
from polyskills.remote.sources import SourceControl
|
|
175
|
+
|
|
176
|
+
control = SourceControl(pagination = 100, token = None)
|
|
177
|
+
|
|
178
|
+
names = listExtensions(
|
|
179
|
+
remote = "https://github.com/PyUtility/polyskills",
|
|
180
|
+
library = "skills",
|
|
181
|
+
source = Path("./extensions/skills"),
|
|
182
|
+
version = "master",
|
|
183
|
+
control = control,
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
get(
|
|
187
|
+
remote = "https://github.com/PyUtility/polyskills",
|
|
188
|
+
name = "python-code-format",
|
|
189
|
+
source = Path("./extensions/skills"),
|
|
190
|
+
destination = Path("./.claude/skills/python-code-format"),
|
|
191
|
+
version = "master",
|
|
192
|
+
exists = "overwrite",
|
|
193
|
+
control = control,
|
|
194
|
+
)
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## ⚖️ Project License
|
|
198
|
+
|
|
199
|
+
This project is licensed under the [MIT License](...). Permission is granted to use, copy, modify, merge, publish,
|
|
200
|
+
distribute, sublicense, and/or sell copies of the software. The software is provided “as is”, without warranty of any kind,
|
|
201
|
+
express or implied. See the LICENSE file for full details.
|
|
202
|
+
|
|
203
|
+
## ⚠️ Project Disclaimer
|
|
204
|
+
|
|
205
|
+
The project provides a curated lists of skills, agents, etc. which can alter the performance of AI tools significantly. AI makes
|
|
206
|
+
mistakes and the tools listed here can worsen the performance. Please read, verify and research before using any content.
|
|
207
|
+
|
|
208
|
+
AI tools often charges based on token consumptions (approx. number of input + output words) and using contents from this library
|
|
209
|
+
may significantly increase the consumption cost. Always check and track usage of the model with/without using the skills.
|
|
210
|
+
|
|
211
|
+
</div>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Python Framework to Manage AI Customization Rules across LLM Tools
|
|
5
|
+
==================================================================
|
|
6
|
+
|
|
7
|
+
The :mod:`polyskills` is a Python open-source framework to manage AI
|
|
8
|
+
skills, agents, hooks, etc. from version controlled remote URL across
|
|
9
|
+
different LLM providers by fetching self-contained files written in
|
|
10
|
+
Agent Skills' native ``SKILL.md`` format that can work natively with
|
|
11
|
+
Claude Code and can also be loaded as a system prompt for other LLM
|
|
12
|
+
tools like CodeX, Cursor AI, etc. The library can fetch, install,
|
|
13
|
+
and update portable LLM "skills", "agents" from remote URL thus
|
|
14
|
+
providing one source of truth across different system and projects.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
__version__ = "v2.0.0"
|
|
18
|
+
|
|
19
|
+
# init-time options registrations, use api/ for public functions
|
|
File without changes
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
LLM Application Management Tools & Prompt Parsers
|
|
5
|
+
-------------------------------------------------
|
|
6
|
+
|
|
7
|
+
Manager for LLM tools - for example if a tool accepts the extensions
|
|
8
|
+
in an Agent Skills format then directly write, or use the parser to
|
|
9
|
+
convert the skills to an prompt type format.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from enum import Enum
|
|
13
|
+
|
|
14
|
+
class SupportedTools(Enum):
|
|
15
|
+
CLAUDE_CODE = "https://claude.com/product/claude-code"
|
|
16
|
+
GITHUB_COPILOT = "https://github.com/features/copilot"
|