soul-interview
Conduct a seven-question adaptive interview and turn the answers into Taskuary's SOUL.md. Use when creating or substantially…
Cut and publish a Taskuary release: freeze scope, bump the version in all seven places, run the fast local gates, rebuild the committed UI, push, wait for CI on that exact commit, then tag so the publish workflow uploads to PyPI. Use when asked to deploy, release, ship, publish,
$ npx -y skills add ldbumble/taskuary --skill deploy --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/deployContext preview
The summary Claude sees to decide when to auto-load this skill.
Cut and publish a Taskuary release: freeze scope, bump the version in all seven places, run the fast local gates, rebuild the committed UI, push, wait for CI on that exact commit, then tag so the publish workflow uploads to PyPI. Use when asked to deploy, release, ship, publish,
name: deploy
description: >
Ship Taskuary: land a fix on master, then release it to PyPI with one command (tools/release.sh). Use when asked to
deploy, release, ship, publish, push, "push to PyPI", cut a version, bump or tag. Encodes the fast loop the owner asked
for on 2026-10-27 ("it's been literally all day to pass one fix .. we need a better system").Two separate things, never mixed:
1. **A fix reaches the owner** when it is on `master` - the owner's app runs from the main checkout (the owner's own working copy of the repo, not a worktree), so a push + fast-forward + their restart is "shipped" for them. 2. **A release reaches PyPI** when `tools/release.sh X.Y.Z.W` finishes. That is the only way to tag.
`npm exec --yes --package=node@22 -- node --test "test/*.test.mjs"` (in `website/`) when `website/src` changed. Never the full suites locally - CI runs them on parallel machines. Never batch ten branches and integrate at the end: every merge re-runs everything, and a day goes.
`docs/site/*.md` or the tool catalog changed - CI's build-web job rejects a stale `site/docs`).
restart Taskuary (Python changed) or refresh (UI only).
every run slow and every timing test flaky.
From a clean, up-to-date checkout of master:
tools/release.sh 0.3.9.54
It bumps the seven version places (pyproject, both READMEs + their badge `asof=`, roadmap, docs manifest, the demo's three fixture fields), builds UI/demo/docs, runs the fast gates (node unit, eslint no-undef, version/docs/catalog/timewords pytest), commits, pushes, waits for `ci.yml` on **that exact commit**, prints failing tests, reruns failed jobs **once** (CI's slower machines flake on timing), tags only when green, waits for `publish.yml` (reruns once - the exe's signing download flakes), verifies PyPI + the GitHub release with `Taskuary.exe`, and fast-forwards the main checkout. Red twice -> it stops and names the tests: fix them on master, run it again with the **same** number (it was never tagged).
Run it in the background and report when it ends; do not babysit runs by hand.
run that mattered. Cancel only by a run id you read for that exact sha - or don't cancel; let stale runs finish.
`browser/shard.mjs <part> 6` with 20 minutes each; a new browser test file goes in `website/package.json` `test:browser`, and if a part creeps past ~14 minutes, add parts.
CI's macOS gets 1.25x time budgets (`CI` + darwin), local stays strict.
too (lost three overnight fixes once). Resolve the conflicted hunks only; `website/package.json`'s `test:browser` is the union.
`tools/release.sh` refuses a number already tagged.
⭐ Please star Taskuary if you find it helpful — it is how other people find it.
Conduct a seven-question adaptive interview and turn the answers into Taskuary's SOUL.md. Use when creating or substantially…
Walk the owner through setting Taskuary up - the AI brain, where work arrives, the operator documents, reports and workflows - by…