pruff-skills 0.1.0

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 ADDED
@@ -0,0 +1,186 @@
1
+ # pruff-skills
2
+
3
+ The official Pruff agent skills CLI — install Pruff's curated skills into Claude Code, Cursor, Codex and 70+ other agents.
4
+
5
+ ```
6
+ ██████╗ ██████╗ ██╗ ██╗███████╗███████╗
7
+ ██╔══██╗██╔══██╗██║ ██║██╔════╝██╔════╝
8
+ ██████╔╝██████╔╝██║ ██║█████╗ █████╗
9
+ ██╔═══╝ ██╔══██╗██║ ██║██╔══╝ ██╔══╝
10
+ ██║ ██║ ██║╚██████╔╝██║ ██║
11
+ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝
12
+ ```
13
+
14
+ Run it with no arguments to see the banner and command list:
15
+
16
+ ```bash
17
+ npx pruff-skills
18
+ ```
19
+
20
+ ## Install a Skill
21
+
22
+ ```bash
23
+ npx pruff-skills add <skill>
24
+ ```
25
+
26
+ A bare skill name resolves from Pruff's catalog (gated by your GitHub access). You can also point
27
+ `add` at any GitHub repo, git URL, or local path — see [Source Formats](#source-formats).
28
+
29
+ ## The catalog
30
+
31
+ Pruff's skills live in a **private** catalog, so only teammates with access can install them.
32
+ Browse what's available with `npx pruff-skills find`, then install with `npx pruff-skills add <skill>`.
33
+
34
+ The catalog also ships **Claude Code subagents**. `find` lists them alongside skills (tagged
35
+ `[subagent]`); install one with:
36
+
37
+ ```bash
38
+ npx pruff-skills agents add <name> # → .claude/agents/ (add -g for ~/.claude/agents/)
39
+ ```
40
+
41
+ ## Use a Skill Without Installing
42
+
43
+ Generate a prompt for one skill, or start a supported coding agent interactively:
44
+
45
+ ```bash
46
+ npx pruff-skills use <skill> | claude
47
+ npx pruff-skills use <skill> --agent claude-code
48
+ ```
49
+
50
+ `pruff-skills use` resolves sources the same way as `add`, writes the selected skill files to a temporary
51
+ directory, and prints only the generated prompt to stdout unless `--agent` is provided. With `--agent`,
52
+ it starts one supported agent interactively with the generated prompt.
53
+
54
+ ### Source Formats
55
+
56
+ ```bash
57
+ # Pruff catalog (bare skill name → the private catalog repo)
58
+ npx pruff-skills add <skill>
59
+
60
+ # GitHub shorthand (owner/repo)
61
+ npx pruff-skills add Pruff-Tech/pruff-skills
62
+
63
+ # Full GitHub URL
64
+ npx pruff-skills add https://github.com/Pruff-Tech/pruff-skills
65
+
66
+ # Any git URL
67
+ npx pruff-skills add git@github.com:Pruff-Tech/pruff-skills.git
68
+
69
+ # Local path
70
+ npx pruff-skills add ./my-local-skills
71
+ ```
72
+
73
+ ### Options
74
+
75
+ | Option | Description |
76
+ | ------------------------- | ------------------------------------------------------------------------ |
77
+ | `-g, --global` | Install to the user directory instead of the project |
78
+ | `-a, --agent <agents...>` | Target specific agents (e.g., `claude-code`, `cursor`, `codex`) |
79
+ | `-s, --skill <skills...>` | Install specific skills by name (use `'*'` for all skills) |
80
+ | `-l, --list` | List available skills without installing |
81
+ | `--copy` | Copy files instead of symlinking to agent directories |
82
+ | `-y, --yes` | Skip all confirmation prompts |
83
+ | `--all` | Install all skills to all agents without prompts |
84
+
85
+ ### Examples
86
+
87
+ ```bash
88
+ # List skills available in the catalog without installing
89
+ npx pruff-skills add Pruff-Tech/pruff-skills --list
90
+
91
+ # Install specific skills
92
+ npx pruff-skills add --skill <skill> --skill <skill>
93
+
94
+ # Install to specific agents
95
+ npx pruff-skills add <skill> -a claude-code -a cursor
96
+
97
+ # Non-interactive (CI-friendly)
98
+ npx pruff-skills add <skill> -g -a claude-code -y
99
+ ```
100
+
101
+ ### Installation Scope
102
+
103
+ | Scope | Flag | Location | Use Case |
104
+ | ----------- | --------- | ------------------- | --------------------------------------------- |
105
+ | **Project** | (default) | `./<agent>/skills/` | Committed with your project, shared with team |
106
+ | **Global** | `-g` | `~/<agent>/skills/` | Available across all projects |
107
+
108
+ ### Installation Methods
109
+
110
+ | Method | Description |
111
+ | ------------------------- | ------------------------------------------------------------------------------------------- |
112
+ | **Symlink** (Recommended) | Creates symlinks from each agent to a canonical copy. Single source of truth, easy updates. |
113
+ | **Copy** | Creates independent copies for each agent. Use when symlinks aren't supported. |
114
+
115
+ ## Other Commands
116
+
117
+ | Command | Description |
118
+ | ------------------------------ | --------------------------------------------- |
119
+ | `npx pruff-skills use <source>` | Use one skill without installing |
120
+ | `npx pruff-skills list` | List installed skills (alias: `ls`) |
121
+ | `npx pruff-skills find [query]` | Search the Pruff catalog interactively or by keyword |
122
+ | `npx pruff-skills remove [skills]` | Remove installed skills from agents |
123
+ | `npx pruff-skills update [skills]` | Update installed skills to latest versions |
124
+ | `npx pruff-skills init [name]` | Create a new `SKILL.md` template |
125
+
126
+ ```bash
127
+ npx pruff-skills list # list installed skills
128
+ npx pruff-skills find logs # search the catalog by keyword
129
+ npx pruff-skills update -g # update global skills
130
+ npx pruff-skills remove <skill> # remove a skill
131
+ ```
132
+
133
+ ## Supported Agents
134
+
135
+ The CLI auto-detects which coding agents you have installed and writes skills into the right path
136
+ for each (`.claude/skills/`, `.agents/skills/`, `.cursor/skills/`, …). Claude Code, Cursor, Codex,
137
+ OpenCode and 70+ others are supported. If none are detected, you'll be prompted to choose.
138
+
139
+ ## Creating Skills
140
+
141
+ Skills are directories containing a `SKILL.md` file with YAML frontmatter:
142
+
143
+ ```markdown
144
+ ---
145
+ name: my-skill
146
+ description: What this skill does and when to use it
147
+ ---
148
+
149
+ # My Skill
150
+
151
+ Instructions for the agent to follow when this skill is activated.
152
+
153
+ ## When to Use
154
+
155
+ Describe the scenarios where this skill should be used.
156
+
157
+ ## Steps
158
+
159
+ 1. First, do this
160
+ 2. Then, do that
161
+ ```
162
+
163
+ Scaffold one with `npx pruff-skills init my-skill`, then publish it by pushing to a repo
164
+ (`npx pruff-skills add <owner>/<repo>`) or hosting it under `/.well-known/agent-skills/`.
165
+
166
+ ## Environment Variables
167
+
168
+ | Variable | Description |
169
+ | ------------------------- | ------------------------------------------------------------------------------------ |
170
+ | `PRUFF_SKILLS_CATALOG` | Source a bare skill name resolves to (default `Pruff-Tech/pruff-skills`). A GitHub `owner/repo`, git URL, or local path. Set to a local checkout for offline installs. |
171
+ | `INSTALL_INTERNAL_SKILLS` | Set to `1` or `true` to show and install skills marked as `internal: true` |
172
+
173
+ ## Telemetry
174
+
175
+ **None.** pruff-skills ships with all usage telemetry removed — no events leave your machine.
176
+
177
+ ## Attribution
178
+
179
+ pruff-skills is a rebranded fork of [`vercel-labs/skills`](https://github.com/vercel-labs/skills) (MIT).
180
+ The CLI engine, provider/installer logic, and agent path mappings are upstream's work; the Pruff fork
181
+ swaps the logo, branding, catalog source (the private `Pruff-Tech/pruff-skills` repo), and removes the bundled usage telemetry.
182
+ See `ThirdPartyNoticeText.txt` for third-party licenses.
183
+
184
+ ## License
185
+
186
+ MIT
@@ -0,0 +1,163 @@
1
+ /*!----------------- Skills CLI ThirdPartyNotices -------------------------------------------------------
2
+
3
+ The Skills CLI incorporates third party material from the projects listed below.
4
+ The original copyright notice and the license under which this material was received
5
+ are set forth below. These licenses and notices are provided for informational purposes only.
6
+
7
+ ---------------------------------------------
8
+ Third Party Code Components
9
+ --------------------------------------------
10
+
11
+ ================================================================================
12
+ Package: @clack/core@0.5.0
13
+ License: MIT
14
+ Repository: https://github.com/bombshell-dev/clack
15
+ --------------------------------------------------------------------------------
16
+
17
+ MIT License
18
+
19
+ Copyright (c) Nate Moore
20
+
21
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
22
+
23
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
24
+
25
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26
+
27
+
28
+ ================================================================================
29
+ Package: @clack/prompts@0.11.0
30
+ License: MIT
31
+ Repository: https://github.com/bombshell-dev/clack
32
+ --------------------------------------------------------------------------------
33
+
34
+ MIT License
35
+
36
+ Copyright (c) Nate Moore
37
+
38
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
39
+
40
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
41
+
42
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
43
+
44
+
45
+ ================================================================================
46
+ Package: picocolors@1.1.1
47
+ License: ISC
48
+ Repository: https://github.com/alexeyraspopov/picocolors
49
+ --------------------------------------------------------------------------------
50
+
51
+ ISC License
52
+
53
+ Copyright (c) 2021-2024 Oleksii Raspopov, Kostiantyn Denysov, Anton Verinov
54
+
55
+ Permission to use, copy, modify, and/or distribute this software for any
56
+ purpose with or without fee is hereby granted, provided that the above
57
+ copyright notice and this permission notice appear in all copies.
58
+
59
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
60
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
61
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
62
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
63
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
64
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
65
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
66
+
67
+
68
+ ================================================================================
69
+ Package: simple-git@3.36.0
70
+ License: MIT
71
+ Repository: https://github.com/steveukx/git-js
72
+ --------------------------------------------------------------------------------
73
+
74
+ MIT License
75
+
76
+ Permission is hereby granted, free of charge, to any person obtaining a copy
77
+ of this software and associated documentation files (the "Software"), to deal
78
+ in the Software without restriction, including without limitation the rights
79
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
80
+ copies of the Software, and to permit persons to whom the Software is
81
+ furnished to do so, subject to the following conditions:
82
+
83
+ The above copyright notice and this permission notice shall be included in all
84
+ copies or substantial portions of the Software.
85
+
86
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
87
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
88
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
89
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
90
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
91
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
92
+ SOFTWARE.
93
+
94
+
95
+ ================================================================================
96
+ Package: sisteransi@1.0.5
97
+ License: MIT
98
+ Repository: https://github.com/terkelg/sisteransi
99
+ --------------------------------------------------------------------------------
100
+
101
+ MIT License
102
+
103
+ Copyright (c) 2018 Terkel Gjervig Nielsen
104
+
105
+ Permission is hereby granted, free of charge, to any person obtaining a copy
106
+ of this software and associated documentation files (the "Software"), to deal
107
+ in the Software without restriction, including without limitation the rights
108
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
109
+ copies of the Software, and to permit persons to whom the Software is
110
+ furnished to do so, subject to the following conditions:
111
+
112
+ The above copyright notice and this permission notice shall be included in all
113
+ copies or substantial portions of the Software.
114
+
115
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
116
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
117
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
118
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
119
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
120
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
121
+ SOFTWARE.
122
+
123
+
124
+ ================================================================================
125
+ Package: xdg-basedir@5.1.0
126
+ License: MIT
127
+ Repository: https://github.com/sindresorhus/xdg-basedir
128
+ --------------------------------------------------------------------------------
129
+
130
+ MIT License
131
+
132
+ Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
133
+
134
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
135
+
136
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
137
+
138
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
139
+
140
+
141
+ ================================================================================
142
+ Package: yaml@2.9.0
143
+ License: ISC
144
+ Repository: https://github.com/eemeli/yaml
145
+ --------------------------------------------------------------------------------
146
+
147
+ Copyright Eemeli Aro <eemeli@gmail.com>
148
+
149
+ Permission to use, copy, modify, and/or distribute this software for any purpose
150
+ with or without fee is hereby granted, provided that the above copyright notice
151
+ and this permission notice appear in all copies.
152
+
153
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
154
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
155
+ FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
156
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
157
+ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
158
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
159
+ THIS SOFTWARE.
160
+
161
+
162
+ ================================================================================
163
+ */
package/bin/cli.mjs ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+
3
+ import module from 'node:module';
4
+
5
+ // https://nodejs.org/api/module.html#module-compile-cache
6
+ if (module.enableCompileCache && !process.env.NODE_DISABLE_COMPILE_CACHE) {
7
+ try {
8
+ module.enableCompileCache();
9
+ } catch {
10
+ // Ignore errors
11
+ }
12
+ }
13
+
14
+ await import('../dist/cli.mjs');