Skip to content

Make Beginner step text read whole on the card and word paths relative to project/ (349) - #236

Merged
wesammustafa merged 2 commits into
mainfrom
quest/349-beginner-step-text-polish
Nov 6, 2026
Merged

wesammustafa merged 2 commits into
mainfrom
quest/349-beginner-step-text-polish

Conversation

@wesammustafa

@wesammustafa wesammustafa commented Nov 5, 2026 •

Copy link
Copy Markdown
Owner

What this changes

Low-severity step text from the live Beginner run (issue 07), lesson by lesson, with the Guide page and the step file saying the same thing:

  • Paths relative to project/ (b-2 Y4, capstone T5, b-5 Y3): the notes now say "relative to project/", and that git status --porcelain prints paths from the folder above project/, such as project/src/links.js, which the check accepts too. b-5 Y3 names project/.gitignore and says to leave the copy's second .gitignore as it is. New beginner-process.test.mjs cases prove both forms pass b-2 and the capstone. b-2 Y4's beat-2 note now starts with a capital.
  • "You should see" doubling (b-1 W5, b-3 W1, b-5 W6): expect lines start with what to see; b-5 W6 adds the page's nothing to commit, working tree clean.
  • Whole-sentence because lines (b-1 W4, b-2 W2, b-3 W5, b-5 W2), and b-4 W3 keeps the page's lead-in "Say you decide against it:".
  • Missing referents: b-1 W5's why names Esc; b-4 Y5 names .practice/b-4-after-rewind.txt; b-5 W4 asks for one restart, in project/.
  • b-1's PATH Not yet pointed at the card the learner was on. FIX_PATH and NOT_FOUND now say "fix PATH as Troubleshoot installation describes (lesson 1's Guide page links it under Check the install), then retry." beginner-failures.json changes only those four b-1 messages.
  • b-4 numbering: "the step 2 prompt" used the page's Your turn numbering. The ticket asked for the app's step name; instead page and card say "the prompt that ran the script", so the line is the same in both places. The fallback hint says "start again from the prompt that ran the script".
  • b-4 W5: the commit gets its own beat, in Claude Code, so b-4 joins CHANGED_SINCE_LEGACY.
  • b-5 W2: the rule to add is a code: block with Copy, as the page shows it; b-5 W1 adds the page's cat CLAUDE.md beat; b-3 W1's lone "Explore" goal is a full instruction.

Not changed: the legacy Terminal app copy practice-template/learn/lessons/b-4.md still says "the step 2 prompt"; template.mjs keeps it out of learner copies.

Checklist

  • Facts that can go stale link their Tier 1 source inline
  • No unsourced numbers: n/a
  • Renamed or removed headings: none
  • New listing: n/a
  • Tested in Claude Code: live dry-run below (v2.1.309)
  • Captures: n/a
  • Contrast: n/a
  • I have personally verified any AI-assisted content in this PR.

Claim table

Filled by a separate agent that tried to refute each changed claim:

Claim Source Result
b-1 (docs/beginner/01 step 4, course/steps/b-1.md): "Matching model names in your headers don't show which other models each account can pick." Model configuration: default model setting, Organization model restrictions Confirmed. Different accounts can start on the same model: "Pro, Max, Ultra, Team, Enterprise, and Anthropic API: defaults to Opus 5.5". What each account can pick still differs, for example "Organization admins on Claude Enterprise plans restrict which models members can run by disabling individual models in the claude.ai admin console", and for Fable "Depending on your plan and seat tier, Fable usage can bill to usage credits ... the /model picker shows "Requires usage credits" on the Fable row." So a shared header model says nothing about the rest of the picker. This is an inference from these lines; no single docs sentence states it.
b-1 W5: "Press Esc whenever Claude heads the wrong way, then say what you want instead." Interactive mode: general controls Confirmed. "Esc | Interrupt Claude, or close a dialog | Stop the current response or tool call mid-turn so you can redirect. Claude keeps the work done so far." How Claude Code works also says: "Press Esc to stop Claude immediately. The running tool call is canceled and Claude waits for your next instruction."
checks/lessons/b-1.mjs FIX_PATH and NOT_FOUND: "fix PATH as Troubleshoot installation describes (lesson 1's Guide page links it under Check the install)" Troubleshoot installation and login: command not found Confirmed, with a naming note. The page covers PATH: "If installation succeeded but you get a command not found or not recognized error when running claude, the install directory isn't in your PATH." Lesson 1's step 2, "Check the install", links it as "fix it with Troubleshoot installation". Note: the page's actual title is "# Troubleshoot installation and login", so the short name "Troubleshoot installation" is the guide's own label, used the same way across lesson 1.
b-5: "Your instruction files load at the start of each session" How Claude remembers your project Confirmed. "Claude reads them at the start of every session." and "Both are loaded at the start of every conversation." One caveat the sentence doesn't state: "Files in subdirectories load on demand."
b-5 step 4: "Start a new session with claude in your copy's project/ folder, so it loads CLAUDE.md with your rule", then find it with /context all under Memory files Memory: how CLAUDE.md files load Confirmed. "Claude Code loads CLAUDE.md and CLAUDE.local.md from your current working directory and every directory above it." and "CLAUDE.md and CLAUDE.local.md files in the directory hierarchy above the working directory are loaded at launch." Also: "To confirm the file loaded, run /context all in a session and check the list under Memory files. In fullscreen mode, /context alone collapses that list."
b-5 Go further step 3: put a CLAUDE.local.md in the project/ folder next to CLAUDE.md, and add CLAUDE.local.md to project/.gitignore Memory: CLAUDE.local.md Confirmed. "For private per-project preferences that shouldn't be checked into version control, create a CLAUDE.local.md at the project root. It loads alongside CLAUDE.md and is treated the same way. Add CLAUDE.local.md to your .gitignore so it isn't committed." The table row reads "./CLAUDE.local.md | Personal project-specific preferences; add to .gitignore". Because project/ is the session's working directory, this matches.
b-2 and capstone: "In a Practice copy, git status --porcelain prints each path from the root of the repository, the folder above project/, such as project/src/links.js: the check accepts either form." git status: porcelain format Confirmed. "The user's status.relativePaths configuration is not respected; paths shown will always be relative to the repository root." The second half (the check accepts either form) is the repo's own behavior. practice-template/checks/paths.mjs planPaths strips the project/ prefix and a leading ./, and the commit's new tests in beginner-process.test.mjs cover src/config.js, project/src/config.js and ./project/src/config.js for b-2, and both forms for b-capstone.
b-4 step 4 hint: if the rewind menu offers only Restore conversation, the summarize options and Never mind, Claude changed the files in a way rewind doesn't track, usually with commands Checkpointing: rewind and summarize Confirmed. "The two code restore options appear only when the selected checkpoint has tracked file changes to revert. If no file edits were captured after that point, the menu offers only Restore conversation, the summarize options, and Never mind." Also: "A file that only Bash commands changed isn't tracked and stays as it is. To revert it, use version control, such as Git." The commit changes only the restart point in this hint ("start again from the prompt that ran the script"), and that wording makes no new product claim.
docs/beginner/04-keep-a-session-on-track.md step 4: Anthropic's session management guide says rewinding is often the better correction; the attempt leaves the context, and you re-prompt with what you learned (also in course/steps/b-4.md W4 because and W7 why) Using Claude Code: session management and 1M context, 'Rewinding instead of correcting' (Tier 2; no Tier 1 page covers this advice) Confirmed: "The messages after that point are dropped from the context. Rewind is often the better approach to correction." and "the better move may be to rewind to just after the file reads, and re-prompt with what you learned." The page says 'approach to correction' and the PR shortens it to 'correction', which keeps the meaning. The source is Tier 2 (claude.com), cited as Anthropic's guide.
Type /rewind, or press Esc twice with an empty prompt, to open the rewind menu, then pick the step 3 prompt and choose Restore code and conversation (b-4 W7 goal, lesson step 4) Checkpointing: Rewind and summarize Confirmed: "Run /rewind, or press Esc twice when the prompt input is empty, to open the rewind menu." and "Restore code and conversation: revert both code and conversation to that point"
After Restore code and conversation you'll see the files go back, the attempt leave the conversation, and your step 3 prompt return to the input box (lesson step 4; b-4 W7 expect) Checkpointing: Rewind and summarize Confirmed: "Restore code and conversation: revert both code and conversation to that point" and "After restoring the conversation or choosing Summarize from here, the original prompt from the selected message is restored into the input field so you can re-send or edit it." One caveat that doesn't refute the claim: "The two code restore options appear only when the selected checkpoint has tracked file changes to revert", and the unchanged note next to it already covers that case. The new b-4 expect text, "the files go back, the attempt leave the conversation, and your step 3 prompt return to the input box", is not a full sentence on its own. That is a grammar question for how the card reads after the app's prefix, not a factual one.
claude --resume check-links-refactor reopens the named refactor conversation, showing the refactor and its commit (b-4 W-final expect, reworded) CLI reference: --resume Confirmed: "--resume, -r | Resume a specific session by ID or name" and, under --name, "You can resume a named session with claude --resume <name>." The words 'the refactor and its commit' describe what that conversation contains, not a documented behavior. The source line for the unchanged why ('claude --continue reopens the most recent session in this folder') is "Load the most recent conversation in the current directory".
b-5 W2 reveal (course/steps/b-5.md and practice-template/learn/lessons/b-5.md): 'Then cut it: for each line, ask whether removing it would make Claude make mistakes' Memory: Write effective instructions Not checked against a fetched source: this commit only adds the 'Then cut it:' lead-in to an existing reveal, and the CLAUDE.md pruning test it paraphrases is unchanged. It names no command, flag, setting, version or label, so it is not a volatile claim under AGENTS.md. This row is listed only so the changed line is accounted for.

