superskill 0.2.5 → 0.2.7
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/CHANGELOG.md +32 -0
- package/README.md +118 -134
- package/dist/commands/skill/activate.d.ts +23 -0
- package/dist/commands/skill/activate.js +170 -0
- package/dist/commands/skill/activate.js.map +1 -0
- package/dist/commands/skill/generate.d.ts +28 -0
- package/dist/commands/skill/generate.js +180 -0
- package/dist/commands/skill/generate.js.map +1 -0
- package/dist/commands/skill/helpers.d.ts +14 -0
- package/dist/commands/skill/helpers.js +82 -0
- package/dist/commands/skill/helpers.js.map +1 -0
- package/dist/commands/skill/manifest.d.ts +26 -0
- package/dist/commands/skill/manifest.js +90 -0
- package/dist/commands/skill/manifest.js.map +1 -0
- package/dist/commands/skill/marketplace.d.ts +8 -122
- package/dist/commands/skill/marketplace.js +12 -590
- package/dist/commands/skill/marketplace.js.map +1 -1
- package/dist/commands/skill/resolve.d.ts +47 -0
- package/dist/commands/skill/resolve.js +101 -0
- package/dist/commands/skill/resolve.js.map +1 -0
- package/dist/commands/skill/web-discovery.d.ts +36 -4
- package/dist/commands/skill/web-discovery.js +160 -5
- package/dist/commands/skill/web-discovery.js.map +1 -1
- package/dist/lib/analytics.d.ts +55 -0
- package/dist/lib/analytics.js +167 -0
- package/dist/lib/analytics.js.map +1 -0
- package/dist/lib/skill-cache.d.ts +34 -0
- package/dist/lib/skill-cache.js +150 -0
- package/dist/lib/skill-cache.js.map +1 -0
- package/dist/setup/postinstall.js +21 -0
- package/dist/setup/postinstall.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,36 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.2.7] - 2026-03-23
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Prefetch core skills on install** — 8 core skills (brainstorming, planning, TDD, code review, debugging, security, verification, shipping) fetched from source repos during `npm install` and cached at `~/.superskill/cache/` for offline availability (#6)
|
|
12
|
+
- **Local analytics** — Privacy-first skill activation tracking at `~/.superskill/analytics.json`. Tracks activations, match methods, failed searches, and web discovery attempts. Auto-rotates at 1000 entries. (#9)
|
|
13
|
+
- **Contributing guide** — Release discipline, PR workflow, skill submission process, test patterns, and security guidelines (#8)
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
- **Security scanner false positive** — Role-play instructions ("you are now acting as X") moved from hard block to soft warning. Skills legitimately adopt personas; only memory wipe instructions remain blocked.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- **README overhaul** — Repositioned as product storefront. One-liner value prop, 3-step setup, collapsible skill catalog, supported tools table. Removed internal implementation details. (#13)
|
|
20
|
+
- **marketplace.ts split** — 809-line god file decomposed into 5 focused modules: activate.ts, resolve.ts, generate.ts, manifest.ts, helpers.ts. Barrel re-export preserves backward compatibility.
|
|
21
|
+
|
|
22
|
+
### Performance
|
|
23
|
+
- **Web discovery caching** — Results cached at `~/.superskill/discovery-cache.json` with 24h TTL, max 100 entries with LRU eviction. Avoids GitHub API rate limits on repeated searches.
|
|
24
|
+
|
|
25
|
+
### Testing
|
|
26
|
+
- **11 integration tests** for the full activation flow — direct skill_id load, domain activation, task trigger matching, multi-domain, web discovery fallback, GitHub URL loading, 3-per-domain cap, manifest generation
|
|
27
|
+
|
|
28
|
+
## [0.2.6] - 2026-03-23
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
- **Web discovery search** — Repo search now uses `in:name,description,readme` instead of restrictive topic filters. `deanpeters/Product-Manager-Skills` (2340 stars) and similar repos now discoverable
|
|
32
|
+
- **Code search** — Uses `filename:SKILL` qualifier instead of `language:markdown` for more accurate results
|
|
33
|
+
|
|
34
|
+
### Added
|
|
35
|
+
- **Security scanning for community skills** — All discovered skills are scanned before loading for prompt injection, identity hijacking, data exfiltration, destructive commands, and script injection. Hard blocks on dangerous content, soft warnings on suspicious patterns
|
|
36
|
+
- **50KB size cap** on skill files to prevent oversized payloads
|
|
37
|
+
|
|
8
38
|
## [0.2.5] - 2026-03-23
|
|
9
39
|
|
|
10
40
|
### Added
|
|
@@ -82,6 +112,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
82
112
|
- CLI shorthand commands (`r`, `w`, `s`, `c`, `t`, `l`, `sk`)
|
|
83
113
|
- MCP tool annotations (`readOnlyHint`, `destructiveHint`, `idempotentHint`)
|
|
84
114
|
|
|
115
|
+
[0.2.7]: https://github.com/permanu/superskill/compare/v0.2.6...v0.2.7
|
|
116
|
+
[0.2.6]: https://github.com/permanu/superskill/compare/v0.2.5...v0.2.6
|
|
85
117
|
[0.2.5]: https://github.com/permanu/superskill/compare/v0.2.4...v0.2.5
|
|
86
118
|
[0.2.4]: https://github.com/permanu/superskill/compare/v0.2.0...v0.2.4
|
|
87
119
|
[0.2.0]: https://github.com/permanu/superskill/compare/v0.1.2...v0.2.0
|
package/README.md
CHANGED
|
@@ -1,22 +1,106 @@
|
|
|
1
1
|
# SuperSkill
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
One plugin, every skill. The package manager for AI coding agents.
|
|
4
4
|
|
|
5
|
-
[](https://www.gnu.org/licenses/agpl-3.0)
|
|
6
5
|
[](https://www.npmjs.com/package/superskill)
|
|
7
|
-
[](https://www.gnu.org/licenses/agpl-3.0)
|
|
7
|
+
[](https://github.com/permanu/superskill)
|
|
8
|
+
[](https://github.com/permanu/superskill)
|
|
9
|
+
|
|
10
|
+
## The Problem
|
|
11
|
+
|
|
12
|
+
There are 9+ open-source skill repos for AI coding agents, containing 87+ skills across 28 domains. Installing them all means token bloat and collisions — three different TDD skills fighting for context. Installing none means your agent wings it. There's no package manager.
|
|
13
|
+
|
|
14
|
+
## How It Works
|
|
15
|
+
|
|
16
|
+
1. **Install** — `npm install -g superskill`
|
|
17
|
+
2. **Describe your task** — "write tests for my Go API"
|
|
18
|
+
3. **SuperSkill finds and loads the right methodology** — resolves collisions, filters by your stack, injects only what's relevant
|
|
19
|
+
|
|
20
|
+
No manual skill management. The AI agent calls SuperSkill automatically when it recognizes a matching task.
|
|
21
|
+
|
|
22
|
+
## Key Features
|
|
23
|
+
|
|
24
|
+
- **87 skills from 9 repos** — ECC, Superpowers, gstack, Anthropic, design repos, and more. One catalog, one resolution layer.
|
|
25
|
+
- **Works across 8 AI tools** — Claude Code, Claude Desktop, Cursor, Codex CLI, Gemini CLI, OpenCode, Crush CLI, Droid.
|
|
26
|
+
- **Collision resolution** — When multiple repos provide skills for the same domain (TDD, planning, code review, etc.), profiles pick the winner.
|
|
27
|
+
- **Stack-aware filtering** — Auto-detects your project (Go, React, Django, Spring Boot, etc.) and loads only relevant skills.
|
|
28
|
+
- **Web discovery** — If no local skill matches, searches GitHub for community skills.
|
|
29
|
+
- **Security scanning** — Community skills are scanned for prompt injection, data exfiltration, and destructive commands before loading.
|
|
30
|
+
- **Progressive disclosure** — Lightweight manifest (~100 tokens/skill) for small-context models; full content on demand.
|
|
31
|
+
- **Knowledge vault** — Persistent project memory: tasks, ADRs, learnings, session resume, brainstorms. Cross-tool, cross-session.
|
|
32
|
+
|
|
33
|
+
## Supported AI Tools
|
|
34
|
+
|
|
35
|
+
| Tool | Setup | Status |
|
|
36
|
+
|------|-------|--------|
|
|
37
|
+
| **Claude Code** | Plugin or MCP | Verified |
|
|
38
|
+
| **Claude Desktop** | MCP config | Verified |
|
|
39
|
+
| **Cursor** | MCP config | Verified |
|
|
40
|
+
| **Codex CLI** | MCP config | Verified |
|
|
41
|
+
| **Gemini CLI** | MCP config | Verified |
|
|
42
|
+
| **OpenCode** | MCP config | Community |
|
|
43
|
+
| **Crush CLI** | MCP config | Community |
|
|
44
|
+
| **Droid** | MCP config | Community |
|
|
45
|
+
|
|
46
|
+
## Available Skills
|
|
47
|
+
|
|
48
|
+
<details>
|
|
49
|
+
<summary>28 domains across 9 repos (click to expand)</summary>
|
|
50
|
+
|
|
51
|
+
**Core Workflow** — loaded for every project:
|
|
52
|
+
|
|
53
|
+
| Domain | Skills | Description |
|
|
54
|
+
|--------|--------|-------------|
|
|
55
|
+
| TDD | 8 | Red-green-refactor, Go/Python/Django/Spring/C++ testing, E2E |
|
|
56
|
+
| Planning | 3 | Implementation planning, CEO/eng review, execution |
|
|
57
|
+
| Code Review | 4 | PR review, Go review, Python review, feedback workflow |
|
|
58
|
+
| Debugging | 2 | Systematic debugging, investigation |
|
|
59
|
+
| Verification | 4 | Build/lint/type gates, Django/Spring verification |
|
|
60
|
+
| Brainstorming | 2 | Structured ideation, office hours |
|
|
61
|
+
| Agent Orchestration | 5 | Autonomous loops, RFC pipelines, subagents, parallel dispatch |
|
|
62
|
+
| Security | 5 | OWASP review, AgentShield scanning, Django/Spring security |
|
|
63
|
+
| Shipping | 2 | CI/CD, deployment patterns |
|
|
64
|
+
| Frontend Design | 5 | Anthropic official, Design Taste, Bencium UX, FDP, UI/UX Pro Max |
|
|
65
|
+
| Git Workflow | 2 | Worktrees, branch management |
|
|
66
|
+
|
|
67
|
+
**Language & Framework** — loaded when your stack matches:
|
|
68
|
+
|
|
69
|
+
| Domain | Skills | Description |
|
|
70
|
+
|--------|--------|-------------|
|
|
71
|
+
| Go | 2 | Idiomatic patterns, conventions |
|
|
72
|
+
| Python | 2 | Pythonic idioms, PEP 8 |
|
|
73
|
+
| Django | 3 | Architecture, DRF, ORM, security, TDD |
|
|
74
|
+
| Spring Boot | 4 | Architecture, security, TDD, verification |
|
|
75
|
+
| Swift | 4 | SwiftUI, concurrency, actors, protocol DI |
|
|
76
|
+
| C++ | 2 | Core Guidelines, GoogleTest |
|
|
77
|
+
| Java | 2 | Standards, JPA/Hibernate |
|
|
78
|
+
| Database | 3 | PostgreSQL, migrations, ClickHouse |
|
|
79
|
+
| Docker | 1 | Compose, container security |
|
|
80
|
+
|
|
81
|
+
**Infrastructure & Patterns:**
|
|
82
|
+
|
|
83
|
+
| Domain | Skills | Description |
|
|
84
|
+
|--------|--------|-------------|
|
|
85
|
+
| API Design | 1 | REST patterns, pagination, versioning |
|
|
86
|
+
| Frontend Patterns | 1 | React/Next.js state and performance |
|
|
87
|
+
| Backend Patterns | 1 | Node/Express server patterns |
|
|
88
|
+
| Coding Standards | 1 | Universal TS/JS/React standards |
|
|
89
|
+
|
|
90
|
+
**Specialized:**
|
|
91
|
+
|
|
92
|
+
| Domain | Skills | Description |
|
|
93
|
+
|--------|--------|-------------|
|
|
94
|
+
| Content & Business | 6 | Articles, investor materials, outreach, market research |
|
|
95
|
+
| 3D Animation | 5 | Three.js, GSAP, React Three Fiber, Framer Motion, Babylon.js |
|
|
96
|
+
| Agent Engineering | 4 | Agent harness, eval, cost optimization |
|
|
97
|
+
| Meta/Tooling | 5 | Skill management, compaction, learning, browsing |
|
|
98
|
+
|
|
99
|
+
**Source repos:** [ECC](https://github.com/affaan-m/everything-claude-code), [Superpowers](https://github.com/obra/superpowers), [gstack](https://github.com/garrytan/gstack), [Anthropic Skills](https://github.com/anthropics/skills), [Design Skillstack](https://github.com/freshtechbro/claudedesignskills), [Taste](https://github.com/Leonxlnx/taste-skill), [Bencium](https://github.com/bencium/bencium-claude-code-design-skill), [Frontend Design Pro](https://github.com/claudekit/frontend-design-pro-demo), [UI/UX Pro Max](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
|
|
100
|
+
|
|
101
|
+
</details>
|
|
9
102
|
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
- **Skill Marketplace** — 87 skills from 9 repos (ECC, Superpowers, gstack, Anthropic, design repos). Catalog, search, filter by domain.
|
|
13
|
-
- **Collision Detection** — 12 domains where skills from different repos compete (TDD, planning, code review, etc.). Profile-based resolution picks the best skill per domain.
|
|
14
|
-
- **Per-Project Filtering** — Auto-detects your stack (Go+Echo, React+Next, Django, etc.) and loads only relevant skills. Go project? No Django/Spring/frontend skills loaded.
|
|
15
|
-
- **Progressive Disclosure** — Lightweight manifest (~100 tokens/skill) + on-demand loading. Small context models get essentials only.
|
|
16
|
-
- **Knowledge Vault** — Persistent project memory: tasks, decisions (ADRs), learnings, sessions, brainstorms. Cross-tool, cross-session continuity.
|
|
17
|
-
- **Multi-Agent Coordination** — Session registry for agent swarms. No file conflicts.
|
|
18
|
-
|
|
19
|
-
## Install
|
|
103
|
+
## Quick Start
|
|
20
104
|
|
|
21
105
|
### Claude Code Plugin (recommended)
|
|
22
106
|
|
|
@@ -25,97 +109,19 @@
|
|
|
25
109
|
/plugin install superskill
|
|
26
110
|
```
|
|
27
111
|
|
|
28
|
-
###
|
|
112
|
+
### Any MCP-compatible tool
|
|
29
113
|
|
|
30
114
|
```bash
|
|
31
115
|
npm install -g superskill
|
|
32
116
|
```
|
|
33
117
|
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
npx superskill
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### From source
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
git clone https://github.com/permanu/superskill.git
|
|
43
|
-
cd superskill
|
|
44
|
-
npm install && npm run build
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Quick Start
|
|
48
|
-
|
|
49
|
-
Once installed, SuperSkill auto-detects your project and loads skills on demand. The main MCP tool is `superskill` — the LLM calls it automatically when it recognizes a task that matches a skill domain.
|
|
50
|
-
|
|
51
|
-
### How It Works
|
|
52
|
-
|
|
53
|
-
1. Agent starts session → SuperSkill injects skill awareness via `vault_resume`
|
|
54
|
-
2. User says "let's think about this problem"
|
|
55
|
-
3. Agent recognizes brainstorming intent → calls `superskill({domain: "brainstorming"})`
|
|
56
|
-
4. SuperSkill returns expert methodology → agent follows it
|
|
57
|
-
|
|
58
|
-
No manual commands needed. The LLM decides when to use skills based on your intent.
|
|
59
|
-
|
|
60
|
-
### Skill Domains
|
|
61
|
-
|
|
62
|
-
| Domain | What It Covers |
|
|
63
|
-
|--------|---------------|
|
|
64
|
-
| `brainstorming` | Thinking through problems, exploring ideas, ideating |
|
|
65
|
-
| `planning` | Architecture, implementation strategy, scoping |
|
|
66
|
-
| `code-review` | PR review, code quality, feedback |
|
|
67
|
-
| `tdd` | Writing tests, coverage, test-driven development |
|
|
68
|
-
| `debugging` | Investigating errors, troubleshooting, root cause |
|
|
69
|
-
| `security` | Vulnerability review, auth, OWASP, hardening |
|
|
70
|
-
| `verification` | Build checks, lint, type validation |
|
|
71
|
-
| `shipping` | Deployment, CI/CD, releases, rollbacks |
|
|
72
|
-
| `frontend-design` | UI/UX, components, visual design |
|
|
73
|
-
| `agent-orchestration` | Multi-agent, parallel tasks, subagents |
|
|
74
|
-
| `database` | SQL, schemas, migrations, query optimization |
|
|
75
|
-
|
|
76
|
-
### CLI
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
# Marketplace
|
|
80
|
-
superskill-cli skill catalog # 87 skills, 9 repos
|
|
81
|
-
superskill-cli skill catalog --search "tdd" # search
|
|
82
|
-
superskill-cli skill collisions # 12 collision domains
|
|
83
|
-
superskill-cli skill resolve --profile ecc-first # see winners
|
|
84
|
-
|
|
85
|
-
# Generate super-skill (auto-detects stack)
|
|
86
|
-
superskill-cli skill generate # Go project → 14 skills, React → different set
|
|
87
|
-
|
|
88
|
-
# Smart activate (describe task, get skill)
|
|
89
|
-
superskill-cli skill activate "brainstorm this" # → loads brainstorming skill
|
|
90
|
-
superskill-cli skill activate "write tests" # → loads TDD skill
|
|
91
|
-
superskill-cli skill activate "review PR" --domain code-review # direct domain
|
|
92
|
-
|
|
93
|
-
# Progressive disclosure
|
|
94
|
-
superskill-cli skill manifest # lightweight index
|
|
95
|
-
superskill-cli skill load ecc/tdd-workflow # load one skill
|
|
96
|
-
|
|
97
|
-
# Knowledge vault
|
|
98
|
-
superskill-cli context # project context
|
|
99
|
-
superskill-cli task add "Fix auth bug" --priority p0
|
|
100
|
-
superskill-cli task board # kanban view
|
|
101
|
-
superskill-cli learn add --title "Redis pattern" # capture learning
|
|
102
|
-
superskill-cli decide --title "Use PostgreSQL" # log ADR
|
|
103
|
-
superskill-cli resume # what happened last session
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
## MCP Setup (non-plugin)
|
|
107
|
-
|
|
108
|
-
For tools that don't support Claude Code plugins, configure as a standard MCP server:
|
|
109
|
-
|
|
110
|
-
### Claude Code
|
|
118
|
+
Then configure as an MCP server. For Claude Code:
|
|
111
119
|
|
|
112
120
|
```bash
|
|
113
121
|
claude mcp add superskill -e VAULT_PATH=~/Vaults/ai -- npx -y superskill
|
|
114
122
|
```
|
|
115
123
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
Add to your MCP config:
|
|
124
|
+
For Cursor, Claude Desktop, Codex, Gemini CLI, and others — add to your MCP config:
|
|
119
125
|
|
|
120
126
|
```json
|
|
121
127
|
{
|
|
@@ -135,59 +141,37 @@ Add to your MCP config:
|
|
|
135
141
|
|
|
136
142
|
| Tool | Description |
|
|
137
143
|
|------|-------------|
|
|
138
|
-
| `superskill` |
|
|
144
|
+
| `superskill` | Load expert methodology by domain, task description, or skill ID |
|
|
145
|
+
| `vault_skill` | Skill catalog, collisions, resolution, generation |
|
|
146
|
+
| `vault_project_context` | Auto-detected project context from CWD |
|
|
147
|
+
| `vault_init` | Generate draft context.md from a git repo |
|
|
148
|
+
| `vault_task` | Task management (add/list/update/board) |
|
|
149
|
+
| `vault_decide` | Log architecture decisions |
|
|
150
|
+
| `vault_learn` | Capture and list learnings |
|
|
151
|
+
| `vault_resume` | Resume context — recent sessions, interrupted work, next steps |
|
|
152
|
+
| `vault_session` | Multi-agent session coordination |
|
|
139
153
|
| `vault_read` | Read file or directory from vault |
|
|
140
154
|
| `vault_write` | Write/append/prepend content |
|
|
141
155
|
| `vault_search` | Full-text search across vault |
|
|
142
|
-
| `
|
|
143
|
-
| `
|
|
144
|
-
| `vault_decide` | Log architecture decision |
|
|
145
|
-
| `vault_task` | Manage tasks (add/list/update/board) |
|
|
146
|
-
| `vault_learn` | Capture/list learnings |
|
|
147
|
-
| `vault_session` | Multi-agent session coordination |
|
|
148
|
-
| `vault_skill` | Skill marketplace operations (catalog/collisions/resolve/generate) |
|
|
149
|
-
| `vault_resume` | Resume context — recent sessions, interrupted work, next steps |
|
|
150
|
-
| `vault_prune` | Archive/delete stale content |
|
|
151
|
-
| `vault_stats` | Content statistics |
|
|
156
|
+
| `vault_prune` | Archive stale content |
|
|
157
|
+
| `vault_stats` | Vault content statistics |
|
|
152
158
|
| `vault_deprecate` | Mark items as deprecated |
|
|
153
159
|
|
|
154
160
|
## Configuration
|
|
155
161
|
|
|
156
|
-
|
|
|
157
|
-
|
|
162
|
+
| Variable | Default | Description |
|
|
163
|
+
|----------|---------|-------------|
|
|
158
164
|
| `VAULT_PATH` | `~/Vaults/ai` | Path to knowledge vault |
|
|
159
165
|
| `MAX_INJECT_TOKENS` | `1500` | Max tokens for context injection |
|
|
160
166
|
| `SESSION_TTL_HOURS` | `2` | Session heartbeat TTL |
|
|
161
167
|
|
|
162
|
-
##
|
|
168
|
+
## Roadmap
|
|
163
169
|
|
|
164
|
-
|
|
165
|
-
~/Vaults/ai/
|
|
166
|
-
├── project-map.json # Path → slug mappings
|
|
167
|
-
├── coordination/
|
|
168
|
-
│ ├── session-registry.json # Active agent sessions
|
|
169
|
-
│ └── locks/ # PID lockfiles
|
|
170
|
-
├── skills/
|
|
171
|
-
│ ├── installed/ # Installed skills
|
|
172
|
-
│ ├── super-skill/ # Generated super-skill files
|
|
173
|
-
│ └── registry.json # Skill metadata
|
|
174
|
-
└── projects/<slug>/
|
|
175
|
-
├── context.md # Project overview
|
|
176
|
-
├── decisions/ # Architecture Decision Records
|
|
177
|
-
├── tasks/ # Task files
|
|
178
|
-
├── learnings/ # Learning captures
|
|
179
|
-
├── sessions/ # Session notes
|
|
180
|
-
├── brainstorms/ # Brainstorm documents
|
|
181
|
-
└── _archive/ # Pruned content
|
|
182
|
-
```
|
|
170
|
+
See [GitHub Milestones](https://github.com/permanu/superskill/milestones) for planned work.
|
|
183
171
|
|
|
184
|
-
##
|
|
172
|
+
## Contributing
|
|
185
173
|
|
|
186
|
-
|
|
187
|
-
npm test # Run all tests (Vitest)
|
|
188
|
-
npm run test:coverage # With coverage
|
|
189
|
-
npm test src/lib/auto-profile.test.ts # Specific file
|
|
190
|
-
```
|
|
174
|
+
See [CONTRIBUTING.md](./CONTRIBUTING.md).
|
|
191
175
|
|
|
192
176
|
## License
|
|
193
177
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const TASK_DOMAIN_MAP: Array<{
|
|
2
|
+
patterns: RegExp[];
|
|
3
|
+
domains: string[];
|
|
4
|
+
}>;
|
|
5
|
+
export declare function matchTaskToDomains(task: string): string[];
|
|
6
|
+
export interface ActivateResult {
|
|
7
|
+
success: boolean;
|
|
8
|
+
skills_loaded: Array<{
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
domains: string[];
|
|
12
|
+
}>;
|
|
13
|
+
content: string;
|
|
14
|
+
matched_domains: string[];
|
|
15
|
+
total_tokens: number;
|
|
16
|
+
error?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function activateSkills(options: {
|
|
19
|
+
task: string;
|
|
20
|
+
profile?: string;
|
|
21
|
+
skill_id?: string;
|
|
22
|
+
domain?: string;
|
|
23
|
+
}): Promise<ActivateResult>;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later OR Commercial
|
|
2
|
+
import { CATALOG, DOMAINS } from "./catalog.js";
|
|
3
|
+
import { searchGitHubForSkills, formatDiscoveryResults } from "./web-discovery.js";
|
|
4
|
+
import { trackActivation, trackFailedSearch, trackWebDiscovery } from "../../lib/analytics.js";
|
|
5
|
+
import { resolveCommand } from "./resolve.js";
|
|
6
|
+
import { loadSkillContent } from "./manifest.js";
|
|
7
|
+
import { fetchSkillContent, formatSection } from "./helpers.js";
|
|
8
|
+
// ── Task → Domain Mapping ────────────────────────────
|
|
9
|
+
export const TASK_DOMAIN_MAP = [
|
|
10
|
+
// Core workflow domains
|
|
11
|
+
{ patterns: [/brainstorm/i, /ideate/i, /explore ideas/i, /think through/i, /what if/i], domains: ["brainstorming"] },
|
|
12
|
+
{ patterns: [/test/i, /tdd/i, /spec/i, /coverage/i, /unit test/i, /assert/i], domains: ["tdd"] },
|
|
13
|
+
{ patterns: [/review/i, /code review/i, /pr review/i, /pull request/i, /feedback/i], domains: ["code-review"] },
|
|
14
|
+
{ patterns: [/plan/i, /architect/i, /design.*system/i, /implementation plan/i, /roadmap/i], domains: ["planning"] },
|
|
15
|
+
{ patterns: [/debug/i, /investigate/i, /fix.*bug/i, /troubleshoot/i, /error/i, /broken/i], domains: ["debugging"] },
|
|
16
|
+
{ patterns: [/secur/i, /vulnerab/i, /owasp/i, /auth.*review/i, /pentest/i, /hardening/i], domains: ["security"] },
|
|
17
|
+
{ patterns: [/deploy/i, /\bship\b/i, /release/i, /ci.?cd/i, /rollback/i, /production/i], domains: ["shipping"] },
|
|
18
|
+
{ patterns: [/verify/i, /validate/i, /check.*build/i, /lint/i, /type.?check/i], domains: ["verification"] },
|
|
19
|
+
{ patterns: [/frontend/i, /ui\b/i, /ux\b/i, /component/i, /design.*page/i, /css/i, /tailwind/i, /layout/i], domains: ["frontend-design"] },
|
|
20
|
+
{ patterns: [/agent/i, /orchestrat/i, /subagent/i, /parallel.*agent/i, /multi.*agent/i], domains: ["agent-orchestration"] },
|
|
21
|
+
{ patterns: [/database/i, /sql\b/i, /schema/i, /migration/i, /postgres/i, /mysql/i, /supabase/i, /sql.*query/i, /db.*query/i], domains: ["database"] },
|
|
22
|
+
// Language and framework domains
|
|
23
|
+
{ patterns: [/golang/i, /go test/i, /goroutine/i, /go mod/i, /go func/i, /go package/i], domains: ["go"] },
|
|
24
|
+
{ patterns: [/python/i, /pytest/i, /pip/i, /django/i, /flask/i, /fastapi/i], domains: ["python"] },
|
|
25
|
+
{ patterns: [/django/i, /drf\b/i, /django rest/i], domains: ["django"] },
|
|
26
|
+
{ patterns: [/spring/i, /spring boot/i, /java\b/i, /jpa\b/i, /hibernate/i, /maven/i, /gradle/i], domains: ["spring-boot", "java"] },
|
|
27
|
+
{ patterns: [/swift/i, /swiftui/i, /ios\b/i, /xcode/i, /uikit/i], domains: ["swift"] },
|
|
28
|
+
{ patterns: [/\bc\+\+/i, /cpp\b/i, /cmake/i, /clang/i], domains: ["cpp"] },
|
|
29
|
+
{ patterns: [/docker/i, /container/i, /compose/i, /dockerfile/i, /k8s/i, /kubernetes/i], domains: ["docker"] },
|
|
30
|
+
// API and patterns
|
|
31
|
+
{ patterns: [/api design/i, /rest api/i, /endpoint/i, /pagination/i, /rate limit/i], domains: ["api-design"] },
|
|
32
|
+
{ patterns: [/react/i, /next\.?js/i, /state management/i, /hooks/i, /redux/i], domains: ["frontend-patterns"] },
|
|
33
|
+
{ patterns: [/express/i, /node\.?js/i, /server.*pattern/i, /middleware/i, /backend/i], domains: ["backend-patterns"] },
|
|
34
|
+
{ patterns: [/coding standard/i, /style guide/i, /convention/i, /best practice/i], domains: ["coding-standards"] },
|
|
35
|
+
{ patterns: [/git/i, /branch/i, /worktree/i, /merge/i, /rebase/i], domains: ["git-workflow"] },
|
|
36
|
+
// Content and business
|
|
37
|
+
{ patterns: [/write.*article/i, /blog.*post/i, /content/i, /newsletter/i, /copywriting/i], domains: ["content-business"] },
|
|
38
|
+
{ patterns: [/market.*research/i, /competitor/i, /competitive/i, /due diligence/i, /market siz/i], domains: ["content-business"] },
|
|
39
|
+
{ patterns: [/investor/i, /pitch.*deck/i, /fundrais/i, /outreach/i, /cold email/i], domains: ["content-business"] },
|
|
40
|
+
{ patterns: [/linkedin/i, /twitter/i, /social media/i, /marketing/i, /launch post/i], domains: ["content-business"] },
|
|
41
|
+
// 3D and animation
|
|
42
|
+
{ patterns: [/three\.?js/i, /webgl/i, /3d\b/i, /animation/i, /gsap/i, /framer/i], domains: ["3d-animation"] },
|
|
43
|
+
// Agent engineering
|
|
44
|
+
{ patterns: [/agent.*harness/i, /agent.*eval/i, /cost.*optim/i, /agent.*loop/i, /agent.*engineer/i, /eval.*pipeline/i], domains: ["agent-engineering"] },
|
|
45
|
+
// Meta / tooling
|
|
46
|
+
{ patterns: [/skill.*manage/i, /compaction/i, /skill.*install/i, /learning.*capture/i], domains: ["meta"] },
|
|
47
|
+
];
|
|
48
|
+
export function matchTaskToDomains(task) {
|
|
49
|
+
const matched = new Set();
|
|
50
|
+
for (const entry of TASK_DOMAIN_MAP) {
|
|
51
|
+
for (const pattern of entry.patterns) {
|
|
52
|
+
if (pattern.test(task)) {
|
|
53
|
+
for (const d of entry.domains)
|
|
54
|
+
matched.add(d);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return [...matched];
|
|
59
|
+
}
|
|
60
|
+
// ── Smart Skill Activator ─────────────────────────────
|
|
61
|
+
export async function activateSkills(options) {
|
|
62
|
+
// Direct skill load by ID
|
|
63
|
+
if (options.skill_id) {
|
|
64
|
+
const result = await loadSkillContent(options.skill_id);
|
|
65
|
+
if (!result.success) {
|
|
66
|
+
return { success: false, skills_loaded: [], content: "", matched_domains: [], total_tokens: 0, error: result.error };
|
|
67
|
+
}
|
|
68
|
+
const entry = CATALOG.find((s) => s.id === options.skill_id);
|
|
69
|
+
trackActivation({ skill_id: options.skill_id, match_method: "skill_id", task_query: options.task, matched: true });
|
|
70
|
+
return {
|
|
71
|
+
success: true,
|
|
72
|
+
skills_loaded: [{ id: options.skill_id, name: entry?.name ?? options.skill_id, domains: entry?.domains ?? [] }],
|
|
73
|
+
content: result.content,
|
|
74
|
+
matched_domains: entry?.domains ?? [],
|
|
75
|
+
total_tokens: result.estimated_tokens ?? 0,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
// Route 1: LLM passed domain directly (preferred — LLM understands intent best)
|
|
79
|
+
// Route 2: Keyword fallback from task description
|
|
80
|
+
let matchedDomains;
|
|
81
|
+
if (options.domain) {
|
|
82
|
+
// LLM picked the domain(s) — trust it. Support comma-separated.
|
|
83
|
+
matchedDomains = options.domain.split(",").map((d) => d.trim()).filter((d) => DOMAINS.some((dom) => dom.id === d));
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
matchedDomains = matchTaskToDomains(options.task);
|
|
87
|
+
}
|
|
88
|
+
if (matchedDomains.length === 0) {
|
|
89
|
+
// Track failed domain match before attempting web discovery
|
|
90
|
+
trackFailedSearch(options.task, 0);
|
|
91
|
+
// Web discovery fallback — search GitHub for community skills
|
|
92
|
+
const discovery = await searchGitHubForSkills(options.task);
|
|
93
|
+
const content = formatDiscoveryResults(options.task, discovery.results);
|
|
94
|
+
trackWebDiscovery(options.task, discovery.results.length > 0);
|
|
95
|
+
return {
|
|
96
|
+
success: true,
|
|
97
|
+
skills_loaded: [],
|
|
98
|
+
content,
|
|
99
|
+
matched_domains: [],
|
|
100
|
+
total_tokens: 0,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
// Resolve which skill wins per domain
|
|
104
|
+
const resolution = await resolveCommand({ profile: options.profile });
|
|
105
|
+
const winnerMap = new Map();
|
|
106
|
+
for (const r of resolution.resolutions) {
|
|
107
|
+
winnerMap.set(r.domain, r.chosen);
|
|
108
|
+
}
|
|
109
|
+
// For each matched domain, load collision winner + up to 2 alternatives (max 3 per domain)
|
|
110
|
+
const MAX_SKILLS_PER_DOMAIN = 3;
|
|
111
|
+
const skillsToLoad = [];
|
|
112
|
+
const seenIds = new Set();
|
|
113
|
+
for (const domain of matchedDomains) {
|
|
114
|
+
let domainCount = 0;
|
|
115
|
+
// Collision winner goes first if present
|
|
116
|
+
const winnerId = winnerMap.get(domain);
|
|
117
|
+
if (winnerId && !seenIds.has(winnerId)) {
|
|
118
|
+
const entry = CATALOG.find((s) => s.id === winnerId);
|
|
119
|
+
if (entry) {
|
|
120
|
+
skillsToLoad.push(entry);
|
|
121
|
+
seenIds.add(winnerId);
|
|
122
|
+
domainCount++;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// Then other skills in this domain, up to the cap
|
|
126
|
+
for (const skill of CATALOG) {
|
|
127
|
+
if (domainCount >= MAX_SKILLS_PER_DOMAIN)
|
|
128
|
+
break;
|
|
129
|
+
if (skill.domains.includes(domain) && !seenIds.has(skill.id)) {
|
|
130
|
+
skillsToLoad.push(skill);
|
|
131
|
+
seenIds.add(skill.id);
|
|
132
|
+
domainCount++;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (skillsToLoad.length === 0) {
|
|
137
|
+
return { success: true, skills_loaded: [], content: "No skills available for matched domains: " + matchedDomains.join(", "), matched_domains: matchedDomains, total_tokens: 0 };
|
|
138
|
+
}
|
|
139
|
+
// Fetch all matched skills in parallel
|
|
140
|
+
const fetchResults = await Promise.allSettled(skillsToLoad.map(async (entry) => {
|
|
141
|
+
const raw = await fetchSkillContent(entry.source);
|
|
142
|
+
return { entry, content: formatSection(entry, raw) };
|
|
143
|
+
}));
|
|
144
|
+
const sections = [];
|
|
145
|
+
const loaded = [];
|
|
146
|
+
for (const result of fetchResults) {
|
|
147
|
+
if (result.status === "fulfilled") {
|
|
148
|
+
sections.push(result.value.content);
|
|
149
|
+
loaded.push({
|
|
150
|
+
id: result.value.entry.id,
|
|
151
|
+
name: result.value.entry.name,
|
|
152
|
+
domains: result.value.entry.domains,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
const content = sections.join("\n\n---\n\n");
|
|
157
|
+
// Track each loaded skill activation
|
|
158
|
+
const matchMethod = options.domain ? "domain" : "trigger";
|
|
159
|
+
for (const skill of loaded) {
|
|
160
|
+
trackActivation({ skill_id: skill.id, match_method: matchMethod, task_query: options.task, matched: true });
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
success: true,
|
|
164
|
+
skills_loaded: loaded,
|
|
165
|
+
content,
|
|
166
|
+
matched_domains: matchedDomains,
|
|
167
|
+
total_tokens: Math.ceil(content.length / 4),
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=activate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activate.js","sourceRoot":"","sources":["../../../src/commands/skill/activate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { VaultFS } from "../../lib/vault-fs.js";
|
|
2
|
+
import { type LayerName } from "./helpers.js";
|
|
3
|
+
export interface LayerInfo {
|
|
4
|
+
path: string;
|
|
5
|
+
skill_count: number;
|
|
6
|
+
estimated_tokens: number;
|
|
7
|
+
}
|
|
8
|
+
export interface GenerateResult {
|
|
9
|
+
success: boolean;
|
|
10
|
+
layers?: {
|
|
11
|
+
core: LayerInfo;
|
|
12
|
+
extended: LayerInfo;
|
|
13
|
+
reference: LayerInfo;
|
|
14
|
+
};
|
|
15
|
+
total_skills?: number;
|
|
16
|
+
fetch_errors?: string[];
|
|
17
|
+
error?: string;
|
|
18
|
+
filtered_out?: number;
|
|
19
|
+
pipe_content?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function generateCommand(vaultFs: VaultFS, _vaultPath: string, options: {
|
|
22
|
+
profile?: string;
|
|
23
|
+
includeNonColliding?: boolean;
|
|
24
|
+
outputPath?: string;
|
|
25
|
+
pipe?: boolean;
|
|
26
|
+
pipeLayer?: LayerName | 'all';
|
|
27
|
+
relevantDomains?: string[];
|
|
28
|
+
}): Promise<GenerateResult>;
|