Skip to content

[FEATURE]: Add hidden field to skill frontmatter to exclude skills from agent selection #20473

Closed

Description

@MohamedGamalSalem

Problem

Skills installed globally (e.g., GSD's internal agents like gsd-executor, gsd-debugger, gsd-planner) appear in the <available_skills> list shown to the agent, even though they're only meant to be spawned programmatically by parent commands.

This creates noise in the agent's tool selection and clutters the skill list with internal plumbing that the user never invokes directly.

The only current way to hide skills is via "deny" permissions in opencode.json, but this also blocks programmatic spawning (e.g., via the task tool's subagent_type parameter), breaking frameworks that rely on internal agent composition.

Proposed Solution

Add a hidden boolean field to skill frontmatter:

---
name: gsd-executor
description: Executes GSD plans with atomic commits...
hidden: true
---

Behavior:

  • hidden: true → skill is excluded from the <available_skills> list shown to agents
  • The skill remains loadable when explicitly invoked by name (e.g., skill({ name: "gsd-executor" }) or task(subagent_type: "gsd-executor"))
  • Default is false (visible)

Why This Matters

Many skill frameworks (like GSD) use a modular agent architecture where internal agents are spawned by orchestrator commands. These agents should be invisible to the user's agent selection but still available for programmatic use.

Related

This is distinct from permission.skill: "deny" which blocks access entirely. A hidden field is purely about UI/list visibility, not access control.

Activity

  1. added
    coreAnything pertaining to core functionality of the application (opencode server stuff)
    on Apr 1, 2026
  2. github-actions commented on Apr 1, 2026

    @github-actions
    Contributor

    This issue might be a duplicate of existing issues. Please check:

    If this was submitted twice by mistake, please close one of them.

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

Metadata

Metadata

Assignees

Labels

coreAnything pertaining to core functionality of the application (opencode server stuff)

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions