Open-source Vibe Testing suite: an MCP server for the coding agent you already run, a VS Code review cockpit, and CI. Your agent explores your app and crystallizes each flow into a plain @playwright/test spec you own — record == replay, runs in CI with zero AI.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio counts 28 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
assert_visible
-
browser_navigate
-
browser_snapshot
-
capture_requests
-
check_control
-
click_control
-
cloud_context
-
cloud_failures
-
cloud_run_result
-
crystallize_a11y_spec
-
crystallize_api_spec
-
crystallize_spec
-
crystallize_visual_spec
-
declare_guard
-
detect_shared_flows
-
extract_page_objects
-
fill_control
-
lint_map
-
optimize_brief
-
promote_optimized_spec
-
recall_business_knowledge
-
recall_fact
-
record_fact
-
replay_request
-
replay_spec
-
save_optimized_spec
-
select_control
-
verify_specs
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 73f59a6 · analyzer v33 · 1w ago
skills & prompt files 1
- agent-rules Hyperyond-Hover-73f59a6/CLAUDE.md
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 91
filesystem 43
- fs Hyperyond-Hover-73f59a6/packages/core/src/activeEnv.ts :13
import { readFileSync, writeFileSync, mkdirSync } from 'node:fs'; - fs Hyperyond-Hover-73f59a6/packages/core/src/cloud.ts :16
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs'; - fs Hyperyond-Hover-73f59a6/packages/core/src/memory/businessMemory.ts :21
import { mkdir, readdir, readFile, writeFile } from 'node:fs/promises'; - fs Hyperyond-Hover-73f59a6/packages/core/src/memory/gitignore.ts :17
import { readFile, writeFile } from 'node:fs/promises'; - fs Hyperyond-Hover-73f59a6/packages/core/src/playwright/launchChrome.ts :11
import { existsSync, unlinkSync } from 'node:fs'; - fs Hyperyond-Hover-73f59a6/packages/core/src/sessions/sessions.ts :12
import { mkdir, readdir, readFile, writeFile } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/apiMap.ts :20
import { mkdir, readFile, writeFile } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/declareGuard.ts :15
import { mkdir, readFile, writeFile } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/detectSharedFlows.ts :20
import { readdir, readFile } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/extractPageObjects.ts :13
import { mkdir, writeFile } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/lintWiki.ts :17
import { readFile, readdir } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/optimizeSpec.ts :13
import { readFile, mkdir, writeFile, readdir, rm } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/pageObjectManifest.ts :15
import { mkdir, readFile, writeFile } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/sidecar.ts :18
import { mkdir, writeFile, readFile } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/wikiLog.ts :13
import { appendFile, mkdir, readFile } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/writeA11ySpec.ts :14
import { mkdir, writeFile } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/writeApiSpec.ts :12
import { mkdir, writeFile } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/writeSpec.ts :19
import { mkdir, writeFile } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/src/specs/writeVisualSpec.ts :13
import { mkdir, writeFile } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/cloud.test.ts :1
import { mkdtempSync, readFileSync, rmSync, statSync } from 'node:fs'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/memory/businessMemory.test.ts :2
import { mkdtempSync, rmSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/memory/gitignore.test.ts :2
import { mkdtempSync, rmSync, writeFileSync, readFileSync, existsSync } from 'node:fs'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/sessions/sessions.test.ts :2
import { mkdtempSync, rmSync } from 'node:fs'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/apiMap.test.ts :2
import { mkdtempSync, rmSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/declareGuard.test.ts :2
import { mkdtempSync, rmSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/detectSharedFlows.test.ts :2
import { mkdtempSync, rmSync } from 'node:fs'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/extractPageObjects.test.ts :2
import { mkdtemp, rm, readFile, readdir } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/lintWiki.test.ts :2
import { mkdtemp, rm, mkdir, writeFile } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/multiType.test.ts :2
import { mkdtemp, rm, readFile } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/optimizeSpec.test.ts :4
} from 'node:fs'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/sidecar.test.ts :2
import { mkdtempSync, rmSync, mkdirSync, writeFileSync, existsSync } from 'node:fs'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/wikiLog.test.ts :2
import { mkdtemp, rm, readFile } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/writeApiSpec.test.ts :2
import { mkdtemp, rm, readFile } from 'node:fs/promises'; - fs (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/writeSpec.test.ts :2
import { mkdtempSync, rmSync, readFileSync, writeFileSync, existsSync } from 'node:fs'; - fs Hyperyond-Hover-73f59a6/packages/mcp/src/hook.ts :37
import { existsSync, mkdirSync, readFileSync, realpathSync, writeFileSync } from 'node:fs'; - fs Hyperyond-Hover-73f59a6/packages/mcp/src/mcp.ts :30
import { existsSync, readFileSync } from 'node:fs'; - fs Hyperyond-Hover-73f59a6/packages/vscode-ext/src/businessMapView.ts :56
json = JSON.parse(Buffer.from(await vscode.workspace.fs.readFile(uri)).toString('utf-8')); - fs Hyperyond-Hover-73f59a6/packages/vscode-ext/src/cloud.ts :16
import { rmSync } from 'node:fs'; - fs Hyperyond-Hover-73f59a6/packages/vscode-ext/src/environments.ts :95
const buf = await vscode.workspace.fs.readFile(uri); - fs Hyperyond-Hover-73f59a6/packages/vscode-ext/src/environmentsView.ts :371
const existing = Buffer.from(await vscode.workspace.fs.readFile(envUri)).toString('utf8'); - fs Hyperyond-Hover-73f59a6/packages/vscode-ext/src/extension.ts :22
import { existsSync, readFileSync, mkdirSync } from 'node:fs'; - fs Hyperyond-Hover-73f59a6/packages/vscode-ext/src/githubCi.ts :96
await vscode.workspace.fs.writeFile(vscode.Uri.joinPath(folder, '.hover', 'runs', ledgerName), entry); - fs (weak) Hyperyond-Hover-73f59a6/scripts/postinstall-build.mjs :13
import { existsSync, readdirSync, statSync } from 'node:fs';
shell / exec 4
- shell Hyperyond-Hover-73f59a6/packages/core/src/playwright/launchChrome.ts :10
import { spawn } from 'node:child_process'; - shell Hyperyond-Hover-73f59a6/packages/mcp/src/mcp.ts :32
import { execFile } from 'node:child_process'; - shell Hyperyond-Hover-73f59a6/packages/vscode-ext/src/githubCi.ts :11
import { execFile } from 'node:child_process'; - shell (weak) Hyperyond-Hover-73f59a6/scripts/postinstall-build.mjs :16
import { spawn } from 'node:child_process';
network 7
- net Hyperyond-Hover-73f59a6/packages/core/src/playwright/launchChrome.ts :113
const res = await fetch(`http://localhost:${port}/json/version`, { signal: AbortSignal.timeout(1500) }); - net (weak) Hyperyond-Hover-73f59a6/packages/core/tests/specs/writeApiSpec.test.ts :74
expect(src).toContain('await request.fetch('); - net Hyperyond-Hover-73f59a6/packages/mcp/src/hook.ts :51
fetch(url, { ...init, signal: AbortSignal.timeout(CLOUD_TIMEOUT_MS) }); - net Hyperyond-Hover-73f59a6/packages/mcp/src/mcp.ts :95
await fetch(TARGET, { method: 'HEAD', signal: AbortSignal.timeout(4000), redirect: 'manual' }); - net Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/controller.ts :366
const res = await ctx.fetch(opts.url, { method: m, ...reqOpts }); - net Hyperyond-Hover-73f59a6/packages/vscode-ext/src/extension.ts :183
await fetch(url, { signal: ctrl.signal }); - net Hyperyond-Hover-73f59a6/packages/vscode-ext/src/githubCi.ts :46
const r = await fetch(`https://api.github.com${path}`, {
tool registrations 28
- browser_navigate Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :156
- browser_snapshot Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :162
- click_control Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :172
- fill_control Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :182
- select_control Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :204
- check_control Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :210
- assert_visible Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :219
- recall_business_knowledge Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :228
- recall_fact Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :238
- record_fact Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :250
- crystallize_spec Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :273
- capture_requests Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :290
- replay_request Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :303
- crystallize_api_spec Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :323
- crystallize_visual_spec Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :337
- crystallize_a11y_spec Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :359
- replay_spec Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :381
- verify_specs Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :393
- detect_shared_flows Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :407
- extract_page_objects Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :417
- lint_map Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :428
- optimize_brief Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :441
- save_optimized_spec Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :453
- promote_optimized_spec Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :466
- cloud_context Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :478
- cloud_failures Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :488
- cloud_run_result Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :500
- declare_guard Hyperyond-Hover-73f59a6/packages/mcp/src/mcp/server.ts :513
install hooks 4
- prepare Hyperyond-Hover-73f59a6/package.json :15
husky - postinstall Hyperyond-Hover-73f59a6/package.json :16
node scripts/postinstall-build.mjs - prepack Hyperyond-Hover-73f59a6/packages/core/package.json :60
pnpm run clean && pnpm run build - prepack Hyperyond-Hover-73f59a6/packages/mcp/package.json :42
pnpm run clean && pnpm run build
declared dependencies 9
- @commitlint/cli@^19.7.0
- @commitlint/config-conventional@^19.7.0
- @playwright/test@^1.60.0
- @types/node@^25.9.1
- concurrently@^9.2.1
- cross-env@^10.1.0
- husky@^9.1.7
- tsx@^4.22.0
- typescript@^5.9.0