Install
openclaw skills install @thomaszhou22/skill-compassDiagnose, fix, and prevent agent skill trigger failures. Use when a skill doesn't activate, when skills trigger incorrectly, when troubleshooting "skill not working" issues, when auditing skill descriptions for quality, when optimizing trigger accuracy, or when asked "why didn't my skill fire?". Also use proactively after installing new skills or when agent behavior seems to ignore available skills. Covers description optimization, YAML frontmatter validation, token budget analysis, conflict detection, and auto-remediation.
openclaw skills install @thomaszhou22/skill-compassDiagnose and fix skill triggering failures across AI agent ecosystems (OpenClaw, Claude Code, and compatible agentskills.io platforms).
When this skill is first installed (no prior onboarding record), or when the user says "check my skills" / "audit skills" for the first time:
Run the audit script to collect data:
python3 scripts/audit_skills.py --skills-dir <path> --json
Show the user a summary report:
📊 Skill Ecosystem Health Report
Total skills: X
✅ Healthy: Y
⚠️ Needs attention: Z
❌ Broken: W
Token budget: XXXX / 30000 chars (NN% used)
Issues found:
• N skills with low description scores (<70)
• N skills with YAML format errors
• N skills with trigger conflicts
• N skills not discoverable
"I found X issues across your skills. Want me to fix them automatically? I can also walk you through each one manually."
--fix flag, then re-audit to verifyIf any skills have overlapping trigger keywords (>40% overlap), flag them:
⚠️ Trigger Conflict:
- skill-a vs skill-b (55% keyword overlap)
Suggested fix: Add negative constraints to disambiguate
If total description chars > 25,000 (83% of budget): "Your skill descriptions are using NN% of the token budget. Consider tightening descriptions to <150 chars each to prevent skills from being silently dropped."
Mark onboarding as complete. On subsequent activations, skip the overview and go straight to the audit workflow unless the user asks for a full report again.
65% of skills fail to trigger due to preventable description issues (GitHub #43410). This skill systematically detects and fixes those issues.
When a skill fails to trigger, check these causes in order (most common first):
Bad: "Helps with documents." — no trigger, just capability
Good: "Use when the user asks to extract form fields, fill, redact, or parse tables from a PDF file."
Fix: Rewrite using the Description Design Pattern below.
Common breakages:
name: or description: fieldFix: Run scripts/audit_skills.py to detect format errors automatically.
When total description text exceeds the agent's character budget, skills get silently dropped from context.
Symptoms: Skill works alone but stops triggering after installing more skills.
Fix: Tighten every description to <150 chars. Set SLASH_COMMAND_TOOL_CHAR_BUDGET=30000 if >3 skills.
~/.openclaw/skills/, <workspace>/skills/, or ~/.openclaw/workspace/skills/)sessionTarget: "main")Fix: Run scripts/audit_skills.py --paths to verify discovery status.
Fix: Use the Conflict Detection section below.
Based on 650-trial activation study (Ivan Seleznov, 2026) and agentskills.io best practices.
[Trigger condition] + [Negative constraint] + [Capability declaration] + [Search vocabulary]
Example:
Use when creating, editing, or auditing PowerPoint presentations (.pptx).
Do NOT use for Google Slides, Keynote, or general document editing.
Covers layouts, placeholders, charts, notes, and visual QA.
Triggers on: PPT, PPTX, slides, deck, presentation, 幻灯片, 演示文稿.
| Style | Activation Rate | Example |
|---|---|---|
Directive (ALWAYS invoke when...) | ~100% | "ALWAYS invoke when the user asks about weather, temperature, or forecasts. Do not attempt weather lookups without this skill." |
Descriptive (Helps with...) | ~37% | "Helps with weather information." |
Negative constraints are the single most effective way to prevent false activations. They tell the agent what this skill does NOT do, reducing ambiguity when multiple skills overlap.
Without them, a "search" skill might trigger for code search, file search, and web search. With them:
// Good — clear boundary
"Use when the user asks to search the web. Do NOT use for searching local files, code, or GitHub issues."
// Bad — no boundary
"Use when the user asks to search for information online."
Use these fill-in-the-blank templates:
| Template | When to Use | Example |
|---|---|---|
Do NOT use for [adjacent domain]. | Two skills cover similar verbs on different targets | Do NOT use for PDF editing or document creation. |
Not for [common false trigger phrase]. | Users often phrase requests ambiguously | Not for creating new presentations from scratch. |
Do NOT invoke when [specific condition]. | Skill has prerequisites or constraints | Do NOT invoke when the user only wants to read (not edit) the file. |
This skill does NOT handle [capability]. Use [other skill name] instead. | Direct hand-off to another skill | This skill does NOT handle image generation. Use the image_generate tool instead. |
For each skill, ask:
If the answer to any question is yes, add a negative constraint.
Before (no negatives):
Helps with Feishu document operations.
After (with negatives):
Use for Feishu document read/write operations (docx). Do NOT use for knowledge base navigation (use feishu-wiki), permission management (use feishu-perm), or cloud storage file management (use feishu-drive).
Before:
Guides systematic root-cause debugging.
After:
Use when tests fail, builds break, or errors occur. Do NOT use for code review, feature implementation, or performance optimization — those have dedicated skills.
python3 scripts/audit_skills.py --skills-dir <path> [--json] [--fix]
The script checks:
For skills scoring below 70/100, review against the Description Design Pattern above.
Use --fix flag for auto-remediation of common issues:
After fixing, restart the agent session and test with natural language triggers.
When multiple skills could match the same query, the agent may pick the wrong one.
Detection rules:
Fix: Add negative constraints to each skill: "Do NOT use for [the other skill's domain]."
For detailed case studies and solutions from community reports, read references/failure-patterns.md.
Agent systems load all skill descriptions into context at startup. When the total exceeds the budget:
Guidelines:
After fixing descriptions, collect real failure cases:
scripts/analyze_failures.py to identify patternsThis creates a feedback loop that continuously improves trigger accuracy.
When skill count grows beyond ~15, flat matching degrades. Hierarchical routing solves this by grouping skills into categories and using two-stage dispatch:
User query
↓
Layer 1: Category matching ("Is this about coding? documents? system?")
↓
Layer 2: Skill matching within winning category ("Which coding skill?")
Add an optional category field to each skill's YAML frontmatter:
---
name: github
category: coding
description: Use when the user asks to interact with GitHub...
---
| Category | Covers |
|---|---|
coding | GitHub, code review, git workflow, debugging, implementation |
documents | Feishu docs, PPTX, PDF, README, writing |
system | Healthcheck, node-connect, auto-updater, security |
communication | Multi-search, weather, translations |
creative | Image generation, music, video, prompt optimization |
meta | Skill compass, skill creator, skill vetter, onboarding |
Skills without a category field are placed in uncategorized and matched in the flat pool.
category field)python3 scripts/audit_skills.py --routing --skills-dir <path>
This outputs:
For detailed routing strategies and multi-level hierarchies, see references/hierarchical-routing.md.