Repository navigation
Added
/teamwright:update— the plugin and the project's kit in one step. A plugin update alone changed nothing in the project: the hooks, roles, process docs and scripts there are the kitapplywrote, and the owner had to find the new copy and run the installer from it.tw-install.py updateupdates the marketplace and the plugin for the project's channel (teamwright@teamwright, orteamwright@teamwright-nextwhen the project enables it) throughclaude plugin, finds the copy Claude Code installed for this project (installed_plugins.json: this project's install, else local, else the user's), and runsplan— or, with--apply,apply— from that copy, not from the one the session loaded;--no-fetchskips the plugin update. The command shows the plan, applies on the owner's yes, commits the kit files and says to restart Claude Code. Tests intests/test-tw-update.sh.
Fixed
- A worktree is no longer held by another task's
IN_PROGRESS. The rule "one taskIN_PROGRESSper working tree" counted every record on the branch, and a branch cut from main carries the other tasks' records as they were: one taskIN_PROGRESSin the main tree made everytw/<ID>worktree whose task had finished its analysis wait for it (wip_waiting) and endidle- with/teamwright:parallel auto, every worktree at once. In a per-task worktree the rule, and the "uncommitted changes belong to one active task" check, now look at the worktree's own task only; the main tree is unchanged. Tests intests/test-tw-worktrees.sh.
Security
/teamwright:parallel autosessions may not push, merge or callgh: the defaultTEAMWRIGHT_CLAUDE_ARGSadd--disallowedTools "Bash(git push:*) Bash(git merge:*) Bash(gh:*)"; merging stays with the main session./teamwright:parallelpre-approvesgit -C <path> rebaseonly, not anygit -Corgit rebasecommand.SECURITY.mdlists what runs without a prompt: the commands skills pre-approve, the project config that runs as code (config.yml,progress.json), headless parallel sessions, autonomous CI runs.- CI: actions pinned by commit SHA, the gitleaks download checked against its SHA-256, and a check that no name from the
PRIVATE_NAMES_REsecret appears in the tree or recent commit messages. The autonomous-run example indocs/usage.mdpins its actions too and warns that task records and issues are model input.
Changed
/teamwright:updateandtw-parallel.pyuse one variable for the Claude Code binary,TW_CLAUDE.- Documentation brought up to date: the command and hook counts and lists (README,
docs/README.md,CLAUDE.md,CONTRIBUTING.md),parallel autoin the commands table, the process settings in the glossary anddocs/usage.md, requirements and/reload-pluginsin the quickstart,stage-protocol.mdin the reading order, the project status, thetw-parallel.pyvariables indocs/process/plugin.md; this changelog states its format.
Full changelog: CHANGELOG.md