Help us improve
Share bugs, ideas, or general feedback.
From cc-routine
ALWAYS load when a routine is about to act on a GitHub issue or post a comment. Enforces the skip-on-label gate, the don't-re-state-known-blockers rule, and the consolidation pin format for inherited duplicate blockers.
npx claudepluginhub schmug/claude-routines --plugin cc-routineHow this skill is triggered — by the user, by Claude, or both
Slash command
/cc-routine:routine-anti-noiseThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A routine that fires on every `issues.opened` event will, over time, accumulate comments on the same issues across runs. Without an anti-noise discipline it will:
Measures whether skills, rules, and agent definitions are actually followed by auto-generating test scenarios at 3 strictness levels and reporting compliance rates with full tool call timelines.
Share bugs, ideas, or general feedback.
A routine that fires on every issues.opened event will, over time, accumulate comments on the same issues across runs. Without an anti-noise discipline it will:
This skill is the discipline. Apply it before doing any real work on an issue and again before posting any comment.
Before any other work on the resolved issue, fetch the labels (you likely already have them from [[routine-event-resolve]]):
gh issue view <N> --repo <slug> --json labels
Exit silently (no comment, no commit, no PR) if labels include any of:
needs-decision — a Claude-signed pin is already awaiting a human reply.needs-you — explicit "human required" marker.awaiting-human — same intent, alternative name.impl-blocked — implementation hit a wall a routine cannot resolve.discussion — the human has marked this as conversation, not implementation.question — open question to the maintainer, not an implementation request.wontfix — closed-in-spirit; do not implement.duplicate — covered elsewhere; do not implement.These labels mean a human has already routed the issue away from autonomous implementation. Re-engaging with a comment, label, or PR is noise, not signal.
Before posting any comment on the issue, fetch the recent comment thread:
gh issue view <N> --repo <slug> --comments
Scan the last ~10 comments for _Generated by Claude Code_-signed entries.
needs-decision if it isn't already on the issue. Exit.needs-decision, exit.Re-posting the same blocker resets nothing on the human's side — they already saw it. Adding the label and exiting is louder than another comment.
If you find ≥3 duplicate Claude-signed blocker comments on the issue and there's no needs-decision label yet: the prior routine runs failed to apply the label, and the thread is now hard to read. Post ONE consolidation pin, apply the label, exit. Do not delete prior comments.
**BLOCKING ON:** <one-sentence decision needed>
Proposed options:
A) <one-line summary of option A and what would ship>
B) <one-line summary of option B and what would ship>
C) <one-line summary of option C and what would ship> _(omit if only two)_
Reply `approve A` (etc.) or redirect — this routine will resume on the next fire.
_Generated by Claude Code._
One pin per inherited blocker decision. If two unrelated decisions are blocked, that's two pins, not one combined pin.
--repo <slug> to every gh call.