Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/nbaertsch/mythic-mcp/github-actions-setupnpx skills add nbaertsch/Mythic-MCP --skill github-actions-setupgit clone --depth 1 https://github.com/nbaertsch/Mythic-MCPWhat 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 | $0.00056 | $0.06045 |
| Opus 5 | $0.00028 | $0.03023 |
| Sonnet 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 2d 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.
- 2d 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 (5 stars, last pushed 6mo ago), licensed MIT. It adds 56 tokens to every session and 6,045 once invoked, about $0.0003 per session on Opus 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
multi-agent-release-manager
Cleans up the workspace, formats code, runs presubmit checks, and uploads CLs to Gerrit.
dsh-web-pre-push-checks
Use before pushing, opening or updating a pull request, or claiming dsh-web checks pass. Selects the required repository gates and diff-specific generation, build, and GUI evidence.
babysit
Same-session monitoring loop for PRs, CI runs, tickets, and deployments using the monitorstart / monitorupdate / autonudgestop MCP tools. The loop re-injects your check instructions into THIS session on an idle interval — same context, same tools — and works from dashboard chat, Slack threads, and Discord DMs. Use…
azsdk-common-pipeline-analysis
Analyze Azure SDK CI/CD pipeline failures into a structured diagnosis, and define the required output format. Load this skill before calling azsdkanalyzepipeline, which returns raw failure data that this skill interprets and formats. USE FOR: "pipeline failed", "build failure", "CI check failing", "tests failing in…
harness-setup
HAR: Project init, tool setup, agent config, memory setup, skill mirror sync. Trigger: setup, init, new project, CI/Codex setup, harness-mem, mirror. Do NOT load for: implementation, review, release, planning.
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/.