mirror of
https://github.com/mattpocock/skills.git
synced 2026-04-30 14:03:53 +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.
|
||||
|
||||
## '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
|
||||
|
||||
A list of implementation decisions that were made. This can include:
|
||||
|
||||
Reference in New Issue
Block a user