Agent skill · Audited from source

browser-bridge

skill · liuzhengdongfortest/codestableLicence not declaredAudited 20 Oct 2026 · source 9b7eaed4bb35

★ 1,112pushed 63 days ago
✕BLOCKGrade F · 53/100 · 21 findings · 9b7eaed
1,112repo stars · whole liuzhengdongfortest/codestable

Is it safe? No — BLOCK, grade F (53/100). We read this skill's source at commit 9b7eaed4bb35 and observed filesystem, network and shell access and no hard-coded secrets. The audit raised 21 findings, 5 critical or high. What it does: CodeStable skill authoring and evolution protocol. Use when creating, refactoring, simplifying, or reviewing cs-* skills under plugins/codestable/skills or .claude/skills. Produces a thin harness, an explicit context…

Ask an AI about this pageGChatGPTCClaudePPerplexityGeGeminiXGrok
More
Cite

Cite this page

ModelsAtlas. “browser-bridge (liuzhengdongfortest/codestable)”. Retrieved 20 Oct 2026. https://modelsatlas.com/skills/liuzhengdongfortest/browser-bridge

Blocked. The page stays public so you can check this skill if someone recommended it to you. The audit found 5 critical or high findings, starting with “Code injection” in .claude/skills/eval-cs-skill/scripts/scorers/learning_transfer.py:326. Do not install it without reading them.

Trust audit

Audit 0.4.1 · source read 20 Oct 2026

Trust score53/100✕BLOCK F
0 critical5 high3 medium10 low3 info

BLOCK means the audit found something that could harm you or your machine. Grade F is shared by 105 of 14,816 audited skills.

What the source does

  • FilesystemDeclared5 observations
  • NetworkDeclared7 observations
  • ShellDeclared7 observations
  • DependenciesPinnedNothing floats
  • SecretsNone foundNo keys in source

Five audit layers

LayerWhat we checkResultFindings
L0 ProvenanceRepo owner, licence, archive status, activityPASS4
L1 Static sourceSecrets, path traversal, supply chain, hidden codeFAIL16
L2 InstructionsPrompt injection, authority framing, hidden directivesFAIL1
L3 InventoryThe files and declarations match the sourcePASS0
L4 SandboxRun in isolation and watch behaviourSKIPPED why0

Gates applied: instruction override, no behavioural pass, no license.

Findings (21)

HIGHCode injectioncode.deserialize · .claude/skills/eval-cs-skill/scripts/scorers/learning_transfer.py:326
F-02 Code injectionCWE-78 · CWE-94 · CWE-95Layer L1
metadata = yaml.load(frontmatter, Loader=_UniqueKeyLoader)
Why
deserialises untrusted bytes into live objects
Fix
use json or yaml.safe_load
HIGHCode injectioncode.eval_exec · .claude/skills/eval-cs-skill/scripts/harness/mock.py:18
F-02 Code injectionCWE-78 · CWE-94 · CWE-95Layer L1
"eval(", "exec(", "os.system", "subprocess", "shell=true", "pickle.loads",
Why
evaluates text as code
Fix
remove; use a parser or a dispatch table
HIGHCode injectioncode.eval_exec · .claude/skills/eval-cs-skill/scripts/harness/mock_weak.py:16
F-02 Code injectionCWE-78 · CWE-94 · CWE-95Layer L1
WEAK_SIGNATURES = ("eval(", "os.system", "password")
Why
evaluates text as code
Fix
remove; use a parser or a dispatch table
HIGHNetwork egressnet.tls_off · .claude/skills/eval-cs-skill/scripts/harness/mock.py:19
F-04 Network egressCWE-200 · CWE-319Layer L1
"md5", "verify=false", "password", "secret", "token", "api_key",
Why
certificate verification is disabled
Fix
leave verification on
HIGHPrompt injectionprompt.override · WORKFLOW.en.md:89
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
a reassessment of risk and assurance, not an unconditional bypass of safety gates. Stop adding artifacts and
Why
asks the agent to drop prior instructions or safety
Fix
remove the instruction
MEDIUMCode injectioncode.dynamic_import · .claude/skills/eval-cs-skill/scripts/harness/__init__.py:16
F-02 Code injectionCWE-78 · CWE-94 · CWE-95Layer L1
importlib.import_module(f".{_mod}", __name__)
Why
No further detail recorded for this rule.
Fix
—
MEDIUMCode injectioncode.dynamic_import · .claude/skills/eval-cs-skill/scripts/scorers/__init__.py:17
F-02 Code injectionCWE-78 · CWE-94 · CWE-95Layer L1
importlib.import_module(f".{_mod}", __name__)
Why
No further detail recorded for this rule.
Fix
—
MEDIUMNetwork egressnet.raw_ip · .claude/skills/eval-cs-skill/scripts/harness/adapter_codex.py:350
F-04 Network egressCWE-200 · CWE-319Layer L1
yield f"http://127.0.0.1:{server.server_port}/v1"
Why
No further detail recorded for this rule.
Fix
—
LOWInventory / provenanceinv.no_license
F-13 Inventory / provenanceCWE-1104Layer L0
Why
no LICENSE file and no repo licence
Fix
add a licence
LOWCode injectioncode.eval_exec · .claude/skills/eval-cs-skill/tests/test_cs_skill_eval.py:203
F-02 Code injectionCWE-78 · CWE-94 · CWE-95Layer L1
"task": {"kind": "review", "diff": "+eval(payload)"},
Why
evaluates text as code
Fix
remove; use a parser or a dispatch table
LOWInsecure cryptocrypto.weak_hash · experiments/cs-code-review-001/fixtures/planted-defect/pd-005.json:9
F-09 Insecure cryptoCWE-327 · CWE-338Layer L1
"diff": "+import hashlib\n+def digest(pw):\n+    return hashlib.md5(pw.encode()).hexdigest()"
Why
No further detail recorded for this rule.
Fix
—
LOWInsecure cryptocrypto.weak_hash · experiments/cs-refactor-001/fixtures/planted-defect/rf-008.json:8
F-09 Insecure cryptoCWE-327 · CWE-338Layer L1
"diff": "-    return hashlib.sha256(x).hexdigest()\n+    return hashlib.md5(x).hexdigest()"
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · .claude/skills/eval-cs-skill/tests/test_cs_learning_transfer_sequence.py:1005
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
("commondir", "../../outside-git\n"),
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · .claude/skills/eval-cs-skill/tests/test_cs_skill_eval.py:742
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
fixture["id"] = "../../escape"
Why
No further detail recorded for this rule.
Fix
—
LOWNetwork egressnet.raw_ip · .claude/skills/eval-cs-skill/tests/test_cs_skill_eval_harness.py:1182
F-04 Network egressCWE-200 · CWE-319Layer L1
monkeypatch.setenv("OPENAI_BASE_URL", f"http://127.0.0.1:{server.server_port}/v1")
Why
No further detail recorded for this rule.
Fix
—
LOWNetwork egressnet.raw_ip · .claude/skills/eval-cs-skill/tests/test_cs_skill_eval_harness.py:1238
F-04 Network egressCWE-200 · CWE-319Layer L1
base_url=f"http://127.0.0.1:{upstream.server_port}/v1",
Why
No further detail recorded for this rule.
Fix
—
LOWNetwork egressnet.raw_ip · .claude/skills/eval-cs-skill/tests/test_cs_skill_eval_harness.py:1294
F-04 Network egressCWE-200 · CWE-319Layer L1
self.send_header("Location", f"http://127.0.0.1:{sink.server_port}/capture")
Why
No further detail recorded for this rule.
Fix
—
LOWNetwork egressnet.raw_ip · .claude/skills/eval-cs-skill/tests/test_cs_skill_eval_harness.py:1303
F-04 Network egressCWE-200 · CWE-319Layer L1
base_url=f"http://127.0.0.1:{upstream.server_port}/v1",
Why
No further detail recorded for this rule.
Fix
—
INFOInventory / provenanceinv.oversize · asset/CodeStableVSAgent.png
F-13 Inventory / provenanceCWE-1104Layer L0
asset/CodeStableVSAgent.png
Why
1703959 bytes not read
Fix
—
INFOInventory / provenanceinv.oversize · asset/CodeStabvle.png
F-13 Inventory / provenanceCWE-1104Layer L0
asset/CodeStabvle.png
Why
1301816 bytes not read
Fix
—
INFOInventory / provenanceinv.oversize · asset/PromotionalImage.png
F-13 Inventory / provenanceCWE-1104Layer L0
asset/PromotionalImage.png
Why
1526804 bytes not read
Fix
—

Audit 0.4.1 · source sha 9b7eaed4bb35 · 20 Oct 2026Report an issue or request a re-scan

