@junxin367/openskills 2.0.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/LICENSE ADDED
@@ -0,0 +1,17 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ Copyright 2025 OpenSkills Contributors
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ http://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
package/README.md ADDED
@@ -0,0 +1,638 @@
1
+ # OpenSkills
2
+
3
+ [![npm version](https://img.shields.io/npm/v/openskills.svg)](https://www.npmjs.com/package/openskills)
4
+ [![npm downloads](https://img.shields.io/npm/dm/openskills.svg)](https://www.npmjs.com/package/openskills)
5
+ [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
6
+
7
+ **The closest implementation matching Claude Code's skills system** — same prompt format, same marketplace, same folders, just using CLI instead of tools.
8
+
9
+ ```bash
10
+ npm i -g openskills
11
+ openskills install anthropics/skills
12
+ openskills sync
13
+ ```
14
+
15
+ > **Found this useful?** Follow [@nummanali](https://x.com/nummanali) for more AI tooling!
16
+
17
+ ---
18
+
19
+ ## What Is This?
20
+
21
+ OpenSkills brings **Anthropic's skills system** to all AI coding agents (Claude Code, Cursor, Windsurf, Aider).
22
+
23
+ **For Claude Code users:**
24
+ - Install skills from any GitHub repo, not just the marketplace
25
+ - Install from local paths or private git repos
26
+ - Share skills across multiple agents
27
+ - Version control your skills in your repo
28
+ - Symlink skills for local development
29
+
30
+ **For other agents (Cursor, Windsurf, Aider):**
31
+ - Get Claude Code's skills system universally
32
+ - Access Anthropic's marketplace skills via GitHub
33
+ - Use progressive disclosure (load skills on demand)
34
+
35
+ ---
36
+
37
+ ## How It Matches Claude Code Exactly
38
+
39
+ OpenSkills replicates Claude Code's skills system with **100% compatibility**:
40
+
41
+ - ✅ **Same prompt format** — `<available_skills>` XML with skill tags
42
+ - ✅ **Same marketplace** — Install from [anthropics/skills](https://github.com/anthropics/skills)
43
+ - ✅ **Same folders** — Uses `.claude/skills/` by default
44
+ - ✅ **Same SKILL.md format** — YAML frontmatter + markdown instructions
45
+ - ✅ **Same progressive disclosure** — Load skills on demand, not upfront
46
+
47
+ **Only difference:** Claude Code uses `Skill` tool, OpenSkills uses `openskills read <name>` CLI command.
48
+
49
+ **Advanced:** Use `--universal` flag to install to `.agent/skills/` for Claude Code + other agents sharing one AGENTS.md.
50
+
51
+ ---
52
+
53
+ ## Quick Start
54
+
55
+ ### 1. Install
56
+
57
+ ```bash
58
+ npm i -g openskills
59
+ ```
60
+
61
+ ### 2. Install Skills
62
+
63
+ ```bash
64
+ # Install from Anthropic's marketplace (interactive selection, default: project install)
65
+ openskills install anthropics/skills
66
+
67
+ # Global install (shared across projects, installs to ~/.claude/skills)
68
+ openskills install anthropics/skills --global
69
+
70
+ # Or install from any GitHub repo
71
+ openskills install your-org/custom-skills
72
+
73
+ # Global install custom skills
74
+ openskills install your-org/custom-skills --global
75
+ ```
76
+
77
+ ### 3. Sync to AGENTS.md
78
+
79
+ _NOTE: You must have a pre-existing AGENTS.md file for sync to update._
80
+
81
+ ```bash
82
+ openskills sync
83
+ ```
84
+
85
+ Done! Your agent now has skills with the same `<available_skills>` format as Claude Code.
86
+
87
+ ---
88
+
89
+ ## How It Works (Technical Deep Dive)
90
+
91
+ ### Claude Code's Skills System
92
+
93
+ When you use Claude Code with skills installed, Claude's system prompt includes:
94
+
95
+ ```xml
96
+ <skills_instructions>
97
+ When users ask you to perform tasks, check if any of the available skills below can help complete the task more effectively.
98
+
99
+ How to use skills:
100
+ - Invoke skills using this tool with the skill name only (no arguments)
101
+ - When you invoke a skill, you will see <command-message>The "{name}" skill is loading</command-message>
102
+ - The skill's prompt will expand and provide detailed instructions
103
+
104
+ Important:
105
+ - Only use skills listed in <available_skills> below
106
+ - Do not invoke a skill that is already running
107
+ </skills_instructions>
108
+
109
+ <available_skills>
110
+ <skill>
111
+ <name>pdf</name>
112
+ <description>Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms...</description>
113
+ <location>plugin</location>
114
+ </skill>
115
+
116
+ <skill>
117
+ <name>xlsx</name>
118
+ <description>Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis...</description>
119
+ <location>plugin</location>
120
+ </skill>
121
+ </available_skills>
122
+ ```
123
+
124
+ **How Claude uses it:**
125
+ 1. User asks: "Extract data from this PDF"
126
+ 2. Claude scans `<available_skills>` → finds "pdf" skill
127
+ 3. Claude invokes: `Skill("pdf")`
128
+ 4. SKILL.md content loads with detailed instructions
129
+ 5. Claude follows instructions to complete task
130
+
131
+ ### OpenSkills' System (Identical Format)
132
+
133
+ OpenSkills generates the **exact same** `<available_skills>` XML in your AGENTS.md:
134
+
135
+ ```xml
136
+ <skills_system priority="1">
137
+
138
+ ## Available Skills
139
+
140
+ <!-- SKILLS_TABLE_START -->
141
+ <usage>
142
+ When users ask you to perform tasks, check if any of the available skills below can help complete the task more effectively.
143
+
144
+ How to use skills:
145
+ - Invoke: Bash("openskills read <skill-name>")
146
+ - The skill content will load with detailed instructions
147
+ - Base directory provided in output for resolving bundled resources
148
+
149
+ Usage notes:
150
+ - Only use skills listed in <available_skills> below
151
+ - Do not invoke a skill that is already loaded in your context
152
+ </usage>
153
+
154
+ <available_skills>
155
+
156
+ <skill>
157
+ <name>pdf</name>
158
+ <description>Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms...</description>
159
+ <location>project</location>
160
+ </skill>
161
+
162
+ <skill>
163
+ <name>xlsx</name>
164
+ <description>Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis...</description>
165
+ <location>project</location>
166
+ </skill>
167
+
168
+ </available_skills>
169
+ <!-- SKILLS_TABLE_END -->
170
+
171
+ </skills_system>
172
+ ```
173
+
174
+ **How agents use it:**
175
+ 1. User asks: "Extract data from this PDF"
176
+ 2. Agent scans `<available_skills>` → finds "pdf" skill
177
+ 3. Agent invokes: `Bash("openskills read pdf")`
178
+ 4. SKILL.md content is output to agent's context
179
+ 5. Agent follows instructions to complete task
180
+
181
+ ### Side-by-Side Comparison
182
+
183
+ | Aspect | Claude Code | OpenSkills |
184
+ |--------|-------------|------------|
185
+ | **System Prompt** | Built into Claude Code | In AGENTS.md |
186
+ | **Invocation** | `Skill("pdf")` tool | `openskills read pdf` CLI |
187
+ | **Prompt Format** | `<available_skills>` XML | `<available_skills>` XML (identical) |
188
+ | **Folder Structure** | `.claude/skills/` | `.claude/skills/` (identical) |
189
+ | **SKILL.md Format** | YAML + markdown | YAML + markdown (identical) |
190
+ | **Progressive Disclosure** | Yes | Yes |
191
+ | **Bundled Resources** | `references/`, `scripts/`, `assets/` | `references/`, `scripts/`, `assets/` (identical) |
192
+ | **Marketplace** | Anthropic marketplace | GitHub (anthropics/skills) |
193
+
194
+ **Everything is identical except the invocation method.**
195
+
196
+ ### The SKILL.md Format
197
+
198
+ Both use the exact same format:
199
+
200
+ ```markdown
201
+ ---
202
+ name: pdf
203
+ description: Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms.
204
+ ---
205
+
206
+ # PDF Skill Instructions
207
+
208
+ When the user asks you to work with PDFs, follow these steps:
209
+
210
+ 1. Install dependencies: `pip install pypdf2`
211
+ 2. Extract text using the extract_text.py script in scripts/
212
+ 3. For bundled resources, use the base directory provided in the skill output
213
+ 4. ...
214
+
215
+ [Detailed instructions that Claude/agent follows]
216
+ ```
217
+
218
+ **Progressive disclosure:** The full instructions load only when the skill is invoked, keeping your agent's context clean.
219
+
220
+ ---
221
+
222
+ ## Why CLI Instead of MCP?
223
+
224
+ **MCP (Model Context Protocol)** is Anthropic's protocol for connecting AI to external tools and data sources. It's great for:
225
+ - Database connections
226
+ - API integrations
227
+ - Real-time data fetching
228
+ - External service integration
229
+
230
+ **Skills (SKILL.md format)** are different — they're for:
231
+ - Specialized workflows (PDF manipulation, spreadsheet editing)
232
+ - Bundled resources (scripts, templates, references)
233
+ - Progressive disclosure (load instructions only when needed)
234
+ - Static, reusable patterns
235
+
236
+ **Why not implement skills via MCP?**
237
+
238
+ 1. **Skills are static instructions, not dynamic tools**
239
+ MCP is for server-client connections. Skills are markdown files with instructions.
240
+
241
+ 2. **No server needed**
242
+ Skills are just files. MCP requires running servers.
243
+
244
+ 3. **Universal compatibility**
245
+ CLI works with any agent (Claude Code, Cursor, Windsurf, Aider). MCP requires MCP support.
246
+
247
+ 4. **Follows Anthropic's design**
248
+ Anthropic created skills as SKILL.md files, not MCP servers. We're implementing their spec.
249
+
250
+ 5. **Simpler for users**
251
+ `openskills install anthropics/skills` vs "configure MCP server, set up authentication, manage server lifecycle"
252
+
253
+ **MCP and skills solve different problems.** OpenSkills implements Anthropic's skills spec (SKILL.md format) the way it was designed — as progressively-loaded markdown instructions.
254
+
255
+ ---
256
+
257
+ ## Claude Code Compatibility
258
+
259
+ You can use **both** Claude Code plugins and OpenSkills project skills together:
260
+
261
+ **In your `<available_skills>` list:**
262
+ ```xml
263
+ <skill>
264
+ <name>pdf</name>
265
+ <description>...</description>
266
+ <location>plugin</location> <!-- Claude Code marketplace -->
267
+ </skill>
268
+
269
+ <skill>
270
+ <name>custom-skill</name>
271
+ <description>...</description>
272
+ <location>project</location> <!-- OpenSkills from GitHub -->
273
+ </skill>
274
+ ```
275
+
276
+ They coexist perfectly. Claude invokes marketplace plugins via `Skill` tool, OpenSkills skills via CLI. No conflicts.
277
+
278
+ ### Advanced: Universal Mode for Multi-Agent Setups
279
+
280
+ **Problem:** If you use Claude Code + other agents (Cursor, Windsurf, Aider) with one AGENTS.md, installing to `.claude/skills/` can create duplicates with Claude Code's marketplace plugins.
281
+
282
+ **Solution:** Use `--universal` to install to `.agent/skills/` instead:
283
+
284
+ ```bash
285
+ openskills install anthropics/skills --universal
286
+ ```
287
+
288
+ This installs skills to `.agent/skills/` which:
289
+ - ✅ Works with all agents via AGENTS.md
290
+ - ✅ Doesn't conflict with Claude Code's native marketplace plugins
291
+ - ✅ Keeps Claude Code's `<available_skills>` separate from AGENTS.md skills
292
+
293
+ **When to use:**
294
+ - ✅ You use Claude Code + Cursor/Windsurf/Aider with one AGENTS.md
295
+ - ✅ You want to avoid duplicate skill definitions
296
+ - ✅ You prefer `.agent/` for infrastructure (keeps `.claude/` for Claude Code only)
297
+
298
+ **When not to use:**
299
+ - ❌ You only use Claude Code (default `.claude/skills/` is fine)
300
+ - ❌ You only use non-Claude agents (default `.claude/skills/` is fine)
301
+
302
+ **Priority order:**
303
+ OpenSkills searches 4 locations in priority order:
304
+ 1. `./.agent/skills/` (project universal)
305
+ 2. `~/.agent/skills/` (global universal)
306
+ 3. `./.claude/skills/` (project)
307
+ 4. `~/.claude/skills/` (global)
308
+
309
+ Skills with same name only appear once (highest priority wins).
310
+
311
+ ---
312
+
313
+ ## Commands
314
+
315
+ ```bash
316
+ openskills install <source> [options] # Install from GitHub, local path, or private repo
317
+ openskills sync [-y] [-o <path>] # Update AGENTS.md (or custom output)
318
+ openskills list # Show installed skills
319
+ openskills read <name> # Load skill (for agents)
320
+ openskills manage # Remove skills (interactive)
321
+ openskills remove <name> # Remove specific skill
322
+ ```
323
+
324
+ ### Flags
325
+
326
+ - `--global` — Install globally to `~/.claude/skills` (default: project install)
327
+ - `--universal` — Install to `.agent/skills/` instead of `.claude/skills/` (advanced)
328
+ - `-y, --yes` — Skip all prompts including overwrites (for scripts/CI)
329
+ - `-o, --output <path>` — Custom output file for sync (default: `.cursor/rules/AGENTS.md` if `.cursor` directory exists, otherwise `AGENTS.md`)
330
+
331
+ ### Installation Modes
332
+
333
+ **Default (recommended) - Project install:**
334
+ ```bash
335
+ openskills install anthropics/skills
336
+ # → Installs to ./.claude/skills (project local, gitignored)
337
+ # → Only available in current project
338
+ ```
339
+
340
+ **Global install:**
341
+ ```bash
342
+ openskills install anthropics/skills --global
343
+ # → Installs to ~/.claude/skills (user home directory)
344
+ # → Available in all projects
345
+ # → Good for installing common skills, avoiding duplicate installations
346
+ ```
347
+
348
+ **When to use global install:**
349
+ - ✅ You want to use the same skills across multiple projects
350
+ - ✅ You want to install common base skills (like pdf, xlsx, etc.)
351
+ - ✅ You don't want to reinstall skills in every project
352
+
353
+ **When to use project install (default):**
354
+ - ✅ Project-specific skills
355
+ - ✅ Skills that need version control
356
+ - ✅ Team collaboration projects where skills should be managed with the project
357
+
358
+ **Universal mode (advanced):**
359
+ ```bash
360
+ openskills install anthropics/skills --universal
361
+ # → Installs to ./.agent/skills (for Claude Code + other agents)
362
+ ```
363
+
364
+ ### Install from Local Paths
365
+
366
+ ```bash
367
+ # Absolute path
368
+ openskills install /path/to/my-skill
369
+
370
+ # Relative path
371
+ openskills install ./local-skills/my-skill
372
+
373
+ # Home directory
374
+ openskills install ~/my-skills/custom-skill
375
+
376
+ # Install all skills from a directory
377
+ openskills install ./my-skills-folder
378
+ ```
379
+
380
+ ### Install from Private Git Repos
381
+
382
+ ```bash
383
+ # SSH (uses your SSH keys)
384
+ openskills install git@github.com:your-org/private-skills.git
385
+
386
+ # HTTPS (may prompt for credentials)
387
+ openskills install https://github.com/your-org/private-skills.git
388
+ ```
389
+
390
+ ### Sync Options
391
+
392
+ ```bash
393
+ # Sync to default path (.cursor/rules/AGENTS.md if .cursor directory exists, otherwise AGENTS.md)
394
+ openskills sync
395
+
396
+ # Sync to custom file (auto-creates if missing)
397
+ openskills sync --output .ruler/AGENTS.md
398
+ openskills sync -o custom-rules.md
399
+
400
+ # Non-interactive (for CI/CD)
401
+ openskills sync -y
402
+ ```
403
+
404
+ **Default path behavior:**
405
+ - If `.cursor` directory exists in project root, defaults to `.cursor/rules/AGENTS.md` (for Cursor IDE)
406
+ - Otherwise, defaults to `AGENTS.md` in project root
407
+
408
+ ### Interactive by Default
409
+
410
+ All commands use beautiful TUI by default:
411
+
412
+ **Install:**
413
+ ```bash
414
+ openskills install anthropics/skills
415
+ # → Checkbox to select which skills to install
416
+ # → Shows skill name, description, size
417
+ # → All checked by default
418
+ ```
419
+
420
+ **Sync:**
421
+ ```bash
422
+ openskills sync
423
+ # → Checkbox to select which skills to include in AGENTS.md
424
+ # → Pre-selects skills already in AGENTS.md
425
+ # → Empty selection removes skills section
426
+ ```
427
+
428
+ **Manage:**
429
+ ```bash
430
+ openskills manage
431
+ # → Checkbox to select which skills to remove
432
+ # → Nothing checked by default (safe)
433
+ ```
434
+
435
+ ---
436
+
437
+ ## Example Skills
438
+
439
+ From Anthropic's [skills repository](https://github.com/anthropics/skills):
440
+
441
+ - **xlsx** — Spreadsheet creation, editing, formulas, data analysis
442
+ - **docx** — Document creation with tracked changes and comments
443
+ - **pdf** — PDF manipulation (extract, merge, split, forms)
444
+ - **pptx** — Presentation creation and editing
445
+ - **canvas-design** — Create posters and visual designs
446
+ - **mcp-builder** — Build Model Context Protocol servers
447
+ - **skill-creator** — Detailed guide for authoring skills
448
+
449
+ Browse all: [github.com/anthropics/skills](https://github.com/anthropics/skills)
450
+
451
+ ---
452
+
453
+ ## Creating Your Own Skills
454
+
455
+ ### Minimal Structure
456
+
457
+ ```
458
+ my-skill/
459
+ └── SKILL.md
460
+ ---
461
+ name: my-skill
462
+ description: What this does and when to use it
463
+ ---
464
+
465
+ # Instructions in imperative form
466
+
467
+ When the user asks you to X, do Y...
468
+ ```
469
+
470
+ ### With Bundled Resources
471
+
472
+ ```
473
+ my-skill/
474
+ ├── SKILL.md
475
+ ├── references/
476
+ │ └── api-docs.md # Supporting documentation
477
+ ├── scripts/
478
+ │ └── process.py # Helper scripts
479
+ └── assets/
480
+ └── template.json # Templates, configs
481
+ ```
482
+
483
+ In your SKILL.md, reference resources:
484
+ ```markdown
485
+ 1. Read the API documentation in references/api-docs.md
486
+ 2. Run the process.py script from scripts/
487
+ 3. Use the template from assets/template.json
488
+ ```
489
+
490
+ The agent sees the base directory when loading the skill:
491
+ ```
492
+ Loading: my-skill
493
+ Base directory: /path/to/.claude/skills/my-skill
494
+
495
+ [SKILL.md content]
496
+ ```
497
+
498
+ ### Publishing
499
+
500
+ 1. Push to GitHub: `your-username/my-skill`
501
+ 2. Users install with: `openskills install your-username/my-skill`
502
+
503
+ ### Local Development with Symlinks
504
+
505
+ For active skill development, symlink your skill into the skills directory:
506
+
507
+ ```bash
508
+ # Clone a skills repo you're developing
509
+ git clone git@github.com:your-org/my-skills.git ~/dev/my-skills
510
+
511
+ # Symlink into your project's skills directory
512
+ mkdir -p .claude/skills
513
+ ln -s ~/dev/my-skills/my-skill .claude/skills/my-skill
514
+
515
+ # Now changes to ~/dev/my-skills/my-skill are immediately reflected
516
+ openskills list # Shows my-skill
517
+ openskills sync # Includes my-skill in AGENTS.md
518
+ ```
519
+
520
+ This approach lets you:
521
+ - Edit skills in your preferred location
522
+ - Keep skills under version control
523
+ - Test changes instantly without reinstalling
524
+ - Share skills across multiple projects via symlinks
525
+
526
+ ### Authoring Guide
527
+
528
+ Use Anthropic's skill-creator for detailed guidance:
529
+
530
+ ```bash
531
+ openskills install anthropics/skills
532
+ openskills read skill-creator
533
+ ```
534
+
535
+ This loads comprehensive instructions on:
536
+ - Writing effective skill descriptions
537
+ - Structuring instructions for agents
538
+ - Using bundled resources
539
+ - Testing and iteration
540
+
541
+ ---
542
+
543
+ ## Development: Linking Tool Scripts
544
+
545
+ For developers working on OpenSkills, these scripts help install the project as a global tool for testing.
546
+
547
+ ### Usage
548
+
549
+ **NPM shortcuts (recommended):**
550
+ ```bash
551
+ # Install tool (link to global)
552
+ npm run link
553
+
554
+ # Uninstall tool (unlink from global)
555
+ npm run unlink
556
+
557
+ # Check status
558
+ npm run link:status
559
+ ```
560
+
561
+ **Node.js script (cross-platform):**
562
+ ```bash
563
+ # Install tool
564
+ node scripts/link-tool.js install
565
+
566
+ # Uninstall tool
567
+ node scripts/link-tool.js uninstall
568
+
569
+ # Check status
570
+ node scripts/link-tool.js status
571
+
572
+ # Show help
573
+ node scripts/link-tool.js help
574
+ ```
575
+
576
+ **PowerShell script (Windows):**
577
+ ```powershell
578
+ # Install tool
579
+ .\scripts\link-tool.ps1 install
580
+
581
+ # Uninstall tool
582
+ .\scripts\link-tool.ps1 uninstall
583
+
584
+ # Check status
585
+ .\scripts\link-tool.ps1 status
586
+
587
+ # Show help
588
+ .\scripts\link-tool.ps1 help
589
+ ```
590
+
591
+ ### Features
592
+
593
+ **Install (link):**
594
+ - Automatically checks if project is built, builds if needed
595
+ - Checks if already installed to avoid duplicate installation
596
+ - Creates global symlink, making `openskills` command available anywhere
597
+
598
+ **Uninstall (unlink):**
599
+ - Checks if installed to avoid unnecessary operations
600
+ - Removes global symlink
601
+ - Removes `openskills` command from system
602
+
603
+ **Status:**
604
+ - Shows project path and build directory
605
+ - Checks if CLI file is built
606
+ - Checks global link status
607
+ - Shows version information if installed
608
+
609
+ ### Notes
610
+
611
+ 1. **Before installing**: Ensure project is built (script will check and build automatically)
612
+ 2. **After uninstalling**: `openskills` command will no longer be available
613
+ 3. **Reinstalling**: If you need to reinstall, uninstall first then install
614
+
615
+ ### How It Works
616
+
617
+ - **Install**: Uses `npm link` to create global symlink
618
+ - **Uninstall**: Uses `npm unlink -g` to remove global symlink
619
+ - **Status check**: Checks link status via `npm list -g`
620
+
621
+ ---
622
+
623
+ ## Requirements
624
+
625
+ - **Node.js** 20.6+ (for ora dependency)
626
+ - **Git** (for cloning repositories)
627
+
628
+ ---
629
+
630
+ ## License
631
+
632
+ Apache 2.0
633
+
634
+ ## Attribution
635
+
636
+ Implements [Anthropic's Agent Skills](https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills) specification.
637
+
638
+ **Not affiliated with Anthropic.** Claude, Claude Code, and Agent Skills are trademarks of Anthropic, PBC.