Agent instructions, skills, SSH host aliases and expansion triggers are worth having identical on every machine one person owns, and belong in none of the shared configuration. They live in user/ now, with a manifest saying where each piece goes and a link-user stage that puts it there. That stage does nothing unless the machine said yes. Somebody who clones Panama to try the desktop keeps their own ~/.claude/CLAUDE.md exactly where it was; the question names the destinations and defaults to no. Anything displaced goes to config/old rather than being deleted. ~/.claude/CLAUDE.md and ~/.codex/AGENTS.md were byte-identical copies of one file, which is the drift this exists to prevent. Also adds the vitals toggles for the battery and Claude usage readouts, which had preferences and no way to reach them.
45 lines
1.3 KiB
Bash
Executable File
45 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Human-in-the-loop reproduction loop.
|
|
# Copy this file, edit the steps below, and run it.
|
|
# The agent runs the script; the user follows prompts in their terminal.
|
|
#
|
|
# Usage:
|
|
# bash hitl-loop.template.sh
|
|
#
|
|
# Two helpers:
|
|
# step "<instruction>" → show instruction, wait for Enter
|
|
# capture VAR "<question>" → show question, read response into VAR
|
|
#
|
|
# At the end, captured values are printed as KEY=VALUE for the agent to parse.
|
|
#
|
|
# `capture` prints its value back to the terminal, where the agent reads it,
|
|
# so capture observations, and leave signing in to the user as a `step`.
|
|
|
|
set -euo pipefail
|
|
|
|
step() {
|
|
printf '\n>>> %s\n' "$1"
|
|
read -r -p " [Enter when done] " _
|
|
}
|
|
|
|
capture() {
|
|
local var="$1" question="$2" answer
|
|
printf '\n>>> %s\n' "$question"
|
|
read -r -p " > " answer
|
|
printf -v "$var" '%s' "$answer"
|
|
}
|
|
|
|
# --- edit below ---------------------------------------------------------
|
|
|
|
step "Open the app at http://localhost:3000 and sign in."
|
|
|
|
capture ERRORED "Click the 'Export' button. Did it throw an error? (y/n)"
|
|
|
|
capture ERROR_MSG "Paste the error message (or 'none'):"
|
|
|
|
# --- edit above ---------------------------------------------------------
|
|
|
|
printf '\n--- Captured ---\n'
|
|
printf 'ERRORED=%s\n' "$ERRORED"
|
|
printf 'ERROR_MSG=%s\n' "$ERROR_MSG"
|