squad-kit 1.1.1 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,261 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.2.1] — 2026-11-05
11
+
12
+ A patch about not losing work and never reaching a dead end. It also moves the project's commit hooks into the guard.
13
+ Nothing changes in how you work with the squad.
14
+
15
+ ### What you type stays
16
+
17
+ - **Text you type survives** a reload, a closed tab or a dialog closed by mistake: answers, comments, new tickets, bugs
18
+ and the BRD box are kept for each project, ticket and field, and cleared once sent.
19
+ - **Skip** asks first. Dialogs with files in them ask before closing. Enter works in an **Other** answer.
20
+
21
+ ### When something goes wrong
22
+
23
+ - **The app going down shows at once.** Within 5 seconds a banner sits over every page, nothing pulses as if it were
24
+ still working, and the banner goes by itself when the app is back. An update that does not come back gets it after 2
25
+ minutes.
26
+ - **One error no longer takes the app down.** Each squad turn is guarded, and an error in the screens shows a page with
27
+ a way back. A full disk or a moved folder holds that project with one banner, and it carries on by itself.
28
+ - **A network blip waits and tries again**, 4 times over about 15 minutes, and never lowers the model level. A merge cut
29
+ off by a blip is tried again too.
30
+ - **A moved folder is found.** The story copies' links are repaired when the squad starts, at **Looks right** and when a
31
+ step opens a copy. Home follows a folder moved while the app runs.
32
+ - **A refused release has a way out.** A teammate's push is merged and sent, never forced. A real clash gets the clash
33
+ card, and a protected main gets plain words and an engineer's steps.
34
+ - **It reached it another way**: a new button on the Releases page, for a release merged by hand. It needs a reason and
35
+ looks on the remote first. If the release is not there, it warns and asks a second time. Terminal:
36
+ `squad release --mark-sent --reason "…" [--anyway]`. `squad release` also takes the version with or without the `v`.
37
+ - **Take it**: a new button on a ticket whose owner cannot work on it. Terminal: `squad take-back <ticket> --reason "…"`.
38
+ - **A ticket is never overwritten** by another with the same id, and new ids skip the ones already pushed.
39
+ - **The home folder is refused** by `squad init`, setup and the first commit, and a leftover `~/.squad` is ignored.
40
+ - **The link lasts across tabs.** With no key in the link, the page says to run `squad`.
41
+ - **Stop and closing the board** end a running hook, and closing takes seconds. `squad | tee` stops cleanly, and a run
42
+ whose output goes to files keeps running when its terminal closes.
43
+ - **An agent's tool calls** no longer fail with a dropped connection after 5 quiet seconds.
44
+
45
+ ### The project's commit hooks
46
+
47
+ - **They run once, when a change is saved, in the guard, on a stand-in branch.** A hook cannot move a real branch, plant
48
+ a hook or change a git setting. The real commit is made after, outside the guard, with your signature if your git
49
+ signs. A crash or a failed signature no longer moves a branch or leaves an unsigned commit.
50
+ - **Every refusal gets a card**: **Let the Builder fix it**, **Fix it yourself**, **Try the save again**, or **Save
51
+ without this check**. Saving without it needs a reason, which stays on the ticket, the pull request and the release
52
+ notes. Builds by itself never skips a hook.
53
+ - **Refused code cannot slip through.** Work saved past a refusal is checked whole at **Looks right**, and the branch
54
+ goes back as it was if the hook still says no.
55
+ - **The Builder cannot change the check to pass it.** Hook files, their settings and their `package.json` keys go back,
56
+ with one plain line. What a hook calls, like lint rules and tests, stays the Builder's, and the Reviewer reads it.
57
+ - **husky 9 now runs in a story's copy.** Before, its hooks silently never ran there.
58
+ - **squad-kit runs no other hook**: no `pre-push`, `post-merge` or `post-checkout`, since the project's own checks have
59
+ run by then. Your own terminal still runs them. Git LFS files still upload when squad-kit pushes.
60
+ - **A hook folder with a common name** (`hooks`) no longer costs you work in `src/hooks`. `npx` works in a hook with no
61
+ packages installed.
62
+
63
+ ### Security
64
+
65
+ - **`.git` and git's own folder are read only** for the project's commands and for agents.
66
+ - **squad-kit's own git starts nothing a repo names by itself**: no file monitor, no diff program, and nothing from a
67
+ nested repo, which also stays out of commits.
68
+ - **The app answers only at its own address.** Host and Origin are checked on every route, a key in the link works for
69
+ reads only, and HTML and SVG from a project download instead of opening at the board's address.
70
+
71
+ ### Known limits
72
+
73
+ - **A hook built to do harm could change a file in git's store of objects.** A project with no commit hooks is not
74
+ affected. The next patch closes this by running hooks in a throwaway git folder. See [SECURITY.md](SECURITY.md).
75
+ - A hook that reads the branch name sees the stand-in, `squad/saving/<branch>/now`. A strict one says no, and you get
76
+ the card.
77
+ - Setup in your own checkout no longer installs husky's hooks. On a fresh clone they stay off until you install them.
78
+ - Stop in the middle of lint-staged leaves its backup in `git stash list`. Your work is safe.
79
+
80
+ ## [1.2.0] — 2026-11-05
81
+
82
+ squad-kit 1.2 is about trust: squad-kit shows that it understands your project, says what the work really cost, and
83
+ makes the squad's work harder to fake. It also takes a whole requirements document and builds it, story by story.
84
+ Windows is less protected and not fully tested yet (see What's safer).
85
+
86
+ ### What's new
87
+
88
+ #### From a BRD to a built product
89
+
90
+ - **A new Requirements page** (after Overview). **Add a BRD**: a PDF, Word or Markdown file, or pasted text, with
91
+ mockups if you have them. The Analyst reads it live and asks only about what is **missing in the BRD** or where
92
+ **two parts clash**. Then it writes epics, features and stories, each with its checks (Given, When, Then), size,
93
+ needs and its place in the document.
94
+ - **Review it as a tree or a map.** Rename, rewrite, move, add or remove any part, or ask the Analyst to redo one.
95
+ An estimate from this project's own tickets: "20 stories, about $140 and 6 hours, 2 at a time". Nothing is built
96
+ or sent before **Approve breakdown**.
97
+ - **Send to Azure DevOps**: epics, features and stories with parent and dependency links, into the backlog. **Send
98
+ changes** updates only what changed. squad-kit never deletes there, and a cut-off send makes no doubles.
99
+ - **Build continuously**: each story becomes a ticket on the new **Builds by itself** track, in the order its needs
100
+ allow, within the parallel limit and the budgets. No questions, the plan is approved by itself, small choices are
101
+ listed under **Decided for you** (press **Change** on any), and it merges by itself once the checks, the review
102
+ and the screenshots pass. It stops only for a gap, a clash or a failed check, and then only that story and the
103
+ ones that need it wait. Releases stay your button.
104
+ - Terminal: `squad requirements add|show|answer|edit|move|approve|send|build|start|…`, `squad decided`. See
105
+ [From a BRD to a built product](docs/requirements.md).
106
+
107
+ #### Proof you can read
108
+
109
+ - **squad-kit takes the screenshots itself, with its own browser.** The Tester says which pages, steps and sizes.
110
+ squad-kit opens the story's own copy of the app, does the steps and takes the pictures.
111
+ - **One or more pictures for each "done when"**: one per part or case, up to 6.
112
+ - **Each "done when" gets a verdict**, from the Tester and squad-kit's own check of all its pictures together:
113
+ **Met**, **Not working yet** (a picture shows it does not work), **Not shown yet** (the pictures do not show it
114
+ clearly) or **Not on a screen** (it cannot be shown at all, like an email or what happens after a restart). Not
115
+ working yet goes back to the Builder once, then it is a plain stop. Not shown yet goes back to the Tester up to 2
116
+ more times, keeps the good pictures and never reaches the Builder. Not on a screen keeps its reason and does not
117
+ stop the story, unless every "done when" ends that way.
118
+ - **Also changed, not in the plan**: what the change touches beyond its plan, in the Reviewer's words. It never
119
+ blocks. You see it at your check, on a stop, on the ticket and in the release notes.
120
+
121
+ #### Your turn
122
+
123
+ - **Where to look**: each page the proof names, with the "done when" it shows.
124
+ - **Try it yourself**: runs the story's own copy of the app, with the change in it and nothing merged, so you can
125
+ click through it before **Looks right**. It stops by itself when the story moves on. Terminal: `squad try <ticket>`.
126
+ - **Ask a question** on every story, in every state: working, in the queue, waiting for another story, stopped, at
127
+ review, taken over or released. Whoever knows the story best answers: the Analyst before the build, the Builder
128
+ during and after it, the Tester once there are screenshots. It answers questions only, and the story stays exactly
129
+ where it is. Terminal: `squad chat <ticket> --ask`.
130
+
131
+ #### First run and Overview
132
+
133
+ - **Add project says what it found** (code with or without git, an empty folder, several repos, an older
134
+ squad-kit) and what happens next, before you confirm.
135
+ - **A setup page with live steps**: project memory, the AI tool, the Architect reading the code, how to test and run
136
+ it, trying the tests, opening the app once with a screenshot, and your overview. Each step has its time; a failure
137
+ has a way out and never stops the setup. **Notify me when it is ready**. Quality is asked once here.
138
+ - **The Overview page**, first in the sidebar: what the project is, who uses it, what it can do today, how its parts
139
+ fit together, things worth knowing, the rules found, the proof, and three ideas for a first ticket. It stays up to
140
+ date after every merged ticket.
141
+ - **The rules the Architect found are proposals until you approve them** with **Looks right, start working**. They
142
+ used to be saved as approved without being shown. **Something is wrong** opens a talk with the Architect.
143
+ - **An empty project asks "What do you want to build?"**, in your own words, in English or Arabic. The Architect
144
+ writes down what you want with first stories for it, and picks the technology itself when your first story is
145
+ planned. Terminal: `squad overview --build "what you want"`.
146
+ - **squad-kit finds the commands of a project that started empty.** After the first build it reads how to test and
147
+ run the project from its files, and saves that. Nobody is asked.
148
+ - Terminal: `squad setup`, `squad overview`, `squad demo --first-run`.
149
+
150
+ #### Conversation and Cost
151
+
152
+ - **Conversation opens on "What happened"**: one card per step with its time, a one-line summary and what it handed
153
+ in, drawn as the real thing. **Full log** keeps the detail, in plain words, with **Open it in Claude Code**.
154
+ - **Cost follows how you pay.** On a subscription: "Included in your Claude plan. No extra charge.", the size of the
155
+ work and where it went, with the API-price figure shown as a value, not a bill. With an API key: real dollars, a
156
+ budget per ticket and per month, a warning at 80% and a pause at 100%.
157
+ - **Averages per Quality setting** (cost and squad time per accepted ticket) on the Squad and AI page.
158
+ - Terminal: `squad cost`, `squad config set payment`, `squad config set budget`.
159
+
160
+ #### Tickets that depend on each other
161
+
162
+ - **The Analyst and the Architect see the other open tickets** and the files they change.
163
+ - **A design can depend on another ticket.** The ticket then waits before building: **Build on its branch**, **Build
164
+ anyway**, or **Wait** (it starts by itself when the other one merges). Terminal: `squad depends`, `squad build`.
165
+ - **Bring in latest main** is a button on a ticket being built (`squad bring-in`).
166
+
167
+ #### Releases
168
+
169
+ - **Take a ticket out of the next release** before you release it (`squad release --without`).
170
+ - **Released tickets' branches are cleaned up** on this computer, and on the remote when you ask (`squad branches`).
171
+ A branch with unmerged work is never deleted.
172
+ - **A release cut off by a restart finishes or rolls back** cleanly on the next start.
173
+
174
+ #### Also
175
+
176
+ - **The ticket can go full width** (the button next to Close; remembered in this browser). **Hand over** and
177
+ **Propose a change** moved to the ⋯ menu, and Propose a change is also on the ticket's bottom bar, so the header is
178
+ one row at any width.
179
+ - **The Waiting for you banner is one slim, calm row**, and stays readable beside a docked chat.
180
+ - **The update banner shows what is new in every release since your version**, and **Check for updates** reads the
181
+ notes again.
182
+ - **Free the port and try again** on a stuck Tester step, for programs squad-kit itself started.
183
+
184
+ ### What's safer
185
+
186
+ - **Agents get fixed tools, "the window"**: `take_screenshots`, `look_at_page`, `start_app`, `stop_app`, `app_status`,
187
+ `run_checks` and `i_am_stuck`. An agent fills in the fields, squad-kit checks them, does the job itself and hands
188
+ back the result. There is no free command: only this story's app on this computer, only the project's saved
189
+ commands, only what squad-kit started. A request outside that is refused and written in the activity, and three
190
+ refusals in one step stop the agent.
191
+ - **`i_am_stuck`**: when something technical is in an agent's way, squad-kit tries its own fixes (its browser, a free
192
+ port, starting the app again) and writes one plain line. It is never a question to you.
193
+ - **Technical questions never reach you.** squad-kit reads each question an agent asks, with its choices and
194
+ everything shown with it, and does not trust the agent's label. A question about ports, commands, files or settings
195
+ goes back to the agent to decide. An agent that keeps asking stops in plain words. When another program holds a
196
+ port and going around it did not work, you get one plain card with no port in it: **Stop it** (with a confirm) or
197
+ **Skip the browser tests**.
198
+ - **Some asks are refused and logged.** Asking you to change squad-kit's settings or protected files, to hand over a
199
+ password or a key, or to change git history never reaches you. One plain line goes in the activity. A reply in a
200
+ chat that asks for any of these is left out too.
201
+ - **A second guard for the project's own commands.** The tests, lint, build, setup, the app's start and the release
202
+ pipeline run in squad-kit's own guard on Mac and Linux. They work normally, browser tests too, and can reach the
203
+ network, but they can't read your keys, sign-ins, browser profiles, squad-kit's own folder or the `.env` files in
204
+ your project folder. If a project truly needs a file outside its copy, one plain sentence says so, and an engineer
205
+ can allow it in Settings or with `squad config set allow-read <path>` and `squad config set allow-write <path>`.
206
+ `squad doctor` shows whether the guard runs here.
207
+ - **Windows is less protected and not fully tested yet.** There, the agents' own commands and the project's own
208
+ commands have no guard, so they can reach other files on the computer. Use it on projects you trust. Settings and
209
+ the Squad and AI page say "Windows: less protected".
210
+ - **"Not checked" instead of a green pass** when a project has no tests. You are asked once per project, with the
211
+ Architect's suggested test command. A project without tests also checks that the app starts.
212
+ - **Weakened tests stop the ticket**: deleted tests, fewer tests, a changed test setup, or new skip/only markers, in
213
+ the common languages. **Continue anyway** needs a reason that stays on the record.
214
+ - **Proof is verified**: each screenshot must be a real image taken in this step, and "after" must differ from
215
+ "before", unless the "done when" says the screen stays as it was.
216
+ - **The Reviewer sees the whole change and the check results** in every round, not only the fix. In its review it can
217
+ also look at a page of the app itself (`look_at_page`).
218
+ - **A change to the test command is tried first.** squad-kit runs the new command and the current one in the ticket's
219
+ copy, and keeps the new one only when it passes and runs at least as many tests. You choose only when it cannot
220
+ tell. Terminal: `squad test-command <ticket> --use | --keep`.
221
+ - **The Builder's and Tester's commands run in Claude Code's sandbox** where the computer allows it: they write only
222
+ in the ticket's copy, its proof folder and a private package cache, can't read your keys, sign-ins or `.env`
223
+ files, and reach only package registries and the websites you allow (Settings, `squad config set hosts`). A
224
+ blocked command says what and why. `squad doctor` shows whether the sandbox runs here.
225
+ - **Turn and spend caps per step** from the Quality setting. Reaching one keeps the work and offers **Give it more**
226
+ or **Stop**.
227
+ - **Every command squad-kit suggests you copy quotes your text safely**, on the board and in the terminal.
228
+ - **zod 4, the AI SDK 5 and diff 8** for the 0.x planner commands. This closes the last high alert. The planner's
229
+ file-read tool on the Claude Agent SDK path now works with ranged reads.
230
+
231
+ ### What's fixed
232
+
233
+ - **Plain stop messages.** A stop says what happened in squad-kit's own plain words, with **Try again**. A tool's raw
234
+ error never reaches you: the exact words are in the ticket's Developer tab and the app log.
235
+ - **A failed check runs once more** before anyone is sent to fix it, so a flaky test costs no Builder run. If it passes
236
+ then, the activity and the Developer tab say "failed once, passed when run again". Not after a Stop, a command
237
+ squad-kit had to end, or a file the guard blocked.
238
+ - **The Builder is told about old failures**: the checks that already failed on the first run, before any story
239
+ touched the code. It fixes what its story broke and leaves other screens alone. The checks must still pass.
240
+ - **A clash no longer stops a story too soon on Builds by itself.** While main keeps moving, squad-kit brings it in
241
+ again by itself, up to 3 times, with the checks, the review and the proof each time. If main has not moved, or after
242
+ the third time, you get the clash card. Other tracks show the card at the first clash, as before.
243
+ - **Apps move to a free port by themselves** when another program holds the usual one: Your apps, the story's own copy
244
+ and Try it yourself. In Your apps this works when the start command or the app's code takes a port setting; if not,
245
+ one plain sentence says what is in the way. `--next-port` on `squad app start` and `squad app restart` is still
246
+ accepted, and now does nothing.
247
+ - **squad-kit installs its own screenshot browser.** No `npx playwright`, and nothing to install by hand. The first
248
+ time, one line says "Setting up squad-kit's screenshot browser. This happens only once."
249
+ - **The step timer counts only running time.** It stands still while a ticket waits for you, for another story or for
250
+ a free place, so "Taking longer than usual" no longer shows on a step that was only waiting.
251
+ - **A restart is not a failure.** Restarting the board, Stop or the computer sleeping no longer counts as a failed
252
+ try or raises the model's effort. The Builder carries on with the same step in the same conversation, instead of
253
+ starting the work again, and the step's clock keeps its time ("resumed after a restart").
254
+ - **Nothing is left behind.** When a step ends, on Stop, and when the board restarts or quits, squad-kit stops every
255
+ program it started for the ticket, including test servers that left their process group. It finds them by where
256
+ they run: inside squad-kit's own copy of the code, never your folders or Your apps.
257
+ - **squad-kit clears its own leftovers before the checks** and says so in one activity line. If an agent asks about a
258
+ busy port that squad-kit caused, squad-kit answers it and you never see the question.
259
+ - **Desktop notices: Turn on always answers.** It says when the browser is asking, explains how to allow notices
260
+ when the browser stays silent (for example in Arc), and sends one test notice.
261
+ - **A ticket a teammate deleted** shows "Deleted by <owner>" with **Remove from my board**.
262
+ - **A chat message sent during Claude's usage limit waits** and is answered when the squad carries on.
263
+ - **On a phone**, the banners fold into one slim row while a ticket is open, and the website's docs pages fit.
264
+
10
265
  ## [1.1.1] — 2026-11-03
