Write agentic workflows in natural language markdown and run them in GitHub Actions. Benefits developers and operations teams by automating tasks in CI/CD pipelines. Connects to GitHub Actions and supported AI agents.
git clone https://github.com/githubnext/gh-aw.gitWrite agentic workflows in natural language markdown and run them in GitHub Actions. Benefits developers and operations teams by automating tasks in CI/CD pipelines. Connects to GitHub Actions and supported AI agents.
[{"step":"Define the task and trigger. Replace [TASK] with the automation goal (e.g., 'deploy to staging') and [EVENT_TRIGGER] with the GitHub event (e.g., 'pull_request to main').","tip":"Use the GitHub Actions events documentation to choose the right trigger for your workflow."},{"step":"Specify the steps. Replace [STEP_1], [STEP_2], and [STEP_3] with the actions needed (e.g., 'checkout code', 'run tests', 'deploy to AWS').","tip":"Use existing GitHub Actions or community actions from the GitHub Marketplace to avoid reinventing the wheel."},{"step":"Integrate tools or services. Replace [TOOL_OR_SERVICE] with the integration needed (e.g., 'Docker', 'AWS CLI', 'Slack').","tip":"Ensure you have the required secrets (e.g., AWS credentials, Slack webhook) configured in your repository settings."},{"step":"Validate and test. Save the workflow file in `.github/workflows/` and push to your repository. Monitor the workflow run in the 'Actions' tab.","tip":"Use the 'Re-run jobs' button to test changes without pushing new commits."},{"step":"Iterate and optimize. Review logs, adjust steps, and add error handling or logging as needed.","tip":"Use the `if: always()` condition to ensure critical steps (e.g., notifications) run even if prior steps fail."}]
No install command available. Check the GitHub repository for manual installation instructions.
git clone https://github.com/githubnext/gh-awCopy the install command above and run it in your terminal.
Launch Claude Code, Cursor, or your preferred AI coding agent.
Use the prompt template or examples below to test the skill.
Adapt the skill to your specific use case and workflow.
Write an agentic GitHub Actions workflow in natural language markdown to [TASK]. The workflow should run on [EVENT_TRIGGER] (e.g., push to main, pull request, schedule) and include steps for [STEP_1], [STEP_2], and [STEP_3]. Use GitHub Actions syntax and ensure it integrates with [TOOL_OR_SERVICE] (e.g., Docker, AWS CLI, Slack). Include error handling and logging where relevant.
```yaml
# GitHub Actions Workflow: Automated Security Scan and Slack Notification
# Trigger: Push to main branch or pull request to 'dev' branch
# Purpose: Run Trivy security scan, upload results to S3, and notify team on Slack
name: Security Scan and Notify
on:
push:
branches: [main]
pull_request:
branches: [dev]
jobs:
security-scan:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
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 S3
uses: jakejarvis/s3-sync-action@master
with:
args: --acl public-read --follow-symlinks --delete
env:
AWS_S3_BUCKET: ${{ secrets.SECURITY_BUCKET }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: 'us-east-1'
SOURCE_DIR: 'trivy-results.sarif'
DEST_DIR: 'reports/${{ github.sha }}'
- name: Send Slack notification
if: always()
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_COLOR: ${{ job.status == 'success' && 'good' || 'danger' }}
SLACK_TITLE: "Security Scan Results"
SLACK_MESSAGE: "Scan completed with status: ${{ job.status }}. Results uploaded to S3: https://${{ secrets.SECURITY_BUCKET }}.s3.amazonaws.com/reports/${{ github.sha }}/trivy-results.sarif"
```
This workflow automates a security scan of the codebase using Trivy, uploads the results to an S3 bucket for long-term storage, and notifies the team via Slack. The workflow triggers on pushes to `main` or pull requests to `dev`, ensuring security checks are part of the development lifecycle. Error handling is included via the `if: always()` condition for the Slack notification, ensuring the team is always informed of the scan status, even if the scan fails.Let’s build from here, together
IronCalc is a spreadsheet engine and ecosystem
ITIL-aligned IT service management platform
Customer feedback management made simple
Enterprise workflow automation and service management platform
Automate your spreadsheet tasks with AI power
Take a free 3-minute scan and get personalized AI skill recommendations.
Take free scan