# Did your coding-agent skill actually load? A five-minute test

> Separate skill discovery, invocation, and useful execution with an explicit test, a natural-language test, and one negative control.

Canonical HTML: https://canopyide.dev/guides/check-if-coding-agent-skill-loaded
Article date: 2026-09-28

An agent can give a plausible answer without ever opening the skill you expected it to use. Test three different questions: was the skill available in this session, did the CLI invoke it, and did the resulting work follow its instructions? A good test uses a disposable task with an outcome you can inspect.

## Start with one skill and one harmless result

Pick a skill with a narrow trigger and a visible action, such as writing a review note for a tiny sample diff. Read its SKILL.md and any scripts before the trial. Record its path, name, description, intended CLI, and the expected output. Use a scratch repository or a read-only review request so a failed test cannot alter important work. In Canopy, open the exact project and a fresh supported CLI session; note the CLI version, account profile, working directory, and checkout. Canopy supplies the terminal and project evidence, while the CLI decides which skills it discovers and invokes.

## Test discovery separately from invocation

First ask the CLI which skills are available or inspect its own skill menu, then confirm the expected name and description appear. Claude Code documents project skills under .claude/skills and personal skills under ~/.claude/skills; its troubleshooting guide says to ask 'What skills are available?' when a skill will not trigger. Codex's official skill guidance describes repo-scoped .codex/skills and user-scoped skills. A file that exists in a repository but is absent from the session's discovered list is a path, scope, or loading problem; changing the task prompt alone will not prove the skill was present. Restart a fresh session after changing the skill's location or metadata and repeat the discovery check.

## Run an explicit invocation and inspect the trace

Invoke the skill by the CLI's documented direct mechanism: Claude Code uses /skill-name for a user-invocable skill; Codex guidance describes /skills or a $skill-name reference. Ask for a small result, then inspect the visible skill invocation or captured run trace where your CLI provides one. Do not rely only on the agent's final sentence saying it used the skill. Check the artifact and the required steps too: if a review skill asks for file references and a risk-ranked finding, the output should contain those items against the actual sample diff. The CLI may load the skill correctly and still perform it badly.

## Try natural wording and a negative control

Start fresh sessions for two more trials. In one, describe the task without naming the skill; in the other, ask for an adjacent task that should not trigger it. For a PR-review skill, 'review this small diff for user-visible regressions' is a positive case, while 'tell me which branch I am on' is a negative case. Record whether the skill was invoked and whether the output met the same check. OpenAI's skill-evaluation guide recommends explicit, implicit, and negative cases because a single successful slash command tests manual loading, not reliable automatic selection. If the implicit case misses, make the name and description more precise; if the negative case fires, narrow them.

## Keep the result tied to the actual CLI

Claude Code and Codex both use SKILL.md-based workflows, but their discovery paths, invocation syntax, and controls differ. Claude's docs also distinguish a description being visible in context from the full body loading on invocation. A skill in one CLI or profile is not proof it loaded in another. Save the three prompt/result pairs, CLI version, skill path, and observed invocation with the repository or issue. Canopy's session history can help locate the trial later, but the owning CLI's trace and the produced artifact are the evidence for this test. Re-run it after editing frontmatter or moving the skill.

## Copyable resources

### Three-case skill loading card

Use a disposable repository and record what the CLI visibly did, not only what the agent claimed.

````text
CLI, version, profile, and checkout: [ ]
Skill name, SKILL.md path, and description: [ ]
Expected safe artifact and required steps: [ ]
Discovery: skill listed in this fresh session? [yes/no + evidence]
Case 1 explicit prompt: [ ]; invocation observed: [ ]; artifact check: [ ]
Case 2 natural prompt: [ ]; invocation observed: [ ]; artifact check: [ ]
Case 3 adjacent prompt that should not trigger: [ ]; invocation observed: [ ]
Decision: fix location/scope, frontmatter, instructions, or task expectation: [ ]
````

## Frequently asked questions

### Is seeing a skill name in a menu proof it ran?

No. It proves discovery in that session. Inspect the invocation or run trace and the task artifact to determine whether the skill was used and followed.

### Why does a skill work by name but not automatically?

Direct invocation bypasses the selection decision. Test a natural request in a fresh session and refine the skill's name and description if it misses the intended task.

### Will a Claude Code skill automatically load in Codex through Canopy?

No. Canopy hosts each CLI; verify the skill's path, metadata, and invocation in each CLI separately.

## Sources and further reading

- [Official OpenAI documentation: testing Codex skills with explicit, implicit, and negative cases](https://developers.openai.com/blog/eval-skills)
- [Claude Code docs: skill discovery, invocation, and troubleshooting](https://code.claude.com/docs/en/skills)
- [Canopy README: installed CLI sessions and project context](https://github.com/FluidWorksApp/canopy-ide/blob/main/README.md)
- [Public question about verifying skill use](https://www.reddit.com/r/ClaudeAI/comments/1to16rx/how_can_i_check_if_a_skill_was_used_or_not_in/)

## Related Canopy pages

- [Share project instructions across Claude Code and Codex](https://canopyide.dev/guides/share-instructions-skills-mcp-between-claude-code-and-codex.md)
- [MCP server configured but unavailable to your coding agent?](https://canopyide.dev/guides/mcp-server-not-available-to-coding-agent.md)
- [Keep coding-agent context useful between sessions](https://canopyide.dev/guides/keep-agent-context-between-sessions.md)
- [Which coding-agent CLIs work in Canopy, and what differs?](https://canopyide.dev/guides/coding-agent-cli-support-in-canopy.md)
- [Can Claude Code and Codex agents talk to each other in Canopy?](https://canopyide.dev/use-cases/can-claude-code-and-codex-agents-talk-in-canopy.md)

Canopy runs installed coding CLIs; CLI accounts, model selection, and provider billing remain separate. Check the installed release before relying on version-specific behavior.
