This is a hands-on workshop that teaches developers how to build GitHub Agentic Workflows
using the gh-aw CLI extension. Learners follow numbered Markdown steps in the workshop/
folder and finish with a scheduled, AI-powered daily repository status report running in
GitHub Actions.
The repository also contains the agentic workflow files that power the workshop's own
automated tooling (author review, student simulation, order checks) under .github/workflows/.
README.md # Workshop landing page (GitHub Skills style)
AGENTS.md # This file — tips for AI agents
workshop/ # Step-by-step workshop content (00-welcome.md … 16-connect-data-source.md)
.github/
workflows/ # Agentic workflow definition files (*.md) and compiled lock files (*.lock.yml)
skills/ # Copilot skill definitions for agentic-workflows and agentic-workflow-designer
agents/ # Agent instruction files (do not read or modify)
mcp.json # MCP server configuration for gh-aw
.markdownlint-cli2.yaml # Markdownlint rule overrides
IMPORT GUIDELINES TO FOLLLOW: .github/workflows/guidelines.md
- Write in second person ("you"), present tense, active voice.
- Keep steps short and outcome-focused. Each step should answer: what will the learner do, and what will they have when they're done?
- Use
> [!TIP]and> [!NOTE]callouts sparingly — only when the information meaningfully changes what the learner should do. Cap alert severity at[!NOTE]/[!TIP]for regular content; use[!IMPORTANT]only when the learner must act before continuing, and reserve[!WARNING]/[!CAUTION]for major security issues only. Never use dramatic or alarmist language. For multi-line callouts, wrap content in a<details>element with a<summary>heading; for single-line callouts, put the text directly in the blockquote without<details>(see the "Alert callouts" section in.github/workflows/guidelines.md). - End every workshop step with a
## ✅ Checkpointsection containing a markdown checklist. - Do not number Markdown headers inside a file. Use descriptive headings and keep step order in lists, filenames, tables, or checkpoints instead.
- Do not front-load prerequisite tool requirements in welcome or introductory steps — prerequisites belong in
01-prerequisites.md.
All Markdown files are linted with markdownlint-cli2.
Run the linter from the repository root:
npx --yes markdownlint-cli2 "**/*.md"The following rules are disabled in .markdownlint-cli2.yaml — do not add inline
<!-- markdownlint-disable --> comments for these:
| Rule | Description |
|---|---|
| MD009 | Trailing spaces |
| MD012 | Multiple blank lines |
| MD013 | Line length |
| MD022 | Headings surrounded by blank lines |
| MD031 | Fenced code blocks surrounded by blank lines |
| MD032 | Lists surrounded by blank lines |
| MD033 | Inline HTML |
| MD040 | Fenced code blocks with language specified |
| MD060 | Fenced code block style |
Never configure Codespace badges or devcontainer.json to open from this (gh-aw-workshop) repository. The workshop repository itself is not a suitable Codespace base — learners work in their own practice repositories, not a clone of this one. Any Codespace badge or devcontainer setup must point to the learner's own repository.
The golden-ticket workshop assets live on the golden-ticket-workshop branch, not on main. This is the fully preconfigured beginner workshop path: Copilot, repository setup, and Codespaces bootstrapping are prepared ahead of time.
During org provisioning, that branch is copied into the provisioned org's .github-private repository. From there, .github/workflows/create-participants-repo.yml and the .github/participant-template/ files create and update participant repositories.
Do not treat those launchers as suitable for this repository itself.
- Workshop steps are numbered files in
workshop/(e.g.,07-your-first-workflow.md). - Images referenced in workshop steps live in
workshop/images/. - Keep
workshop/README.mdin sync whenever you add or rename a step. - Run the markdown linter before committing any workshop step edits.
- When adding a new step, follow the existing file naming pattern and update the curriculum table in both
workshop/README.mdandworkshop/00-welcome.md. - When editing shared intro or onboarding copy that may be reused outside the workshop pages, preserve and update the HTML reuse markers in
workshop/00-welcome.md.
Golden-ticket workshop maintenance rules:
- When a workshop change should also affect the golden-ticket workshop experience, agents should check whether the
golden-ticket-workshopbranch needs a corresponding update and carry that update through when it is in scope. workshop/00-welcome.mdowns only shared workshop framing and onboarding copy that is intentionally reused.- The golden-ticket branch README is its own launcher artifact for the preconfigured beginner experience. Do not try to keep it structurally identical to
workshop/00-welcome.md. - Keep the ending call-to-action intentionally different:
workshop/00-welcome.mdshould continue into the next workshop step, while the golden-ticket README should direct learners into the precreated repository and Codespaces flow. - The participant template files, Codespaces bootstrap files, and provisioning workflow are standalone branch assets.
- When an agent edits onboarding, setup, Codespaces, or early navigation content on
main, it should explicitly assess downstream impact ongolden-ticket-workshopand either update the affected branch assets or state why no branch change is needed. - Validate golden-ticket changes in the branch and
.github-privatecontext where they run.
Workflow definitions live in .github/workflows/*.md. Each file contains YAML frontmatter
(between --- fences) followed by a Markdown task brief for the AI agent.
Position agentic workflows as an Actions-compatible superset: frontmatter stays compatible with standard Actions concepts, while the Markdown body adds agentic reasoning and templating capabilities. Favor a smooth transition story and call out hybrid deterministic + agentic patterns when relevant (for example, deterministic data-fetch steps plus agentic analysis in the brief).
Compiled lock files (*.lock.yml) are generated automatically — do not edit them by hand.
Regenerate a lock file with:
gh aw compileUse --validate only when you are troubleshooting compile errors or running a targeted schema/deprecation check.
The official gh-aw docs are published at https://github.github.com/gh-aw/ from the
github/gh-aw repository (Astro Starlight layout). Source files live at:
docs/src/content/docs/<section>/<slug>.md (or .mdx)
URL scheme: https://github.github.com/gh-aw/<section>/<slug>/
To validate a link, search for the corresponding file in github/gh-aw:
filename:<slug>.md repo:github/gh-aw
| Section | Slug | URL |
|---|---|---|
| reference | artifacts | https://github.github.com/gh-aw/reference/artifacts/ |
| reference | audit | https://github.github.com/gh-aw/reference/audit/ |
| reference | auth | https://github.github.com/gh-aw/reference/auth/ |
| reference | billing | https://github.github.com/gh-aw/reference/billing/ |
| reference | cache-memory | https://github.github.com/gh-aw/reference/cache-memory/ |
| reference | checkout | https://github.github.com/gh-aw/reference/checkout/ |
| reference | compilation-process | https://github.github.com/gh-aw/reference/compilation-process/ |
| reference | concurrency | https://github.github.com/gh-aw/reference/concurrency/ |
| reference | copilot-cloud-agent | https://github.github.com/gh-aw/reference/copilot-cloud-agent/ |
| reference | copilot-custom-agents | https://github.github.com/gh-aw/reference/copilot-custom-agents/ |
| reference | cost-management | https://github.github.com/gh-aw/reference/cost-management/ |
| reference | cross-repository | https://github.github.com/gh-aw/reference/cross-repository/ |
| reference | engines | https://github.github.com/gh-aw/reference/engines/ |
| reference | environment-variables | https://github.github.com/gh-aw/reference/environment-variables/ |
| reference | ephemerals | https://github.github.com/gh-aw/reference/ephemerals/ |
| reference | faq | https://github.github.com/gh-aw/reference/faq/ |
| reference | footers | https://github.github.com/gh-aw/reference/footers/ |
| reference | frontmatter | https://github.github.com/gh-aw/reference/frontmatter/ |
| reference | github-tools | https://github.github.com/gh-aw/reference/github-tools/ |
| reference | glossary | https://github.github.com/gh-aw/reference/glossary/ |
| reference | imports | https://github.github.com/gh-aw/reference/imports/ |
| reference | inline-sub-agents | https://github.github.com/gh-aw/reference/inline-sub-agents/ |
| reference | markdown | https://github.github.com/gh-aw/reference/markdown/ |
| reference | mcp-gateway | https://github.github.com/gh-aw/reference/mcp-gateway/ |
| reference | mcp-scripts | https://github.github.com/gh-aw/reference/mcp-scripts/ |
| reference | network | https://github.github.com/gh-aw/reference/network/ |
| reference | outcomes | https://github.github.com/gh-aw/reference/outcomes/ |
| reference | permissions | https://github.github.com/gh-aw/reference/permissions/ |
| reference | qmd | https://github.github.com/gh-aw/reference/qmd/ |
| reference | rate-limiting-controls | https://github.github.com/gh-aw/reference/rate-limiting-controls/ |
| reference | releases | https://github.github.com/gh-aw/reference/releases/ |
| reference | repo-memory | https://github.github.com/gh-aw/reference/repo-memory/ |
| reference | safe-outputs | https://github.github.com/gh-aw/reference/safe-outputs/ |
| reference | sandbox | https://github.github.com/gh-aw/reference/sandbox/ |
| reference | self-hosted-runners | https://github.github.com/gh-aw/reference/self-hosted-runners/ |
| reference | serena | https://github.github.com/gh-aw/reference/serena/ |
| reference | staged-mode | https://github.github.com/gh-aw/reference/staged-mode/ |
| reference | steps-jobs | https://github.github.com/gh-aw/reference/steps-jobs/ |
| reference | templating | https://github.github.com/gh-aw/reference/templating/ |
| reference | tools | https://github.github.com/gh-aw/reference/tools/ |
| reference | triggers | https://github.github.com/gh-aw/reference/triggers/ |
| reference | workflow-structure | https://github.github.com/gh-aw/reference/workflow-structure/ |
| guides | agentic-authoring | https://github.github.com/gh-aw/guides/agentic-authoring/ |
| guides | arc-dind-copilot-agent | https://github.github.com/gh-aw/guides/arc-dind-copilot-agent/ |
| guides | governance | https://github.github.com/gh-aw/guides/governance/ |
| guides | mcps | https://github.github.com/gh-aw/guides/mcps/ |
| guides | open-telemetry | https://github.github.com/gh-aw/guides/open-telemetry/ |
| guides | reusing-workflows | https://github.github.com/gh-aw/guides/reusing-workflows/ |
| guides | third-party-agent | https://github.github.com/gh-aw/guides/third-party-agent/ |
| guides | upgrading | https://github.github.com/gh-aw/guides/upgrading/ |
| guides | using-at-scale | https://github.github.com/gh-aw/guides/using-at-scale/ |
| setup | cli | https://github.github.com/gh-aw/setup/cli/ |
| setup | creating-workflows | https://github.github.com/gh-aw/setup/creating-workflows/ |
| setup | quick-start | https://github.github.com/gh-aw/setup/quick-start/ |
| introduction | architecture | https://github.github.com/gh-aw/introduction/architecture/ |
| introduction | how-they-work | https://github.github.com/gh-aw/introduction/how-they-work/ |
| introduction | overview | https://github.github.com/gh-aw/introduction/overview/ |
| patterns | batch-ops | https://github.github.com/gh-aw/patterns/batch-ops/ |
| patterns | chat-ops | https://github.github.com/gh-aw/patterns/chat-ops/ |
| patterns | issue-ops | https://github.github.com/gh-aw/patterns/issue-ops/ |
| patterns | label-ops | https://github.github.com/gh-aw/patterns/label-ops/ |
| patterns | memory-ops | https://github.github.com/gh-aw/patterns/memory-ops/ |
| patterns | project-ops | https://github.github.com/gh-aw/patterns/project-ops/ |
| patterns | spec-ops | https://github.github.com/gh-aw/patterns/spec-ops/ |
| patterns | workqueue-ops | https://github.github.com/gh-aw/patterns/workqueue-ops/ |
| experimental | experiments | https://github.github.com/gh-aw/experimental/experiments/ |
| examples | multi-repo | https://github.github.com/gh-aw/examples/multi-repo/ |
- Open the relevant file in
workshop/. - Make your changes following the content conventions above.
- Run
npx --yes markdownlint-cli2 "**/*.md"and fix any errors. - If the step is new, update
workshop/README.mdandworkshop/00-welcome.md.
- Edit the
.mdfile in.github/workflows/. - Regenerate lock files:
gh aw compile. - Commit both the
.mdand the updated.lock.yml.
Place image files in workshop/images/ and reference them with a relative path:
