sign-off-axi 0.4.9 → 0.5.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/README.md +72 -340
- package/dist/cli.js +278 -42
- package/dist/contract.js +120 -9
- package/dist/store.js +125 -18
- package/fixtures/contract/README.md +2 -2
- package/fixtures/contract/plan.v2/invalid-decisions-recommend-unknown.json +13 -0
- package/fixtures/contract/plan.v2/invalid-next-lines-over-4.json +13 -0
- package/fixtures/contract/plan.v2/invalid-sections-stage-unknown.json +13 -0
- package/fixtures/contract/plan.v2/invalid-understood-missing.json +12 -0
- package/fixtures/contract/plan.v2/invalid-visual-rows-one.json +13 -0
- package/fixtures/contract/plan.v2/valid-full.json +73 -0
- package/fixtures/contract/plan.v2/valid-minimal.json +13 -0
- package/fixtures/contract/report.v3/invalid-next-lines-over-4.json +13 -0
- package/fixtures/contract/report.v3/invalid-sections-stage-unknown.json +13 -0
- package/fixtures/contract/report.v3/invalid-understood-missing.json +12 -0
- package/fixtures/contract/report.v3/invalid-visual-rows-one.json +13 -0
- package/fixtures/contract/report.v3/valid-full.json +53 -0
- package/fixtures/contract/report.v3/valid-minimal.json +13 -0
- package/package.json +2 -1
- package/web/apple-touch-icon.png +0 -0
- package/web/icon-192.png +0 -0
- package/web/icon-512.png +0 -0
- package/web/icon-maskable-512.png +0 -0
- package/web/icon.svg +10 -0
- package/web/index.html +63 -22
- package/web/manifest.webmanifest +14 -0
package/README.md
CHANGED
|
@@ -1,382 +1,112 @@
|
|
|
1
|
-
<p align="center"><b>▶ <a href="https://umeranjum17.github.io/sign-off/">Try it live</a></b> — the real board on demo data: tap an answer and watch it save. No install, nothing leaves your browser.</p>
|
|
2
|
-
|
|
3
|
-
<p align="center">
|
|
4
|
-
<img src="docs/media/demo-tap.gif" width="300" alt="Tap Yes on a demo question, see it saved, and read the saved answer back">
|
|
5
|
-
</p>
|
|
6
|
-
|
|
7
1
|
<p align="center">
|
|
8
|
-
<
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/logo-dark.svg">
|
|
4
|
+
<img src="docs/logo.svg" width="96" height="96" alt="sign-off logo: a white check mark on a blue tile">
|
|
5
|
+
</picture>
|
|
9
6
|
</p>
|
|
10
7
|
|
|
11
8
|
<h1 align="center">sign-off</h1>
|
|
12
9
|
|
|
13
|
-
<p align="center"><b>One calm page for every question the programs working for you need answered.</b><br>
|
|
10
|
+
<p align="center"><b>One calm page for every question the programs working for you need answered.</b><br>Agents ask; you answer with one tap on your own machine; the answer is saved for the asker to read. Proof of finished work lands on the same page, so you check it instead of taking anyone's word.</p>
|
|
11
|
+
|
|
12
|
+
<p align="center"><b>▶ <a href="https://umeranjum17.github.io/sign-off/demo/">Try it live</a></b>: the real board on demo data. No install, nothing leaves your browser. · <a href="https://umeranjum17.github.io/sign-off/">Website</a></p>
|
|
14
13
|
|
|
15
14
|
<p align="center">
|
|
16
15
|
<picture>
|
|
17
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/media/
|
|
18
|
-
<img src="docs/media/
|
|
16
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/media/desk-today-dark.webp">
|
|
17
|
+
<img src="docs/media/desk-today.webp" alt="The board at desk width: Today with what needs you, what was proven and a list of waiting asks">
|
|
19
18
|
</picture>
|
|
20
19
|
</p>
|
|
21
20
|
|
|
22
|
-
##
|
|
23
|
-
|
|
24
|
-
```sh
|
|
25
|
-
npm install -g sign-off-axi
|
|
26
|
-
sign-off-axi raise \
|
|
27
|
-
--title "Keep the weekly \
|
|
28
|
-
digest?" \
|
|
29
|
-
--why "The paid plan \
|
|
30
|
-
renews Monday." \
|
|
31
|
-
--outcome yes="It keeps \
|
|
32
|
-
going out." \
|
|
33
|
-
--outcome no="It stops \
|
|
34
|
-
this week." \
|
|
35
|
-
--recommend yes \
|
|
36
|
-
--recommend-reason "Readers \
|
|
37
|
-
still open it." \
|
|
38
|
-
--default yes
|
|
39
|
-
sign-off-axi open
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
Open the printed URL, click **Yes**, then read the answer back the way an
|
|
43
|
-
agent would:
|
|
21
|
+
## Install in 3 steps
|
|
44
22
|
|
|
45
23
|
```sh
|
|
46
|
-
sign-off-axi
|
|
47
|
-
|
|
24
|
+
npm install -g sign-off-axi # 1. install from npm
|
|
25
|
+
npx -y sign-off-axi init # 2. in your project: set up .sign-off/ and the agent skill
|
|
26
|
+
sign-off-axi open # 3. start the board and open the printed link
|
|
48
27
|
```
|
|
49
28
|
|
|
50
|
-
|
|
51
|
-
Every question says why it is asked, what each answer does, which one the
|
|
52
|
-
agent recommends and why, and what happens if you stay quiet; a question
|
|
53
|
-
that does not is refused before it reaches you (see
|
|
54
|
-
[the question standard](docs/contract.md#ask-schema-1)). The
|
|
55
|
-
board is the default one (`~/.sign-off/decisions.json`); name a file after
|
|
56
|
-
any command to use another board.
|
|
57
|
-
|
|
58
|
-
## What you can ask
|
|
59
|
-
|
|
60
|
-
One line on what the agent runs, one screenshot of what you see. The full
|
|
61
|
-
reference for each kind lives in [docs/question-kinds.md](docs/question-kinds.md);
|
|
62
|
-
the message rules are in [docs/contract.md](docs/contract.md).
|
|
63
|
-
|
|
64
|
-
### Yes or no
|
|
65
|
-
|
|
66
|
-
```sh
|
|
67
|
-
sign-off-axi raise \
|
|
68
|
-
--title "Keep the weekly \
|
|
69
|
-
digest?" \
|
|
70
|
-
--about "Open rate held \
|
|
71
|
-
steady at about a third \
|
|
72
|
-
for two months." \
|
|
73
|
-
--why "The paid plan \
|
|
74
|
-
renews Monday." \
|
|
75
|
-
--outcome yes="It keeps \
|
|
76
|
-
going out each Monday." \
|
|
77
|
-
--outcome no="It stops \
|
|
78
|
-
after this week." \
|
|
79
|
-
--recommend yes \
|
|
80
|
-
--recommend-reason "Readers \
|
|
81
|
-
still open it." \
|
|
82
|
-
--default yes \
|
|
83
|
-
--silent-by 2026-10-19T09:00Z
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
<picture>
|
|
87
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/media/kind-yes-no-dark.webp">
|
|
88
|
-
<img src="docs/media/kind-yes-no.webp" alt="A yes/no question with the recommended Yes marked">
|
|
89
|
-
</picture>
|
|
90
|
-
|
|
91
|
-
*A yes/no ask. The recommended answer is marked.*
|
|
92
|
-
|
|
93
|
-
### Pick one, with a recommendation
|
|
29
|
+
Then ask your first question, the way an agent would, and answer it on the board:
|
|
94
30
|
|
|
95
31
|
```sh
|
|
96
32
|
sign-off-axi raise \
|
|
97
|
-
--title "
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
--
|
|
101
|
-
|
|
102
|
-
weeks." \
|
|
103
|
-
--why "Support is fully \
|
|
104
|
-
staffed on Friday." \
|
|
105
|
-
--option today=Today \
|
|
106
|
-
--option friday=Friday \
|
|
107
|
-
--option next-week="Next \
|
|
108
|
-
week" \
|
|
109
|
-
--outcome today="It goes \
|
|
110
|
-
out now." \
|
|
111
|
-
--outcome friday="It goes \
|
|
112
|
-
out with support on hand." \
|
|
113
|
-
--outcome next-week="It \
|
|
114
|
-
waits a week." \
|
|
115
|
-
--recommend friday \
|
|
116
|
-
--recommend-reason "Support \
|
|
117
|
-
can answer questions." \
|
|
118
|
-
--default next-week
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
<picture>
|
|
122
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/media/kind-pick-one-dark.webp">
|
|
123
|
-
<img src="docs/media/kind-pick-one.webp" alt="A pick-one question with three options and Friday recommended">
|
|
124
|
-
</picture>
|
|
125
|
-
|
|
126
|
-
*Pick one of three. Friday is recommended; silence means next week.*
|
|
127
|
-
|
|
128
|
-
### Design pick, with mocks A/B/C
|
|
129
|
-
|
|
130
|
-
```sh
|
|
131
|
-
sign-off-axi post \
|
|
132
|
-
--type design \
|
|
133
|
-
--title "Pick the settings \
|
|
134
|
-
layout" \
|
|
135
|
-
--option a="Layout A" \
|
|
136
|
-
--option b="Layout B" \
|
|
137
|
-
--option c="Layout C" \
|
|
138
|
-
--mock a=mocks/a.html \
|
|
139
|
-
--mock b=mocks/b.html \
|
|
140
|
-
--mock c=mocks/c.html \
|
|
141
|
-
--tradeoff "A is fastest \
|
|
142
|
-
to tap; B shows both \
|
|
143
|
-
choices; C fits small \
|
|
144
|
-
screens." \
|
|
145
|
-
--recommend b
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
<picture>
|
|
149
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/media/kind-design-dark.webp">
|
|
150
|
-
<img src="docs/media/kind-design.webp" alt="Three mock-ups side by side in phone frames with Pick buttons, Layout B recommended">
|
|
151
|
-
</picture>
|
|
152
|
-
|
|
153
|
-
*Three layouts side by side. Layout B is recommended.*
|
|
154
|
-
|
|
155
|
-
### Proof update, with Pass / Fail / Needs work
|
|
156
|
-
|
|
157
|
-
```sh
|
|
158
|
-
sign-off-axi post \
|
|
159
|
-
--type evidence \
|
|
160
|
-
--title "Settings page \
|
|
161
|
-
loads in a second" \
|
|
162
|
-
--about "Umer opens \
|
|
163
|
-
the new page on a phone." \
|
|
164
|
-
--media shot-light.png \
|
|
165
|
-
--media shot-dark.png
|
|
33
|
+
--title "Keep the weekly digest?" \
|
|
34
|
+
--why "The paid plan renews Monday." \
|
|
35
|
+
--outcome yes="It keeps going out." --outcome no="It stops this week." \
|
|
36
|
+
--recommend yes --recommend-reason "Readers still open it." --default yes
|
|
37
|
+
sign-off-axi answers --key keep-the-weekly-digest # read the tap back
|
|
166
38
|
```
|
|
167
39
|
|
|
168
|
-
|
|
169
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/media/kind-evidence-dark.webp">
|
|
170
|
-
<img src="docs/media/kind-evidence.webp" alt="Evidence update 1 with two captures and Pass, Fail, Needs work buttons">
|
|
171
|
-
</picture>
|
|
40
|
+
You need Node 22.5 or newer. `init` installs the skill for each coding agent it finds on your `PATH`; `sign-off-axi --help` lists every command, and every command takes `--help`.
|
|
172
41
|
|
|
173
|
-
|
|
42
|
+
## The board
|
|
174
43
|
|
|
175
|
-
|
|
44
|
+
Four places, in the bar at the bottom of a phone and the sidebar on a desk.
|
|
176
45
|
|
|
177
|
-
|
|
46
|
+
<table>
|
|
47
|
+
<tr>
|
|
48
|
+
<td align="center" width="25%"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/media/phone-today-dark.webp"><img src="docs/media/phone-today.webp" alt="Today: counts of what needs you, what was proven and new reports, then the waiting asks"></picture><br><b>Today</b><br>What needs you, what was proven, what is new.</td>
|
|
49
|
+
<td align="center" width="25%"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/media/phone-decide-dark.webp"><img src="docs/media/phone-decide.webp" alt="Decide: one card per ask that waits on you, filtered by type"></picture><br><b>Decide</b><br>Every ask that waits on you, one tap each.</td>
|
|
50
|
+
<td align="center" width="25%"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/media/phone-evidence-dark.webp"><img src="docs/media/phone-evidence.webp" alt="Evidence: a capture of the finished work with its result, grouped by project"></picture><br><b>Evidence</b><br>Proof that a change works, with its honest result.</td>
|
|
51
|
+
<td align="center" width="25%"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/media/phone-reports-dark.webp"><img src="docs/media/phone-reports.webp" alt="Reports: explainer pages you asked for"></picture><br><b>Reports</b><br>Explainers you asked for, to read.</td>
|
|
52
|
+
</tr>
|
|
53
|
+
</table>
|
|
178
54
|
|
|
179
|
-
|
|
180
|
-
sign-off-axi post \
|
|
181
|
-
--type explainer \
|
|
182
|
-
--title "Is the new \
|
|
183
|
-
sign-in clear?" \
|
|
184
|
-
--about "Two steps: \
|
|
185
|
-
password, then a code." \
|
|
186
|
-
--media explainer.mp4 \
|
|
187
|
-
--chapter 0:00=Start \
|
|
188
|
-
--chapter 0:02="The tap"
|
|
189
|
-
```
|
|
55
|
+
### Evidence is not a decision
|
|
190
56
|
|
|
191
|
-
|
|
192
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/media/kind-explainer-dark.webp">
|
|
193
|
-
<img src="docs/media/kind-explainer.webp" alt="An explainer card with a video player, chapter buttons and Yes/No">
|
|
194
|
-
</picture>
|
|
57
|
+
**Decide** holds only real asks: things an agent cannot do without your answer. **Evidence** holds proof (screenshots or a short recording of the running product) with the result of the check that made it: Passed, Not run, Failed, Did not finish or Could not check. A proof update is never counted as something that needs you; you can give it a verdict (Pass, Fail or Needs work) or dismiss it. **Today** counts the two separately: what needs you, and what was proven today.
|
|
195
58
|
|
|
196
|
-
|
|
59
|
+
### Plans and reports, on their own pages
|
|
197
60
|
|
|
198
|
-
|
|
61
|
+
<table>
|
|
62
|
+
<tr>
|
|
63
|
+
<td align="center" width="33%"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/media/phone-plan-dark.webp"><img src="docs/media/phone-plan.webp" alt="A plan page: the idea in one picture, then each section to approve or change"></picture><br><b>Plan</b><br>Approve or change each section, answer each decision, send it all back at once.</td>
|
|
64
|
+
<td align="center" width="33%"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/media/phone-report-dark.webp"><img src="docs/media/phone-report.webp" alt="A report page: the answer first, then a diagram to tap through"></picture><br><b>Report</b><br>An explainer page: the answer first, then a diagram and steps to tap through.</td>
|
|
65
|
+
<td align="center" width="33%"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/media/phone-signin-dark.webp"><img src="docs/media/phone-signin.webp" alt="A sign-in card: the service, what it unlocks, who waits and the time left"></picture><br><b>Sign-in</b><br>An agent needs you to log in: tap Open, then it carries on.</td>
|
|
66
|
+
</tr>
|
|
67
|
+
</table>
|
|
199
68
|
|
|
200
|
-
|
|
201
|
-
sign-off-axi report init \
|
|
202
|
-
.sign-off/mocks/sign-in
|
|
203
|
-
d=mocks/sign-in
|
|
204
|
-
sign-off-axi post \
|
|
205
|
-
--type report \
|
|
206
|
-
--title "Sign-in now \
|
|
207
|
-
takes 2 steps" \
|
|
208
|
-
--about "Why the code \
|
|
209
|
-
step moved first." \
|
|
210
|
-
--view $d/index.html \
|
|
211
|
-
--preview $d/preview.svg
|
|
212
|
-
```
|
|
69
|
+
A plan is what an agent wants to do before it starts. A report is an explanation you asked for. Both open over the board, and the board, not the agent's page, owns the answer buttons. A **sign-in card** goes to the top of Decide with the service, what it unlocks, who is waiting and the time left on the link; the agent closes it with `sign-off-axi signin done`.
|
|
213
70
|
|
|
214
|
-
|
|
215
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/media/kind-report-dark.webp">
|
|
216
|
-
<img src="docs/media/kind-report.webp" alt="An explainer page: the answer in one sentence, a diagram, steps to tap through, folded details">
|
|
217
|
-
</picture>
|
|
218
|
-
|
|
219
|
-
*An explainer page to tap through and read.*
|
|
220
|
-
|
|
221
|
-
### Diagram
|
|
222
|
-
|
|
223
|
-
```sh
|
|
224
|
-
sign-off-axi post \
|
|
225
|
-
--type diagram \
|
|
226
|
-
--title "Is this the \
|
|
227
|
-
sign-in flow?" \
|
|
228
|
-
--about "Password first, \
|
|
229
|
-
then a code, then in." \
|
|
230
|
-
--view flow.svg \
|
|
231
|
-
--recommend yes
|
|
232
|
-
```
|
|
71
|
+
### It keeps only what matters
|
|
233
72
|
|
|
234
|
-
|
|
235
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/media/kind-diagram-dark.webp">
|
|
236
|
-
<img src="docs/media/kind-diagram.webp" alt="A question shown with a three-box flow diagram at card width">
|
|
237
|
-
</picture>
|
|
73
|
+
A board that fills up with noise stops being read, so the rules sit at the door.
|
|
238
74
|
|
|
239
|
-
|
|
75
|
+
- A question must say why it is asked, what each answer does, which one the agent recommends and what happens if you stay quiet; one that does not is refused with the fix ([the question standard](docs/contract.md#ask-schema-1)).
|
|
76
|
+
- One decision is one card: raising the same question again changes nothing, and `--merge <key>` folds an older card into the better-asked one.
|
|
77
|
+
- Proof posted as a Pass/Fail question is refused, and proof that is mostly text, a placeholder or a test card is refused too: proof goes to Evidence, as a capture of the real product; a report must be a page to tap, not a wall of words.
|
|
78
|
+
- **Dismiss** hides a card from the board, **Undo** brings it back (`sign-off-axi dismiss <key>` and `restore <key>` do the same from a shell). `sign-off-axi dismiss --filer <id>` closes a finished task: every card that id still waits on leaves the board. Evidence and reports leave the main view a day after they were filed and wait under **Archived**; nothing is deleted, and Restore brings one back. A new ask that repeats an open ask on the same decision is refused, and answering one closes its twins.
|
|
240
79
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
```sh
|
|
244
|
-
sign-off-axi post \
|
|
245
|
-
--type interactive \
|
|
246
|
-
--title "How many \
|
|
247
|
-
testers approved?" \
|
|
248
|
-
--about "Tap the counter \
|
|
249
|
-
to add yourself." \
|
|
250
|
-
--view counter.html \
|
|
251
|
-
--option yes=Yes \
|
|
252
|
-
--option no="Needs \
|
|
253
|
-
work" \
|
|
254
|
-
--recommend yes
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
<picture>
|
|
258
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/media/kind-interactive-dark.webp">
|
|
259
|
-
<img src="docs/media/kind-interactive.webp" alt="A question with a sandboxed counter page to tap">
|
|
260
|
-
</picture>
|
|
261
|
-
|
|
262
|
-
*A live counter to tap, in a sandboxed page.*
|
|
263
|
-
|
|
264
|
-
### Sign-in link
|
|
265
|
-
|
|
266
|
-
```sh
|
|
267
|
-
sign-off-axi post \
|
|
268
|
-
--type signin \
|
|
269
|
-
--service "npm" \
|
|
270
|
-
--link \
|
|
271
|
-
https://example.com/abc123 \
|
|
272
|
-
--unlocks "Publish \
|
|
273
|
-
the release" \
|
|
274
|
-
--waits "Umer" \
|
|
275
|
-
--expires 15m \
|
|
276
|
-
--key npm-login
|
|
277
|
-
```
|
|
278
|
-
|
|
279
|
-
Later, when it worked:
|
|
280
|
-
|
|
281
|
-
```sh
|
|
282
|
-
sign-off-axi signin done \
|
|
283
|
-
--key npm-login
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
To hide a card as the Dismiss button does, or bring it back: `sign-off-axi dismiss <key>` and `sign-off-axi restore <key>`.
|
|
287
|
-
|
|
288
|
-
<picture>
|
|
289
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/media/kind-signin-dark.webp">
|
|
290
|
-
<img src="docs/media/kind-signin.webp" alt="A sign-in card on top with an Open button, what it unlocks, who waits and the time left">
|
|
291
|
-
</picture>
|
|
292
|
-
|
|
293
|
-
*A sign-in card: what it unlocks, who waits, the time left.*
|
|
294
|
-
|
|
295
|
-
### Release gate
|
|
296
|
-
|
|
297
|
-
```sh
|
|
298
|
-
sign-off-axi post \
|
|
299
|
-
--kind gate \
|
|
300
|
-
--from gate.json
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
A `gate.json` holds a run for the user: Approve or Fix first.
|
|
304
|
-
|
|
305
|
-
<picture>
|
|
306
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/media/kind-gate-dark.webp">
|
|
307
|
-
<img src="docs/media/kind-gate.webp" alt="A gate question with Approve recommended and Fix first">
|
|
308
|
-
</picture>
|
|
309
|
-
|
|
310
|
-
*A held run: Approve it or Fix first.*
|
|
311
|
-
|
|
312
|
-
### Retro finding
|
|
313
|
-
|
|
314
|
-
```sh
|
|
315
|
-
sign-off-axi post \
|
|
316
|
-
--kind finding \
|
|
317
|
-
--from finding.json
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
A `finding.json` asks the user to Apply or Skip a proposed fix.
|
|
321
|
-
|
|
322
|
-
<picture>
|
|
323
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/media/kind-finding-dark.webp">
|
|
324
|
-
<img src="docs/media/kind-finding.webp" alt="A finding question with Apply recommended and Skip">
|
|
325
|
-
</picture>
|
|
326
|
-
|
|
327
|
-
*A retro fix to Apply or Skip.*
|
|
328
|
-
|
|
329
|
-
## On your phone
|
|
330
|
-
|
|
331
|
-
The same board on a phone, light and dark.
|
|
332
|
-
|
|
333
|
-
<picture>
|
|
334
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/media/phone-dark.webp">
|
|
335
|
-
<img src="docs/media/phone-light.webp" width="320" alt="Board summary on a phone in light mode">
|
|
336
|
-
</picture>
|
|
337
|
-
|
|
338
|
-
*The summary, the waiting list, and the answers, in a phone frame.*
|
|
339
|
-
|
|
340
|
-
## On your screen
|
|
341
|
-
|
|
342
|
-
The waiting list and the summary at desk width, light and dark.
|
|
80
|
+
## What you can ask
|
|
343
81
|
|
|
344
|
-
|
|
345
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/media/desktop-dark.webp">
|
|
346
|
-
<img src="docs/media/desktop-light.webp" alt="Board summary at desk width in light mode">
|
|
347
|
-
</picture>
|
|
82
|
+
One line on what the agent runs per kind; the full reference is [docs/question-kinds.md](docs/question-kinds.md) and the message rules are in [docs/contract.md](docs/contract.md).
|
|
348
83
|
|
|
349
|
-
|
|
84
|
+
| Kind | The agent runs | You see |
|
|
85
|
+
|---|---|---|
|
|
86
|
+
| Yes or no, pick one | `raise --title ... --recommend ...` | buttons, the recommended one first |
|
|
87
|
+
| Design pick (mocks A/B/C) | `post --type design --mock a=... --mock b=... --link a=<url>` | mocks side by side, an Open live link under each option that has a `--link`, a note on any part |
|
|
88
|
+
| Proof update | `post --type evidence --media shot.png` | the capture, its result, Pass / Fail / Needs work |
|
|
89
|
+
| Proof with a file to install | `post --type evidence --media shot.png --attach app.apk` | the capture, and the file with its size and a Download button (any type, up to 1 GB, `SIGN_OFF_ATTACH_MAX_MB` to change) |
|
|
90
|
+
| Explainer video | `post --type explainer --media clip.mp4 --chapter 0:00=Start` | a player with chapter buttons, then Yes or No |
|
|
91
|
+
| Report page | `report init <folder>`, then `post --type report --view ...` | a page to tap through |
|
|
92
|
+
| Diagram, interactive page | `post --type diagram --view flow.svg` | the picture on the card; interactive pages run sandboxed |
|
|
93
|
+
| Plan | `post --kind plan --from plan.json` | sections to approve or change, decisions to answer |
|
|
94
|
+
| Sign-in link | `post --type signin --service npm --link <url> --unlocks ...` | an Open button and the time left |
|
|
350
95
|
|
|
351
96
|
## How agents use it
|
|
352
97
|
|
|
353
|
-
Every item records who filed it, and
|
|
354
|
-
event, by itself: the agent raises with `--filer my-agent` and blocks on
|
|
355
|
-
`sign-off-axi wait --filer my-agent`, which returns only that filer's
|
|
356
|
-
answers, each once, and the card shows **Seen by agent**. An agent that
|
|
357
|
-
cannot block can be woken instead: an `on_answer:` line in the
|
|
358
|
-
`config.yaml` beside the board names a command the board runs for every
|
|
359
|
-
answer. A `notify:` block in that config can send an HTTP POST when a card
|
|
360
|
-
enters Waiting on you, with its bearer token read from a named environment
|
|
361
|
-
variable, or, with `receiver: muxr`, from the muxr host's `notify-token`
|
|
362
|
-
file; `sign-off-axi notify test` sends a test notice. The full reference, with the worked example, is in
|
|
363
|
-
[docs/commands.md](docs/commands.md).
|
|
364
|
-
|
|
365
|
-
Every command takes `--help` and prints compact output with next-step hints.
|
|
366
|
-
sign-off itself calls no model and inherits the calling agent's model routing.
|
|
98
|
+
Every item records who filed it. The agent raises with `--filer my-agent`, then blocks on `sign-off-axi wait --filer my-agent`, which returns that filer's answers, each once, and the card shows **Seen by agent**. An agent that cannot block can be woken instead: an `on_answer:` line in the `config.yaml` beside the board names a command the board runs for every answer, and a `notify:` block can send an HTTP POST when a card enters Decide. The worked examples are in [docs/commands.md](docs/commands.md).
|
|
367
99
|
|
|
368
|
-
|
|
100
|
+
sign-off itself calls no model and inherits the calling agent's model routing. The shipped skill is deliberately thin: it tells the agent how to write a good card and defers to `sign-off-axi --help` for every flag, so an installed copy never goes stale.
|
|
369
101
|
|
|
370
|
-
|
|
371
|
-
npm install -g sign-off-axi
|
|
372
|
-
```
|
|
102
|
+
## Works alone, or with its siblings
|
|
373
103
|
|
|
374
|
-
|
|
375
|
-
skill for each coding agent on your `PATH`:
|
|
104
|
+
sign-off stands alone: the CLI and the skill need no other tool and no supervisor. They connect through one small written contract ([docs/contract.md](docs/contract.md)):
|
|
376
105
|
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
106
|
+
- **done-done** (verification) posts its proof as Evidence and holds a run for your Approve or Fix first as a gate.
|
|
107
|
+
- **learn-from-mistakes** (retros) posts each proposed change as a finding for you to Apply or Skip.
|
|
108
|
+
- **first-draft** (design) writes its review links into a design card, shown as real links to open the mock-up.
|
|
109
|
+
- **An agent supervisor**, such as Firstmate, or a lone agent in a terminal: both post the same asks, plans and reports and read the same answers.
|
|
380
110
|
|
|
381
111
|
## Docs and reference
|
|
382
112
|
|
|
@@ -397,12 +127,14 @@ npm pack
|
|
|
397
127
|
```
|
|
398
128
|
|
|
399
129
|
- `npm test`: full journeys
|
|
400
|
-
- `npm run build:skill`: skill
|
|
401
|
-
- `npm run build:demo`:
|
|
130
|
+
- `npm run build:skill`: writes the skill from `src/skill.ts`
|
|
131
|
+
- `npm run build:demo`: the website (`site/`) and the demo board at `/demo/`, built into `demo-dist/`
|
|
402
132
|
- `npm pack`: tarball
|
|
403
133
|
|
|
404
134
|
A release is a merged version-bump PR: CI publishes the new version to npm.
|
|
405
135
|
|
|
136
|
+
Change what a user sees or runs, and update this README, the skill (`src/skill.ts`), the website (`site/index.html`) and any screenshot they show in the same PR.
|
|
137
|
+
|
|
406
138
|
### Test runs never touch your board
|
|
407
139
|
|
|
408
140
|
With no board named, a bare command uses the nearest `.sign-off/` that
|