@xelandernt/skilly 0.0.29 → 0.0.31

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.
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  Manage [Agent Skills](https://agentskills.io/specification) from the command line or Python.
12
12
 
13
- `skilly` creates specification-compliant skills, installs skills from GitHub or Python dependencies, and keeps managed skills up to date.
13
+ `skilly` creates specification-compliant skills, installs skills from GitHub, Python, or Node dependencies, and keeps managed skills up to date.
14
14
 
15
15
  ## Table of Contents
16
16
 
@@ -25,6 +25,7 @@ Manage [Agent Skills](https://agentskills.io/specification) from the command lin
25
25
  - [Install Dependency Skills](#install-dependency-skills)
26
26
  - [Install GitHub Skills](#install-github-skills)
27
27
  - [Destinations](#destinations)
28
+ - [Configure Destinations](#configure-destinations)
28
29
  - [GitHub Authentication](#github-authentication)
29
30
  - [Python API](#python-api)
30
31
  - [Development](#development)
@@ -35,8 +36,7 @@ Manage [Agent Skills](https://agentskills.io/specification) from the command lin
35
36
 
36
37
  ### Python
37
38
  ```shell
38
- uvx skilly --help # run on-the-fly
39
- pip install skilly # or install persistently
39
+ uvx skilly --help
40
40
  ```
41
41
 
42
42
  ### Node
@@ -62,23 +62,21 @@ brew install xelandernt/skilly/skilly
62
62
  ## Quick Start
63
63
 
64
64
  ```shell
65
- uvx skilly scan # Find skills from Python dependencies
66
- uvx skilly download <github-url> # Install skills from GitHub
67
- uvx skilly list # Browse installed skills
68
- uvx skilly update # Preview available updates
65
+ uvx skilly --help
69
66
  ```
70
67
 
71
68
  ## CLI Commands
72
69
 
73
70
  | Command | Purpose |
74
71
  |---------|---------|
75
- | `scan` | Find skills provided by the project's Python dependencies |
72
+ | `scan` | Find skills provided by Python and Node project dependencies |
76
73
  | `download <github-url>` | Install one or more skills from GitHub |
77
74
  | `list` | Browse, update, or remove installed skills |
78
75
  | `update` | Preview available updates; `--yes` applies all |
79
76
  | `remove <name>` | Remove an installed skill by directory name |
80
77
  | `skillsmp search <query>` | Search SkillsMP and install a selected result |
81
78
  | `create` | Create a valid skill through a terminal wizard or explicit options |
79
+ | `configure` | Set which directories skilly manages via TUI or CLI flags |
82
80
 
83
81
  Run `skilly <command> --help` for all options.
84
82
 
@@ -101,18 +99,25 @@ Existing skills are rejected unless `--overwrite` is passed.
101
99
 
102
100
  ### Install Dependency Skills
103
101
 
104
- `skilly scan` reads `pyproject.toml` and the project's `.venv`, then surfaces skills shipped by dependencies:
102
+ `skilly scan` discovers skills shipped by your project's dependencies across two ecosystems:
103
+
104
+ - **Python** — reads `pyproject.toml` and scans the project's `.venv` for packages that bundle skills in a `skills/` directory.
105
+ - **Node** — reads `package.json` (`dependencies`, `devDependencies`, `optionalDependencies`) and scans `node_modules/` for packages that bundle skills in a `skills/` directory.
105
106
 
106
107
  ```shell
107
108
  uvx skilly scan
108
109
  ```
109
110
 
110
- Include or exclude specific extras and dependency groups (flags are repeatable):
111
+ Both ecosystems are scanned by default whenever the corresponding manifest and package directory exist. Results are shown with their source (e.g. `node:dependencies`, `python:project`) and status (`installable`, `installed`, `updatable`).
112
+
113
+ Include or exclude specific Python extras and dependency groups:
111
114
 
112
115
  ```shell
113
116
  uvx skilly scan --group dev --group test --exclude-extra docs
117
+ uvx skilly scan --no-project-dependencies # skip [project].dependencies
114
118
  ```
115
119
 
120
+
116
121
  ### Install GitHub Skills
117
122
 
118
123
  ```shell
@@ -141,7 +146,7 @@ uvx skilly list --directory ~/custom # Explicit directory
141
146
 
142
147
  | Flags | Resolved destination |
143
148
  |----------------------|-------------------------------------------------------|
144
- | _none_ | `SKILLY_DIRECTORY` if set, otherwise `.agents/skills` |
149
+ | _none_ | `SKILLY_DEFAULT_DIRECTORY` if set, otherwise `.agents/skills` |
145
150
  | `--local` | `.agents/skills` |
146
151
  | `--global` | `~/.agents/skills` |
147
152
  | `--claude` | `.claude/skills` |
@@ -155,10 +160,48 @@ uvx skilly list --directory ~/custom # Explicit directory
155
160
  Set a default destination:
156
161
 
157
162
  ```shell
158
- export SKILLY_DIRECTORY="$HOME/.config/skilly/skills"
163
+ export SKILLY_DEFAULT_DIRECTORY="$HOME/.config/skilly/skills"
164
+ ```
165
+
166
+ `--directory` overrides all other destination options and `SKILLY_DEFAULT_DIRECTORY`.
167
+
168
+ ### Configure Destinations
169
+
170
+ `skilly configure` lets you choose which directories skilly should manage and which one opens by default. Interactive terminals open a two-tab TUI (Global / Local) showing all known agent directories as toggleable checkboxes (agents, claude, codex, copilot). Non-interactive runs accept flags.
171
+
172
+ ```shell
173
+ uvx skilly configure # Open the TUI
174
+ uvx skilly configure --show # Print current config as TOML
175
+ uvx skilly configure --reset # Restore defaults
176
+ ```
177
+
178
+ In the TUI:
179
+ - **Space** toggles a known directory on or off, or removes a custom one.
180
+ - **Enter** sets the highlighted directory as the default (marked with a ★).
181
+ - **Ctrl+S** saves; you must have a default directory selected before saving.
182
+
183
+ Add or remove custom directories via CLI:
184
+
185
+ ```shell
186
+ uvx skilly configure --add-global /opt/skills
187
+ uvx skilly configure --add-local .project/skills
188
+ uvx skilly configure --remove-global /opt/skills
189
+ uvx skilly configure --remove-local .project/skills
159
190
  ```
160
191
 
161
- `--directory` overrides all other destination options and `SKILLY_DIRECTORY`.
192
+ Configuration is stored in `~/.skilly.toml`:
193
+
194
+ ```toml
195
+ default_directory = ".agents/skills"
196
+
197
+ [global]
198
+ directories = ["~/.agents/skills", "/opt/skills"]
199
+
200
+ [local]
201
+ directories = [".agents/skills", ".project/skills"]
202
+ ```
203
+
204
+ The default directory opens first in interactive menus (`list`, `scan`, etc.).
162
205
 
163
206
  ### GitHub Authentication
164
207
 
@@ -201,12 +244,35 @@ for match in repository.scan_project():
201
244
  Stateless discovery functions for one-shot reads:
202
245
 
203
246
  ```python
204
- from skilly import discover_installed_skills, discover_venv_skills
247
+ from skilly import (
248
+ discover_installed_skills,
249
+ discover_node_modules_skills,
250
+ discover_venv_skills,
251
+ )
205
252
 
206
253
  installed = discover_installed_skills()
207
- dependency_skills = discover_venv_skills()
254
+ python_skills = discover_venv_skills()
255
+ node_skills = discover_node_modules_skills()
208
256
  ```
209
257
 
258
+ `ProjectSettings` accepts a `NodeProjectSettings` to control node scanning:
259
+
260
+ ```python
261
+ from skilly import NodeProjectSettings, ProjectSettings, SkillRepository
262
+
263
+ repository = SkillRepository(
264
+ directory=Path(".agents/skills"),
265
+ project=ProjectSettings(
266
+ node=NodeProjectSettings(
267
+ include_dependencies=True,
268
+ include_dev_dependencies=False,
269
+ ),
270
+ ),
271
+ )
272
+ ```
273
+
274
+ Set `node=None` to skip node ecosystem scanning entirely.
275
+
210
276
  SkillsMP client with typed results:
211
277
 
212
278
  ```python
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xelandernt/skilly",
3
- "version": "0.0.29",
3
+ "version": "0.0.31",
4
4
  "description": "Native npm launcher for the skilly CLI.",
5
5
  "license": "MIT",
6
6
  "bin": {
Binary file
Binary file