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

> Understand automatic vs user-invocable skills in knowledge work plugins. Learn how the user-invocable flag in SKILL.md controls Claude's implicit or explicit skill loading.

- Repository: [Anthropic/knowledge-work-plugins](https://github.com/anthropics/knowledge-work-plugins)
- Tags: deep-dive
- Published: 2026-05-30

---

**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`](https://github.com/anthropics/knowledge-work-plugins/blob/main/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?”

```yaml
---
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`](https://github.com/anthropics/knowledge-work-plugins/blob/main/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:

```yaml
---
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`](https://github.com/anthropics/knowledge-work-plugins/blob/main/partner-built/apollo/README.md) and [`partner-built/common-room/README.md`](https://github.com/anthropics/knowledge-work-plugins/blob/main/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`](https://github.com/anthropics/knowledge-work-plugins/blob/main/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`](https://github.com/anthropics/knowledge-work-plugins/blob/main/TASKS.md):

```markdown
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:

```markdown
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`](https://github.com/anthropics/knowledge-work-plugins/blob/main/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`](https://github.com/anthropics/knowledge-work-plugins/blob/main/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`](https://github.com/anthropics/knowledge-work-plugins/blob/main/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`](https://github.com/anthropics/knowledge-work-plugins/blob/main/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`](https://github.com/anthropics/knowledge-work-plugins/blob/main/partner-built/apollo/README.md) and [`partner-built/common-room/README.md`](https://github.com/anthropics/knowledge-work-plugins/blob/main/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.