{"id":"aec1e4fe-6868-4f0f-a35b-58349613d0aa","shortId":"PeTKSH","kind":"skill","title":"code-verification","tagline":"Post-implementation verification system that catches AI-introduced bugs. Covers 7 categories — TDZ errors, import mismatches, reference integrity, dead code, React state/effects, mock isolation, and CSS integrity. Run after every code change, after writing tests, or before markin","description":"# Code Verification Skill\n\nA systematic post-implementation verification workflow that catches the bugs AI coding assistants most commonly introduce. This is NOT a code review for style or architecture — it is a mechanical correctness checklist that catches structural errors (TDZ, imports, dead code, mock leakage, CSS orphans, React anti-patterns) that humans and AI both miss during implementation.\n\n## When to Use\n\n- **After every code change** (1-2 files changed -> run immediately)\n- **After a multi-file feature** (run on all changed files in one pass)\n- **After writing/modifying tests** (switch to Test Verification mode)\n- **Before marking any task complete** (final gate)\n- **When a subagent completes work** (verify their output)\n- **When user says**: \"verify\", \"check quality\", \"audit code\", \"run verification\", \"quality gate\", \"pre-commit check\"\n\n## Quick Start\n\n```\n1. Identify changed files (git diff --name-only or manual list)\n2. Run the 7-category checklist below on each file\n3. Run automated checks (build, lint, tests)\n4. Report findings as PASS / FAIL / WARNING\n5. Fix all FAIL items before proceeding\n```\n\n---\n\n## The 7-Category Verification Checklist\n\n### Category 1: Variable Declaration Order (TDZ Prevention)\n\n**What to check:** Variables, constants, and hooks used BEFORE their declaration in the same scope.\n\n**How it breaks:** JavaScript `const` and `let` have a \"temporal dead zone\" — referencing them before their declaration line throws `ReferenceError` at runtime, but no build error.\n\n**React-specific**: `useMemo`, `useCallback`, `useEffect` that reference state or derived values declared later in the component. This is the #1 AI-introduced bug.\n\n**Scan pattern:**\n- For every `useMemo`, `useCallback`, `useEffect`: check that ALL variables in the dependency array AND the callback body are declared ABOVE that hook.\n- For every function that references a `const`/`let`: check the declaration is above the function definition.\n- For every destructured import used in a module-level `const`: check for circular dependencies.\n\n**Real examples caught:**\n- `activeQuestions` useMemo referenced 150 lines before its declaration\n- `baseDeps` used in JSX but handler functions declared 100 lines later\n- `DR_FIELDS` referenced in `NFR_CATALOG` before `export const DR_FIELDS` line\n\n**Fix:** Move the declaration above all usages. If it's a React hook, reorder hooks so dependencies come first.\n\n---\n\n### Category 2: Import/Export Integrity\n\n**What to check:** Every import resolves to a real export. Named vs default matches.\n\n**How it breaks:** Build may succeed (tree-shaking ignores dead imports in dev mode) but runtime throws `undefined is not a function`.\n\n**Scan pattern:**\n- For each `import { X } from './file'`: open `./file` and confirm `export { X }` or `export const X` or `export function X` exists.\n- For each `import X from './file'`: confirm `export default X` exists.\n- Flag: `import { X } from './file'` when file only has `export default X` (or vice versa).\n\n**Real examples caught:**\n- `useResizeHandle` imported as default when it's a named export\n- `ConfluencePagePicker` imported as default when it's a named export\n- Removed component still imported in 3 files\n\n**Automated check:**\n```bash\nnpx eslint --rule '{\"import/named\": \"error\", \"import/default\": \"error\"}' src/\n```\n\n---\n\n### Category 3: Reference Integrity\n\n**What to check:** After any rename/remove/move, ALL usages of the old name are updated.\n\n**Scan pattern:**\n- Search for ALL usages of the old name across the project\n- Verify zero references remain to removed identifiers\n- Check that moved code doesn't reference variables from its old scope\n\n**Real examples caught:**\n- `setPrdDocViewMode` was removed but `Cmd+E` handler still called it\n- Removed component still imported in 3 files\n\n```javascript\n// BUG: setPrdDocViewMode was removed but Cmd+E handler still calls it\nuseEffect(() => {\n  const handler = (e) => {\n    if (e.metaKey && e.key === 'e') setPrdDocViewMode(prev => ...);  // ReferenceError\n  };\n}, []);\n```\n\n---\n\n### Category 4: Dead Code Detection\n\n**What to check:** Unused imports, unreachable code, orphaned handlers.\n\n**Scan pattern:**\n- Unused imports: variable imported but never referenced in file body.\n- Orphaned event handlers: `onClick={handleFoo}` removed from JSX but `const handleFoo = ...` still declared.\n- Unreachable code: `return` before a code block, `if (false)` guard, feature-flagged code where flag is always false.\n- State setters never called: `const [x, setX] = useState()` where `setX` appears nowhere.\n- Functions defined but never called.\n\n**Automated check:**\n```bash\nnpx eslint --rule '{\"no-unused-vars\": \"error\", \"no-unreachable\": \"error\"}' src/file.jsx\n```\n\n---\n\n### Category 5: React State & Effects\n\n**What to check:** State variables are used, effects clean up, no updates after unmount, correct dependencies.\n\n#### 5.1 Component Reuse Bugs\nWhen the same component renders for multiple routes (e.g., `OperationalDocEditor` for DR/IRP/Recovery):\n- Does it have a `key={uniqueId}` to force remount on route change?\n- Does it reset internal state when props change?\n\n#### 5.2 Effect Dependencies\nFor every `useEffect`:\n- Are all referenced variables in the dependency array?\n- Are object/array deps stable (memoized) or will they trigger infinite re-renders?\n- Does the cleanup function undo what the effect created?\n\n#### 5.3 Ref Safety\n- Is `ref.current` used in the render return? (Should be state instead — ref changes don't trigger re-render)\n- Are refs initialized before first access? (Common with resize handles)\n- Does `useRef` get set in an effect that runs after the component mounts?\n\n#### 5.4 Async State Updates\n- Does any async callback (fetch, setTimeout) update state after potential unmount?\n- Is there a cleanup function that cancels pending operations?\n- Every `useEffect` that calls an async function should have an abort/cancel mechanism.\n\n**Real examples caught:**\n- `initialLoadRef` set to `true` before async data arrived, blocking subsequent updates\n- `useResizeHandle` ref null on mount because empty state rendered first (MutationObserver fix needed)\n- DR/IRP/Recovery shared `OperationalDocEditor` reused state across route changes (fixed with `key={docType}`)\n- `prdDocViewMode` state removed but `Cmd+E` handler still called `setPrdDocViewMode`\n\n#### Common React Anti-Patterns\n\n| Anti-Pattern | Why It Breaks | Fix |\n|---|---|---|\n| Mutating state directly (`state.push(x)`) | React won't re-render | `setState([...state, x])` |\n| Object/array in `useEffect` deps | New reference every render -> infinite loop | `useMemo` the dep, or use primitive |\n| `ref.current` in render return | Ref changes don't trigger re-render | Use state instead |\n| `history.pushState` with `#fragment` in hash router | Double-hash URL breaks navigation | Use state-based tracking |\n| Inline object as prop (`style={{ color: 'red' }}`) | New reference every render, breaks `memo` | Extract to `useMemo` or module-level const |\n| `useEffect` missing cleanup for async | State update on unmounted component | AbortController or mounted flag |\n\n---\n\n### Category 6: Mock Isolation (Test Files Only)\n\n**What to check:** Mocks don't leak between tests. Fake timers are restored. Tests are meaningful.\n\n#### 6.1 Mock Leakage\n- `vi.mock()` / `jest.mock()` at module level: OK\n- `mockImplementation()` inside a `describe` without `afterEach(() => mock.mockReset())`: LEAK RISK\n- `vi.useFakeTimers()` without corresponding `vi.useRealTimers()` in `afterEach`: LEAK\n- `mockResolvedValueOnce` chains: fragile if test execution order changes. Prefer `mockImplementation` that inspects the call.\n- Multiple `describe` blocks sharing the same `fetch.mock` without isolation: INTERFERENCE\n\n#### 6.2 Tautological Tests\nTests that can never fail:\n- Asserting a mock's return value equals itself\n- `expect(x).toBeDefined()` where x is hardcoded in setup\n- `expect(fn).toHaveBeenCalled()` immediately after calling fn yourself\n- `expect(array.length).toBeGreaterThanOrEqual(0)` (always true)\n\n#### 6.3 Query Specificity\n- `getByText` / `getByRole` that matches multiple elements -> use `getAllBy*` or scope with `within()`\n- Tests that pass because they find the wrong element (e.g., finding a button label that also appears in a tooltip)\n\n#### 6.4 Meaningful Assertions\n- Every test should have at least one assertion\n- Tests should assert behavior, not just \"it renders\"\n- Snapshot tests should be small enough to review\n\n**Real examples caught:**\n- Jira test: `mockResolvedValueOnce` chain broke when test order changed; fixed with request-inspecting `mockImplementation`\n- `ConfluencePagePicker`: fake timers from one test leaked into search filter test\n- `NFRTracker`: missing `SettingsContext` mock caused cascading failures\n\n---\n\n### Category 7: CSS Class Integrity\n\n**What to check:** Every `className` in JSX has a corresponding CSS rule. No orphaned selectors.\n\n#### 7.1 Class Name Integrity\n- Extract all `className=\"...\"` and `className={`...`}` values from the JSX file.\n- For each class, search the associated CSS file(s) for `.classname`.\n- Flag: class used in JSX but not defined in CSS (will silently fail — no visual, no error).\n- Flag: class defined in CSS but not used in any JSX (dead CSS — bloat).\n\n**Note:** Dynamic classes like `className={isActive ? 'active' : ''}` need both branches checked.\n\n#### 7.2 CSS Variable Integrity\nFor every `var(--token)` in CSS:\n- Is the variable defined in `:root` or a parent selector?\n- Is it defined for both light and dark themes?\n\n---\n\n## Automated Verification Script\n\nRun these commands after any code change:\n\n```bash\n# 1. Build check\nnpm run build\n\n# 2. Lint check (catches unused vars, unreachable code)\nnpx eslint src/path/to/changed/file.jsx\n\n# 3. Test check (run tests for changed file)\nnpx vitest run src/path/to/changed/file.test.jsx\n\n# 4. Full suite (after a feature is complete)\nnpx vitest run\n\n# 5. Circular dependency check (if available)\nnpx madge --circular src/\n```\n\n---\n\n## Report Template\n\nUse this format when reporting verification results:\n\n```markdown\n## Verification Report — [Project Name]\n**Date:** [YYYY-MM-DD]\n**Files checked:** [list]\n**Tool:** code-verification skill\n\n### PASS\n- `path/to/file.jsx` — All 7 categories checked, no issues\n\n### FAIL (must fix before proceeding)\n- `path/to/file.jsx:142` — [CAT 1: TDZ] `activeQuestions` referenced before declaration\n  **Fix:** Move `const activeQuestions = useMemo(...)` to line 95 (before `showClarifyingQuestions`)\n\n### WARNING (review, may be intentional)\n- `path/to/file.jsx:88` — [CAT 4: DEAD CODE] `const [oldState, setOldState]` — setOldState never called\n  **Likely:** Leftover from removed feature. Remove if confirmed unused.\n\n### Summary\n| Category | Pass | Fail | Warn |\n|----------|------|------|------|\n| 1. TDZ | 4 | 1 | 0 |\n| 2. Imports | 5 | 0 | 0 |\n| 3. References | 5 | 0 | 0 |\n| 4. Dead Code | 4 | 0 | 1 |\n| 5. React State | 3 | 0 | 2 |\n| 6. Mocks | 3 | 0 | 1 |\n| 7. CSS | 5 | 0 | 0 |\n```\n\n---\n\n## Integration with Agents\n\nThis skill is the workflow. The agents are the executors:\n\n| Agent | Role | When |\n|-------|------|------|\n| `verification-agent` | Runs Categories 1-5, 7 on product code | After implementation |\n| `test-guardian` | Runs Category 6 on test code | After writing tests |\n| `code-reviewer` | Broader quality review (SOLID, perf, security) | Before merge/deploy |\n\n## Integration with Rules\n\n| Rule | Role | When |\n|------|------|------|\n| `quality-gate.mdc` | Enforces 6 mandatory checks after every edit | Always (auto-applied) |\n| `pre-implementation-checklist.mdc` | Prevents bugs before they're written | Always (auto-applied) |\n\n## Quick Commands\n\n```bash\n# Run all tests for a specific file\nnpx vitest run path/to/file.test.jsx\n\n# Run full test suite\nnpx vitest run\n\n# Build check\nnpm run build\n\n# Lint check\nnpx eslint src/path/to/changed/file.jsx\n```\n\n## When to Skip Verification\n\n- Editing **only** markdown, docs, or comments (no executable code)\n- Adding a `TODO` comment\n- Changing **only** CSS values (not selectors or class names)\n- Reverting a commit (restoring known-good state)\n\n## When Verification is MANDATORY (No Exceptions)\n\n- Any `.jsx`, `.js`, `.ts`, `.tsx` file edit\n- Any file rename or move\n- Any import/export change\n- Any React hook addition, removal, or reordering\n- Any state variable addition or removal\n- Any test file modification\n- After running `npm install` or changing `package.json`\n- After merging branches or resolving conflicts\n- After a subagent completes work in another window","tags":["code","verification","coco","rkz91","agent-skills","agents-md","ai-agents","claude-code","codex","cursor","developer-tools","llm-tools"],"capabilities":["skill","source-rkz91","skill-code-verification","topic-agent-skills","topic-agents-md","topic-ai-agents","topic-claude-code","topic-codex","topic-cursor","topic-developer-tools","topic-llm-tools","topic-mcp","topic-pm-tools","topic-product-management","topic-productivity"],"categories":["coco"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/rkz91/coco/code-verification","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add rkz91/coco","source_repo":"https://github.com/rkz91/coco","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 7 github stars · SKILL.md body (12,566 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:14:06.384Z","embedding":null,"createdAt":"2026-05-18T13:21:38.229Z","updatedAt":"2026-05-18T19:14:06.384Z","lastSeenAt":"2026-05-18T19:14:06.384Z","tsv":"'-2':112 '-5':1583 '/file':449,451,470,480 '0':1156,1528,1532,1533,1537,1538,1543,1549,1554,1559,1560 '1':111,172,221,288,1384,1477,1524,1527,1544,1555,1582 '100':367 '142':1475 '150':354 '2':184,402,1390,1529,1550 '3':194,519,533,600,1401,1534,1548,1553 '4':201,626,1413,1501,1526,1539,1542 '5':208,717,1424,1531,1536,1545,1558 '5.1':737 '5.2':773 '5.3':809 '5.4':854 '6':1049,1551,1595,1621 '6.1':1071 '6.2':1120 '6.3':1159 '6.4':1194 '7':16,187,216,1258,1464,1556,1584 '7.1':1277 '7.2':1344 '88':1499 '95':1490 'abort/cancel':888 'abortcontrol':1044 'access':836 'across':560,922 'activ':1339 'activequest':351,1479,1486 'ad':1686 'addit':1731,1738 'aftereach':1085,1094 'agent':1563,1570,1574,1579 'ai':12,58,99,290 'ai-introduc':11,289 'also':1189 'alway':681,1157,1627,1638 'anoth':1764 'anti':94,942,945 'anti-pattern':93,941,944 'appear':693,1190 'appli':1630,1641 'architectur':73 'array':307,786 'array.length':1154 'arriv':900 'assert':1128,1196,1204,1207 'assist':60 'associ':1296 'async':855,860,883,898,1038 'audit':160 'auto':1629,1640 'auto-appli':1628,1639 'autom':196,521,700,1373 'avail':1429 'base':1011 'basedep':359 'bash':523,702,1383,1644 'behavior':1208 'bloat':1332 'block':670,901,1112 'bodi':311,650 'branch':1342,1754 'break':244,421,949,1006,1024 'broader':1605 'broke':1228 'bug':14,57,292,603,740,1633 'build':198,266,422,1385,1389,1663,1667 'button':1186 'call':593,612,686,699,881,937,1109,1150,1509 'callback':310,861 'cancel':875 'cascad':1255 'cat':1476,1500 'catalog':375 'catch':10,55,81,1393 'categori':17,188,217,220,401,532,625,716,1048,1257,1465,1520,1581,1594 'caught':350,493,584,892,1223 'caus':1254 'chain':1097,1227 'chang':37,110,114,126,174,764,772,824,924,986,1103,1232,1382,1407,1690,1727,1750 'check':158,169,197,229,300,325,344,407,522,538,570,632,701,723,1057,1264,1343,1386,1392,1403,1427,1454,1466,1623,1664,1669 'checklist':79,189,219 'circular':346,1425,1432 'class':1260,1278,1293,1303,1320,1335,1697 'classnam':1266,1283,1285,1301,1337 'clean':729 'cleanup':802,872,1036 'cmd':589,608,933 'code':2,25,36,44,59,68,87,109,161,573,628,636,665,669,677,1381,1397,1458,1503,1541,1587,1598,1603,1685 'code-review':1602 'code-verif':1,1457 'color':1018 'come':399 'command':1378,1643 'comment':1682,1689 'commit':168,1701 'common':62,837,939 'complet':143,149,1420,1761 'compon':284,515,596,738,744,852,1043 'confirm':453,471,1517 'conflict':1757 'confluencepagepick':504,1239 'const':246,323,343,378,458,615,660,687,1033,1485,1504 'constant':231 'correct':78,735 'correspond':1091,1271 'cover':15 'creat':808 'css':31,90,1259,1272,1297,1311,1323,1331,1345,1353,1557,1692 'dark':1371 'data':899 'date':1448 'dd':1452 'dead':24,86,252,429,627,1330,1502,1540 'declar':223,237,258,280,313,327,358,366,385,663,1482 'default':417,473,486,497,507 'defin':696,1309,1321,1357,1366 'definit':332 'dep':789,968,977 'depend':306,347,398,736,775,785,1426 'deriv':278 'describ':1083,1111 'destructur':335 'detect':629 'dev':432 'diff':177 'direct':953 'doc':1680 'doctyp':928 'doesn':574 'doubl':1003 'double-hash':1002 'dr':370,379 'dr/irp/recovery':752,917 'dynam':1334 'e':590,609,617,621,934 'e.g':749,1183 'e.key':620 'e.metakey':619 'edit':1626,1677,1719 'effect':720,728,774,807,847 'element':1167,1182 'empti':910 'enforc':1620 'enough':1218 'equal':1134 'error':19,83,267,528,530,710,714,1318 'eslint':525,704,1399,1671 'event':652 'everi':35,108,296,318,334,408,777,878,971,1022,1197,1265,1349,1625 'exampl':349,492,583,891,1222 'except':1712 'execut':1101,1684 'executor':1573 'exist':464,475 'expect':1136,1145,1153 'export':377,414,454,457,461,472,485,503,513 'extract':1026,1281 'fail':206,211,1127,1314,1469,1522 'failur':1256 'fake':1064,1240 'fals':672,682 'featur':122,675,1418,1514 'feature-flag':674 'fetch':862 'fetch.mock':1116 'field':371,380 'file':113,121,127,175,193,482,520,601,649,1053,1290,1298,1408,1453,1651,1718,1721,1743 'filter':1248 'final':144 'find':203,1179,1184 'first':400,835,913 'fix':209,382,915,925,950,1233,1471,1483 'flag':476,676,679,1047,1302,1319 'fn':1146,1151 'forc':760 'format':1438 'fragil':1098 'fragment':998 'full':1414,1657 'function':319,331,365,441,462,695,803,873,884 'gate':145,165 'get':843 'getallbi':1169 'getbyrol':1163 'getbytext':1162 'git':176 'good':1705 'guard':673 'guardian':1592 'handl':840 'handlefoo':655,661 'handler':364,591,610,616,638,653,935 'hardcod':1142 'hash':1000,1004 'history.pushstate':996 'hook':233,316,394,396,1730 'human':97 'identifi':173,569 'ignor':428 'immedi':116,1148 'implement':6,51,103,1589 'import':20,85,336,409,430,446,467,477,495,505,517,598,634,642,644,1530 'import/default':529 'import/export':403,1726 'import/named':527 'infinit':796,973 'initi':833 'initialloadref':893 'inlin':1013 'insid':1081 'inspect':1107,1237 'instal':1748 'instead':822,995 'integr':23,32,404,535,1261,1280,1347,1561,1613 'intent':1497 'interfer':1119 'intern':768 'introduc':13,63,291 'isact':1338 'isol':29,1051,1118 'issu':1468 'item':212 'javascript':245,602 'jest.mock':1075 'jira':1224 'js':1715 'jsx':362,658,1268,1289,1306,1329,1714 'key':757,927 'known':1704 'known-good':1703 'label':1187 'later':281,369 'leak':1061,1087,1095,1245 'leakag':89,1073 'least':1202 'leftov':1511 'let':248,324 'level':342,1032,1078 'light':1369 'like':1336,1510 'line':259,355,368,381,1489 'lint':199,1391,1668 'list':183,1455 'loop':974 'madg':1431 'mandatori':1622,1710 'manual':182 'mark':140 'markdown':1443,1679 'markin':43 'match':418,1165 'may':423,1495 'meaning':1070,1195 'mechan':77,889 'memo':1025 'memoiz':791 'merg':1753 'merge/deploy':1612 'mismatch':21 'miss':101,1035,1251 'mm':1451 'mock':28,88,1050,1058,1072,1130,1253,1552 'mock.mockreset':1086 'mockimplement':1080,1105,1238 'mockresolvedvalueonc':1096,1226 'mode':138,433 'modif':1744 'modul':341,1031,1077 'module-level':340,1030 'mount':853,908,1046 'move':383,572,1484,1724 'multi':120 'multi-fil':119 'multipl':747,1110,1166 'must':1470 'mutat':951 'mutationobserv':914 'name':179,415,502,512,547,559,1279,1447,1698 'name-on':178 'navig':1007 'need':916,1340 'never':646,685,698,1126,1508 'new':969,1020 'nfr':374 'nfrtracker':1250 'no-unreach':711 'no-unused-var':706 'note':1333 'nowher':694 'npm':1387,1665,1747 'npx':524,703,1398,1409,1421,1430,1652,1660,1670 'null':906 'object':1014 'object/array':788,965 'ok':1079 'old':546,558,580 'oldstat':1505 'onclick':654 'one':129,1203,1243 'open':450 'oper':877 'operationaldoceditor':750,919 'order':224,1102,1231 'orphan':91,637,651,1275 'output':153 'package.json':1751 'parent':1362 'pass':130,205,1176,1461,1521 'path/to/file.jsx':1462,1474,1498 'path/to/file.test.jsx':1655 'pattern':95,294,443,551,640,943,946 'pend':876 'perf':1609 'post':5,50 'post-implement':4,49 'potenti':867 'prddocviewmod':929 'pre':167 'pre-commit':166 'pre-implementation-checklist.mdc':1631 'prefer':1104 'prev':623 'prevent':226,1632 'primit':980 'proceed':214,1473 'product':1586 'project':562,1446 'prop':771,1016 'qualiti':159,164,1606 'quality-gate.mdc':1619 'queri':1160 'quick':170,1642 're':798,829,960,991,1636 're-rend':797,828,959,990 'react':26,92,269,393,718,940,956,1546,1729 'react-specif':268 'real':348,413,491,582,890,1221 'red':1019 'ref':810,823,832,905,985 'ref.current':813,981 'refer':22,275,321,534,565,576,970,1021,1535 'referenc':254,353,372,647,781,1480 'referenceerror':261,624 'remain':566 'remount':761 'remov':514,568,587,595,606,656,931,1513,1515,1732,1740 'renam':1722 'rename/remove/move':541 'render':745,799,817,830,912,961,972,983,992,1023,1212 'reorder':395,1734 'report':202,1434,1440,1445 'request':1236 'request-inspect':1235 'reset':767 'resiz':839 'resolv':410,1756 'restor':1067,1702 'result':1442 'return':666,818,984,1132 'reus':739,920 'revert':1699 'review':69,1220,1494,1604,1607 'risk':1088 'role':1575,1617 'root':1359 'rout':748,763,923 'router':1001 'rule':526,705,1273,1615,1616 'run':33,115,123,162,185,195,849,1376,1388,1404,1411,1423,1580,1593,1645,1654,1656,1662,1666,1746 'runtim':263,435 'safeti':811 'say':156 'scan':293,442,550,639 'scope':241,581,1171 'script':1375 'search':552,1247,1294 'secur':1610 'selector':1276,1363,1695 'set':844,894 'setoldst':1506,1507 'setprddocviewmod':585,604,622,938 'setstat':962 'setter':684 'settimeout':863 'settingscontext':1252 'setup':1144 'setx':689,692 'shake':427 'share':918,1113 'showclarifyingquest':1492 'silent':1313 'skill':46,1460,1565 'skill-code-verification' 'skip':1675 'small':1217 'snapshot':1213 'solid':1608 'source-rkz91' 'specif':270,1161,1650 'src':531,1433 'src/file.jsx':715 'src/path/to/changed/file.jsx':1400,1672 'src/path/to/changed/file.test.jsx':1412 'stabl':790 'start':171 'state':276,683,719,724,769,821,856,865,911,921,930,952,963,994,1010,1039,1547,1706,1736 'state-bas':1009 'state.push':954 'state/effects':27 'still':516,592,597,611,662,936 'structur':82 'style':71,1017 'subag':148,1760 'subsequ':902 'succeed':424 'suit':1415,1659 'summari':1519 'switch':134 'system':8 'systemat':48 'task':142 'tautolog':1121 'tdz':18,84,225,1478,1525 'templat':1435 'tempor':251 'test':40,133,136,200,1052,1063,1068,1100,1122,1123,1174,1198,1205,1214,1225,1230,1244,1249,1402,1405,1591,1597,1601,1647,1658,1742 'test-guardian':1590 'theme':1372 'throw':260,436 'timer':1065,1241 'tobedefin':1138 'tobegreaterthanorequ':1155 'todo':1688 'tohavebeencal':1147 'token':1351 'tool':1456 'tooltip':1193 'topic-agent-skills' 'topic-agents-md' 'topic-ai-agents' 'topic-claude-code' 'topic-codex' 'topic-cursor' 'topic-developer-tools' 'topic-llm-tools' 'topic-mcp' 'topic-pm-tools' 'topic-product-management' 'topic-productivity' 'track':1012 'tree':426 'tree-shak':425 'trigger':795,827,989 'true':896,1158 'ts':1716 'tsx':1717 'undefin':437 'undo':804 'uniqueid':758 'unmount':734,868,1042 'unreach':635,664,713,1396 'unus':633,641,708,1394,1518 'updat':549,732,857,864,903,1040 'url':1005 'usag':388,543,555 'use':106,234,337,360,727,814,979,993,1008,1168,1304,1326,1436 'usecallback':272,298 'useeffect':273,299,614,778,879,967,1034 'usememo':271,297,352,975,1028,1487 'user':155 'useref':842 'useresizehandl':494,904 'usest':690 'valu':279,1133,1286,1693 'var':709,1350,1395 'variabl':222,230,303,577,643,725,782,1346,1356,1737 'verif':3,7,45,52,137,163,218,1374,1441,1444,1459,1578,1676,1708 'verifi':151,157,563 'verification-ag':1577 'versa':490 'vi.mock':1074 'vi.usefaketimers':1089 'vi.userealtimers':1092 'vice':489 'visual':1316 'vitest':1410,1422,1653,1661 'vs':416 'warn':207,1493,1523 'window':1765 'within':1173 'without':1084,1090,1117 'won':957 'work':150,1762 'workflow':53,1568 'write':39,1600 'writing/modifying':132 'written':1637 'wrong':1181 'x':447,455,459,463,468,474,478,487,688,955,964,1137,1140 'yyyi':1450 'yyyy-mm-dd':1449 'zero':564 'zone':253","prices":[{"id":"c0cafad9-ba6a-4fcc-8928-8fd84fe9150b","listingId":"aec1e4fe-6868-4f0f-a35b-58349613d0aa","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"rkz91","category":"coco","install_from":"skills.sh"},"createdAt":"2026-05-18T13:21:38.229Z"}],"sources":[{"listingId":"aec1e4fe-6868-4f0f-a35b-58349613d0aa","source":"github","sourceId":"rkz91/coco/code-verification","sourceUrl":"https://github.com/rkz91/coco/tree/main/skills/code-verification","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:38.229Z","lastSeenAt":"2026-05-18T19:14:06.384Z"}],"details":{"listingId":"aec1e4fe-6868-4f0f-a35b-58349613d0aa","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"rkz91","slug":"code-verification","github":{"repo":"rkz91/coco","stars":7,"topics":["agent-skills","agents-md","ai","ai-agents","claude-code","codex","cursor","developer-tools","llm-tools","mcp","pm-tools","product-management","productivity","prompt-engineering","workflow-automation"],"license":"mit","html_url":"https://github.com/rkz91/coco","pushed_at":"2026-04-26T01:51:27Z","description":"Open-source library of AI superpowers — 59 skills, 34 commands, 10 agents + 24 GSD subagents, 3 system bundles. An entire team, wherever your AI lives. Vendor-neutral across Claude Code, Cursor, Codex, and any AGENTS.md tool.","skill_md_sha":"9a3e8c70c90277e0c5c7e3038d0bdf831fa23d1e","skill_md_path":"skills/code-verification/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/rkz91/coco/tree/main/skills/code-verification"},"layout":"multi","source":"github","category":"coco","frontmatter":{"name":"code-verification","description":"Post-implementation verification system that catches AI-introduced bugs. Covers 7 categories — TDZ errors, import mismatches, reference integrity, dead code, React state/effects, mock isolation, and CSS integrity. Run after every code change, after writing tests, or before marking a task complete. Triggers on \"verify\", \"check code quality\", \"run verification\", \"audit code\", \"quality gate\", \"pre-commit check\"."},"skills_sh_url":"https://skills.sh/rkz91/coco/code-verification"},"updatedAt":"2026-05-18T19:14:06.384Z"}}