Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/prompts/release-content.prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ refresh, first run `.github/prompts/update-book.prompt.md`.
## After the human merges

`validate-book.yml` builds and gates the exact artifacts consumed by both publishing
workflows. `deploy-pages.yml` publishes that site/PDF without rebuilding;
workflows. `deploy-pages.yml` publishes the online site without the gated PDF;
`release-content.yml` creates `content-v<edition>` with the matching
`gh-aw-book-v<edition>.pdf` and changelog notes. Verify both workflow outcomes, the release
asset, and the live version-history page before calling the edition published.
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/deploy-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,16 @@ jobs:
permissions:
contents: write
steps:
- name: Download the validated site, analytics beacon, and PDF
- name: Download the validated site and analytics beacon
uses: actions/download-artifact@v4
with:
name: validated-pages
path: artifact

- name: Publish the exact validated site to gh-pages
- name: Remove the gated PDF from the public site
run: rm -f artifact/site/gh-aw-book.pdf

- name: Publish the validated site to gh-pages
run: |
cd artifact/site
touch .nojekyll
Expand Down
6 changes: 3 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ __pycache__/
dist/
build/

# Downloadable book PDF — a binary build artifact rendered from site/book.html by
# scripts/build_pdf.py (in CI on every deploy, and locally on demand). It is
# published to gh-pages but not committed to main.
# Book PDF — a binary build artifact rendered from site/book.html by
# scripts/build_pdf.py for release assets and local use. It is not committed to main
# or published on the public website.
site/gh-aw-book.pdf

# Playwright browser-download marker (browsers install to a shared cache, not here)
Expand Down
21 changes: 11 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -256,13 +256,14 @@ python scripts\verify_examples.py --compiler <absolute-gh-aw-executable>

---

## Download the book as a PDF
## Get the book as a PDF