Dry-run

Live runs from this branch (f00139c) with real Claude Code v2.1.309 at start and end of each, a clean configuration, macOS, driven only by what the app shows (logs ~/.learn-runs/logs/rel349-b1/, rel349-b4/, rel349-b5/). b-4 and b-5 were played to the end: app and npm run check passed (4 of 4, 5 of 5). b-1 covered W2 to W5.

  • b-1 W2 PATH Not yet: pass. With claude off PATH: "... If it fails there too, fix PATH as Troubleshoot installation describes (lesson 1's Guide page links it under Check the install), then retry." The app's Read the full lesson shows that link in step 2. After restarting from a normal PATH, W2 passed.
  • b-1 W4 and W5: pass. "Matching model names in your headers don't show which other models each account can pick."; "Why: Press Esc whenever Claude heads the wrong way, ..."; "You should see answers that name src/config.js and npm test, though your wording will differ."
  • b-4: pass. W3's note starts "Say you decide against it:"; W5's beats go Claude Code, shell, Claude Code ("Then ask Claude to commit it."), which is where the commit happened. Y4's "rewind the prompt that ran the script with Restore code" was clear: /rewind listed that prompt just above "(current)", and after Restore code b-4-after-rewind.txt held only M project/src/links.js. Y5 names .practice/b-4-after-rewind.txt.
  • b-5: pass. W2's because lines read whole and the rule renders as a code block with Copy; W4 has one /exit; W6's expect matched the shell; Y3 named project/.gitignore and the second .gitignore, and the Check passed with only project/.gitignore edited.
  • Fixed after the run (9838335): b-4 W4 and W7 still had the doubled "You should see" prefix and W4 fragment because lines, and b-5 W2's reveal was a lowercase fragment. Each card line must quote its page, so the page's step 4 now reads "says rewinding is often the better correction. The attempt leaves the context, ..." and "You'll see the files go back, ...". One W4 because line ("Files and conversation back, to send a better prompt") stays as the page's table cell has it.
  • Not in this PR (low): the LSP plugin recommendation and "Claude in Chrome extension detected" dialogs also appear in b-4 and b-5, which don't mention them; a step button sometimes needed a second click (possibly the DevTools driving); Claude pointed out answers early in b-1 W5 and b-4 Y2; the point 1 gutter on b-5 W2's code block has hidden "explained line:" text with nothing after it.

@wesammustafa
wesammustafa marked this pull request as ready for review November 6, 2026 01:00
@wesammustafa
wesammustafa merged commit 7bb7ec3 into main Nov 6, 2026
16 checks passed
@wesammustafa
wesammustafa deleted the quest/349-beginner-step-text-polish branch November 6, 2026 01:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant