跳到主要内容

blocking-io-guard 精选

Ensure async-path backend code that could block the asyncio event loop is protected by a teeth-verified runtime anchor in tests/blocking_io/. Use when changing backend Python under app/, packages/harness/deerflow/, or scripts/, when running a blocking-IO triage round over the whole repo, or when a reviewer/CI asks for blocking-IO coverage. Runs a deterministic scan (changed-lines or full-repo), routes each candidate, drafts/extends an anchor, and proves it fails when the blocking IO regresses.

在 GitHub 打开

安装方式

cp -r .agent/skills/blocking-io-guard ~/.claude/skills/blocking-io-guard

把该 skill 目录放进客户端 skills 目录。不同客户端的目录可能不同,Claude Code 默认是 ~/.claude/skills/

整仓一次性获取:git clone --depth 1 https://github.com/bytedance/deer-flow.git

依赖与权限

  • 无需 API Key
  • 无需联网
  • 依赖外部命令:git python uv go make
  • 以上为按正文与 frontmatter 自动推断的信号,仅供参考;安装前建议先阅读原文。
触发场景
scripts/when running

SKILL.md 正文

来源 bytedance/deer-flow@b346b17 · 许可 MIT · 内容未修改

Blocking-IO Guard Skill

Help a contributor ship backend async changes together with the runtime anchor

that lets DeerFlow's blocking-IO CI gate actually see the new code. The dynamic

detector only catches blocking IO on paths a test executes — this skill closes

that gap, either for your own diff or for a repo-wide triage round.

Read references/good-anchor-rules.md before writing any anchor.

Only read references/sop-skeleton.md when generalizing this SOP to another

detector domain — it is not needed to execute the steps below.

When to use

  • Your change touches Python under backend/app/,

backend/packages/harness/deerflow/, or backend/scripts/ and may run on

the async event loop (Mode A). If unsure, run Step 0 — it answers

deterministically.

  • You are doing a maintenance triage round over the existing codebase

(Mode B).

SOP (router)

Step 0 — Scope (deterministic)

Mode A — your own diff (default, pre-PR). From repo root:

uv run --project backend python scripts/scan_changed_blocking_io.py --base origin/main

Lists blocking-IO candidates your change introduces: findings on lines the

diff added, plus findings that are new versus the merge base — the latter

catches a new async caller exposing an old sync helper whose blocking line is

not in the diff. The diff is <base>...HEAD, so commit your work first —

uncommitted lines are not selected.

If the list is empty, this change introduces no blocking-IO surface *that the

static detector can see in the changed files*. One residual blind spot

remains: reachability is same-file only, so a new async caller of a sync

helper defined in another file is invisible to both selections. If your

diff adds an async call into a helper that lives elsewhere, check that helper

manually (codegraph or git grep) before stopping.

Mode B — full-repo triage round. From repo root:

make detect-blocking-io

Prints a summary and writes the complete structured finding list to

.deer-flow/blocking-io-findings.json. Work HIGH priority first; do not start

MEDIUM until every HIGH is dispositioned (fixed, guarded, or recorded

NO-ACTION).

Batching policy (PR sizing). One fix unit per PR while any HIGH

remains: a fix unit is one root cause — usually a single HIGH, but two HIGHs

resolved by the same one-place fix belong together. Once no HIGH remains,

MEDIUM/LOW may be batched (about five per round, grouped by module or by

disposition) so each PR stays reviewable. A new Blockbuster rule is never

batched with anything — it always ships alone (see Step 5).

Both modes emit the same JSON shape per finding: priority, location

(path/line/function), blocking_call (category/operation/symbol),

event_loop_exposure, reason, code. Priority is a deterministic review

ordering, not proof of a bug — Step 1 makes the actual call.

Step 1 — Judge each candidate (router)

Read the code around each candidate and route it:

  • Already offloaded (asyncio.to_thread, run_in_executor, async client) →

GUARD: add/extend an anchor that locks the offload so a future edit cannot

move it back onto the loop.

  • On the loop, not offloaded → FIX+ANCHOR: offload the production code

(your fix), then add an anchor that guards it.

  • Not actually exposed / acceptable (rare: scanner false positive,

startup-only code) → NO-ACTION: record one line of why.

  • Cross-file caveat: the scanner's async reachability is same-file only

(ASYNC_REACHABLE_SAME_FILE). If the candidate is a sync helper, check for

async callers in other files (codegraph or git grep) before deciding

NO-ACTION.

Step 2 — Apply the fix, then re-scan (FIX+ANCHOR only)

Offload the blocking call in production code, then re-run the Step 0 scan and

confirm the candidate no longer appears. If the offloaded call sits in a

finally / cleanup path, keep it best-effort and bounded (swallow-and-log,

asyncio.wait_for) so a failing or hung cleanup cannot mask the primary

exception. Match by the stable key

(path, function, symbol) — line numbers shift after edits, so never

compare by line.

  • The finding must disappear. If it still shows, the fix did not remove the

blocking pattern (e.g. the call is still a direct call, not offloaded) —

go back before touching any test.

  • GUARD / NO-ACTION routes skip this step: a residual finding there is

expected (the raw call still exists inside a sync helper with the offload

at the caller, or the exposure was judged acceptable).

This is pattern-level feedback in seconds; it complements but never replaces

Step 5 — only the runtime gate proves the event loop is actually protected.

Step 3 — Check existing anchors

Look in backend/tests/blocking_io/ for a test that drives the production async

entry point reaching this candidate's branch.

  • Covers this branch already → go to Step 5 (re-verify teeth).
  • Covers the entry point but not this branch (e.g. happy path covered,

cleanup/404/409 not) → extend that anchor.

  • None → create one from templates/anchor.template.py.

Step 4 — Generate / extend the anchor

Follow references/good-anchor-rules.md. Drive the specific branch (e.g. force

the create failure that hits the cleanup shutil.rmtree). Never bypass the

blocking surface with a test-only asyncio.to_thread wrapper.

Step 5 — Verify teeth (mandatory; also the anchor-vs-rule discriminator)

  1. Reintroduce the block (GUARD: temporarily revert the offload; FIX+ANCHOR: run

against the pre-fix code).

  1. Run cd backend && make test-blocking-io (or target the one test). It **must

go RED**.

  1. Restore the fix. It must go GREEN.

A real block that stays GREEN means Blockbuster has no rule for that

primitive — that is the RULE route; see references/good-anchor-rules.md

for the admission criteria before adding one.

Step 6 — Deliver

Commit the anchor(s) with your change; make test-blocking-io green. In the PR,

note: candidates found, each disposition, the re-scan result (Step 2), and

the teeth evidence (red→green). Include the reason for any NO-ACTION. A new

Blockbuster rule, if any, goes in its own commit with the evidence from Step 5.

质量与来源

所属仓库
bytedance/deer-flow
仓库星标
8.4 万
最近更新
今天
采集时间
今天
commit
b346b17fce89
内容指纹
sha256:ce0e4ac97812a87
文件路径
.agent/skills/blocking-io-guard/SKILL.md

同仓库其它 Skill

查看全部 32 个
deerflow-maintainer-orchestrator
Use when a DeerFlow maintainer needs comment-only GitHub issue or PR handling: resolve issue/PR scopes with gh, analyze issues, post or draft issue comments, perform PR review comments, review PR or issue batches, compare competing PRs that target the same issue, give fix strategy, risk classification, and validation guidance. Intended for maintainers and trusted local agents, not general contributors.
精选 bytedance/deer-flow 8.4 万 原文
Codex CLIMCP 客户端
engineer-system-change
Evaluate and carry out non-trivial software-system changes from first principles. Use when assessing RFCs, issues, designs, features, refactors, migrations, dependency changes, or proposed fields, events, APIs, modules, and services whose need, consumers, system fit, validation, or rollback require scrutiny. Read the actual system, identify the concrete problem and named semantic consumers, choose the smallest sufficient solution, reject pseudo-requirements and speculative abstractions, and require evidence proportional to risk. Do not use for mechanical edits, source-code explanation, or a dedicated review of an already-complete diff.
精选 bytedance/deer-flow 8.4 万 原文
Codex CLIMCP 客户端
smoke-test
End-to-end smoke test skill for DeerFlow. Guides through: 1) Pulling latest code, 2) Docker OR Local installation and deployment (user preference, default to Local if Docker network issues), 3) Service availability verification, 4) Health check, 5) Final test report. Use when the user says "run smoke test", "smoke test deployment", "verify installation", "test service availability", "end-to-end test", or similar.
精选 bytedance/deer-flow 8.4 万 原文
Codex CLIMCP 客户端
academic-paper-review
Use this skill when the user requests to review, analyze, critique, or summarize academic papers, research articles, preprints, or scientific publications. Supports comprehensive structured reviews covering methodology assessment, contribution evaluation, literature positioning, and constructive feedback generation. Trigger on queries involving paper URLs, uploaded PDFs, arXiv links, or requests like "review this paper", "analyze this research", "summarize this study", or "write a peer review".
精选 bytedance/deer-flow 8.4 万 原文
Codex CLIMCP 客户端
bootstrap
Generate a personalized SOUL.md through a warm, adaptive onboarding conversation. Trigger when the user wants to create, set up, or initialize their AI partner's identity — e.g., "create my SOUL.md", "bootstrap my agent", "set up my AI partner", "define who you are", "let's do onboarding", "personalize this AI", "make you mine", or when a SOUL.md is missing. Also trigger for updates: "update my SOUL.md", "change my AI's personality", "tweak the soul".
精选 bytedance/deer-flow 8.4 万 原文
Codex CLIMCP 客户端
chart-visualization
This skill should be used when the user wants to visualize data. It intelligently selects the most suitable chart type from 26 available options, extracts parameters based on detailed specifications, and generates a chart image using a JavaScript script.
精选 bytedance/deer-flow 8.4 万 原文
Codex CLIMCP 客户端

相似 Skill

更多「研究」
last30days
Research what people actually say about any topic in the last 30 days. Pulls posts and engagement from Reddit, X, YouTube, TikTok, Hacker News, Polymarket, GitHub, and the web. Includes a doctor health check to diagnose broken or missing sources.
精选 mvanhorn/last30days-skill 6.4 万 原文
Claude CodeCodex CLIMCP 客户端
agent-reach
MUST USE when user wants to 调研/research/搜索/search/查/找/look up anything on the internet — e.g. 全网调研 X / 帮我调研一下 X / 查一下 X / 搜搜 X / 看看大家怎么评价 X / X 上有什么讨论 / research this topic。 Also MUST USE when user mentions any platform or shares any URL/链接: 小红书/xiaohongshu/xhs, Twitter/推特/X, B站/bilibili, Reddit, Facebook, Instagram, V2EX, LinkedIn/领英/Boss直聘/招聘/求职/jobs, YouTube, GitHub code search, 小宇宙播客, 雪球/股票行情, RSS feeds, or any web URL. 16 platforms, multi-backend routing (OpenCLI / per-platform CLIs / APIs). Zero config for 6 channels. Run `agent-reach doctor --json` to see which backend serves each platform right now. NOT for: 写报告/数据分析/翻译等内容加工(本 skill 只负责从互联网获取内容); 发帖/评论/点赞等写操作;已有专门 skill 的平台(先用专门 skill)。 【路由方式】SKILL.md 包含路由表和常用命令,复杂场景需按需阅读对应分类的 references/*.md。 分类:search / social (小红书/推特/B站/V2EX/Reddit/Facebook/Instagram) / career(LinkedIn/Boss直聘) / dev(github) / web(网页/文章/RSS) / video(YouTube/B站/播客) / finance(雪球/股票)。
精选 Panniantong/Agent-Reach 9.6 万 原文
Claude CodeCursorMCP 客户端
academic-paper-reviewer
Multi-perspective academic paper review with dynamic reviewer personas. Runs a 5-seat, role-separated review panel (Journal-Fit Reviewer + 3 peer-review roles + Devil's Advocate) with field-specific expertise; role separation is not a claim of independent error processes. Supports full review, re-review (verification), quick assessment, methodology focus, Socratic guided, and calibration modes. Triggers on: review paper, peer review, manuscript review, referee report, review my paper, critique paper, simulate review, editorial review, calibrate reviewer, reviewer calibration, measure reviewer accuracy, 審查論文, 論文審查, 模擬審查, 同儕審查, 幫我審這篇, 以審查人角度評估, 審查者校準, 논문 심사, 동료 심사, 모의 심사, 심사자 관점에서 평가, 심사자 보정, revisar artículo, revisión entre pares, revisión de manuscrito, informe de árbitro, revisa mi artículo, criticar artículo, simular revisión, revisión editorial, calibrar revisor.
精选 Imbad0202/academic-research-skills 5.2 万 原文
Claude Code
academic-paper
12-agent academic paper writing pipeline. 11 modes (full/plan/outline/revision/revision-coach/abstract/lit-review/format-convert/citation-check/disclosure/rebuttal-audit). 6 paper types, 5 citation formats, bilingual abstracts, LaTeX/DOCX-via-Pandoc/PDF output. Style Calibration + Writing Quality Check + Anti-Patterns with IRON RULE markers. Triggers: write paper, academic paper, guide my paper, parse reviews, I got reviewer comments, revision roadmap, should we push back, conference rebuttal, grant panel response, audit my rebuttal, check my response draft, AI disclosure, check citations, citation check, check my references, verify references, look over the refs, 寫論文, 學術論文, 引導我寫論文, 審查意見, 我收到審查意見, 修訂路線圖, 評估回覆, 檢查引用, 引用檢查, 檢查參考文獻, 核對文獻, 논문 작성, 초록 작성, 논문 수정, 논문 계획을 도와줘, 심사 의견을 받았어, 심사 의견 반영, 답변서 점검, AI 사용 고지, 인용 확인, 인용 형식 검사, enmendar mi artículo, redactar artículo, guía mi artículo, analizar reseñas, auditar mi respuesta, verificar borrador de respuesta, verificar citas, divulgación de IA.
精选 Imbad0202/academic-research-skills 5.2 万 原文
Claude Code
academic-pipeline
Orchestrator for the full academic research pipeline: research -> write -> integrity check -> review -> revise -> re-review -> re-revise -> final integrity check -> finalize. Coordinates deep-research, academic-paper, and academic-paper-reviewer into a seamless 10-stage workflow with mandatory, coverage-bounded integrity checks, two-stage peer review, and auditable quality-assurance artifacts. Triggers on: academic pipeline, research to paper, full paper workflow, paper pipeline, end-to-end paper, research-to-publication, complete paper workflow, 연구부터 논문까지, 연구 주제 설정부터 논문 완성까지, 논문 전체 워크플로, flujo de trabajo académico, investigación a artículo, flujo completo de artículo, pipeline de investigación completa, publicación de investigación, flujo de trabajo completo del artículo.
精选 Imbad0202/academic-research-skills 5.2 万 原文
Claude Code
deep-research
Universal deep research agent team. 13-agent pipeline for rigorous academic research on any topic. 8 modes: full research, quick brief, paper review, lit-review, fact-check, three-way literature scan, Socratic guided research dialogue, and systematic review with optional meta-analysis. Covers research question formulation, Socratic mentoring, methodology design, systematic literature search, source verification, cross-source synthesis, risk of bias assessment, meta-analysis, APA 7.0 report compilation, editorial review, devil's advocate challenges, ethics review, and post-research literature monitoring. Triggers on: research, deep research, literature review, systematic review, meta-analysis, PRISMA, evidence synthesis, fact-check, WHY HOW WHAT papers, 3W literature scan, guide my research, help me think through, 研究, 深度研究, 文獻回顧, 文獻探討, 系統性回顧, 後設分析, 事實查核, 三段式文獻掃描, 引導我的研究, 幫我釐清, 幫我想想, 我不確定要研究什麼, 研究方向, 研究主題, 심층 연구, 문헌 조사, 체계적 문헌고찰, 메타분석, 사실 확인, 연구 방향을 잡아줘, 연구 주제 정하는 것을 도와줘, revisión de literatura, metaanálisis
精选 Imbad0202/academic-research-skills 5.2 万 原文
Claude Code