Make Docker/GitHub CLI/plugins/webapp-testing opt-in extras - #14
Conversation
The script is a generic "get Claude Code running on a fresh VM" installer; personal preferences belong in claude-config, layered on top separately. Docker, gh CLI/SSH setup, the recommended plugin bundle, and webapp-testing + Playwright are now each a Y/n prompt (default yes) instead of always-on, and the generated settings.json/CLAUDE.md only reference what was actually installed. Also dropped alwaysThinkingEnabled/MAX_THINKING_TOKENS/ CLAUDE_CODE_MAX_OUTPUT_TOKENS, which were personal tuning, not part of a baseline "make Claude Code work" install.
|
Ran both manual test-plan passes on a fresh Ubuntu 24.04 KVM VM. Run 1 — Docker=Y, plugin bundle=Y, webapp-testing=Y, GitHub=N:
Run 2 — everything declined (Docker/plugins/webapp-testing/GitHub all N):
Minor cosmetic-only nit: when a tools-list line is omitted (e.g. the Docker bullet under "Available Tools"), it leaves one blank line in the generated markdown rather than closing the gap. Harmless, not worth the added complexity to fix. Unrelated finding, not caused by this PR: the official Test plan checkbox updated — marking the manual run-through done. |
The native curl|bash installer downloads a standalone binary that turned out to hang reproducibly (99% CPU busy-spin, confirmed via strace) on a VM using QEMU's generic 'Common KVM processor' CPU model - lacking AVX/AVX2/RDRAND/BMI1/BMI2/etc that real and host-passthrough CPUs have. The apt-installed binary is unaffected on host-CPU-passthrough VMs and sidesteps the installer's own self-update background process in favor of plain apt-managed updates. Verifies the repo's gpg key fingerprint against the one published in Anthropic's docs before trusting it, refusing to proceed on a mismatch.
|
Ran the full, unmodified script end-to-end on a fresh Ubuntu 24.04 VM (real host-CPU-passthrough KVM, so the apt-installed Every step ran and completed, exit 0: Only warning printed was the expected one (
Combined with the earlier decline-everything and partial-accept passes already in the first comment, all four opt-in extras (Docker, GitHub CLI, plugin bundle, webapp-testing) and the new apt-based Claude Code install have now been verified both individually and in a single full run. |
Summary
claude-configsync) belong in a separate bootstrap layer, not baked in here.gh auth login, the recommended Claude Code plugin bundle, and the webapp-testing skill + Playwright are now each their own[Y/n]prompt (default yes), asked up front alongside the git identity questions so the rest of the install still runs unattended.settings.jsononly gets the plugin/marketplace block if the bundle was accepted (anddocker/githubplugin entries only appear if those tools were installed), the generated~/project/CLAUDE.mddrops the matching sections instead of describing tools that were never installed, and the final summary only lists what's actually there.alwaysThinkingEnabled,MAX_THINKING_TOKENS, andCLAUDE_CODE_MAX_OUTPUT_TOKENSfrom the generatedsettings.json— these were personal tuning that had nothing to do with a baseline "make Claude Code work" install.curl | bashnative installer. The native installer's downloaded binary turned out to hang reproducibly (confirmed via strace: a 99%-CPU busy-spin, not network/entropy/install-script related) on a VM using QEMU's generic "Common KVM processor" CPU model, which lacks AVX/AVX2/RDRAND/BMI1/BMI2/etc. that real or host-passthrough CPUs expose. The apt-installed binary is unaffected on a properly-configured (host-CPU-passthrough) VM, and gets plainapt upgrade claude-codeupdates instead of a self-updating background process. The script verifies the repo's gpg key fingerprint against the one published in Anthropic's own docs before trusting it.Test plan
bash -nsyntax check passesshellcheckshows no new warnings vs. the pre-change baseline (only pre-existing SC1091/SC2016 info-level notices)settings.json/CLAUDE.mdmatch the choices (see PR comments for the opt-in/opt-out pass and the full end-to-end pass)