Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Audit a live web page in five phases (catalog, click, trace, classify, report) to identify mock data, hardcoded values, LLM-generated metrics, and broken endpoints. Outputs a markdown report with REAL/MOCK/LLM/HARDCODED/BROKEN/UNKNOWN verdicts per visible value.
.claude/skills/lingxling-mock-hunter/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 125% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 382% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 24% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 116% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 31% | 0% |
MockHunter is a Claude Code skill that audits a live web page and tells you, for every visible value, whether it is real, mocked, LLM-generated, hardcoded, broken, or unknown. It is built for vibe-coded apps (Lovable, Bolt, v0, Replit, AI Studio, Cursor Composer) where the UI may look complete but the data layer often is not. It uses Playwright MCP to drive a real browser, then traces each visible value through the network and DOM to its source.
This skill adapts the upstream CodeShuX/mockhunter project (community source).
*.lovable.app, *.bolt.new, *.v0.app, *.replit.app, aistudio.google.com, otherwise Custom)browser_navigate to the target URL/delete|remove|cancel|deactivate|terminate|destroy|drop|wipe|clear|reset|logout|sign out|transfer|pay|purchase|charge|send (email|message|invoice)|publish|deploy/i): click, observe, classify outcome (modal, toast, navigation, network call, NO-OP)For every visible value, run this decision tree:
Did any network request return this value?
├── YES — found in a response:
│ ├── Status 4xx/5xx → BROKEN
│ ├── Endpoint matches /ai|openai|generate|llm|chat → LLM
│ ├── Response shape matches mock library (faker, MSW, mockoon) → MOCK
│ ├── Uniformity flags trigger → MOCK or LLM (review)
│ ├── DB connection provided?
│ │ ├── Run read-only SELECT, value matches DB row → REAL
│ │ └── Value not in DB → MOCK
│ └── No DB → UNKNOWN (best-guess)
└── NO — value not in any network response:
├── String literal in DOM source → HARDCODED
├── Computed from Math.random / Date.now / faker → MOCK
└── Cannot determine → UNKNOWNUniformity heuristics flag suspicious data:
Generate mockhunter-report.md with:
User: /mockhunter audit https://my-app.lovable.app/admin
Skill: [Phase 1] Stack detected: Lovable. Auth: skip. DB: no.
[Phase 2] Catalog: 6 stat cards, 4 verification queues, 8 activity items.
[Phase 3] Search box: NO-OP (zero network requests). Activity link → 404.
[Phase 4] Bundle 2.7 MB. Zero /api/, zero supabase, zero axios.
"$42,850" → string literal in JSX → HARDCODED.
"+12% vs last month" → string literal → HARDCODED.
[Phase 5] Verdict: 23 HARDCODED, 1 BROKEN, 1 NO-OP, 0 REAL.
Report written to ./mockhunter-report.mdUser: /mockhunter audit https://example-saas.com
Skill: ...
[Phase 5] Verdict: 8 REAL, 18 HARDCODED (intentional marketing copy),
0 MOCK, 0 BROKEN, 2 UNKNOWN.
No console errors, no broken endpoints.mockhunter@example.com) for any throwaway form tests, never the user's real credentials| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 8,971 | 11,296 | +26% | 1 | 1 | 0% | 1,485 | 3,344 | +125% | 0 | 0 | — |
case-02 | fail→pass | 24,894 | 13,912 | -44% | 1 | 1 | 0% | 729 | 3,511 | +382% | 0 | 0 | — |
case-03 | fail→pass | 17,078 | 8,635 | -49% | 1 | 1 | 0% | 2,433 | 3,025 | +24% | 0 | 0 | — |
case-04 | fail→pass | 7,480 | 5,578 | -25% | 1 | 1 | 0% | 1,053 | 2,277 | +116% | 0 | 0 | — |
case-05 | fail→pass | 15,467 | 8,762 | -43% | 1 | 1 | 0% | 2,286 | 2,985 | +31% | 0 | 0 | — |
case-06 | fail→pass | 106,713 | 6,059 | -94% | 1 | 1 | 0% | 1,860 | 2,550 | +37% | 0 | 0 | — |
case-07 | fail→pass | 12,012 | 5,709 | -52% | 1 | 1 | 0% | 1,713 | 2,333 | +36% | 0 | 0 | — |
case-08 | pass→pass | 7,446 | 3,522 | -53% | 1 | 1 | 0% | 912 | 2,211 | +142% | 0 | 0 | — |
case-09 | pass→pass | 14,326 | 8,521 | -41% | 1 | 1 | 0% | 1,837 | 3,015 | +64% | 0 | 0 | — |
case-10 | pass→pass | 23,110 | 7,345 | -68% | 1 | 1 | 0% | 1,436 | 2,199 | +53% | 0 | 0 | — |
case-11 | pass→pass | 10,162 | 4,531 | -55% | 1 | 1 | 0% | 1,299 | 2,328 | +79% | 0 | 0 | — |
case-12 | fail→pass | 6,839 | 3,809 | -44% | 1 | 1 | 0% | 1,154 | 2,267 | +96% | 0 | 0 | — |
case-13 | fail→pass | 14,885 | 6,563 | -56% | 1 | 1 | 0% | 1,948 | 2,491 | +28% | 0 | 0 | — |
case-14 | fail→pass | 17,006 | 6,485 | -62% | 1 | 1 | 0% | 1,880 | 2,586 | +38% | 0 | 0 | — |
case-15 | fail→pass | 15,575 | 5,650 | -64% | 1 | 1 | 0% | 2,184 | 2,527 | +16% | 0 | 0 | — |
case-16 | fail→pass | 20,876 | 5,799 | -72% | 1 | 1 | 0% | 2,424 | 2,144 | -12% | 0 | 0 | — |
case-17 | pass→pass | 12,839 | 5,638 | -56% | 1 | 1 | 0% | 1,969 | 2,423 | +23% | 0 | 0 | — |
case-18 | pass→pass | 4,840 | 2,845 | -41% | 1 | 1 | 0% | 705 | 1,968 | +179% | 0 | 0 | — |
case-19 | pass→pass | 10,421 | 2,123 | -80% | 1 | 1 | 0% | 1,480 | 1,931 | +30% | 0 | 0 | — |
case-20 | fail→pass | 63,292 | 3,766 | -94% | 1 | 1 | 0% | 1,685 | 1,826 | +8% | 0 | 0 | — |
case-21 | fail→pass | 12,094 | 5,544 | -54% | 1 | 1 | 0% | 2,162 | 2,464 | +14% | 0 | 0 | — |
case-22 | fail→fail | 15,973 | 22,926 | +44% | 1 | 1 | 0% | 2,120 | 3,366 | +59% | 0 | 0 | — |
case-23 | fail→fail | 10,244 | 7,529 | -27% | 1 | 1 | 0% | 1,284 | 2,530 | +97% | 0 | 0 | — |
case-24 | fail→fail | 12,842 | 19,923 | +55% | 1 | 1 | 0% | 2,715 | 6,126 | +126% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted, and 23 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +58 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.