From Dev10x
Reinforces Claude's use of skills over CLI commands by scanning conversation for bash calls, matching to command-skill map, and issuing reminders. Invoke when agent misuses CLI or on user request to 'use skills'.
npx claudepluginhub dev10x-guru/dev10x-claude --plugin Dev10xThis skill is limited to using the following tools:
Quick reinforcement nudge when an agent reaches for CLI commands
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Quick reinforcement nudge when an agent reaches for CLI commands instead of using available skills or MCP tools.
Invoke this skill when:
REQUIRED: Create a task at invocation. Execute at startup:
TaskCreate(subject="Reinforce skill usage", activeForm="Reinforcing")Mark completed when done: TaskUpdate(taskId, status="completed")
Scan the recent conversation for the CLI command that triggered this invocation. Look for:
Bash tool call that was rejected or approved/Dev10x:skill-reinforcement kubectl),
use that as the command identifierStore the command string for matching.
Read the command-skill mapping from the canonical location:
${CLAUDE_PLUGIN_ROOT}/src/dev10x/validators/command-skill-map.yaml.
The YAML in skills/skill-reinforcement/references/command-skill-map.yaml
is a legacy copy — prefer the hook's YAML which is the single
source of truth.
Match the identified command against the patterns list in each
mapping entry. Use prefix matching — if the command starts with
any pattern in the list, it matches that entry.
If no match is found in the map, fall back to Step 3.
If a pattern match is found but the command appears to be a valid part of the currently active skill's documented workflow, check whether the skill says to delegate for this case:
REQUIRED: Skill() — a command can be valid syntax within
a skill but still a violation if the skill mandates delegation
to a sub-skill for that operationgh api --method POST .../replies is documented in
gh-pr-respond but the skill requires VALID comments to go
through Dev10x:gh-pr-fixup — using the raw API is a violationIf the command is a delegation bypass, treat it as a match and output the reinforcement pointing to the correct sub-skill.
If no direct mapping exists, read ~/.claude/SKILLS.md and scan
skill descriptions from the system-reminder context to find the
best match based on the command's purpose.
Output a firm, concise reinforcement message with these sections:
Skill("<skill-name>") call syntax.
For MCP tools, add: "Call this as an MCP tool call, NOT as a
Bash command. MCP tool names are tool interface identifiers,
never shell executables. Example:
mcp__plugin_Dev10x_cli__mktmp(namespace='git', prefix='commit-msg', ext='.txt') — not
mcp__plugin_Dev10x_cli__mktmp git commit-msg .txt."If multiple skills could apply, list all of them ranked by relevance.
If the user explicitly rejected the command (denied the Bash tool call), do NOT conclude "no violation found" and resume the rejected workflow. A user rejection overrides documentation matching — even if the command appears valid within the skill, the user's denial takes precedence. Instead, ask the user what they expected if no skill match is found.
End with a brief reminder:
Always check if a skill or MCP tool exists before reaching for CLI commands. Skills provide consistent behavior, proper tool declarations, and avoid permission friction.
If the triggering command was rejected by the user (denied the Bash tool call), the reinforcement must actively offer to retry the intended action via the recommended skill. Plain text offers ("Want me to invoke X?") do NOT block execution and break the structured decision flow used across Dev10x skills.
REQUIRED: Call AskUserQuestion (do NOT use plain text).
AskUserQuestion(questions=[{question: "Invoke <recommended-skill> now to complete the intended action?", header: "Retry", options: [{label: "Yes, invoke <skill> now (Recommended)", description: "Re-run the intended action via the correct skill"}, {label: "I'll invoke it manually later", description: "Skip for now — user will handle"}, {label: "Cancel — discard the attempted operation", description: "Do not retry"}], multiSelect: false}])Substitute <recommended-skill> with the skill identified in
Step 2 (e.g., Dev10x:gh-pr-monitor, Dev10x:k8s,
Dev10x:git).
Skip this gate when:
On approval, invoke the recommended skill immediately. On cancellation, acknowledge and stop — do NOT resume the rejected workflow.
User: /Dev10x:skill-reinforcement
(after agent ran kubectl get pods -n staging)
Output:
## Skill Reinforcement
**Command detected:** `kubectl get pods -n staging`
**Use instead:** `/Dev10x:k8s` — Kubernetes operations via
aws-vault authenticated kubectl
**Why:** Direct kubectl calls bypass aws-vault authentication
and may fail or use wrong credentials.
**How to invoke:**
Skill("Dev10x:k8s")
User: /Dev10x:skill-reinforcement
(after agent ran git push origin feature-branch)
Output:
## Skill Reinforcement
**Command detected:** `git push origin feature-branch`
**Use instead:** `/Dev10x:git` — Safe git push with
protected branch checks
**Why:** Direct git push bypasses force-push protection
on develop/main branches.
**How to invoke:**
Skill("Dev10x:git")
User: /Dev10x:skill-reinforcement
(after agent ran curl https://api.example.com/health)
Output:
## Skill Reinforcement
**Command detected:** `curl https://api.example.com/health`
**No direct skill match found.**
Available skills that might help:
- `/Dev10x:k8s` — if checking service health in k8s
- `/Dev10x:investigate` — if investigating a bug report
Check ~/.claude/SKILLS.md for the full list of available skills.