con un clic
pr-readiness
// Hard gate for code quality before pushing or creating a pull request. MUST be followed before every push, every PR, and every PR update. No exceptions.
// Hard gate for code quality before pushing or creating a pull request. MUST be followed before every push, every PR, and every PR update. No exceptions.
Guide for development practices in the Abbenay project. Covers decision logging, version management, build architecture, and package structure. Use when making architectural choices, adding features, or modifying the build system.
Guide for handling pull request reviews, including automated (Copilot) and human reviewer feedback. Use when responding to PR comments, resolving review threads, or updating PRs after review.
Guide for writing and modifying GitHub Actions workflows in this repository. Use when creating CI/CD pipelines, adding workflow jobs, modifying build steps, or debugging CI failures. Enforces the project's lean CI philosophy.
| name | pr-readiness |
| description | Hard gate for code quality before pushing or creating a pull request. MUST be followed before every push, every PR, and every PR update. No exceptions. |
This skill defines the mandatory quality gates for the Abbenay project. These are not suggestions. Code that violates these rules MUST NOT be pushed.
Every change MUST pass ALL of the following locally before being pushed to any remote branch. There are no exceptions. Do not push code hoping CI will tell you what is broken.
Bootstrap (first time or after .node-version change):
./bootstrap.sh
source .build-tools/env.sh
Install dependencies (after any package.json or lockfile change):
npm ci
Lint -- MUST exit 0 with zero errors and no new warnings:
npm run lint
Test -- MUST exit 0:
npm test
On Linux, VS Code extension tests require Xvfb:
xvfb-run -a npm test
Build -- MUST exit 0:
npm run ci:build
Only after steps 3, 4, and 5 all pass may the code be pushed.
eqeqeq, curly) MUST be resolved by running eslint --fix before
committing. If you encounter warnings unrelated to your change, fix them
anyway -- the goal is zero warnings, not zero responsibility.eslint-disable comments are acceptable only when the code is
genuinely correct and the rule cannot be configured to allow it. Blanket
disables at the file or directory level require justification in the PR.--no-verify. These rules remain the
authoritative standard regardless of hook status.This project uses Conventional Commits. Every commit message MUST follow the format:
<type>[optional scope]: <description>
Common types: feat, fix, docs, style, refactor, test, ci, chore.
Examples:
feat(core): add token counting to policy enforcement
fix(daemon): prevent socket leak on reconnect
ci: add linux-arm64 to build matrix
docs: update DEVELOPMENT.md with bootstrap instructions
refactor(vscode): remove unused extensionVersion variable
! after the type or a BREAKING CHANGE: footer for breaking changes.PR descriptions MUST accurately reflect the full scope of changes in the branch at all times. A stale or inaccurate PR description is a defect.
feat(ci): add prek hooks and VS Code extension tests).Before marking a PR ready for review, verify:
docs/decisions.md.npm run test:coverage -w packages/daemon run locally; uncovered lines
in changed files reviewed and justified.A PR that adds code without corresponding tests and documentation is incomplete and MUST NOT be merged.
## Summary
- <What changed and why, 1-3 bullets>
## Commits
- `<type>(scope): description` -- brief rationale
- `<type>(scope): description` -- brief rationale
## Test plan
- [ ] `npm run lint` passes locally (0 errors)
- [ ] `npm test` passes locally
- [ ] `npm run ci:build` passes locally
- [ ] New features have tests
- [ ] Docs updated for user-facing changes
- [ ] <any additional manual verification>