Skills/ClawHub/vibe-ledger

vibe-ledger@0.1.0

VERIFIED· install only

Publisher claims: "Explain an AI-built ("vibe-coded") app to the person who made it and check it at the same time. Draws the project's files as an interactive flowchart — click a file to read what it does, what calls it, its main functions, its risks and how it came to be — and, from the Claude Code and Codex conversations that built it, checks every requirement the user gave against the code (done, partly, not done, done differently, superseded) and keeps a ledger of what was asked for, claimed and put off, each checked against verified code evidence. Renders one offline HTML page (flowchart, a requirements tab, and an overview with app map, who-can-see matrix, conversation timeline and call paths). Use when someone wants to understand or sanity-check an app an AI wrote — "explain my app", "how do my files connect", "what did the AI actually build", "did it do what I asked", "is my vibe-coded app safe", "AI 有没有按我的要求做", "帮我看懂这个 AI 写的项目", "这些文件之间怎么调用的", "检查一下 AI 写的代码有没有问题". Runs locally and sends nothing anywhere." Observed in sandbox: no network, touches nothing outside the project, writes no memory.

Registry ClawHubPublisher dong845 · publishing for 60 daysInstalls 22Last detonated 3d ago
$clawhub install vibe-ledger
WatchReport an issue

Coverage

Nothing executable in the bundle ran; the trace covers the install step only.
Tested
every file read, file written and host contacted by what ran
Not tested
use of the skill by an agent

Is [email protected] safe to install?

KillerSkills ran it in the KillerSkills honeypot sandbox (1 scenario; nothing executable in the bundle ran; the trace covers the install step only) on 2026-11-11 and scored it 82/100 (Verified). In what ran, nothing we could detect went wrong: no undeclared network egress, no credential reads, no persistent instruction writes. What it does with a real credential was not observed; the static findings and the publisher carry the rest of the score. Summary: no network, touches nothing outside the project, writes no memory.

Behavior trace

Honeypot run · 0 s · 1 scenarios · 0 deviations
t+CategoryObserved action
0.0sprocessno install scripts in bundle
0.0sprocessscript backend runs setup only
0.0sprocessscript backend runs setup only
0.0sprocessno install scripts to re-run

Static findings

MEDIUM
Python subprocess execution detectedscripts/common.py:141 · Python subprocess execution detectedres = subprocess.run(["git", "-C", str(root), "ls-files", "-z"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
HIGH
Access to sensitive file pathsscripts/probes/secrets_exposed.py:44 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesreturn name.startswith(".env") and not name.endswith(EXAMPLE_SUFFIXES)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Access to sensitive file pathstests/test_render_map_access.py:69 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filescells["anonymous"] = {"read": "deny", "write": "unknown", "evidence": ["E2"], "from_probe": ["secrets_exposed:.env.local:2"],Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
File type combined with upload actionscripts/ledger_report/vendor/dagre.min.js:1 · File type combined with upload action — agent may exfiltrate local data files…rhs.push(r)}),t}function he(e,n){let t=Date.now();try{return n()}finally{console.log(e+" time: "+(Date.now()-t)+"ms")}}function q(e,n){return n()}var ct=0;function $(e){let n=++ct;return e+(""+n)}function A(e,n,t=1){n==null&&(n=e,e=0);let …Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
Python subprocess execution detectedscripts/common.py:158 · Python subprocess execution detectedres = subprocess.run(["git", "-C", str(root), "check-ignore", "-z", "--stdin"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedtests/test_requirements.py:182 · Python subprocess execution detectedsubprocess.run(["git", "-C", str(root), "add", ".gitignore", "README.md", "scripts", "blob.bin"], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
npx invocation of non-well-known packagetests/e2e/scenarios.py:32 · npx invocation of non-well-known package — may execute untrusted codes.bash("npx supabase db push", 'Error: new row violates row-level security policy for table "notes"', is_error=True)Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Python subprocess execution detectedtests/test_probes_stack_secrets_supabase.py:60 · Python subprocess execution detectedsubprocess.run(["git", "-C", str(tmp_path), "add", ".env"], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Access to sensitive file pathstests/fixtures/answers/notes-supabase.json:5 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files{"probe": "secrets_exposed", "path": ".env.local", "level": "certain"},Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Access to sensitive file pathstests/test_probes_stack_secrets_supabase.py:58 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system fileswrite(tmp_path, ".env", "A=1\n")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Access to sensitive file pathstests/fixtures/answers/notes-supabase.json:23 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files"paths_any": [".env.local", "app/api/summarize"], "text_any": ["key", "密钥", "openai"]},Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Access to sensitive file pathstests/test_verify_evidence.py:117 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesassert verify.check_code({"path": ".env.local", "line": 2, "snippet": redact.redact(raw)}, tmp_path)["ok"]Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Python subprocess execution detectedscripts/shot.py:34 · Python subprocess execution detectedsubprocess.run([chrome, "--headless=new", "--disable-gpu", "--hide-scrollbars",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
npx invocation of non-well-known packagetests/e2e/scenarios.py:111 · npx invocation of non-well-known package — may execute untrusted codes.bash("npx supabase db push", 'Error: new row violates row-level security policy for table "todos"', is_error=True)Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Python subprocess execution detectedtests/test_graph_build.py:184 · Python subprocess execution detectedsubprocess.run(["git", "init", "-q", str(root)], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Access to sensitive file pathstests/e2e/scenarios.py:41 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filess.write(p / ".env.local", read(".env.local"))Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Access to sensitive file pathstests/test_verify_evidence.py:114 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system fileswrite(tmp_path, ".env.local", f"A=1\nNEXT_PUBLIC_OPENAI_API_KEY={KEY}\n")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
npx invocation of non-well-known packagetests/e2e/scenarios.py:36 · npx invocation of non-well-known package — may execute untrusted codes.bash("npx supabase db push", "Finished supabase db push.")Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
npx invocation of non-well-known packagetests/test_sessions_claude.py:17 · npx invocation of non-well-known package — may execute untrusted codes.bash("npx supabase db push", "Error: new row violates row-level security policy", is_error=True)Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Python subprocess execution detectedtests/test_requirements.py:177 · Python subprocess execution detectedsubprocess.run(["git", "init", "-q", str(root)], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Access to sensitive file pathstests/test_probes_stack_secrets_supabase.py:42 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system fileswrite(tmp_path, ".env.local", f"NEXT_PUBLIC_SUPABASE_ANON_KEY={jwt('anon')}\nNEXT_PUBLIC_OPENAI_API_KEY={OPENAI}\n"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Python subprocess execution detectedtests/test_probes_stack_secrets_supabase.py:59 · Python subprocess execution detectedsubprocess.run(["git", "init", "-q", str(tmp_path)], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Access to sensitive file pathstests/helpers/verified.py:13 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files"level": "certain", "path": ".env.local", "line": 2,Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Access to sensitive file pathstests/helpers/verified.py:33 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files"verdict_dev": "NEXT_PUBLIC_OPENAI_API_KEY in .env.local", "evidence": ["E3"],Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Python subprocess execution detectedscripts/shot.py:88 · Python subprocess execution detectedres = subprocess.run([chrome, "--headless=new", "--disable-gpu", "--window-size=1400,900",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedtests/test_cli.py:83 · Python subprocess execution detectedres2 = subprocess.run([sys.executable] + render_cmd[1:], capture_output=True, text=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedtests/test_cli.py:79 · Python subprocess execution detectedres = subprocess.run([sys.executable] + check[1:], capture_output=True, text=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Access to sensitive file pathstests/test_probes_stack_secrets_supabase.py:44 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system fileswrite(tmp_path, ".env.example", f"NEXT_PUBLIC_OPENAI_API_KEY={OPENAI}\n")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
npx invocation of non-well-known packagetests/test_cli.py:32 · npx invocation of non-well-known package — may execute untrusted codes.bash("npx supabase db push", "Error: new row violates row-level security policy", is_error=True)Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
Access to sensitive file pathstests/test_probes_stack_secrets_supabase.py:47 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesassert got == [(".env.local", 2, "certain"), (".env.local", 4, "certain")]Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Access to sensitive file pathstests/test_verify_evidence.py:116 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesassert verify.check_code({"path": ".env.local", "line": 2, "snippet": raw}, tmp_path)["ok"]Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Access to sensitive file pathstests/helpers/verified.py:12 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files"E3": {"kind": "probe", "finding_id": "secrets_exposed:.env.local:2", "ok": True, "probe": "secrets_exposed",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05

Cost to the agent

Instructions loaded
≈1,920 tok
1 file · 128 in bundle

Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.

Known vulnerabilities

Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.

vibe-ledger@0.1.0 safety verdict: Verified (install only) — KillerSkills