oc-create-skill
Guides through creating a new OpenCode-compatible skill with interactive interview, best-practice enforcement, and validation. Use when user says "create opencode skill", "new opencode skill", "build skill for opencode", or wants to create an OpenCode SKILL.md file.
What this skill does
# Create OpenCode Skill
You are initiating the OpenCode skill creation workflow. This process guides the user through an interactive interview to gather requirements, generates a properly formatted SKILL.md file, and validates the result.
## Critical Rules
### AskUserQuestion is MANDATORY
**IMPORTANT**: You MUST use the `AskUserQuestion` tool for ALL questions to the user. Never ask questions through regular text output.
- Every interview question → AskUserQuestion
- Confirmation questions → AskUserQuestion
- Clarifying questions → AskUserQuestion
Text output should only be used for summaries, explanations, and presenting information.
---
## Phase 1: Load References
Read the OpenCode platform overview and skill guide:
1. Read `${CLAUDE_PLUGIN_ROOT}/references/platform-overview.md`
2. Read `${CLAUDE_PLUGIN_ROOT}/references/skill-guide.md`
Store the reference content internally for use throughout the workflow.
---
## Phase 2: Interview
Gather requirements through a structured interview using `AskUserQuestion`.
### Round 1: Basics
Ask these questions using `AskUserQuestion` (max 4 per call):
**Question 1 — Skill Name:**
- Header: "Skill Name"
- Question: "What should this skill be named? Use kebab-case (e.g., `code-review`, `deploy-check`)."
- Options:
- "I'll type the name" — Let me provide a custom name
**Question 2 — Purpose:**
- Header: "Purpose"
- Question: "What does this skill do? Describe its main function."
- Options:
- "Code analysis" — Analyzes code for patterns, issues, or quality
- "Workflow automation" — Automates a multi-step process
- "Content generation" — Generates code, docs, or other content
**Question 3 — User-Invocable:**
- Header: "Invocable"
- Question: "Should users be able to invoke this skill directly (via `/skill-name`)?"
- Options:
- "Yes (Recommended)" — Users can invoke it from the command dialog
- "No" — Helper skill only loaded by other skills
- multiSelect: false
### Round 2: Details
**Question 1 — Target Audience:**
- Header: "Audience"
- Question: "Who is the primary user of this skill?"
- Options:
- "Developers" — Software developers working on code
- "DevOps/SRE" — Operations and reliability engineers
- "All users" — General-purpose, no specific expertise needed
**Question 2 — Variables:**
- Header: "Variables"
- Question: "Does the skill need user input via $VARIABLE placeholders? (e.g., $FILE_PATH, $TARGET_BRANCH)"
- Options:
- "Yes" — I need specific input values from the user
- "No" — The skill works without user-provided variables
- "Just $ARGUMENTS" — A single free-text argument is enough
- multiSelect: false
**Question 3 — Complexity:**
- Header: "Complexity"
- Question: "How complex is the workflow?"
- Options:
- "Simple" — Single phase, straightforward instructions
- "Multi-phase" — 2-4 distinct phases with clear boundaries
- "Complex" — 5+ phases or spawns subagents via task tool
- multiSelect: false
### Round 3: Content (if multi-phase or complex)
If the user selected multi-phase or complex:
**Question 1 — Phases:**
- Header: "Phases"
- Question: "Describe the main phases of the workflow (what happens in each step)."
- Options:
- "I'll describe them" — Let me explain the phases
**Question 2 — Tools:**
- Header: "Tools"
- Question: "Which tools should the skill primarily use?"
- Options:
- "Read-only" — read, glob, grep only
- "Read + write" — read, glob, grep, write, edit
- "Full access" — All tools including bash
- "Custom" — I'll specify which tools
- multiSelect: false
### Round 4: Location and Metadata
**Question 1 — Location:**
- Header: "Location"
- Question: "Where should the skill be created?"
- Options:
- "Project (.opencode/skills/)" — Available only in this project
- "Global (~/.config/opencode/skills/)" — Available in all projects
- "Custom path" — I'll specify the directory
- multiSelect: false
**Question 2 — Additional metadata:**
- Header: "Metadata"
- Question: "Any additional metadata to include?"
- Options:
- "Add license (MIT)" — Include MIT license field
- "Add compatibility range" — Specify OpenCode version range
- "Skip metadata" — No additional metadata needed
- multiSelect: true
### Interview Summary
After completing the interview rounds, present a summary of the gathered requirements:
```
## Skill Summary
- **Name**: {name}
- **Description**: {generated from purpose + details}
- **User-invocable**: {yes/no}
- **Variables**: {list or "none"}
- **Phases**: {count and brief description}
- **Tools**: {tool set}
- **Location**: {path}
```
Use `AskUserQuestion` to confirm:
- Header: "Confirm"
- Question: "Does this look correct? Ready to generate the skill?"
- Options:
- "Yes, generate it" — Proceed with generation
- "Make changes" — I want to adjust something
If "Make changes", ask what to change and update accordingly.
---
## Phase 3: Generate
Spawn the generator agent to create the skill file:
```
Task:
subagent_type: "agent-alchemy-opencode-tools:oc-generator"
prompt: |
Generate an OpenCode skill with these specifications:
Type: skill
Name: {name}
Description: {description}
User-invocable: {true/false}
Variables: {list of $VARIABLE placeholders}
Phases: {phase descriptions}
Tool guidance: {which tools to use/avoid}
Target path: {target directory}/skills/{name}/SKILL.md
IMPORTANT: The `name` field is REQUIRED in frontmatter. Set it to "{name}" (must match the directory name).
Reference guide: ${CLAUDE_PLUGIN_ROOT}/references/skill-guide.md
Template: ${CLAUDE_PLUGIN_ROOT}/references/templates/skill-template.md
Interview notes:
{all gathered requirements}
```
---
## Phase 4: Validate
Spawn the validator agent to check the generated file:
```
Task:
subagent_type: "agent-alchemy-opencode-tools:oc-validator"
prompt: |
Validate the following OpenCode artifact:
Type: skill
Path: {path to generated file}
Reference guide: ${CLAUDE_PLUGIN_ROOT}/references/skill-guide.md
```
If validation fails with errors, fix the issues and re-validate.
---
## Phase 5: Present
Present the generated skill to the user:
1. Read the generated file
2. Show the file contents with syntax highlighting
3. Explain key design decisions:
- Why certain frontmatter fields were included/excluded
- How phases were structured
- How $VARIABLE placeholders work
4. Show the validation results (pass/warnings)
5. Explain how to invoke the skill: `/{name}` in the OpenCode TUI
**CRITICAL**: Complete ALL 5 phases before finishing.
Related 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.