# 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.

- Skill: `majiayu000/oc-create-skill` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/oc-create-skill`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/oc-create-skill/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/oc-create-skill

---


# 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.

