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 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
- **Universal skill marketplace + knowledge vault for AI coding agents.** Auto-detects your stack, resolves skill collisions across repos, and loads expert methodologies on demand.
3
+ One plugin, every skill. The package manager for AI coding agents.
4
4
 
5
- [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL%203.0-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
6
5
  [![npm](https://img.shields.io/npm/v/superskill)](https://www.npmjs.com/package/superskill)
7
- [![Node.js](https://img.shields.io/badge/Node.js-%3E%3D20.0.0-green.svg)](https://nodejs.org/)
8
- [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue.svg)](https://www.typescriptlang.org/)
6
+ [![license](https://img.shields.io/badge/license-AGPL--3.0-blue)](https://www.gnu.org/licenses/agpl-3.0)
7
+ [![skills](https://img.shields.io/badge/skills-87-purple)](https://github.com/permanu/superskill)
8
+ [![tools](https://img.shields.io/badge/AI%20tools-8-green)](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
- ## What It Does
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
- ### npm (any MCP-compatible tool)
112
+ ### Any MCP-compatible tool
29
113
 
30
114
  ```bash
31
115
  npm install -g superskill
32
116
  ```
33
117
 
34
- Or use directly:
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
- ### Claude Desktop / Cursor / Codex / OpenCode
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` | **Main tool** — load expert methodology by domain, task description, or skill ID |
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
- | `vault_project_context` | Get project context (auto-detects from CWD) |
143
- | `vault_init` | Generate draft context.md from a git repo |
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
- | Environment Variable | Default | Description |
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
- ## Vault Structure
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
- ## Testing
172
+ ## Contributing
185
173
 
186
- ```bash
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":"AAAA,2DAA2D;AAC3D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEhE,wDAAwD;AAExD,MAAM,CAAC,MAAM,eAAe,GAAqD;IAC/E,wBAAwB;IACxB,EAAE,QAAQ,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE;IACpH,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE;IAChG,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE;IAC/G,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;IACnH,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE;IACnH,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;IACjH,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;IAChH,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE;IAC3G,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,iBAAiB,CAAC,EAAE;IAC1I,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,qBAAqB,CAAC,EAAE;IAC3H,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;IACtJ,iCAAiC;IACjC,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;IAC1G,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE;IAClG,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE;IACxE,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE;IACnI,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE;IACtF,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE;IAC1E,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE;IAC9G,mBAAmB;IACnB,EAAE,QAAQ,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE;IAC9G,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,mBAAmB,CAAC,EAAE;IAC/G,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE;IACtH,EAAE,QAAQ,EAAE,CAAC,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE;IAClH,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE;IAC9F,uBAAuB;IACvB,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE;IAC1H,EAAE,QAAQ,EAAE,CAAC,mBAAmB,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE;IAClI,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE;IACnH,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE;IACrH,mBAAmB;IACnB,EAAE,QAAQ,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE;IAC7G,oBAAoB;IACpB,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,mBAAmB,CAAC,EAAE;IACxJ,iBAAiB;IACjB,EAAE,QAAQ,EAAE,CAAC,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE;CAC5G,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO;oBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AACtB,CAAC;AAaD,yDAAyD;AAEzD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAKpC;IACC,0BAA0B;IAC1B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACvH,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7D,eAAe,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACnH,OAAO;YACL,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;YAC/G,OAAO,EAAE,MAAM,CAAC,OAAQ;YACxB,eAAe,EAAE,KAAK,EAAE,OAAO,IAAI,EAAE;YACrC,YAAY,EAAE,MAAM,CAAC,gBAAgB,IAAI,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED,gFAAgF;IAChF,kDAAkD;IAClD,IAAI,cAAwB,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,gEAAgE;QAChE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CACpC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,4DAA4D;QAC5D,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAEnC,8DAA8D;QAC9D,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QACxE,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9D,OAAO;YACL,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,EAAE;YACjB,OAAO;YACP,eAAe,EAAE,EAAE;YACnB,YAAY,EAAE,CAAC;SAChB,CAAC;IACJ,CAAC;IAED,sCAAsC;IACtC,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;QACvC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,2FAA2F;IAC3F,MAAM,qBAAqB,GAAG,CAAC,CAAC;IAChC,MAAM,YAAY,GAA0C,EAAE,CAAC;IAC/D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,yCAAyC;QACzC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;YACrD,IAAI,KAAK,EAAE,CAAC;gBACV,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACtB,WAAW,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QACD,kDAAkD;QAClD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,WAAW,IAAI,qBAAqB;gBAAE,MAAM;YAChD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC7D,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACtB,WAAW,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,2CAA2C,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IAClL,CAAC;IAED,uCAAuC;IACvC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,UAAU,CAC3C,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;IACvD,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAoC,EAAE,CAAC;IAEnD,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACzB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;gBAC7B,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO;aACpC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAE7C,qCAAqC;IACrC,MAAM,WAAW,GAAyB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,eAAe,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9G,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,MAAM;QACrB,OAAO;QACP,eAAe,EAAE,cAAc;QAC/B,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;KAC5C,CAAC;AACJ,CAAC"}
@@ -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>;