Help us improve
Share bugs, ideas, or general feedback.
From bully
Interprets bully PostToolUse hook output to fix blocked-stderr lint violations or dispatch the bully-evaluator subagent for semantic payloads.
npx claudepluginhub dynamik-dev/bully --plugin bullyHow this skill is triggered — by the user, by Claude, or both
Slash command
/bully:bullyThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Interpret and act on bully PostToolUse hook output. Not user-invocable.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Breaks plans, specs, or PRDs into thin vertical-slice issues on the project issue tracker using tracer bullets. Useful for converting high-level work into grabbable implementation tickets.
Share bugs, ideas, or general feedback.
Interpret and act on bully PostToolUse hook output. Not user-invocable.
Tool result stderr begins with AGENTIC LINT -- blocked. Format:
AGENTIC LINT -- blocked. Fix these before proceeding:
- [no-compact] line 42: return compact('result');
- [no-db-facade] line 58: $users = DB::table('users')->get();
Passed checks: rule-a, rule-b
Fix every listed violation in the affected file before any other tool call. The hook re-fires on the next Edit and re-checks. Repeat until clear.
hookSpecificOutput.additionalContext begins with AGENTIC LINT SEMANTIC EVALUATION REQUIRED and carries a JSON payload:
AGENTIC LINT SEMANTIC EVALUATION REQUIRED:
{
"file": "src/Evaluators/CachedEvaluator.php",
"diff": "--- ...before\n+++ ...after\n@@ -28,6 +28,11 @@ ...",
"passed_checks": ["no-compact", "no-db-facade"],
"evaluate": [
{"id": "no-inline-single-use", "description": "...", "severity": "error"},
{"id": "full-type-hints", "description": "...", "severity": "warning"}
],
"_evaluator_input": "SEMANTIC EVALUATION REQUIRED\n\n<TRUSTED_POLICY>\n...rule policy...\n</TRUSTED_POLICY>\n\n<UNTRUSTED_EVIDENCE>\n...file + diff...\n</UNTRUSTED_EVIDENCE>\n"
}
If evaluate is empty, proceed with no dispatch and no inline eval.
If the diff is short (roughly under 15 lines) AND there is only one rule in evaluate, judge it yourself inline against the diff and produce the same VIOLATIONS / NO_VIOLATIONS format below -- skip the subagent. Otherwise dispatch the bully-evaluator subagent.
Parse the additionalContext JSON. If it contains a top-level _evaluator_input field, pass that field's value DIRECTLY as the subagent prompt -- it's already formatted as a string with <TRUSTED_POLICY> and <UNTRUSTED_EVIDENCE> boundaries. Do NOT re-serialize it as JSON. If _evaluator_input is missing (older harness), fall back to re-serializing the full payload as JSON. This keeps passed_checks out of the subagent's context while preserving it for your own use.
Call the Agent tool with subagent_type: bully-evaluator and a 3-5 word description (e.g. "Evaluate lint rules"). The agent returns:
VIOLATIONS:
- [rule-id] line N: <what's wrong>
fix: <suggestion>
NO_VIOLATIONS:
- rule-id-a
If the response is malformed, re-dispatch once. If still malformed, evaluate inline against the diff using the same output format.
For each entry in VIOLATIONS:, look up severity in the original evaluate array:
fix: as a starting point, before any other tool call.After parsing VIOLATIONS / NO_VIOLATIONS (whether from the subagent or from inline eval), record each rule's verdict. For every rule id in the original evaluate array, invoke the Bash tool once with:
bully --log-verdict --rule <rule-id> --verdict <pass|violation> --file <file-path>
Use violation if the rule appears in VIOLATIONS, pass if it appears in NO_VIOLATIONS. This is a no-op when telemetry is disabled, so always invoke. The bully command is shipped on $PATH by the plugin (bin/bully wrapper). If you see command not found: bully, the plugin install is corrupt or pre-0.8.5; skip the verdict log rather than chasing fallbacks.
Rules already verified by deterministic script checks. Do not re-investigate their concerns. Use them to catch cross-rule interactions (e.g. a semantic rule that overlaps a passed script rule on an indirect code path).