# How the Skill Loading Mechanism Works in Claude Code: Auto-Load vs Force Loading

> Explore Claude Code's skill loading mechanism. Learn about auto-load and force loading using simple commands to manage your skills effectively.

- Repository: [Pawel Huryn/pm-skills](https://github.com/phuryn/pm-skills)
- Tags: internals
- Published: 2026-06-12

---

**Claude Code automatically loads skills when trigger phrases match the front-matter in [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) files, and you can bypass this heuristic by force loading with `/skill-name` or `/plugin-name:skill-name` syntax.**

The `phuryn/pm-skills` repository implements a dynamic skill system where Claude discovers and injects specialized knowledge without explicit API calls. Understanding this skill loading mechanism helps you control whether Claude uses automatic trigger detection or explicit force loading to prioritize specific capabilities.

## Automatic Skill Loading Mechanism

Claude Code treats every skill as a noun-oriented concept defined in a [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) file. When your prompt contains text matching a skill's `name` or one of its **triggers** defined in the front-matter, Claude's runtime scans the repository, parses the file, and makes that skill available without requiring explicit invocation.

According to the repository documentation in [`README.md`](https://github.com/phuryn/pm-skills/blob/main/README.md) at line 38: *"Skills are loaded automatically when relevant to the conversation — no explicit invocation needed."*

### How Trigger Matching Works

Each [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) contains a YAML front-matter block specifying a `name` and optional `triggers` array. Claude watches for these strings in your message and, upon detection, pulls in the skill's detailed definition from the body of the markdown file. For example, mentioning *"Porter’s Five Forces"* automatically loads the skill from [`pm-product-strategy/skills/porters-five-forces/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-product-strategy/skills/porters-five-forces/SKILL.md).

### Performance Benefits

Auto-loading maintains a minimal context window by injecting only relevant skills. This selective loading speeds up response generation and prevents token bloat from unused capabilities.

## Force Loading Skills in Claude Code

When Claude’s heuristic fails to detect relevance, or when you need to prioritize specific knowledge over general reasoning, you can **force load** a skill using slash-prefixed syntax.

### Syntax Options

You have two syntax variants for force loading:

- **`/skill-name`** — Claude resolves the correct plugin automatically
- **`/plugin-name:skill-name`** — Explicitly specifies which plugin contains the skill

As documented in [`CLAUDE.md`](https://github.com/phuryn/pm-skills/blob/main/CLAUDE.md) at line 55: *"Skills can be force-loaded with `/plugin-name:skill-name` or `/skill-name`."* The same rule appears in [`README.md`](https://github.com/phuryn/pm-skills/blob/main/README.md) at line 38, noting that Claude will add the prefix automatically when omitted.

### When to Use Force Loading

Force loading is essential when:
- The conversation context is ambiguous and triggers might match multiple skills
- You need to prioritize structured skill knowledge over Claude's general training data
- Two plugins define skills with identical names and you must specify the source

## Implementation Details from the Source Code

The loading pipeline is defined across several key files in the `phuryn/pm-skills` repository:

- **[`README.md`](https://github.com/phuryn/pm-skills/blob/main/README.md)** (line 38): Documents the auto-load behavior and force-load syntax
- **[`CLAUDE.md`](https://github.com/phuryn/pm-skills/blob/main/CLAUDE.md)** (line 55): Provides the Claude-specific reference for manual skill invocation
- **[`pm-product-strategy/skills/porters-five-forces/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-product-strategy/skills/porters-five-forces/SKILL.md)**: Example skill file demonstrating front-matter triggers that enable auto-detection
- **[`pm-product-research/skills/market-sizing/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-product-research/skills/market-sizing/SKILL.md)**: Example skill typically accessed via force loading for market analysis tasks

## Practical Examples

### Automatic Loading via Trigger Phrases

When you naturally mention a concept in your prompt, Claude loads the corresponding skill automatically:

```text
User: "What are the key steps for a Porter’s Five Forces analysis?"
Claude: (detects trigger → loads pm-product-strategy/skills/porters-five-forces/SKILL.md)

```

### Force Loading with Implicit Plugin Resolution

Use the shorthand syntax when you want to guarantee a specific skill loads regardless of trigger detection:

```text
User: "Give me a quick SWOT summary for a SaaS product."
Claude: "/porters-five-forces"

```

The `/porters-five-forces` command forces the skill to activate, bypassing the trigger-matching step entirely.

### Force Loading with Explicit Plugin Prefix

When multiple plugins contain skills with the same name, specify the source plugin:

```text
User: "Run the market-size calculator."
Claude: "/pm-product-research:market-sizing"

```

The `pm-product-research` prefix ensures Claude loads the correct implementation from that specific plugin's skill directory.

### Programmatic Force Loading via API

In automation scripts calling the Claude API, include the force-load command directly in the prompt:

```bash
curl -X POST https://api.anthropic.com/v1/complete \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -d '{
        "prompt": "You are a product manager. /market-sizing",
        "max_tokens": 500,
        "model": "claude-2"
      }'

```

The `/market-sizing` token in the prompt body instructs Claude to load that skill before generating the response.

## Summary

- **Auto-loading** activates when your prompt text matches `name` or `triggers` in a [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) file's front-matter, keeping context windows efficient.
- **Force loading** uses `/skill-name` or `/plugin-name:skill-name` syntax to bypass trigger detection and guarantee specific skill availability.
- Skills are defined in [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) files distributed across plugin directories, with metadata driving the discovery mechanism.
- Force loading is documented in [`README.md`](https://github.com/phuryn/pm-skills/blob/main/README.md) and [`CLAUDE.md`](https://github.com/phuryn/pm-skills/blob/main/CLAUDE.md) as the deterministic method for skill selection when automatic detection is insufficient.

## Frequently Asked Questions

### What file format defines a skill in Claude Code?

Skills are defined in [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) files containing YAML front-matter with `name` and optional `triggers` fields, followed by markdown content describing the skill's implementation. These files reside in plugin-specific skill directories like `pm-product-strategy/skills/[skill-name]/SKILL.md`.

### How do I force load a skill when multiple plugins have the same name?

Use the fully qualified syntax `/plugin-name:skill-name` to specify the exact plugin source. For example, `/pm-product-research:market-sizing` targets the market-sizing skill in the pm-product-research plugin, preventing ambiguity when multiple plugins define similar capabilities.

### Does force loading affect response performance?

Force loading itself has minimal performance impact, but it bypasses the automatic filtering that keeps context windows small. When you force load, you guarantee the skill enters the context, which may slightly increase token usage compared to scenarios where no skills are relevant.

### Where are skill triggers defined?

Triggers are defined in the front-matter of each [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) file alongside the skill's `name`. Claude monitors incoming user prompts for these trigger strings to activate the auto-loading mechanism described in [`README.md`](https://github.com/phuryn/pm-skills/blob/main/README.md) at line 38.