Slash Commands vs Natural Conversation: When Each Fits

+15 Mana ✨

Introduction

Once a skill is installed, there are two ways the agent can activate it: you can call it explicitly with a slash command, or you can let the agent decide based on what you said. Both work. The choice between them has practical consequences for control, predictability, and conversation flow.

Key Concepts

  • Slash command invocation: Typing /<skill-name> [args] to explicitly activate a skill (e.g., /plan migrate auth).
  • Natural-language activation: The agent reads your message, scans the Level 0 skill index, and chooses to activate a skill on its own.
  • skills_list tool: An internal tool the agent uses to enumerate installed skills.
  • skill_view tool: An internal tool the agent uses to expand a skill's body (Level 1) or a specific file inside it (Level 2).

Real World Context

A developer says help me plan an auth refactor. The agent silently calls skills_list, sees the plan skill is a clean match, calls skill_view(plan) to load the body, and writes a plan under .hermes/plans/. They never typed a slash. The same developer later types /plan billing migration because they want to be sure the plan skill runs (and not, say, a more generic answer). Same skill, two ways in, same output.

Deep Dive

Every installed skill is automatically exposed as a slash command. Slash invocation is just a hint to the agent: it forces the matching skill to activate at the top of the response.

bash
# Slash command (CLI, also works on messaging surfaces)
/gif-search funny cats
/axolotl help me fine-tune Llama 3
/github-pr-workflow create a PR for auth refactor
/plan design a rollout for migrating auth

Natural-language activation is what runs the rest of the time. The agent reads the Level 0 index (just names and descriptions) and reasons about whether any skill is a fit. If yes, it pulls Level 1 with skill_view. If not, it answers from the base prompt and the available tools.

bash
# Natural-language, same skill picked silently
hermes chat -q "What skills do you have?"
hermes chat --toolsets skills -q "Show me the axolotl skill"
hermes chat -q "can you help me fine-tune Llama 3?"

The two patterns have different strengths:

Slash commands are explicit. You know exactly which skill ran. They are good for:

  • Demos and recordings (predictable output).
  • Skills with ambiguous descriptions where the agent might not pick on its own.
  • One-off invocations where you have already decided which workflow you want.
  • Messaging surfaces (Slack, Discord) where you want to share a clean invocation with teammates.

Natural-language activation is flexible. The agent picks based on context. It is good for:

  • Conversational flows where you would not break stride to type /foo.
  • Cases where two skills could plausibly help and you want the agent to choose.
  • Workflows where you want a skill to silently augment a normal answer.

Most sessions blend both. Slash for the first invocation (set the tone), natural-language for follow-ups (the skill is already top-of-mind in context).

Common Pitfalls

  1. Sharp descriptions matter more for natural-language: If you never plan to type /, the agent must select your skill purely on the description. Write the description like the question a user would actually ask.
  2. Over-relying on slash commands: If your team is always typing /skill-name, the descriptions may be too weak. Tighten them so the agent can pick on its own when it matters.

Best Practices

  1. Start with slash, graduate to natural: When testing a new skill, use the slash form. Once you trust the description, drop it and see if the agent still picks.
  2. Document the slash form in your skill body: If your ## When to Use section starts with User types /my-skill or asks about X, both patterns become first-class.

Summary

  • Slash commands explicitly activate a skill; natural-language activation lets the agent pick from the index.
  • Both share the same underlying loading machinery (skills_list, skill_view).
  • Slash is good for explicit control; natural is good for flow.
  • A good description makes both patterns work.

Code Examples

bash
# Slash command (most explicit)
hermes chat -q "/plan migrate auth from JWT to session cookies"

# Natural-language activation of the same skill
hermes chat -q "can you write an implementation plan for migrating our auth from JWT to session cookies?"

# Asking what's available
hermes chat -q "what skills do you have?"

# Inside a messaging surface (Slack, Discord)
# /plan migrate auth
# /gif-search robot dance
✓ Completed