The whole book is also available as a **single downloadable PDF**, linked from the site (home page
"Download PDF", the reader nav, and every chapter). It is rendered from a **single-page edition**
(`site/book.html`, which `site/generate.py` produces alongside the chapter pages) using headless
Chromium via [Playwright](https://playwright.dev/python/), so code blocks keep their syntax
highlighting and the PDF carries page numbers and a chapter outline.
The whole book is available as a **single downloadable PDF** through the
[Substack download page](https://isainative.substack.com/p/free-agentic-workflows-book). The
website links to that gated page rather than publishing the PDF directly. The PDF is rendered from
a **single-page edition** (`site/book.html`, which `site/generate.py` produces alongside the chapter
pages) using headless Chromium via [Playwright](https://playwright.dev/python/), so code blocks keep
their syntax highlighting and the PDF carries page numbers and a chapter outline.

```powershell
# 1. (re)generate the site, including site/book.html (the PDF's source)
Expand All @@ -275,10 +276,10 @@ python scripts/build_pdf.py
```

The PDF (`site/gh-aw-book.pdf`) is a **binary build artifact**: it is gitignored, not committed to
`main`. On every push that changes the book, the deploy workflow
([`.github/workflows/deploy-pages.yml`](.github/workflows/deploy-pages.yml)) regenerates it right
after `generate.py` and publishes it to the live site — so the downloadable PDF always matches the
current book.
`main`, and removed before the site is published. The deploy workflow
([`.github/workflows/deploy-pages.yml`](.github/workflows/deploy-pages.yml)) still validates the
single-page source and release tooling, while the public site sends readers to the gated Substack
page.

---

Expand Down
2 changes: 1 addition & 1 deletion scripts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ not committed sources.
helpers, release/evidence contract, pinned whole-corpus compilation, and HTML/PDF generation.
The PR still needs human review/merge; these workflows do not configure branch protection.

After merge, `deploy-pages.yml` publishes the current online/PDF edition and
After merge, `deploy-pages.yml` publishes the current online edition and
`release-content.yml` publishes its matching tag, changelog notes, and versioned PDF.
Both consume the exact artifacts produced by validation instead of rebuilding afterward.
The release workflow also evaluates content/example/tooling pushes; a complete existing
Expand Down
4 changes: 2 additions & 2 deletions site/book.html
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@
</head>
<body class="book">
<div class="book-toolbar" role="toolbar" aria-label="Book actions">
<a class="book-btn book-btn--primary" href="gh-aw-book.pdf">↓ Download PDF</a>
<a class="book-btn book-btn--primary" href="https://isainative.substack.com/p/free-agentic-workflows-book" target="_blank" rel="noopener">Get the free PDF</a>
<button class="book-btn" type="button" onclick="window.print()">Print / Save as PDF</button>
<a class="book-btn" href="index.html">← Back to the web edition</a>
</div>
Expand All @@ -130,7 +130,7 @@
<h1 class="book-cover-title">GitHub Agentic Workflows</h1>
<p class="book-cover-sub">A progressive guide that starts with agentic-workflow concepts and builds toward GitHub Agentic Workflows authoring, compilation, MCP tools, safe outputs, and CI hosting.</p>
<p class="book-cover-author">By <strong>Maxim Salnikov</strong> · Microsoft</p>
<p class="book-cover-meta"><a href="https://aw.isainative.dev/versions.html">Content edition v1.2</a> · 14 chapters · Single-page edition · Generated 2026-09-16</p>
<p class="book-cover-meta"><a href="https://aw.isainative.dev/versions.html">Content edition v1.2</a> · 14 chapters · Single-page edition · Generated 2026-09-20</p>
<p class="book-cover-meta"><a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></p>
</header>

Expand Down
4 changes: 2 additions & 2 deletions site/chapters/anatomy-and-compile-model.html
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@

<div class="content-shell">
<header class="chapter-header">
<nav class="breadcrumb" aria-label="Breadcrumb"><a href="../index.html">Home</a> / Chapter 3 <span class="fm-sep">·</span> <a href="../gh-aw-book.pdf">Download PDF</a> <span class="fm-sep">·</span> <a href="../versions.html">Content edition v1.2</a> <span class="fm-sep">·</span> <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></nav>
<nav class="breadcrumb" aria-label="Breadcrumb"><a href="../index.html">Home</a> / Chapter 3 <span class="fm-sep">·</span> <a href="https://isainative.substack.com/p/free-agentic-workflows-book" target="_blank" rel="noopener">Get the free PDF</a> <span class="fm-sep">·</span> <a href="../versions.html">Content edition v1.2</a> <span class="fm-sep">·</span> <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></nav>
<p class="fm"><span class="fm-k">chapter:</span> <span class="fm-v">03</span><span class="fm-sep">·</span><span class="fm-k">part:</span> <span class="fm-v">The Individual (one workflow)</span></p>
<h1>Anatomy &amp; the Compile Model</h1>
<p class="lead">Read any workflow&#x27;s frontmatter + Markdown, run the compile-and-iterate loop, and understand what the generated .lock.yml contains.</p>
Expand Down Expand Up @@ -371,7 +371,7 @@ <h2 id="recap-and-what-s-next"><a class="anchor-link" href="#recap-and-what-s-ne
</main>

<footer class="site-footer chapter-footer">
<p>By <strong>Maxim Salnikov</strong> · Microsoft · <a href="https://www.linkedin.com/in/webmax/" target="_blank" rel="noopener">LinkedIn</a> · <a href="https://github.com/webmaxru/github-agentic-workflows-book" target="_blank" rel="noopener">Book repository on GitHub ↗</a> · <a href="../gh-aw-book.pdf">Download the PDF</a> · <a href="../versions.html">Content edition v1.2</a> · <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></p>
<p>By <strong>Maxim Salnikov</strong> · Microsoft · <a href="https://www.linkedin.com/in/webmax/" target="_blank" rel="noopener">LinkedIn</a> · <a href="https://github.com/webmaxru/github-agentic-workflows-book" target="_blank" rel="noopener">Book repository on GitHub ↗</a> · <a href="https://isainative.substack.com/p/free-agentic-workflows-book" target="_blank" rel="noopener">Get the free PDF</a> · <a href="../versions.html">Content edition v1.2</a> · <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></p>
</footer>
</div>
</div>
Expand Down
4 changes: 2 additions & 2 deletions site/chapters/continuous-review-and-testing.html
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@

<div class="content-shell">
<header class="chapter-header">
<nav class="breadcrumb" aria-label="Breadcrumb"><a href="../index.html">Home</a> / Chapter 10 <span class="fm-sep">·</span> <a href="../gh-aw-book.pdf">Download PDF</a> <span class="fm-sep">·</span> <a href="../versions.html">Content edition v1.2</a> <span class="fm-sep">·</span> <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></nav>
<nav class="breadcrumb" aria-label="Breadcrumb"><a href="../index.html">Home</a> / Chapter 10 <span class="fm-sep">·</span> <a href="https://isainative.substack.com/p/free-agentic-workflows-book" target="_blank" rel="noopener">Get the free PDF</a> <span class="fm-sep">·</span> <a href="../versions.html">Content edition v1.2</a> <span class="fm-sep">·</span> <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></nav>
<p class="fm"><span class="fm-k">chapter:</span> <span class="fm-v">10</span><span class="fm-sep">·</span><span class="fm-k">part:</span> <span class="fm-v">The Team (safe, reviewed, patterned)</span></p>
<h1>Continuous Review, Testing &amp; CI-Doctor</h1>
<p class="lead">Close the quality loop with Review, Testing, CI-Doctor, and Refactoring patterns while keeping humans on the merge decision.</p>
Expand Down Expand Up @@ -383,7 +383,7 @@ <h2 id="recap-and-what-s-next"><a class="anchor-link" href="#recap-and-what-s-ne
</main>

<footer class="site-footer chapter-footer">
<p>By <strong>Maxim Salnikov</strong> · Microsoft · <a href="https://www.linkedin.com/in/webmax/" target="_blank" rel="noopener">LinkedIn</a> · <a href="https://github.com/webmaxru/github-agentic-workflows-book" target="_blank" rel="noopener">Book repository on GitHub ↗</a> · <a href="../gh-aw-book.pdf">Download the PDF</a> · <a href="../versions.html">Content edition v1.2</a> · <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></p>
<p>By <strong>Maxim Salnikov</strong> · Microsoft · <a href="https://www.linkedin.com/in/webmax/" target="_blank" rel="noopener">LinkedIn</a> · <a href="https://github.com/webmaxru/github-agentic-workflows-book" target="_blank" rel="noopener">Book repository on GitHub ↗</a> · <a href="https://isainative.substack.com/p/free-agentic-workflows-book" target="_blank" rel="noopener">Get the free PDF</a> · <a href="../versions.html">Content edition v1.2</a> · <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></p>
</footer>
</div>
</div>
Expand Down
4 changes: 2 additions & 2 deletions site/chapters/continuous-triage-and-docs.html
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@

<div class="content-shell">
<header class="chapter-header">
<nav class="breadcrumb" aria-label="Breadcrumb"><a href="../index.html">Home</a> / Chapter 9 <span class="fm-sep">·</span> <a href="../gh-aw-book.pdf">Download PDF</a> <span class="fm-sep">·</span> <a href="../versions.html">Content edition v1.2</a> <span class="fm-sep">·</span> <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></nav>
<nav class="breadcrumb" aria-label="Breadcrumb"><a href="../index.html">Home</a> / Chapter 9 <span class="fm-sep">·</span> <a href="https://isainative.substack.com/p/free-agentic-workflows-book" target="_blank" rel="noopener">Get the free PDF</a> <span class="fm-sep">·</span> <a href="../versions.html">Content edition v1.2</a> <span class="fm-sep">·</span> <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></nav>
<p class="fm"><span class="fm-k">chapter:</span> <span class="fm-v">09</span><span class="fm-sep">·</span><span class="fm-k">part:</span> <span class="fm-v">The Team (safe, reviewed, patterned)</span></p>
<h1>Continuous Triage &amp; Docs: Reading the Room</h1>
<p class="lead">Ship two production-shaped patterns — Continuous Triage and Continuous Docs — as mini-products the Repo Assistant runs on its own.</p>
Expand Down Expand Up @@ -418,7 +418,7 @@ <h2 id="recap-and-what-s-next"><a class="anchor-link" href="#recap-and-what-s-ne
</main>

<footer class="site-footer chapter-footer">
<p>By <strong>Maxim Salnikov</strong> · Microsoft · <a href="https://www.linkedin.com/in/webmax/" target="_blank" rel="noopener">LinkedIn</a> · <a href="https://github.com/webmaxru/github-agentic-workflows-book" target="_blank" rel="noopener">Book repository on GitHub ↗</a> · <a href="../gh-aw-book.pdf">Download the PDF</a> · <a href="../versions.html">Content edition v1.2</a> · <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></p>
<p>By <strong>Maxim Salnikov</strong> · Microsoft · <a href="https://www.linkedin.com/in/webmax/" target="_blank" rel="noopener">LinkedIn</a> · <a href="https://github.com/webmaxru/github-agentic-workflows-book" target="_blank" rel="noopener">Book repository on GitHub ↗</a> · <a href="https://isainative.substack.com/p/free-agentic-workflows-book" target="_blank" rel="noopener">Get the free PDF</a> · <a href="../versions.html">Content edition v1.2</a> · <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></p>
</footer>
</div>
</div>
Expand Down
4 changes: 2 additions & 2 deletions site/chapters/defense-in-depth.html
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@

<div class="content-shell">
<header class="chapter-header">
<nav class="breadcrumb" aria-label="Breadcrumb"><a href="../index.html">Home</a> / Chapter 7 <span class="fm-sep">·</span> <a href="../gh-aw-book.pdf">Download PDF</a> <span class="fm-sep">·</span> <a href="../versions.html">Content edition v1.2</a> <span class="fm-sep">·</span> <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></nav>
<nav class="breadcrumb" aria-label="Breadcrumb"><a href="../index.html">Home</a> / Chapter 7 <span class="fm-sep">·</span> <a href="https://isainative.substack.com/p/free-agentic-workflows-book" target="_blank" rel="noopener">Get the free PDF</a> <span class="fm-sep">·</span> <a href="../versions.html">Content edition v1.2</a> <span class="fm-sep">·</span> <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></nav>
<p class="fm"><span class="fm-k">chapter:</span> <span class="fm-v">07</span><span class="fm-sep">·</span><span class="fm-k">part:</span> <span class="fm-v">The Team (safe, reviewed, patterned)</span></p>
<h1>Defense in Depth: Permissions, Firewall &amp; Strict Mode</h1>
<p class="lead">Reduce a workflow&#x27;s authority and exposure with least-privilege permissions, runtime isolation, egress controls, and strict mode while explaining the remaining risks.</p>
Expand Down Expand Up @@ -376,7 +376,7 @@ <h2 id="recap-and-what-s-next"><a class="anchor-link" href="#recap-and-what-s-ne
</main>

<footer class="site-footer chapter-footer">
<p>By <strong>Maxim Salnikov</strong> · Microsoft · <a href="https://www.linkedin.com/in/webmax/" target="_blank" rel="noopener">LinkedIn</a> · <a href="https://github.com/webmaxru/github-agentic-workflows-book" target="_blank" rel="noopener">Book repository on GitHub ↗</a> · <a href="../gh-aw-book.pdf">Download the PDF</a> · <a href="../versions.html">Content edition v1.2</a> · <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></p>
<p>By <strong>Maxim Salnikov</strong> · Microsoft · <a href="https://www.linkedin.com/in/webmax/" target="_blank" rel="noopener">LinkedIn</a> · <a href="https://github.com/webmaxru/github-agentic-workflows-book" target="_blank" rel="noopener">Book repository on GitHub ↗</a> · <a href="https://isainative.substack.com/p/free-agentic-workflows-book" target="_blank" rel="noopener">Get the free PDF</a> · <a href="../versions.html">Content edition v1.2</a> · <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></p>
</footer>
</div>
</div>
Expand Down
4 changes: 2 additions & 2 deletions site/chapters/engines.html
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@

<div class="content-shell">
<header class="chapter-header">
<nav class="breadcrumb" aria-label="Breadcrumb"><a href="../index.html">Home</a> / Chapter 5 <span class="fm-sep">·</span> <a href="../gh-aw-book.pdf">Download PDF</a> <span class="fm-sep">·</span> <a href="../versions.html">Content edition v1.2</a> <span class="fm-sep">·</span> <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></nav>
<nav class="breadcrumb" aria-label="Breadcrumb"><a href="../index.html">Home</a> / Chapter 5 <span class="fm-sep">·</span> <a href="https://isainative.substack.com/p/free-agentic-workflows-book" target="_blank" rel="noopener">Get the free PDF</a> <span class="fm-sep">·</span> <a href="../versions.html">Content edition v1.2</a> <span class="fm-sep">·</span> <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></nav>
<p class="fm"><span class="fm-k">chapter:</span> <span class="fm-v">05</span><span class="fm-sep">·</span><span class="fm-k">part:</span> <span class="fm-v">The Individual (one workflow)</span></p>
<h1>Engines: Choosing the Agent&#x27;s Brain</h1>
<p class="lead">Select and configure Copilot, Claude, Codex, Gemini, or Pi, control CLI/model selection, and distinguish portable intent from engine-specific runtime requirements.</p>
Expand Down Expand Up @@ -336,7 +336,7 @@ <h2 id="recap-and-what-s-next"><a class="anchor-link" href="#recap-and-what-s-ne
</main>

<footer class="site-footer chapter-footer">
<p>By <strong>Maxim Salnikov</strong> · Microsoft · <a href="https://www.linkedin.com/in/webmax/" target="_blank" rel="noopener">LinkedIn</a> · <a href="https://github.com/webmaxru/github-agentic-workflows-book" target="_blank" rel="noopener">Book repository on GitHub ↗</a> · <a href="../gh-aw-book.pdf">Download the PDF</a> · <a href="../versions.html">Content edition v1.2</a> · <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></p>
<p>By <strong>Maxim Salnikov</strong> · Microsoft · <a href="https://www.linkedin.com/in/webmax/" target="_blank" rel="noopener">LinkedIn</a> · <a href="https://github.com/webmaxru/github-agentic-workflows-book" target="_blank" rel="noopener">Book repository on GitHub ↗</a> · <a href="https://isainative.substack.com/p/free-agentic-workflows-book" target="_blank" rel="noopener">Get the free PDF</a> · <a href="../versions.html">Content edition v1.2</a> · <a href="https://github.com/github/gh-aw/releases/tag/v0.88.7">Verified with gh-aw v0.88.7</a></p>
</footer>
</div>
</div>
Expand Down
Loading
Loading