Announcing Beacon: Self-improving memory for coding agents
← All skills
Skill

clean-up-comments

skill:thedaviddias/front-end-checklist#clean-up-comments

Use when reviewing templates, rendered HTML, or shared components related to Remove comments and debug code in production. Validate the final browser-facing markup, not just the source framework abstraction.

Verdict
Malicious

Confirmed harmful behavior that reaches the agent or host.

Analyzed Oct 27, 2026, 23:06 UTC at e8d14d0

Dispute security verdict

If you believe this verdict is incorrect, submit a dispute and we'll review it.

5
findings
critical
highest severity
2
threat classes
1,978
files scanned
87/87
checks satisfied
0
package advisories

Why this verdict

  • malicious: finding skill:skills/clean-up-comments:skills/clean-up-comments/references/rule.md:388:DESTRUCT passes reach/harm/chain at critical

Security findings 5

Destructive action

criticalConfirmedmedium confidence

The skill's reference page documents a pre-deployment script that recursively deletes debug, test, and spec files and removes .env configuration files, webpack config, and development directories across the repository, a destructive capability beyond the skill's declared purpose of reviewing HTML comments.

rm -f .env.local
vector:codevector:instruction
Counter-argument considered

The same agent-reachable script silently removes developer environment and config files (.env.local, .env.development, webpack.dev.js) plus test/spec files; deleting config and test files is undeclared by the markup-review skill, matches the detector's not-declared residue, and is not covered by any carve-out, so the finding stands.

Destructive action

highContextual riskmedium confidence

The same undeclared pre-deployment script recursively deletes development directories and test files (.storybook/, __tests__/, coverage/, *.test.js, *.spec.js), destructive behavior beyond the declared removal of comments and debug code.

rm -rf .storybook/
vector:code
Counter-argument considered

SKILL.md points the agent to references/rule.md, where the pre-deployment script deletes test directories and source test files (.storybook/, __tests__/, coverage/); this destructive behavior is outside the declared review-and-flag scope, is not a build/cache-dir carve-out, and no mitigation exists, so the finding survives.

Code execution

highContextual riskmedium confidence

The same pre-deployment script instructs the agent to execute scripts/cleanup-package-json.js, a file the shown skill content does not ship, so the agent would run whatever unknown code exists at that path at runtime.

node scripts/cleanup-package-json.js
vector:codevector:instruction
Counter-argument considered

The reachable pre-deployment script contains the concrete command 'node scripts/cleanup-package-json.js', which makes the agent execute whatever code exists at that path at runtime; the file is not shown in the skill content, executing it is undeclared by the review-and-flag scope, and no installer/registry carve-out applies, so the finding stands (shipping status affects only severity, so a request is added for the script).

Code execution

highContextual riskmedium confidence

The rule.md file that SKILL.md directs the agent to for 'full implementation details' presents a runnable Node.js cleanup script ('scripts/remove-debug-code.js') under 'Automated Cleanup Scripts' which, when invoked via processDirectory('./src'), reads and rewrites every .js/.jsx/.ts/.tsx file in the tree in place, regex-stripping console.log, debugger, and TODO/FIXME/DEBUG content — mass source-file mutation targeting JavaScript/TypeScript far outside the declared HTML-comment review scope.

processDirectory('./src')
vector:instruction
Counter-argument considered

The agent-directed rule.md ships a self-executing Node script under 'Automated Cleanup Scripts' that ends in processDirectory('./src') and rewrites every .js/.jsx/.ts/.tsx in place via regex deletion; mass source mutation contradicts the declared scope of reviewing markup and flagging violations (validating browser-facing output, not mutating source frameworks), with no carve-out or mitigation, so the finding stands.

Destructive action

highContextual risklow confidence

The documented HTML cleanup script rewrites every glob-matched HTML file in place and removes any element whose class attribute merely contains the substring 'debug' or 'temp' (which also matches legitimate names like 'template-*'), silently destroying valid markup without backup.

const debugElements = document.querySelectorAll('.debug, .temp, [class*=
vector:instruction
Counter-argument considered

The documented HTML cleanup script rewrites every glob-matched HTML file in place (fs.writeFileSync(file, dom.serialize())) after removing any element whose class merely contains 'debug' or 'temp', which silently destroys valid markup such as template-* elements; this in-place rewriting is undeclared destructive behavior outside the declared validate-and-flag scope and no carve-out or mitigation applies, so the finding stands.

Open questions 2

What the analysis could not settle from the code alone.

Residue R6 (env '*' at rule.md line 517) appears only inside a '❌ Remove debug routes' anti-pattern example showing code that should be deleted from production apps, not an instructed capability; confirm no other unit turns it into an instruction.
Credential access
[file request scripts/cleanup-package-json.js] The Pre-deployment Script executes `node scripts/cleanup-package-json.js` to rewrite package.json scripts; what does this invoked script actually do, and does it modify anything beyond removing dev scripts?
Code execution

Coverage gaps 5

Parts of the artifact the static analysis could not fully examine.

context:unanalyzable_binary binary content is only byte-scanned
apps/web/public/projects/indie-dev-toolkit/indie-dev-toolkit.mp4
context:unanalyzable_binary binary content is only byte-scanned
docs/audits/2026-10-04-mcp-validation/assets/checklist-interaction.webm
context:unanalyzable_binary binary content is only byte-scanned
docs/audits/2026-10-04-mcp-validation/assets/mcp-tab-interaction.webm
context:manifest_unparseable yaml: YAML node count exceeds 20000
pnpm-lock.yaml
invalid_judge_finding request.1