Skip to content
Back to skills

Github Actions Creator

ASecurity

Use quando o usuário quiser criar, gerar ou configurar um workflow do GitHub Actions. Lida com pipelines CI/CD, testes, deployment, linting, scanning de segurança, automação de releases, builds Docker, tarefas agendadas e qualquer workflow customizado para qualquer linguagem ou framework.

  • 11 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 8, 2026
devopspythonrustgojavarubyphpswiftkotlinreactvue

Works with

  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add artubss/SKILLS-CLAUDE-CODE --skill github-actions-creator --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Github Actions Creator?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Github Actions Creator
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/artubss-github-actions-creator/badge)](https://www.skillsdirectory.com/skills/artubss-github-actions-creator)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: github-actions-creator
description: "Use quando o usuário quiser criar, gerar ou configurar um workflow do GitHub Actions. Lida com pipelines CI/CD, testes, deployment, linting, scanning de segurança, automação de releases, builds Docker, tarefas agendadas e qualquer workflow customizado para qualquer linguagem ou framework."
---

# Criador de GitHub Actions

Você é um especialista em criar workflows do GitHub Actions. Quando o usuário pedir para criar uma GitHub Action, siga este processo estruturado para entregar um arquivo de workflow pronto para produção.

## Processo de Criação de Workflow

### Passo 1: Analisar o Projeto

Antes de escrever qualquer YAML, escaneie o projeto para entender a stack:

1. **Verifique indicadores de linguagem/framework:**
   - `package.json` → Node.js (verifique React, Next.js, Vue, Angular, Svelte, etc.)
   - `requirements.txt` / `pyproject.toml` / `setup.py` → Python
   - `go.mod` → Go
   - `Cargo.toml` → Rust
   - `pom.xml` / `build.gradle` → Java/Kotlin
   - `Gemfile` → Ruby
   - `composer.json` → PHP
   - `pubspec.yaml` → Dart/Flutter
   - `Package.swift` → Swift
   - `*.csproj` / `*.sln` → .NET

2. **Verifique CI/CD existente:**
   - `.github/workflows/` → workflows existentes (evite conflitos)
   - `Dockerfile` → builds em container disponíveis
   - `docker-compose.yml` → setup multi-serviço
   - `vercel.json` / `netlify.toml` → alvo de deployment
   - `terraform/` / `pulumi/` → infrastructure as code

3. **Verifique tooling:**
   - `.eslintrc*` / `eslint.config.*` → ESLint configurado
   - `prettier*` → Prettier configurado
   - `jest.config*` / `vitest.config*` / `pytest.ini` → framework de testes
   - `.env.example` → variáveis de ambiente necessárias
   - `Makefile` → comandos de build disponíveis

### Passo 2: Fazer Perguntas de Esclarecimento (se necessário)

Se a solicitação do usuário for ambígua, faça UMA pergunta focada. Esclarecimentos comuns:

- **"Criar um pipeline CI"** → "Deve executar apenas testes, ou também lint e type-check?"
- **"Adicionar deployment"** → "Onde faz deploy? (Vercel, AWS, GCP, Docker Hub, etc.)"
- **"Configurar testes"** → "Testes devem rodar em PR apenas, ou também em push para main?"

Se a intenção for clara, pule este passo e prossiga.

### Passo 3: Gerar o Workflow

Crie o arquivo `.github/workflows/{nome}.yml` seguindo estas regras:

#### Nomeação de Arquivo
- Use nomes descritivos em kebab-case: `ci.yml`, `deploy-production.yml`, `release.yml`
- Para CI simples: `ci.yml`
- Para deployment: `deploy.yml` ou `deploy-{target}.yml`
- Para tarefas agendadas: `scheduled-{task}.yml`

#### Regras de Estrutura YAML

```yaml
name: Human-readable name        # Sempre inclua

on:                               # Use as triggers mais específicas
  push:
    branches: [main]              # Especifique branches explicitamente
    paths-ignore:                 # Ignore mudanças apenas de docs quando apropriado
      - '**.md'
      - 'docs/**'
  pull_request:
    branches: [main]

permissions:                      # Sempre defina permissões mínimas
  contents: read

concurrency:                      # Evite execuções duplicadas em PRs
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  job-name:
    runs-on: ubuntu-latest        # Padrão: ubuntu-latest
    timeout-minutes: 15           # Sempre defina um timeout
    steps:
      - uses: actions/checkout@v4 # Sempre fixe na versão major
```

## Padrões Principais por Caso de Uso

### CI (Teste + Lint)

**Trigger:** `pull_request` + `push` para main
**Jobs:** lint, test (paralelo quando possível)
**Recursos principais:** cache de dependências, testes em matriz para múltiplas versões

### Deployment

**Trigger:** `push` para main (ou tags de release)
**Jobs:** test → build → deploy (sequencial com `needs`)
**Recursos principais:** proteção de environment, secrets para credenciais, status checks

### Release / Publish

**Trigger:** `push` tags correspondendo a `v*` ou `workflow_dispatch`
**Jobs:** test → build → publish → criar GitHub Release
**Recursos principais:** geração de changelog, upload de artifacts, npm/PyPI/Docker publish

### Tarefas Agendadas

**Trigger:** `schedule` com expressão cron
**Jobs:** job único com a tarefa
**Recursos principais:** `workflow_dispatch` para trigger manual também, notificações de falha

### Security Scanning

**Trigger:** `pull_request` + `schedule` (semanalmente)
**Jobs:** auditoria de dependências, SAST, scanning de secrets
**Recursos principais:** upload SARIF para aba de segurança do GitHub, falhar em crítico

### Docker Build & Push

**Trigger:** `push` para main + tags
**Jobs:** build → push para registry
**Recursos principais:** builds multi-plataforma, cache de camadas, estratégia de tagging

## Referência de Actions Essenciais

### Setup Actions (sempre fixe na versão major)
| Action | Propósito |
|--------|---------|
| `actions/checkout@v4` | Clonar repositório |
| `actions/setup-node@v4` | Node.js com cache |
| `actions/setup-python@v5` | Python com cache |
| `actions/setup-go@v5` | Go com cache |
| `actions/setup-java@v4` | Java/Kotlin |
| `dtolnay/rust-toolchain@stable` | Rust toolchain |
| `ruby/setup-ruby@v1` | Ruby com bundler cache |
| `actions/setup-dotnet@v4` | .NET SDK |

### Build & Deploy Actions
| Action | Propósito |
|--------|---------|
| `docker/build-push-action@v6` | Docker builds multi-plataforma |
| `docker/login-action@v3` | Autenticação de registry Docker |
| `aws-actions/configure-aws-credentials@v4` | Autenticação AWS |
| `google-github-actions/auth@v2` | Autenticação GCP |
| `azure/login@v2` | Autenticação Azure |
| `cloudflare/wrangler-action@v3` | Deploy Cloudflare Workers |
| `amondnet/vercel-action@v25` | Deploy Vercel |

### Quality & Security Actions
| Action | Propósito |
|--------|---------|
| `github/codeql-action/analyze@v3` | CodeQL SAST scanning |
| `aquasecurity/trivy-action@master` | Scan vulnerabilidade de container |
| `codecov/codecov-action@v4` | Upload de cobertura |
| `actions/dependency-review-action@v4` | Auditoria de dependências em PRs |

### Utility Actions
| Action | Propósito |
|--------|---------|
| `actions/cache@v4` | Cache genérico |
| `actions/upload-artifact@v4` | Armazenar artifacts de build |
| `actions/download-artifact@v4` | Recuperar artifacts entre jobs |
| `softprops/action-gh-release@v2` | Criar GitHub Releases |
| `slackapi/slack-github-action@v2` | Notificações Slack |
| `peter-evans/create-pull-request@v7` | Criação automatizada de PR |

## Melhores Práticas de Segurança (SEMPRE siga)

1. **Permissões mínimas:** Sempre declare `permissions` em nível de workflow ou job
2. **Fixe actions na versão major:** Use `@v4` não `@main` ou SHA completo para legibilidade
3. **Nunca exiba secrets:** Secrets são mascarados mas evite `echo ${{ secrets.X }}`
4. **Use environments:** Para deploys em produção, use GitHub Environments com regras de proteção
5. **Valide inputs:** Para `workflow_dispatch`, valide valores de input
6. **Evite script injection:** Nunca use `${{ github.event.*.body }}` diretamente em `run:` — passe via variáveis de ambiente
7. **Use GITHUB_TOKEN:** Prefira `${{ secrets.GITHUB_TOKEN }}` sobre PATs quando possível
8. **Controles de concorrência:** Use `concurrency` para evitar deploys paralelos

```yaml
# ERRADO - vulnerabilidade de script injection
- run: echo "${{ github.event.issue.title }}"

# CORRETO - passe através de variável de ambiente
- run: echo "$ISSUE_TITLE"
  env:
    ISSUE_TITLE: ${{ github.event.issue.title }}
```

## Estratégias de Cache

### Node.js
```yaml
- uses: actions/setup-node@v4
  with:
    node-version: 20
    cache: 'npm'  # ou 'yarn' ou 'pnpm'
```

### Python
```yaml
- uses: actions/setup-python@v5
  with:
    python-version: '3.12'
    cache: 'pip'  # ou 'poetry' ou 'pipenv'
```

### Go
```yaml
- uses: actions/setup-go@v5
  with:
    go-version: '1.22'
    cache: true
```

### Rust
```yaml
- uses: actions/cache@v4
  with:
    path: |
      ~/.cargo/bin/
      ~/.cargo/registry/index/
      ~/.cargo/registry/cache/
      target/
    key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
```

### Docker
```yaml
- uses: docker/build-push-action@v6
  with:
    cache-from: type=gha
    cache-to: type=gha,mode=max
```

## Padrões de Testes em Matriz

### Múltiplas versões Node.js
```yaml
strategy:
  matrix:
    node-version: [18, 20, 22]
  fail-fast: false
```

### Múltiplos SOs
```yaml
strategy:
  matrix:
    os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
```

### Matriz complexa com exclusões
```yaml
strategy:
  matrix:
    os: [ubuntu-latest, windows-latest]
    node-version: [18, 20]
    exclude:
      - os: windows-latest
        node-version: 18
```

## Referência Rápida de Sintaxe Cron

| Agendamento | Cron |
|----------|------|
| A cada hora | `0 * * * *` |
| Diariamente à meia-noite UTC | `0 0 * * *` |
| Dias úteis às 9am UTC | `0 9 * * 1-5` |
| Semanalmente no domingo | `0 0 * * 0` |
| Mensalmente no 1º | `0 0 1 * *` |

## Formato de Saída

Depois de criar o arquivo de workflow, forneça:

1. **O que o workflow faz** — resumo de um parágrafo
2. **Secrets necessários** — liste qualquer secret que o usuário precisa configurar em Settings > Secrets
3. **Permissões necessárias** — se o workflow precisa de permissões não-padrão do repositório
4. **Como testar** — como disparar o workflow (push, criar PR, dispatch manual)

## Padrões Comuns para Combinar

Quando o usuário pedir algo genérico como "configurar CI/CD", crie um workflow único com múltiplos jobs:

```yaml
jobs:
  lint:        # Feedback rápido
  test:        # Validação principal
  build:       # Certifique-se que compila/bundla
    needs: [lint, test]
  deploy:      # Apenas após tudo passar
    needs: build
    if: github.ref == 'refs/heads/main'
```

Mantenha workflows focados. Prefira um workflow por concern sobre um workflow massivo, a menos que os jobs estejam fortemente acoplados.

Files in this skill

  • SKILL.md9.9 KB
  • references/workflow-templates.md17.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…