11
266
 
12
267
  A security update. Nothing changes in how squad-kit works.
@@ -886,7 +1141,9 @@ First public release.
886
1141
  - Plan-generation meta-prompt (`generate-plan.md`), intake template (`intake.md`), and plan skeleton reference (`story-skeleton.md`).
887
1142
  - Documentation: `docs/philosophy.md`, `docs/getting-started.md`, `docs/customization.md`, `docs/vs-spec-kit.md`.
888
1143
 
889
- [Unreleased]: https://github.com/AzmSquad/squad-kit/compare/v1.1.1...HEAD
1144
+ [Unreleased]: https://github.com/AzmSquad/squad-kit/compare/v1.2.1...HEAD
1145
+ [1.2.1]: https://github.com/AzmSquad/squad-kit/releases/tag/v1.2.1
1146
+ [1.2.0]: https://github.com/AzmSquad/squad-kit/releases/tag/v1.2.0
890
1147
  [1.1.1]: https://github.com/AzmSquad/squad-kit/releases/tag/v1.1.1
891
1148
  [1.1.0]: https://github.com/AzmSquad/squad-kit/releases/tag/v1.1.0
892
1149
  [1.0.1]: https://github.com/AzmSquad/squad-kit/releases/tag/v1.0.1
package/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  <p align="center">
2
2
  <a href="https://squad-kit.com">
3
- <img src="https://squad-kit.com/logo-wordmark.svg?v=2" alt="squad-kit logo" width="360">
3
+ <picture>
4
+ <source media="(prefers-color-scheme: dark)" srcset="https://squad-kit.com/readme/header-dark.png">
5
+ <source media="(prefers-color-scheme: light)" srcset="https://squad-kit.com/readme/header-light.png">
6
+ <img src="https://squad-kit.com/readme/header-light.png" alt="squad-kit: Your AI Engineering Squad. One Unified Harness." width="800">
7
+ </picture>
4
8
  </a>
5
9
  </p>
6
10
 
@@ -11,8 +15,6 @@
11
15
  <a href="https://squad-kit.com"><img src="https://img.shields.io/badge/site-squad--kit.com-7cffa0?labelColor=0a0a0c" alt="Website"></a>
12
16
  </p>
13
17
 
14
- **Your AI Engineering Squad. One Unified Harness.**
15
-
16
18
  squad-kit is an agent harness for the whole software cycle. You describe what you need in plain words. A
17
19
  squad of AI agents takes it from that ask to a release: the Analyst, the Architect, the Builder, the Tester
18
20
  and the Reviewer. You stay in control. The squad asks you when it needs you, and nothing important moves on
@@ -34,8 +36,10 @@ without your approval.
34
36
  4. The Architect writes the **design**: the decision and the steps. You, or a developer, approve it.
35
37
  5. The Builder writes the code in its own copy of the project. Your own folder stays as it is.
36
38
  6. squad-kit runs the tests, lint and build itself. The Reviewer checks the work with fresh eyes. The Tester
37
- takes a screenshot for each "done when".
38
- 7. You check this **proof** and press **Looks right**.
39
+ shows each "done when" in one or more screenshots, one per part or case, taken with squad-kit's own browser.
40
+ 7. You check this **proof**: each "done when" says **Met**, **Not working yet**, **Not shown yet** or **Not on a
41
+ screen**. **Where to look** names the pages, and **Try it yourself** runs the ticket's own copy of the app, with
42
+ nothing merged. Then press **Looks right**.
39
43
  8. You press **Release**. squad-kit writes the changelog, sets the version and adds the git tag.
40
44
 
41
45
  When the squad needs you, a banner shows on every page with the button to press, the browser tab shows how many
@@ -50,6 +54,10 @@ terminal command, so developers can do the same from the terminal.
50
54
  AI tool the squad runs on. squad-kit uses your existing sign-in, so there is nothing new to buy. squad-kit
51
55
  also finds Codex, but cannot run it yet.
52
56
 
57
+ There is nothing else to install. squad-kit installs its own browser for the screenshots the first time it needs
58
+ one, so there is no `npx playwright` to run. **Windows** works, but it is less protected and not fully tested yet:
59
+ use it on projects you trust.
60
+
53
61
  ## Install
54
62
 
55
63
  ```bash
@@ -84,14 +92,16 @@ Any folder works:
84
92
 
85
93
  | The folder | What squad-kit does |
86
94
  | --- | --- |
87
- | An empty folder | Makes a new git repo. The Architect picks the stack with you on your first ticket. |
95
+ | An empty folder | Makes a new git repo and asks "What do you want to build?". The Architect picks the technology when your first ticket is planned, and squad-kit finds how to test and run it after the first build. |
88
96
  | Code with git | Keeps your repo and its history as they are. |
89
97
  | Code without git | Makes a repo, with your files in its first commit. Generated folders like `node_modules` and `dist`, and `.env` files, stay out. |
90
98
  | A folder with several code repos | Works across them. Each ticket works in one repo. |
91
99
  | A squad-kit 0.x project | Keeps your stories, plans and tracker settings. Moves your sign-ins to this computer. |
92
100
 
93
- Then the Architect reads the project, which takes a few minutes. It maps the code and finds how to install,
94
- test, build and run it. You can follow it on the board.
101
+ Then a setup page shows each step live while the Architect reads the project, finds how to test and run it, and
102
+ squad-kit tries the tests and opens the app once. It takes a few minutes, and you can leave the page. Then the
103
+ **Overview** opens: what the project is, who uses it, how its parts fit, the rules found, and ideas for a first
104
+ ticket. Approve it with **Looks right, start working**, and the squad follows those rules.
95
105
 
96
106
  ## Your first ticket
97
107
 
@@ -112,10 +122,26 @@ The step-by-step guide is in [Getting started](docs/getting-started.md).
112
122
  - **A slow step says so**, with what it is doing and three ways out: **Give it 10 more minutes**, **Stop and try
113
123
  again**, or **Stop**. A step that makes no progress says what squad-kit checked.
114
124
  - **Run your app** from **Your apps** in the sidebar: Start, Open, Restart and Stop, from squad-kit's own copy of
115
- `main`. After **Looks right**, **Run the new version** shows the change. Terminal: `squad app start`.
125
+ `main`. If another program holds its port, it moves to a free one by itself. After **Looks right**, **Run the new
126
+ version** shows the change. Terminal: `squad app start`.
127
+ - **Tickets that need each other**: when a design depends on a ticket that is not merged yet, it waits with
128
+ **Build on its branch**, **Build anyway** or **Wait**.
116
129
  - **Remove a ticket** you no longer want with **Delete**, and take finished ones off the board with **Archive**.
117
130
  The dialog lists what goes and what stays; the cost stays in Usage. Terminal: `squad delete`, `squad archive`.
118
131
 
132
+ ## Checks you can trust
133
+
134
+ - **Not checked, never a fake pass**: a project with no tests shows "Not checked" in orange.
135
+ - **Weakened tests stop the ticket**: deleted or skipped tests, fewer tests, or a changed test setup.
136
+ - **Proof is checked**: each screenshot must be a real, new picture, and squad-kit's own check looks at all the
137
+ pictures of each "done when" together before it says **Met**.
138
+ - **The Builder works in a sandbox** where the computer allows it: its copy only, no keys or `.env` files, and only
139
+ the package registries and websites you allow.
140
+ - **The project's own commands run in a guard** on Mac and Linux: the tests, the setup and the app work normally, but
141
+ can't read your keys, your sign-ins or squad-kit's own files.
142
+ - **Agents get fixed tools, no free commands**, for screenshots, the app and the checks. squad-kit checks each
143
+ request and does the job itself.
144
+
119
145
  ## When something goes wrong
120
146
 
121
147
  - **Every stop says what happened, what is safe, and the ways out**, as buttons: Try again, Fix it yourself,
@@ -165,19 +191,29 @@ Hand over and clones work for a project whose `.squad/` sits in its one code rep
165
191
 
166
192
  ## Talk to the squad
167
193
 
168
- Open a chat with any agent on a ticket. **Asking never stops the work**: the squad keeps working while you
169
- talk. To change what gets built, press **Propose a change**. The Analyst writes the change into the spec, old
194
+ **Ask a question** is at the top of every ticket, in every state: working, in the queue, waiting for another ticket,
195
+ stopped, at review, taken over or released. Whoever knows the ticket best answers: the Analyst before the build, the
196
+ Builder during and after it, the Tester once there are screenshots. It answers questions only, like "how do I test
197
+ this?" or "where is the new page?", and the ticket stays exactly where it is. Terminal: `squad chat <ticket> --ask`.
198
+
199
+ You can also open a chat with any agent on a ticket. **Asking never stops the work**: the squad keeps working while
200
+ you talk. To change what gets built, press **Propose a change**. The Analyst writes the change into the spec, old
170
201
  and new side by side, and you approve it. A released ticket answers questions only. A change to it becomes a new
171
202
  linked ticket or a bug report.
172
203
 
204
+ **The squad asks you only about the business.** Technical questions stay with the agent and squad-kit. Nobody may ask
205
+ you for a password or a key, to change squad-kit's settings, or to change git history: squad-kit refuses it and
206
+ writes one line in the ticket's activity.
207
+
173
208
  ## Cost and models
174
209
 
175
210
  - squad-kit picks a **model level** for each role and step from the project's **Quality** setting: **Best**
176
211
  (the default) builds and reviews on the strongest model, **Balanced** builds on it at medium effort, and
177
212
  **Thrifty** builds on a lighter one. **Fast** stays for screenshots and small helpers. The team or each person
178
213
  can change single steps on the **Squad and AI** page.
179
- - The board shows **what each ticket and each role used**, in tokens and in money at the AI company's API
180
- prices. Your own AI subscription pays for it. This shows where the cost goes.
214
+ - The board shows **what each ticket and each role used**, the way you pay. On a Claude subscription it says the
215
+ work is included in your plan, and shows its size and its value at API prices (a value, not a bill). With an API
216
+ key it shows real dollars, against a budget per ticket and per month.
181
217
  - One **limit of tickets at once** (2 by default, up to 5) is shared by all your projects, because they use the
182
218
  same AI account.
183
219
 
@@ -186,6 +222,8 @@ linked ticket or a bug report.
186
222
  - [Getting started](docs/getting-started.md): your first hour, from install to a release.
187
223
  - [Moving to 1.0](docs/migrating-to-1.0.md): from squad-kit 0.x, and from early 1.0 boards.
188
224
  - [The app](docs/console.md): Home, the board, the ticket drawer, Squad and AI, and Settings.
225
+ - [From a BRD to a built product](docs/requirements.md): upload a requirements document, approve the breakdown,
226
+ send it to Azure DevOps and let the squad build it.
189
227
  - [CHANGELOG](CHANGELOG.md): what changed in each version.
190
228
 
191
229
  The 0.x planner commands (`squad new-story`, `squad new-plan`, `squad auth` and others) still ship. Their docs
package/SECURITY.md CHANGED
@@ -7,8 +7,8 @@ or `squad upgrade`.
7
7
 
8
8
  | Version | Supported |
9
9
  | ------- | --------- |
10
- | 1.1.x | ✅ |
11
- | < 1.1 | ❌ |
10
+ | 1.2.x | ✅ |
11
+ | < 1.2 | ❌ |
12
12
 
13
13
  ## Reporting a vulnerability
14
14
 
@@ -33,7 +33,8 @@ Credit will be given in the release notes unless you prefer to remain anonymous.
33
33
  ## How squad-kit keeps you safe
34
34
 
35
35
  - **The app runs on your computer only.** It listens on `127.0.0.1`, behind a private link with a token kept in
36
- `~/.squad-kit/app.json`. Nothing is hosted.
36
+ `~/.squad-kit/app.json`. Nothing is hosted. It answers only at its own address (Host and Origin are checked on every
37
+ route), and a token in a link works for reads only.
37
38
  - **Sign-ins stay on this computer.** Tracker tokens and keys live in `~/.squad-kit/projects/<id>/secrets.yaml`
38
39
  (mode `0600` on POSIX), never in the project folder or in git. A project moved from 0.x has its
39
40
  `.squad/secrets.yaml` moved there once. To run your app, squad-kit copies your project's `.env` files into its own
@@ -44,6 +45,29 @@ Credit will be given in the release notes unless you prefer to remain anonymous.
44
45
  own copy of the code, the Tester cannot change code, and no agent may change the instruction files the next session
45
46
  would follow, squad-kit's own `.squad/` folder, or git history. squad-kit checks after each step and puts back what
46
47
  an agent changed outside its lane. Text from trackers and pasted messages reaches agents as data, never as orders.
48
+ - **Agents get fixed tools, no free commands.** For screenshots, the app and the checks, an agent presses one of
49
+ squad-kit's tools. squad-kit checks every field, does the job itself, and refuses and logs what breaks a check.
50
+ - **The project's own commands run in a guard** on Mac and Linux: the tests, setup, the app and the release pipeline
51
+ can't read your keys, sign-ins, browser profiles, squad-kit's own folder or the `.env` files in your project folder.
52
+ They can't change the copy's link to git or git's own folder either, so nothing they write can make squad-kit's own
53
+ git, which runs outside the guard, start a program of theirs.
54
+ - **The project's commit hooks run in the same guard, once, on a stand-in.** They look at the change on a branch of
55
+ their own, so a hook cannot move a real branch, plant a hook, change a git setting or reach another ticket. The real
56
+ commit is made after, outside the guard, with your signature if your git signs.
57
+ **Known gap, being closed next:** while they run, hooks share git's store of objects, so a hook built to do harm could
58
+ change a file stored there. A project with no commit hooks is not affected.
59
+ - **squad-kit runs no other hook.** Every other git it runs has hooks off: it does not run a project's `pre-push`,
60
+ `post-merge`, `post-checkout` or `post-commit` outside that one commit (a `post-commit` runs on the stand-in). The
61
+ project's own checks have already run in the guard by then. Pushing from your own terminal still runs your hooks.
62
+ A project that uses Git LFS still gets its large files uploaded: a push runs squad-kit's own small `pre-push`, kept in
63
+ its own folder, which does only that.
64
+ - **squad-kit's git starts nothing a repo names by itself:** no file monitor (`core.fsmonitor`), no diff program
65
+ (`diff.external`, textconv), and it never looks inside a nested repo. Programs named in your own git settings for the
66
+ network, credentials, filters and merges stay on (`core.sshCommand`, git-lfs): they need a line in a settings file,
67
+ and neither the guard nor an agent's sandbox can write those files.
68
+ - **Windows is less protected and not fully tested yet.** There, the agents' own commands and the project's own
69
+ commands have no guard, so they can reach other files on the computer, squad-kit's own too. Use it on projects you
70
+ trust. Settings says so.
47
71
  - **The engine owns git and the release.** Agents never merge, push or grade their own work.
48
72
  - **The npm package is built and published by GitHub Actions** from a release tag, with npm trusted publishing (no
49
73
  npm token exists) and a signed provenance statement you can check on npmjs.com.