oh-my-claude-sisyphus 3.4.2 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -0
- package/commands/cancel-ultraqa.md +1 -1
- package/dist/__tests__/analytics/analytics-summary.test.d.ts +2 -0
- package/dist/__tests__/analytics/analytics-summary.test.d.ts.map +1 -0
- package/dist/__tests__/analytics/analytics-summary.test.js +267 -0
- package/dist/__tests__/analytics/analytics-summary.test.js.map +1 -0
- package/dist/__tests__/analytics/backfill-dedup.test.d.ts +2 -0
- package/dist/__tests__/analytics/backfill-dedup.test.d.ts.map +1 -0
- package/dist/__tests__/analytics/backfill-dedup.test.js +179 -0
- package/dist/__tests__/analytics/backfill-dedup.test.js.map +1 -0
- package/dist/__tests__/analytics/backfill-engine.test.d.ts +2 -0
- package/dist/__tests__/analytics/backfill-engine.test.d.ts.map +1 -0
- package/dist/__tests__/analytics/backfill-engine.test.js +362 -0
- package/dist/__tests__/analytics/backfill-engine.test.js.map +1 -0
- package/dist/__tests__/analytics/cost-estimator.test.d.ts +2 -0
- package/dist/__tests__/analytics/cost-estimator.test.d.ts.map +1 -0
- package/dist/__tests__/analytics/cost-estimator.test.js +212 -0
- package/dist/__tests__/analytics/cost-estimator.test.js.map +1 -0
- package/dist/__tests__/analytics/output-estimator.test.d.ts +2 -0
- package/dist/__tests__/analytics/output-estimator.test.d.ts.map +1 -0
- package/dist/__tests__/analytics/output-estimator.test.js +106 -0
- package/dist/__tests__/analytics/output-estimator.test.js.map +1 -0
- package/dist/__tests__/analytics/token-extractor.test.d.ts +2 -0
- package/dist/__tests__/analytics/token-extractor.test.d.ts.map +1 -0
- package/dist/__tests__/analytics/token-extractor.test.js +121 -0
- package/dist/__tests__/analytics/token-extractor.test.js.map +1 -0
- package/dist/__tests__/analytics/transcript-parser.test.d.ts +2 -0
- package/dist/__tests__/analytics/transcript-parser.test.d.ts.map +1 -0
- package/dist/__tests__/analytics/transcript-parser.test.js +285 -0
- package/dist/__tests__/analytics/transcript-parser.test.js.map +1 -0
- package/dist/__tests__/analytics/transcript-scanner.test.d.ts +2 -0
- package/dist/__tests__/analytics/transcript-scanner.test.d.ts.map +1 -0
- package/dist/__tests__/analytics/transcript-scanner.test.js +401 -0
- package/dist/__tests__/analytics/transcript-scanner.test.js.map +1 -0
- package/dist/__tests__/analytics/transcript-token-extractor.test.d.ts +2 -0
- package/dist/__tests__/analytics/transcript-token-extractor.test.d.ts.map +1 -0
- package/dist/__tests__/analytics/transcript-token-extractor.test.js +175 -0
- package/dist/__tests__/analytics/transcript-token-extractor.test.js.map +1 -0
- package/dist/__tests__/hud/auto-tracking.integration.test.d.ts +2 -0
- package/dist/__tests__/hud/auto-tracking.integration.test.d.ts.map +1 -0
- package/dist/__tests__/hud/auto-tracking.integration.test.js +12 -0
- package/dist/__tests__/hud/auto-tracking.integration.test.js.map +1 -0
- package/dist/__tests__/learner/auto-learner.test.d.ts +7 -0
- package/dist/__tests__/learner/auto-learner.test.d.ts.map +1 -0
- package/dist/__tests__/learner/auto-learner.test.js +507 -0
- package/dist/__tests__/learner/auto-learner.test.js.map +1 -0
- package/dist/__tests__/learner/matcher.test.d.ts +2 -0
- package/dist/__tests__/learner/matcher.test.d.ts.map +1 -0
- package/dist/__tests__/learner/matcher.test.js +330 -0
- package/dist/__tests__/learner/matcher.test.js.map +1 -0
- package/dist/analytics/analytics-summary.d.ts +47 -0
- package/dist/analytics/analytics-summary.d.ts.map +1 -0
- package/dist/analytics/analytics-summary.js +171 -0
- package/dist/analytics/analytics-summary.js.map +1 -0
- package/dist/analytics/backfill-dedup.d.ts +49 -0
- package/dist/analytics/backfill-dedup.d.ts.map +1 -0
- package/dist/analytics/backfill-dedup.js +115 -0
- package/dist/analytics/backfill-dedup.js.map +1 -0
- package/dist/analytics/backfill-engine.d.ts +59 -0
- package/dist/analytics/backfill-engine.d.ts.map +1 -0
- package/dist/analytics/backfill-engine.js +172 -0
- package/dist/analytics/backfill-engine.js.map +1 -0
- package/dist/analytics/index.d.ts +8 -0
- package/dist/analytics/index.d.ts.map +1 -1
- package/dist/analytics/index.js +10 -0
- package/dist/analytics/index.js.map +1 -1
- package/dist/analytics/output-estimator.d.ts +26 -0
- package/dist/analytics/output-estimator.d.ts.map +1 -0
- package/dist/analytics/output-estimator.js +61 -0
- package/dist/analytics/output-estimator.js.map +1 -0
- package/dist/analytics/query-engine.d.ts.map +1 -1
- package/dist/analytics/query-engine.js +3 -2
- package/dist/analytics/query-engine.js.map +1 -1
- package/dist/analytics/token-extractor.d.ts +31 -0
- package/dist/analytics/token-extractor.d.ts.map +1 -0
- package/dist/analytics/token-extractor.js +57 -0
- package/dist/analytics/token-extractor.js.map +1 -0
- package/dist/analytics/token-tracker.d.ts +7 -1
- package/dist/analytics/token-tracker.d.ts.map +1 -1
- package/dist/analytics/token-tracker.js +94 -18
- package/dist/analytics/token-tracker.js.map +1 -1
- package/dist/analytics/transcript-parser.d.ts +42 -0
- package/dist/analytics/transcript-parser.d.ts.map +1 -0
- package/dist/analytics/transcript-parser.js +90 -0
- package/dist/analytics/transcript-parser.js.map +1 -0
- package/dist/analytics/transcript-scanner.d.ts +50 -0
- package/dist/analytics/transcript-scanner.d.ts.map +1 -0
- package/dist/analytics/transcript-scanner.js +149 -0
- package/dist/analytics/transcript-scanner.js.map +1 -0
- package/dist/analytics/transcript-token-extractor.d.ts +35 -0
- package/dist/analytics/transcript-token-extractor.d.ts.map +1 -0
- package/dist/analytics/transcript-token-extractor.js +136 -0
- package/dist/analytics/transcript-token-extractor.js.map +1 -0
- package/dist/analytics/types.d.ts +65 -0
- package/dist/analytics/types.d.ts.map +1 -1
- package/dist/analytics/types.js.map +1 -1
- package/dist/cli/analytics.js +26 -1
- package/dist/cli/analytics.js.map +1 -1
- package/dist/cli/commands/backfill.d.ts +15 -0
- package/dist/cli/commands/backfill.d.ts.map +1 -0
- package/dist/cli/commands/backfill.js +146 -0
- package/dist/cli/commands/backfill.js.map +1 -0
- package/dist/cli/commands/stats.d.ts +1 -0
- package/dist/cli/commands/stats.d.ts.map +1 -1
- package/dist/cli/commands/stats.js +67 -31
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/components/CostDashboard.d.ts +15 -0
- package/dist/cli/components/CostDashboard.d.ts.map +1 -0
- package/dist/cli/components/CostDashboard.js +15 -0
- package/dist/cli/components/CostDashboard.js.map +1 -0
- package/dist/cli/components/LiveStats.d.ts +16 -0
- package/dist/cli/components/LiveStats.d.ts.map +1 -0
- package/dist/cli/components/LiveStats.js +16 -0
- package/dist/cli/components/LiveStats.js.map +1 -0
- package/dist/cli/components/SessionBrowser.d.ts +14 -0
- package/dist/cli/components/SessionBrowser.d.ts.map +1 -0
- package/dist/cli/components/SessionBrowser.js +14 -0
- package/dist/cli/components/SessionBrowser.js.map +1 -0
- package/dist/cli/index.js +159 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/tui.d.ts +21 -0
- package/dist/cli/tui.d.ts.map +1 -0
- package/dist/cli/tui.js +21 -0
- package/dist/cli/tui.js.map +1 -0
- package/dist/hooks/learner/auto-invoke.d.ts +82 -0
- package/dist/hooks/learner/auto-invoke.d.ts.map +1 -0
- package/dist/hooks/learner/auto-invoke.js +234 -0
- package/dist/hooks/learner/auto-invoke.js.map +1 -0
- package/dist/hooks/learner/auto-learner.d.ts +55 -0
- package/dist/hooks/learner/auto-learner.d.ts.map +1 -0
- package/dist/hooks/learner/auto-learner.js +361 -0
- package/dist/hooks/learner/auto-learner.js.map +1 -0
- package/dist/hooks/learner/index.d.ts +3 -0
- package/dist/hooks/learner/index.d.ts.map +1 -1
- package/dist/hooks/learner/index.js +4 -0
- package/dist/hooks/learner/index.js.map +1 -1
- package/dist/hooks/learner/matcher.d.ts +40 -0
- package/dist/hooks/learner/matcher.d.ts.map +1 -0
- package/dist/hooks/learner/matcher.js +230 -0
- package/dist/hooks/learner/matcher.js.map +1 -0
- package/dist/hud/analytics-display.d.ts +16 -0
- package/dist/hud/analytics-display.d.ts.map +1 -1
- package/dist/hud/analytics-display.js +42 -0
- package/dist/hud/analytics-display.js.map +1 -1
- package/dist/hud/index.js +90 -3
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/render.d.ts.map +1 -1
- package/dist/hud/render.js +27 -1
- package/dist/hud/render.js.map +1 -1
- package/dist/hud/types.d.ts +2 -0
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js.map +1 -1
- package/docs/ANALYTICS-SYSTEM.md +150 -0
- package/hooks/keyword-detector.sh +1 -1
- package/package.json +1 -1
- package/scripts/keyword-detector.mjs +1 -1
- package/scripts/persistent-mode.mjs +1 -1
- package/scripts/test-mutual-exclusion.ts +4 -4
- package/scripts/test-remember-tags.ts +6 -6
- package/scripts/test-session-injection.ts +4 -4
- package/skills/cancel-ultraqa/SKILL.md +1 -1
- package/skills/local-skills-setup/SKILL.md +465 -0
- package/skills/omc-setup/SKILL.md +30 -5
- package/skills/skill/SKILL.md +406 -0
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill
|
|
3
|
+
description: Manage local skills - list, add, remove, search, edit
|
|
4
|
+
argument-hint: "<command> [args]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill Management CLI
|
|
8
|
+
|
|
9
|
+
Meta-skill for managing oh-my-claudecode skills via CLI-like commands.
|
|
10
|
+
|
|
11
|
+
## Subcommands
|
|
12
|
+
|
|
13
|
+
### /skill list
|
|
14
|
+
|
|
15
|
+
Show all local skills organized by scope.
|
|
16
|
+
|
|
17
|
+
**Behavior:**
|
|
18
|
+
1. Scan user skills at `~/.claude/skills/omc-learned/`
|
|
19
|
+
2. Scan project skills at `.omc/skills/`
|
|
20
|
+
3. Parse YAML frontmatter for metadata
|
|
21
|
+
4. Display in organized table format:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
USER SKILLS (~/.claude/skills/omc-learned/):
|
|
25
|
+
| Name | Triggers | Quality | Usage | Scope |
|
|
26
|
+
|-------------------|--------------------|---------|-------|-------|
|
|
27
|
+
| error-handler | fix, error | 95% | 42 | user |
|
|
28
|
+
| api-builder | api, endpoint | 88% | 23 | user |
|
|
29
|
+
|
|
30
|
+
PROJECT SKILLS (.omc/skills/):
|
|
31
|
+
| Name | Triggers | Quality | Usage | Scope |
|
|
32
|
+
|-------------------|--------------------|---------|-------|---------|
|
|
33
|
+
| test-runner | test, run | 92% | 15 | project |
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Fallback:** If quality/usage stats not available, show "N/A"
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
### /skill add [name]
|
|
41
|
+
|
|
42
|
+
Interactive wizard for creating a new skill.
|
|
43
|
+
|
|
44
|
+
**Behavior:**
|
|
45
|
+
1. **Ask for skill name** (if not provided in command)
|
|
46
|
+
- Validate: lowercase, hyphens only, no spaces
|
|
47
|
+
2. **Ask for description**
|
|
48
|
+
- Clear, concise one-liner
|
|
49
|
+
3. **Ask for triggers** (comma-separated keywords)
|
|
50
|
+
- Example: "error, fix, debug"
|
|
51
|
+
4. **Ask for argument hint** (optional)
|
|
52
|
+
- Example: "<file> [options]"
|
|
53
|
+
5. **Ask for scope:**
|
|
54
|
+
- `user` → `~/.claude/skills/omc-learned/<name>/SKILL.md`
|
|
55
|
+
- `project` → `.omc/skills/<name>/SKILL.md`
|
|
56
|
+
6. **Create skill file** with template:
|
|
57
|
+
|
|
58
|
+
```yaml
|
|
59
|
+
---
|
|
60
|
+
name: <name>
|
|
61
|
+
description: <description>
|
|
62
|
+
triggers:
|
|
63
|
+
- <trigger1>
|
|
64
|
+
- <trigger2>
|
|
65
|
+
argument-hint: "<args>"
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
# <Name> Skill
|
|
69
|
+
|
|
70
|
+
## Purpose
|
|
71
|
+
|
|
72
|
+
[Describe what this skill does]
|
|
73
|
+
|
|
74
|
+
## When to Activate
|
|
75
|
+
|
|
76
|
+
[Describe triggers and conditions]
|
|
77
|
+
|
|
78
|
+
## Workflow
|
|
79
|
+
|
|
80
|
+
1. [Step 1]
|
|
81
|
+
2. [Step 2]
|
|
82
|
+
3. [Step 3]
|
|
83
|
+
|
|
84
|
+
## Examples
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
/oh-my-claudecode:<name> example-arg
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Notes
|
|
91
|
+
|
|
92
|
+
[Additional context, edge cases, gotchas]
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
7. **Report success** with file path
|
|
96
|
+
8. **Suggest:** "Edit `/skill edit <name>` to customize content"
|
|
97
|
+
|
|
98
|
+
**Example:**
|
|
99
|
+
```
|
|
100
|
+
User: /skill add custom-logger
|
|
101
|
+
Assistant: Creating new skill 'custom-logger'...
|
|
102
|
+
|
|
103
|
+
Description: Enhanced logging with structured output
|
|
104
|
+
Triggers (comma-separated): log, logger, logging
|
|
105
|
+
Argument hint (optional): <level> [message]
|
|
106
|
+
Scope (user/project): user
|
|
107
|
+
|
|
108
|
+
✓ Created skill at ~/.claude/skills/omc-learned/custom-logger/SKILL.md
|
|
109
|
+
→ Edit with: /skill edit custom-logger
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
### /skill remove <name>
|
|
115
|
+
|
|
116
|
+
Remove a skill by name.
|
|
117
|
+
|
|
118
|
+
**Behavior:**
|
|
119
|
+
1. **Search for skill** in both scopes:
|
|
120
|
+
- `~/.claude/skills/omc-learned/<name>/SKILL.md`
|
|
121
|
+
- `.omc/skills/<name>/SKILL.md`
|
|
122
|
+
2. **If found:**
|
|
123
|
+
- Display skill info (name, description, scope)
|
|
124
|
+
- **Ask for confirmation:** "Delete '<name>' skill from <scope>? (yes/no)"
|
|
125
|
+
3. **If confirmed:**
|
|
126
|
+
- Delete entire skill directory (e.g., `~/.claude/skills/omc-learned/<name>/`)
|
|
127
|
+
- Report: "✓ Removed skill '<name>' from <scope>"
|
|
128
|
+
4. **If not found:**
|
|
129
|
+
- Report: "✗ Skill '<name>' not found in user or project scope"
|
|
130
|
+
|
|
131
|
+
**Safety:** Never delete without explicit user confirmation.
|
|
132
|
+
|
|
133
|
+
**Example:**
|
|
134
|
+
```
|
|
135
|
+
User: /skill remove old-logger
|
|
136
|
+
Assistant: Found skill 'old-logger' in user scope:
|
|
137
|
+
Description: Legacy logging utility
|
|
138
|
+
Scope: user (~/.claude/skills/omc-learned/)
|
|
139
|
+
|
|
140
|
+
Delete 'old-logger' skill? (yes/no)
|
|
141
|
+
|
|
142
|
+
User: yes
|
|
143
|
+
Assistant: ✓ Removed skill 'old-logger' from user scope
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
### /skill edit <name>
|
|
149
|
+
|
|
150
|
+
Edit an existing skill interactively.
|
|
151
|
+
|
|
152
|
+
**Behavior:**
|
|
153
|
+
1. **Find skill** by name (search both scopes)
|
|
154
|
+
2. **Read current content** via Read tool
|
|
155
|
+
3. **Display current values:**
|
|
156
|
+
```
|
|
157
|
+
Current skill 'custom-logger':
|
|
158
|
+
- Description: Enhanced logging with structured output
|
|
159
|
+
- Triggers: log, logger, logging
|
|
160
|
+
- Argument hint: <level> [message]
|
|
161
|
+
- Scope: user
|
|
162
|
+
```
|
|
163
|
+
4. **Ask what to change:**
|
|
164
|
+
- `description` - Update description
|
|
165
|
+
- `triggers` - Update trigger keywords
|
|
166
|
+
- `argument-hint` - Update argument hint
|
|
167
|
+
- `content` - Edit full markdown content
|
|
168
|
+
- `rename` - Rename skill (move file)
|
|
169
|
+
- `cancel` - Exit without changes
|
|
170
|
+
5. **For selected field:**
|
|
171
|
+
- Show current value
|
|
172
|
+
- Ask for new value
|
|
173
|
+
- Update YAML frontmatter or content
|
|
174
|
+
- Write back to file
|
|
175
|
+
6. **Report success** with summary of changes
|
|
176
|
+
|
|
177
|
+
**Example:**
|
|
178
|
+
```
|
|
179
|
+
User: /skill edit custom-logger
|
|
180
|
+
Assistant: Current skill 'custom-logger':
|
|
181
|
+
- Description: Enhanced logging with structured output
|
|
182
|
+
- Triggers: log, logger, logging
|
|
183
|
+
- Argument hint: <level> [message]
|
|
184
|
+
|
|
185
|
+
What would you like to edit? (description/triggers/argument-hint/content/rename/cancel)
|
|
186
|
+
|
|
187
|
+
User: triggers
|
|
188
|
+
Assistant: Current triggers: log, logger, logging
|
|
189
|
+
New triggers (comma-separated): log, logger, logging, trace
|
|
190
|
+
|
|
191
|
+
✓ Updated triggers for 'custom-logger'
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
### /skill search <query>
|
|
197
|
+
|
|
198
|
+
Search skills by content, triggers, name, or description.
|
|
199
|
+
|
|
200
|
+
**Behavior:**
|
|
201
|
+
1. **Scan all skills** in both scopes
|
|
202
|
+
2. **Match query** (case-insensitive) against:
|
|
203
|
+
- Skill name
|
|
204
|
+
- Description
|
|
205
|
+
- Triggers
|
|
206
|
+
- Full markdown content
|
|
207
|
+
3. **Display matches** with context:
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
Found 3 skills matching "typescript error":
|
|
211
|
+
|
|
212
|
+
1. typescript-fixer (user)
|
|
213
|
+
Description: Fix common TypeScript errors
|
|
214
|
+
Match: "typescript error handling patterns"
|
|
215
|
+
|
|
216
|
+
2. error-handler (user)
|
|
217
|
+
Description: Generic error handling utilities
|
|
218
|
+
Match: "Supports TypeScript and JavaScript errors"
|
|
219
|
+
|
|
220
|
+
3. lint-fix (project)
|
|
221
|
+
Description: Auto-fix linting errors
|
|
222
|
+
Match: "TypeScript ESLint error resolution"
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
**Ranking:** Prioritize matches in name/triggers over content matches
|
|
226
|
+
|
|
227
|
+
**Example:**
|
|
228
|
+
```
|
|
229
|
+
User: /skill search api endpoint
|
|
230
|
+
Assistant: Found 2 skills matching "api endpoint":
|
|
231
|
+
|
|
232
|
+
1. api-builder (user)
|
|
233
|
+
Description: Generate REST API endpoints
|
|
234
|
+
Triggers: api, endpoint, rest
|
|
235
|
+
|
|
236
|
+
2. backend-scaffold (project)
|
|
237
|
+
Description: Scaffold backend services
|
|
238
|
+
Match: "Creates API endpoint boilerplate"
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
### /skill info <name>
|
|
244
|
+
|
|
245
|
+
Show detailed information about a skill.
|
|
246
|
+
|
|
247
|
+
**Behavior:**
|
|
248
|
+
1. **Find skill** by name (search both scopes)
|
|
249
|
+
2. **Parse YAML frontmatter** and content
|
|
250
|
+
3. **Display complete details:**
|
|
251
|
+
|
|
252
|
+
```
|
|
253
|
+
Skill: custom-logger
|
|
254
|
+
Scope: user (~/.claude/skills/omc-learned/custom-logger/)
|
|
255
|
+
Description: Enhanced logging with structured output
|
|
256
|
+
Triggers: log, logger, logging
|
|
257
|
+
Argument Hint: <level> [message]
|
|
258
|
+
Quality: 95% (if available)
|
|
259
|
+
Usage Count: 42 times (if available)
|
|
260
|
+
File Path: /home/user/.claude/skills/omc-learned/custom-logger/SKILL.md
|
|
261
|
+
|
|
262
|
+
--- FULL CONTENT ---
|
|
263
|
+
[entire markdown content]
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
**If not found:** Report error with suggestion to use `/skill search`
|
|
267
|
+
|
|
268
|
+
**Example:**
|
|
269
|
+
```
|
|
270
|
+
User: /skill info custom-logger
|
|
271
|
+
Assistant: Skill: custom-logger
|
|
272
|
+
Scope: user
|
|
273
|
+
Description: Enhanced logging with structured output
|
|
274
|
+
Triggers: log, logger, logging
|
|
275
|
+
File: ~/.claude/skills/omc-learned/custom-logger/SKILL.md
|
|
276
|
+
|
|
277
|
+
--- CONTENT ---
|
|
278
|
+
# Custom Logger Skill
|
|
279
|
+
|
|
280
|
+
## Purpose
|
|
281
|
+
Enhanced logging with structured JSON output...
|
|
282
|
+
[rest of content]
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
### /skill sync
|
|
288
|
+
|
|
289
|
+
Sync skills between user and project scopes.
|
|
290
|
+
|
|
291
|
+
**Behavior:**
|
|
292
|
+
1. **Scan both scopes:**
|
|
293
|
+
- User skills: `~/.claude/skills/omc-learned/`
|
|
294
|
+
- Project skills: `.omc/skills/`
|
|
295
|
+
2. **Compare and categorize:**
|
|
296
|
+
- User-only skills (not in project)
|
|
297
|
+
- Project-only skills (not in user)
|
|
298
|
+
- Common skills (in both)
|
|
299
|
+
3. **Display sync opportunities:**
|
|
300
|
+
|
|
301
|
+
```
|
|
302
|
+
SYNC REPORT:
|
|
303
|
+
|
|
304
|
+
User-only skills (5):
|
|
305
|
+
- error-handler
|
|
306
|
+
- api-builder
|
|
307
|
+
- custom-logger
|
|
308
|
+
- test-generator
|
|
309
|
+
- deploy-helper
|
|
310
|
+
|
|
311
|
+
Project-only skills (2):
|
|
312
|
+
- test-runner
|
|
313
|
+
- backend-scaffold
|
|
314
|
+
|
|
315
|
+
Common skills (3):
|
|
316
|
+
- frontend-ui-ux
|
|
317
|
+
- git-master
|
|
318
|
+
- planner
|
|
319
|
+
|
|
320
|
+
Options:
|
|
321
|
+
[1] Copy user skill to project
|
|
322
|
+
[2] Copy project skill to user
|
|
323
|
+
[3] View differences
|
|
324
|
+
[4] Cancel
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
4. **Handle user choice:**
|
|
328
|
+
- Option 1: Select skill(s) to copy to project
|
|
329
|
+
- Option 2: Select skill(s) to copy to user
|
|
330
|
+
- Option 3: Show side-by-side diff for common skills
|
|
331
|
+
- Option 4: Exit
|
|
332
|
+
|
|
333
|
+
**Safety:** Never overwrite without confirmation
|
|
334
|
+
|
|
335
|
+
**Example:**
|
|
336
|
+
```
|
|
337
|
+
User: /skill sync
|
|
338
|
+
Assistant: Found 5 user-only skills and 2 project-only skills.
|
|
339
|
+
|
|
340
|
+
Copy 'error-handler' from user to project? (yes/no/skip)
|
|
341
|
+
User: yes
|
|
342
|
+
Assistant: ✓ Copied 'error-handler' to .omc/skills/
|
|
343
|
+
|
|
344
|
+
Copy 'api-builder' from user to project? (yes/no/skip)
|
|
345
|
+
User: skip
|
|
346
|
+
...
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## Error Handling
|
|
352
|
+
|
|
353
|
+
**All commands must handle:**
|
|
354
|
+
- File/directory doesn't exist
|
|
355
|
+
- Permission errors
|
|
356
|
+
- Invalid YAML frontmatter
|
|
357
|
+
- Duplicate skill names
|
|
358
|
+
- Invalid skill names (spaces, special chars)
|
|
359
|
+
|
|
360
|
+
**Error format:**
|
|
361
|
+
```
|
|
362
|
+
✗ Error: <clear message>
|
|
363
|
+
→ Suggestion: <helpful next step>
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
## Usage Examples
|
|
367
|
+
|
|
368
|
+
```bash
|
|
369
|
+
# List all skills
|
|
370
|
+
/skill list
|
|
371
|
+
|
|
372
|
+
# Create a new skill
|
|
373
|
+
/skill add my-custom-skill
|
|
374
|
+
|
|
375
|
+
# Remove a skill
|
|
376
|
+
/skill remove old-skill
|
|
377
|
+
|
|
378
|
+
# Edit existing skill
|
|
379
|
+
/skill edit error-handler
|
|
380
|
+
|
|
381
|
+
# Search for skills
|
|
382
|
+
/skill search typescript error
|
|
383
|
+
|
|
384
|
+
# Get detailed info
|
|
385
|
+
/skill info my-custom-skill
|
|
386
|
+
|
|
387
|
+
# Sync between scopes
|
|
388
|
+
/skill sync
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
## Implementation Notes
|
|
392
|
+
|
|
393
|
+
1. **YAML Parsing:** Use frontmatter extraction for metadata
|
|
394
|
+
2. **File Operations:** Use Read/Write tools, never Edit for new files
|
|
395
|
+
3. **User Confirmation:** Always confirm destructive operations
|
|
396
|
+
4. **Clear Feedback:** Use checkmarks (✓), crosses (✗), arrows (→) for clarity
|
|
397
|
+
5. **Scope Resolution:** Always check both user and project scopes
|
|
398
|
+
6. **Validation:** Enforce naming conventions (lowercase, hyphens only)
|
|
399
|
+
|
|
400
|
+
## Future Enhancements
|
|
401
|
+
|
|
402
|
+
- `/skill export <name>` - Export skill as shareable file
|
|
403
|
+
- `/skill import <file>` - Import skill from file
|
|
404
|
+
- `/skill stats` - Show usage statistics across all skills
|
|
405
|
+
- `/skill validate` - Check all skills for format errors
|
|
406
|
+
- `/skill template <type>` - Create from predefined templates
|