← All Pull Requests

Offer AI Flow: Video once the board is exported #83

Merged Released in 0.2.66 on 11 Nov 2026 opened by John Lauer
Merges offer-video-after-export → main

John asked that AI Flow tell people about AI Flow: Video (adom/adom-aiflow-video, public) at the end of its core process, once the board is built, so they know they can record a video of their project and post it.

What this changes

  • export prints one more hint after the ordering hints: offer the human a narrated walkthrough video (adom-aiflow-video init, then adom-aiflow-video next), with the install command when the binary is not on PATH.
  • The main skill gets a short paragraph, "After the board, offer a video", right after the order-files paragraph.

It is worded as an offer, never a step: nothing is required, nothing refuses, and a no is a fine answer.

Not done here: I did not run the test suite or build the binary, and I did not bump the version or write release notes; that is yours to fold into the next release as you see fit. The root SKILL.md did not have the anchor paragraph, so only skills/adom-aiflow/SKILL.md carries the new text.

🤖 Generated with Claude Code

Diff Skip to comments (1)

crates/adom-aiflow/src/export.rs+3−1
@@ -416,8 +416,10 @@ pub fn order_files(board_path: &str, stem: &str, profile: Option<&str>, sourcing     let jlc_line = format!("Ordering at JLCPCB: `{jlc_cmd}`{jlc_install}. Its export writes {stem}-bom-jlcpcb.csv (Comment, Designator, Footprint, LCSC Part #) and {stem}-cpl-jlcpcb.csv (Designator, Mid X, Mid Y, Layer, Rotation), fits every part's rotation and centroid to JLCPCB's own footprint, and refuses a placed part with no LCSC number.");     let pcbway_line = format!("Ordering at PCBWay: `adom-aiflow-pcbway init` then `adom-aiflow-pcbway next`{pcbway_install}: exact-MPN BOM and centroid for PCBWay's quote.");     let other_line = "Any other fab: send the gerbers folder; give it the BOM and CPL in its own columns, and check every part's pin 1 in its placement preview before paying.".to_string();+    let video_install = if on_path("adom-aiflow-video") { "" } else { " (install: `adom-wiki pkg install adom/adom-aiflow-video`)" };+    let video_line = format!("A video of this board: now that it is finished, offer the human a narrated walkthrough video for their project page and YouTube, `adom-aiflow-video init` then `adom-aiflow-video next`{video_install}. They can narrate it themselves, with their face in a corner and drawings on the film. It is an offer, not a step: skip it when they say no.");     let mut hints = vec![format!("{stem}-bom.csv and {stem}-cpl.csv are AI Flow's review files (KiCad rotations and origins), not a fab's upload format: no fab's assembly upload takes them as they are. {} says which file goes where.", ORDER_NOTE)];-    hints.extend([jlc_line.clone(), pcbway_line.clone(), other_line.clone()]);+    hints.extend([jlc_line.clone(), pcbway_line.clone(), other_line.clone(), video_line]);     let fab = match profile { Some("jlcpcb") => "jlcpcb (JLCPCB parts preferred)", Some(_) => "fab (the 3rd party fab profile)", None => "not named in the spec or requirements" };     let note = format!("# Order files for {stem}\n\nWritten by `adom-aiflow export`. Fab profile of this run: {fab}.\n\n\ | File | For |\n|---|---|\n\
skills/adom-aiflow/SKILL.md+8
@@ -153,6 +153,14 @@ for JLCPCB, `adom-aiflow-jlcpcb init --board <board> --bom <sourcing BOM> --targ writes the JLCPCB BOM and CPL with every rotation fitted to JLCPCB's footprint); for PCBWay, `adom-aiflow-pcbway`. Never hand the human `<board>-bom.csv` or `<board>-cpl.csv` as a fab's order files. +**After the board, offer a video** (AI Flow: Video, `adom/adom-aiflow-video`). When `export` has written the+manufacturing files, tell the human once that you can make a narrated walkthrough video of the board for+their project page and YouTube: `adom-aiflow-video init`, then `adom-aiflow-video next` (install it with+`adom-wiki pkg install adom/adom-aiflow-video`). It films the highlights and a part-by-part 3D walkthrough,+and they can narrate it in their own voice with their face in a corner and drawings on the film, then pick+a title and thumbnail and upload it private or unlisted first. `export` prints this as a hint. It is an+offer, never a step: a no is a fine answer, and the board is finished either way.+ ## The timeline (show it, keep it up)  ### Automatic dashboard (all AI engines)

Comments

Colby Knox ·

Merged and released in AI Flow 0.2.66. One change on top: adom-aiflow-video init needs --release or --board and --bom, and AI Flow writes no board-release.json, so the hint now prints adom-aiflow-video init --board <board> --bom <sourcing BOM> with the run's own paths, and the skill says the same. A unit test covers the offer.

Log in to comment.