Skip to content
Back to skills

Gh Aw Operations

ASecurity

Comprehensive skills for creating, compiling, debugging, and managing GitHub Agentic Workflows (gh-aw) with best practices and common patterns

  • 4 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 10, 2026
code-qualitygobashazureterraformtestingdebuggingrefactoringgitapisecurity

Works with

  • api
  • mcp

Security analysis

A100/100

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

Scanned September 10, 2026

npx -y skills add micsapp/micstec-skills --skill gh-aw-operations --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Gh Aw Operations?

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

Security grade badge for Gh Aw Operations
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/micsapp-gh-aw-operations/badge)](https://www.skillsdirectory.com/skills/micsapp-gh-aw-operations)

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: gh-aw-operations
description: Comprehensive skills for creating, compiling, debugging, and managing GitHub Agentic Workflows (gh-aw) with best practices and common patterns
metadata:
  version: 1.0.0
  category: automation
  tags: [github-agentic-workflows, gh-aw, automation, ci-cd, ai-workflows]
---

# GitHub Agentic Workflows Operations Skill

This skill provides expertise in creating, managing, and troubleshooting GitHub Agentic Workflows (gh-aw framework).

## When to Use

- Creating new GitHub Agentic Workflows from scratch
- Configuring frontmatter fields (triggers, permissions, tools, safe-outputs, MCP servers)
- Debugging compilation errors or runtime failures in gh-aw workflows
- Adding safe-outputs or network allowlists to existing workflows
- Importing reusable agents and skills from external repositories
- Testing and deploying workflows to GitHub Actions

## Skill 1: Frontmatter Configuration

### Description
Configure workflow frontmatter with all required and optional fields following gh-aw specifications.

### Implementation Pattern

```yaml
---
# ===== REQUIRED FIELDS =====
on:
  workflow_dispatch:
    inputs:
      parameter_name:
        description: 'Clear description of parameter'
        required: false
        type: string|boolean|choice|number
        default: "default_value"  # Boolean: "true"/"false" as strings
  schedule:
    - cron: '0 9 * * 1'  # Monday 9 AM UTC
  issues:
    types: [opened, labeled]
  pull_request:
    types: [opened, synchronize]

engine: copilot  # GitHub Copilot as AI engine

permissions:
  contents: read      # NEVER use write — strict mode blocks it
  pull-requests: read # All writes go through safe-outputs
  issues: read

# ===== TOOLS CONFIGURATION =====
tools:
  edit:              # bare key — enables file read AND edit
  bash:              # bare key — default safe commands
  github:
    toolsets: [pull_requests]  # Only include toolsets your workflow needs

# ===== MCP SERVERS (if needed) =====
mcp-servers:
  terraform:
    container: "hashicorp/terraform-mcp-server:0.3.3"
    env:
      TF_LOG: "INFO"
    allowed: ["*"]

# ===== SAFE OUTPUTS =====
safe-outputs:
  create-pull-request:
    title-prefix: "[automated] "
    labels: [automation]
    draft: true
    reviewers: [copilot]
    expires: 14
    fallback-as-issue: true
  create-issue:
    title-prefix: "[bot] "
    labels: [automation]
    expires: 7
  update-issue: null
  add-comment: null

# ===== NETWORK ACCESS =====
network:
  allowed:
    - defaults
    - registry.terraform.io
    - releases.hashicorp.com
    - api.github.com

# ===== IMPORTS (if using reusable agents/skills) =====
imports:
  - owner/repo/.github/agents/agent-name.agent.md@main
  - owner/repo/.github/skills/skill-name/SKILL.md@main
---
```

### Key Rules
- **`edit:` is a bare key** (no value) — enables both reading and writing files. `edit: null` and `edit: true` both fail compilation.
- **`read:` is not a valid tool** — file reading is provided by `edit:`.
- **`bash:` is a bare key** (no value) for default safe commands, or `bash: ["cmd"]` for specific commands.
- **`contents: write` / `pull-requests: write` / `issues: write` are blocked by strict mode** — use `safe-outputs:` for all write operations instead.
- **`pull_request:` trigger requires `types:`** — bare `pull_request:` fails compilation.
- **`workflow_dispatch:` is a bare key** — `workflow_dispatch: null` fails compilation.
- **Toolsets and permissions must align** — `toolsets: [default]` includes the `issues` toolset which requires `issues: read`; only declare the toolsets you actually need.
- Boolean defaults must be strings: `default: "true"` not `default: true`
- Safe-output fields use hyphens: `create-pull-request` not `create_pull_request`
- Imports use `owner/repo/path@ref` format, not raw GitHub URLs
- Safe-outputs can be bare key (default config) or object (custom config)

---

## Skill 2: Safe-Outputs Configuration

### Description
Configure safe-outputs for GitHub operations (PRs, issues, comments) with proper validation and best practices.

### Common Safe-Output Patterns

#### Pattern: Pull Request Creation
```yaml
safe-outputs:
  create-pull-request:
    title-prefix: "[type] "
    labels: [automation, bot-generated]
    draft: true
    reviewers: [copilot]
    expires: 14  # Auto-close after 14 days
    fallback-as-issue: true  # Create issue if PR fails
    base-branch: main  # Target branch
```

**When to use:**
- Automated code changes
- Dependency upgrades
- Code generation
- Refactoring

#### Pattern: Issue Creation
```yaml
safe-outputs:
  create-issue:
    title-prefix: "[report] "
    labels: [automation, needs-review]
    assignees: [copilot]
    expires: 7
    group: true  # Group multiple issues as sub-issues
    close-older-issues: true  # Close previous issues from same workflow
```

**When to use:**
- Reporting findings
- Tracking tasks
- Alerting on issues
- Documentation requests

#### Pattern: Issue/PR Comments
```yaml
safe-outputs:
  add-comment:
    target: "triggering"  # Comment on triggering issue/PR
    max: 3
    hide-older-comments: true  # Hide previous comments from same workflow
```

**When to use:**
- Status updates
- Analysis results
- Bot responses
- Progress reporting

#### Pattern: PR Reviews
```yaml
safe-outputs:
  create-pull-request-review-comment:
    max: 10
    side: "RIGHT"
    footer: "if-body"  # Only show footer when review has body
  submit-pull-request-review:
    max: 1
    footer: false
```

**When to use:**
- Code review automation
- Inline suggestions
- Security analysis
- Style checking

#### Pattern: Label Management
```yaml
safe-outputs:
  add-labels:
    allowed: [bug, enhancement, documentation]
    max: 3
  remove-labels:
    allowed: [needs-triage, stale]
    max: 3
```

**When to use:**
- Workflow status tracking
- Issue classification
- Automation state management

### Available Safe-Output Types
- `create-pull-request` - Create PRs with code changes
- `create-issue` - Create issues
- `update-issue` - Update issue title/body/status
- `close-issue` - Close issues
- `create-discussion` - Create discussions
- `update-discussion` - Update discussions
- `close-discussion` - Close discussions
- `add-comment` - Add comments to issues/PRs/discussions
- `hide-comment` - Hide comments
- `add-labels` - Add labels
- `remove-labels` - Remove labels
- `add-reviewer` - Add PR reviewers
- `create-pull-request-review-comment` - Add PR review comments
- `submit-pull-request-review` - Submit PR review
- `update-pull-request` - Update PR title/body
- `dispatch-workflow` - Trigger other workflows
- `create-project`, `update-project` - Manage GitHub Projects
- `upload-asset` - Upload files to orphaned branch

---

## Skill 3: MCP Server Integration

### Description
Configure and use Model Context Protocol (MCP) servers for specialized tool access.

### Common MCP Server Configurations

#### Terraform MCP Server
```yaml
mcp-servers:
  terraform:
    container: "hashicorp/terraform-mcp-server:0.3.3"
    env:
      TF_LOG: "INFO"
    allowed: ["*"]  # or specific tools
```

**Available operations:**
- Read Terraform configurations
- Analyze provider versions
- Detect breaking changes
- Generate upgrade recommendations

#### Azure MCP Server
```yaml
mcp-servers:
  azure:
    container: "mcr.microsoft.com/azure-sdk/azure-mcp:latest"
    env:
      AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
```

**Available operations:**
- Azure resource queries
- Best practices validation
- Documentation lookup
- Terraform Azure integration

#### Custom MCP Server
```yaml
mcp-servers:
  custom:
    container: "your-org/your-mcp-server:v1.0.0"
    env:
      API_KEY: ${{ secrets.API_KEY }}
    allowed: ["specific_tool1", "specific_tool2"]
```

### Network Configuration for MCP Servers
```yaml
network:
  allowed:
    - defaults  # GitHub APIs
    - registry.terraform.io
    - releases.hashicorp.com
    - management.azure.com
    - custom-api.example.com
```

---

## Skill 4: Workflow Compilation & Debugging

### Description
Compile workflows and resolve common compilation errors.

### Compilation Commands

```bash
# Compile single workflow
gh aw compile workflow-name

# Compile all workflows
gh aw compile

# Force recompile
gh aw compile --force workflow-name

# Validate without compiling
gh aw validate workflow-name
```

### Common Compilation Errors & Fixes

#### Error: Invalid tool value for `edit`
**Problem:**
```yaml
tools:
  read: null   # ❌ 'read' is not a valid tool
  edit: null   # ❌ null not valid for edit
  edit: true   # ❌ true not valid for edit
```

**Solution:**
```yaml
tools:        # ✅ bare keys
  edit:
  bash:
```

#### Error: Write permissions blocked by strict mode
**Problem:**
```yaml
permissions:
  contents: write       # ❌ blocked by strict mode
  pull-requests: write  # ❌ blocked by strict mode
```

**Solution:**
```yaml
permissions:           # ✅ read-only
  contents: read
  pull-requests: read
safe-outputs:          # ✅ write operations go here
  create-pull-request: null
```

#### Error: `pull_request` trigger requires `types`
**Problem:**
```yaml
on:
  pull_request:        # ❌ bare null not valid
  workflow_dispatch: null  # ❌ null not valid
```

**Solution:**
```yaml
on:
  workflow_dispatch:   # ✅ bare key
  pull_request:        # ✅ explicit types
    types: [opened, synchronize, reopened]
```

#### Error: Missing permission for toolset
**Problem:**
```yaml
tools:
  github:
    toolsets: [default]  # includes 'issues' toolset
permissions:
  contents: read          # ❌ missing 'issues: read', compiler warns
```

**Solution:**
```yaml
tools:
  github:
    toolsets: [pull_requests]  # ✅ only what you need
permissions:
  contents: read
  pull-requests: read
```

#### Error: "got array, want object" for tools
**Problem:**
```yaml
tools: ['bash', 'read', 'edit']  # ❌ Wrong
```

**Solution:**
```yaml
tools:  # ✅ Correct
  bash:
  edit:
```

#### Error: Boolean default must be string
**Problem:**
```yaml
workflow_dispatch:
  inputs:
    enabled:
      type: boolean
      default: true  # ❌ Wrong
```

**Solution:**
```yaml
workflow_dispatch:
  inputs:
    enabled:
      type: boolean
      default: "true"  # ✅ Correct (quoted)
```

#### Error: Invalid safe-output field name
**Problem:**
```yaml
safe-outputs:
  create_pull_request: null  # ❌ Wrong (underscore)
```

**Solution:**
```yaml
safe-outputs:
  create-pull-request: null  # ✅ Correct (hyphen)
```

#### Error: Import download failed
**Problem:**
```yaml
imports:
  - https://raw.githubusercontent.com/owner/repo/main/agent.md  # ❌ Wrong
```

**Solution:**
```yaml
imports:
  - owner/repo/.github/agents/agent.md@main  # ✅ Correct
```

#### Error: Safe-outputs format
**Problem:**
```yaml
safe-outputs: [create-issue, create-pull-request]  # ❌ Wrong (array)
```

**Solution:**
```yaml
safe-outputs:  # ✅ Correct (object)
  create-issue: null
  create-pull-request: null
```

---

## Extended Patterns & Reference

For deployment, testing, troubleshooting, performance optimization, security best practices, and quick reference, see [references/GH-AW-PATTERNS.md](references/GH-AW-PATTERNS.md).

### Deployment Checklist

Files in this skill

  • SKILL.md11 KB
  • references/GH-AW-PATTERNS.md10.8 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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.