
migrate-to-ubuntu-slim
by pokutuna
SKILL.md
name: migrate-to-ubuntu-slim description: This skill should be used when the user asks to "migrate to ubuntu-slim". allowed-tools: Bash, Read, Edit, Glob, Grep user-invocable: true
Migrate GitHub Actions to ubuntu-slim
Analyze GitHub Actions workflows and migrate eligible jobs from ubuntu-latest to ubuntu-slim for cost optimization.
About ubuntu-slim
ubuntu-slim is a lightweight, single-CPU GitHub-hosted runner optimized for lightweight operations:
| Specification | ubuntu-slim | ubuntu-latest |
|---|---|---|
| CPU | 1 | 4 |
| Memory | 5 GB | 16 GB |
| Storage | 14 GB | 14 GB |
| Timeout | 15 min | 6 hours |
| Cost (public) | Free | Free |
Best suited for: automation tasks, issue operations, short-running jobs, linting, simple tests.
Migration Workflow
Phase 1: Create Plan
First, discover all workflows and create a task list.
- List workflow files:
ls .github/workflows/*.yml .github/workflows/*.yaml 2>/dev/null || true
- Create a todo list with tasks:
- "Analyze workflow: " for each workflow file found
- "Present migration plan"
- "Apply changes (after user confirmation)"
- "Show diff and prompt commit"
Phase 2: Analyze Each Workflow
For each workflow, perform TWO checks:
Check 1: Runtime Statistics
Run the analysis script:
${CLAUDE_PLUGIN_ROOT}/skills/migrate-to-ubuntu-slim/scripts/analyze-workflow-duration.sh <workflow-file>
Output: workflow n mean stddev mean+2σ migration reason
migration:yes,no, or-(unknown)reason: Human-readable explanation of the decision
Criteria: mean + 2σ < 420 seconds (7 minutes). This allows 2x slowdown on ubuntu-slim (1 CPU vs 4 CPU) while staying under 15-minute timeout.
Check 2: Implementation Patterns
Read the workflow YAML and check for incompatible patterns.
Run a quick keyword scan to surface suspicious commands:
${CLAUDE_PLUGIN_ROOT}/skills/migrate-to-ubuntu-slim/scripts/check-slim-compat.sh <workflow-file>
Review matched lines and check if the workflow installs the tool before using it. If not, keep ubuntu-latest or add explicit install steps. Note: this script only checks for common CLI tools. Manually verify the patterns listed below (e.g., services:, container:).
Reject if ANY found:
| Pattern | Reason |
|---|---|
services: | Docker service containers not supported |
container: | Custom container images may not work |
docker build, docker push, docker compose, docker-compose | Docker is NOT available (container-based runner) |
| CLI tools not in preinstalled list | Missing tools require explicit install or use ubuntu-latest |
cargo build, go build, make -j | Heavy compilation too slow on 1 CPU |
npm run build, webpack, tsc --build | Frontend builds may be slow |
java, gradle, maven, mvn | JVM needs more memory |
Large matrix: strategy | Each job must still meet runtime criteria |
Good candidates:
- Linting (
eslint,ruff,golangci-lint) - Formatting checks (
prettier,black) - Simple unit tests
- Notifications, issue/PR operations
- Deploy polling/wait jobs - mostly I/O wait, low CPU usage
Result
Mark workflow as:
- Eligible: Runtime OK AND no blocking patterns
- Not eligible: Explain reason (runtime or pattern)
Update todo: mark "Analyze workflow: " as completed.
Phase 3: Present Migration Plan
After analyzing all workflows, present summary:
## Migration Plan
### Eligible:
| Workflow | mean+2σ | Note |
|----------|---------|------|
| test.yml | 198s | Simple pytest |
| lint.yml | 51s | ruff check |
### Not eligible:
| Workflow | Reason |
|----------|--------|
| build.yml | Uses services: postgres |
| e2e.yml | mean+2σ=920s exceeds limit |
Ask user: "Proceed with migration?"
Phase 4: Apply Changes
After user confirmation, edit each eligible workflow file:
# Before
runs-on: ubuntu-latest
# After
runs-on: ubuntu-slim
Update todo as each file is edited.
Phase 5: Show Diff and Prompt Commit
- Show diff:
git diff .github/workflows/
- Suggest commit message:
chore(ci): migrate eligible jobs to ubuntu-slim runner
- Do NOT commit - let user decide.
Important Notes
- Always verify run time data before recommending migration
- Consider peak run times, not just averages - jobs with high variance may exceed 15-minute limit
- Some actions may not work correctly on ubuntu-slim due to reduced resources
- ubuntu-slim has fewer preinstalled tools - workflows may fail due to missing commands even if analysis passes. Actual execution is required to confirm compatibility
- Recommend starting with non-critical workflows (linting, notifications) before migrating build/test jobs
Reference
Note: ubuntu-slim runs as a container (not a full VM) and is available for both public and private repositories.
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon