Automatic vs User‑Invocable Skills: What’s the Difference in Knowledge Work Plugins

The difference between automatic and user‑invocable skills is controlled by the user‑invocable boolean flag in a SKILL.md file’s YAML front‑matter: when set to false, Claude implicitly loads the skill based on conversational intent; when set to true, the user must explicitly trigger the skill via a slash command.

In the anthropics/knowledge-work-plugins repository, skills are self‑contained workflows defined by markdown files named SKILL.md. These files contain YAML front‑matter metadata that tells the Instagit runtime how and when to execute the workflow. Understanding the distinction between automatic and user‑invocable execution modes is essential for designing safe, intuitive AI‑assisted automations.

Execution Modes and the user‑invocable Flag

Every SKILL.md begins with a YAML block that declares the skill’s behavior. The user‑invocable key is the primary determinant of how the skill is triggered.

Automatic Skills (Implicit Loading)

When user‑invocable is set to false, the skill runs automatically. The Chat model (Claude) scans the user’s utterance for intents that match the skill’s description. If a match is detected, Instagit loads the skill implicitly and executes its steps without requiring a slash command.

Automatic skills are ideal for repetitive look‑ups, data pulls, or context enrichments. For example, in productivity/skills/task-management/SKILL.md, the flag is set to false, allowing Claude to surface task information immediately when a user asks, “What are my tasks today?”

---
name: task-management
description: Simple task management …
user-invocable: false   # ← automatic

---

Because they are not exposed as slash commands, automatic skills support chaining—one skill can invoke another without user interaction, as referenced in the Zoom plugin’s architecture.

User‑Invocable Skills (Explicit Commands)

When user‑invocable is set to true, the skill is registered as a public slash command (/plugin:skill-name). Execution only begins after the user explicitly issues the command, giving full control over when the workflow runs.

This mode is used for actions that modify external systems, send emails, or incur costs. In partner-built/apollo/skills/sequence-load/SKILL.md, the flag is set to true, requiring the user to type /apollo:sequence-load to trigger lead loading:

---
name: sequence-load
description: "Find leads …"
user-invocable: true    # ← user‑invocable

---

Architectural Implementation

The distinction is enforced at the runtime level. According to the source code in the partner-built/apollo/README.md and partner-built/common-room/README.md, the Instagit runtime reads the YAML front‑matter during plugin initialization. If user‑invocable: true, the system registers the command in the UI’s slash‑command palette; if false, the skill remains hidden from the command list but available for intent‑based matching.

The partner-built/zoom-plugin/CONTRIBUTING.md explicitly mentions maintaining the user‑invocable field when adding new skills, indicating this metadata is a required part of the plugin contract.

Practical Code Examples

Automatic Skill Trigger

When a user asks a question that matches the task‑management skill’s intent, Claude automatically loads the skill and reads TASKS.md:

User: “What tasks do I have today?”

The skill’s logic (defined at lines 55‑61 of the file) executes immediately, returning:


You have 3 active tasks:
1. Review quarterly report – due Mar 15
2. Draft the Q2 newsletter – due Mar 20
3. Follow up with the design team – due today

User‑Invocable Skill Trigger

For the Apollo sequence‑load skill, the user must explicitly invoke the command:

User: /apollo:sequence-load add 20 VP Sales at SaaS companies to my "Q1 Outbound" sequence

Instagit routes the command to the skill, which parses the arguments, calls the Apollo MCP endpoints, and asks for confirmation before creating contacts (see steps 4‑5 in partner-built/apollo/skills/sequence-load/SKILL.md).

Mixed Mode: Automatic Preview with User‑Invocable Confirmation

An automatic skill may present a preview and then delegate the final action to a user‑invocable follow‑up:


Claude (auto): I found 12 leads that match your criteria.  
Do you want to add them to a sequence?  
→ Run `/apollo:sequence-load …` to proceed.

This pattern combines the convenience of automatic detection with the safety of explicit user confirmation.

Why the Distinction Matters

Safety and confirmation – Skills that mutate external state or incur financial costs should be user‑invocable (or request confirmation after an automatic trigger) to prevent accidental execution.

User experience – Informational skills that only read data should be automatic to minimize friction and allow Claude to proactively assist without requiring users to memorize slash commands.

Summary

  • Automatic skills (user‑invocable: false) are triggered by conversational intent matching and require no slash command; they are defined in files like productivity/skills/task-management/SKILL.md.
  • User‑invocable skills (user‑invocable: true) require explicit slash‑command invocation and are defined in files like partner-built/apollo/skills/sequence-load/SKILL.md.
  • The flag resides in the YAML front‑matter of every SKILL.md and is parsed by the Instagit runtime during plugin initialization.
  • Automatic skills can chain together implicitly, while user‑invocable skills provide explicit control over sensitive operations.

Frequently Asked Questions

How do I configure a skill to be automatic versus user‑invocable?

Set the user‑invocable boolean in the SKILL.md YAML front‑matter. Use user‑invocable: false for automatic intent‑based triggering, or user‑invocable: true to expose the skill as a slash command. This configuration is read by the Instagit runtime when loading plugins from directories like partner-built/apollo/skills/.

Can automatic skills invoke other skills automatically?

Yes. Because automatic skills are not bound to explicit slash commands, they can chain together—one skill can invoke another without user interaction. This behavior is referenced in the partner-built/zoom-plugin/CONTRIBUTING.md documentation regarding automatic skill chaining.

Should skills that modify external data always be user‑invocable?

Generally yes. Skills that send emails, create database records, or incur API costs should set user‑invocable: true (or implement a confirmation step) to ensure the user explicitly consents to the action. The Apollo sequence‑load skill demonstrates this pattern by requiring explicit invocation before creating contacts.

Where does the Instagit runtime check the user‑invocable flag?

The runtime checks the YAML front‑matter during plugin discovery and initialization, as described in partner-built/apollo/README.md and partner-built/common-room/README.md. The flag determines whether the skill is registered in the UI’s command palette or reserved for intent‑based matching.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →