feat: MCP one-click install + category filters #99
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: | |
| pull_request: | |
| push: | |
| branches: [main] | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| # Structural docs check: fail any PR that hard-codes a skill | |
| # count in prose. Pure Node, no install step required. | |
| # The accepted forms are {{SKILLS_TOTAL}}, {{SKILLS_UPSTREAM}}, | |
| # {{SKILLS_REPOS}} — see scripts/skill-counts.cjs for the | |
| # source of truth. This gate is what makes the prose count | |
| # drift impossible: the next skill-add that forgets to update | |
| # the count will fail CI rather than silently land. | |
| check-skill-counts: | |
| name: Verify skill counts in prose | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| - name: Verify no hard-coded skill counts in prose | |
| run: node scripts/check-skill-counts.cjs | |
| # Doc-pair section diff: fail any PR that drops an EN section in a | |
| # documented EN/ZH doc pair, or adds a ZH-only section that drifts | |
| # further from EN. Pure Node, no install step required. Defaults | |
| # to drift informational; --strict mode (see script) makes | |
| # missing EN sections a hard fail. Pair list lives in the script. | |
| check-doc-pair: | |
| name: Verify EN/ZH doc pair section parity | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| - name: Verify section parity across EN/ZH doc pairs | |
| run: node scripts/check-doc-pair.cjs | |
| # Mojibake gate: fail any PR that introduces a U+FFFD replacement | |
| # character or CP1252-substituted-UTF-8 mojibake into a tracked | |
| # source file. Pure Node, no install step required. Catches the | |
| # same class of bug the doc-pair check catches, but at the byte | |
| # level so it works across all languages. | |
| check-mojibake: | |
| name: Verify no mojibake in source files | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| - name: Verify no U+FFFD or CP1252 markers in tracked files | |
| run: node scripts/check-mojibake.cjs | |
| # i18n coverage gate: fail any PR that drops a locale file or | |
| # introduces drift between an EN source key and a translated | |
| # value. Pure Node, no install step required. `--strict` mode | |
| # (see scripts/check-i18n-coverage.cjs) makes missing locale | |
| # files a hard fail. In default mode (drift informational) the | |
| # job still reports the table; the strict mode is opt-in for | |
| # release branches. | |
| check-i18n-coverage: | |
| name: Verify i18n locale coverage | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| - name: Verify all locales have all locale files | |
| run: node scripts/check-i18n-coverage.cjs | |
| desktop-shell-checks: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Typecheck platform-core | |
| run: npm run typecheck --workspace @cubecloud/platform-core | |
| - name: Install agent-desktop dependencies | |
| working-directory: agent-desktop | |
| run: npm ci | |
| - name: Typecheck agent-desktop | |
| working-directory: agent-desktop | |
| run: npm run typecheck | |
| - name: Run agent-desktop test suite | |
| working-directory: agent-desktop | |
| run: npm run test | |
| # NOTE: The desktop-shell-electron-smoke job was removed in V2.10.73. | |
| # It referenced `npm run test:electron-smoke`, which was never defined | |
| # in agent-desktop/package.json. The real CDP smoke suite | |
| # (`npm run smoke` → scripts/smoke-all.js) requires a running dev | |
| # electron with ENABLE_CDP=1 CDP_PORT=9222, which is not suitable for | |
| # headless CI without significant setup. CDP smokes are a local / | |
| # pre-release manual step — see .github/prompts/audit.prompt.md and | |
| # .github/skills/agent-desktop-audit/SKILL.md. | |
| desktop-shell-windows-packaging: | |
| runs-on: windows-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Install agent-desktop dependencies | |
| working-directory: agent-desktop | |
| run: npm ci | |
| - name: Build Windows package | |
| working-directory: agent-desktop | |
| run: npm run build:win | |
| - name: Verify packaged Windows app | |
| working-directory: agent-desktop | |
| run: npm run verify:bundle |