Borrowing it
Nothing to install: this file belongs to nbaertsch/Mythic-MCP. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/nbaertsch/Mythic-MCP/main/.claude/skills/github-actions-setup/SKILL.mdgit clone --depth 1 https://github.com/nbaertsch/Mythic-MCPWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/nbaertsch/mythic-mcp/github-actions-setup)<a href="https://agentmods.dev/skills/nbaertsch/mythic-mcp/github-actions-setup"><img src="https://agentmods.dev/badge/skills/nbaertsch/mythic-mcp/github-actions-setup/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/nbaertsch/mythic-mcp/github-actions-setup"><img src="https://agentmods.dev/badge/skills/nbaertsch/mythic-mcp/github-actions-setup.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00056 | $0.06045 |
| Opus 5.5 | $0.00022 | $0.02418 |
| Sonnet 5.5 | $0.00011 | $0.01209 |
| Haiku 4.5 | $0.00006 | $0.00605 |
Grade A, and why
github-actions-setup scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 1,003 lines — stays where its author put it; the contents beside it link to each section on GitHub.
GitHub Actions CI/CD Setup
Complete guide for implementing production-ready GitHub Actions workflows with comprehensive testing and deployment automation.
When to Use This Skill
Invoke this skill when:
- Setting up CI/CD for a new project
- Creating GitHub Actions workflows
- Implementing test automation in CI
- Optimizing CI performance (speed, cost)
- Adding deployment pipelines
- Debugging CI failures
- Implementing matrix testing
- Setting up secrets and environment variables
Workflow Design Philosophy
Fast Feedback First
Priority order for jobs:
- Lint/Format (30s-1min) - Catch style issues immediately
- Type Check (1-2min) - Catch type errors before testing
- Unit Tests (1-3min) - Quick validation if used
- Integration Tests (3-10min) - Core validation
- E2E Tests (5-20min) - Full system validation
- Build (2-10min) - Compilation/bundling
- Deploy (1-5min) - Only after all tests pass
Why this order?
- Fail fast on cheap checks
- Expensive tests run only if cheap ones pass
- Developers get quick feedback
- CI resources used efficiently
Comprehensive Workflow Template
.github/workflows/ci.yml
name: CI Pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
workflow_dispatch: # Manual trigger
# Cancel in-progress runs for same PR/branch
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
NODE_VERSION: '18'
GO_VERSION: '1.21'
PYTHON_VERSION: '3.11'
jobs:
# ============================================
# Phase 1: Fast Checks (Fail Fast)
# ============================================
lint:
name: Lint and Format
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run ESLint
run: npm run lint
- name: Check formatting
run: npm run format:check
type-check:
name: TypeScript Type Check
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Type check
run: npm run type-check
# ============================================
# Phase 2: Unit Tests (if used)
# ============================================
unit-tests:
name: Unit Tests
runs-on: ubuntu-latest
timeout-minutes: 10
needs: [lint, type-check] # Only run if fast checks pass
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run unit tests
run: npm run test:unit -- --coverage
- name: Upload coverage
uses: codecov/codecov-action@v4
with:
files: ./coverage/coverage-final.json
flags: unit
# ============================================
# Phase 3: Integration Tests
# ============================================
integration-tests:
name: Integration Tests
runs-on: ubuntu-latest
timeout-minutes: 20
needs: [lint, type-check] # Run in parallel with unit tests
# Real service dependencies
services:
postgres:
image: postgres:15
env:
POSTGRES_USER: testuser
POSTGRES_PASSWORD: testpass
POSTGRES_DB: testdb
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
redis:
image: redis:7-alpine
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 6379:6379
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run database migrations
run: npm run migrate:test
env:
DATABASE_URL: postgresql://testuser:testpass@localhost:5432/testdb
- name: Seed test data
run: npm run seed:test
env:
DATABASE_URL: postgresql://testuser:testpass@localhost:5432/testdb
- name: Run integration tests
run: npm run test:integration
env:
DATABASE_URL: postgresql://testuser:testpass@localhost:5432/testdb
REDIS_URL: redis://localhost:6379
NODE_ENV: test
- name: Upload coverage
uses: codecov/codecov-action@v4
with:
files: ./coverage/coverage-final.json
flags: integration
# ============================================
# Phase 4: E2E Tests
# ============================================
e2e-tests:
name: E2E Tests
runs-on: ubuntu-latest
timeout-minutes: 30
needs: [integration-tests] # Only run if integration passes
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Start services with docker-compose
run: docker-compose -f docker-compose.test.yml up -d
- name: Wait for services to be healthy
run: |
timeout 60 bash -c 'until docker-compose -f docker-compose.test.yml ps | grep -q "healthy"; do sleep 2; done'
- name: Run E2E tests
run: npm run test:e2e
env:
BASE_URL: http://localhost:3000
- name: Upload test artifacts
if: failure()
uses: actions/upload-artifact@v4
with:
name: e2e-screenshots
path: tests/e2e/screenshots/
retention-days: 7
- name: Upload E2E videos
if: failure()
uses: actions/upload-artifact@v4
with:
name: e2e-videos
path: tests/e2e/videos/
retention-days: 7
- name: Stop services
if: always()
run: docker-compose -f docker-compose.test.yml down -v
# ============================================
# Phase 5: Build
# ============================================
build:
name: Build Application
runs-on: ubuntu-latest
timeout-minutes: 15
needs: [integration-tests] # Build in parallel with E2E
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build application
run: npm run build
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-artifacts
path: dist/
retention-days: 7
# ============================================
# Phase 6: Security Scanning
# ============================================
security-scan:
name: Security Scan
runs-on: ubuntu-latest
timeout-minutes: 10
needs: [lint]
steps:
- uses: actions/checkout@v4
- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@master
with:
scan-type: 'fs'
scan-ref: '.'
format: 'sarif'
output: 'trivy-results.sarif'
- name: Upload Trivy results to GitHub Security
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: 'trivy-results.sarif'
- name: Run npm audit
run: npm audit --audit-level=moderate
# ============================================
# Phase 7: Deploy (only on main branch)
# ============================================
deploy-staging:
name: Deploy to Staging
runs-on: ubuntu-latest
timeout-minutes: 10
needs: [unit-tests, integration-tests, e2e-tests, build]
if: github.ref == 'refs/heads/develop' && github.event_name == 'push'
environment:
name: staging
url: https://staging.example.com
steps:
- uses: actions/checkout@v4
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: build-artifacts
path: dist/
- name: Deploy to staging
run: |
# Your deployment script here
./scripts/deploy.sh staging
env:
DEPLOY_KEY: ${{ secrets.STAGING_DEPLOY_KEY }}
DATABASE_URL: ${{ secrets.STAGING_DATABASE_URL }}
deploy-production:
name: Deploy to Production
runs-on: ubuntu-latest
timeout-minutes: 15
needs: [unit-tests, integration-tests, e2e-tests, build]
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
environment:
name: production
url: https://example.com
steps:
- uses: actions/checkout@v4
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: build-artifacts
path: dist/
- name: Deploy to production
run: |
# Your deployment script here
./scripts/deploy.sh production
env:
DEPLOY_KEY: ${{ secrets.PRODUCTION_DEPLOY_KEY }}
DATABASE_URL: ${{ secrets.PRODUCTION_DATABASE_URL }}
- name: Run smoke tests
run: npm run test:smoke
env:
BASE_URL: https://example.com
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 1,003 lines · 56 tokens per session scan A 247dd7c9a527
github-actions-setup is a skill published in the GitHub repository nbaertsch/Mythic-MCP (10 stars, last pushed 8mo ago), licensed MIT. It adds 56 tokens to every session and 6,045 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
chinese-git-workflow
A reference for configuring Git with Chinese code-hosting services such as Gitee, Coding.net, GitLab China, and CNB, including SSH, HTTPS, credentials, CI, and repository mirroring.
atmos-profiles
Atmos profiles: profile directories, --profile and ATMOSPROFILE activation, profile merge behavior, environment switching, and routing profile-specific auth/toolchain/config overrides.
webhook-management
Configure and validate CCAM webhook targets across supported chat, incident, automation, and generic providers. Use when listing provider requirements, creating or updating a target, scoping it to alert rules, sending a test notification, reviewing delivery history, or deleting a target.
managing-github-actions-secrets
Creates and updates GitHub Actions secrets for PostHog workflows. Use when adding a new CI secret, rotating an existing secret, wiring a workflow to an API token, package registry credential, deploy key, or any value referenced via ${{ secrets. }} in .github/workflows/.
monorepo-management
Master monorepo management with Turborepo, Nx, and pnpm workspaces to build efficient, scalable multi-package repositories with optimized builds and dependency management. Use when setting up monorepos, optimizing builds, or managing shared dependencies.
deployment-engineer
Expert deployment engineer specializing in modern CI/CD pipelines, GitOps workflows, and advanced deployment automation. Masters GitHub Actions, ArgoCD/Flux, progressive delivery, container security, and platform engineering. Handles zero-downtime deployments, security scanning, and developer experience optimization.…