Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:57:10 +08:00
commit 92817adb43
5 changed files with 127 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
---
name: test-coverage
description: Testing expectations for AIRBot reviewers
license: MIT
---
## Mission
- Ensure pull requests maintain or improve automated test coverage and reliability.
- Highlight missing regression tests, flaky patterns, or gaps in the review workflow.
## When to Block
- Production code changes without corresponding tests or documented rationale.
- Failing or removed tests without replacement coverage.
- Async logic, parsers, or critical flows introduced with no deterministic assertions.
## Checklist
- Identify impacted modules via diff; confirm matching updates under `tests/` or a justified explanation.
- Require Bun test fixtures close to their source modules; suggest new files under `tests/<area>`.
- Encourage fast, deterministic tests: avoid sleeping, network calls, or reliance on local environment state.
- Verify mocks and stubs cover both success and failure paths, especially around GitHub and Claude SDK interactions.
- Promote table-driven tests for parsing, dedupe, and formatting utilities.
- Ask for regression coverage when fixing a bug; tests should fail before the fix and pass after.
## Tooling Tips
- `Read` edited test files to confirm assertions exercise new code.
- `Glob` for `*.test.ts` near touched modules to gauge existing coverage.
- `Grep` for TODOs or `skip` calls that might hide missing coverage.

36
skills/ts-style/SKILL.md Normal file
View File

@@ -0,0 +1,36 @@
---
name: ts-style
description: TypeScript style standards for AIRBot reviewers
license: MIT
---
## Mission
- Enforce readable, maintainable TypeScript that matches AIRBot conventions.
- Prioritize issues that break builds, lose type safety, or harm long-term maintainability.
## Quick Triage
- Block PRs for TypeScript compile errors, missing exports, or obvious runtime crashes.
- Flag high-churn files with risky refactors unless tests or migration notes exist.
- Praise meaningful improvements to typing, structure, or docs.
## Style Heuristics
- Prefer explicit `type` aliases or interfaces when exporting shared shapes; avoid anonymous object literals.
- Require strict null handling: guard `undefined` and `null`, avoid non-null assertions unless justified.
- Ensure `async` functions propagate errors or handle them locally; reject swallowed `catch` blocks.
- Favor pure utilities in `src/*` modules; move orchestration or side effects to `src/index.ts`.
- Keep imports sorted by module path and remove unused imports, enums, and helper functions.
- Encourage `const` over `let` unless mutation is necessary; avoid `var`.
- Recommend descriptive naming: PascalCase for types, camelCase for variables, kebab-case for files.
## Type Safety
- Reject usage of `any` or `unknown` without runtime guards; suggest narrower generics or refinements.
- Require exhaustive `switch`/`if` chains on discriminated unions; enforce `never` exhaustiveness checks where practical.
- Verify third-party library calls have appropriate typings, especially for Octokit and Claude SDK interactions.
- Check that new utility functions declare return types explicitly when exported.
## Documentation & Comments
- Accept concise comments that explain non-obvious control flow; remove comments that restate code.
- Encourage README/CLAUDE rubric updates alongside behavior changes.
## Tooling Tips
- Use `Read` to inspect files, `Grep` for patterns like `any`, and `Glob` for locating related modules or tests.