skill
Manage local skills - list, add, remove, search, edit, setup wizard
What this skill does
# Skill Management CLI
Meta-skill for managing oh-my-claudecode skills via CLI-like commands.
## Subcommands
### /skill list
Show all available skills organized by scope.
**Behavior:**
1. Scan bundled built-in skills in the plugin `skills/` directory (read-only)
2. Scan user skills at `${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/`
3. Scan project skills at `.omc/skills/`
4. Parse YAML frontmatter for metadata
5. Display in organized table format:
```
BUILT-IN SKILLS (bundled with oh-my-claudecode):
| Name | Description | Scope |
|-------------------|--------------------------------|----------|
| visual-verdict | Structured visual QA verdicts | built-in |
| ralph | Persistence loop | built-in |
USER SKILLS (~/.claude/skills/omc-learned/):
| Name | Triggers | Quality | Usage | Scope |
|-------------------|--------------------|---------|-------|-------|
| error-handler | fix, error | 95% | 42 | user |
| api-builder | api, endpoint | 88% | 23 | user |
PROJECT SKILLS (.omc/skills/):
| Name | Triggers | Quality | Usage | Scope |
|-------------------|--------------------|---------|-------|---------|
| test-runner | test, run | 92% | 15 | project |
```
**Fallback:** If quality/usage stats not available, show "N/A"
**Built-in skill note:** Built-in skills are bundled with oh-my-claudecode and are discoverable/readable, but not removed or edited through `/skill remove` or `/skill edit`.
---
### /skill add [name]
Interactive wizard for creating a new skill.
**Behavior:**
1. **Ask for skill name** (if not provided in command)
- Validate: lowercase, hyphens only, no spaces
2. **Ask for description**
- Clear, concise one-liner
3. **Ask for triggers** (comma-separated keywords)
- Example: "error, fix, debug"
4. **Ask for argument hint** (optional)
- Example: "<file> [options]"
5. **Ask for scope:**
- `user` → `${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/<name>/SKILL.md`
- `project` → `.omc/skills/<name>/SKILL.md`
6. **Create skill file** with template:
```yaml
---
name: <name>
description: <description>
triggers:
- <trigger1>
- <trigger2>
argument-hint: "<args>"
---
# <Name> Skill
## Purpose
[Describe what this skill does]
## When to Activate
[Describe triggers and conditions]
## Workflow
1. [Step 1]
2. [Step 2]
3. [Step 3]
## Examples
```
/oh-my-claudecode:<name> example-arg
```
## Notes
[Additional context, edge cases, gotchas]
```
7. **Report success** with file path
8. **Suggest:** "Edit `/skill edit <name>` to customize content"
**Example:**
```
User: /skill add custom-logger
Assistant: Creating new skill 'custom-logger'...
Description: Enhanced logging with structured output
Triggers (comma-separated): log, logger, logging
Argument hint (optional): <level> [message]
Scope (user/project): user
✓ Created skill at ~/.claude/skills/omc-learned/custom-logger/SKILL.md
→ Edit with: /skill edit custom-logger
```
---
### /skill remove <name>
Remove a skill by name.
**Behavior:**
1. **Search for skill** in both scopes:
- `${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/<name>/SKILL.md`
- `.omc/skills/<name>/SKILL.md`
2. **If found:**
- Display skill info (name, description, scope)
- **Ask for confirmation:** "Delete '<name>' skill from <scope>? (yes/no)"
3. **If confirmed:**
- Delete entire skill directory (e.g., `${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/<name>/`)
- Report: "✓ Removed skill '<name>' from <scope>"
4. **If not found:**
- Report: "✗ Skill '<name>' not found in user or project scope"
**Safety:** Never delete without explicit user confirmation.
**Example:**
```
User: /skill remove old-logger
Assistant: Found skill 'old-logger' in user scope:
Description: Legacy logging utility
Scope: user (~/.claude/skills/omc-learned/)
Delete 'old-logger' skill? (yes/no)
User: yes
Assistant: ✓ Removed skill 'old-logger' from user scope
```
---
### /skill edit <name>
Edit an existing skill interactively.
**Behavior:**
1. **Find skill** by name (search both scopes)
2. **Read current content** via Read tool
3. **Display current values:**
```
Current skill 'custom-logger':
- Description: Enhanced logging with structured output
- Triggers: log, logger, logging
- Argument hint: <level> [message]
- Scope: user
```
4. **Ask what to change:**
- `description` - Update description
- `triggers` - Update trigger keywords
- `argument-hint` - Update argument hint
- `content` - Edit full markdown content
- `rename` - Rename skill (move file)
- `cancel` - Exit without changes
5. **For selected field:**
- Show current value
- Ask for new value
- Update YAML frontmatter or content
- Write back to file
6. **Report success** with summary of changes
**Example:**
```
User: /skill edit custom-logger
Assistant: Current skill 'custom-logger':
- Description: Enhanced logging with structured output
- Triggers: log, logger, logging
- Argument hint: <level> [message]
What would you like to edit? (description/triggers/argument-hint/content/rename/cancel)
User: triggers
Assistant: Current triggers: log, logger, logging
New triggers (comma-separated): log, logger, logging, trace
✓ Updated triggers for 'custom-logger'
```
---
### /skill search <query>
Search skills by content, triggers, name, or description.
**Behavior:**
1. **Scan all skills** in both scopes
2. **Match query** (case-insensitive) against:
- Skill name
- Description
- Triggers
- Full markdown content
3. **Display matches** with context:
```
Found 3 skills matching "typescript error":
1. typescript-fixer (user)
Description: Fix common TypeScript errors
Match: "typescript error handling patterns"
2. error-handler (user)
Description: Generic error handling utilities
Match: "Supports TypeScript and JavaScript errors"
3. lint-fix (project)
Description: Auto-fix linting errors
Match: "TypeScript ESLint error resolution"
```
**Ranking:** Prioritize matches in name/triggers over content matches
**Example:**
```
User: /skill search api endpoint
Assistant: Found 2 skills matching "api endpoint":
1. api-builder (user)
Description: Generate REST API endpoints
Triggers: api, endpoint, rest
2. backend-scaffold (project)
Description: Scaffold backend services
Match: "Creates API endpoint boilerplate"
```
---
### /skill info <name>
Show detailed information about a skill.
**Behavior:**
1. **Find skill** by name (search both scopes)
2. **Parse YAML frontmatter** and content
3. **Display complete details:**
```
Skill: custom-logger
Scope: user (~/.claude/skills/omc-learned/custom-logger/)
Description: Enhanced logging with structured output
Triggers: log, logger, logging
Argument Hint: <level> [message]
Quality: 95% (if available)
Usage Count: 42 times (if available)
File Path: /home/user/.claude/skills/omc-learned/custom-logger/SKILL.md
--- FULL CONTENT ---
[entire markdown content]
```
**If not found:** Report error with suggestion to use `/skill search`
**Example:**
```
User: /skill info custom-logger
Assistant: Skill: custom-logger
Scope: user
Description: Enhanced logging with structured output
Triggers: log, logger, logging
File: ~/.claude/skills/omc-learned/custom-logger/SKILL.md
--- CONTENT ---
# Custom Logger Skill
## Purpose
Enhanced logging with structured JSON output...
[rest of content]
```
---
### /skill sync
Sync skills between user and project scopes.
**Behavior:**
1. **Scan both scopes:**
- User skills: `${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/`
- Project skills: `.omc/skills/`
2. **Compare and categorize:**
- User-only skills (not in project)
- Project-only skills (not in user)
- Common skills (in both)
3. **Display sync opportunities:**
```
SYNC REPORT:
User-only skills (5):
- error-handler
- aRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.