{"id":"e2a47850-c959-4ec0-87b6-909ac6ee9f72","shortId":"qDCcvb","kind":"skill","title":"vibe-check","tagline":"Audit code for \"vibe coding sins\" — patterns that indicate AI-generated code was accepted without proper review. Produces a scored report card with fix suggestions.","description":"# 🎭 Vibe Check\n\nAudit code for \"vibe coding\" — AI-generated code accepted without proper human review. Get a scored report card with specific findings and fix suggestions.\n\n## Trigger\n\nActivate when the user mentions any of:\n- \"vibe check\"\n- \"vibe-check\"\n- \"audit code\"\n- \"code quality\"\n- \"vibe score\"\n- \"check my code\"\n- \"review this code for vibe coding\"\n- \"code review\"\n- \"vibe audit\"\n\n## Instructions\n\n### 1. Determine the Target\n\nAsk the user what code to analyze. Accepted inputs:\n- **Single file:** `app.py`, `src/utils.ts`\n- **Directory:** `src/`, `.`, `my-project/`\n- **Git diff:** last N commits, staged changes, or branch comparison\n\n### 2. Run the Analysis\n\n```bash\n# Single file or directory\nbash \"$SKILL_DIR/scripts/vibe-check.sh\" TARGET\n\n# With fix suggestions\nbash \"$SKILL_DIR/scripts/vibe-check.sh\" --fix TARGET\n\n# Git diff (last 3 commits)\nbash \"$SKILL_DIR/scripts/vibe-check.sh\" --diff HEAD~3\n\n# Staged changes with fixes\nbash \"$SKILL_DIR/scripts/vibe-check.sh\" --staged --fix\n\n# Save to file\nbash \"$SKILL_DIR/scripts/vibe-check.sh\" --fix --output report.md TARGET\n```\n\n### 3. Present the Report\n\nThe output is a Markdown report. Present it directly — it's designed to be screenshot-worthy.\n\n### Discord v2 Delivery Mode (OpenClaw v2026.2.14+)\n\nWhen the conversation is happening in a Discord channel:\n\n- Send a compact summary first (grade, score, file count, top 3 findings), then ask if the user wants the full report.\n- Keep the first message under ~1200 characters and avoid wide Markdown tables in the first response.\n- If Discord components are available, include quick actions:\n  - `Show Top Findings`\n  - `Show Fix Suggestions`\n  - `Run Diff Mode`\n- If components are not available, provide the same follow-ups as a numbered list.\n- Prefer short follow-up chunks (<=15 lines per message) when sending the full report.\n\n### Quick Reference\n\n| Command | Description |\n|---------|-------------|\n| `vibe-check FILE` | Analyze a single file |\n| `vibe-check DIR` | Scan directory recursively |\n| `vibe-check --diff` | Check last commit's changes |\n| `vibe-check --diff HEAD~5` | Check last 5 commits |\n| `vibe-check --staged` | Check staged changes |\n| `vibe-check --fix DIR` | Include fix suggestions |\n| `vibe-check --output report.md DIR` | Save report to file |\n\n### Sin Categories (what it checks)\n\n| Category | Weight | What It Catches |\n|----------|:------:|-----------------|\n| Error Handling | 20% | Missing try/catch, bare exceptions, no edge cases |\n| Input Validation | 15% | No type checks, no bounds checks, trusting all input |\n| Duplication | 15% | Copy-pasted logic, DRY violations |\n| Dead Code | 10% | Unused imports, commented-out blocks, unreachable code |\n| Magic Values | 10% | Hardcoded strings/numbers/URLs without constants |\n| Test Coverage | 10% | No test files, no test patterns, no assertions |\n| Naming Quality | 10% | Vague names (data, result, temp, x), misleading names |\n| Security | 10% | eval(), exec(), hardcoded secrets, SQL injection |\n\n### Scoring\n\n- **A (90-100):** Pristine code, minimal issues\n- **B (80-89):** Clean code with minor issues  \n- **C (70-79):** Decent but lazy patterns crept in\n- **D (60-69):** Needs human attention\n- **F (<60):** Heavy vibe coding detected\n\n### Notes for the Agent\n\n- **The report is the star.** Present it in full — it's designed to look great.\n- After presenting, offer to run `--fix` mode if they didn't already.\n- Suggest the README badge: `![Vibe Score](https://img.shields.io/badge/vibe--score-XX%2F100-COLOR)`\n- For large codebases, suggest focusing on specific directories or using `--diff` mode.\n- If no LLM API key is set, the tool falls back to heuristic analysis (less accurate but still useful).\n- **Supported languages (v1):** Python, TypeScript, JavaScript only.\n\n## References\n\n- `scripts/vibe-check.sh` — Main entry point\n- `scripts/analyze.sh` — LLM code analysis engine (with heuristic fallback)\n- `scripts/git-diff.sh` — Git diff file extractor\n- `scripts/report.sh` — Markdown report generator\n- `scripts/common.sh` — Shared utilities and constants\n\n## Examples\n\n### Example 1: Audit a Directory\n\n**User:** \"Vibe check my src directory\"\n\n**Agent runs:**\n```bash\nbash \"$SKILL_DIR/scripts/vibe-check.sh\" src/\n```\n\n**Output:** Full scorecard with per-file breakdown, category scores, and top findings.\n\n### Example 2: Check with Fixes\n\n**User:** \"Review this code for vibe coding and suggest fixes\"\n\n**Agent runs:**\n```bash\nbash \"$SKILL_DIR/scripts/vibe-check.sh\" --fix src/\n```\n\n**Output:** Scorecard + unified diff patches for each finding.\n\n### Example 3: Git Diff Mode\n\n**User:** \"Check the code quality of my last 3 commits\"\n\n**Agent runs:**\n```bash\nbash \"$SKILL_DIR/scripts/vibe-check.sh\" --diff HEAD~3\n```\n\n**Output:** Scorecard focused only on recently changed files.","tags":["vibe","check","cacheforge","skills","cacheforge-ai","agent-skills","ai-agents","clawhub","devops","discord-v2","kubernetes","openclaw"],"capabilities":["skill","source-cacheforge-ai","skill-vibe-check","topic-agent-skills","topic-ai-agents","topic-cacheforge","topic-clawhub","topic-devops","topic-discord-v2","topic-kubernetes","topic-openclaw","topic-prometheus"],"categories":["cacheforge-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/cacheforge-ai/cacheforge-skills/vibe-check","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add cacheforge-ai/cacheforge-skills","source_repo":"https://github.com/cacheforge-ai/cacheforge-skills","install_from":"skills.sh"}},"qualityScore":"0.454","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 8 github stars · SKILL.md body (4,794 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:09:05.140Z","embedding":null,"createdAt":"2026-05-18T13:14:39.423Z","updatedAt":"2026-05-18T19:09:05.140Z","lastSeenAt":"2026-05-18T19:09:05.140Z","tsv":"'-100':447 '-69':471 '-79':462 '-89':454 '/badge/vibe--score-xx%2f100-color)':520 '1':90,588 '10':398,409,416,427,437 '1200':235 '15':284,378,389 '2':122,619 '20':368 '3':146,173,219,650,662 '5':329 '60':470,476 '70':461 '80':453 '90':446 'accept':18,41,101 'accur':548 'action':253 'activ':58 'agent':484,598,633,664 'ai':14,38 'ai-gener':13,37 'alreadi':511 'analysi':125,546,567 'analyz':100,301 'api':536 'app.py':105 'ask':94,222 'assert':424 'attent':474 'audit':4,32,70,88,589 'avail':250,267 'avoid':238 'b':452 'back':543 'badg':515 'bare':371 'bash':126,131,138,148,158,166,600,601,635,636,666,667 'block':404 'bound':383 'branch':120 'breakdown':612 'c':460 'card':26,50 'case':375 'catch':365 'categori':357,361,613 'chang':118,155,320,337,679 'channel':208 'charact':236 'check':3,31,66,69,76,299,307,314,316,323,327,333,335,340,348,360,381,384,594,620,655 'chunk':283 'clean':455 'code':5,8,16,33,36,40,71,72,78,81,84,85,98,397,406,449,456,479,566,626,629,657 'codebas':523 'command':295 'comment':402 'commented-out':401 'commit':116,147,318,330,663 'compact':211 'comparison':121 'compon':248,264 'constant':413,585 'convers':202 'copi':391 'copy-past':390 'count':217 'coverag':415 'crept':467 'd':469 'data':430 'dead':396 'decent':463 'deliveri':196 'descript':296 'design':188,496 'detect':480 'determin':91 'didn':509 'diff':113,144,151,261,315,324,531,574,644,652,670 'dir':308,342,351 'dir/scripts/vibe-check.sh':133,140,150,160,168,603,638,669 'direct':185 'directori':107,130,310,528,591,597 'discord':194,207,247 'dri':394 'duplic':388 'edg':374 'engin':568 'entri':562 'error':366 'eval':438 'exampl':586,587,618,649 'except':372 'exec':439 'extractor':576 'f':475 'fall':542 'fallback':571 'file':104,128,165,216,300,304,355,419,575,611,680 'find':53,220,256,617,648 'first':213,232,244 'fix':28,55,136,141,157,162,169,258,341,344,505,622,632,639 'focus':525,675 'follow':272,281 'follow-up':271,280 'full':228,291,493,606 'generat':15,39,580 'get':46 'git':112,143,573,651 'grade':214 'great':499 'handl':367 'happen':204 'hardcod':410,440 'head':152,325,671 'heavi':477 'heurist':545,570 'human':44,473 'img.shields.io':519 'img.shields.io/badge/vibe--score-xx%2f100-color)':518 'import':400 'includ':251,343 'indic':12 'inject':443 'input':102,376,387 'instruct':89 'issu':451,459 'javascript':557 'keep':230 'key':537 'languag':553 'larg':522 'last':114,145,317,328,661 'lazi':465 'less':547 'line':285 'list':277 'llm':535,565 'logic':393 'look':498 'magic':407 'main':561 'markdown':181,240,578 'mention':62 'messag':233,287 'minim':450 'minor':458 'mislead':434 'miss':369 'mode':197,262,506,532,653 'my-project':109 'n':115 'name':425,429,435 'need':472 'note':481 'number':276 'offer':502 'openclaw':198 'output':170,178,349,605,641,673 'past':392 'patch':645 'pattern':10,422,466 'per':286,610 'per-fil':609 'point':563 'prefer':278 'present':174,183,490,501 'pristin':448 'produc':22 'project':111 'proper':20,43 'provid':268 'python':555 'qualiti':73,426,658 'quick':252,293 'readm':514 'recent':678 'recurs':311 'refer':294,559 'report':25,49,176,182,229,292,353,486,579 'report.md':171,350 'respons':245 'result':431 'review':21,45,79,86,624 'run':123,260,504,599,634,665 'save':163,352 'scan':309 'score':24,48,75,215,444,517,614 'scorecard':607,642,674 'screenshot':192 'screenshot-worthi':191 'scripts/analyze.sh':564 'scripts/common.sh':581 'scripts/git-diff.sh':572 'scripts/report.sh':577 'scripts/vibe-check.sh':560 'secret':441 'secur':436 'send':209,289 'set':539 'share':582 'short':279 'show':254,257 'sin':9,356 'singl':103,127,303 'skill':132,139,149,159,167,602,637,668 'skill-vibe-check' 'source-cacheforge-ai' 'specif':52,527 'sql':442 'src':108,596,604,640 'src/utils.ts':106 'stage':117,154,161,334,336 'star':489 'still':550 'strings/numbers/urls':411 'suggest':29,56,137,259,345,512,524,631 'summari':212 'support':552 'tabl':241 'target':93,134,142,172 'temp':432 'test':414,418,421 'tool':541 'top':218,255,616 'topic-agent-skills' 'topic-ai-agents' 'topic-cacheforge' 'topic-clawhub' 'topic-devops' 'topic-discord-v2' 'topic-kubernetes' 'topic-openclaw' 'topic-prometheus' 'trigger':57 'trust':385 'try/catch':370 'type':380 'typescript':556 'unifi':643 'unreach':405 'unus':399 'up':273 'use':530,551 'user':61,96,225,592,623,654 'util':583 'v1':554 'v2':195 'v2026.2.14':199 'vagu':428 'valid':377 'valu':408 'vibe':2,7,30,35,65,68,74,83,87,298,306,313,322,332,339,347,478,516,593,628 'vibe-check':1,67,297,305,312,321,331,338,346 'violat':395 'want':226 'weight':362 'wide':239 'without':19,42,412 'worthi':193 'x':433 '~3':153,672 '~5':326","prices":[{"id":"52a7e4f0-5b83-41dd-a671-5193284c4e02","listingId":"e2a47850-c959-4ec0-87b6-909ac6ee9f72","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"cacheforge-ai","category":"cacheforge-skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:14:39.423Z"}],"sources":[{"listingId":"e2a47850-c959-4ec0-87b6-909ac6ee9f72","source":"github","sourceId":"cacheforge-ai/cacheforge-skills/vibe-check","sourceUrl":"https://github.com/cacheforge-ai/cacheforge-skills/tree/main/skills/vibe-check","isPrimary":false,"firstSeenAt":"2026-05-18T13:14:39.423Z","lastSeenAt":"2026-05-18T19:09:05.140Z"}],"details":{"listingId":"e2a47850-c959-4ec0-87b6-909ac6ee9f72","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cacheforge-ai","slug":"vibe-check","github":{"repo":"cacheforge-ai/cacheforge-skills","stars":8,"topics":["agent-skills","ai-agents","cacheforge","clawhub","devops","discord-v2","kubernetes","openclaw","prometheus"],"license":"mit","html_url":"https://github.com/cacheforge-ai/cacheforge-skills","pushed_at":"2026-02-22T20:49:48Z","description":"⚡ SOTA agent skills for OpenClaw — observability, security, code quality, incident response, and more. Built by Anvil AI.","skill_md_sha":"fc0e3d750b9226825aee5b67fc3a8682d2e68286","skill_md_path":"skills/vibe-check/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cacheforge-ai/cacheforge-skills/tree/main/skills/vibe-check"},"layout":"multi","source":"github","category":"cacheforge-skills","frontmatter":{"name":"vibe-check","description":"Audit code for \"vibe coding sins\" — patterns that indicate AI-generated code was accepted without proper review. Produces a scored report card with fix suggestions."},"skills_sh_url":"https://skills.sh/cacheforge-ai/cacheforge-skills/vibe-check"},"updatedAt":"2026-05-18T19:09:05.140Z"}}