feat: Anthropic-aligned 2026 upgrade — EPC workflow, hooks, subagents #8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| backend: | |
| name: Backend (Python) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" # Match templates/backend/pyproject.toml | |
| cache: pip | |
| - run: pip install -e ".[dev]" | |
| working-directory: backend | |
| - name: Lint (ruff) | |
| run: ruff check . | |
| working-directory: backend | |
| - name: Type check (pyright) | |
| run: pyright | |
| working-directory: backend | |
| - name: Test | |
| run: pytest --tb=short -q | |
| working-directory: backend | |
| env: | |
| APP_ENV: test | |
| DATABASE_URL: sqlite+aiosqlite:///test.db | |
| portal: | |
| name: Portal (Next.js) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" # LTS, required for Next.js 16 | |
| cache: npm | |
| cache-dependency-path: portal/package-lock.json | |
| - run: npm ci | |
| working-directory: portal | |
| - run: npm run build | |
| working-directory: portal | |
| - run: npm test -- --passWithNoTests | |
| working-directory: portal | |
| extension: | |
| name: Extension (Chrome MV3) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| - name: Syntax check | |
| run: | | |
| for f in chrome-extension/*.js; do | |
| node --check "$f" || exit 1 | |
| done | |
| - name: Validate manifest | |
| run: node -e "JSON.parse(require('fs').readFileSync('chrome-extension/manifest.json'))" |