Pulled ALL skills from 15 source repositories: - anthropics/skills: 16 (docs, design, MCP, testing) - obra/superpowers: 14 (TDD, debugging, agents, planning) - coreyhaines31/marketingskills: 25 (marketing, CRO, SEO, growth) - better-auth/skills: 5 (auth patterns) - vercel-labs/agent-skills: 5 (React, design, Vercel) - antfu/skills: 16 (Vue, Vite, Vitest, pnpm, Turborepo) - Plus 13 individual skills from various repos Mosaic Stack is not limited to coding — the Orchestrator and subagents serve coding, business, design, marketing, writing, logistics, analysis, and more. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
163 lines
2.7 KiB
Markdown
163 lines
2.7 KiB
Markdown
# GitHub Actions
|
|
|
|
Complete setup guide for Turborepo with GitHub Actions.
|
|
|
|
## Basic Workflow Structure
|
|
|
|
```yaml
|
|
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
branches: [main]
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 2
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
|
|
- name: Build and Test
|
|
run: turbo run build test lint
|
|
```
|
|
|
|
## Package Manager Setup
|
|
|
|
### pnpm
|
|
|
|
```yaml
|
|
- uses: pnpm/action-setup@v3
|
|
with:
|
|
version: 9
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: 'pnpm'
|
|
|
|
- run: pnpm install --frozen-lockfile
|
|
```
|
|
|
|
### Yarn
|
|
|
|
```yaml
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: 'yarn'
|
|
|
|
- run: yarn install --frozen-lockfile
|
|
```
|
|
|
|
### Bun
|
|
|
|
```yaml
|
|
- uses: oven-sh/setup-bun@v1
|
|
with:
|
|
bun-version: latest
|
|
|
|
- run: bun install --frozen-lockfile
|
|
```
|
|
|
|
## Remote Cache Setup
|
|
|
|
### 1. Create Vercel Access Token
|
|
|
|
1. Go to [Vercel Dashboard](https://vercel.com/account/tokens)
|
|
2. Create a new token with appropriate scope
|
|
3. Copy the token value
|
|
|
|
### 2. Add Secrets and Variables
|
|
|
|
In your GitHub repository settings:
|
|
|
|
**Secrets** (Settings > Secrets and variables > Actions > Secrets):
|
|
|
|
- `TURBO_TOKEN`: Your Vercel access token
|
|
|
|
**Variables** (Settings > Secrets and variables > Actions > Variables):
|
|
|
|
- `TURBO_TEAM`: Your Vercel team slug
|
|
|
|
### 3. Add to Workflow
|
|
|
|
```yaml
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
|
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
|
|
```
|
|
|
|
## Alternative: actions/cache
|
|
|
|
If you can't use remote cache, cache Turborepo's local cache directory:
|
|
|
|
```yaml
|
|
- uses: actions/cache@v4
|
|
with:
|
|
path: .turbo
|
|
key: turbo-${{ runner.os }}-${{ hashFiles('**/turbo.json', '**/package-lock.json') }}
|
|
restore-keys: |
|
|
turbo-${{ runner.os }}-
|
|
```
|
|
|
|
Note: This is less effective than remote cache since it's per-branch.
|
|
|
|
## Complete Example
|
|
|
|
```yaml
|
|
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
branches: [main]
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
|
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 2
|
|
|
|
- uses: pnpm/action-setup@v3
|
|
with:
|
|
version: 9
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: 'pnpm'
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
|
|
- name: Build
|
|
run: turbo run build --affected
|
|
|
|
- name: Test
|
|
run: turbo run test --affected
|
|
|
|
- name: Lint
|
|
run: turbo run lint --affected
|
|
```
|