Summary
gh aw upgrade fails while updating the dispatcher skill if an existing repository has a .github/aw directory but that directory contains no markdown files.
This blocks upgrading an existing gh-aw-enabled repository whose workflow sources live under .github/workflows/*.md, but whose .github/aw/ directory contains only non-documentation artifacts such as actions-lock.json and/or logs/.
The same dispatcher-skill builder issue also affects gh aw init in the same filesystem state.
Version
gh version 2.93.0 (2026-05-27)
gh aw version v0.77.5
Minimal reproduction: existing repo upgrade
tmpdir=$(mktemp -d /tmp/gh-aw-upgrade-empty-aw-repro.XXXXXX)
cd "$tmpdir"
git init --quiet
mkdir -p .github/aw/logs .github/workflows
touch .github/aw/actions-lock.json
cat > .github/workflows/example.md <<'EOF'
---
name: Example Agentic Workflow
on:
workflow_dispatch:
permissions:
contents: read
actions: read
engine: copilot
strict: true
timeout-minutes: 5
---
Say hello.
EOF
gh aw upgrade -v
Actual behavior for gh aw upgrade
ℹ Checking gh-aw extension version...
✓ gh-aw extension is up to date
ℹ Updating dispatcher skill...
✗ failed to update dispatcher skill
failed to update dispatcher skill
failed to build dispatcher skill
no markdown files found in /tmp/gh-aw-upgrade-empty-aw-repro.eqm7PG/.github/aw - ensure .github/aw contains workflow documentation files
Exit code: 1
The command fails before applying codemods, updating action versions, or compiling the existing .github/workflows/*.md files.
Minimal reproduction: init-only variant
tmpdir=$(mktemp -d /tmp/gh-aw-empty-aw-repro.XXXXXX)
cd "$tmpdir"
git init --quiet
mkdir -p .github/aw/logs
touch .github/aw/actions-lock.json
gh aw init -v
Actual behavior for gh aw init
🚀 Welcome to GitHub Agentic Workflows!
This tool will initialize your repository for GitHub Agentic Workflows.
ℹ Setting up repository...
✓ Configured .gitattributes
✗ failed to write dispatcher skill
failed to build dispatcher skill
no markdown files found in /tmp/gh-aw-empty-aw-repro.fBYzHq/.github/aw - ensure .github/aw contains workflow documentation files
Exit code: 1
Expected behavior
gh aw upgrade should be able to upgrade an existing repository in this state, or provide a recovery path that does not require manually discovering/restoring upstream .github/aw/*.md documentation files.
Possible acceptable behaviors:
- build the dispatcher skill from packaged/embedded gh-aw docs when local
.github/aw/*.md files are absent
- seed the required
.github/aw/*.md files during upgrade/init
- ignore
.github/aw if it exists but contains only non-documentation artifacts
- emit an actionable message explaining exactly which command should repair the missing docs
Additional notes
Deleting .github/aw/actions-lock.json does not change the failure if .github/aw/ still exists without markdown files. The issue appears keyed to the presence of .github/aw with no *.md files, not to the lock file specifically.
A fresh repository with no pre-existing .github/aw directory can run gh aw init successfully and generates:
.gitattributes
.github/agents/agentic-workflows.md
.github/skills/agentic-workflows/SKILL.md
.github/workflows/copilot-setup-steps.yml
.github/mcp.json
.vscode/settings.json
But both gh aw upgrade and gh aw init fail before creating/updating the dispatcher skill once an empty/non-markdown .github/aw directory is present.
Summary
gh aw upgradefails while updating the dispatcher skill if an existing repository has a.github/awdirectory but that directory contains no markdown files.This blocks upgrading an existing gh-aw-enabled repository whose workflow sources live under
.github/workflows/*.md, but whose.github/aw/directory contains only non-documentation artifacts such asactions-lock.jsonand/orlogs/.The same dispatcher-skill builder issue also affects
gh aw initin the same filesystem state.Version
Minimal reproduction: existing repo upgrade
Actual behavior for
gh aw upgradeExit code:
1The command fails before applying codemods, updating action versions, or compiling the existing
.github/workflows/*.mdfiles.Minimal reproduction: init-only variant
Actual behavior for
gh aw initExit code:
1Expected behavior
gh aw upgradeshould be able to upgrade an existing repository in this state, or provide a recovery path that does not require manually discovering/restoring upstream.github/aw/*.mddocumentation files.Possible acceptable behaviors:
.github/aw/*.mdfiles are absent.github/aw/*.mdfiles duringupgrade/init.github/awif it exists but contains only non-documentation artifactsAdditional notes
Deleting
.github/aw/actions-lock.jsondoes not change the failure if.github/aw/still exists without markdown files. The issue appears keyed to the presence of.github/awwith no*.mdfiles, not to the lock file specifically.A fresh repository with no pre-existing
.github/awdirectory can rungh aw initsuccessfully and generates:But both
gh aw upgradeandgh aw initfail before creating/updating the dispatcher skill once an empty/non-markdown.github/awdirectory is present.