From claude-resources
Guides setup of local b4push validation script, project-specific Claude skill, and GitHub Actions CI. Analyzes package.json, workspaces, tests, linting, build, E2E. Use for 'set up b4push', 'add CI', or project validation workflows.
npx claudepluginhub takazudo/claude-resourcesThis skill is limited to using the following tools:
Set up comprehensive before-push validation and CI for any project. This covers three parts:
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
Set up comprehensive before-push validation and CI for any project. This covers three parts:
Read package.json and explore the project structure to understand:
pnpm-lock.yaml, package-lock.json, yarn.lockcheck, build, test, lint, format, typecheckpnpm-workspace.yaml for sub-packages with their own testsdoc/, docs/, website/ directories with their own package.jsonplaywright.config.*, cypress.config.*generate-* scriptsCommon patterns (adapt to project):
| Step | Command | When to include |
|---|---|---|
| Workspace tests | pnpm --filter "@scope/*" test | If pnpm workspace with test scripts |
| App unit tests | pnpm --filter app-name test:unit | If app has unit tests |
| Code quality | pnpm check or pnpm lint && pnpm format | Always |
| TypeScript | pnpm typecheck or pnpm --filter name typecheck | If TypeScript |
| Build | pnpm build | If build script exists |
| Doc quality | cd doc && pnpm check | If doc site has check script |
| Doc build | cd doc && pnpm build | If doc site exists |
| E2E tests | Start server + run playwright | If e2e tests exist |
scripts/run-b4push.shUse this template structure:
#!/usr/bin/env bash
set -euo pipefail
START_TIME=$(date +%s)
FAILURES=()
step() {
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "▶ $1"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
}
pass() { echo "✅ $1"; }
fail() { echo "❌ $1"; FAILURES+=("$1"); }
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
# Steps here — each wrapped in:
# step "Step N/M: Description"
# if (cd "$ROOT_DIR" && command); then
# pass "Description passed"
# else
# fail "Description"
# fi
# Summary
END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo " SUMMARY (${DURATION}s)"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
if [ ${#FAILURES[@]} -eq 0 ]; then
echo "✅ All checks passed! Safe to push."
exit 0
else
echo "❌ ${#FAILURES[@]} check(s) failed:"
for f in "${FAILURES[@]}"; do
echo " - $f"
done
exit 1
fi
Key rules:
set -euo pipefail for strict error handling(cd "$ROOT_DIR" && command) to isolateMake executable: chmod +x scripts/run-b4push.sh
{
"scripts": {
"b4push": "./scripts/run-b4push.sh"
}
}
Create .claude/skills/b4push/skill.md:
---
name: b4push
description: >-
Run comprehensive pre-push validation covering [list steps]. Use when: (1) Completing a PR
or feature implementation, (2) Before pushing significant changes, (3) After large refactors,
(4) User says 'b4push', 'before push', 'check everything', or 'ready to push'.
user-invocable: true
allowed-tools:
- Bash
---
# Before Push Check
Run `pnpm b4push` from the project root. This executes `scripts/run-b4push.sh`:
1. [Step list with descriptions]
Takes ~[duration]. All steps must pass.
## On failure
1. Read the failure output to identify which step failed
2. Auto-fix what you can:
- Formatting: `pnpm check:fix` or `cd doc && pnpm check:fix`
- Lint: `pnpm lint:fix` or `cd doc && pnpm lint:fix`
3. Re-run `pnpm b4push` to confirm all checks pass
4. Report the final status
If the project uses GitHub and doesn't have CI yet, create .github/workflows/ci.yml:
name: CI
on:
pull_request:
types: [opened, synchronize, reopened]
branches: [main]
push:
branches: [main]
concurrency:
group: ci-${{ github.head_ref || github.ref }}
cancel-in-progress: true
jobs:
checks:
name: Checks
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
# Mirror the b4push steps here
- name: [Step description]
run: [command]
The CI workflow should mirror the b4push steps so local and CI validation are consistent.
Key CI patterns:
concurrency group)pnpm/action-setup@v4 + actions/setup-node@v4 with cachepnpm install --frozen-lockfile for reproducible installsrun for clear failure identificationRun pnpm b4push to verify all steps execute correctly. Fix any issues found.
These projects have working b4push setups: