conduct-empirical-wire-capture
关于
This skill captures runtime HTTP and telemetry data from CLI tools for verification and analysis. It provides multiple capture methods (transcript files, proxies, etc.) and outputs diff-friendly JSONL artifacts. Use it to confirm static findings, obtain payload shapes for re-implementation, or observe actual network behavior.
快速安装
Claude Code
推荐npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/conduct-empirical-wire-capture在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
實測線捕
建可重現之線捕架,取 CLI 具之運時 HTTP 與遙測,配每觀察目標至最廉之捕道。
範與倫
配捕前必讀。
- 線捕為 己 之求、己 賬、己 機。捕他用流為竊非研——越範。
- 憑證幾必現於生線出。捕時即削(步六)——勿「先捕後削」。
- 捕為 觀,非變。勿以所捕繞服鏈限、重放他用會、或未授而啟暗功。
- 此技之出為內構件。線發現之公佈經
redact-for-public-disclosure(親導 Phase 5),非此技。
用
- 靜發現(旗、端、遙名)須運時確其實發
- 須載形於客重實、埋點、版差
- 暗活辨須觀二進實發之物,非束疑之物
- 版間默變→欲可重現構件以對後版
勿用於:版基線(用 monitor-binary-version-baselines)、旗態探(用 probe-feature-flag-state)、或備削以公佈(用 redact-for-public-disclosure)。
入
- 必:可本地對己賬行之 CLI 具。
- 必:具體問(如「端 X 於事 Y 發乎?」、「遙事 Z 之載形何?」)。無問之捕→無人讀之日誌。
- 可:前階之靜發現(標目、候旗列、疑端)範捕標。
- 可:構件之私工作區路徑。默
./captures/——須於.gitignore。
行
一:先建觀察表
配捕前先列所須答之問,各配一捕道。每標一行。
| target | observable via | blocker |
|---|---|---|
| Outbound HTTP to endpoint X | verbose-fetch stderr | TUI noise pollutes terminal |
| Telemetry event Y on user action | hook-driven subprocess | requires harness hook surface |
| Token-refresh handshake | outbound HTTP proxy | cert trust required |
| Scheduled-task lifecycle event | long-running session capture | wallclock alignment |
| Local config mutation | on-disk state diff | none — cheapest channel |
常見道,廉者先:
- 磁態檔變——具寫態於已知路→快照間
diff免費。 - 謄本檔——具已寫會謄本→直析之。無埋點。
- verbose-fetch stderr——束供環變(如 bun 之
BUN_CONFIG_VERBOSE_FETCH=curl)路每 fetch 至 stderr。噪而全捕。 - hook 驅子進——具露生命 hook(
UserPromptSubmit、Stop等)→每事生短捕子進。 - 長會捕——一進程跨會,牆鐘標。用於序。
- 外 HTTP 代理——淨分,然須 CA 證信任且遇證固定即破。
擇捕目之最廉道。三標捕答一問勝於二十標捕答無。
得: 觀察表每問一行,各注道與已知阻。無可行道之標→標「本會超範」。
敗: 諸標皆落代理列→表過雄。削至一二最高值之問,於彼再察低廉道。
二:備棄工作區
線捕污終端、遺檔於意外處、或洩憑於日誌。
mkdir -p captures/$(date -u +%Y-%m-%dT%H-%M-%S)
cd captures/$(date -u +%Y-%m-%dT%H-%M-%S)
echo 'captures/' >> ../../.gitignore
git check-ignore captures/ || echo "WARNING: captures/ not git-ignored"
確捕會非主工會——verbose-fetch 與 TUI 渲染相擾。
得: 時戳之捕目錄已 git-ignore,別於主工會。
敗: git check-ignore 報未 ignore→修 .gitignore 方行任捕。勿以憑險行。
三:hook 驅捕於每事標
目為離散事(工呼、提交、會停)→用具之 hook 面。每事生短命捕子進;勿於進中駐。
模(合成例):
# Hook script, registered with the harness's hook config.
# Invoked once per event; writes one JSONL line; exits.
#!/usr/bin/env bash
set -euo pipefail
TS=$(date -u +%Y-%m-%dT%H:%M:%S.%3NZ)
EVENT="${1:-unknown}"
PAYLOAD=$(jq -c --arg ts "$TS" --arg ev "$EVENT" \
'{ts:$ts, source:"hook", target:$ev, payload:.}' < /dev/stdin)
echo "$PAYLOAD" >> "$CAPTURE_DIR/events.jsonl"
子進每事之故:
- 無 token 態、無會耦——每呼獨。
- 一捕敗不污下。
- 子進負荷可——事罕(每用動,非每字節)。
得: 每發事之一 JSONL 行於 events.jsonl,皆 jq 可析。
敗: jq 報析錯→載含未轉義控字或二進。管 jq -R(生輸)且 base64 編載欄。
四:長會捕於序狀
目為序(多輪握手、計劃任務生命、退避態機)→一捕進跨會、牆鐘標。
# Run the harness with verbose-fetch routed to a tee-d log.
BUN_CONFIG_VERBOSE_FETCH=curl harness-cli run-task 2> >(
while IFS= read -r line; do
printf '%s\t%s\n' "$(date -u +%Y-%m-%dT%H:%M:%S.%3NZ)" "$line"
done >> "$CAPTURE_DIR/session.tsv"
)
牆鐘前綴使多並發捕之序無歧。TSV(制表分)故意——抗 shell 於 stderr 破 JSON 引號。
會終後轉 TSV 至 JSONL(步五),非行中。
得: TSV 日誌含單調增時戳,每 stderr 行一列。
敗: 時戳倒→具緩 stderr→重行加 stdbuf -oL -eL 或束等效之行緩旗。
五:歸一為 JSONL
JSONL 為構件格式:每行一 JSON 物,欄 timestamp、source、target、payload。利 diff、jq 可濾、編輯器重載穩。
# Parse the TSV from Step 4 into JSONL.
awk -F'\t' '{
printf "{\"timestamp\":\"%s\",\"source\":\"verbose-fetch\",\"target\":\"%s\",\"payload\":%s}\n",
$1, "session", $2
}' < session.tsv | jq -c . > session.jsonl
驗每行可析:
while IFS= read -r line; do
echo "$line" | jq -e . > /dev/null || echo "BAD LINE: $line"
done < session.jsonl
常用濾:
# Show only requests to a specific endpoint pattern.
jq -c 'select(.payload | tostring | test("/api/v1/example"))' session.jsonl
# Show timing between consecutive captures.
jq -r '.timestamp' session.jsonl | sort | uniq -c
得: *.jsonl 每行過 jq -e .;無 BAD LINE 警。
敗: 有行敗→源 TSV 之載嵌制表符→重行步四以異分或 base64 編次欄。
六:捕時削
寫磁前削驗頭、會 ID、bearer token、PII。events.jsonl 與 session.jsonl 首寫不當含一機。
# Stream the raw capture through a redactor before persisting.
redact() {
sed -E \
-e 's/(authorization:[[:space:]]*Bearer[[:space:]]+)[A-Za-z0-9._-]+/\1<REDACTED>/gi' \
-e 's/(x-api-key:[[:space:]]*)[A-Za-z0-9._-]+/\1<REDACTED>/gi' \
-e 's/(cookie:[[:space:]]*)[^;]+/\1<REDACTED>/gi' \
-e 's/("password"[[:space:]]*:[[:space:]]*)"[^"]*"/\1"<REDACTED>"/g' \
-e 's/("token"[[:space:]]*:[[:space:]]*)"[^"]*"/\1"<REDACTED>"/g'
}
cat raw-capture.txt | redact > session.tsv
捕後驗無漏:
# Patterns that must not appear in any *.jsonl file.
grep -Ei 'bearer [A-Za-z0-9]{20,}|sk-[A-Za-z0-9]{20,}|ghp_[A-Za-z0-9]{20,}' captures/ \
&& { echo "LEAK DETECTED"; exit 1; } \
|| echo "redaction clean"
「捕後削」之構件必漏。唯安模為「捕即削」。成品中發未削 token→視全捕為洩——刪之、轉憑、重行。
得: LEAK DETECTED 檢退 0(無匹)。grep 於已知憑前綴無返。
敗: 漏檢中→勿就地改檔。刪全捕目錄、延削正則涵漏類、自步三或四重行。
七:記前分響類
HTTP 狀態碼於異脈有異義。記前分使下游 jq 濾於意,非生碼。
| Observed status | Channel context | Classification |
|---|---|---|
| 200 / 201 | Any | success |
| 401 on token-refresh endpoint | Handshake | expected handshake step |
| 401 on data endpoint | After auth | auth failure (real) |
| 404 on lazy-loaded resource | First fetch | expected miss |
| 404 on documented endpoint | After feature gate | gate-induced absence |
| 429 | Any | rate-limit (back off; do not retry tight) |
| 5xx | Any | server failure (record, do not assume) |
捕時加 class 欄:
jq -c '. + {class: (
if (.payload.status == 401 and (.target | test("token|refresh"))) then "handshake"
elif (.payload.status >= 200 and .payload.status < 300) then "success"
elif (.payload.status == 401) then "auth-fail"
elif (.payload.status == 429) then "rate-limit"
elif (.payload.status >= 500) then "server-fail"
else "other" end)}' session.jsonl > session.classified.jsonl
token 刷道之 401 非敗——為握手首半。誤分握手步為敗→生假陽發現耗審者神。
得: *.classified.jsonl 每行有 class 欄有已知值。
敗: 多生 other→表不全於此具→每重現 other 模加一行方續析。
八:持捕清單
捕行可重現僅入與出俱記。寫清單:
cat > capture-manifest.json <<EOF
{
"captured_at": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
"harness_version": "$(harness-cli --version 2>/dev/null || echo unknown)",
"channel": "verbose-fetch",
"question": "Does endpoint X fire on event Y?",
"targets": ["endpoint-X", "event-Y"],
"files": ["session.jsonl", "session.classified.jsonl"],
"redaction_check": "passed"
}
EOF
清單使捕可與後版 diff。
得: capture-manifest.json 在、jq 可析、列捕目錄諸構件檔。
敗: 具無版旗→改記二進之 sha256sum。無識之二進生不可比之捕。
驗
- 觀察表於行任捕令前已建
- 捕目錄 git-ignore 且時戳
- 每
*.jsonl檔逐行過jq -e . - 削漏檢於已知憑前綴無匹
- 每捕事有
class欄有已知值 -
capture-manifest.json記具版(或 sha256)、道、問 - 捕目錄只含步一所列標(無他應之附流)
忌
- 先捕後問:無人讀之日誌為廢盤廢神。先建觀察表;只捕答具體問者。
- 先求
mitmproxy:外代理為最侵之道。須證信任、遇證固定即破、污具環。僅磁、謄本、verbose-fetch、hook 皆阻時用。 - 於主工會捕:verbose-fetch stderr 入 TUI 渲染→或洩他工片於捕。必用棄 shell。
- 「後削」:捕後削之構件皆曾漏憑一次。捕即削,否則勿捕。
- 齊視 4xx 為敗:token 刷道之 401 為握手步非敗。按道脈分響類(步七)方下結論。
- 長捕於每事標:會長進捕三離散事→耦 token 態於捕間且一壞事毒下。每事用 hook 子進;序留長捕。
- 無清單:無
capture-manifest.json之 JSONL 不可重現——不知何版生即不可與下月二進 diff。 - 捕他用之流:超範。線捕為己賬於己機。偶錄他用之求→刪捕、緊道。
參
monitor-binary-version-baselines— 親法之 Phase 1;生此技清單所引之版基線probe-feature-flag-state— Phases 2-3;線捕為其證一股,此技教捕半instrument-distributed-tracing— 共 JSONL+牆鐘哲;應於一二進非服務網redact-for-public-disclosure— Phase 5;此技只涵捕時削於內用,非離私區前之公佈級削
GitHub 仓库
相关推荐技能
executing-plans
设计该Skill用于当开发者提供完整实施计划时,以受控批次方式执行代码实现。它会先审阅计划并提出疑问,然后分批次执行任务(默认每批3个任务),并在批次间暂停等待审查。关键特性包括分批次执行、内置检查点和架构师审查机制,确保复杂系统实现的可控性。
requesting-code-review
设计该Skill可在完成任务、实现主要功能或合并代码前自动调度代码审查子代理,确保实现符合需求和计划。它支持通过指定git SHA范围进行精准的代码变更审查,帮助开发者在关键节点及时发现潜在问题。核心原则是"早审查、勤审查",适用于开发流程的各个关键阶段。
connect-mcp-server
设计这个Skill指导开发者如何将MCP服务器连接到Claude Code,支持HTTP、stdio和SSE三种传输协议。它涵盖了从安装配置到认证安全的完整流程,适用于集成GitHub、Notion、数据库等外部服务。当开发者需要添加集成、配置外部工具或提及MCP相关功能时,这个Skill能提供实用的操作指南。
web-cli-teleport
设计该Skill帮助开发者根据任务特性选择Claude Code的Web或CLI界面,并指导如何在两种环境间无缝迁移会话。它能分析任务复杂度、迭代需求等要素,推荐最优工作界面和工作流。关键特性包括会话状态管理、环境切换指导和上下文优化建议。
