{"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.15","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.15","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.15","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.15 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"It is 8pm, you shipped all day, and you have posted nothing. This reads your git commits and your Claude Code or Codex transcripts from that day and writes one HTML page you open. Each topic gets an X draft and a LinkedIn draft, shown as they will look in the feed, with a copy button and an illustration of that work. Every number and path in a draft has to appear in the evidence or the draft is sent back for one rewrite. Names you list in redact_terms are cut out as the day is read, and a page still carrying one is refused. It never posts, and with writer=none it makes no model call.","distribution":{"digest":"sha256:4497256ab7f367e56d4593dfaa9ecafd7b1a671561e28db6b2439b6c1de2c2e0","mediaType":"application/vnd.modiqo.rote-flow","size":157899,"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.15","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.15","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/jaylabs/ship-recap@0.3.15.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":"never","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, and with writer=none it runs every step for free.","example":"sample","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. If it is missing or unreadable the play tries the usual code folders instead and says which one it used.","example":"~/work","input":{"allowCustom":true,"choices":[],"label":"Root"},"name":"root","required":false,"type":"string"},{"default":"today","description":"Which day to recap. today is a rolling 24 hours, yesterday and a date like 2026-09-01 are calendar days, and NNd covers the last N days.","example":"yesterday","input":{"allowCustom":true,"choices":[],"label":"Date"},"name":"date","required":false,"type":"string"},{"description":"Comma-separated patterns matched against repository and transcript PATHS. A match is skipped before it is read. For a name that appears inside prose rather than in a path, use redact_terms.","example":"client-, secret-side-project","input":{"allowCustom":true,"choices":[],"label":"Exclude"},"name":"exclude","required":false,"type":"string"},{"description":"Names, clients and projects that must never leave this machine. Unlike exclude, which matches paths, these are removed from prose as it is read, and a page still carrying one is refused.","example":"acme, northwind, project-atlas","input":{"allowCustom":true,"choices":[],"label":"Redact terms"},"name":"redact_terms","required":false,"type":"string"},{"default":"agent","description":"Which agent CLI writes the drafts, billed to that CLI's own account at roughly a dozen calls per run. agent takes the first of claude or codex that is installed and signed in; name one to pin it; none makes no model call at all.","example":"none","input":{"allowCustom":false,"choices":[{"label":"agent","value":"agent"},{"label":"claude","value":"claude"},{"label":"codex","value":"codex"},{"label":"none","value":"none"}],"label":"Writer"},"name":"writer","required":false,"type":"string","validValues":["agent","claude","codex","none"]},{"default":"3","description":"How many folder levels below root to search for repositories, 1 to 5.","example":"2","input":{"allowCustom":true,"choices":[],"label":"Max depth"},"name":"max_depth","required":false,"type":"string"},{"default":"3","description":"How many topics the page may carry, 1 to 3. Each topic costs one post call and one illustration call, so lowering this is the cheapest way to spend less.","example":"1","input":{"allowCustom":true,"choices":[],"label":"Max topics"},"name":"max_topics","required":false,"type":"string"},{"default":"false","description":"One topic on the mid-tier model, for a draft in a few minutes instead of a full run. The planner and the writer are measurably more literal.","example":"true","input":{"allowCustom":false,"choices":[{"label":"true","value":"true"},{"label":"false","value":"false"}],"label":"Fast"},"name":"fast","required":false,"type":"string","validValues":["true","false"]},{"default":"~/.rote/ship-recap","description":"Where the recap page is written, one file per day.","example":"~/Desktop/recaps","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.15 --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.15","headlessCommandTemplate":"rote play run https://play.modiqo.ai/jaylabs/ship-recap@0.3.15 <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.79.0"},"publishedAt":"2026-09-04T12:20:25.130026+00:00","reference":"jaylabs/ship-recap@0.3.15","requirements":{"adapters":[],"browser":{"dependencies":[],"runtime":false,"signIn":false},"localTools":["python3","git","claude","codex"],"roteCli":{"minimumVersion":"0.62.0"},"sessions":false},"resolution":"pinned","schema":"rote.play.v1","stats":{"downloads":1,"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.15","visibility":"public"}