reel-driven-development
Reel Driven Development (RDD) - turn recorded user walks (reels) into domain stories and outcome objects
| PyPi | |
| GitHub | |
| Code | |
| Docs |
Demo
See a reel for yourself: the GenWiki demo reel (7 hops) on rdd.bitplan.com - true inspection mode, your verdicts stay on your device. Reviewers get a link by mail - no account, no password.
Installation
pip install reel-driven-development
or isolated with pipx:
pipx install reel-driven-development
Both put the rdd command and the tool entry points on the PATH.
Documentation
Authors
Reel Driven Development
A reel is a recorded user walk - e.g. a screen-share demo where a domain expert walks through a system while talking. RDD treats the reel as a graph walk:
- every context switch (page, browser tab, application) and every relevant interaction (submenu, filter, zoom, sort) is a hop
- the narrative drives the sampling, never the clock
- every hop gets an evidence frame (screenshot) or a proven-absent note
- findings become outcome objects: a frustration spoken during a walk becomes a bug report, which is an acceptance criterion, which is an example
HopDetection was the first step - issue #1; the requirements epic is issue #7.
rdd - the one command name
rdd dispatches to the tools of the pipeline, so a user has to know
one name - the name of what we do:
| subcommand | tool | purpose |
|---|---|---|
rdd detect |
hopdetect |
find the hops of a reel and capture the evidence frames |
rdd doc |
reeldoc |
generate the reel document from a Recording |
rdd review |
reelreview |
serve one reel folder for review |
rdd site |
reelsite |
serve the reel site; --init initializes it, --mint mints a review token |
rdd without a subcommand lists them; the tool names stay available as
entry points of their own.
rdd detect flags
| flag | meaning | default | change it when |
|---|---|---|---|
--detector |
the detector to find the hops with, by name | Content |
comparing detectors, or one detector misses hops on this material |
--start |
segment start (seconds or MM:SS) | 0 | processing a part of the reel |
--end |
segment end (seconds or MM:SS) | video duration | processing a part of the reel |
--out |
output directory for the evidence frames, hops.yaml and config.yaml |
hops |
keeping several hop sets apart |
--progress |
show the progress bar of the running detection | off | a run over a long reel must not be silent (issue #6) |
rdd detect --help lists these together with the standard options of
pybasemkit.
Detectors
Hop candidates come from the detectors of PySceneDetect, which benchmarks them.
Each detector is on offer at its library default and at half and double its
threshold. ThresholdDetector is not on offer: it detects fades to a
near-black level.
Cuts found on examples/recordings/genwiki-walk - 1501 frames, 60 s, about 1.4 s per run:
| detector | half | default | double |
|---|---|---|---|
| Adaptive | 32 | 15 | 11 |
| Content | 17 | 9 | 0 |
| Hash | 32 | 12 | 0 |
| Histogram | 13 | 10 | 7 |
Output
A run writes to --out:
hop-<hh>h<mm>m<ss>s[<ms>ms].jpg- the evidence frame of each hop, the full frame as recorded, named by its time offset so curation never renames a surviving frame (issue #21)hops.yaml- the hop records, whose field names are the property names of Concept:HopContent;node,urlandsummarystay empty because they come from the transcript and are never guessed from the pictureconfig.yaml- the values that decided this hop set, so a run can be repeated from its own output (issue #4)
Example: GenWiki walk
rdd detect examples/recordings/genwiki-walk/genwiki-walk.mp4 --detector Content --out hops
genwiki-walk.mp4: 9 hops from Content over 1501 frames -> hops
Raw results of an earlier run in examples/recordings/genwiki-walk.
Known gaps
Metadata
Release files for reel-driven-development 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| reel_driven_development-0.0.2.tar.gz | 2.8 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| reel_driven_development-0.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.9 MB
Release files / reel_driven_development-0.0.2.tar.gz
| Download URL | reel_driven_development-0.0.2.tar.gz |
|---|---|
| Size | 2.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5bfd6fca4fe00cbf268d182fff5b69e06270019b46c3ff12976a3e03fda6c56f
|
|
BLAKE2b-256 checksum How to use checksums |
df941bf17dfa20c0048a7e10a24a9745ca9e54cb01b610aac1c5b363c8e8d36e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 14, 2026.
Transparency logRelease files / reel_driven_development-0.0.2-py3-none-any.whl
| Download URL | reel_driven_development-0.0.2-py3-none-any.whl |
|---|---|
| Size | 69.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
640e74854617c27c7cff0d7f44d9b065e52f03fc3157572bc66e8b739d0f4b71
|
|
BLAKE2b-256 checksum How to use checksums |
d193d33cd98ecffc3634ee98757e23047879eab1ad9f2d1dd144c90cb315e558
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 14, 2026.
Transparency log