Test BridgeSAFE
Mobile client for Codex and Claude — control coding agents from your phone via WebSocket bridge
Overview
Mobile client for Codex and Claude — control coding agents from your phone via WebSocket bridge
6b4afc353bc7OBSERVED · 2026-10-12What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
---
name: test-bridge
description: Bridge Server (TypeScript) のテスト実行・型チェック・テスト記述ガイド
allowed-tools: Bash(npx:*), Bash(npm:*), Read, Glob, Grep
---
# Bridge Server テスト
## 実行手順
変更した挙動に対応するテストと静的検証を選ぶ。全体テストは、共通基盤・依存関係への変更や回帰懸念がある場合、または全体検証を依頼された場合に実行する。成功済みの検証を理由なく繰り返さない。以下はコマンドの選択肢。
### 1. ユニットテスト
```bash
npm run test:bridge
```
特定ファイルのみ:
```bash
cd packages/bridge && npx vitest run src/<filename>.test.ts
```
ウォッチモード (開発中):
```bash
cd packages/bridge && npx vitest src/<filename>.test.ts
```
### 2. TypeScript 型チェック
```bash
npx tsc --noEmit -p packages/bridge/tsconfig.json
```
テストファイル (`*.test.ts`) と `vitest.config.ts` は `tsconfig.json` の exclude に入っているため、型チェック対象外。
### 3. カバレッジ (任意)
```bash
npm run test:bridge:coverage
```
## テスト記述規約
### ファイル配置・命名
- テストファイルはソースと同じディレクトリに `<module>.test.ts` として配置
- 例: `src/parser.ts` → `src/parser.test.ts`
- vitest.config.ts の include パターン: `src/**/*.test.ts`
### import
```typescript
import { describe, it, expect } from "vitest";
```
- vitest からのみ import する (jest の互換 API は使わない)
- テスト対象モジュールは `.js` 拡張子で import する (NodeNext moduleResolution)
- 例: `import { parseRule } from "./claude-process.js";`
### テスト構造
```typescript
describe("関数名 or クラス名", () => {
it("動作の説明 (英語)", () => {
expect(actual).toBe(expected);
});
});
```
- `describe` でテスト対象の関数/クラス単位にグルーピング
- `it` の説明は英語で、三人称現在形 (`"returns null for empty string"`)
- 1つの `it` で1つの振る舞いを検証する
### テスト対象の方針
- 純粋関数・ロジック中心にテストする (高ROI)
- プロセスspawn, ファイルシステム, WebSocket等の外部依存は対象外
- 現在テスト対象のモジュール:
- `parser.ts` — parseClaudeEvent, claudeEventToServerMessage, parseClientMessage, normalizeToolResultContent
- `claude-process.ts` — parseRule, matchesSessionRule, buildSessionRule, toolNeedsApproval, ACCEPT_EDITS_AUTO_APPROVE
- `image-store.ts` — ImageStore.extractImagePaths
### 新しいテスト追加時
1. export されている純粋関数があればテスト追加を検討
2. internal関数をテストしたい場合は `export` に変更する (テスト可能性のための export は OK)
3. テスト追加後は型チェックが通ること (`npx tsc --noEmit`) も確認Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | NA |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (2)
.agents/skills
AGENTS.md
Gates applied: no_behavioural_pass.
6b4afc353bc7full audit observations/trust-audit/skill/k9i-0__test-bridge.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | 6b4afc353bc7 | SAFE | B | 89 | first audit |
Questions
What does the Test Bridge skill do?
Mobile client for Codex and Claude — control coding agents from your phone via WebSocket bridge
Is Test Bridge safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can Test Bridge access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
How current is this page?
The grade is for one exact copy of the source (6b4afc353bc7), read on 2026-10-12. The repository is watched, and a new audit runs when it changes — this is the first audit.