Merge pull request #91 from EXboys/cursor/critical-bug-investigation-… #635
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, master] | |
| pull_request: | |
| branches: [main, master] | |
| jobs: | |
| build: | |
| name: Build both binaries | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Validate task artifacts | |
| run: python3 scripts/validate_tasks.py | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Install cargo-deny | |
| uses: taiki-e/install-action@v2 | |
| with: | |
| tool: cargo-deny@0.18.6 | |
| - name: Check workspace crate layering (cargo-deny) | |
| run: cargo deny check bans | |
| - name: Check Desktop manifest crate layering (cargo-deny) | |
| # Phase 0 D4 (2026-04-20): Desktop is a first-class entry per D1; its | |
| # Cargo.toml is excluded from the root workspace, so deny the boundary | |
| # rules separately against `crates/skilllite-assistant/src-tauri/Cargo.toml`. | |
| run: cargo deny --manifest-path crates/skilllite-assistant/src-tauri/Cargo.toml check bans | |
| - name: Install cargo-audit | |
| uses: taiki-e/install-action@v2 | |
| with: | |
| tool: cargo-audit | |
| - name: Run cargo audit | |
| run: cargo audit | |
| - name: Check formatting | |
| run: cargo fmt --check | |
| - name: Run tests | |
| run: cargo test | |
| - name: Run clippy | |
| run: cargo clippy --all-targets -- -D warnings | |
| - name: Build skilllite (full) | |
| working-directory: ./skilllite | |
| run: cargo build --release --bin skilllite | |
| - name: Build skilllite-sandbox (sandbox + MCP only) | |
| working-directory: ./skilllite | |
| run: cargo build --release --bin skilllite-sandbox --no-default-features --features sandbox_binary | |
| - name: Verify skilllite | |
| run: ./target/release/skilllite --version | |
| - name: Verify skilllite-sandbox | |
| run: ./target/release/skilllite-sandbox --version | |
| python-sdk: | |
| name: Python SDK (ruff, mypy, pytest) | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: python-sdk | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Build skilllite binary (for artifact-serve pytest) | |
| working-directory: ${{ github.workspace }} | |
| run: cargo build -p skilllite --bin skilllite | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install dev tools | |
| run: pip install ruff mypy pytest | |
| - name: Ruff check | |
| run: ruff check . | |
| - name: Ruff format | |
| run: ruff format --check . | |
| - name: Mypy | |
| run: mypy skilllite | |
| - name: Install package (editable, for pytest) | |
| run: pip install -e . | |
| - name: Pytest | |
| run: pytest | |
| platform-smoke: | |
| name: Platform smoke (${{ matrix.os }}) | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [macos-latest, windows-latest] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Check skilllite CLI (sandbox-only feature set) | |
| run: cargo check -p skilllite --bin skilllite --no-default-features --features sandbox_binary | |
| - name: Check skilllite-sandbox binary | |
| run: cargo check -p skilllite --bin skilllite-sandbox --no-default-features --features sandbox_binary |