All checks were successful
ci/woodpecker/push/default Pipeline was successful
Make the admin's Claude Code agent skills available to the `emo` devvm user. Viktor asked to install Matt Pocock's skills for emo, starting with grill-me but covering the full set the admin already uses. The `npx skills` upstream has drifted off that set (diagnose -> diagnosing-bugs and write-a-skill -> writing-great-skills were renamed; caveman + zoom-out are no longer published), so reproducing it via npx is impossible and would also spray ~70 agent dirs into the user's home + add a GitHub-clone + unpinned-CLI dependency to the hourly root reconcile. Instead vendor a point-in-time snapshot of the 16 skills (scripts/workstation/claude-skills/) and copy them per-user, mirroring install_memory: install_skills() copies each skill into ~/.agents/skills/<name> (owned by the user) and symlinks ~/.claude/skills/<name> -> ../../.agents/skills/<name>. if-absent, additive, best-effort, scoped to the SKILL_USERS allowlist (emo). find-skills is from vercel-labs/skills (not Matt Pocock) but included since it is part of the admin's current set. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
41 lines
1.1 KiB
Bash
41 lines
1.1 KiB
Bash
#!/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.
|
|
|
|
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"
|