mirror of
https://github.com/mattpocock/skills.git
synced 2026-09-12 10:28:06 +07:00
The Agent Plugins standard reads only the immediate children of skills/ and cannot be pointed elsewhere, so a bucketed tree is invisible to every conformant client. Rather than generate a flat copy of the repo into a package directory — a builder, a validator, an allowlist, a drift CI job, and every skill committed twice — remove the buckets. - skills/ is flat and holds exactly the promoted 25 - in-progress/ -> drafts/, misc/ -> extras/, deprecated/ deleted - new root plugin.json (Agent Plugins 1.0) - .claude-plugin/plugin.json loses its 25-entry skills array - docs/ keeps its category folders; it is now the only place a skill's category lives Reasoning in .agents/adr/0003. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
92 lines
2.2 KiB
Markdown
92 lines
2.2 KiB
Markdown
---
|
|
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
|