Official agent skill

Developer Internals

by github in github/gh-aw

Internal gh-aw architecture: validation system design, safe output message patterns, schema validation, YAML compatibility notes, and MCP logs guardrail.

OfficialMITAuto-check passedAI & LLM Engineering

Install Developer Internals

skills CLI
$ npx skills add github/gh-aw --skill developer-internals -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install github/gh-aw developer-internals --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/github/gh-aw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/developer-internals .claude/skills/developer-internals && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
developer-internals
GitHub stars
5.3k
Token cost
~4.5k tokens
SKILL.md length
1,219 words
Files
1
Skills in repo
52
Repo updated
First seen
Licence
MIT

At a glance

Internal gh-aw architecture: validation system design, safe output message patterns, schema validation, YAML compatibility notes, and MCP logs guardrail.

  • Works in 6 steps: AI Agent Output - AI generates content… → Staged Mode Check - Determines if… → Safe Output Processing - Routes to… → …
  • Tasks that involve Forms and validation
  • SKILL.md covers Table of Contents, Validation Architecture, Safe Output Messages and Schema Validation, plus 2 more sections
  • Calls gh and make; reaches github.github.com

What it does

Developer Internals is an agent skill from github/gh-aw, published by the product's own GitHub organization. Internal gh-aw architecture: validation system design, safe output message patterns, schema validation, YAML compatibility notes, and MCP logs guardrail.

Its SKILL.md is about 4.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in AI & LLM Engineering, covering Forms and validation. It works with Model Context Protocol and GitHub Actions. The repository describes itself as: GitHub Agentic Workflows. The licence is MIT.

When your agent uses it

  • Tasks that involve Forms and validation

Example prompts

  • “/developer-internals”

Requirements

  • Python 3
  • Node.js
  • Docker

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. AI Agent Output - AI generates content for GitHub operations
  2. Staged Mode Check - Determines if operation is in preview mode
  3. Safe Output Processing - Routes to appropriate GitHub operation type
  4. Message Pattern Application - Applies consistent formatting (footers, instructions, links)
  5. GitHub API Execution - Performs the actual GitHub operation
  6. Success Summary - Reports results in workflow step summary

What it can do on your machine

Read from SKILL.md and the folder at commit eb63040. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh
    • make

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • github.github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Developer Internals loads about 4.5k tokens when it runs. Until then it costs about 43 tokens; SKILL.md has 1,219 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~43
When it runs · the whole SKILL.md, loaded when a task matches
~4.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from github/gh-aw at commit eb63040, republished under its MIT licence (© github). 1,219 words, ~4,470 tokens.

