Auto-loaded at session start via SessionStart hook. Teaches skill invocation protocol, tool selection rules (look-at for media, skills for workflows), agent delegation patterns, and enforcement mechanisms. NOT user-triggered - provides foundational skill usage discipline for all sessions.
/plugin marketplace add edwinhu/workflows/plugin install workflows@edwinhu-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
references/agent-harnessing.mdInvoke relevant skills BEFORE any response or action.
This is non-negotiable. Even a 1% chance a skill applies requires checking.
DO NOT:
Skill(skill="dev") or similarDO INSTEAD:
If you catch yourself about to invoke a skill that's already loaded, STOP. Just go to the next step. </EXTREMELY-IMPORTANT>
User message arrives
↓
Is user explicitly invoking a skill (e.g., "use /dev")?
↓
YES → SKILL IS ALREADY LOADED
↓
DO NOT invoke again with Skill tool
↓
Proceed to next step (follow skill instructions)
NO → Check: Does this match any skill trigger?
↓
YES → Invoke skill FIRST, then follow its protocol
NO → Proceed normally
These are commands, not auto-triggered skills. User must explicitly type the command:
| Command | Purpose | User Types |
|---|---|---|
/dev | Feature development workflow (7 phases) | /dev |
/ds | Data analysis workflow (5 phases) | /ds |
| User Intent | Skill | Trigger Words |
|---|---|---|
| Bug/fix | dev-debug | bug, broken, fix, doesn't work, crash, error, fails |
| Writing | writing | write, draft, document, essay, paper |
| Media analysis | look-at | describe image, analyze PDF, what's in this, screenshot, diagram |
If you think any of these, STOP:
| Thought | Reality |
|---|---|
| "I need to invoke the skill properly" | If user said "use /dev", it's ALREADY LOADED. Just proceed. |
| "Let me invoke the skill first" | Check for <command-name> tag - it's already loaded if present |
| "I should use Skill tool for /dev" | NO. User invocation = already loaded = proceed to next step |
| "This is just a simple question" | Simple questions don't involve reading code |
| "I'll gather information first" | That IS investigation - use the skill |
| "I know exactly what to do" | The skill provides structure you'll miss |
| "It's just one file" | Scope doesn't exempt you from process |
| "Let me quickly check..." | "Quickly" means skipping the workflow |
| "I can read this image directly" | Use look-at to save context tokens |
When user mentions a bug:
1. DO NOT read code files
2. DO NOT investigate
3. DO NOT "take a look"
INSTEAD:
1. Start ralph loop:
Skill(skill="ralph-loop:ralph-loop", args="Debug: [symptom] --max-iterations 15 --completion-promise FIXED")
2. Inside loop, follow /dev-debug protocol
Any code reading before starting the workflow is a violation.
When multiple skills could apply:
Use the Skill tool:
Skill(skill="dev-debug")
Skill(skill="dev")
Skill(skill="ds")
Or start ralph loop first for implementation/debug phases.
NO READING IMAGES/PDFS WITH Read TOOL. USE look-at INSTEAD.
User asks about image/PDF/media content
↓
Is it a media file requiring interpretation?
↓
YES → Use look-at skill (bash call to look_at.py)
NO → Use Read tool for source code/text
ALWAYS use look-at for:
.jpg, .jpeg, .png, .webp, .gif, .heic - Images.pdf - PDFs requiring content extraction.mp4, .mov, .avi, .webm - Videos.mp3, .wav, .aac, .ogg - AudioPattern:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/look-at/scripts/look_at.py \
--file "/absolute/path/to/file" \
--goal "What specific information to extract"
Use Read tool instead for:
.py, .js, .rs, etc.).txt, .md, .json, etc.)| Excuse | Reality | Do Instead |
|---|---|---|
| "I can read images directly" | Read tool shows you the image, but wastes context tokens | Use look-at to extract ONLY what's needed |
| "It's just one small image" | Still uses 1000+ tokens in conversation context | look-at returns 50-200 tokens of extracted info |
| "I need to see the whole thing" | You can see it, user can't see what you see | Use look-at with specific goal |
| "look-at might miss details" | You can always fall back to Read if needed | Start with look-at, escalate if insufficient |
| "The user didn't ask for look-at" | look-at is FOR YOU, not the user | Use the right tool for the job |
# Extract specific information
python3 ${CLAUDE_PLUGIN_ROOT}/skills/look-at/scripts/look_at.py \
--file "$HOME/Downloads/screenshot.png" \
--goal "List all buttons and their labels"
# Analyze diagram
python3 ${CLAUDE_PLUGIN_ROOT}/skills/look-at/scripts/look_at.py \
--file "$HOME/Documents/architecture.png" \
--goal "Explain the data flow between components"
# Extract from PDF
python3 ${CLAUDE_PLUGIN_ROOT}/skills/look-at/scripts/look_at.py \
--file "$HOME/Downloads/report.pdf" \
--goal "Extract the executive summary section"
If you use Read on an image/PDF when look-at should be used, you are:
Check yourself: Before calling Read, ask "Is this a media file?" If yes, use look-at.
For detailed oh-my-opencode production patterns including:
See: references/agent-harnessing.md
Quick reference:
common/helpers/tool-restrictions.mdcommon/templates/delegation-template.mdcommon/metadata/skill-metadata.pycommon/OH-MY-OPENCODE-PATTERNS.mdBased on: obra/superpowers and oh-my-opencode production patterns.
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.