{"id":"62c398c8-76dd-4085-86bc-06c1a9a02de8","shortId":"spbwYc","kind":"skill","title":"ql-verify","tagline":"Part of the quantum-loop autonomous development pipeline (brainstorm \\u2192 spec \\u2192 plan \\u2192 execute \\u2192 review \\u2192 verify). Iron Law verification gate. Requires fresh evidence before any completion claim. Use before claiming work is done, before committing, or befor","description":"# Quantum-Loop: Verify\n\n## The Iron Law\n\n```\nNO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.\n```\n\nThis is not a guideline. This is not a best practice. This is a law. There are zero exceptions.\n\n## The 5-Step Gate Function\n\nEvery claim that something \"works\", \"passes\", or \"is done\" must pass through these 5 steps:\n\n### Step 1: IDENTIFY\nWhat command or check proves the claim?\n\nExamples:\n- \"Tests pass\" → `npm test` or `pytest`\n- \"Build succeeds\" → `npm run build` or `tsc --noEmit`\n- \"Lint clean\" → `eslint .` or `ruff check`\n- \"Feature works\" → specific test command + manual check\n- \"Bug is fixed\" → test that reproduces the original bug\n\n### Step 2: RUN\nExecute the complete command. Right now. Fresh. Not from memory or cache.\n\nRules:\n- Run the FULL command, not a subset\n- Run it in the current state of the code, not from before your changes\n- Do not use cached results from a previous run\n- Do not skip the command because \"it passed last time\"\n\n### Step 3: READ\nRead the ENTIRE output. Not just the last line.\n\nCheck:\n- Exit code (0 = success, non-zero = failure)\n- Total number of tests (passed, failed, skipped)\n- Warning messages (warnings can hide real problems)\n- Specific error messages (not just \"X tests passed\")\n\n### Step 4: VERIFY\nDoes the output ACTUALLY confirm the claim?\n\nCommon traps:\n- \"15 tests passed\" but 3 were skipped → those 3 might be the important ones\n- \"Build succeeded\" but with warnings → warnings might indicate runtime failures\n- \"0 errors\" from linter but build still fails → linter ≠ compiler\n- \"Test passed\" but the test itself is wrong → test may not test what you think\n\n### Step 5: CLAIM\nONLY NOW may you state that something works, passes, or is done.\n\nYour claim must include:\n- The exact command you ran\n- The key output (pass count, exit code)\n- Timestamp (when you ran it)\n\n## Verification Requirements by Claim Type\n\n| Claim | Required Evidence |\n|-------|-------------------|\n| \"Tests pass\" | `0 failures` AND `0 errors` in fresh test run output |\n| \"Linter clean\" | `0 errors` AND `0 warnings` in fresh lint output |\n| \"Build succeeds\" | Exit code 0 from fresh build command |\n| \"Bug is fixed\" | Test reproducing original symptom now passes |\n| \"Feature works\" | All acceptance criteria verified with specific evidence |\n| \"Story is done\" | ALL of the above that apply + spec compliance review passed |\n| \"Typecheck passes\" | Exit code 0 from `tsc --noEmit` or equivalent |\n\n## Red Flags -- STOP Immediately\n\nIf you notice ANY of these, you are about to violate the Iron Law:\n\n### Language Red Flags\n- Using \"should\" → \"Tests **should** pass\" means you haven't run them\n- Using \"probably\" → \"This **probably** works\" means you don't know\n- Using \"seems to\" → \"It **seems to** be working\" means you haven't verified\n- Using \"I believe\" → \"I **believe** this is correct\" means you're guessing\n- Using \"based on\" → \"**Based on** the changes, it should work\" means you haven't checked\n\n### Behavioral Red Flags\n- Expressing satisfaction before running verification (\"Great!\", \"Perfect!\", \"Done!\")\n- Trusting a subagent's report without independent verification\n- Relying on a previous run instead of a fresh one\n- Checking only part of the test suite\n- Skipping verification because \"the change was small\"\n\n## Anti-Rationalization Table\n\n| Excuse | Reality |\n|--------|---------|\n| \"It should work now\" | RUN the verification. \"Should\" is not evidence. |\n| \"I'm confident this is correct\" | Confidence ≠ evidence. Run the command. |\n| \"Just this once we can skip\" | No exceptions. The Iron Law has zero exceptions. |\n| \"The linter passed, so it works\" | Linter ≠ compiler ≠ runtime. Each checks different things. |\n| \"The agent said it succeeded\" | Verify independently. Agents can hallucinate success. |\n| \"I already tested this earlier\" | Earlier ≠ now. Code changed since then. Run it fresh. |\n| \"This change is too small to break anything\" | Small changes cause the hardest-to-debug failures. Verify. |\n| \"Partial check is enough\" | Partial proves nothing. Run the full verification. |\n| \"The test I wrote passes, so the feature works\" | Your test might be wrong. Check it tests the right thing. |\n| \"Manual testing confirmed it\" | Manual testing is not reproducible evidence. Run automated checks. |\n| \"It's just a type change, typecheck is enough\" | Type changes can break runtime behavior. Run tests too. |\n| \"Different words but same idea, so rule doesn't apply\" | Spirit over letter. If you're rationalizing, you're violating. |\n\n## Integration with /quantum-loop:execute\n\nWhen called from the execution loop, this skill:\n1. Receives the claim type and story context\n2. Identifies the verification commands from the task definition in quantum.json\n3. Runs all commands fresh\n4. Reports results back to the execution loop\n5. Updates quantum.json with verification evidence\n\n## Standalone Usage\n\nWhen invoked directly by the user:\n1. Ask what claim needs verification\n2. Identify the appropriate commands\n3. Run the 5-step gate function\n4. Report results with full evidence\n\n## Integration Verification (for multi-story features)\n\nBefore claiming a feature is complete, verify:\n\n1. **All imports resolve:** Run the project's entry point import\n   - Python: `python -c \"import <main_module>\"`\n   - Node: `node -e \"require('./<entry_point>')\"`\n   - Go: `go build ./...`\n2. **All new functions have call sites outside tests:** Use LSP \"Find References\" or grep\n3. **Full test suite passes:** Not just per-story tests — ALL tests\n4. **No type mismatches across story boundaries:** Use LSP \"Hover\" or manual inspection\n5. **Intent-drift audit (Phase 7 / P1.4):** If `quantum.json.userIntent` exists, consult the most recent `intentDrift` entry (or invoke `/quantum-loop:ql-intent-check` if missing). A `verdict` of `CRITICAL_DRIFT_BLOCKS_MERGE` **MUST** block `STORY_PASSED`/`COMPLETE` signals. A `DRIFT_DETECTED_REVIEW_REQUIRED` verdict requires user acknowledgement in the commit message or a `userClarifications[]` entry explaining the re-negotiation. `NO_DRIFT` and `MINOR_DRIFT` are passing.\n6. **Claim-check signal (Phase 5 / P1.5):** if the orchestrator exposes `SIGNAL_CLAIM_FINDINGS` non-`clean` for the current story's output, do NOT accept exact/high confidence; downgrade or escalate.\n\nThis is part of the Iron Law: \"it passes unit tests\" is NOT evidence that the feature works. Integration evidence is required. \"Each story passed its review\" is NOT evidence that the stories work together. **Silent scope drift** (user asked for X, implementation delivered Y) is a real-world regression mode — which is why the intent-drift gate is mandatory when the snapshot exists.\n\n### Machine-checkable gate (quantum.json excerpt)\n\n```json\n{\n  \"intentDrift\": {\n    \"feature-task-priority\": {\n      \"verdict\": \"NO_DRIFT\",\n      \"summary\": {\"critical\": 0, \"high\": 0, \"medium\": 0, \"low\": 0}\n    }\n  }\n}\n```\n\nRefuse to emit `<quantum>STORY_PASSED</quantum>` if `.intentDrift[<current-feature>].verdict == \"CRITICAL_DRIFT_BLOCKS_MERGE\"`. Emit `<quantum>STORY_FAILED</quantum>` with the drift findings in the failureLog instead.","tags":["verify","quantum","loop","andyzengmath","agent-skills","agentskills","claude-code","claude-code-plugin","claude-code-skill","skillsmp"],"capabilities":["skill","source-andyzengmath","skill-ql-verify","topic-agent-skills","topic-agentskills","topic-claude-code","topic-claude-code-plugin","topic-claude-code-skill","topic-skillsmp"],"categories":["quantum-loop"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/andyzengmath/quantum-loop/ql-verify","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add andyzengmath/quantum-loop","source_repo":"https://github.com/andyzengmath/quantum-loop","install_from":"skills.sh"}},"qualityScore":"0.461","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 22 github stars · SKILL.md body (7,086 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-04-24T07:02:01.857Z","embedding":null,"createdAt":"2026-04-18T23:04:48.642Z","updatedAt":"2026-04-24T07:02:01.857Z","lastSeenAt":"2026-04-24T07:02:01.857Z","tsv":"'/quantum-loop':729,905 '0':216,280,351,354,363,366,376,416,1068,1070,1072,1074 '1':99,739,785,823 '15':256 '2':146,747,791,845 '3':202,260,264,758,796,860 '4':245,763,803,873 '5':79,96,306,771,799,886,960 '6':954 '7':892 'accept':393,979 'acknowledg':933 'across':877 'actual':250 'agent':603,609 'alreadi':614 'anti':548 'anti-ration':547 'anyth':634 'appli':407,716 'appropri':794 'ask':786,1024 'audit':890 'autom':687 'autonom':10 'back':766 'base':490,492 'befor':44 'behavior':504,703 'believ':479,481 'best':68 'block':917,920,1085 'boundari':879 'brainstorm':13 'break':633,701 'bug':136,144,381 'build':115,119,270,285,372,379,844 'c':836 'cach':159,185 'call':732,850 'caus':637 'chang':181,495,544,621,628,636,694,699 'check':104,128,135,213,503,533,599,646,670,688,909,957 'checkabl':1053 'claim':34,37,54,84,107,253,307,321,344,346,742,788,817,956,967 'claim-check':955 'clean':124,362,970 'code':176,215,335,375,415,620 'command':102,133,151,164,195,326,380,574,751,761,795 'commit':42,936 'common':254 'compil':289,596 'complet':33,53,150,821,923 'complianc':409 'confid':566,570,981 'confirm':251,678 'consult':897 'context':746 'correct':484,569 'count':333 'criteria':394 'critic':915,1067,1083 'current':172,973 'debug':642 'definit':755 'deliv':1028 'detect':927 'develop':11 'differ':600,707 'direct':781 'doesn':714 'done':40,91,319,401,514 'downgrad':982 'drift':889,916,926,948,951,1022,1043,1065,1084,1092 'e':840 'earlier':617,618 'emit':1077,1087 'enough':648,697 'entir':206 'entri':831,902,941 'equival':421 'error':237,281,355,364 'escal':984 'eslint':125 'everi':83 'evid':30,58,348,398,563,571,685,776,808,998,1004,1014 'exact':325 'exact/high':980 'exampl':108 'except':77,582,588 'excerpt':1056 'excus':551 'execut':19,148,730,735,769 'exist':896,1050 'exit':214,334,374,414 'explain':942 'expos':965 'express':507 'fail':227,287,1089 'failur':221,279,352,643 'failurelog':1096 'featur':129,390,663,815,819,1001,1060 'feature-task-prior':1059 'find':856,968,1093 'fix':138,383 'flag':423,442,506 'fresh':29,56,154,357,369,378,531,626,762 'full':163,654,807,861 'function':82,802,848 'gate':27,81,801,1044,1054 'go':842,843 'great':512 'grep':859 'guess':488 'guidelin':63 'hallucin':611 'hardest':640 'hardest-to-debug':639 'haven':450,474,501 'hide':233 'high':1069 'hover':882 'idea':711 'identifi':100,748,792 'immedi':425 'implement':1027 'import':268,825,833,837 'includ':323 'independ':521,608 'indic':277 'inspect':885 'instead':528,1097 'integr':727,809,1003 'intent':888,908,1042 'intent-drift':887,1041 'intentdrift':901,1058,1081 'invok':780,904 'iron':24,50,438,584,990 'json':1057 'key':330 'know':463 'languag':440 'last':199,211 'law':25,51,73,439,585,991 'letter':719 'line':212 'lint':123,370 'linter':283,288,361,590,595 'loop':9,47,736,770 'low':1073 'lsp':855,881 'm':565 'machin':1052 'machine-check':1051 'mandatori':1046 'manual':134,676,680,884 'may':299,310 'mean':448,459,472,485,499 'medium':1071 'memori':157 'merg':918,1086 'messag':230,238,937 'might':265,276,667 'minor':950 'mismatch':876 'miss':911 'mode':1036 'multi':813 'multi-stori':812 'must':92,322,919 'need':789 'negoti':946 'new':847 'node':838,839 'noemit':122,419 'non':219,969 'non-zero':218 'noth':651 'notic':428 'npm':111,117 'number':223 'one':269,532 'orchestr':964 'origin':143,386 'output':207,249,331,360,371,976 'outsid':852 'p1.4':893 'p1.5':961 'part':4,535,987 'partial':645,649 'pass':88,93,110,198,226,243,258,291,316,332,350,389,411,413,447,591,660,864,922,953,993,1009,1079 'per':868 'per-stori':867 'perfect':513 'phase':891,959 'pipelin':12 'plan':17 'point':832 'practic':69 'previous':189,526 'prioriti':1062 'probabl':455,457 'problem':235 'project':829 'prove':105,650 'pytest':114 'python':834,835 'ql':2,907 'ql-intent-check':906 'ql-verifi':1 'quantum':8,46 'quantum-loop':7,45 'quantum.json':757,773,1055 'quantum.json.userintent':895 'ran':328,339 'ration':549,723 're':487,722,725,945 're-negoti':944 'read':203,204 'real':234,1033 'real-world':1032 'realiti':552 'receiv':740 'recent':900 'red':422,441,505 'refer':857 'refus':1075 'regress':1035 'reli':523 'report':519,764,804 'reproduc':141,385,684 'requir':28,342,347,841,929,931,1006 'resolv':826 'result':186,765,805 'review':21,410,928,1011 'right':152,674 'ruff':127 'rule':160,713 'run':118,147,161,168,190,359,452,510,527,557,572,624,652,686,704,759,797,827 'runtim':278,597,702 'said':604 'satisfact':508 'scope':1021 'seem':465,468 'signal':924,958,966 'silent':1020 'sinc':622 'site':851 'skill':738 'skill-ql-verify' 'skip':193,228,262,540,580 'small':546,631,635 'snapshot':1049 'someth':86,314 'source-andyzengmath' 'spec':15,408 'specif':131,236,397 'spirit':717 'standalon':777 'state':173,312 'step':80,97,98,145,201,244,305,800 'still':286 'stop':424 'stori':399,745,814,869,878,921,974,1008,1017,1078,1088 'subag':517 'subset':167 'succeed':116,271,373,606 'success':217,612 'suit':539,863 'summari':1066 'symptom':387 'tabl':550 'task':754,1061 'test':109,112,132,139,225,242,257,290,294,298,301,349,358,384,445,538,615,657,666,672,677,681,705,853,862,870,872,995 'thing':601,675 'think':304 'time':200 'timestamp':336 'togeth':1019 'topic-agent-skills' 'topic-agentskills' 'topic-claude-code' 'topic-claude-code-plugin' 'topic-claude-code-skill' 'topic-skillsmp' 'total':222 'trap':255 'trust':515 'tsc':121,418 'type':345,693,698,743,875 'typecheck':412,695 'u2192':14,16,18,20,22 'unit':994 'updat':772 'usag':778 'use':35,184,443,454,464,477,489,854,880 'user':784,932,1023 'userclarif':940 'verdict':913,930,1063,1082 'verif':26,57,341,511,522,541,559,655,750,775,790,810 'verifi':3,23,48,246,395,476,607,644,822 'violat':436,726 'warn':229,231,274,275,367 'without':55,520 'word':708 'work':38,87,130,315,391,458,471,498,555,594,664,1002,1018 'world':1034 'wrong':297,669 'wrote':659 'x':241,1026 'y':1029 'zero':76,220,587","prices":[{"id":"f7ecbe67-e85b-4e17-8096-ddfb4aeb28f7","listingId":"62c398c8-76dd-4085-86bc-06c1a9a02de8","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"andyzengmath","category":"quantum-loop","install_from":"skills.sh"},"createdAt":"2026-04-18T23:04:48.642Z"}],"sources":[{"listingId":"62c398c8-76dd-4085-86bc-06c1a9a02de8","source":"github","sourceId":"andyzengmath/quantum-loop/ql-verify","sourceUrl":"https://github.com/andyzengmath/quantum-loop/tree/master/skills/ql-verify","isPrimary":false,"firstSeenAt":"2026-04-18T23:04:48.642Z","lastSeenAt":"2026-04-24T07:02:01.857Z"}],"details":{"listingId":"62c398c8-76dd-4085-86bc-06c1a9a02de8","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"andyzengmath","slug":"ql-verify","github":{"repo":"andyzengmath/quantum-loop","stars":22,"topics":["agent-skills","agentskills","claude-code","claude-code-plugin","claude-code-skill","skillsmp"],"license":"mit","html_url":"https://github.com/andyzengmath/quantum-loop","pushed_at":"2026-04-24T05:48:29Z","description":"Spec-driven autonomous development loop for Claude Code. Combines structured PRD generation, dependency DAG execution, two-stage review gates, and Iron Law verification.","skill_md_sha":"e8fb0fe87abd16a56abe40c6d9e06e967f1d755f","skill_md_path":"skills/ql-verify/SKILL.md","default_branch":"master","skill_tree_url":"https://github.com/andyzengmath/quantum-loop/tree/master/skills/ql-verify"},"layout":"multi","source":"github","category":"quantum-loop","frontmatter":{"name":"ql-verify","description":"Part of the quantum-loop autonomous development pipeline (brainstorm \\u2192 spec \\u2192 plan \\u2192 execute \\u2192 review \\u2192 verify). Iron Law verification gate. Requires fresh evidence before any completion claim. Use before claiming work is done, before committing, or before marking a story as passed. Triggers on: verify, check, prove it works, ql-verify."},"skills_sh_url":"https://skills.sh/andyzengmath/quantum-loop/ql-verify"},"updatedAt":"2026-04-24T07:02:01.857Z"}}