Download SKILL.mdSave it as .claude/skills/developer-internals/SKILL.md (or your agent's skills folder).
name
developer-internals
description
Internal gh-aw architecture: validation system design, safe output message patterns, schema validation, YAML compatibility notes, and MCP logs guardrail.

gh-aw Internal Architecture

Use this reference when working on the gh-aw compiler internals, validation system, safe output processing, or MCP server features.

Table of Contents

Validation Architecture

The validation system ensures workflow configurations are correct, secure, and compatible with GitHub Actions before compilation.

Architecture Overview
mermaid
graph LR
    WF[Workflow] --> CV[Centralized Validation]
    WF --> DV[Domain-Specific Validation]
    CV --> validation.go
    DV --> strict_mode_validation.go
    DV --> strict_mode_permissions_validation.go
    DV --> pip.go
    DV --> npm.go
    DV --> expression_safety_validation.go
    DV --> engine.go
    DV --> mcp-config.go
Centralized Validation

Location: pkg/workflow/validation.go (core compile-time checks)

Purpose: General-purpose validation that applies across the entire workflow system

Key Functions:

  • validateExpressionSizes() - Ensures GitHub Actions expression size limits
  • validateContainerImages() - Verifies Docker images exist and are accessible
  • validateRuntimePackages() - Validates runtime package dependencies
  • validateGitHubActionsSchema() - Validates against GitHub Actions YAML schema
  • validateNoDuplicateCacheIDs() - Ensures unique cache identifiers
  • validateSecretReferences() - Validates secret reference syntax
  • validateRepositoryFeatures() - Checks repository capabilities
  • validateHTTPTransportSupport() - Validates HTTP transport configuration
  • validateWorkflowRunBranches() - Validates workflow run branch configuration

When to add validation here:

  • Cross-cutting concerns that span multiple domains
  • Core workflow integrity checks
  • GitHub Actions compatibility validation
  • General schema and configuration validation
  • Repository-level feature detection
Domain-Specific Validation

Domain-specific validation is organized into separate files in pkg/workflow/:

Strict Mode Validation

Files: pkg/workflow/strict_mode_validation.go and the strict_mode_*.go validators

Enforces security and safety constraints in strict mode:

  • validateStrictPermissions() - Refuses write permissions
  • validateStrictNetwork() - Requires explicit network configuration
  • validateStrictMCPNetwork() - Requires network config on custom MCP servers
  • validateStrictBashTools() - Refuses bash wildcard tools
Python Package Validation

File: pkg/workflow/pip.go

Validates Python package availability on PyPI.

NPM Package Validation

File: pkg/workflow/npm.go

Validates NPX package availability on npm registry.

Expression Safety

File: pkg/workflow/expression_safety_validation.go

Validates GitHub Actions expression security with allowlist-based validation. The matching test coverage lives in pkg/workflow/expression_safety_test.go.

Validation Decision Tree
mermaid
graph TD
    A[New Validation Requirement] --> B{Security or strict mode?}
    B -->|Yes| C[strict_mode_validation.go]
    B -->|No| D{Only applies to one domain?}
    D -->|Yes| E{Domain-specific file exists?}
    E -->|Yes| F[Add to domain file]
    E -->|No| G[Create new domain file]
    D -->|No| H{Cross-cutting concern?}
    H -->|Yes| I[validation.go]
    H -->|No| J{Validates external resources?}
    J -->|Yes| K[Domain-specific file]
    J -->|No| I
Validation Patterns
Allowlist Validation

Used for security-sensitive validation with limited set of valid options:

go
func validateExpressionSafety(content string) error {
    matches := expressionRegex.FindAllStringSubmatch(content, -1)
    var unauthorizedExpressions []string

    for _, match := range matches {
        expression := strings.TrimSpace(match[1])
        if !isAllowed(expression) {
            unauthorizedExpressions = append(unauthorizedExpressions, expression)
        }
    }

    if len(unauthorizedExpressions) > 0 {
        return fmt.Errorf("unauthorized expressions: %v", unauthorizedExpressions)
    }
    return nil
}
External Resource Validation

Used for validating external dependencies:

go
func validateDockerImage(image string, verbose bool) error {
    cmd := exec.Command("docker", "inspect", image)
    output, err := cmd.CombinedOutput()

    if err != nil {
        pullCmd := exec.Command("docker", "pull", image)
        if pullErr := pullCmd.Run(); pullErr != nil {
            return fmt.Errorf("docker image not found: %s", image)
        }
    }
    return nil
}
Schema Validation

Used for configuration file validation:

go
func (c *Compiler) validateGitHubActionsSchema(yamlContent string) error {
    schema := loadGitHubActionsSchema()

    var data interface{}
    if err := yaml.Unmarshal([]byte(yamlContent), &data); err != nil {
        return err
    }

    if err := schema.Validate(data); err != nil {
        return fmt.Errorf("schema validation failed: %w", err)
    }
    return nil
}
Progressive Validation

Used for applying multiple validation checks in sequence:

go
func (c *Compiler) validateStrictMode(frontmatter map[string]any, networkPermissions *NetworkPermissions) error {
    if !c.strictMode {
        return nil
    }

    if err := c.validateStrictPermissions(frontmatter); err != nil {
        return err
    }

    if err := c.validateStrictNetwork(networkPermissions); err != nil {
        return err
    }

    return nil
}

Safe Output Messages

Safe output functions handle GitHub API write operations (creating issues, discussions, comments, PRs) from AI-generated content with consistent messaging patterns.

Safe Output Message Flow

The following diagram illustrates how AI-generated content flows through the safe output system to GitHub API operations:

mermaid
graph TD
    A[AI Agent Output] --> B{Staged Mode?}
    B -->|Yes| C[Generate Preview Messages]
    B -->|No| D[Process Safe Output]
    C --> E[Show 🎭 Staged Mode Preview]
    E --> F[Display in Step Summary]
    D --> G{Safe Output Type}
    G -->|create-issue| H[Create GitHub Issue]
    G -->|create-discussion| I[Create GitHub Discussion]
    G -->|add-comment| J[Add GitHub Comment]
    G -->|create-pull-request| K[Create Pull Request]
    G -->|create-pr-review-comment| L[Create PR Review Comment]
    G -->|update-issue| M[Update GitHub Issue]
    H --> N[Apply Message Patterns]
    I --> N
    J --> N
    K --> N
    L --> N
    M --> N
    N --> O[Add AI Attribution Footer]
    N --> P[Add Installation Instructions]
    N --> Q[Add Related Items Links]
    N --> R[Add Patch Preview]
    O --> S[Execute GitHub API Operation]
    P --> S
    Q --> S
    R --> S
    S --> T[Generate Success Summary]
    T --> U[Display in Step Summary]

Flow Stages:

  1. AI Agent Output - AI generates content for GitHub operations
  2. Staged Mode Check - Determines if operation is in preview mode
  3. Safe Output Processing - Routes to appropriate GitHub operation type
  4. Message Pattern Application - Applies consistent formatting (footers, instructions, links)
  5. GitHub API Execution - Performs the actual GitHub operation
  6. Success Summary - Reports results in workflow step summary
Message Categories

Identifies content as AI-generated and links to workflow run:

markdown
> AI generated by [WorkflowName](run_url)

With triggering context:

markdown
> AI generated by [WorkflowName](run_url) for #123
Workflow Installation Instructions
markdown
>
> To add this workflow in your repository, run `gh aw add owner/repo/path@ref`. See [usage guide](https://github.github.com/gh-aw/setup/cli/).
Staged Mode Preview

All staged mode previews use consistent format with 🎭 emoji:

markdown
## 🎭 Staged Mode: [Operation Type] Preview

The following [items] would be [action] if staged mode was disabled:
Patch Preview

Display git patches in pull request bodies with size limits:

markdown
<details><summary>Show patch (45 lines)</summary>

\`\`\`diff
diff --git a/src/auth.js b/src/auth.js
index 1234567..abcdefg 100644
--- a/src/auth.js
+++ b/src/auth.js
@@ -10,7 +10,10 @@ export async function login(username, password) {
-    throw new Error('Login failed');
+    if (response.status === 401) {
+      throw new Error('Invalid credentials');
+    }
+    throw new Error('Login error: ' + response.statusText);
\`\`\`

</details>

Limits: Max 500 lines or 2000 characters (truncated with "... (truncated)" if exceeded)

Design Principles
Consistency
  • All AI-generated content uses same blockquote footer format
  • 🎭 emoji consistently marks staged preview mode
  • URL patterns match GitHub conventions
  • Step summaries follow same heading and list structure
Clarity
  • Clear distinction between preview and actual operations
  • Explicit error messages with actionable guidance
  • Helpful fallback instructions when operations fail
  • Field labels consistently use bold text
Discoverability
  • Installation instructions included in footers when available
  • Related items automatically linked across workflow outputs
  • Step summaries provide quick access to created items
  • Collapsible sections keep large content manageable
Safety
  • Labels sanitized to prevent unintended @mentions
  • Patch sizes validated and truncated when needed
  • Staged mode allows testing without side effects
  • Graceful fallbacks when primary operations fail

Schema Validation

All three JSON schema files enforce strict validation with "additionalProperties": false at the root level, preventing typos and undefined fields from silently passing validation.

Schema Files
FilePurpose
pkg/parser/schemas/main_workflow_schema.jsonValidates agentic workflow frontmatter in .github/workflows/*.md files
pkg/parser/schemas/mcp_config_schema.jsonValidates MCP (Model Context Protocol) server configuration
How It Works

When "additionalProperties": false is set at the root level, the validator rejects any properties not explicitly defined in the schema's properties section. This catches common typos:

  • permisions instead of permissions
  • engnie instead of engine
  • toolz instead of tools
  • timeout_minute instead of timeout-minutes
  • runs_on instead of runs-on
  • safe_outputs instead of safe-outputs
Example Validation Error
bash
$ gh aw compile workflow-with-typo.md
✗ error: Unknown properties: toolz, engnie, permisions. Valid fields are: tools, engine, permissions, ...
Validation Process
mermaid
graph LR
    A[Read workflow frontmatter] --> B[Parse YAML]
    B --> C[Validate against JSON schema]
    C --> D{Valid?}
    D -->|Yes| E[Continue compilation]
    D -->|No| F[Provide detailed error]
    F --> G[Show invalid fields]
    F --> H[Show valid field names]
Schema Embedded in Binary

Schemas are embedded in the Go binary using //go:embed directives:

go
//go:embed schemas/main_workflow_schema.json
var mainWorkflowSchema string

This means:

  • Schema changes require running make build to take effect
  • Schemas are validated at runtime, not at build time
  • No external JSON files need to be distributed with the binary
Adding New Fields

When adding new fields to schemas:

  1. Update the schema JSON file with the new property definition
  2. Rebuild the binary with make build
  3. Add test cases to verify the new field works
  4. Update documentation if the field is user-facing
Show full SKILL.md (495 more words)Show less

YAML Compatibility

YAML has two major versions with incompatible boolean parsing behavior that affects workflow validation.

The Core Issue
YAML 1.1 Boolean Parsing Problem

In YAML 1.1, certain plain strings are automatically converted to boolean values. The workflow trigger key on: can be misinterpreted as boolean true instead of string "on".

Example:

python
# Python yaml.safe_load (YAML 1.1 parser)
import yaml

content = """
on:
  issues:
    types: [opened]
"""

result = yaml.safe_load(content)
print(result)
# Output: {True: {'issues': {'types': ['opened']}}}
#          ^^^^ The key is boolean True, not string "on"!

This creates false positives when validating workflows with Python-based tools.

YAML 1.2 Correct Behavior

YAML 1.2 parsers treat on, off, yes, and no as regular strings, not booleans. Only explicit boolean literals true and false are treated as booleans.

Example:

go
// Go goccy/go-yaml (YAML 1.2 parser) - Used by gh-aw
var result map[string]interface{}
yaml.Unmarshal([]byte(content), &result)

fmt.Printf("%+v\n", result)
// Output: map[on:map[issues:map[types:[opened]]]]
//         ^^^ The key is string "on" ✓
How gh-aw Handles This

GitHub Agentic Workflows uses goccy/go-yaml v1.18.0, which is a YAML 1.2 compliant parser:

  • ✅ on: is correctly parsed as a string key, not a boolean
  • ✅ Workflow frontmatter validation works correctly
  • ✅ GitHub Actions YAML is compatible (GitHub Actions also uses YAML 1.2 parsing)
Compatibility Flow
mermaid
graph TD
    A[Workflow File] --> B{Parser Type?}
    B -->|YAML 1.1| C[Python yaml.safe_load]
    B -->|YAML 1.2| D[gh-aw / goccy/go-yaml]
    C --> E[on: parsed as True]
    D --> F[on: parsed as string]
    E --> G[False Positive]
    F --> H[Correct Validation]
Affected Keywords

YAML 1.1 treats these as booleans (parsed as true or false):

Parsed as true: on, yes, y, Y, YES, Yes, ON, On Parsed as false: off, no, n, N, NO, No, OFF, Off

YAML 1.2 treats all of the above as strings. Only these are booleans: true, false

Recommendations
For Workflow Authors
  1. Use gh-aw's compiler for validation:

    bash
    gh aw compile workflow.md
  2. Don't trust Python yaml.safe_load for validation - it will give false positives for the on: trigger key.

  3. Use explicit booleans when you mean boolean values:

    yaml
    enabled: true      # Explicit boolean
    disabled: false    # Explicit boolean
    
    # Avoid for boolean values:
    enabled: yes       # Might be confusing across parsers
    disabled: no       # Might be confusing across parsers
For Tool Developers
  1. Use YAML 1.2 parsers for gh-aw integration:

    • Go: github.com/goccy/go-yaml
    • Python: ruamel.yaml (with YAML 1.2 mode)
    • JavaScript: yaml package v2+ (YAML 1.2 by default)
    • Ruby: Psych (YAML 1.2 by default in Ruby 2.6+)
  2. Document parser version in your tool

  3. Consider adding compatibility mode to switch between YAML 1.1 and 1.2 parsing

MCP Logs Guardrail

The MCP server logs command includes an automatic guardrail to prevent overwhelming responses when fetching workflow logs.

How It Works
mermaid
graph TD
    A[logs command called] --> B[Generate output]
    B --> C{Output size check}
    C -->|≤ 12000 tokens| D[Return full JSON data]
    C -->|> 12000 tokens| E[Return guardrail message]
    E --> F[Include schema description]
    E --> G[Provide suggested jq queries]
Normal Operation (Output ≤ Token Limit)

When output is within the token limit (default: 12000 tokens), the command returns full JSON data:

json
{
  "summary": {
    "total_runs": 5,
    "total_duration": "2h30m",
    "total_tokens": 45000,
    "total_cost": 0.23
  },
  "runs": [...],
  "tool_usage": [...]
}
Guardrail Triggered (Output > Token Limit)

When output exceeds the token limit, the command returns structured response with:

json
{
  "message": "⚠️  Output size (15000 tokens) exceeds the limit (12000 tokens). To reduce output size, use the 'jq' parameter with one of the suggested queries below.",
  "output_tokens": 15000,
  "output_size_limit": 12000,
  "schema": { ... },
  "suggested_queries": [
    {
      "description": "Get only the summary statistics",
      "query": ".summary",
      "example": "Use jq parameter: \".summary\""
    },
    ...
  ]
}
Configuring the Token Limit

Default limit is 12000 tokens (approximately 48KB of text). Customize using the max_tokens parameter:

json
{
  "name": "logs",
  "arguments": {
    "count": 100,
    "max_tokens": 20000
  }
}

Token estimation uses approximately 4 characters per token (OpenAI's rule of thumb).

Using the jq Parameter

Filter output using jq syntax:

Get only summary statistics:

json
{ "jq": ".summary" }

Get run IDs and basic info:

json
{ "jq": ".runs | map({database_id, workflow_name, status})" }

Get only failed runs:

json
{ "jq": ".runs | map(select(.conclusion == \"failure\"))" }

Get high token usage runs:

json
{ "jq": ".runs | map(select(.token_usage > 10000))" }
Implementation Details

Constants:

  • DefaultMaxMCPLogsOutputTokens: 12000 tokens (default limit)
  • CharsPerToken: 4 characters per token (estimation factor)

Files:

  • pkg/cli/mcp_logs_guardrail.go - Core guardrail implementation
  • pkg/cli/mcp_logs_guardrail_test.go - Unit tests
  • pkg/cli/mcp_logs_guardrail_integration_test.go - Integration tests
  • pkg/cli/mcp_server.go - Integration with MCP server
Benefits
  1. Prevents overwhelming responses for AI models
  2. Provides guidance with specific filters
  3. Self-documenting with schema description
  4. Preserves functionality with jq filtering
  5. Transparent messaging about why guardrail triggered

© github, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .github/skills/developer-internals of github/gh-aw.

Open the folder on GitHubat commit eb63040

Compare with similar skills

Developer Internals next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Developer Internals compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Developer Internals this skillgithub/gh-aw5.3k—~4.5kAutomated safety check: PassMIT
Claude Agent SDKmajiayu000/claude-skill-registry6661 repos~7.3kAutomated safety check: NotesMIT
MCP Developmentcoollabsio/coolify63k1 repos~949Automated safety check: PassMIT
Zodjasonjgardner/blockbench-mcp-plugin4883 repos~1.4kAutomated safety check: PassGPL-3.0
Prepare Cloudflare Production DeploymentLubomirGeorgiev/cloudflare-workers-nextjs-saas-template786—~5.9kAutomated safety check: NotesMIT
Figma Typings Auditawdr74100/figwright977—~3.3kAutomated safety check: PassMIT

Similar skills

  • Claude Agent SDK

    majiayu000/claude-skill-registry

    Build autonomous AI agents with Claude Agent SDK. An agent skill from majiayu000/claude-skill-registry.

    666 GitHub starsUsed in 1 repo~7.3k tokens
    AI & LLM EngineeringAuto-check: notes
  • MCP Development

    coollabsio/coolify

    A skill your agent uses for Laravel MCP development. An agent skill from coollabsio/coolify.

    63k GitHub starsUsed in 1 repo~949 tokens
    Frontend & DesignAuto-check passed
  • Zod

    jasonjgardner/blockbench-mcp-plugin

    Zod schema validation best practices for type safety, parsing, and error handling.

    488 GitHub starsUsed in 3 repos~1.4k tokens
    DevelopmentAuto-check passed
  • Prepare Cloudflare Production Deployment

    LubomirGeorgiev/cloudflare-workers-nextjs-saas-template

    Source-of-truth runbook for preparing this Vinext Cloudflare Workers SaaS template for production deployment.

    786 GitHub stars~5.9k tokensUpdated today
    DevOps & CloudAuto-check: notes
  • Figma Typings Audit

    awdr74100/figwright

    Upgrade @figma/plugin-typings and absorb what the new version exposes.

    977 GitHub stars~3.3k tokensUpdated today
    DevelopmentAuto-check passed
  • Claude Docs Consultant

    centminmod/my-claude-code-setup

    Consult official Claude Code documentation from code.claude.com using selective fetching.

    2.7k GitHub stars~959 tokensUpdated 9 days ago
    Agent WorkflowsAuto-check passed

More from github/gh-aw

All 52 skills in this repo
  • Official

    Drives a real browser from the command line with playwright-cli to open pages, interact, mock requests, save state and work with Playwright tests.

    5.3k GitHub starsUsed in 23 repos~2.8k tokens
    Auto-check passed
  • Official

    Designs and verifies a deterministic grader that measures whether a GitHub Agentic Workflow run reached its real-world or repository outcome.

    5.3k GitHub stars~6.8k tokensUpdated today
    Auto-check passed
  • Official

    Scaffolds, edits, reloads and debugs a canvas extension that the GitHub Copilot CLI can open in its side panel.

    5.3k GitHub stars~3.7k tokensUpdated today
    Auto-check passed
  • Official

    Drives an open pull request to merge-ready from inside a GitHub Copilot cloud agent, resolving review threads and local checks concurrently, without merging or retriggering CI.

    5.3k GitHub stars~3.8k tokensUpdated today
    Auto-check: warnings
  • Official

    Bumps gh-aw's pinned gh-aw-firewall version, rebuilds generated artifacts, and flags upstream spec or schema changes that need follow-up work.

    5.3k GitHub stars~899 tokensUpdated today
    Auto-check passed
  • Official

    Guide to the console struct tag system in gh-aw: headers, titles, number and cost formats, omitempty, and how structs, slices and maps render in the terminal.

    5.3k GitHub stars~736 tokensUpdated today
    Auto-check passed

Questions about Developer Internals

What does Developer Internals do?

Internal gh-aw architecture: validation system design, safe output message patterns, schema validation, YAML compatibility notes, and MCP logs guardrail. Developer Internals is an agent skill from github/gh-aw, published by the product's own GitHub organization. Internal gh-aw architecture: validation system design, safe output message patterns, schema validation, YAML compatibility notes, and MCP logs guardrail.

When should I use Developer Internals?

Developer Internals fits situations like: tasks that involve Forms and validation.

How do I install Developer Internals in Claude Code?

Run `npx skills add github/gh-aw --skill developer-internals -a claude-code`. Or copy the skill folder (.github/skills/developer-internals in github/gh-aw) into .claude/skills/developer-internals in your project. Claude Code loads it when a task matches its description.

How do I install Developer Internals in Codex?

Run `npx skills add github/gh-aw --skill developer-internals -a codex`. Or copy the skill folder (.github/skills/developer-internals in github/gh-aw) into .agents/skills/developer-internals in your project. Codex loads it when a task matches its description.

Can I use Developer Internals in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add github/gh-aw --skill developer-internals -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/developer-internals, .gemini/skills/developer-internals, .github/skills/developer-internals and .opencode/skills/developer-internals in your project.

What does Developer Internals need to run?

Going by SKILL.md and its folder, Developer Internals needs the command-line tools its instructions call (gh and make). Our summary lists: Python 3; Node.js; Docker.

Does Developer Internals access the network?

SKILL.md names 1 domain. In commands or code: github.github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Developer Internals safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Developer Internals use?

Developer Internals is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Developer Internals use?

About 4.5k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Developer Internals?

Skills that share tags, products or a category with Developer Internals: Claude Agent SDK (majiayu000/claude-skill-registry, 666 stars), MCP Development (coollabsio/coolify, 63k stars), Zod (jasonjgardner/blockbench-mcp-plugin, 488 stars) and Prepare Cloudflare Production Deployment (LubomirGeorgiev/cloudflare-workers-nextjs-saas-template, 786 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Developer Internals?

github (a GitHub organization, an official publisher) maintains it in github/gh-aw, which has 5,350 GitHub stars. The repository holds 52 skills in this directory. The repository was last updated on October 7, 2026.

Source: github/gh-aw on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.