Skip to content

feat(opencode): skills and commands surface via the native skill tool #320

Description

@thewrz

This was written agentically; verify its assertions:

Why

Agent-kit's operator surface is its skills (/parallel-issues, /pr-to-green, /review-remote-pr, /onboard-repo). OpenCode has native SKILL.md support (a skill tool) and a Claude-compatible discovery path — so most of the work is placement and invocation ergonomics, not translation.

What

  • Skills discovery: make the built plugin's agentkit/skills/*/SKILL.md tree visible to OpenCode. Verified options, decided at implementation with a test: ship .opencode/skills/<name>/SKILL.md entries in the built artifact, or document a Claude-compatible path (.claude/skills/) the installer symlinks. Constraint check: skill name must be lowercase-alphanumeric-hyphen ≤64 and match its directory; agent-kit skill frontmatter (name, description) must satisfy OpenCode's required fields (description ≤1024) — add a lint if any skill violates them.
  • Commands: ship .opencode/commands/ definitions for the four operator skills, each template instructing invocation of the corresponding skill via the native skill tool with $ARGUMENTS passed through (e.g. /parallel-issues 301 305 307 --yolo). Frontmatter agent left to the default build agent unless a slice-6 worker agent is warranted.
  • Flag fidelity: templates must pass arguments verbatim — the skills' own flag parsing (--yolo, --fast-mode, --auto-review, --auto-serialize) stays authoritative.
  • README: how a user invokes each command in the TUI.

Acceptance

  • On an onboarded repo under OpenCode, the skill tool lists the agent-kit skills with correct name/description pairs
  • /parallel-issues-equivalent command reaches the skill with arguments intact (transcript evidence in PR)
  • Skill-name/description constraint lint in the test suite; current skills pass
  • No duplication of skill bytes between harness surfaces beyond what build-plugin.sh already copies
  • Unit tests pass; CI green

Blocked by the contract-injection slice (S3).

🤖 Co-authored by Claude Fable 5.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/skillsThe three skills and their proceduresenhancementNew feature or requestp2Wanted before public release

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions