All skills
lassejlv avatar

/no-vibe-code

@42c303f
by Lasselassejlv/skills50 stars
1

Review frontend source and rendered UI for generic generated design patterns using the bundled static linter. Use for requests to remove AI-slop styling or a focused design-quality pass. Preserve intentional brand choices; this skill does not establish the primary visual direction.

Use this Skill: https://skilld.dev/gh/lassejlv/skills/no-vibe-code

This session only. Nothing lands on disk.

SKILL.md

≈74 tokens always: the name and description. ≈1.1k when used: this file. ≈68 more on demand in 1 file.

No Vibe Code

Find unintentional design defaults and replace them with choices grounded in the product, content, and brief. Static matches are review candidates, not proof of poor design or AI authorship.

Establish intent and scope

Read the brief and inspect the existing design system and relevant UI. Preserve requested colors, fonts, components, and reference fidelity. Use an available design skill when the task needs a new visual direction; this skill works on its own for a focused review.

For a review request, report findings without editing. For an implementation or cleanup request, fix confirmed issues within the requested surface. Do not add a CI gate or redesign unrelated screens merely because the linter finds a match.

Scan the relevant source

Run the bundled slop-check.mjs with Node 18 or newer; it has no package dependencies. Resolve the skill directory and pass the driver by absolute path so invocation works from the project's checkout:

node /absolute/path/to/no-vibe-code/slop-check.mjs ./src

The driver accepts multiple files or directories. Prefer the changed UI and shared styles it uses; scan the whole frontend when the request covers it.

  • --json: outputs {files, counts, findings, failing}.
  • --quiet: prints only the summary and result.
  • --strict: fails on MEDIUM as well as HIGH; use when that threshold is requested.
  • Exit 0: no matches at the selected failing severity. Exit 1: matches need triage. Exit 2: missing target arguments. Treat execution errors as incomplete scans, not design findings.

The scanner reads HTML, CSS, SCSS, JS, TS, JSX, TSX, Vue, Svelte, and Astro files. It skips common dependency, generated-output, and coverage directories. Markdown is not scanned. Missing paths can silently yield no files, and unknown flags are not validated: check the command and file count. Zero files scanned is not a pass.

Triage before changing the design

Each finding includes a rule ID, location, matched snippet, and suggested fix. Review HIGH findings first, then MEDIUM and relevant LOW findings. Severity is the tool's configured priority, not an objective measure of visual quality.

The rules flag patterns such as violet accents, purple-blue gradients, clipped gradient text, Inter, emoji, repeated card grids, blur, and default tokens. Inspect the match in context before applying its suggested fix:

  • Unintentional default: change it to serve the content, hierarchy, and brief. Prefer a coherent palette, typography, and layout over isolated cosmetic swaps.
  • Intentional choice: keep it when supported by the brief, design system, or a clear functional reason. Report the rule and reason if it remains at failing severity; do not claim the linter passed.
  • False positive: leave valid code alone and explain the mismatch. The scanner uses text patterns, not a parser or rendered styles: comments, strings, body-copy emoji, and unrelated elements can match. Multiline or dynamic styles can escape detection.

Do not change brand colors, remove useful status indicators, replace a legible font, or introduce asymmetry merely to clear a rule. Do not evade detection by nudging colors or rearranging source. The driver has no suppression mechanism; document justified exceptions in the result without changing its thresholds.

Verify and finish

After edits, rerun the same scan and inspect the rendered result at relevant viewport sizes. Check hierarchy, spacing, typography, contrast, and affected interactive states. Run the project's relevant functional checks when markup or behavior changes. If rendering is unavailable, disclose that the review was static.

Finish when confirmed issues in scope are resolved and remaining findings are accounted for. Report changes or review findings, the actual lint result and file count, any justified exceptions, and visual verification limits. A clean scan alone does not establish design quality or accessibility.

When modifying the driver itself, run both regression fixtures:

node /absolute/path/to/no-vibe-code/slop-check.mjs /absolute/path/to/no-vibe-code/samples/slop.html --quiet
node /absolute/path/to/no-vibe-code/slop-check.mjs /absolute/path/to/no-vibe-code/samples/clean.html --quiet

The slop fixture must exit 1; the clean fixture must exit 0. Check targeted cases for any changed rule as well; these samples do not establish detector accuracy.

Source: SKILL.md on GitHub

No alerts23d3 checks · Risk SAFE
  • Gen Agent Trust Hub23d

    The skill provides a static analysis tool for frontend code. While the logic is self-contained and safe, it processes untrusted source code and displays snippets to the AI agent, which presents a minor risk of indirect prompt injection if a source file contains malicious instructions.

  • Socket23d

    No alerts

  • Snyk23d

    Risk: LOW · No issues

Signed by skilld at 42c303f. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub yesterday.

Activeupdated 4 weeks ago

README badge

README badge for lassejlv/skills/no-vibe-code