mirror of
https://github.com/OpenRouterTeam/spawn.git
synced 2026-04-28 20:09:34 +00:00
* refactor: extract inline hook commands to TypeScript scripts in .claude/scripts/ Replace long inline `bash -c '...'` one-liners in .claude/settings.json with standalone TypeScript scripts that are easier to read, debug, and maintain: - enforce-worktree.ts: PreToolUse hook ensuring edits happen in worktrees - validate-file.ts: PostToolUse hook for .sh/.ts file validation - pre-merge-check.ts: PreToolUse hook running biome + tests before merge Add .claude/scripts as a bun workspace package (@spawn/hooks). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor: replace manual typeguards with valibot schemas in hook scripts - Extract shared schemas (FilePathInput, CommandInput, parseStdin) to schemas.ts - Replace inline multi-level typeof/in checks with v.safeParse() calls - Add valibot dependency to @spawn/hooks package - Add CLAUDE.md rule: always prefer valibot over manual typeguards, share schemas Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor: split CLAUDE.md into modular .claude/rules/ files Split the 437-line monolithic CLAUDE.md into a lean 89-line project overview plus 9 focused rules files in .claude/rules/ (auto-loaded by Claude Code): - culture.md — embrace bold changes, parallelize, verify exhaustively - shell-scripts.md — curl|bash compat, macOS bash 3.x, ESM only, bun not python - type-safety.md — no `as` assertions, ALWAYS use valibot (never manual typeguards) - testing.md — bun:test only, no vitest, no subprocess spawning - git-workflow.md — worktree-first mandatory workflow - autonomous-loops.md — discovery/refactor service architecture - discovery.md — how to fill matrix gaps, add clouds/agents - documentation.md — never commit docs, use .docs/ - cli-version.md — bump version on every CLI change The type-safety rule now explicitly mandates valibot schemas over manual typeguard chains in all cases beyond single-primitive narrowing. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(lint): run biome check across all packages in CI The lint workflow only checked packages/cli/src/. Now it checks all TypeScript locations in a single biome check command: - packages/cli/src/ (with GritQL plugins) - packages/shared/src/ (new biome.json) - .claude/scripts/ (new biome.json) - .claude/skills/setup-spa/ Fixed all pre-existing lint/format errors: - node: protocol on all Node.js built-in imports in hook scripts - useBlockStatements in packages/shared/src/type-guards.ts - expand formatting in .claude/skills/setup-spa/main.ts and spa.test.ts Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: lab <6723574+louisgv@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
64 lines
1.5 KiB
YAML
64 lines
1.5 KiB
YAML
name: Lint
|
|
|
|
on:
|
|
push:
|
|
branches: [ main, master ]
|
|
pull_request:
|
|
branches: [ main, master ]
|
|
|
|
jobs:
|
|
shellcheck:
|
|
name: ShellCheck
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install ShellCheck
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y shellcheck
|
|
|
|
- name: Run ShellCheck on all bash scripts
|
|
run: |
|
|
# Find all .sh files, excluding node_modules and other irrelevant directories
|
|
# Note: Using || true temporarily - 3,598 existing warnings need gradual fixes
|
|
find . -name "*.sh" \
|
|
! -path "*/node_modules/*" \
|
|
! -path "*/.git/*" \
|
|
! -path "*/dist/*" \
|
|
! -path "*/build/*" \
|
|
-print0 | xargs -0 shellcheck || true
|
|
|
|
- name: ShellCheck version info
|
|
if: always()
|
|
run: shellcheck --version
|
|
|
|
biome:
|
|
name: Biome Lint
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Bun
|
|
uses: oven-sh/setup-bun@v2
|
|
|
|
- name: Install dependencies
|
|
run: bun install
|
|
|
|
- name: Run Biome check (all packages)
|
|
run: bunx @biomejs/biome check packages/cli/src/ packages/shared/src/ .claude/scripts/ .claude/skills/setup-spa/
|
|
|
|
macos-compat:
|
|
name: macOS Compatibility
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Run macOS compat linter
|
|
run: bash sh/test/macos-compat.sh
|