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.
72
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
This is a comment-plane skill: resolve GitHub scope, inspect evidence, and prepare or post DeerFlow issue comments and PR review comments. Keep the work comment-scoped; do not turn it into coding, branch management, release work, artifact closure, or other maintainer operations.
When the maintainer asks to process, handle, comment on, or review a bounded set of issues or PRs, proceed without asking follow-up questions. Treat that request as authorization for one public issue comment per selected non-skipped issue and one PR review comment per selected PR with high-confidence findings. If a PR has no high-confidence findings, do not post a public comment; report that result to the maintainer only. If the maintainer explicitly asks for analysis only, return comment-ready drafts without posting.
The maintainer's normal interaction should be: provide scope; receive posted comment URLs, PR review URLs, clean results, skipped items, failures, or drafts. Do not offload technical analysis to the maintainer. Make the best evidence-backed recommendation in the comment itself: describe the risk, impact, likely fix, and validation path. Ask the reporter or PR author for missing evidence only when the artifact lacks enough data to diagnose.
Output only the maintainer run result or comment draft. Do not announce the skill name, mode, or that no code was edited unless the user asks for process details.
Match the dominant language of the issue or PR unless the maintainer asks for another language. Chinese issue or PR text gets Chinese output; English issue or PR text gets English output. For mixed artifacts, use the body language, not logs or code.
Use GitHub tooling to resolve artifact type and scope. Do not ask the maintainer to clarify when gh or GitHub API can determine the answer.
bytedance/deer-flow unless a URL or explicit repo says otherwise./issues/<number> to Issue Flow and /pull/<number> to PR Review Flow.gh issue view <number> --repo <repo> --json number,title,url,state,body,labels,author,commentsgh pr view <number> --repo <repo> --json number,title,url,state,body,author,files,comments,reviews,statusCheckRollup,baseRefName,headRefName#123, # 123, and bare 123 into a number list, preserving order and de-duplicating exact repeats.gh pr view <number> --repo <repo> --json number,url first. If it fails, use gh issue view <number> --repo <repo> --json number,url. Do not ask which type it is.gh issue list, not the mixed GitHub issues endpoint. For PR batches, use gh pr list.gh api when gh issue/pr view/list lacks required fields such as timeline events, review threads, or precise search filters.Closes/Fixes #<issue>) found via gh api timeline cross-reference events, and PRs that mention the issue. Route them into Competing PR Comparison.Use concise repo-local references such as #123 and PR #123 in maintainer reports and comments. Include full GitHub URLs only for posted comment/review links returned by GitHub or when the maintainer supplied an explicit URL.
Existing comments suppress duplicate posting, not analysis. Always analyze the artifact in full, then post only the net-new delta over what is already covered.
Adding to @reviewer's review:) and states only the new items. Do not restate covered points.Already covered to the maintainer with the existing comment/review URL.RFC issues are the one hard skip: no analysis and no post unless the maintainer overrides.
Use Issue Flow for GitHub issues, bug reports, feature requests, support questions, and issue batches.
Start every issue with a cheap precheck:
rfc, [RFC], RFC:, or Request for Comments), classify it as rfc-no-comment, skip deep analysis, and do not post anything public unless the maintainer explicitly overrides the RFC skip for that item.For non-skipped issues:
ready-to-fix: bounded, evidence sufficient, validation path clear.needs-more-evidence: repro, logs, environment, screenshots, exact expected behavior, or failing case missing.defer-or-close: duplicate, stale, unsupported, unactionable, or out of scope.rfc-no-comment: RFC issue; skip public comments by default.Thanks @author. for reporter-authored issues when it reads naturally; omit the mention for bots, maintainer-authored tracking issues, or cases where it would add noise.Thanks @author. <one specific sentence that frames the fix, investigation, or missing evidence.>
Recommended solution:
- ...
Validation:
- ...Evidence: only when citing concrete code, logs, reproduction details, or other proof helps the author act.Risk: only when architecture, security, public API, default behavior, or compatibility impact must be called out explicitly; make the risk specific.Missing info: only when the issue cannot be diagnosed without more evidence; ask for the smallest useful data.Evidence: or Recommended solution: bullets instead of separate metadata fields.Missing info:.Reply draft.Do not expose private reasoning, credentials, internal-only context, or unsupported promises. Do not say a fix was made unless a separate coding workflow actually changed code.
Use PR Review Flow for GitHub pull requests and PR batches.
Start every PR with a cheap precheck:
statusCheckRollup as signal, not verdict. Failing required checks are themselves a reportable finding (build failure = P0; failing tests or lint = P1/P2 by impact). Green checks lower risk but never excuse reading the actual changed code path — confirm suspect logic by reading the source, not by trusting green CI. Tests passing does not prove the changed branch is exercised.Before reviewing a local PR branch or local diff, fetch the base repository's target branch and compare against that fresh remote-tracking ref, not a possibly stale local main.
upstream/<base-branch> when upstream points to the base repository.origin/<base-branch>.main only after fetching the base remote.git fetch <base-remote> +refs/heads/<base-branch>:refs/remotes/<base-remote>/<base-branch>, then inspect BASE=$(git merge-base HEAD <base-remote>/<base-branch>) and git diff "$BASE"...HEAD.FETCH_HEAD from a single-branch fetch instead, diff against that verified FETCH_HEAD immediately and do not later substitute a possibly stale remote-tracking ref.git fetch <base-remote> pull/<n>/head:pr-<n>. The fork's own branch ref and gh api .../contents?ref=<fork-branch> will 404 against the base repo. Record the head SHA you reviewed.Before posting a PR review comment:
No high-confidence review findings. or Already covered) plus any sub-threshold items as Maintainer notes.For public PR reviews with findings, start with one short opener that fits the review context and matches the finding count. Use singular wording only for exactly one finding, for example Thanks @author. I found one issue that should be addressed before this is ready. Use plural wording for multiple findings, for example Thanks @author. I found a few issues that should be addressed before this is ready. Omit the mention for bots or when it adds noise.
For each finding, use:
[P0/P1/P2] Title
- Location: file and line/range
- Problem: what can go wrong
- Evidence: why the diff causes it
- Suggested fix: concrete minimal fix
- Test: what test should cover itSeverity guide:
P0: causes outage, data loss, security breach, or build failure.P1: likely production bug, serious regression, broken compatibility, or high-risk security/architecture issue.P2: correctness, maintainability, or test concern with lower risk.Posting depends on BOTH confidence (is the problem real?) and severity (how bad if real). They are independent axes — "no high-confidence findings" means none across P0/P1/P2, not merely "no P0".
Maintainer notes framed as a hypothesis to verify.Maintainer notes channel in the run result, never to a public comment.Do not produce compliments, summaries, or general advice. For sensitive security issues, describe impact and remediation without exploit instructions.
When the scope has multiple artifacts, cluster before reviewing and synthesize after.
Cluster by relatedness, not by type. Group artifacts that share files, interfaces, or the same issue/feature into one cluster; same-type artifacts that touch disjoint files are independent.
After per-artifact review, run one synthesis pass over the whole batch and report it to the maintainer (decision-support, not a public comment):
When several PRs target the same issue, compare them instead of reviewing each in isolation.
Do not ask the maintainer routine clarification questions. The skill should save maintainer time by turning scope into comments through a fixed workflow.
Stop without asking only when:
gh view/list, gh api, or GitHub search fallback;In these cases, return a compact failure report with the attempted command path and the smallest next action. Do not phrase it as a question unless the maintainer explicitly asked to be prompted.
Treat these as high-signal areas for issue comments and PR findings:
backend/packages/harness/deerflow/ must not import app.*.Recommend the checks matching the touched surface:
| Surface | Suggested validation |
|---|---|
| Backend API / harness / agents / MCP / skills runtime | cd backend && make lint && make test |
| Blocking IO or async file/network work | cd backend && make test-blocking-io or a focused blocking-IO regression |
| Harness/app boundary | cd backend && uv run pytest tests/test_harness_boundary.py |
| Frontend UI/core | cd frontend && pnpm format && pnpm lint && pnpm typecheck && BETTER_AUTH_SECRET=local-dev-secret pnpm build && make test |
| Front/back thread or SSE contract | backend replay golden and full-stack replay render where feasible |
| Frontend user workflow | Playwright E2E or browser proof with screenshot/DOM assertion |
| Docker/sandbox/provisioner | focused backend tests plus Docker/provisioner smoke when feasible |
| Docs-only | targeted markdown review |
For Issue Flow:
Run result:
Posted:
Skipped:
Already covered:
Failed:
Maintainer notes:
Per issue:
Issue:
Surface:
Actionability:
Risk:
Comment:
Validation:
Comment status:For PR Review Flow:
Run result:
Reviewed:
Skipped:
Clean:
Already covered:
Failed:
Maintainer notes:
Per PR:
PR:
Public review:
Findings:
Review status:For analysis-only requests, replace Posted/Reviewed with Drafted and include the comment/review text without posting.
For batches, prefer a compact maintainer-facing table after the headline counts:
| Artifact | Status | Public action | Notes |
| --- | --- | --- | --- |
| #123 | posted | comment URL | short reason |
| PR #456 | reviewed | review URL | P1: finding title |
| PR #789 | clean | none | No high-confidence review findings. |
| #321 | already covered | none | existing maintainer comment |For multi-artifact batches, follow the table with a Batch synthesis block (overlapping files, merge-order/conflict surface, duplicate or competing solutions, composition risk) and, when issues had competing PRs, a Competing PR comparison block. Both are maintainer-only.
Omit empty categories, no-op fields, routine command output, and raw logs. Report meaningful changes, evidence, and options.
5f0108f
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.