skills/github-actions-creator/SKILL.md
Use when the user wants to create, debug, or optimize a GitHub Actions workflow. TRIGGER: "github actions", "CI/CD pipeline", "workflow", "deploy workflow", "CI workflow", "github action", "reusable workflow", "composite action", "workflow_dispatch", "matrix strategy", "self-hosted runner", "OIDC deployment" EXCLUDE: General git operations, GitHub API usage, non-Actions CI systems (Jenkins, CircleCI)
npx skillsauth add sharkitect-solutions/sharkitect-claude-toolkit github-actions-creatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| File | Load When | Do NOT Load |
|------|-----------|-------------|
| references/workflow-templates.md | User needs a complete workflow for a specific language/platform | Simple questions about syntax or triggers |
| references/advanced-patterns.md | Reusable workflows, composite actions, OIDC, dynamic matrices, self-hosted runners | Basic CI/CD setup |
| references/debugging-guide.md | Workflow is failing, debugging errors, cost optimization | Creating new workflows from scratch |
| evals.json | Evaluating skill output quality | Normal usage |
Scan the project before writing YAML:
| Indicator File | Stack | Setup Action |
|---------------|-------|-------------|
| package.json | Node.js | actions/setup-node@v4 (check for React, Next.js, etc.) |
| pyproject.toml / requirements.txt | Python | actions/setup-python@v5 |
| go.mod | Go | actions/setup-go@v5 |
| Cargo.toml | Rust | dtolnay/rust-toolchain@stable |
| pom.xml / build.gradle | Java/Kotlin | actions/setup-java@v4 |
| *.csproj / *.sln | .NET | actions/setup-dotnet@v4 |
| Dockerfile | Container builds | docker/build-push-action@v6 |
Also check: .github/workflows/ (existing workflows), vercel.json/netlify.toml (deploy targets), Makefile, test configs.
IF user wants basic CI (test + lint):
pull_request + push to mainreferences/workflow-templates.md for language-specific templateIF user wants deployment:
push to main (or release tags)needs)references/advanced-patterns.md for OIDC authIF user wants reusable/shared workflows:
references/advanced-patterns.md for workflow_call patternsIF user is debugging a failing workflow:
references/debugging-guide.mdIF user wants scheduled automation:
schedule with cron + workflow_dispatch for manual triggerEvery workflow MUST include these structural elements:
name: Descriptive Name
on:
# Most specific triggers possible
push:
branches: [main]
paths-ignore: ['**.md', 'docs/**']
pull_request:
branches: [main]
permissions: # NEVER omit — always explicit minimal
contents: read
concurrency: # Prevent duplicate runs
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true # false for deploys
jobs:
job-name:
runs-on: ubuntu-latest
timeout-minutes: 15 # ALWAYS set
steps:
- uses: actions/checkout@v4
Omitting permissions block entirely. GitHub defaults may be write-all in older repos, creating a massive attack surface. Always declare explicit minimal permissions.
No timeout-minutes on jobs. Default is 6 hours. A hung test suite burns 6 hours of billable minutes before failing. Always set timeout-minutes (5-15 for CI, 20-30 for builds, 60 max for deploys).
Using ${{ github.event.issue.title }} or ${{ github.event.pull_request.body }} directly in run: blocks. This is a script injection vulnerability — attacker-controlled input becomes shell code.
# VULNERABLE — attacker controls issue title
- run: echo "Processing ${{ github.event.issue.title }}"
# SAFE — passed through environment variable (shell-escaped)
- run: echo "Processing $ISSUE_TITLE"
env:
ISSUE_TITLE: ${{ github.event.issue.title }}
Pinning actions to @main or @master instead of version tags. A compromised upstream action runs arbitrary code in your workflow. Use @v4 minimum; SHA pins for high-security repos.
Using cancel-in-progress: true on deployment workflows. Canceling a mid-flight deploy can leave infrastructure in a broken state. Use cancel-in-progress: false for any job that mutates remote state.
Assuming secrets exist in fork PRs. GitHub strips secrets from fork PRs for security. Workflows that require secrets silently fail or error on community contributions. Always check github.event.pull_request.head.repo.full_name == github.repository.
Using volatile values in cache keys (run IDs, timestamps, runner.os when runner images update). Every run gets a cache miss, negating all caching benefit. Use deterministic keys based on lock file hashes and pinned OS versions.
@v4), SHA for critical pathsrun: blocks — use env: passthroughworkflow_dispatch inputs — don't trust manual trigger values blindly| Action | Purpose | Cache |
|--------|---------|-------|
| actions/checkout@v4 | Clone repo | N/A |
| actions/setup-node@v4 | Node.js | cache: 'npm' / 'pnpm' / 'yarn' |
| actions/setup-python@v5 | Python | cache: 'pip' / 'poetry' |
| actions/setup-go@v5 | Go | cache: true |
| actions/setup-java@v4 | Java/Kotlin | cache: 'maven' / 'gradle' |
| dtolnay/rust-toolchain@stable | Rust | Manual actions/cache@v4 |
| actions/setup-dotnet@v4 | .NET | cache: true |
| Action | Purpose |
|--------|---------|
| docker/build-push-action@v6 | Multi-platform Docker builds |
| docker/login-action@v3 | Registry auth (GHCR, DockerHub, ECR) |
| aws-actions/configure-aws-credentials@v4 | AWS auth (supports OIDC) |
| google-github-actions/auth@v2 | GCP auth (supports OIDC) |
| cloudflare/wrangler-action@v3 | Cloudflare Workers |
| hashicorp/setup-terraform@v3 | Terraform CLI |
| Action | Purpose |
|--------|---------|
| github/codeql-action/analyze@v3 | SAST scanning |
| aquasecurity/trivy-action@master | Container vulnerability scan |
| codecov/codecov-action@v4 | Coverage upload |
| actions/dependency-review-action@v4 | Dependency audit on PRs |
| softprops/action-gh-release@v2 | Create GitHub Releases |
| dorny/paths-filter@v3 | Detect changed files/paths |
| googleapis/release-please-action@v4 | Automated versioning + changelogs |
# Node.js — built into setup-node
- uses: actions/setup-node@v4
with: { node-version: 20, cache: 'npm' }
# Python — built into setup-python
- uses: actions/setup-python@v5
with: { python-version: '3.12', cache: 'pip' }
# Go — built into setup-go
- uses: actions/setup-go@v5
with: { go-version: '1.22', cache: true }
# Docker — GHA cache backend
- uses: docker/build-push-action@v6
with: { cache-from: 'type=gha', cache-to: 'type=gha,mode=max' }
# Rust — manual cache required
- uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
| Schedule | Expression |
|----------|-----------|
| Hourly | 0 * * * * |
| Daily midnight UTC | 0 0 * * * |
| Weekdays 9am UTC | 0 9 * * 1-5 |
| Weekly Sunday | 0 0 * * 0 |
| Monthly 1st | 0 0 1 * * |
Note: GitHub cron can be delayed up to 15 minutes under load. Not suitable for time-critical tasks.
After creating a workflow, always provide:
development
When the user wants help with paid advertising campaigns on Google Ads, Meta (Facebook/Instagram), LinkedIn, Twitter/X, or other ad platforms. Also use when the user mentions 'PPC,' 'paid media,' 'ad copy,' 'ad creative,' 'ROAS,' 'CPA,' 'ad campaign,' 'retargeting,' or 'audience targeting.' This skill covers campaign strategy, ad creation, audience targeting, and optimization.
testing
--- name: using-sharkitect-methodology description: Use when starting any conversation in a Sharkitect workspace OR before any task involving NEW pricing, positioning, proposal, strategy, plan-execution, or schema-design work — mandates invocation of Sharkitect-specific methodology skills (pricing-strategy, marketing-strategy-pmm, smb-cfo, hq-revenue-ops, executing-plans, brainstorming) under the same anti-rationalization discipline as using-superpowers. Documentation has failed 4 times across H
testing
Use when user says 'end session', 'wrap up', 'stop for the day', 'done for today', 'close out', 'save session', 'wrapping up', or invokes /end-session. Runs the full 9-step end-of-session protocol: resource audit, MEMORY.md update, lessons capture, plan status, pending items, workspace checklist, .tmp/ audit, git commit+push, Supabase brain sync, session brief, summary. Final step schedules a detached self-kill of the current session ONLY (3s delay) so the window closes cleanly. Other claude.exe processes (active workspaces) are NOT touched -- orphan cleanup is handled separately by Claude-Orphan-Cleanup-Hourly with proper age safeguards. Do NOT use for: mid-session quick saves (use session-checkpoint), skill syncing (use sync-skills.py), brain memory queries (use supabase-sync.py pull), document freshness reviews (use document-lifecycle), resource gap detection (use resource-auditor).
testing
Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, passive voice, negative parallelisms, and filler phrases.