docs(wiki): sync from modules/ @ 1522721a

2026-06-22 23:22:06 +00:00
parent 0f8a1106f8
commit fea62c4278
28 changed files with 244 additions and 0 deletions
+6
@@ -1,5 +1,6 @@
> 📖 _This page is generated from [`modules/01-the-copy-paste-problem/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/01-the-copy-paste-problem/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/01-the-copy-paste-problem/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/01-the-copy-paste-problem/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
# Module 1 — The Copy-Paste Problem # Module 1 — The Copy-Paste Problem
> **You can already get an AI to write good code. The thing that's failing you is everything around > **You can already get an AI to write good code. The thing that's failing you is everything around
@@ -254,3 +255,8 @@ Be honest about the limits of this module's claims:
If all three are true, you're ready for Module 2, where we install the safety net that makes the If all three are true, you're ready for Module 2, where we install the safety net that makes the
rest of the course safe to attempt. rest of the course safe to attempt.
---
**Continue to: [Module 2 — Version Control as a Safety Net](02-version-control-as-a-safety-net)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/02-version-control-as-a-safety-net/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/02-version-control-as-a-safety-net/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/02-version-control-as-a-safety-net/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/02-version-control-as-a-safety-net/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 1 — The Copy-Paste Problem](01-the-copy-paste-problem)**
# Module 2 — Version Control as a Safety Net # Module 2 — Version Control as a Safety Net
> **Version control is undo for the AI — and it's the AI's memory between sessions.** This is the one > **Version control is undo for the AI — and it's the AI's memory between sessions.** This is the one
@@ -282,3 +286,8 @@ When undo feels free and starting a cold session feels like "just read the repo,
safety net. Module 3 puts it to work on the lowest-risk possible target — documents, not code — safety net. Module 3 puts it to work on the lowest-risk possible target — documents, not code —
before Module 4 lets the AI edit your files directly. before Module 4 lets the AI edit your files directly.
---
**Continue to: [Module 3 — Version Control for Words, Not Just Code](03-version-control-for-words)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/03-version-control-for-words/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/03-version-control-for-words/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/03-version-control-for-words/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/03-version-control-for-words/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 2 — Version Control as a Safety Net](02-version-control-as-a-safety-net)**
# Module 3 — Version Control for Words, Not Just Code # Module 3 — Version Control for Words, Not Just Code
> **The safest possible place to practice Git is on prose — and it happens to be a genuinely useful > **The safest possible place to practice Git is on prose — and it happens to be a genuinely useful
@@ -358,3 +362,8 @@ When branch/diff/commit/merge feels routine on a document, you're ready for **Mo
finally comes out of the browser and starts editing your files directly — a step that's only safe finally comes out of the browser and starts editing your files directly — a step that's only safe
because you can now branch, diff, and revert exactly what it does. because you can now branch, diff, and revert exactly what it does.
---
**Continue to: [Module 4 — Getting the AI Out of the Browser](04-getting-the-ai-out-of-the-browser)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/04-getting-the-ai-out-of-the-browser/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/04-getting-the-ai-out-of-the-browser/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/04-getting-the-ai-out-of-the-browser/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/04-getting-the-ai-out-of-the-browser/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 3 — Version Control for Words, Not Just Code](03-version-control-for-words)**
# Module 4 — Getting the AI Out of the Browser # Module 4 — Getting the AI Out of the Browser
> **The copy-paste loop from Module 1 ends here.** You stop being the integration layer between a > **The copy-paste loop from Module 1 ends here.** You stop being the integration layer between a
@@ -450,3 +454,8 @@ time:
current tools; update the labels if the common terminology has moved. current tools; update the labels if the common terminology has moved.
- [ ] `lab/verify.sh` still passes against the Module 1 `tasks-app` after an AI implements `delete`. - [ ] `lab/verify.sh` still passes against the Module 1 `tasks-app` after an AI implements `delete`.
---
**Continue to: [Module 5 — Commit the AI's Config, Not Just the Code](05-commit-the-ai-config)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/05-commit-the-ai-config/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/05-commit-the-ai-config/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/05-commit-the-ai-config/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/05-commit-the-ai-config/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 4 — Getting the AI Out of the Browser](04-getting-the-ai-out-of-the-browser)**
# Module 5 — Commit the AI's Config, Not Just the Code # Module 5 — Commit the AI's Config, Not Just the Code
> **The instructions you give the model are as worth versioning as the code it writes.** Write your > **The instructions you give the model are as worth versioning as the code it writes.** Write your
@@ -308,3 +312,8 @@ When the AI behaves like it already knows your project the moment you open it
word this session — the file is doing its job. Module 6 takes the safety net further: branches, so the word this session — the file is doing its job. Module 6 takes the safety net further: branches, so the
AI can try something wild in a sandbox you can throw away. AI can try something wild in a sandbox you can throw away.
---
**Continue to: [Module 6 — Branches: Sandboxes for Experiments](06-branches-sandboxes-for-experiments)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/06-branches-sandboxes-for-experiments/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/06-branches-sandboxes-for-experiments/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/06-branches-sandboxes-for-experiments/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/06-branches-sandboxes-for-experiments/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 5 — Commit the AI's Config, Not Just the Code](05-commit-the-ai-config)**
# Module 6 — Branches: Sandboxes for Experiments # Module 6 — Branches: Sandboxes for Experiments
> **A branch is a disposable copy of your project where the AI can try anything — and `main` never > **A branch is a disposable copy of your project where the AI can try anything — and `main` never
@@ -503,3 +507,8 @@ When "let the agent try something wild" feels like a one-line decision instead o
you've got it. Module 7 takes the next step: running several of these branches *live at the same you've got it. Module 7 takes the next step: running several of these branches *live at the same
time* in separate working directories, so multiple agents can work in parallel without colliding. time* in separate working directories, so multiple agents can work in parallel without colliding.
---
**Continue to: [Module 7 — Worktrees: Running Agents in Parallel](07-worktrees-running-agents-in-parallel)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/07-worktrees-running-agents-in-parallel/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/07-worktrees-running-agents-in-parallel/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/07-worktrees-running-agents-in-parallel/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/07-worktrees-running-agents-in-parallel/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 6 — Branches: Sandboxes for Experiments](06-branches-sandboxes-for-experiments)**
# Module 7 — Worktrees: Running Agents in Parallel # Module 7 — Worktrees: Running Agents in Parallel
> **A branch lets one agent try something risky. A worktree lets two agents try two things at the > **A branch lets one agent try something risky. A worktree lets two agents try two things at the
@@ -421,3 +425,8 @@ Worktrees are sharp tools. The honest caveats:
When "run two agents at once" feels like "open two folders" instead of "orchestrate a stash dance," When "run two agents at once" feels like "open two folders" instead of "orchestrate a stash dance,"
you've got it. This is the primitive Module 26 scales up — for now, two is plenty. you've got it. This is the primitive Module 26 scales up — for now, two is plenty.
---
**Continue to: [Module 8 — Remotes and Hosting: GitHub, the Alternatives, and Owning Your Repo](08-remotes-and-hosting)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/08-remotes-and-hosting/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/08-remotes-and-hosting/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/08-remotes-and-hosting/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/08-remotes-and-hosting/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 7 — Worktrees: Running Agents in Parallel](07-worktrees-running-agents-in-parallel)**
# Module 8 — Remotes and Hosting: GitHub, the Alternatives, and Owning Your Repo # Module 8 — Remotes and Hosting: GitHub, the Alternatives, and Owning Your Repo
> **One repo on one laptop is one spilled coffee away from gone.** A remote gets your history > **One repo on one laptop is one spilled coffee away from gone.** A remote gets your history
@@ -494,3 +498,8 @@ tables, and update the "as of" date when you do.
scope name on the default-example host before publishing. scope name on the default-example host before publishing.
- [ ] Update the comparison's **"as of" date** to the build date. - [ ] Update the comparison's **"as of" date** to the build date.
---
**Continue to: [Module 9 — Issues and the Task Layer](09-issues-and-the-task-layer)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/09-issues-and-the-task-layer/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/09-issues-and-the-task-layer/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/09-issues-and-the-task-layer/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/09-issues-and-the-task-layer/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 8 — Remotes and Hosting: GitHub, the Alternatives, and Owning Your Repo](08-remotes-and-hosting)**
# Module 9 — Issues and the Task Layer # Module 9 — Issues and the Task Layer
> **An issue is how you hand a piece of work to someone else — and "someone else" is now a mix of > **An issue is how you hand a piece of work to someone else — and "someone else" is now a mix of
@@ -355,3 +359,8 @@ moving ground:
vs. custom labels) — confirm the neutral descriptions still hold across the forges named in vs. custom labels) — confirm the neutral descriptions still hold across the forges named in
Module 8. Module 8.
---
**Continue to: [Module 10 — Reviewing Code You Didn't Write](10-reviewing-code-you-didnt-write)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/10-reviewing-code-you-didnt-write/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/10-reviewing-code-you-didnt-write/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/10-reviewing-code-you-didnt-write/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/10-reviewing-code-you-didnt-write/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 9 — Issues and the Task Layer](09-issues-and-the-task-layer)**
# Module 10 — Reviewing Code You Didn't Write # Module 10 — Reviewing Code You Didn't Write
> **The AI wrote a diff that reads beautifully and is wrong in one line you'll skim right past.** > **The AI wrote a diff that reads beautifully and is wrong in one line you'll skim right past.**
@@ -332,3 +336,8 @@ When "it runs" stops feeling like sufficient evidence and "I read every `-` line
mandatory, you've got the skill. Module 11 takes this gate and wires it into the full collaboration mandatory, you've got the skill. Module 11 takes this gate and wires it into the full collaboration
loop — issues, branches, PRs, and merges — with both humans and agents as contributors. loop — issues, branches, PRs, and merges — with both humans and agents as contributors.
---
**Continue to: [Module 11 — Collaboration: Humans and Agents on One Repo](11-collaboration-humans-and-agents)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/11-collaboration-humans-and-agents/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/11-collaboration-humans-and-agents/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/11-collaboration-humans-and-agents/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/11-collaboration-humans-and-agents/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 10 — Reviewing Code You Didn't Write](10-reviewing-code-you-didnt-write)**
# Module 11 — Collaboration: Humans and Agents on One Repo # Module 11 — Collaboration: Humans and Agents on One Repo
> **You now have every piece — issues, branches, PRs, review. This module wires them into one loop, > **You now have every piece — issues, branches, PRs, review. This module wires them into one loop,
@@ -468,3 +472,8 @@ branch and review its PR" feels obvious rather than novel — you're ready for M
the *recovery* half of this safety net its own discipline: reverting a bad PR after it's already the *recovery* half of this safety net its own discipline: reverting a bad PR after it's already
merged. merged.
---
**Continue to: [Module 12 — When It Goes Wrong: Revert, Reset, and Recovery](12-revert-reset-and-recovery)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/12-revert-reset-and-recovery/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/12-revert-reset-and-recovery/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/12-revert-reset-and-recovery/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/12-revert-reset-and-recovery/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 11 — Collaboration: Humans and Agents on One Repo](11-collaboration-humans-and-agents)**
# Module 12 — When It Goes Wrong: Revert, Reset, and Recovery # Module 12 — When It Goes Wrong: Revert, Reset, and Recovery
> **A bad change already shipped. Now what?** Recovery is its own skill — and knowing the *right* > **A bad change already shipped. Now what?** Recovery is its own skill — and knowing the *right*
@@ -421,3 +425,8 @@ When `revert` vs. `reset` is automatic, the reflog feels like a safety net inste
can name where Git's recovery stops, you've got the recovery half of the thread. That completes the can name where Git's recovery stops, you've got the recovery half of the thread. That completes the
team layer (Unit 2) — next, Unit 3 starts automating the checking and shipping, beginning with tests. team layer (Unit 2) — next, Unit 3 starts automating the checking and shipping, beginning with tests.
---
**Continue to: [Module 13 — Testing in the AI Era](13-testing-in-the-ai-era)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/13-testing-in-the-ai-era/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/13-testing-in-the-ai-era/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/13-testing-in-the-ai-era/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/13-testing-in-the-ai-era/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 12 — When It Goes Wrong: Revert, Reset, and Recovery](12-revert-reset-and-recovery)**
# Module 13 — Testing in the AI Era # Module 13 — Testing in the AI Era
> **AI writes code that looks right and passes a human skim — that's exactly the code that needs a > **AI writes code that looks right and passes a human skim — that's exactly the code that needs a
@@ -356,3 +360,8 @@ The honest limits, because a green suite invites overconfidence:
If a test that can't possibly fail now reads to you as obviously useless, you've got the core idea — If a test that can't possibly fail now reads to you as obviously useless, you've got the core idea —
and you're ready for **Module 14**, where these tests stop depending on you remembering to run them. and you're ready for **Module 14**, where these tests stop depending on you remembering to run them.
---
**Continue to: [Module 14 — Continuous Integration](14-continuous-integration)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/14-continuous-integration/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/14-continuous-integration/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/14-continuous-integration/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/14-continuous-integration/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 13 — Testing in the AI Era](13-testing-in-the-ai-era)**
# Module 14 — Continuous Integration # Module 14 — Continuous Integration
> **The AI writes code that looks right. CI is the tireless reviewer that checks whether it actually > **The AI writes code that looks right. CI is the tireless reviewer that checks whether it actually
@@ -385,3 +389,8 @@ Re-check at build time:
described — or swap in the equivalent the rest of the course uses. (The test runner is Python's described — or swap in the equivalent the rest of the course uses. (The test runner is Python's
standard-library `unittest`, which ships with Python — no install, nothing to drift.) standard-library `unittest`, which ships with Python — no install, nothing to drift.)
---
**Continue to: [Module 15 — Security Scanning for AI-Generated Code](15-security-scanning)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/15-security-scanning/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/15-security-scanning/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/15-security-scanning/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/15-security-scanning/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 14 — Continuous Integration](14-continuous-integration)**
# Module 15 — Security Scanning for AI-Generated Code # Module 15 — Security Scanning for AI-Generated Code
> **Your build is green, your tests pass, and the AI just imported a package that doesn't exist — > **Your build is green, your tests pass, and the AI just imported a package that doesn't exist —
@@ -476,3 +480,8 @@ reproducible.
make the slopsquatting point for you, but breaks the lab's "resolution fails" step). Swap for a make the slopsquatting point for you, but breaks the lab's "resolution fails" step). Swap for a
currently-nonexistent plausible name if so. currently-nonexistent plausible name if so.
---
**Continue to: [Module 16 — Containers and Reproducible Environments](16-containers-and-reproducible-environments)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/16-containers-and-reproducible-environments/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/16-containers-and-reproducible-environments/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/16-containers-and-reproducible-environments/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/16-containers-and-reproducible-environments/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 15 — Security Scanning for AI-Generated Code](15-security-scanning)**
# Module 16 — Containers and Reproducible Environments # Module 16 — Containers and Reproducible Environments
> **"Works on my machine" is a confession, not a defense.** A container ships the machine with the > **"Works on my machine" is a confession, not a defense.** A container ships the machine with the
@@ -355,3 +359,8 @@ Expansion-zone module — container tooling and base images move. Re-check at bu
- [ ] **`useradd` on the base.** Confirm the Debian-slim base still ships `useradd` (it does today; - [ ] **`useradd` on the base.** Confirm the Debian-slim base still ships `useradd` (it does today;
a future minimal base might not), or switch to the engine's documented non-root pattern. a future minimal base might not), or switch to the engine's documented non-root pattern.
---
**Continue to: [Module 17 — Secrets, Config, and Environments](17-secrets-config-and-environments)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/17-secrets-config-and-environments/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/17-secrets-config-and-environments/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/17-secrets-config-and-environments/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/17-secrets-config-and-environments/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 16 — Containers and Reproducible Environments](16-containers-and-reproducible-environments)**
# Module 17 — Secrets, Config, and Environments # Module 17 — Secrets, Config, and Environments
> **Ask an AI to "connect to the API" and it will cheerfully paste your secret key straight into > **Ask an AI to "connect to the API" and it will cheerfully paste your secret key straight into
@@ -498,3 +502,8 @@ publishing:
- [ ] **Confirm cross-references** to Modules 2, 5, 8, 12, 14, 15, 16, and 18 still match those - [ ] **Confirm cross-references** to Modules 2, 5, 8, 12, 14, 15, 16, and 18 still match those
modules' final numbering and titles. modules' final numbering and titles.
---
**Continue to: [Module 18 — Continuous Delivery and Deployment](18-continuous-delivery-and-deployment)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/18-continuous-delivery-and-deployment/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/18-continuous-delivery-and-deployment/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/18-continuous-delivery-and-deployment/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/18-continuous-delivery-and-deployment/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 17 — Secrets, Config, and Environments](17-secrets-config-and-environments)**
# Module 18 — Continuous Delivery and Deployment # Module 18 — Continuous Delivery and Deployment
> **Merged isn't running.** This module closes the last gap in the pipeline — getting approved code > **Merged isn't running.** This module closes the last gap in the pipeline — getting approved code
@@ -388,3 +392,8 @@ This is expansion-zone material (Module 15+); some specifics drift. Re-check at
(`run`, `--health-*`, `inspect`) match current CLI behavior. (`run`, `--health-*`, `inspect`) match current CLI behavior.
- [ ] **Cross-references** to Modules 16, 17, and 19 still match those modules' final content. - [ ] **Cross-references** to Modules 16, 17, and 19 still match those modules' final content.
---
**Continue to: [Module 19 — Runners: The Compute Behind the Automation](19-runners-the-compute-behind-automation)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/19-runners-the-compute-behind-automation/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/19-runners-the-compute-behind-automation/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/19-runners-the-compute-behind-automation/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/19-runners-the-compute-behind-automation/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 18 — Continuous Delivery and Deployment](18-continuous-delivery-and-deployment)**
# Module 19 — Runners: The Compute Behind the Automation # Module 19 — Runners: The Compute Behind the Automation
> **Every green check in the last five modules ran on someone else's computer. This module is where > **Every green check in the last five modules ran on someone else's computer. This module is where
@@ -364,3 +368,8 @@ This is an expansion-zone module and the runner ecosystem moves. Re-check at bui
- [ ] **Runner-to-server version-compatibility guidance** — confirm the "keep the agent version - [ ] **Runner-to-server version-compatibility guidance** — confirm the "keep the agent version
matched to the forge" caveat still reflects current behavior. matched to the forge" caveat still reflects current behavior.
---
**Continue to: [Module 20 — MCP Servers: Giving the AI Hands](20-mcp-servers-giving-the-ai-hands)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/20-mcp-servers-giving-the-ai-hands/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/20-mcp-servers-giving-the-ai-hands/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/20-mcp-servers-giving-the-ai-hands/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/20-mcp-servers-giving-the-ai-hands/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
**Previous: [Module 19 — Runners: The Compute Behind the Automation](19-runners-the-compute-behind-automation)**
# Module 20 — MCP Servers: Giving the AI Hands # Module 20 — MCP Servers: Giving the AI Hands
> **Until now the AI could read and write files in your repo and nothing else. MCP lets it reach > **Until now the AI could read and write files in your repo and nothing else. MCP lets it reach
@@ -482,3 +486,8 @@ MCP is moving fast; re-check these at build/publish time rather than trusting th
- [ ] **Adoption framing.** Re-confirm the "open standard, adopted across vendors regardless of - [ ] **Adoption framing.** Re-confirm the "open standard, adopted across vendors regardless of
model" claim is still accurate and still vendor-neutral; update if the ecosystem has shifted. model" claim is still accurate and still vendor-neutral; update if the ecosystem has shifted.
---
**Continue to: [Module 21 — Skills: Teaching the AI Your Playbook](21-skills-teaching-the-ai-your-playbook)**
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/21-skills-teaching-the-ai-your-playbook/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/21-skills-teaching-the-ai-your-playbook/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/21-skills-teaching-the-ai-your-playbook/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/21-skills-teaching-the-ai-your-playbook/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
⬅ **Previous: [Module 20 — MCP Servers: Giving the AI Hands](20-mcp-servers-giving-the-ai-hands)**
# Module 21 — Skills: Teaching the AI Your Playbook # Module 21 — Skills: Teaching the AI Your Playbook
> **Stop re-explaining your own procedures.** A skill is a repeatable workflow written down once, > **Stop re-explaining your own procedures.** A skill is a repeatable workflow written down once,
@@ -309,3 +313,8 @@ time:
walkthrough still matches the starter files (`add`/`list`/`done`/`count`, `test_tasks.py`, walkthrough still matches the starter files (`add`/`list`/`done`/`count`, `test_tasks.py`,
`CHANGELOG.md`). `CHANGELOG.md`).
---
**Continue to: [Module 22 — Securing Third-Party MCP Servers and Skills](22-securing-third-party-mcp-and-skills)** ➡
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/22-securing-third-party-mcp-and-skills/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/22-securing-third-party-mcp-and-skills/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/22-securing-third-party-mcp-and-skills/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/22-securing-third-party-mcp-and-skills/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
⬅ **Previous: [Module 21 — Skills: Teaching the AI Your Playbook](21-skills-teaching-the-ai-your-playbook)**
# Module 22 — Securing Third-Party MCP Servers and Skills # Module 22 — Securing Third-Party MCP Servers and Skills
> **Installing a third-party MCP server or skill is installing untrusted code that runs with access > **Installing a third-party MCP server or skill is installing untrusted code that runs with access
@@ -369,3 +373,8 @@ Expansion-zone module; the surface this defends moves fast. Re-check at build ti
hidden-Unicode instruction, and the `tasks-app` injection lab still works against a current hidden-Unicode instruction, and the `tasks-app` injection lab still works against a current
model. model.
---
**Continue to: [Module 23 — Working with Existing Codebases](23-working-with-existing-codebases)** ➡
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/23-working-with-existing-codebases/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/23-working-with-existing-codebases/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/23-working-with-existing-codebases/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/23-working-with-existing-codebases/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
⬅ **Previous: [Module 22 — Securing Third-Party MCP Servers and Skills](22-securing-third-party-mcp-and-skills)**
# Module 23 — Working with Existing Codebases # Module 23 — Working with Existing Codebases
> **Every module so far quietly assumed you started the project. Most of your real work won't be > **Every module so far quietly assumed you started the project. Most of your real work won't be
@@ -309,3 +313,8 @@ This is an expansion-zone module; the durable motion is stable, but the tooling
- [ ] Sanity-check the suggested "small-to-medium repo with a fast test suite" lab guidance still - [ ] Sanity-check the suggested "small-to-medium repo with a fast test suite" lab guidance still
lands — recommend nothing by name that could rot. lands — recommend nothing by name that could rot.
---
**Continue to: [Module 24 — Assistive Agents: AI Review and Issue Triage](24-assistive-agents)** ➡
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/24-assistive-agents/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/24-assistive-agents/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/24-assistive-agents/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/24-assistive-agents/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
⬅ **Previous: [Module 23 — Working with Existing Codebases](23-working-with-existing-codebases)**
# Module 24 — Assistive Agents: AI Review and Issue Triage # Module 24 — Assistive Agents: AI Review and Issue Triage
> **The first safe way to put an AI *inside* your workflow instead of beside it: let it comment and > **The first safe way to put an AI *inside* your workflow instead of beside it: let it comment and
@@ -335,3 +339,8 @@ This is expansion-zone material; the agent-tooling landscape moves fast. Re-chec
if any modules were renumbered. if any modules were renumbered.
- [ ] Check that nothing here pins a specific LLM vendor or a specific bot's config filename. - [ ] Check that nothing here pins a specific LLM vendor or a specific bot's config filename.
---
**Continue to: [Module 25 — Autonomous Agents: Issue-to-PR and Self-Healing CI](25-autonomous-agents)** ➡
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/25-autonomous-agents/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/25-autonomous-agents/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/25-autonomous-agents/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/25-autonomous-agents/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
⬅ **Previous: [Module 24 — Assistive Agents: AI Review and Issue Triage](24-assistive-agents)**
# Module 25 — Autonomous Agents: Issue-to-PR and Self-Healing CI # Module 25 — Autonomous Agents: Issue-to-PR and Self-Healing CI
> **Now the AI acts on its own — takes an assigned issue, opens a pull request, even fixes its own > **Now the AI acts on its own — takes an assigned issue, opens a pull request, even fixes its own
@@ -379,3 +383,8 @@ This is an expansion-zone module sitting on fast-moving ground. Re-check at buil
trigger events (issue-labeled, comment command) match current forge behavior, and that the GitLab / trigger events (issue-labeled, comment command) match current forge behavior, and that the GitLab /
Forgejo equivalents in the comments are still accurate. Forgejo equivalents in the comments are still accurate.
---
**Continue to: [Module 26 — Orchestrating Multiple Agents](26-orchestrating-multiple-agents)** ➡
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/26-orchestrating-multiple-agents/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/26-orchestrating-multiple-agents/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/26-orchestrating-multiple-agents/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/26-orchestrating-multiple-agents/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
⬅ **Previous: [Module 25 — Autonomous Agents: Issue-to-PR and Self-Healing CI](25-autonomous-agents)**
# Module 26 — Orchestrating Multiple Agents # Module 26 — Orchestrating Multiple Agents
> **One agent on its own branch was the experiment. Several agents at once, on their own branches, > **One agent on its own branch was the experiment. Several agents at once, on their own branches,
@@ -482,3 +486,8 @@ Re-check at build/publish time:
- [ ] **Cross-references** to Modules 24 (assistive review) and 27 (evals) still match their final - [ ] **Cross-references** to Modules 24 (assistive review) and 27 (evals) still match their final
titles and framing. titles and framing.
---
**Continue to: [Module 27 — Evals: Trusting an Agent That Acts Without You](27-evals)** ➡
+9
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`modules/27-evals/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/27-evals/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`modules/27-evals/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/modules/27-evals/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
⬅ **Previous: [Module 26 — Orchestrating Multiple Agents](26-orchestrating-multiple-agents)**
# Module 27 — Evals: Trusting an Agent That Acts Without You # Module 27 — Evals: Trusting an Agent That Acts Without You
> **You will swap the model. Evals are the only thing that tells you whether the swap was safe.** > **You will swap the model. Evals are the only thing that tells you whether the swap was safe.**
@@ -383,3 +387,8 @@ This is an expansion-zone module over fast-moving ground. Re-check at build/publ
- [ ] **Lab still runs.** `python run_eval.py candidates/current_model` exits 0 at 100%, and - [ ] **Lab still runs.** `python run_eval.py candidates/current_model` exits 0 at 100%, and
`candidates/swapped_model` exits 1 below threshold, on a current Python 3.x. `candidates/swapped_model` exits 1 below threshold, on a current Python 3.x.
---
**Continue to: [Capstone — The Full Loop](capstone)** ➡
+4
@@ -1,5 +1,9 @@
> 📖 _This page is generated from [`capstone/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/capstone/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._ > 📖 _This page is generated from [`capstone/README.md`](https://git.jpaul.io/justin/ai-workflow-course/src/branch/main/capstone/README.md). **Edit the source, not the wiki** — edits here are overwritten on the next sync. Run the hands-on labs from the repo, linked inline._
⬅ **Previous: [Module 27 — Evals: Trusting an Agent That Acts Without You](27-evals)**
# Capstone — The Full Loop # Capstone — The Full Loop
> **One feature, taken end to end, with every module doing its job in sequence.** This is the finale: > **One feature, taken end to end, with every module doing its job in sequence.** This is the finale: