reshoot 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. reshoot-0.3.0/.claude-plugin/marketplace.json +15 -0
  2. reshoot-0.3.0/.claude-plugin/plugin.json +11 -0
  3. reshoot-0.3.0/.gitignore +12 -0
  4. reshoot-0.3.0/CHANGELOG.md +35 -0
  5. reshoot-0.3.0/LICENSE +21 -0
  6. reshoot-0.3.0/PKG-INFO +268 -0
  7. reshoot-0.3.0/README.md +239 -0
  8. reshoot-0.3.0/examples/notes/about.html +23 -0
  9. reshoot-0.3.0/examples/notes/edit.py +64 -0
  10. reshoot-0.3.0/examples/notes/index.html +61 -0
  11. reshoot-0.3.0/examples/notes/phone.py +8 -0
  12. reshoot-0.3.0/examples/notes/release-v1.toml +11 -0
  13. reshoot-0.3.0/examples/notes/release-v2/about.html +23 -0
  14. reshoot-0.3.0/examples/notes/release-v2/index.html +61 -0
  15. reshoot-0.3.0/examples/notes/release-v2.toml +11 -0
  16. reshoot-0.3.0/examples/notes/releases.md +24 -0
  17. reshoot-0.3.0/examples/notes/reshoot.toml +24 -0
  18. reshoot-0.3.0/examples/notes/storyboard.py +17 -0
  19. reshoot-0.3.0/examples/notes/storyboard.toml +49 -0
  20. reshoot-0.3.0/examples/notes/terminal.tape +26 -0
  21. reshoot-0.3.0/examples/notes/voiced.py +18 -0
  22. reshoot-0.3.0/pyproject.toml +71 -0
  23. reshoot-0.3.0/skills/README.md +98 -0
  24. reshoot-0.3.0/skills/check-privacy/SKILL.md +72 -0
  25. reshoot-0.3.0/skills/cut-video/SKILL.md +77 -0
  26. reshoot-0.3.0/skills/keep-current/SKILL.md +41 -0
  27. reshoot-0.3.0/skills/plan-demo/SKILL.md +66 -0
  28. reshoot-0.3.0/skills/record-terminal/SKILL.md +50 -0
  29. reshoot-0.3.0/skills/record-terminal/template.tape +25 -0
  30. reshoot-0.3.0/skills/record-web/SKILL.md +159 -0
  31. reshoot-0.3.0/skills/record-window/SKILL.md +45 -0
  32. reshoot-0.3.0/skills/reshoot-demo/SKILL.md +28 -0
  33. reshoot-0.3.0/skills/reshoot-demo/agents/openai.yaml +4 -0
  34. reshoot-0.3.0/skills/reshoot-refresh/SKILL.md +22 -0
  35. reshoot-0.3.0/skills/reshoot-refresh/agents/openai.yaml +4 -0
  36. reshoot-0.3.0/skills/reshoot-review/SKILL.md +25 -0
  37. reshoot-0.3.0/skills/reshoot-review/agents/openai.yaml +4 -0
  38. reshoot-0.3.0/src/reshoot/__init__.py +1 -0
  39. reshoot-0.3.0/src/reshoot/artifacts.py +55 -0
  40. reshoot-0.3.0/src/reshoot/browser.py +280 -0
  41. reshoot-0.3.0/src/reshoot/check.py +326 -0
  42. reshoot-0.3.0/src/reshoot/cli.py +127 -0
  43. reshoot-0.3.0/src/reshoot/config.py +83 -0
  44. reshoot-0.3.0/src/reshoot/cut.py +371 -0
  45. reshoot-0.3.0/src/reshoot/overlay.js +247 -0
  46. reshoot-0.3.0/src/reshoot/project.py +92 -0
  47. reshoot-0.3.0/src/reshoot/rec.js +88 -0
  48. reshoot-0.3.0/src/reshoot/rec.py +181 -0
  49. reshoot-0.3.0/src/reshoot/review.py +223 -0
  50. reshoot-0.3.0/src/reshoot/run.py +286 -0
  51. reshoot-0.3.0/src/reshoot/safety.py +28 -0
  52. reshoot-0.3.0/src/reshoot/scan.py +133 -0
  53. reshoot-0.3.0/src/reshoot/skills.py +26 -0
  54. reshoot-0.3.0/src/reshoot/story.py +86 -0
  55. reshoot-0.3.0/src/reshoot/templates/BRIEF.md +22 -0
  56. reshoot-0.3.0/src/reshoot/templates/about.html +23 -0
  57. reshoot-0.3.0/src/reshoot/templates/edit.py +9 -0
  58. reshoot-0.3.0/src/reshoot/templates/edit.toml +13 -0
  59. reshoot-0.3.0/src/reshoot/templates/index.html +61 -0
  60. reshoot-0.3.0/src/reshoot/templates/reshoot.toml +15 -0
  61. reshoot-0.3.0/src/reshoot/templates/storyboard.py +9 -0
  62. reshoot-0.3.0/src/reshoot/templates/storyboard.toml +49 -0
  63. reshoot-0.3.0/src/reshoot/timeline.py +244 -0
  64. reshoot-0.3.0/src/reshoot/voice.py +70 -0
  65. reshoot-0.3.0/src/reshoot/web.py +359 -0
  66. reshoot-0.3.0/src/reshoot/window.py +57 -0
  67. reshoot-0.3.0/src/reshoot/zoom.py +292 -0
  68. reshoot-0.3.0/tests/boards/blur.py +9 -0
  69. reshoot-0.3.0/tests/boards/pages.py +8 -0
  70. reshoot-0.3.0/tests/boards/selectors.html +10 -0
  71. reshoot-0.3.0/tests/boards/voice.py +4 -0
  72. reshoot-0.3.0/tests/conftest.py +22 -0
  73. reshoot-0.3.0/tests/person.py +74 -0
  74. reshoot-0.3.0/tests/test_distribution.py +21 -0
  75. reshoot-0.3.0/tests/test_edit.py +83 -0
  76. reshoot-0.3.0/tests/test_failures.py +143 -0
  77. reshoot-0.3.0/tests/test_project.py +148 -0
  78. reshoot-0.3.0/tests/test_reshoot.py +583 -0
  79. reshoot-0.3.0/tests/test_review.py +175 -0
  80. reshoot-0.3.0/tests/test_story.py +252 -0
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "reshoot",
3
+ "description": "Agent skills and recording tools for repeatable software demo videos.",
4
+ "owner": {
5
+ "name": "Mumit Khan",
6
+ "url": "https://github.com/mumit"
7
+ },
8
+ "plugins": [
9
+ {
10
+ "name": "reshoot",
11
+ "source": "./",
12
+ "description": "Give your coding agent a task. Create a demo video, refresh it after UI changes, and review the result with reshoot."
13
+ }
14
+ ]
15
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "$schema": "https://anthropic.com/claude-code/plugin.schema.json",
3
+ "name": "reshoot",
4
+ "version": "0.3.0",
5
+ "description": "Agent skills to create, refresh and review software demo videos. Use the reshoot CLI to record the app, export an MP4 and README GIF, and keep the demo source beside the code.",
6
+ "author": { "name": "Mumit Khan", "url": "https://github.com/mumit" },
7
+ "homepage": "https://github.com/mumit/reshoot",
8
+ "repository": "https://github.com/mumit/reshoot",
9
+ "license": "MIT",
10
+ "keywords": ["agent-skills", "demo", "video", "readme", "storyboard", "vhs", "ffmpeg"]
11
+ }
@@ -0,0 +1,12 @@
1
+ takes/
2
+ review/
3
+ .venv/
4
+ __pycache__/
5
+ *.egg-info/
6
+ .pytest_cache/
7
+ .DS_Store
8
+
9
+ dist/
10
+
11
+ # Local social-post drafts
12
+ /docs/sharing.md
@@ -0,0 +1,35 @@
1
+ # Changelog
2
+
3
+ Each release names what changed for people making demos. Versions follow
4
+ [semantic versioning](https://semver.org/); before 1.0, a minor version may
5
+ change project files or commands.
6
+
7
+ ## 0.3.0 (2026-10-23)
8
+
9
+ The first release on PyPI. Install it with `uv tool install 'reshoot[browser]'`.
10
+
11
+ ### Added
12
+
13
+ - Published to PyPI, with a release workflow that builds, checks and publishes
14
+ each tagged version.
15
+ - An agent-first entry point: a first-demo prompt in the README, the agent
16
+ quickstart and a skill catalog.
17
+ - Guides for each stage after the first recording: features, customizing,
18
+ fuller demos and tutorials, publishing, CI and faster shoots.
19
+
20
+ ### Fixed
21
+
22
+ - Review pages show baseline GIFs as images; MP4s keep their video players.
23
+ - Joined title cards no longer vanish or freeze in GIF exports.
24
+ - Clip joins keep an exact frame rate.
25
+ - Captions stay visible across same-origin page loads.
26
+ - Previews that mix web and VHS takes keep matching dimensions.
27
+ - Runs leave incomplete expectations unverified instead of passing them.
28
+ - `doctor` rejects a `RESHOOT_CHROME` that does not name a usable browser.
29
+
30
+ ## 0.2.0
31
+
32
+ Repeatable demo projects: `reshoot.toml`, TOML storyboards with checked
33
+ expectations, `init`, `doctor`, `preview`, isolated versioned runs, `compare`,
34
+ `review` with bound decisions, `export`, and shared Claude Code and Codex skills
35
+ installed by `reshoot skills`. Installed from Git only.
reshoot-0.3.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Mumit Khan
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
reshoot-0.3.0/PKG-INFO ADDED
@@ -0,0 +1,268 @@
1
+ Metadata-Version: 2.5
2
+ Name: reshoot
3
+ Version: 0.3.0
4
+ Summary: Agent skills and recording tools for repeatable software demo videos
5
+ Project-URL: Homepage, https://github.com/mumit/reshoot
6
+ Project-URL: Documentation, https://github.com/mumit/reshoot/tree/main/guide
7
+ Project-URL: Changelog, https://github.com/mumit/reshoot/blob/main/CHANGELOG.md
8
+ Project-URL: Issues, https://github.com/mumit/reshoot/issues
9
+ Author: Mumit Khan
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Keywords: agent-skills,demo,gif,playwright,readme,screencast,video
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Operating System :: MacOS
17
+ Classifier: Operating System :: POSIX :: Linux
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Topic :: Multimedia :: Video
20
+ Classifier: Topic :: Software Development :: Documentation
21
+ Requires-Python: >=3.11
22
+ Requires-Dist: pillow>=10.1
23
+ Requires-Dist: pyobjc-framework-quartz>=10; sys_platform == 'darwin'
24
+ Requires-Dist: pyobjc-framework-vision>=10; sys_platform == 'darwin'
25
+ Requires-Dist: websockets>=12
26
+ Provides-Extra: browser
27
+ Requires-Dist: playwright==1.58.0; extra == 'browser'
28
+ Description-Content-Type: text/markdown
29
+
30
+ # reshoot
31
+
32
+ **Give your agent a task. Get a demo you can run again.**
33
+
34
+ An agent-first toolkit for software demos: open source skills and recording
35
+ tools for Codex and Claude Code. Turn a task in your app into a captioned MP4,
36
+ a README GIF, and source files that keep the demo repeatable as the app changes.
37
+
38
+ ![The same notes task recorded before and after a UI update, using one reshoot storyboard](https://raw.githubusercontent.com/mumit/reshoot/main/docs/demo/reshoot.gif)
39
+
40
+ The UI changed. The same story still saves and finds the same note.
41
+ [Watch the 21-second demo](https://github.com/mumit/reshoot/blob/main/docs/demo/reshoot.mp4) ·
42
+ [Make a demo of your app](https://github.com/mumit/reshoot/blob/main/guide/agent-quickstart.md) ·
43
+ [Explore the skills](https://github.com/mumit/reshoot/blob/main/skills/README.md) · [Use the CLI](https://github.com/mumit/reshoot/blob/main/guide/step-by-step.md)
44
+
45
+ ## Make a demo of your app
46
+
47
+ Open **Codex or Claude Code** in your app's repository, or an empty demo folder
48
+ if you only have a running app. Paste this prompt. Change `Target:` to your
49
+ web app's URL or the name of a macOS app and its demo window when needed.
50
+
51
+ ```text
52
+ Make a short demo with reshoot.
53
+ Read https://github.com/mumit/reshoot/blob/main/guide/agent-quickstart.md
54
+ and follow its setup and creation workflow.
55
+
56
+ Target: the app in this repository.
57
+ Choose one useful task with a clear visible result. Use synthetic demo data.
58
+ Produce a short captioned MP4 and a README GIF. Keep the recording source in
59
+ demo/ so it can be updated later.
60
+
61
+ Inspect a preview, then record a fresh final and open both exports for review.
62
+ Ask only for permissions or missing details needed to proceed.
63
+ ```
64
+
65
+ Add a task if you have one: “Show creating a project and finding it by search.”
66
+ Otherwise, let the agent inspect the app and propose a useful task. Source code
67
+ is optional. Browser recording runs on macOS or Linux; native window capture
68
+ requires macOS and app-specific automation or your interaction during capture.
69
+ The agent needs a local session with a shell and access to the target.
70
+
71
+ The agent handles setup, reads the app's controls, writes the story, records a
72
+ preview and prepares the final exports. You watch the result, request changes
73
+ and decide whether to share it. Initial setup may need installation permissions
74
+ or an isolated demo login.
75
+
76
+ **You get a video, a GIF, and their source.** Keep the `demo/` recipe beside the
77
+ app's code or in its own folder. Browser projects retain each attempt in a
78
+ versioned run folder. Native recipes retain standalone takes and edit scripts.
79
+
80
+ Already installed the skills? Start with `$reshoot-demo` in Codex or
81
+ `/reshoot-demo` in Claude Code, followed by the task.
82
+
83
+ ## Three skills, one workflow
84
+
85
+ A skill gives the coding agent a reusable workflow: how to choose the task,
86
+ record it, check the result and present it for review. Reshoot's CLI performs
87
+ the recording and editing. The agent uses available source code or the running
88
+ app's controls to adapt that workflow to the product.
89
+
90
+ | When | Skill | What to ask for |
91
+ |---|---|---|
92
+ | Make the first demo | [reshoot-demo](https://github.com/mumit/reshoot/blob/main/skills/reshoot-demo/SKILL.md) | “Show a customer saving a search and seeing its results.” |
93
+ | The app changed | [reshoot-refresh](https://github.com/mumit/reshoot/blob/main/skills/reshoot-refresh/SKILL.md) | “Record that task again with the updated UI. Keep the old take for comparison.” |
94
+ | Check before sharing | [reshoot-review](https://github.com/mumit/reshoot/blob/main/skills/reshoot-review/SKILL.md) | “Inspect the final video and GIF, compare the previous run, and report anything that needs attention.” |
95
+
96
+ For a refresh or review, include the demo's configuration and the exact previous
97
+ run, or the native capture recipe and previous media. See the
98
+ [copyable follow-up prompts](https://github.com/mumit/reshoot/blob/main/guide/agent-quickstart.md#update-the-demo-when-the-app-changes).
99
+
100
+ Browser projects keep actions, captions and expected results in editable files.
101
+ Result checks can verify that a saved item appears or that a search returns one
102
+ match. When a control moves or a label changes, the agent can repair the story
103
+ and record a new candidate. Watch and approve the new exports before sharing.
104
+
105
+ ## Install the skills
106
+
107
+ Use the first-demo prompt above to let the agent handle setup, or install the
108
+ tools and skills yourself. The skills need the reshoot CLI, Python 3.11+, Git,
109
+ ffmpeg and, for browser recording, Chrome or Chromium. Linux text scanning also
110
+ needs Tesseract. Follow the [platform setup](https://github.com/mumit/reshoot/blob/main/guide/install.md), then choose one
111
+ installation route.
112
+
113
+ ### Codex
114
+
115
+ Run this in the app repository or demo work folder:
116
+
117
+ ```bash
118
+ reshoot skills codex --directory .
119
+ ```
120
+
121
+ This installs `reshoot-demo`, `reshoot-refresh` and `reshoot-review` into
122
+ `.agents/skills/`. In Codex, invoke a skill and describe the task:
123
+
124
+ ```text
125
+ $reshoot-demo
126
+ Create a short demo of saving a task and finding it by search.
127
+ Produce an MP4 and a README GIF using synthetic data.
128
+ ```
129
+
130
+ ### Claude Code
131
+
132
+ Run this in the app repository or demo work folder:
133
+
134
+ ```bash
135
+ reshoot skills claude --directory .
136
+ ```
137
+
138
+ This installs the same three skills into `.claude/skills/`. In Claude Code:
139
+
140
+ ```text
141
+ /reshoot-demo
142
+ Create a short demo of saving a task and finding it by search.
143
+ Produce an MP4 and a README GIF using synthetic data.
144
+ ```
145
+
146
+ ### Claude Code plugin
147
+
148
+ To install all ten skills through Claude Code's plugin system, run these
149
+ commands inside Claude Code and follow its installation prompts:
150
+
151
+ ```text
152
+ /plugin marketplace add mumit/reshoot
153
+ /plugin install reshoot@reshoot
154
+ ```
155
+
156
+ Use `/reshoot:reshoot-demo`, `/reshoot:reshoot-refresh` or
157
+ `/reshoot:reshoot-review`, followed by the task. The plugin includes seven
158
+ supporting skills for planning, individual recordings, editing, privacy checks
159
+ and CI. Install the CLI and recording dependencies as well.
160
+
161
+ The [agent quickstart](https://github.com/mumit/reshoot/blob/main/guide/agent-quickstart.md#install-the-skills-yourself)
162
+ covers skill discovery and the differences between these routes. The CLI
163
+ installer preserves existing skill folders; compare updates before replacing
164
+ local changes.
165
+
166
+ ## Keep the demo with the code
167
+
168
+ Reshoot records real interactions with the app. The demo project describes
169
+ what to do, what should happen, how long the result should remain visible and
170
+ which formats to export.
171
+
172
+ | Keep in a browser project | Purpose |
173
+ |---|---|
174
+ | `BRIEF.md` | Audience, task, visible result and destination |
175
+ | `storyboard.toml` | Actions, captions and expected results |
176
+ | `edit.toml` | Cuts, result holds and output formats |
177
+ | `reshoot.toml` | App startup, recording and check settings |
178
+
179
+ Each versioned browser or terminal candidate retains its report, video, GIF and
180
+ review evidence under `takes/runs/ID/`. Keep the recording source in version control and generated
181
+ takes outside it. Select an explicit baseline when comparing updates.
182
+
183
+ Native demos keep their capture instructions and edit script separately; see
184
+ the [macOS window workflow](https://github.com/mumit/reshoot/blob/main/guide/macos-window.md).
185
+ Use the [CI workflow](https://github.com/mumit/reshoot/blob/main/guide/ci.md) to record browser and terminal candidates after
186
+ app changes. Review the outputs before updating published demo media.
187
+
188
+ ## Choose the recording for the task
189
+
190
+ | Show | Tools |
191
+ |---|---|
192
+ | A web app | Headless Chrome, native browser actions, cursor, typing and captions |
193
+ | A CLI or an agent at work | [VHS](https://github.com/charmbracelet/vhs) terminal recordings |
194
+ | A native app on macOS | One window captured by its ID; app-specific automation or manual interaction |
195
+ | The result in different formats | MP4 and GIF exports, custom edits and intentional portrait crops |
196
+ | A narrated explanation | Optional voiceover, music and subtitles |
197
+
198
+ Use synthetic demo data. Capture a browser page, a terminal or one app window.
199
+ Watch the finished exports and inspect the scan sheets. Automatic checks flag
200
+ potential problems; you make the final review decisions. Reshoot keeps
201
+ publication manual.
202
+
203
+ Browser workflows are tested on macOS and Linux. Native window capture and
204
+ Vision face/person detection require macOS; Linux uses Tesseract for text.
205
+ See [platforms and tested limits](https://github.com/mumit/reshoot/blob/main/guide/README.md#platforms).
206
+
207
+ ## Use the CLI directly
208
+
209
+ Start with the bundled notes app to try the tools without a coding agent:
210
+
211
+ ```bash
212
+ reshoot init demo
213
+ reshoot doctor --config demo/reshoot.toml
214
+ reshoot preview demo/reshoot.toml
215
+ reshoot run demo/reshoot.toml
216
+ ```
217
+
218
+ The [CLI tutorial](https://github.com/mumit/reshoot/blob/main/guide/step-by-step.md) covers the complete first recording,
219
+ an app change, a deliberate failure, repair, comparison, review and export.
220
+ For your own app, `reshoot init demo --url http://localhost:3000/` creates a
221
+ project draft. Replace its placeholder story with actions and result checks
222
+ using the [own-app walkthrough](https://github.com/mumit/reshoot/blob/main/guide/your-app.md).
223
+
224
+ ## Grow the demo at your own pace
225
+
226
+ | Stage | Start here |
227
+ |---|---|
228
+ | 1. Get a first recording | [One agent prompt](https://github.com/mumit/reshoot/blob/main/guide/agent-quickstart.md), or the [CLI notes tutorial](https://github.com/mumit/reshoot/blob/main/guide/step-by-step.md) |
229
+ | 2. See what else is possible | [Explore features and examples](https://github.com/mumit/reshoot/blob/main/guide/features.md) |
230
+ | 3. Change something small | [Edit a caption, timing and GIF size](https://github.com/mumit/reshoot/blob/main/guide/customize.md) |
231
+ | 4. Make a fuller demo or tutorial | [Build the story and edit](https://github.com/mumit/reshoot/blob/main/guide/make-demo.md) |
232
+ | 5. Keep it current and share it | [Updates and publishing](https://github.com/mumit/reshoot/blob/main/guide/publish.md), then [GitHub Actions](https://github.com/mumit/reshoot/blob/main/guide/ci.md) |
233
+
234
+ Start from [source code](https://github.com/mumit/reshoot/blob/main/guide/your-app.md), a [running web URL](https://github.com/mumit/reshoot/blob/main/guide/running-web-app.md)
235
+ or a [macOS app window](https://github.com/mumit/reshoot/blob/main/guide/macos-window.md). Skip directly to the stage you need.
236
+
237
+ ## Find the right guide
238
+
239
+ | Task | Start here |
240
+ |---|---|
241
+ | Get a first demo with an agent | [Agent quickstart](https://github.com/mumit/reshoot/blob/main/guide/agent-quickstart.md) |
242
+ | Browse the skill package | [Skill catalog](https://github.com/mumit/reshoot/blob/main/skills/README.md) |
243
+ | Install or upgrade the tools | [Installation](https://github.com/mumit/reshoot/blob/main/guide/install.md) |
244
+ | Learn the CLI workflow from scratch | [Notes tutorial](https://github.com/mumit/reshoot/blob/main/guide/step-by-step.md) |
245
+ | Write a story for an existing app | [Own-app walkthrough](https://github.com/mumit/reshoot/blob/main/guide/your-app.md) |
246
+ | Look up actions, captions, edits and exports | [Project reference](https://github.com/mumit/reshoot/blob/main/guide/projects.md) |
247
+ | Find a command or fix a failed step | [Command map](https://github.com/mumit/reshoot/blob/main/guide/commands.md) · [Troubleshooting](https://github.com/mumit/reshoot/blob/main/guide/troubleshooting.md) |
248
+ | Record a terminal or native window | [Manual workflow](https://github.com/mumit/reshoot/blob/main/guide/manual.md) |
249
+ | Reproduce the README demo | [Before-and-after recipe](https://github.com/mumit/reshoot/blob/main/examples/promo/README.md) |
250
+
251
+ ## Why reshoot exists
252
+
253
+ I made the launch video for [photosearch](https://github.com/mumit/photosearch)
254
+ this way, and pulled the tools and what I learned into reshoot. A demo takes
255
+ work to make. Keeping its story beside the app makes that work useful again
256
+ when the product changes.
257
+
258
+ The [original notes recording](https://github.com/mumit/reshoot/blob/main/docs/demo/notes.mp4) and its
259
+ [source files](https://github.com/mumit/reshoot/blob/main/examples/notes/) remain available.
260
+
261
+ ## Contributing
262
+
263
+ New pitfalls, skills and fixes are welcome. See [CONTRIBUTING.md](https://github.com/mumit/reshoot/blob/main/CONTRIBUTING.md)
264
+ for contribution instructions and [ROADMAP.md](https://github.com/mumit/reshoot/blob/main/ROADMAP.md) for planned work.
265
+
266
+ ## License
267
+
268
+ MIT. See [LICENSE](https://github.com/mumit/reshoot/blob/main/LICENSE).
@@ -0,0 +1,239 @@
1
+ # reshoot
2
+
3
+ **Give your agent a task. Get a demo you can run again.**
4
+
5
+ An agent-first toolkit for software demos: open source skills and recording
6
+ tools for Codex and Claude Code. Turn a task in your app into a captioned MP4,
7
+ a README GIF, and source files that keep the demo repeatable as the app changes.
8
+
9
+ ![The same notes task recorded before and after a UI update, using one reshoot storyboard](docs/demo/reshoot.gif)
10
+
11
+ The UI changed. The same story still saves and finds the same note.
12
+ [Watch the 21-second demo](docs/demo/reshoot.mp4) ·
13
+ [Make a demo of your app](guide/agent-quickstart.md) ·
14
+ [Explore the skills](skills/README.md) · [Use the CLI](guide/step-by-step.md)
15
+
16
+ ## Make a demo of your app
17
+
18
+ Open **Codex or Claude Code** in your app's repository, or an empty demo folder
19
+ if you only have a running app. Paste this prompt. Change `Target:` to your
20
+ web app's URL or the name of a macOS app and its demo window when needed.
21
+
22
+ ```text
23
+ Make a short demo with reshoot.
24
+ Read https://github.com/mumit/reshoot/blob/main/guide/agent-quickstart.md
25
+ and follow its setup and creation workflow.
26
+
27
+ Target: the app in this repository.
28
+ Choose one useful task with a clear visible result. Use synthetic demo data.
29
+ Produce a short captioned MP4 and a README GIF. Keep the recording source in
30
+ demo/ so it can be updated later.
31
+
32
+ Inspect a preview, then record a fresh final and open both exports for review.
33
+ Ask only for permissions or missing details needed to proceed.
34
+ ```
35
+
36
+ Add a task if you have one: “Show creating a project and finding it by search.”
37
+ Otherwise, let the agent inspect the app and propose a useful task. Source code
38
+ is optional. Browser recording runs on macOS or Linux; native window capture
39
+ requires macOS and app-specific automation or your interaction during capture.
40
+ The agent needs a local session with a shell and access to the target.
41
+
42
+ The agent handles setup, reads the app's controls, writes the story, records a
43
+ preview and prepares the final exports. You watch the result, request changes
44
+ and decide whether to share it. Initial setup may need installation permissions
45
+ or an isolated demo login.
46
+
47
+ **You get a video, a GIF, and their source.** Keep the `demo/` recipe beside the
48
+ app's code or in its own folder. Browser projects retain each attempt in a
49
+ versioned run folder. Native recipes retain standalone takes and edit scripts.
50
+
51
+ Already installed the skills? Start with `$reshoot-demo` in Codex or
52
+ `/reshoot-demo` in Claude Code, followed by the task.
53
+
54
+ ## Three skills, one workflow
55
+
56
+ A skill gives the coding agent a reusable workflow: how to choose the task,
57
+ record it, check the result and present it for review. Reshoot's CLI performs
58
+ the recording and editing. The agent uses available source code or the running
59
+ app's controls to adapt that workflow to the product.
60
+
61
+ | When | Skill | What to ask for |
62
+ |---|---|---|
63
+ | Make the first demo | [reshoot-demo](skills/reshoot-demo/SKILL.md) | “Show a customer saving a search and seeing its results.” |
64
+ | The app changed | [reshoot-refresh](skills/reshoot-refresh/SKILL.md) | “Record that task again with the updated UI. Keep the old take for comparison.” |
65
+ | Check before sharing | [reshoot-review](skills/reshoot-review/SKILL.md) | “Inspect the final video and GIF, compare the previous run, and report anything that needs attention.” |
66
+
67
+ For a refresh or review, include the demo's configuration and the exact previous
68
+ run, or the native capture recipe and previous media. See the
69
+ [copyable follow-up prompts](guide/agent-quickstart.md#update-the-demo-when-the-app-changes).
70
+
71
+ Browser projects keep actions, captions and expected results in editable files.
72
+ Result checks can verify that a saved item appears or that a search returns one
73
+ match. When a control moves or a label changes, the agent can repair the story
74
+ and record a new candidate. Watch and approve the new exports before sharing.
75
+
76
+ ## Install the skills
77
+
78
+ Use the first-demo prompt above to let the agent handle setup, or install the
79
+ tools and skills yourself. The skills need the reshoot CLI, Python 3.11+, Git,
80
+ ffmpeg and, for browser recording, Chrome or Chromium. Linux text scanning also
81
+ needs Tesseract. Follow the [platform setup](guide/install.md), then choose one
82
+ installation route.
83
+
84
+ ### Codex
85
+
86
+ Run this in the app repository or demo work folder:
87
+
88
+ ```bash
89
+ reshoot skills codex --directory .
90
+ ```
91
+
92
+ This installs `reshoot-demo`, `reshoot-refresh` and `reshoot-review` into
93
+ `.agents/skills/`. In Codex, invoke a skill and describe the task:
94
+
95
+ ```text
96
+ $reshoot-demo
97
+ Create a short demo of saving a task and finding it by search.
98
+ Produce an MP4 and a README GIF using synthetic data.
99
+ ```
100
+
101
+ ### Claude Code
102
+
103
+ Run this in the app repository or demo work folder:
104
+
105
+ ```bash
106
+ reshoot skills claude --directory .
107
+ ```
108
+
109
+ This installs the same three skills into `.claude/skills/`. In Claude Code:
110
+
111
+ ```text
112
+ /reshoot-demo
113
+ Create a short demo of saving a task and finding it by search.
114
+ Produce an MP4 and a README GIF using synthetic data.
115
+ ```
116
+
117
+ ### Claude Code plugin
118
+
119
+ To install all ten skills through Claude Code's plugin system, run these
120
+ commands inside Claude Code and follow its installation prompts:
121
+
122
+ ```text
123
+ /plugin marketplace add mumit/reshoot
124
+ /plugin install reshoot@reshoot
125
+ ```
126
+
127
+ Use `/reshoot:reshoot-demo`, `/reshoot:reshoot-refresh` or
128
+ `/reshoot:reshoot-review`, followed by the task. The plugin includes seven
129
+ supporting skills for planning, individual recordings, editing, privacy checks
130
+ and CI. Install the CLI and recording dependencies as well.
131
+
132
+ The [agent quickstart](guide/agent-quickstart.md#install-the-skills-yourself)
133
+ covers skill discovery and the differences between these routes. The CLI
134
+ installer preserves existing skill folders; compare updates before replacing
135
+ local changes.
136
+
137
+ ## Keep the demo with the code
138
+
139
+ Reshoot records real interactions with the app. The demo project describes
140
+ what to do, what should happen, how long the result should remain visible and
141
+ which formats to export.
142
+
143
+ | Keep in a browser project | Purpose |
144
+ |---|---|
145
+ | `BRIEF.md` | Audience, task, visible result and destination |
146
+ | `storyboard.toml` | Actions, captions and expected results |
147
+ | `edit.toml` | Cuts, result holds and output formats |
148
+ | `reshoot.toml` | App startup, recording and check settings |
149
+
150
+ Each versioned browser or terminal candidate retains its report, video, GIF and
151
+ review evidence under `takes/runs/ID/`. Keep the recording source in version control and generated
152
+ takes outside it. Select an explicit baseline when comparing updates.
153
+
154
+ Native demos keep their capture instructions and edit script separately; see
155
+ the [macOS window workflow](guide/macos-window.md).
156
+ Use the [CI workflow](guide/ci.md) to record browser and terminal candidates after
157
+ app changes. Review the outputs before updating published demo media.
158
+
159
+ ## Choose the recording for the task
160
+
161
+ | Show | Tools |
162
+ |---|---|
163
+ | A web app | Headless Chrome, native browser actions, cursor, typing and captions |
164
+ | A CLI or an agent at work | [VHS](https://github.com/charmbracelet/vhs) terminal recordings |
165
+ | A native app on macOS | One window captured by its ID; app-specific automation or manual interaction |
166
+ | The result in different formats | MP4 and GIF exports, custom edits and intentional portrait crops |
167
+ | A narrated explanation | Optional voiceover, music and subtitles |
168
+
169
+ Use synthetic demo data. Capture a browser page, a terminal or one app window.
170
+ Watch the finished exports and inspect the scan sheets. Automatic checks flag
171
+ potential problems; you make the final review decisions. Reshoot keeps
172
+ publication manual.
173
+
174
+ Browser workflows are tested on macOS and Linux. Native window capture and
175
+ Vision face/person detection require macOS; Linux uses Tesseract for text.
176
+ See [platforms and tested limits](guide/README.md#platforms).
177
+
178
+ ## Use the CLI directly
179
+
180
+ Start with the bundled notes app to try the tools without a coding agent:
181
+
182
+ ```bash
183
+ reshoot init demo
184
+ reshoot doctor --config demo/reshoot.toml
185
+ reshoot preview demo/reshoot.toml
186
+ reshoot run demo/reshoot.toml
187
+ ```
188
+
189
+ The [CLI tutorial](guide/step-by-step.md) covers the complete first recording,
190
+ an app change, a deliberate failure, repair, comparison, review and export.
191
+ For your own app, `reshoot init demo --url http://localhost:3000/` creates a
192
+ project draft. Replace its placeholder story with actions and result checks
193
+ using the [own-app walkthrough](guide/your-app.md).
194
+
195
+ ## Grow the demo at your own pace
196
+
197
+ | Stage | Start here |
198
+ |---|---|
199
+ | 1. Get a first recording | [One agent prompt](guide/agent-quickstart.md), or the [CLI notes tutorial](guide/step-by-step.md) |
200
+ | 2. See what else is possible | [Explore features and examples](guide/features.md) |
201
+ | 3. Change something small | [Edit a caption, timing and GIF size](guide/customize.md) |
202
+ | 4. Make a fuller demo or tutorial | [Build the story and edit](guide/make-demo.md) |
203
+ | 5. Keep it current and share it | [Updates and publishing](guide/publish.md), then [GitHub Actions](guide/ci.md) |
204
+
205
+ Start from [source code](guide/your-app.md), a [running web URL](guide/running-web-app.md)
206
+ or a [macOS app window](guide/macos-window.md). Skip directly to the stage you need.
207
+
208
+ ## Find the right guide
209
+
210
+ | Task | Start here |
211
+ |---|---|
212
+ | Get a first demo with an agent | [Agent quickstart](guide/agent-quickstart.md) |
213
+ | Browse the skill package | [Skill catalog](skills/README.md) |
214
+ | Install or upgrade the tools | [Installation](guide/install.md) |
215
+ | Learn the CLI workflow from scratch | [Notes tutorial](guide/step-by-step.md) |
216
+ | Write a story for an existing app | [Own-app walkthrough](guide/your-app.md) |
217
+ | Look up actions, captions, edits and exports | [Project reference](guide/projects.md) |
218
+ | Find a command or fix a failed step | [Command map](guide/commands.md) · [Troubleshooting](guide/troubleshooting.md) |
219
+ | Record a terminal or native window | [Manual workflow](guide/manual.md) |
220
+ | Reproduce the README demo | [Before-and-after recipe](examples/promo/README.md) |
221
+
222
+ ## Why reshoot exists
223
+
224
+ I made the launch video for [photosearch](https://github.com/mumit/photosearch)
225
+ this way, and pulled the tools and what I learned into reshoot. A demo takes
226
+ work to make. Keeping its story beside the app makes that work useful again
227
+ when the product changes.
228
+
229
+ The [original notes recording](docs/demo/notes.mp4) and its
230
+ [source files](examples/notes/) remain available.
231
+
232
+ ## Contributing
233
+
234
+ New pitfalls, skills and fixes are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md)
235
+ for contribution instructions and [ROADMAP.md](ROADMAP.md) for planned work.
236
+
237
+ ## License
238
+
239
+ MIT. See [LICENSE](LICENSE).
@@ -0,0 +1,23 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>About Notes</title>
7
+ <style>
8
+ :root { color-scheme: light dark; --bg: #f6f4f0; --fg: #1d1b18; --muted: #77716a; --accent: #c8641e; }
9
+ @media (prefers-color-scheme: dark) { :root { --bg: #0e0d0c; --fg: #f1ede7; --muted: #a39b91; --accent: #f5b43c; } }
10
+ body { margin: 0; background: var(--bg); color: var(--fg); font: 17px/1.45 -apple-system, system-ui, sans-serif; }
11
+ main { max-width: 760px; margin: 0 auto; padding: 48px 16px; }
12
+ h1 { margin: 0 0 16px; font-size: 34px; letter-spacing: -.02em; }
13
+ a { color: var(--accent); }
14
+ </style>
15
+ </head>
16
+ <body>
17
+ <main>
18
+ <h1>About Notes</h1>
19
+ <p>A made-up app for trying reshoot. This second page is here so a storyboard can follow a link to a new page.</p>
20
+ <p><a id="back" href="index.html">Back to notes</a></p>
21
+ </main>
22
+ </body>
23
+ </html>