diff --git a/capstone/README.md b/capstone/README.md index 2a173ad..fc6e366 100644 --- a/capstone/README.md +++ b/capstone/README.md @@ -149,7 +149,7 @@ account, and a working Docker install. 2. Branch off `main`, named for the issue: ```bash - cd ~/workflow-course/tasks-app + cd ~/ai-workflow-course/tasks-app git switch main && git pull git switch -c 47-due-dates # use your real issue number ``` diff --git a/modules/01-the-copy-paste-problem/README.md b/modules/01-the-copy-paste-problem/README.md index 470a860..0a377a2 100644 --- a/modules/01-the-copy-paste-problem/README.md +++ b/modules/01-the-copy-paste-problem/README.md @@ -151,7 +151,7 @@ beyond a web browser: 1. Open the course's home page — **`https://git.jpaul.io/justin/ai-workflow-course`** — and use its **Download ZIP** (archive) link. 2. Unzip it under your home directory so the course's `modules/` folder lands at - `~/workflow-course/modules/`. (Rename the unzipped folder to `workflow-course` if your download + `~/ai-workflow-course/modules/`. (Rename the unzipped folder to `ai-workflow-course` if your download named it something else.) You now have every module's files locally, including this one's under @@ -168,8 +168,8 @@ You now have every module's files locally, including this one's under 1. Make a working directory and copy in the starter app from this module's `lab/starter/` folder: ```bash - mkdir -p ~/workflow-course/tasks-app - cd ~/workflow-course/tasks-app + mkdir -p ~/ai-workflow-course/tasks-app + cd ~/ai-workflow-course/tasks-app # copy the three files from modules/01-the-copy-paste-problem/lab/starter/ into here: # tasks.py cli.py README.md ``` diff --git a/modules/02-version-control-as-a-safety-net/README.md b/modules/02-version-control-as-a-safety-net/README.md index a06fb1d..3eabbd9 100644 --- a/modules/02-version-control-as-a-safety-net/README.md +++ b/modules/02-version-control-as-a-safety-net/README.md @@ -153,7 +153,7 @@ and your AI assistant. 1. In your project folder, initialize the repo and make the first commit: ```bash - cd ~/workflow-course/tasks-app + cd ~/ai-workflow-course/tasks-app git init -b main # start the repo with its first branch named "main" (Git 2.28+) git status # everything shows as "untracked" — Git sees the files but isn't saving them yet ``` diff --git a/modules/03-version-control-for-words/README.md b/modules/03-version-control-for-words/README.md index c0c961e..fee0f29 100644 --- a/modules/03-version-control-for-words/README.md +++ b/modules/03-version-control-for-words/README.md @@ -212,7 +212,7 @@ zero. 1. Confirm you're starting clean, then create a branch for the ADR: ```bash - cd ~/workflow-course/tasks-app + cd ~/ai-workflow-course/tasks-app git status # want: "working tree clean" git switch -c docs/adr-storage # new branch, named for what it's for git branch # the * shows you're on docs/adr-storage now diff --git a/modules/04-getting-the-ai-out-of-the-browser/README.md b/modules/04-getting-the-ai-out-of-the-browser/README.md index 1f2fa4c..4aa8763 100644 --- a/modules/04-getting-the-ai-out-of-the-browser/README.md +++ b/modules/04-getting-the-ai-out-of-the-browser/README.md @@ -131,7 +131,7 @@ a model/provider here, this is where the BYO-model choice from above gets made. whole point. The convention is **the current working directory is the project**: ```bash -cd ~/workflow-course/tasks-app # the repo from Modules 1–2 +cd ~/ai-workflow-course/tasks-app # the repo from Modules 1–2 your-agent # launch it from inside the project ``` @@ -279,7 +279,7 @@ copy-paste loop back in Module 1, now done right. 1. Install the tool and authenticate it (steps 1–2 in "Wiring it up"). -2. Point it at the repo (step 3): `cd ~/workflow-course/tasks-app` and launch the agentic CLI from +2. Point it at the repo (step 3): `cd ~/ai-workflow-course/tasks-app` and launch the agentic CLI from there, **or** open that folder in your editor and open the assistant's agent panel. 3. **Confirm read access** (step 4). Ask: diff --git a/modules/05-commit-the-ai-config/README.md b/modules/05-commit-the-ai-config/README.md index 3d40536..1908c33 100644 --- a/modules/05-commit-the-ai-config/README.md +++ b/modules/05-commit-the-ai-config/README.md @@ -186,7 +186,7 @@ editor-integrated AI (Module 4) for the part where the AI obeys the file. (If your tool reads several names, copy it to each, or symlink them.) ```bash - cd ~/workflow-course/tasks-app + cd ~/ai-workflow-course/tasks-app # replace with the name your tool actually reads: cp /path/to/modules/05-commit-the-ai-config/lab/instructions-file-starter.md ``` diff --git a/modules/06-branches-sandboxes-for-experiments/README.md b/modules/06-branches-sandboxes-for-experiments/README.md index 03416a8..b745f07 100644 --- a/modules/06-branches-sandboxes-for-experiments/README.md +++ b/modules/06-branches-sandboxes-for-experiments/README.md @@ -263,7 +263,7 @@ deliberately create and resolve a merge conflict — using the AI to help resolv 1. Confirm you're on `main` and clean, then create an experiment branch and switch to it: ```bash - cd ~/workflow-course/tasks-app + cd ~/ai-workflow-course/tasks-app git switch main git status # must be clean git switch -c experiment/priorities diff --git a/modules/07-worktrees-running-agents-in-parallel/README.md b/modules/07-worktrees-running-agents-in-parallel/README.md index 4c9c2b1..b06dc45 100644 --- a/modules/07-worktrees-running-agents-in-parallel/README.md +++ b/modules/07-worktrees-running-agents-in-parallel/README.md @@ -94,17 +94,17 @@ The branch was never the problem. The single working directory is. You need two repository, each with its own checked-out branch.** One repo, many checkouts. ```bash -cd ~/workflow-course/tasks-app # your existing repo from Module 2 +cd ~/ai-workflow-course/tasks-app # your existing repo from Module 2 git worktree add ../tasks-app-remaining -b feature/remaining ``` -That command creates a brand-new folder, `~/workflow-course/tasks-app-remaining`, containing a full +That command creates a brand-new folder, `~/ai-workflow-course/tasks-app-remaining`, containing a full checkout of your project on a new branch `feature/remaining`. Your original folder is untouched, still on its own branch. You now have two real directories you can `cd` into, edit, and run independently: ``` -~/workflow-course/ +~/ai-workflow-course/ tasks-app/ ← the "main" worktree, on (say) main tasks-app-remaining/ ← a "linked" worktree, on feature/remaining ``` @@ -150,9 +150,9 @@ git worktree prune # forget worktrees whose folders were ```bash $ git worktree list -/home/you/workflow-course/tasks-app a1b2c3d [main] -/home/you/workflow-course/tasks-app-remaining d4e5f6a [feature/remaining] -/home/you/workflow-course/tasks-app-wipe 7g8h9i0 [feature/wipe] +/home/you/ai-workflow-course/tasks-app a1b2c3d [main] +/home/you/ai-workflow-course/tasks-app-remaining d4e5f6a [feature/remaining] +/home/you/ai-workflow-course/tasks-app-wipe 7g8h9i0 [feature/wipe] ``` Three folders, one repo, three branches checked out simultaneously. No stashing, no switching, no @@ -241,7 +241,7 @@ branch edit the usage line. (The `sed … > tmp && mv` is just a portable, copy- the edit an agent would make.) In your `tasks-app`: ```bash -cd ~/workflow-course/tasks-app +cd ~/ai-workflow-course/tasks-app # Agent A's branch: add `wipe` to the usage line and commit it. git switch -c feature/wipe @@ -301,17 +301,17 @@ git worktree list # should show main + feature/wipe + feature/remaining This is the part to actually *do simultaneously*, not one then the other. -1. Open `~/workflow-course/tasks-app-wipe` in one editor/AI session. Give it the prompt in +1. Open `~/ai-workflow-course/tasks-app-wipe` in one editor/AI session. Give it the prompt in `lab/agent-a-prompt.md` — *add a `wipe` command that removes all tasks.* -2. Open `~/workflow-course/tasks-app-remaining` in a **second** editor/AI session. Give it the prompt +2. Open `~/ai-workflow-course/tasks-app-remaining` in a **second** editor/AI session. Give it the prompt in `lab/agent-b-prompt.md` — *add a `remaining` command that prints the number of pending tasks.* 3. Let both work at the same time. While they run, prove the isolation from a third terminal — but use commands that **already exist**. (`wipe` and `remaining` don't yet; the agents are still writing them.) Give each worktree its own task and list it: ```bash - cd ~/workflow-course/tasks-app-wipe && python cli.py add "from worktree A" && python cli.py list - cd ~/workflow-course/tasks-app-remaining && python cli.py add "from worktree B" && python cli.py list + cd ~/ai-workflow-course/tasks-app-wipe && python cli.py add "from worktree A" && python cli.py list + cd ~/ai-workflow-course/tasks-app-remaining && python cli.py add "from worktree B" && python cli.py list ``` Each `list` shows only its own task — worktree A never sees "from worktree B" and vice versa. Each @@ -322,8 +322,8 @@ This is the part to actually *do simultaneously*, not one then the other. 4. In each worktree, commit the agent's work on its own branch: ```bash - cd ~/workflow-course/tasks-app-wipe && git add . && git commit -m "Add wipe command" - cd ~/workflow-course/tasks-app-remaining && git add . && git commit -m "Add remaining command" + cd ~/ai-workflow-course/tasks-app-wipe && git add . && git commit -m "Add wipe command" + cd ~/ai-workflow-course/tasks-app-remaining && git add . && git commit -m "Add remaining command" ``` Two agents, two commits, two branches — neither ever saw the other's files. @@ -331,8 +331,8 @@ This is the part to actually *do simultaneously*, not one then the other. 5. *Now* the new commands exist — run each in its own worktree to watch it work: ```bash - cd ~/workflow-course/tasks-app-wipe && python cli.py wipe # agent A's new command - cd ~/workflow-course/tasks-app-remaining && python cli.py remaining # agent B's new command + cd ~/ai-workflow-course/tasks-app-wipe && python cli.py wipe # agent A's new command + cd ~/ai-workflow-course/tasks-app-remaining && python cli.py remaining # agent B's new command ``` `remaining` counts a single pending task — the one you added to worktree B in step 3 — because B's @@ -343,7 +343,7 @@ This is the part to actually *do simultaneously*, not one then the other. Bring both features home to `main` in your original worktree: ```bash -cd ~/workflow-course/tasks-app +cd ~/ai-workflow-course/tasks-app git switch main git merge feature/wipe git merge feature/remaining diff --git a/modules/08-remotes-and-hosting/README.md b/modules/08-remotes-and-hosting/README.md index 4a506c5..f68c7d4 100644 --- a/modules/08-remotes-and-hosting/README.md +++ b/modules/08-remotes-and-hosting/README.md @@ -88,7 +88,7 @@ the shape is the same: 3. Point your local repo at it and push: ```bash - cd ~/workflow-course/tasks-app + cd ~/ai-workflow-course/tasks-app git remote add origin git push -u origin main ``` @@ -313,7 +313,7 @@ WSL, or Git Bash on Windows. Continues the `tasks-app` repo from Module 2. 2. Point your repo at the remote and push: ```bash - cd ~/workflow-course/tasks-app + cd ~/ai-workflow-course/tasks-app git remote -v # probably empty — no remote yet git remote add origin # paste the URL you copied git remote -v # now origin shows, for fetch and push @@ -346,7 +346,7 @@ independent* copy, history and all — not a snapshot. 5. Now clone the remote into a *separate* directory, as if you were a teammate on a fresh machine: ```bash - cd ~/workflow-course + cd ~/ai-workflow-course git clone tasks-app-teammate cd tasks-app-teammate git log --oneline # the ENTIRE history is here — every commit, not just the latest @@ -360,7 +360,7 @@ independent* copy, history and all — not a snapshot. ```bash # from your original repo: - bash ~/workflow-course/tasks-app/verify-backup.sh # (copied from lab/verify-backup.sh) + bash ~/ai-workflow-course/tasks-app/verify-backup.sh # (copied from lab/verify-backup.sh) ``` The script confirms (a) you have a remote configured, (b) your local branch is fully pushed @@ -379,7 +379,7 @@ independent* copy, history and all — not a snapshot. 7. Edit the README in your *teammate* clone, commit, and push from there: ```bash - cd ~/workflow-course/tasks-app-teammate + cd ~/ai-workflow-course/tasks-app-teammate # edit README.md, then: git add . && git commit -m "Note the remote in the README" git push @@ -388,7 +388,7 @@ independent* copy, history and all — not a snapshot. 8. Back in your *original* repo, pull it down: ```bash - cd ~/workflow-course/tasks-app + cd ~/ai-workflow-course/tasks-app git fetch # download the new commit, but don't merge yet git log main..origin/main # SEE exactly what's incoming before you take it git pull # now merge it into your local main diff --git a/modules/10-reviewing-code-you-didnt-write/README.md b/modules/10-reviewing-code-you-didnt-write/README.md index 39b8b1f..74d0189 100644 --- a/modules/10-reviewing-code-you-didnt-write/README.md +++ b/modules/10-reviewing-code-you-didnt-write/README.md @@ -207,7 +207,7 @@ real change, then review a diff the "AI" produced and catch the trap planted in place of `/path/to/`, the same copy-it-in move from Module 5.) ```bash - mkdir -p ~/workflow-course/review-lab && cd ~/workflow-course/review-lab + mkdir -p ~/ai-workflow-course/review-lab && cd ~/ai-workflow-course/review-lab cp /path/to/modules/10-reviewing-code-you-didnt-write/lab/tasks-app/*.py . printf 'tasks.json\n__pycache__/\n' > .gitignore # keep generated runtime state out of your review diffs (Module 2) git init -qb main && git add . && git commit -qm "base: tasks-app" # -b main so the git switch main / git diff main.. steps below resolve diff --git a/modules/12-revert-reset-and-recovery/README.md b/modules/12-revert-reset-and-recovery/README.md index e1dd5ac..147312b 100644 --- a/modules/12-revert-reset-and-recovery/README.md +++ b/modules/12-revert-reset-and-recovery/README.md @@ -244,7 +244,7 @@ do them once on purpose now. 1. Make sure you're on a clean `main`: ```bash - cd ~/workflow-course/tasks-app + cd ~/ai-workflow-course/tasks-app git switch main git status # should be clean ``` diff --git a/modules/14-continuous-integration/README.md b/modules/14-continuous-integration/README.md index 0c62469..06842ed 100644 --- a/modules/14-continuous-integration/README.md +++ b/modules/14-continuous-integration/README.md @@ -225,7 +225,7 @@ your machine first. run both checks exactly as CI will: ```bash - cd ~/workflow-course/tasks-app + cd ~/ai-workflow-course/tasks-app pip install ruff python -m unittest # should report all tests passing ruff check . # should report no issues (or fix what it flags) diff --git a/modules/16-containers-and-reproducible-environments/README.md b/modules/16-containers-and-reproducible-environments/README.md index 075e3bc..3577703 100644 --- a/modules/16-containers-and-reproducible-environments/README.md +++ b/modules/16-containers-and-reproducible-environments/README.md @@ -188,7 +188,7 @@ containerize and run the app you already have. Dockerfile top to bottom — every line is commented. Then build: ```bash - cd ~/workflow-course/tasks-app + cd ~/ai-workflow-course/tasks-app docker build -t tasks-app . ``` diff --git a/modules/17-secrets-config-and-environments/README.md b/modules/17-secrets-config-and-environments/README.md index 7fea331..8f63128 100644 --- a/modules/17-secrets-config-and-environments/README.md +++ b/modules/17-secrets-config-and-environments/README.md @@ -295,7 +295,7 @@ config per environment. the before-picture: ```bash - cd ~/workflow-course/tasks-app + cd ~/ai-workflow-course/tasks-app python sync.py ``` diff --git a/modules/20-mcp-servers-giving-the-ai-hands/README.md b/modules/20-mcp-servers-giving-the-ai-hands/README.md index a0a127a..691e766 100644 --- a/modules/20-mcp-servers-giving-the-ai-hands/README.md +++ b/modules/20-mcp-servers-giving-the-ai-hands/README.md @@ -255,7 +255,7 @@ is the one that lands the concept. > global `pip install` is refused on purpose. The clean fix is a virtual environment per project: > > ```bash -> cd ~/workflow-course/tasks-app +> cd ~/ai-workflow-course/tasks-app > python3 -m venv .venv # one-time > source .venv/bin/activate # Windows: .venv\Scripts\activate > python3 -m pip install "mcp[cli]" @@ -266,7 +266,7 @@ is the one that lands the concept. > - **The install interpreter must match the config's launch command.** Your MCP client starts the > server by running the `"command"` in its config — *not* your activated shell — so activating a > venv does nothing to help the client find the SDK. You must point `"command"` at the venv's -> **absolute** python path (e.g. `~/workflow-course/tasks-app/.venv/bin/python`, or +> **absolute** python path (e.g. `~/ai-workflow-course/tasks-app/.venv/bin/python`, or > `...\.venv\Scripts\python.exe` on Windows). If they don't match, the server dies on `import mcp` > and your tool just says "not connected" with no obvious reason — the exact failure this lab is > about avoiding. @@ -274,7 +274,7 @@ is the one that lands the concept. > Before wiring anything, verify with the *same* interpreter the config will launch: > > ```bash -> ~/workflow-course/tasks-app/.venv/bin/python -c "import mcp; print('mcp ok')" +> ~/ai-workflow-course/tasks-app/.venv/bin/python -c "import mcp; print('mcp ok')" > ``` ### Part A — Connect an existing server (optional warm-up, ~10 min) @@ -348,8 +348,8 @@ That's the entire client/server loop, end to end, with zero code you wrote. Now ```json "tasks": { - "command": "/ABSOLUTE/PATH/TO/workflow-course/tasks-app/.venv/bin/python", - "args": ["/ABSOLUTE/PATH/TO/workflow-course/tasks-app/tasks_mcp_server.py"] + "command": "/ABSOLUTE/PATH/TO/ai-workflow-course/tasks-app/.venv/bin/python", + "args": ["/ABSOLUTE/PATH/TO/ai-workflow-course/tasks-app/tasks_mcp_server.py"] } ``` diff --git a/modules/20-mcp-servers-giving-the-ai-hands/lab/mcp-config-example.json b/modules/20-mcp-servers-giving-the-ai-hands/lab/mcp-config-example.json index b9e6650..0022cb7 100644 --- a/modules/20-mcp-servers-giving-the-ai-hands/lab/mcp-config-example.json +++ b/modules/20-mcp-servers-giving-the-ai-hands/lab/mcp-config-example.json @@ -2,8 +2,8 @@ "_comment": "Common shape of an MCP server entry for a local (stdio) server. Many agentic tools accept this 'mcpServers' map; yours may use a different key or location (check its docs). IMPORTANT: 'command' must be the ABSOLUTE path to the python interpreter that has the MCP SDK installed (e.g. your venv's python) -- a bare 'python' makes the client launch whatever is on its PATH, which usually does NOT have the SDK, and the server then reports 'not connected'. On Windows the venv python is ...\\.venv\\Scripts\\python.exe. Set 'args' to the ABSOLUTE path to tasks_mcp_server.py in your tasks-app.", "mcpServers": { "tasks": { - "command": "/ABSOLUTE/PATH/TO/workflow-course/tasks-app/.venv/bin/python", - "args": ["/ABSOLUTE/PATH/TO/workflow-course/tasks-app/tasks_mcp_server.py"] + "command": "/ABSOLUTE/PATH/TO/ai-workflow-course/tasks-app/.venv/bin/python", + "args": ["/ABSOLUTE/PATH/TO/ai-workflow-course/tasks-app/tasks_mcp_server.py"] } } } diff --git a/modules/21-skills-teaching-the-ai-your-playbook/README.md b/modules/21-skills-teaching-the-ai-your-playbook/README.md index 408bef0..62b45c5 100644 --- a/modules/21-skills-teaching-the-ai-your-playbook/README.md +++ b/modules/21-skills-teaching-the-ai-your-playbook/README.md @@ -182,7 +182,7 @@ seen, producing all four parts without you listing the steps. (e.g. `add-command.md`). If it doesn't, just drop it at the repo root — you'll invoke it by name. ```bash - cd ~/workflow-course/tasks-app + cd ~/ai-workflow-course/tasks-app cp /path/to/modules/21-skills-teaching-the-ai-your-playbook/lab/add-command-skill.md add-command.md ``` diff --git a/modules/22-securing-third-party-mcp-and-skills/README.md b/modules/22-securing-third-party-mcp-and-skills/README.md index 94b6244..06c9ebb 100644 --- a/modules/22-securing-third-party-mcp-and-skills/README.md +++ b/modules/22-securing-third-party-mcp-and-skills/README.md @@ -252,7 +252,7 @@ normal question) and the attacker (you plant content the agent reads). a real-looking task with an injection underneath: ```bash - cd ~/workflow-course/tasks-app + cd ~/ai-workflow-course/tasks-app python cli.py add "$(cat /path/to/lab/poisoned-task.txt)" python cli.py list ``` diff --git a/modules/25-autonomous-agents/README.md b/modules/25-autonomous-agents/README.md index 1e1c2f4..ea5cda5 100644 --- a/modules/25-autonomous-agents/README.md +++ b/modules/25-autonomous-agents/README.md @@ -245,7 +245,7 @@ out of the agent's `git add -A`, so the change you review in Part B is clean. Th branch: ```bash -cd ~/workflow-course/tasks-app +cd ~/ai-workflow-course/tasks-app git checkout -b agent/delete-command # Simulate an agent that produces a BROKEN change, then run the gate on it: diff --git a/modules/26-orchestrating-multiple-agents/README.md b/modules/26-orchestrating-multiple-agents/README.md index 9adc18f..746d0e3 100644 --- a/modules/26-orchestrating-multiple-agents/README.md +++ b/modules/26-orchestrating-multiple-agents/README.md @@ -115,7 +115,7 @@ Each agent gets **its own worktree on its own branch tied to its own issue.** Th keeps a fleet legible: ``` -~/workflow-course/ +~/ai-workflow-course/ tasks-app/ ← main worktree, on main (the integration point — no agent works here) tasks-app-42-count/ ← worktree for issue #42, branch feature/42-count, agent A tasks-app-43-docs/ ← worktree for issue #43, branch feature/43-docs, agent B @@ -336,9 +336,9 @@ thing you're waiting on. 5. In each worktree, commit the agent's work on its own branch and push it: ```bash - cd ~/workflow-course/tasks-app-42-count && git add . && git commit -m "Add count command (#42)" && git push -u origin feature/42-count - cd ~/workflow-course/tasks-app-43-docs && git add . && git commit -m "Document commands, add changelog (#43)" && git push -u origin feature/43-docs - cd ~/workflow-course/tasks-app-44-clear && git add . && git commit -m "Add clear command (#44)" && git push -u origin feature/44-clear + cd ~/ai-workflow-course/tasks-app-42-count && git add . && git commit -m "Add count command (#42)" && git push -u origin feature/42-count + cd ~/ai-workflow-course/tasks-app-43-docs && git add . && git commit -m "Document commands, add changelog (#43)" && git push -u origin feature/43-docs + cd ~/ai-workflow-course/tasks-app-44-clear && git add . && git commit -m "Add clear command (#44)" && git push -u origin feature/44-clear ``` ### Part C — Fan in through the funnel @@ -355,7 +355,7 @@ thing you're waiting on. ```bash # via the forge UI, or locally: - cd ~/workflow-course/tasks-app && git switch main + cd ~/ai-workflow-course/tasks-app && git switch main git merge feature/42-count # clean git merge feature/43-docs # clean — different files entirely ```