Provenance

Who published it, and what the verdict is pinned to

  • Publisherliuzhengdongfortest GitHub organizationOwner of the repository this skill is read from
  • Source folderliuzhengdongfortest/codestableThe exact folder we audited
  • LicenceNot declaredAs the repository states it
  • Commit pinned for this verdict9b7eaed4bb35A new audit runs when the source changes
  • Repository statusNot archivedLast push 63 days ago
  • Sandboxed runNot runSkills are read, not executed; layer L4 is skipped

What it tells the agent

Full source on GitHub ↗

Its description: CodeStable skill authoring and evolution protocol. Use when creating, refactoring, simplifying, or reviewing cs-* skills under plugins/codestable/skills or .claude/skills. Produces a thin harness, an explicit context…

---
name: build-cs-skill
description: "CodeStable skill authoring and evolution protocol. Use when creating, refactoring, simplifying, or reviewing cs-* skills under plugins/codestable/skills or .claude/skills. Produces a thin harness, an explicit context plan, evidence gates, and an optional agent collaboration contract. Do not use for product implementation; use eval-cs-skill only for measured experiment loops."
---

# build-cs-skill

## Purpose

Build the smallest always-loaded control surface that lets an agent select relevant context, respect
hard gates, collaborate safely, and leave recoverable evidence. `SKILL.md` is the **thin harness**;
references and repository facts are **thick context**. Thick means decision-useful, not large.

Specify responsibility, authority, context selection, evidence, and stop conditions. Leave safe
implementation choices to the executing agent.

## Scope And References

Targets are `plugins/codestable/skills/<skill-name>/` or `.claude/skills/<local-skill-name>/`.

Load only the reference needed for the current decision:

- `references/cs-skill-spec-standard.md`: contract definitions, typed decisions, recovery, and output semantics.
- `references/cs-skill-quality-gates.md`: review algorithm for placement, context, evolution, runtime alignment, and validation safety.
- `references/cs-skill-fixture-patterns.md`: risky routing, checkpoint, failure, compatibility, or
  forbidden-action scenarios.

## Spec

```haskell
data SkillKind
  = OperatorSkill | WorkflowSkill | MethodologySkill | CompatibilityShim | ReferenceDoc

data SkillShape = NoActiveSkill | ThinOperator | ContextualWorkflow | ToolBackedWorkflow
                | ShimSkill | ReferenceSkill
data ProcessProtocol = WorkflowProtocol | DomainProtocol | LifecycleProtocol
                     | OperationProtocol | AlgorithmProtocol | ShimRoute | ReferenceOnly
data RulePlacement = Harness | StageContext | ProjectContext | DeterministicGate | Remove
data DelegationRole = Orchestrator | LeafExecutor

selectSkillShape :: SkillKind -> SkillSource -> SkillShape
selectSkillShape kind source | not (independentSkillNeeded kind source) = NoActiveSkill
selectSkillShape kind source =
  case kind of
    ReferenceDoc      -> ReferenceSkill
    CompatibilityShim -> ShimSkill
    OperatorSkill     -> ThinOperator
    WorkflowSkill
      | deterministicRouter source -> ToolBackedWorkflow
      | otherwise                  -> ContextualWorkflow
    MethodologySkill  -> ContextualWorkflow

selectProcessProtocol :: SkillKind -> SkillSource -> ProcessProtocol
selectProcessProtocol kind source =
  case kind of
    WorkflowSkill
      | lifecycleDriven source -> LifecycleProtocol
      | otherwise              -> WorkflowProtocol
    OperatorSkill
      | algorithmic source -> AlgorithmProtocol
      | otherwise          -> OperationProtocol
    MethodologySkill  -> DomainProtocol
    CompatibilityShim -> ShimRoute
    ReferenceDoc      -> ReferenceOnly

placeRule :: Rule -> RulePlacement
placeRule r
  | mechanizable r                                    = DeterministicGate
  | nonMechanizableSafety r                           = Harness
  | projectSpecific r                                 = ProjectContext
  | stageSpecific r                                   = StageContext
  | everyInvocationNeeds r && changesDecisionOrGate r = Harness
  | otherwise                                         = Remove

buildContextPlan :: SkillShape -> [PlacedRule] -> ContextPlan
buildThinHarness :: SkillShape -> ResponsibilityContract -> ContextPlan -> Markdown
```

## Build Protocol

### 1. Establish scope and responsibility

Read the target and relevant repository design facts; inspect git status and preserve unrelated edits.
State the one outcome the skill owns, its authority boundary, completion evidence, and unsafe stop
conditions. Authoring itself does not require project preflight. A generated skill adds preflight only
when its behavior depends on project setup, repository facts, artifact writes, or recovery.

If there is no independent installable responsibility, or an existing skill/reference/tool owns it,
select `NoActiveSkill`. A retired v1 CodeStable name also selects `NoActiveSkill`; migration prose is
not an instruction to recreate a compatibility shim. Use `ReferenceSkill` only when knowledge has an
independent distribution contract.

### 2. Choose the minimum shape

Classify before writing; do not default to a full protocol refactor. Use `ThinOperator` for one
action/artifact, `ContextualWorkflow` for staged or recoverable work, and `ToolBackedWorkflow` when a
deterministic router/gate owns fragile choices. `ShimSkill` contains only a canonical target and
preset, and is allowed only when a newly accepted distribution contract explicitly ships that alias.
`ReferenceSkill` contains knowledge without an invented workflow.

Use high freedom for safe implementation choices, medium for preferred patterns, and low only for
fragile operations or invariant-sensitive ordering.

### 3. Place every rule once

Inventory current and proposed rules before editing. Record each rule's source, affected decision,
frequency, and `RulePlacement`; then apply `placeRule`.

- Mechanizable safety and repeated transformations -> script, hook, or gate.
- Stage methods, templates, and examples -> stage reference.
- Project facts, ADRs, and learnings -> repository CodeStable artifacts.
- Every-invocation decisions and non-mechanizable hard gates -> harness.
- Generic advice, duplicated rationale, stale prose, and behavior-neutral steps -> remove.

Information must have one canonical home. Do not retain the same route, gate, or method in both the
harness and a prose reference.

### 4. Build the context plan before the harness

Call `buildContextPlan` before writing the body. For every context source state when to load it, why
it matters, how freshness is checked, when enough context has been gathered, and how an already
loaded fact is reused.

Entry context i

Excerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.

Install

Pinned to the audited commit 9b7eaed

git clone https://github.com/liuzhengdongfortest/codestable
git -C codestable checkout 9b7eaed4bb35

The author documents no install command, so this uses the repository directly. Our verdict covers commit 9b7eaed4bb35 only.

Works in which agents?

What its own text says, not a test

AgentStatusMore
Claude CodeMentioned in its text, not testedSkills for Claude Code · About Claude Code
CodexMentioned in its text, not testedSkills for Codex · About Codex
CursorMentioned in its text, not testedSkills for Cursor · About Cursor
“Mentioned” means the skill’s text names the agent. We have not run it there.

Audit history

Every audit, every source change

  1. ✕BLOCK F 53 / 100

    first audit · source 9b7eaed4bb35

README badge

For maintainers · shows the latest audit

ModelsAtlas: BLOCK FMODELSATLASBLOCK · F
[![ModelsAtlas: BLOCK F](https://modelsatlas.com/skills/liuzhengdongfortest/browser-bridge/badge.svg)](https://modelsatlas.com/skills/liuzhengdongfortest/browser-bridge/)

The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.

Similar skills

Add this badge to your README

[![ModelsAtlas: BLOCK F](https://modelsatlas.com/skills/liuzhengdongfortest/browser-bridge/badge.svg)](https://modelsatlas.com/skills/liuzhengdongfortest/browser-bridge/)

Questions about browser-bridge

What does the browser-bridge skill do?
CodeStable 是一套面向严肃软件工程、坚持人在环的 AI 编码工作流。它不以编排 Agent 为中心,而是组织需求、架构、特性、问题与历史决策,让 Codex 和 Claude 驱动的开发过程可控、可追溯、可持续演进。
Is browser-bridge safe to install?
No — not without reading the findings first. The audit graded it F (53/100) and found 5 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What can browser-bridge access on my machine?
The audit observed that it reaches the network, runs shell commands and reads or writes files. Each of those is consistent with what it says it does. Secrets in the source: none found.
Which assistants does browser-bridge work with?
Its documentation mentions claude-code, codex and cursor. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (9b7eaed4bb35), read on 2026-10-20. The repository is watched, and a new audit runs when it changes — this is the first audit.

Sources

Spotted something wrong? Report a correction · Methodology

Keep going in your AI

Opens with this page as the source. We add nothing else to the prompt.