Skip to content

Add a shots skill for archdev shots - #64

Merged
calvin-archastro merged 1 commit into
mainfrom
feat/shots-skill
Oct 13, 2026
Merged

calvin-archastro merged 1 commit into
mainfrom
feat/shots-skill

Conversation

@calvin-archastro

Copy link
Copy Markdown
Contributor

Problem and intent

archdev shots (Rust CLI, 0.52.1+) can capture stills, render React/Ink/PTY fixtures, record movies, read Astroshots review feedback, upload runs and manage user stories, but no distributed skill teaches an agent how to use it. The older astroshot, astroshots-review and user-story skills describe the standalone TypeScript tool and are being removed from firstlanding. Shots is also consent-gated: every command except doctor and --help refuses until the person runs archdev settings set shots on, and that command refuses inside an agent session. An agent without guidance either fails repeatedly or tries to work around the setting.

This PR adds a shots skill that archdev setup --skills can install next to archdev, tasks and tasks-execute, and that a planned archdev shots --skill command can print.

What changed

  • shots/SKILL.md (new, one file so it reads the same when printed by the CLI):
    1. Readiness: archdev shots doctor (exit 0 only when on), archdev settings get rows, asking the person to enable Shots in their own terminal, per-profile settings, shots-upload auto|manual, and the unattended-harness profile pattern (harness code only, not a consent bypass).
    2. Stills with archdev shots capture, including the run lifecycle (--status, --finalize, --run-id), naming rules and validation.
    3. React, Ink and PTY fixtures, including fixture formats and batch manifests.
    4. Movies: browser, pty, desktop.window and frames sessions.
    5. Reading feedback with archdev shots status (seen, stale, unseen; run scoping).
    6. archdev shots upload.
    7. archdev shots stories.
    8. The UI-edit hook reminder and how to dismiss it.
    9. Troubleshooting.
  • catalog/archdev.json: registers the skill and adds a screenshots keyword.
  • plugins/**: regenerated with tools/plugin-gen (npm run build). No generated file was edited by hand.

There is no scripts/bootstrap.* for this skill. The skill needs the CLI to exist already (it is also printed by the CLI). The pinned installer that the other bootstraps use (a530d21) installs the TypeScript CLI on Windows, and that CLI has no shots.

Scope: skill content and generated plugin files only. Risk: low. Documentation only; no installer, hook or CLI change.

Testing

  • Every command and flag was checked against --help from a binary built from firstlanding main (00042d6109, 0.52.1). Behavior was run in a throwaway HOME: off gate and doctor exit codes; the settings refusal; capture, run and finalize lifecycle; numbering; lock timeout and stale-lock messages; status states, including a hand-written review.json for seen and stale; stories new, list, show and run-dir; a PTY still; PTY, frames and browser movies; and the signed-out upload error.
  • A separate agent fact-checked the skill against the binary and the source. It found ten inaccuracies, and all of them are fixed. The most important was that React and Ink stills fail on a stock install (see below).
  • The Node-helper workaround in Troubleshooting was verified with the released v0.52.1 Linux binary: Ink failed, then rendered after the recipe.
  • Repository checks:
    • tools/plugin-gen: npm run typecheck, npm test (62 pass) and npm run check (132 generated files match).
    • scripts/test-skill-bootstrap.sh passes. It is unchanged, because the skill ships no bootstrap.
  • There is no end-to-end test of an agent following the skill. CI covers the generated-plugin contract (Harness plugins workflow).

Known issues found in archdev shots (not fixed here)

  • React and Ink stills and movie run --script fail on a stock install with astroshot node helper could not load "tsx/esm/api". The embedded helper resolves tsx, vite, @vitejs/plugin-react and playwright-core only from its own directory, and doctor does not report this. The skill documents a workaround: copy the helper, install the packages next to it, and point ASTROSHOT_NODE_HELPER at it.
  • shots-upload auto is stored and displayed, but nothing on main reads it yet.
  • archdev shots upload --root defaults to the current directory, while every other subcommand defaults to the Git top level.
  • --format mp4 gives WebM for browser movies, and for any movie when ffmpeg is missing.
  • A capture with a different --run-id silently replaces a running run.
  • Review comments drop out of shots status once a new run starts.
  • shots is hidden from archdev --help.

🤖 Generated with Claude Code

Teaches agents to check the Shots consent setting first (doctor, settings
get) and ask the person to enable it, then capture stills, render
React/Ink/PTY fixtures, record movies, read review.json feedback through
shots status, upload runs and work with user stories. Registered in the
catalog and regenerated into every harness plugin.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@calvin-archastro
calvin-archastro merged commit 598ae04 into main Oct 13, 2026
20 checks passed
@calvin-archastro
calvin-archastro deleted the feat/shots-skill branch October 13, 2026 17:42
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