Repository navigation
Releases
Huddle v0.7.0
Changed
/huddle-updateupdates everything with one command (Issue #104). It updates the plugin (claude plugin marketplace update huddleandclaude plugin update huddle@huddle --scope project), refreshes the project's files in a worktree and branch of its own (huddle-update-<version>) with the new version's templates, asks only the pending questions, opens the PR, and ends by telling the person to type/reload-plugins(terminal and VS Code); «restart Claude Code» is the fallback. The person no longer switches branch or opens a terminal.newPluginRootinlib/core/update.mjsfinds the new version's folder.- Every text that said «open a new session» after installing or updating the plugin now says
/reload-plugins, with a restart as the fallback.
The first update to a version that has this skill is done the old way, because the installed /huddle-update is the old one; from then on it is one command. To update: claude plugin marketplace update huddle and claude plugin update huddle@huddle --scope project in each project (in VS Code: /plugins), then /reload-plugins, then /huddle-update.
Huddle v0.6.0
Changed
- Breaking:
/huddle-play <n>replaces/huddle-startand/huddle-continue(Issue #100). One command to work on an Issue: with no branch the session starts it (dependencies, branch in its own worktree, TDD, PR/MR), with a branch it continues it (huddle pending,huddle take, «Ready for review again»). A Design Issue keeps its own flow./huddle-startand/huddle-continueno longer exist: no alias, no deprecated copy. An Issue or a review comment written before this release that says/huddle-start <n>or/huddle-continue <n>will not work until it is edited to/huddle-play <n>. ThehuddleCLI, the labels and/huddle-watchare unchanged.
Fixed
huddle labelsno longer fails for the whole repo because of one «Depends on» line (Issue #99). A line now means the Issues it starts with (- #209 (migration 071, PR #407: …)depends on #209 only); a#Nin the note after them is ignored. A number that is not an Issue (a PR/MR, a typo, a deleted Issue) keeps the Issueblockedand prints one warning naming the Issue and the number; the other Issues still get their labels. A real failure (login, network, rate limit) still stops the run. Behaviour change: the run of numbers ends at the first word that is not «and», so- #12 and also #13loses #13: put one- #Nper line.
After updating, run /huddle-update on a branch in each repo, and edit any open Issue that says /huddle-start to say /huddle-play.
Huddle v0.5.3
Changed
- The Markdown guides, the
/huddle-setupskill and thehuddle setup,huddle doctorandhuddle updatemessages now give both install and update routes (Issue #96): the terminal commands for people who have theclaudecommand, and/plugins(Install for this project) for people who use only the VS Code extension, which puts noclaudecommand in the terminal and has no/plugin. They no longer send a VS Code-only person to a terminal. - The PDF guides and the website name the 0.5.x commands (Issue #94):
/huddle-updateand the per-project update steps (--scope project),/huddle-continue,/huddle-watchandhuddle queue, the daily notice (huddle notice) and the stop labels. They give the VS Code route too.
After updating, run /huddle-update on a branch in each repo.
Huddle v0.5.2
Added
huddle notice [--json](Issue #91): the «newer Huddle» notice from inside the skills, so it shows in VS Code too./huddle-start,
/huddle-continueand/huddle-updatebegin with it and say its text in the chat, in the person's language, then go on with the task.
It is read-only, needs no login, always exits 0 and keeps its own daily stamp (skillShownAt) apart from the hook'sshownAt.
Changed
- The update steps (notice,
huddle doctor, team guide) now sayclaude plugin update huddle@huddle --scope project: Huddle is
installed per project andclaude plugin listshows one entry per scope, so each project is updated on its own.
After updating, run /huddle-update on a branch in each repo.
Huddle v0.5.1
Added
huddle queue [--json]and/huddle-watch(Issue #88): the AI Manager's session checks every few minutes (default 5, from 2 to 60)
what waits for it and runs/huddle-reviewon each PR/MR that waits, which merges when all is good.huddle queueis read-only and
lists three cases from the platform data, not from label text: areview(open non-draft PR/MR, no request), adecision
(needs decision, nobody answered) and atriage(needs triage). The watch never answers decisions or triages bugs, never retries a
stopped review on the samehead, stops with/huddle-watch offor when Claude Code closes, and a recurring job expires after 7 days.
Turning it on is the AI Manager's order to review and merge. The platform adapters getreviewHead(n), the head commit sha of a PR/MR.
After updating the plugin, run /huddle-update on a branch in each repo.
Huddle v0.5.0
Added
-
/huddle-continue <n>(Issue #83): continues an Issue that was already started after the AI Manager answered it (a review or a decision).
It enters the Issue's worktree, takes the pending request and follows it, so the developer no longer copies the prompt by hand.
/huddle-start <n>now only starts (on an Issue that is already started it says so and continues it anyway, so old prompts keep working),
and the first line of the AI Manager's prompts saysFirst run /huddle-continue <n>. No new CLI command. -
huddle updateand/huddle-update(Issue #81): bring a repo that already has Huddle to the installed version in one step, and ask
only the questions a new release added.huddle.jsongetssetup_version; new questions come from a registry
(lib/setup/questions.mjs, empty in 0.4.x) and are never asked twice.huddle update [--check] [--dry-run] [--json] [--answer key=value]
needs no login and no network, changes nothing and exits 3 while a question is unanswered.huddle doctorhas asetupline, and the
update notice for the AI Manager now says/huddle-update.
Fixed
-
in progressandin reviewno longer sit next toneeds decisionorchanges requested from AI Manager(Issue #85). Those two are stop labels: while one is on, the labels job shows only it, and the usual status comes back by itself once the request is taken or the question is answered. A pending request now has no status label with or without an open PR. -
/huddle-setupno longer asks the initial questions again in a repo that already has a validhuddle.json(Issue #79). The skill
now readshuddle.jsonfirst: a valid file means a refresh that asks nothing (the block and the templates are updated, and the report
says what changed and which templates were kept because the project edited them); a missing or incomplete file is asked only for the
fields that are missing; a first install still asks all five. The CLI already worked this way; only the skill's text was wrong.
Huddle 0.4.2
[0.4.2] - 2026-11-11
Added
- Finished worktrees clean themselves (Issue #76). Every Issue's session works in a worktree in
.claude/worktrees/and nothing
removed them, so in a project with dependencies each one kept its ownnode_modulesuntil the disk was full. New command
huddle clean [--dry-run] [--no-fetch] [--quiet]removes a worktree only when all of this holds: it is under
<main worktree>/.claude/worktrees/, it is not the current or a locked one, nothing in it is uncommitted, its commit is
merged intoorigin/<default_branch>, and it has not been touched for 24 hours. It deletesnode_modulesfirst (with retries
for Windows file locks), thengit worktree removewithout--force, thengit worktree prune; the local branch stays.
The SessionStart hook starts it as a detached background process, so a slow delete never delays a session;"clean_worktrees": false
inhuddle.jsonturns that off. Git only (nogh/glab); squash merges are not detected, so those worktrees stay. Works on Windows,
macOS and Linux: paths are compared afterrealpath, case-insensitively on Windows and macOS. CI now runs on all three.
Design:docs/design.md§16.
Fixed
- The session no longer switches to English in a repo set up with Huddle (Issue #74). The block of
CLAUDE.mdnow has a
«Language» rule: chat in the developer's language (thelanguagekey of their~/.claude/settings.json, else the
language of their own words, never that of a pasted Issue prompt or of Huddle's output) and write everything in the repo
in English. The first-day guide tells each developer to setlanguageonce. Run/huddle-setupagain in each repo to
refresh the block.
Huddle 0.4.1
Fixed
- The progress Issue is updated again (Issue #69). Since 0.4.0 the labels job printed «Progress not updated: now.getTime
is not a function»: the realctx.now()returned milliseconds for the update notice, while progress expected a Date.
ctx.now()is now a Date everywhere, the update notice reads its milliseconds, and every test clock comes from one
fakeNowwith the real shape. A new test runs the real context fromlib/cli/main.mjs. - Setup no longer adds a second labels job (Issue #70). It finds the one a project already runs by what it does (a
workflow, or.gitlab-ci.ymland the local files it includes, that runshuddle labels), keeps it, and says so in its
notes. When that job pins an older Huddle inHUDDLE_REF(a tag, or a SHA with its tag in a comment), the notes say to
update it in a PR; a SHA without a tag gets a note to check it.
Huddle 0.4.0
Added
-
A notice when a newer Huddle exists, and auto-update (Issue #65). The SessionStart hook compares the installed version
(.claude-plugin/plugin.jsonin the plugin folder) with the latest GitHub release (releases/latest, unauthenticated,
3 s timeout, cached 24 h in Claude Code's data folder). When the release is newer (a pre-release never counts) it prints
one block, at most once a day, that tells the session to say it first in the person's language: the two commands, or
«pull your clone» when running with--plugin-dir, and the link to the release. The AI Manager's block adds «run
/huddle-setup on a branch in each repo». Any failure (no network, HTTP error, bad JSON, slow answer) is silent.
huddle doctorhas aversionline (✔ latest, ⚠ behind with the commands, ⚠ could not check). A new test fails when
the newest released section ofCHANGELOG.mdis not the version ofplugin.json,package.jsonandmarketplace.json.
Docs: «Updating Huddle» in the team guide, and a «turn on auto-update» step (🙋 Only you) in the first-day guide.
/huddle-setupdoes not writeautoUpdatein the project settings: it could not be proven in a sandbox (see the PR). -
The website home as a parallax scrolling landing page (Issue #61).
site/index.htmltells the story in eight scenes: a hero with
depth layers, five sessions that drift apart and snap into order, the pinned label flow (one Issue card travels ready,
assigned, in progress, in review and merged and takes both side roads), the four steps scrolling sideways, the two
roles, GitHub and GitLab, a terminal that types the install commands with a Copy button, and the FAQ with a final call.
Motion comes from GSAP 3.15.0, ScrollTrigger 3.15.0 and Lenis 1.3.27, vendored insite/vendor/with their licences
(no CDN, no npm dependency) and one deferred script,site/js/landing.js. All text stays in the HTML: with no JavaScript
or withprefers-reduced-motion: reducethe page is a normal readable document, and on a phone the effects are lighter.
Only transform and opacity are animated. Lighthouse on the home page, mobile: Accessibility, Best Practices and SEO 100,
Performance 95. The site test checks the vendored files, local deferred scripts, the eight scenes and the reduced-motion rule. -
Design Issues, worked in a Claude Code session with Claude Design (Issue #58). A new Design Issue template for GitHub
(.github/ISSUE_TEMPLATE/design.md) and GitLab (.gitlab/issue_templates/Design.md), installed by the setup skill, with the
designlabel (created byhuddle labelswhen missing). It keeps every section the labels job reads, so a Design Issue
goesready/assigned/in progress/in reviewlike a task, and adds Screens, For whom, Visual guide, Content and
Deliverable; its allowed files are alwaysdesign/<issue number>-<slug>/./huddle-issuewrites it;/huddle-start
creates the design with Claude Design, polishes it only through the chat, and on «ready» savesREADME.md,design.html
andscreens/indesign/<n>-<slug>/, opens the PR and closes, with each round a new commit;/huddle-reviewchecks a
design PR (screens, content, visual guide, contrast, phone width, never tests) and offers the follow-up «Build
from design #N» Issue. Docs: «If you are a designer» in the first-day guide and «Design tasks» in the team guide. -
The Huddle website on GitHub Pages (Issue #56), at
https://srprofessional.github.io/Huddle/. A static site insite/
with no build step and no dependencies: home (the problem, the four steps, the label-flow diagram as inline SVG, GitHub
and GitLab, the install and a FAQ), «Get started», «How it works» and a 404. Each page has its own title and
description, a canonical link, Open Graph and Twitter tags; the home page has JSON-LDSoftwareApplication. The site
also hassitemap.xml,robots.txt, a favicon and the 1200 × 630 share imageog.pngwith its source insite/og/.
Light and dark, readable on a phone, keyboard focus visible, no trackers..github/workflows/pages.ymldeploys it from
mainwhensite/**changes, and on a manual run, with pinned actions.test/site/site.test.mjschecks every page. The
README opens with the words people search for and links the website with a badge. -
Bugs are their own Issue type, and the skill
/huddle-bugwrites them (Issue #55)./huddle-setupinstalls a Bug template
(bug.mdon GitHub,Bug.mdon GitLab: a bug block, then every Task section) and, on GitHub, a Bug report form
(bug-report.yml) for people who are not the AI Manager.huddle labelscreates the labelsbugandneeds triage.
An Issue withneeds triagenever getsreadyor an assignee, and ablockingBug is assigned before every other ready
Issue./huddle-bug(AI Manager only) takes a plain description or#Nof a raw report, investigates without changing
anything, checks duplicates, sets the severity and waits for the AI Manager's OK. The team guide has a «Reporting a bug»
section.
Fixed
- The four steps on the home page had no side margin on a phone, with
prefers-reduced-motion: reduceor with JavaScript off
(Issue #63): only the pinned wide-screen rule gave the list a margin. The plain.stepsrule now uses--gutterlike
.wrap; the pinned sideways scene is unchanged. The site test checks that rule and that every block of a scene outside
.wraphas a--gutterrule, so the next section cannot repeat the bug.
Huddle v0.3.0
Added
-
The session does every step it can, and the steps only a person can do are for-dummies steps (Issue #50;
docs/design.md§13). Before a session hands a step to the AI Manager or a developer, it checks whether it can do it
itself withgh,glab, git and the sandboxes, and if so does it and reports it. Only a step that needs a second
person's account, a payment, a secret, a phone or another device, a legal or business decision, a paid action or a
denied permission goes to the person, written as numbered «🙋 Only you» steps («🙋 Solo tú» in Spanish): one action per
step, a copy block for what is pasted, «You should see:» and «If you see something else:»./huddle-reviewnow merges,
tags and creates the release itself once its session approved, and asks only for 🙋 steps;/huddle-issuemarks the
steps only a person can do; every skill has a «Who does each step» section and its closing message follows it. The smoke
test marks each step «Session» or «🙋 Only you» and the session runs its own steps on the sandboxes; the GitLab
HUDDLE_TOKENstep is now a 🙋 block, and the team guide and the roles page explain it. Docs and skills tests check it. -
/huddle-areas, Claude helps define the project's areas (Issue #42). The skill (AI Manager only) reads the README,
CLAUDE.md, the specs, plans and Issues and always proposes and explains before changing anything: which areas (any
number, never a fixed one), an area for each Issue without one, a «remaining» estimate per area with its reasoning, and a
check-up on a project that already has areas. The mechanics are the newhuddle areas list | set | assign | check:
setcreates or updates one milestone keeping the rest of its description,assignputs an Issue in an area or takes
it out withnone,checkreports Issues with no area, areas with no estimate and areas whose remaining is 0, as data
with--json. Every write prints what it will change first and has--dry-run. The adapters gainfindMilestone,
createMilestone,updateMilestoneandsetIssueMilestone, and closed Issues carry theirtitleandmilestone.
Changed
- The smoke test (
docs/smoke-test.md, Issue #40) has two new numbered sections, «Progress» (9) and «Team members» (10),
with checkboxes and expected results for GitHub and GitLab, and a «Results 0.2.0» table. Step 5.5 is now run with a second
account: that person comments a «Prompt for Claude Code» block, andhuddle pendingand the labels ignore it. «Not
testable» stays only for a run with no second account. «Clean up» is now section 11. huddle doctortells «not installed or not on the PATH» apart from «not logged in» (Issue #41). Whenghorglabcannot
be started (ENOENT), theloginline says so and gives the install command for the system (winget install --id GitHub.cli/GLab.GLabon Windows,brew install gh/glabon Mac, the official page on Linux) and, on Windows, to
open a new terminal or reload the PATH. An auth failure says «is not logged in» withgh auth login/glab auth login
(--hostname <host>whenhuddle.jsonhas a host). Any other failure keeps the «is not usable» line. The real runners
carry the spawn error'scodeon the error they reject with.
Fixed
Findings of the 0.3.0 smoke test (Issue #52).
- One «Huddle progress» Issue, even when two runs start seconds apart.
huddle labelslooks for it with the new adapter
operationfindIssuesByTitle, which reads the database (GitHub: the REST Issues list; GitLab: the list by title), not
gh issue list, which uses search and indexes a new Issue late. Every run also heals duplicates: the oldest stays, the
others get the comment «Duplicate of #N» and are closed (as not planned on GitHub). New adapter operationcloseIssue. - The progress Issue is only an Issue whose body starts with the marker line and whose title is «Huddle progress». An
Issue that quotes the marker in its text, or a human's Issue with that title, is never rewritten or closed. - Retries on a rate limit and on a server error. The
ghandglabrunners retry a 429 (and «rate limit» answers) and
a 5xx, at most 3 tries and 60 s of waiting in all, after theRetry-Afterthe CLI prints or 1 s, then 2 s. A POST is
never retried on a 5xx (it may have been done). A limit that stays ends with «rate limited, try again in N s» on one
line, not a stack. On GitLab one labels run readsclosed_byonce per Issue, not once for the labels and once more for
the progress. - GitLab:
huddle areas assignto a closed milestone sticks. gitlab.com answers 200 and ignores a closed milestone on an
Issue, sosetIssueMilestonereads the Issue back; if it did not stick, it reopens the milestone, assigns and closes it
again (also when the assign fails), says so, and throws a clear error if it still does not stick. huddle areas checklists an area with no estimate line once (as «No «Huddle remaining» line»), no longer also as «No
Issue and remaining 0».
Smoke test: sections 9, 10 and 11 run on github.com and gitlab.com sandboxes by the AI Manager session (see docs/smoke-test.md, Results 0.2.0 and 0.3.0). Not run in this release, unchanged since 0.2.0: the steps that need a second account (5.5, 5.6, section 10 steps 4-6 and 9) and the new-window checks (section 9 step 8, section 11 step 2).