AgentSkillsCN

repo-source-code-review

在/library/src/中审查Pull Request与源代码变更。在评审PR、验证实现模式,或在合并前检查代码质量时,可借助此技能。内容涵盖代码质量检查、类型安全、文档审查、测试覆盖率,以及需重点关注的常见问题。

SKILL.md
--- frontmatter
name: repo-source-code-review
description: Review pull requests and source code changes in /library/src/. Use when reviewing PRs, validating implementation patterns, or checking code quality before merging. Covers code quality checks, type safety, documentation review, test coverage, and common issues to watch for.

Reviewing Source Code Changes

Guide for reviewing PRs and source code changes in /library/src/.

When to Use This Guide

  • Reviewing pull requests modifying library source
  • Validating implementation patterns before merging
  • Checking code quality, types, documentation, and tests

Review Process

  1. Understand the change — Read PR description, identify affected files
  2. Check patterns — Verify code follows existing conventions
  3. Verify types — Ensure type safety and proper inference
  4. Review docs — Confirm JSDoc is complete and accurate
  5. Check tests — Validate runtime and type test coverage

What to Review

Code Quality

CheckRequirement
NamingMatches existing patterns (StringSchema, minLength, _parse)
Purity annotation// @__NO_SIDE_EFFECTS__ before pure factory functions
Import extensionsAll imports use .ts extension
Interface vs typeUse interface for object shapes, type for unions/aliases
Folder structureEach API has: name.ts, name.test.ts, name.test-d.ts, index.ts

Good — purity annotation:

typescript
// @__NO_SIDE_EFFECTS__
export function string(message?: ErrorMessage<StringIssue>): StringSchema {
  return {
    /* ... */
  };
}

Bad — missing annotation:

typescript
export function string(message?: ErrorMessage<StringIssue>): StringSchema {
  return {
    /* ... */
  };
}

Type Safety

CheckRequirement
Generic inferenceTypes infer correctly without explicit annotations
ConstraintsGeneric parameters have appropriate extends clauses
Return typesExplicit return types on exported functions
Type tests.test-d.ts file covers type inference scenarios

Good — constrained generic:

typescript
export function minLength<
  TInput extends LengthInput,
  TRequirement extends number,
>(
  requirement: TRequirement,
  message?: ErrorMessage<MinLengthIssue<TInput, TRequirement>>
): MinLengthAction<TInput, TRequirement>;

Documentation

CheckRequirement
JSDoc presentAll exported functions have JSDoc
First lineAction verb matching function purpose (see below)
@param tagsEvery parameter documented
@returns tagReturn value documented
OverloadsEvery overload has its own complete JSDoc block

First line patterns by category:

CategoryPattern
SchemasCreates a ... schema.
ActionsCreates a ... action.
Parse methodsParses ...
Type guardsChecks if ...
Unwrap methodsUnwraps ...
Other methodsCreates a ..., Returns ..., Forwards ...

See repo-source-code-document skill for full documentation rules.

Tests

CheckRequirement
Runtime tests.test.ts covers success cases, failure cases, edge cases
Type tests.test-d.ts validates type inference with expectTypeOf
Issue messagesTests verify correct error messages and issue structure

Common Issues

IssueWhat to Look For
Missing purity annotationFactory function without // @__NO_SIDE_EFFECTS__
Incomplete JSDocMissing @param or @returns, wrong description format
No type testsNew API without .test-d.ts file
Wrong import extensionImports without .ts suffix
Inconsistent namingSchema not ending in Schema, action not ending in Action
Side effects in pure codeMutations, I/O, or global state in schema/action creation

Checklist

  • Implementation follows existing patterns in similar files
  • // @__NO_SIDE_EFFECTS__ on pure factory functions
  • All imports use .ts extension
  • interface used for object shapes
  • JSDoc complete on all exports
  • Runtime tests in .test.ts
  • Type tests in .test-d.ts
  • Naming conventions followed

Related Skills

  • repo-structure-navigate — Navigate the codebase
  • repo-source-code-document — JSDoc requirements