Skip to content

Merge pull request #91 from EXboys/cursor/critical-bug-investigation-… #635

Merge pull request #91 from EXboys/cursor/critical-bug-investigation-…

Merge pull request #91 from EXboys/cursor/critical-bug-investigation-… #635

Workflow file for this run

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