How to review code; a pull request, feature branch, local changes etc.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Judge added comments, JSDoc, changelog entries, and PR bodies on information content and cut what a reader can derive. Use before presenting a diff, committing, or writing a PR body.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
실행 점수 미검증
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
A pass over the prose in a diff — comments, JSDoc, changelog entries, PR body — deleting text a reader does not need. Scope is the diff: prose the change added or touched, not every comment in the files it happens to open.
Run it before presenting work, not after someone asks for it. When done, return control to the calling workflow rather than stopping to present.
Invoked with args="changelogs" (from update-changelogs, or the pr changelog
phase), run the Changelogs section only and skip the rest.
The desired default is no comment. A comment must justify its existence; accuracy is not a justification.
The bar is "obvious and logical", not "true and useful". A comment stating a real hazard still goes if a competent reader derives it from the adjacent lines. What survives is what the code cannot carry: a constraint, an invariant, a non-obvious failure mode, or why a test is shaped the way it is — in the shortest form that carries it.
Every judgment here is about information content, never about style. No phrasing is banned; nothing survives on phrasing either.
Deleting a comment is cheap to undo — one line restored on request. A trivial rename nearly so. Anything larger is not, and is out of scope for this pass; a dropped JSDoc block can also break lint, so verify the result still lints.
If a comment exists only because an identifier is vague, and a trivial rename removes the need for it, rename and delete the comment. Trivial means a local, a parameter, or a private field that this diff already touches, renamed within the one file — nothing exported, nothing that ripples across call sites.
Stop there. Do not introduce structural refactors to eliminate prose, even when the result would clearly read better:
// Check whether the remote peer restarted.
if (currentId !== previousId) {
A remotePeerRestarted() helper would carry that sentence in its name, but
extracting it is a behavior-adjacent change with its own review surface. Keep the
comment, leave the structure alone, and propose the refactor separately if it is
worth doing.
This pass runs before every commit and PR, so it has to be predictable: its diff is comments removed, occasionally one identifier renamed — never a refactor nobody asked for.
Comments beginning with phrases such as Ensure, Handle, Now, First,
Then, We need to, This allows, This ensures, Note that, or Important
often introduce a restatement of the next line. Treat the opener as a signal to
inspect the comment, not as a deletion rule.
Delete it when the remaining sentence merely narrates the code. Keep it when the sentence carries information the code cannot express: a constraint, an invariant, a compatibility requirement, or a non-obvious failure mode. For example:
// Note that N must stay a power of two.
stays if nothing in the type system or the surrounding code makes that constraint apparent.
When the verdict is delete, delete — rewriting a restatement into a shorter restatement is not the fix.
it(...) title already says it, cut it. This includes a comment
describing a newly introduced variable immediately above its declaration.
(Function JSDoc is lint-required — see below.)// FAILING REPRO. and the paragraph under it describe a
bug that no longer exists once the fix lands.// The second enqueue is the write that fails.).A comment above a logger.error/logger.warn is usually the log message
restated, or a defense of logging rather than throwing. Both go. Keep it when it
carries what the log line cannot:
// Expected during shutdown; warn so we don't page.
Same test as the openers — narration out, information in. Separately, an empty
catch {} may need an annotation because lint requires one; keep that minimal.
Keep mock and setup mechanics that would otherwise baffle: which prepared statement the failure targets, why a shared mock makes the expected call count 2, why a cache is primed before the assertion. Shape rationale stays too — why the test needs two kernels, why the assertion runs inside the crank.
State a rationale once, at the code it justifies — not in both a source comment and its test, and not duplicated across sibling files.
At the second site, delete it and add nothing. No cross-file pointer, no
"same reasoning as <name>" — a reader who needs the argument finds it, and one
who doesn't pays for the line. A pointer is warranted only when the second site
is genuinely hard to understand without it; that is rare, and the burden is on
the pointer.
This repo lints JSDoc: ocap/require-jsdoc is an error on functions, methods,
and classes, and jsdoc/require-param-description and
jsdoc/require-returns-description are errors wherever those tags appear. Tests
and some JS and config globs are exempt — check oxlint.config.ts rather than
assuming. Do not delete a required block or its description — make the prose
minimal instead. Keep the - before each @param description, and the
sentence casing and terminal period the existing blocks use:
/**
* Roll back the crank.
*
* @param err - The error the rollback threw, if it threw.
*/
Trim @param text to a bare noun phrase, not a clause about how the argument
gets used.
State the change and its why once, then stop. See
docs/contributing/updating-changelogs.md
for format and categories; this section is only about length.
Default to one line per user-visible change.
Ask of every line: Would a consumer notice this change, care about it, or need to act differently because of it? If not, cut it. That test is what rules out describing how the fix works internally, which mechanism was chosen over which alternative, what was verified, or a "known gap" / follow-up bullet.
A PR body has a different reader — a reviewer, who does want the narrative and
how the change was tested. The pr skill requires both, so the changelog test
above does not apply here. Apply only "say it once": the description, the
change summary, and the testing note each make their point once, and none
repeats a rationale that is already in a code comment.
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
How to review code; a pull request, feature branch, local changes etc.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Optionally checks, then commits code to the current or a new feature branch.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Create a new monorepo package using the create-package CLI
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use the discovery tools to find and use services through a service matcher. Do not rely on prior knowledge of services, providers, or APIs.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Run the evm-wallet Docker e2e tests (build, start stack, wait for healthy, test, diagnose failures).
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
How to add entries to the glossary
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.