fix(running-example): consistent lab-script paths, tasks.json policy, no command collisions
- Lab-script path convention: course scripts live in modules/NN/lab/; copy the one a step needs into tasks-app, then run by bare name (M4/M6/M7/M26 + headers). - tasks.json stays gitignored: M20 verifies via `cli.py list`/`cat tasks.json` (not git diff) and frames runtime state as deliberately ignored; M22 cleanup uses `rm tasks.json`; M10 review-lab gets its own .gitignore. Module 21's lab deliberately ships NO .gitignore (teaching device) — untouched. - Stop running-example command collisions: M5 clear->search, M6 count/clear-> stats/purge, M7 clear/count->wipe/remaining (README + scripts + agent prompts + branch/worktree names). M6 conflict still reproduces on the carried usage line. Closes #7 Closes #10 Closes #11 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TfzV5QvtPDz8LJS3Pu5VLT
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
# Agent A prompt — the `clear` command
|
||||
# Agent A prompt — the `wipe` command
|
||||
|
||||
Paste this into the AI session you've pointed at the `tasks-app-clear` worktree folder.
|
||||
Paste this into the AI session you've pointed at the `tasks-app-wipe` worktree folder.
|
||||
|
||||
---
|
||||
|
||||
Add a `clear` command to this task app that removes **all** tasks.
|
||||
Add a `wipe` command to this task app that removes **all** tasks.
|
||||
|
||||
- Put the deletion logic on `TaskList` in `tasks.py` (a `clear()` method that empties the list),
|
||||
and wire a `clear` command into the dispatch in `cli.py` that calls it and saves.
|
||||
- Running `python cli.py clear` should empty the list and print a short confirmation like
|
||||
`cleared all tasks`.
|
||||
- After `clear`, `python cli.py list` should print `(no tasks yet)`.
|
||||
- Put the deletion logic on `TaskList` in `tasks.py` (a `wipe()` method that empties the list),
|
||||
and wire a `wipe` command into the dispatch in `cli.py` that calls it and saves.
|
||||
- Running `python cli.py wipe` should empty the list and print a short confirmation like
|
||||
`wiped all tasks`.
|
||||
- After `wipe`, `python cli.py list` should print `(no tasks yet)`.
|
||||
|
||||
Make the change, then stop — I'll review the diff and commit it myself.
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# Agent B prompt — the `count` command
|
||||
# Agent B prompt — the `remaining` command
|
||||
|
||||
Paste this into the AI session you've pointed at the `tasks-app-count` worktree folder.
|
||||
Paste this into the AI session you've pointed at the `tasks-app-remaining` worktree folder.
|
||||
|
||||
---
|
||||
|
||||
Add a `count` command to this task app that prints how many tasks are still pending.
|
||||
Add a `remaining` command to this task app that prints how many tasks are still pending.
|
||||
|
||||
- Reuse the existing `pending()` method on `TaskList` in `tasks.py`; don't reimplement it.
|
||||
- Wire a `count` command into the dispatch in `cli.py`.
|
||||
- Running `python cli.py count` should print something like `2 pending` (the number of tasks not
|
||||
- Wire a `remaining` command into the dispatch in `cli.py`.
|
||||
- Running `python cli.py remaining` should print something like `2 pending` (the number of tasks not
|
||||
marked done).
|
||||
|
||||
Make the change, then stop — I'll review the diff and commit it myself.
|
||||
|
||||
@@ -1,23 +1,24 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Module 7 lab — tear down the two worktrees created by setup-worktrees.sh.
|
||||
# Run from INSIDE your tasks-app repo:
|
||||
# Copy this into your tasks-app repo, then run it from inside:
|
||||
#
|
||||
# bash modules/07-worktrees-running-agents-in-parallel/lab/cleanup-worktrees.sh
|
||||
# cp /path/to/modules/07-worktrees-running-agents-in-parallel/lab/cleanup-worktrees.sh .
|
||||
# bash cleanup-worktrees.sh
|
||||
#
|
||||
# `git worktree remove` deletes the folder AND clears Git's record of it; `prune` mops up any
|
||||
# worktrees whose folders were deleted by hand (which leaves a stale record otherwise).
|
||||
#
|
||||
# NOTE: --force discards UNCOMMITTED work in a worktree. Commit (or merge) before cleaning up.
|
||||
# This script assumes you already merged feature/clear and feature/count back into main.
|
||||
# This script assumes you already merged feature/wipe and feature/remaining back into main.
|
||||
#
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(git rev-parse --show-toplevel)"
|
||||
PARENT="$(cd "$ROOT/.." && pwd)"
|
||||
|
||||
git worktree remove "$PARENT/tasks-app-clear" --force 2>/dev/null || true
|
||||
git worktree remove "$PARENT/tasks-app-count" --force 2>/dev/null || true
|
||||
git worktree remove "$PARENT/tasks-app-wipe" --force 2>/dev/null || true
|
||||
git worktree remove "$PARENT/tasks-app-remaining" --force 2>/dev/null || true
|
||||
git worktree prune
|
||||
|
||||
echo
|
||||
@@ -26,4 +27,4 @@ git worktree list
|
||||
|
||||
echo
|
||||
echo "If you merged both branches you can also delete them:"
|
||||
echo " git branch -d feature/clear feature/count"
|
||||
echo " git branch -d feature/wipe feature/remaining"
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Module 7 lab — create two linked worktrees off the tasks-app repo, each on its own branch.
|
||||
# Run this from INSIDE your tasks-app repo (the one you git-init'd in Module 2):
|
||||
# Copy this into your tasks-app repo (the one you git-init'd in Module 2), then run it from inside:
|
||||
#
|
||||
# bash modules/07-worktrees-running-agents-in-parallel/lab/setup-worktrees.sh
|
||||
# cp /path/to/modules/07-worktrees-running-agents-in-parallel/lab/setup-worktrees.sh .
|
||||
# bash setup-worktrees.sh
|
||||
#
|
||||
# It places the new worktree folders next to the repo, so you end up with:
|
||||
#
|
||||
# <parent>/tasks-app (your existing repo, on its current branch)
|
||||
# <parent>/tasks-app-clear (new worktree on branch feature/clear)
|
||||
# <parent>/tasks-app-count (new worktree on branch feature/count)
|
||||
# <parent>/tasks-app (your existing repo, on its current branch)
|
||||
# <parent>/tasks-app-wipe (new worktree on branch feature/wipe)
|
||||
# <parent>/tasks-app-remaining (new worktree on branch feature/remaining)
|
||||
#
|
||||
set -euo pipefail
|
||||
|
||||
@@ -17,8 +18,8 @@ set -euo pipefail
|
||||
ROOT="$(git rev-parse --show-toplevel)"
|
||||
PARENT="$(cd "$ROOT/.." && pwd)"
|
||||
|
||||
git worktree add "$PARENT/tasks-app-clear" -b feature/clear
|
||||
git worktree add "$PARENT/tasks-app-count" -b feature/count
|
||||
git worktree add "$PARENT/tasks-app-wipe" -b feature/wipe
|
||||
git worktree add "$PARENT/tasks-app-remaining" -b feature/remaining
|
||||
|
||||
echo
|
||||
echo "Worktrees created. One repo, three checked-out branches:"
|
||||
|
||||
Reference in New Issue
Block a user