Skip to content

code-tidying: rename dissolve-comments to remove-comments with a comment-reviewer agent #12474

Description

@kyle-sexton

Refs: #7585

Parent

Slice 1 of 2 of #7585 (code-tidying: remove-comments and upkeep cadence), filed under the parent's decision record (comment).

Outcome

plugins/code-tidying/skills/dissolve-comments becomes remove-comments, with an audit action and one agent, code-tidying:comment-reviewer, working under the comment postures. dissolve-comments no longer exists.

Decisions (from #7585, D60, D106, Q26, Q39, Q42, Q201)

  • Rule split. Absorb pstack's no-comments skill and agent rule by rule: copy 3, adapt 23, decline 4, keep ours 9. The 2026-10-20 absorption table is the rule-level spec; re-check its line numbers against main first.
  • Postures. none (opt-in), necessary (pipeline default) and explanatory (interactive default). Edit scope is a separate setting, default diff.
  • Kept by rule. TODO(#n), license headers, comment-plus-test pairs and correctness pragmas, per D60.
  • Agent settings. The comment-reviewer's model and effort come through /multi-agent:route overrides. Encoding a constraint unattended needs a pre-approval setting, default off.
  • Linked workarounds. A linked workaround comment is still a finding: fix the cause, or TODO(#n).

Done when

  • A behavior probe records, with the Claude Code version, whether a preloaded skill's ! pre-compute lines run inside the agent. It runs before the agent design is final, and the agent is designed around the result.
  • The remove-comments skill (with an audit action) and the code-tidying:comment-reviewer agent exist. dissolve-comments does not, and every cite of it is swept.
  • The postures and the edit-scope setting resolve through the convention home (config-cascade: settings resolution and convention home #7571).
  • Each skill-body cut ships with before/after evals showing no loss (/evals:plugin-eval), per the repository's skill criteria. Where a negative control cannot detect a loss, the rule change ships with the gap disclosed and code-tidying: make the remove-comments body rules measurable #12703 covers making it measurable (owner decision, 2026-11-03).

Out of scope

Activity

  1. added
    priority: mediumReal value, no hard deadline; normal backlog flow.
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    host-runNeeds an unattended run on a host; the host runner takes it, not a person or the issue lane.
    on Nov 2, 2026
  2. kyle-sexton commented on Nov 2, 2026

    @kyle-sexton
    MemberAuthor

    Behavior probe for #7585's open question: a preloaded skill's ! pre-compute lines DO run inside the agent. The agent design can rely on them.

    What ran

    • Claude Code 2.1.316 (Linux, WSL), claude -p --model sonnet --plugin-dir <fixture> --allowedTools="Bash(echo:*)", on 2026-11-02.
    • Fixture. Skill bang-probe, whose body has the line Marker: !`echo PRECOMPUTE-RAN-$((6*7))` . Agent bang-agent has skills: [bang-probe] and tools: Read only, so it can neither invoke a skill nor run Bash itself.
    • Agent arm. The main session spawned bangprobe:bang-agent and asked it to quote the Marker line from its preloaded skill content. It returned Marker: PRECOMPUTE-RAN-42.
    • Control arm. The main session invoked the bang-probe skill directly. It returned Marker: PRECOMPUTE-RAN-42.

    Reading

    The agent saw the command's output (42), not the literal !`…` text. With no Skill or Bash tool, it could only have seen that output if the pre-compute ran when the skill was injected at agent startup. The sub-agents page says the full content of each listed skill is injected at startup; it does not say whether ! lines run first, so this probe answers that.

    • Basis: the two runs above, one each. The answer is deterministic.
    • Not tested: a ! command that the agent's own permission settings would deny. Recheck it when the comment-reviewer agent's ! lines need tools beyond its allowlist, and recheck on a Claude Code release note that changes skill preloading.
  3. github-actions commented on Nov 2, 2026

    @github-actions
    Contributor

    Proposed work class: work-class: scoped
    Basis: automated intake triage; the lanes App applied this class.

    Size: Medium
    Complexity: Medium
    Uncertainty: Known
    Flags: none
    Blocked by: none

    Decision recorded. Owner, in the lane 2 session, 2026-11-03: "Go with whatever this recommends", with the standing direction attached, answering these two questions on #12549.

    Fold-in versus no-loss. audit-comment-residue stays a separate model-invoked skill with its before description, which routes to /code-tidying:remove-comments audit. remove-comments keeps the audit action. Basis: two preregistered passes lost only audit requests, and rewrite-a-plugin.md step 5 says "When no restore closes the gap, the before text ships". This partly reverses D60's fold-in.

    [quote truncated; the full decision is at the link]

    #12474 (comment)

    I understood this as renaming dissolve-comments to remove-comments with an audit action and a code-tidying:comment-reviewer agent, and sweeping every cite of the old name. The recorded decision settles the open fold-in question: audit-comment-residue stays a separate skill. The probe item is already answered in comment 1. I found no open questions left and no likely duplicates. The #7571 and #12549 numbers weren't in the open-issue list, so I treated neither as a blocker.

    Automated triage, applied by the lanes App.

  4. melodic-automation-lanes commented on Nov 2, 2026

    @melodic-automation-lanes
    Contributor

    Not admitted to the issue lane: its done-when asks for what an unattended lane run cannot perform: item 1 (a live Claude Code CLI run: "A behavior probe records, with the Claude Code version, whether a preloaded s..."); recommended split: keep the other items here as the admissible issue and move these to a child issue for the host queue (host-run); it carries host-run. Admission takes the issue once each of those is met, when intake triages it again (.github/actions/resolve-config/admission-rules.json).

  5. melodic-automation-lanes commented on Nov 2, 2026

    @melodic-automation-lanes
    Contributor

    The latest triage verdict holds nothing: admission moved the issue to status: confirmed; its comment says why.

  6. self-assigned this
    on Nov 2, 2026
  7. kyle-sexton commented on Nov 2, 2026

    @kyle-sexton
    MemberAuthor
    No description provided.
  8. kyle-sexton commented on Nov 3, 2026

    @kyle-sexton
    MemberAuthor

    Decision recorded. Owner, in the lane 2 session, 2026-11-03: "Go with whatever this recommends", with the standing direction attached, answering these two questions on #12549.

    Fold-in versus no-loss. audit-comment-residue stays a separate model-invoked skill with its before description, which routes to /code-tidying:remove-comments audit. remove-comments keeps the audit action. Basis: two preregistered passes lost only audit requests, and rewrite-a-plugin.md step 5 says "When no restore closes the gap, the before text ships". This partly reverses D60's fold-in.

    Unmeasurable body rules. The rule changes ship with the gap disclosed, and a new issue covers making them measurable. Basis: #7585's decisions approved these rules. This sets aside the runbook's unmeasurable rule for this PR.

    The outcome and trigger families run once more on the final head, preregistered in #12549, before the hold lifts.

  9. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    and removed
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Nov 3, 2026
  10. added
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Nov 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

host-runNeeds an unattended run on a host; the host runner takes it, not a person or the issue lane.priority: mediumReal value, no hard deadline; normal backlog flow.status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

Type

Fields

Work status

confirmed

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions