Skip to main content

code-review

Review code quality, patterns, and best practices

Source facts

Repository
vinilana/dotcontext
Last source activity
June 5, 2026 at 23:54
Detected SKILL.md language
English
Stars
570
Forks
95

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
type
skill
name
Code Review
description
Review code quality, patterns, and best practices
skillSlug
code-review
phases
["R","V"]
generated
2026-03-18T00:00:00.000Z
status
filled
scaffoldVersion
2.0.0
# Code Review Guidelines for reviewing code changes in the `@dotcontext/cli` project. ## When to Use - Reviewing a pull request or diff - Validating code during the Review (R) or Validation (V) phases of the PREVC workflow - Checking a new service, generator, or utility for adherence to project patterns - Evaluating MCP gateway handler implementations ## Project Standards ### TypeScript Configuration - Target: ES2020, Module: CommonJS - Strict mode enabled (`"strict": true`) - Declarations and source maps generated - Path alias: `@generators/agents/*` maps to `src/generators/agents/*` ### Code Organization Patterns **Service Layer** (22 services in `src/services/`): - Each service lives in its own directory under `src/services/` - Exports through `index.ts` barrel files - Constructor takes an options object or required config - Methods are async where I/O is involved - Example: `FillService`, `WorkflowService`, `AIContextMCPServer` **Generators** (`src/generators/`): - Separate generators for docs, agents, plans, skills - Accept options objects, return typed result objects (e.g., `SkillGeneratorResult`) - Use frontmatter serialization from `src/types/scaffoldFrontmatter.ts` **Utilities** (`src/utils/`): - Pure functions or thin wrappers: `frontMatter.ts`, `contentSanitizer.ts`, `gitService.ts` - CLI UI abstraction: `cliUI.ts` with `CLIInterface` type - i18n: `i18n.ts` with `TranslateFn` type and `en`/`pt-BR` locale support **MCP Gateway Handlers** (`src/services/mcp/gateway/`): - One file per gateway: `explore.ts`, `context.ts`, `sync.ts`, etc. - Exports: handler function, params type, options type, action type - Uses `createJsonResponse`/`createErrorResponse`/`createTextResponse` from `response.ts` - Barrel re-export through `index.ts` and `gatewayTools.ts` ### Review Checklist #### Architecture - [ ] New code follows the service/generator/util separation - [ ] No direct file I/O in generators -- delegate to services or `fs-extra` - [ ] MCP handlers do not use `console.log` (use `process.stderr.write` for debug output) - [ ] `repoPath` is never hardcoded; always resolved through options or `getRepoPath()` #### TypeScript Quality - [ ] No `any` types (use `unknown` + type guards where needed) - [ ] Exported interfaces/types for all public APIs - [ ] Async functions return typed Promises, not implicit `any` - [ ] Optional dependencies (tree-sitter) have graceful fallbacks #### Error Handling - [ ] MCP gateway handlers return `createErrorResponse()` rather than throwing - [ ] CLI commands catch errors and display via `chalk`/`ora` with user-friendly messages - [ ] File operations use `fs-extra` methods which handle missing directories #### Naming Conventions - [ ] Files: camelCase (`fillService.ts`, `codebaseAnalyzer.ts`) - [ ] Classes: PascalCase (`SkillGenerator`, `SemanticContextBuilder`) - [ ] Interfaces: PascalCase, often with `I`-free naming (`SkillMetadata`, not `ISkillMetadata`) - [ ] Constants: UPPER_SNAKE_CASE (`BUILT_IN_SKILLS`, `PREVC_PHASE_ORDER`) - [ ] MCP tools: kebab-case (`workflow-init`, `workflow-status`) #### Testing - [ ] New services have corresponding `.test.ts` files - [ ] Tests use `jest.mock()` for external dependencies (AI providers, file system) - [ ] Temp directories created with `fs.mkdtemp()` and cleaned up in `afterEach` - [ ] Mock `CLIInterface` and `TranslateFn` for service tests (see `fillService.test.ts`) #### Frontmatter - [ ] New scaffold files use v2 format with `scaffoldVersion: "2.0.0"` - [ ] `status` field is set correctly (`unfilled` for new, `filled` after content generation) - [ ] Type-specific fields present (`skillSlug` for skills, `agentType` for agents, etc.) #### i18n - [ ] New user-facing strings added to both `en` and `pt-BR` in `src/utils/i18n.ts` - [ ] Translation keys follow dot-notation: `'commands.fill.description'` - [ ] CLI output uses `t()` function, not hardcoded strings ## Instructions ### Reviewing a Service Change 1. Check the service's public interface -- does it follow the options-object constructor pattern? 2. Verify barrel exports in `index.ts` are updated 3. Check for proper error handling (try/catch with typed errors) 4. Ensure no side effects in constructors (async init should be a separate method) 5. Look for dependency injection points (e.g., `AIContextMCPServer` accepts `contextBuilder` for testing) ### Reviewing an MCP Tool Change 1. Verify Zod schema has `.describe()` on every param with action prefix 2. Check that the handler switch covers all actions in the enum 3. Confirm responses use `createJsonResponse`/`createErrorResponse` consistently 4. Verify new types are re-exported through `gatewayTools.ts` 5. Check that `repoPath` uses the caching mechanism via `getRepoPath()` ### Reviewing a Generator Change 1. Check output paths are constructed with `path.join(repoPath, outputDir, ...)` 2. Verify `force` flag is respected (skip existing files when `false`) 3. Ensure frontmatter is generated via `createSkillFrontmatter`/`serializeFrontmatter` from `scaffoldFrontmatter.ts` 4. Check that the result type includes all relevant counts (generated, skipped, etc.) ### Reviewing a Workflow Change 1. Verify phase transitions follow PREVC order (P -> R -> E -> V -> C) 2. Check scale-dependent phase inclusion (QUICK: E+V only, SMALL: P+E+V, MEDIUM: P+R+E+V, LARGE: all) 3. Ensure gate checks are enforced unless `autonomous` or `force` is true 4. Verify workflow status file is written to `.context/runtime/workflows/`
View on GitHub