Skip to content

SOP 004: Control Invocation

Fresh
FieldValue
SOP ID004
Version1.0
StatusActive
Last Updated2026-02-14

Purpose

Control who can trigger a skill - you, Claude, or both - and manage context loading behavior.

Decision Flowchart

Invocation Matrix

FrontmatterYou can invokeClaude can invokeWhen loaded into context
(default)YesYesDescription always in context, full skill loads when invoked
disable-model-invocation: trueYesNoDescription NOT in context, full skill loads when you invoke
user-invocable: falseNoYesDescription always in context, full skill loads when invoked

Procedure

Step 1: Identify the Use Case

When to disable model invocation

Use disable-model-invocation: true for workflows with side effects:

  • /deploy - you control when to deploy
  • /commit - you decide when to commit
  • /send-slack-message - you choose when to send

When to hide from users

Use user-invocable: false for background knowledge:

  • legacy-system-context - explains old systems
  • api-conventions - coding standards
  • Claude should know these but /legacy-system-context isn't meaningful as a command

Step 2: Configure Frontmatter

User-only (deploy):

yaml
---
name: deploy
description: Deploy the application to production
disable-model-invocation: true
---

Deploy $ARGUMENTS to production:
1. Run the test suite
2. Build the application
3. Push to the deployment target
4. Verify the deployment succeeded

Claude-only (background knowledge):

yaml
---
name: legacy-system-context
description: How the legacy billing system works
user-invocable: false
---

The legacy billing system uses...

Step 3: Restrict Skill Access via Permissions

Three levels of control:

Disable all skills:

# Add to deny rules in /permissions:
Skill

Allow/deny specific skills:

# Allow only specific skills
Skill(commit)
Skill(review-pr *)

# Deny specific skills
Skill(deploy *)

Per-skill control:

yaml
# In SKILL.md frontmatter
disable-model-invocation: true

Important

user-invocable only controls menu visibility, not Skill tool access. Use disable-model-invocation: true to block programmatic invocation.

Verification Checklist

  • [ ] Invocation pattern matches the intended use case
  • [ ] Side-effect skills have disable-model-invocation: true
  • [ ] Background knowledge skills have user-invocable: false
  • [ ] Permission rules configured if additional restrictions needed
  • [ ] Tested both automatic and manual invocation patterns

See Also

Built with VitePress + Claude Code Skills RAG Chat