{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=jaylabs/ship-recap@0.3.4","method":"GET","rel":"https://rote.dev/rels/bootstrap-and-run","requiresConsent":true,"responseMediaType":"text/x-shellscript"},"inspect":{"command":"rote play inspect https://play.modiqo.ai/jaylabs/ship-recap@0.3.4","effect":"read-only"},"installCliOnly":{"effect":"installs the rote CLI, nothing else","href":"https://play.modiqo.ai/install","method":"GET","rel":"https://rote.dev/rels/install-cli","requiresConsent":true,"responseMediaType":"text/x-shellscript"},"run":{"command":"rote play run https://play.modiqo.ai/jaylabs/ship-recap@0.3.4","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/jaylabs/ship-recap@0.3.4 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"You've been heads-down building all day and haven't posted a word. Ship Recap reads your last 24 hours of commits and Claude Code or Codex transcripts, finds the moment worth telling, and drafts the X and LinkedIn posts with an illustration, on one page on your own machine. It never posts, and every filename and number in a draft traces back to something that happened.","distribution":{"digest":"sha256:d20b31f605ecddb576d8a5bca4ff99d01efb4af131c76aca2dcab46e7a045cf0","mediaType":"application/vnd.modiqo.rote-flow","size":214815,"verifiedBy":"rote verifies the downloaded archive against this digest before it runs"},"effects":{"credentialsProvidedBy":"runner","credentialsRemainLocal":true,"declaredWrites":[],"publisherReceivesCredentials":false},"id":"https://play.modiqo.ai/jaylabs/ship-recap@0.3.4","inputPolicy":{"optionalWithDefault":"show_default_and_accept_override","optionalWithoutDefault":"omit_unless_supplied","required":"ask","secrets":"collect_locally_outside_conversation"},"links":{"docs":"https://rote.dev","page":"https://play.modiqo.ai/jaylabs/ship-recap@0.3.4","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/jaylabs/ship-recap@0.3.4.json"},"name":"ship-recap","owner":{"kind":"org","slug":"jaylabs"},"parameters":[{"default":"auto","description":"Open the finished recap in your browser when the run ends (auto), or only print its path (never).","example":"auto","input":{"allowCustom":false,"choices":[{"label":"auto","value":"auto"},{"label":"never","value":"never"}],"label":"Open page"},"name":"open_page","required":false,"type":"string","validValues":["auto","never"]},{"default":"live","description":"live reads this machine's last 24 hours. sample runs the built-in example day, for a machine with nothing on it yet.","example":"live","input":{"allowCustom":false,"choices":[{"label":"live","value":"live"},{"label":"sample","value":"sample"}],"label":"Source"},"name":"source","required":false,"type":"string","validValues":["live","sample"]},{"default":"~/code","description":"The folder whose git repositories are read. Defaults to ~/code and falls back to ~/Documents if that does not exist.","example":"~/code","input":{"allowCustom":true,"choices":[],"label":"Root"},"name":"root","required":false,"type":"string"},{"default":"today","description":"Which day to recap: today, yesterday, NNd, or a date like 2026-09-01. Always the 24 hours ending then.","example":"today","input":{"allowCustom":true,"choices":[],"label":"Date"},"name":"date","required":false,"type":"string"},{"description":"Comma-separated patterns for work that must never appear. Matching repositories and transcripts are skipped before they are read.","example":"client-, secret-side-project","input":{"allowCustom":true,"choices":[],"label":"Exclude"},"name":"exclude","required":false,"type":"string"},{"default":"agent","description":"Which agent CLI reads the day and writes the drafts. agent takes the first of claude, codex or gemini that is installed and signed in; name one to pin it; none makes no model call at all.","example":"agent","input":{"allowCustom":false,"choices":[{"label":"agent","value":"agent"},{"label":"claude","value":"claude"},{"label":"codex","value":"codex"},{"label":"gemini","value":"gemini"},{"label":"none","value":"none"}],"label":"Writer"},"name":"writer","required":false,"type":"string","validValues":["agent","claude","codex","gemini","none"]},{"default":"3","description":"How many folder levels below root to search for repositories, 1 to 5.","example":"3","input":{"allowCustom":true,"choices":[],"label":"Max depth"},"name":"max_depth","required":false,"type":"string"},{"default":"~/.rote/ship-recap","description":"Where the recap page is written, one file per day.","example":"~/.rote/ship-recap","input":{"allowCustom":true,"choices":[],"label":"Out dir"},"name":"out_dir","required":false,"type":"string"},{"description":"Your X or LinkedIn handle, shown on the preview cards.","example":"yourhandle","input":{"allowCustom":true,"choices":[],"label":"Handle"},"name":"handle","required":false,"type":"string"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/jaylabs/ship-recap@0.3.4 --json","effect":"read-only"},"step":1,"type":"inspect_local_readiness"},{"references":["/parameters"],"step":2,"type":"collect_parameters"},{"references":["/parameters","/requirements","/effects"],"step":3,"type":"review"},{"consentBoundary":"the user approves the exact play and parameter values","references":["/parameters","/requirements","/effects"],"step":4,"type":"obtain_run_consent"},{"action":{"command":"rote play run https://play.modiqo.ai/jaylabs/ship-recap@0.3.4","headlessCommandTemplate":"rote play run https://play.modiqo.ai/jaylabs/ship-recap@0.3.4 <name=value...> --yes"},"preservesAcquisitionBoundaries":["adapter_selection","oauth_dcr","google_discovery","static_token_setup","runtime_security_checks"],"requiresConsent":true,"step":5,"type":"run"}],"producedBy":{"roteVersion":"0.77.0"},"publishedAt":"2026-09-01T22:15:32.966955+00:00","reference":"jaylabs/ship-recap@0.3.4","requirements":{"adapters":[],"browser":{"dependencies":[],"runtime":false,"signIn":false},"localTools":["python3","git","claude","codex","gemini"],"roteCli":{"minimumVersion":"0.62.0"},"sessions":false},"resolution":"pinned","schema":"rote.play.v1","stats":{"downloads":3,"installs":0},"steps":{"count":9,"names":["digest_day","discover_activity","draw_art","find_angles","plan_day","read_sessions","render_page","validate_scope","write_post"]},"title":"ship-recap","type":"play","version":"0.3.4","visibility":"public"}