mirror of
https://github.com/mattpocock/skills.git
synced 2026-04-30 22:13:54 +07:00
Updates
This commit is contained in:
@@ -0,0 +1,91 @@
|
|||||||
|
---
|
||||||
|
name: setup-pre-commit
|
||||||
|
description: Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo. Use when user wants to add pre-commit hooks, set up Husky, configure lint-staged, or add commit-time formatting/typechecking/testing.
|
||||||
|
---
|
||||||
|
|
||||||
|
# Setup Pre-Commit Hooks
|
||||||
|
|
||||||
|
## What This Sets Up
|
||||||
|
|
||||||
|
- **Husky** pre-commit hook
|
||||||
|
- **lint-staged** running Prettier on all staged files
|
||||||
|
- **Prettier** config (if missing)
|
||||||
|
- **typecheck** and **test** scripts in the pre-commit hook
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
### 1. Detect package manager
|
||||||
|
|
||||||
|
Check for `package-lock.json` (npm), `pnpm-lock.yaml` (pnpm), `yarn.lock` (yarn), `bun.lockb` (bun). Use whichever is present. Default to npm if unclear.
|
||||||
|
|
||||||
|
### 2. Install dependencies
|
||||||
|
|
||||||
|
Install as devDependencies:
|
||||||
|
|
||||||
|
```
|
||||||
|
husky lint-staged prettier
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Initialize Husky
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx husky init
|
||||||
|
```
|
||||||
|
|
||||||
|
This creates `.husky/` dir and adds `prepare: "husky"` to package.json.
|
||||||
|
|
||||||
|
### 4. Create `.husky/pre-commit`
|
||||||
|
|
||||||
|
Write this file (no shebang needed for Husky v9+):
|
||||||
|
|
||||||
|
```
|
||||||
|
npx lint-staged
|
||||||
|
npm run typecheck
|
||||||
|
npm run test
|
||||||
|
```
|
||||||
|
|
||||||
|
**Adapt**: Replace `npm` with detected package manager. If repo has no `typecheck` or `test` script in package.json, omit those lines and tell the user.
|
||||||
|
|
||||||
|
### 5. Create `.lintstagedrc`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"*": "prettier --ignore-unknown --write"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6. Create `.prettierrc` (if missing)
|
||||||
|
|
||||||
|
Only create if no Prettier config exists. Use these defaults:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"useTabs": false,
|
||||||
|
"tabWidth": 2,
|
||||||
|
"printWidth": 80,
|
||||||
|
"singleQuote": false,
|
||||||
|
"trailingComma": "es5",
|
||||||
|
"semi": true,
|
||||||
|
"arrowParens": "always"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7. Verify
|
||||||
|
|
||||||
|
- [ ] `.husky/pre-commit` exists and is executable
|
||||||
|
- [ ] `.lintstagedrc` exists
|
||||||
|
- [ ] `prepare` script in package.json is `"husky"`
|
||||||
|
- [ ] `prettier` config exists
|
||||||
|
- [ ] Run `npx lint-staged` to verify it works
|
||||||
|
|
||||||
|
### 8. Commit
|
||||||
|
|
||||||
|
Stage all changed/created files and commit with message: `Add pre-commit hooks (husky + lint-staged + prettier)`
|
||||||
|
|
||||||
|
This will run through the new pre-commit hooks — a good smoke test that everything works.
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Husky v9+ doesn't need shebangs in hook files
|
||||||
|
- `prettier --ignore-unknown` skips files Prettier can't parse (images, etc.)
|
||||||
|
- The pre-commit runs lint-staged first (fast, staged-only), then full typecheck and tests
|
||||||
@@ -45,6 +45,14 @@ A LONG, numbered list of user stories. Each user story should be in the format o
|
|||||||
|
|
||||||
This list of user stories should be extremely extensive and cover all aspects of the feature.
|
This list of user stories should be extremely extensive and cover all aspects of the feature.
|
||||||
|
|
||||||
|
## 'Polishing' Requirements
|
||||||
|
|
||||||
|
Once the user stories are complete, we will end up with a working, but not refined, feature or application. After the work is complete, we should enter a polishing phase.
|
||||||
|
|
||||||
|
This should be a list of checks that we want to make at the end of the work to polish and refine the work done for maximum user enjoyment and experience.
|
||||||
|
|
||||||
|
They should not meaningfully extend the work but instead ensure harmony of all created elements and ensure any errors are properly handled and make things delightful and beautiful.
|
||||||
|
|
||||||
## Implementation Decisions
|
## Implementation Decisions
|
||||||
|
|
||||||
A list of implementation decisions that were made. This can include:
|
A list of implementation decisions that were made. This can include:
|
||||||
|
|||||||
Reference in New Issue
Block a user