diff --git a/setup-pre-commit/SKILL.md b/setup-pre-commit/SKILL.md new file mode 100644 index 0000000..395a77b --- /dev/null +++ b/setup-pre-commit/SKILL.md @@ -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 diff --git a/write-a-prd/SKILL.md b/write-a-prd/SKILL.md index 211f0ec..ff4069e 100644 --- a/write-a-prd/SKILL.md +++ b/write-a-prd/SKILL.md @@ -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: