kaloko 0.5.1 → 0.6.0
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 +103 -0
- package/package.json +1 -1
- package/schemas/changelog.v1.json +83 -0
- package/schemas/config.v1.json +46 -0
- package/schemas/run.v1.json +27 -0
- package/schemas/scenario.v1.json +14 -1
- package/skills/kaloko/SKILL.md +39 -4
- package/skills/kaloko/reference/design.md +55 -0
- package/skills/kaloko/reference/docs.md +246 -0
- package/skills/kaloko/reference/integrations.md +67 -0
- package/skills/kaloko/reference/mcp.md +10 -1
- package/src/cli.mjs +304 -10
- package/src/lib/changelog-core.mjs +323 -0
- package/src/lib/changelog.mjs +399 -0
- package/src/lib/ci.mjs +71 -0
- package/src/lib/design-cli.mjs +22 -2
- package/src/lib/design-notes.mjs +191 -0
- package/src/lib/docs-core.mjs +450 -0
- package/src/lib/docs-export.mjs +271 -0
- package/src/lib/docs.mjs +221 -0
- package/src/lib/doctor.mjs +6 -1
- package/src/lib/figma.mjs +584 -0
- package/src/lib/git.mjs +23 -3
- package/src/lib/integrations-cli.mjs +211 -0
- package/src/lib/run.mjs +2 -2
- package/src/lib/screens-cli.mjs +36 -0
- package/src/lib/service.mjs +20 -1
- package/viewer/index.html +266 -30
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
# Visual changelog and docs with step references
|
|
2
|
+
|
|
3
|
+
The project keeps `CHANGELOG.md` (and guides in `docs/`) in the repository. You write and update them as part of
|
|
4
|
+
normal work; Kaloko turns step references into pictures from accepted runs and shows the changelog as a page that
|
|
5
|
+
clients, support and marketing can read.
|
|
6
|
+
|
|
7
|
+
## Step references
|
|
8
|
+
|
|
9
|
+
A picture in Markdown names a step instead of a PNG file:
|
|
10
|
+
|
|
11
|
+
```markdown
|
|
12
|
+
 newest accepted capture
|
|
13
|
+
 the capture of release 2.4.0
|
|
14
|
+
 the release before the one this entry belongs to
|
|
15
|
+

|
|
16
|
+
 a step of the product's default_scenario
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
`<scenario>` is the scenario id, `<step>` the node id. Without `locale` and `viewport` the reader's language and
|
|
20
|
+
the product's default screen are used. `state` picks a capture variant (`dark`, `webkit`, `reduce`: the values in
|
|
21
|
+
capture keys like `mobile.webkit.dark`). Check a reference with MCP `resolve_step_image` or
|
|
22
|
+
`GET /api/v1/orgs/<org>/steps/resolve?ref=…`: it answers the signed image URL, the run and how the version was found
|
|
23
|
+
(`release`, `app_version`, `reference_env`, `accepted`; `exact: false` means a fallback).
|
|
24
|
+
|
|
25
|
+
Never invent a step id or a version. Use ids from the scenario files and versions from `CHANGELOG.md` or git tags.
|
|
26
|
+
|
|
27
|
+
## After a user-visible change
|
|
28
|
+
|
|
29
|
+
1. Walk the affected steps and share the run as usual; a person accepts it on the canvas.
|
|
30
|
+
2. `kaloko changelog draft` prints the Unreleased entry: merged pull requests and commits since the last release,
|
|
31
|
+
grouped Added / Changed / Fixed / Removed, plus before/after pictures of the screens that accepted runs show
|
|
32
|
+
differently (it needs a token for the pictures). `--apply` writes it into `CHANGELOG.md`.
|
|
33
|
+
3. Edit the draft for people: what they can do now or what looks different, one change per line, no commit jargon.
|
|
34
|
+
Delete internal items (refactors, tests, CI). Keep the step references; move a picture under the line it shows.
|
|
35
|
+
Remove the `<!-- … -->` hints.
|
|
36
|
+
4. Commit `CHANGELOG.md` with the change. At release time `kaloko release <version>` (ask first: it records the
|
|
37
|
+
release on Kaloko) turns Unreleased into the version, records its pictures and prints the changelog page.
|
|
38
|
+
|
|
39
|
+
`--since v2.3.0` drafts from another tag; `--product shop` picks a product when the config has several.
|
|
40
|
+
|
|
41
|
+
## Templates
|
|
42
|
+
|
|
43
|
+
A changelog entry (Keep a Changelog):
|
|
44
|
+
|
|
45
|
+
```markdown
|
|
46
|
+
## [2.4.0] - 2026-10-12
|
|
47
|
+
|
|
48
|
+
### Added
|
|
49
|
+
|
|
50
|
+
- You can pay with Apple Pay in the checkout. ([#412](https://github.com/acme/shop/pull/412))
|
|
51
|
+
 
|
|
52
|
+
|
|
53
|
+
### Fixed
|
|
54
|
+
|
|
55
|
+
- The cart total no longer jumps while prices load on phones.
|
|
56
|
+

|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Release notes for a client (a sibling file, or the text of a release on your Git host):
|
|
60
|
+
|
|
61
|
+
```markdown
|
|
62
|
+
# What's new in the web shop, October
|
|
63
|
+
|
|
64
|
+
Customers can pay with Apple Pay. The button sits above the card form on phones and computers.
|
|
65
|
+
|
|
66
|
+

|
|
67
|
+
|
|
68
|
+
Also fixed: the cart total no longer jumps on phones.
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
A how-to guide (`docs/how-to/pay-with-apple-pay.md`):
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
# Pay with Apple Pay
|
|
75
|
+
|
|
76
|
+
1. Open the cart and choose **Checkout**.
|
|
77
|
+

|
|
78
|
+
2. Choose **Apple Pay** above the card form and confirm on your phone or Mac.
|
|
79
|
+

|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Rules: write for the person using the product; one change per line; before/after pictures for changes people see;
|
|
83
|
+
no internal names, prices or numbers you cannot show.
|
|
84
|
+
|
|
85
|
+
## Living docs
|
|
86
|
+
|
|
87
|
+
Guides live in the docs folder (`docs.dir`, default `docs/`; per product `products.<p>.docs.dir`), sorted the
|
|
88
|
+
Diátaxis way. Pick the folder by what the reader wants, not by the feature:
|
|
89
|
+
|
|
90
|
+
| Folder | The reader wants | Shape |
|
|
91
|
+
|---|---|---|
|
|
92
|
+
| `tutorials/` | to learn by doing, start to finish | one path that always works, a result at the end |
|
|
93
|
+
| `how-to/` | to get one task done | numbered steps, one picture per step people look for |
|
|
94
|
+
| `reference/` | to look a fact up | tables and lists, no story |
|
|
95
|
+
| `explanation/` | to understand why | prose, few pictures |
|
|
96
|
+
|
|
97
|
+
`index.md` (or `README.md`) is the page of its folder. Front matter is optional: `title` (else the first `# `
|
|
98
|
+
heading), `order` (sidebar position). `kaloko init --docs=full` creates the folders with a template in each
|
|
99
|
+
README (inside a comment, so it never shows).
|
|
100
|
+
|
|
101
|
+
A tutorial:
|
|
102
|
+
|
|
103
|
+
```markdown
|
|
104
|
+
---
|
|
105
|
+
title: Your first order
|
|
106
|
+
order: 1
|
|
107
|
+
---
|
|
108
|
+
# Your first order
|
|
109
|
+
|
|
110
|
+
In ten minutes you will have placed an order and seen it in your account.
|
|
111
|
+
|
|
112
|
+
1. Open the shop and put a tea in the cart.
|
|
113
|
+

|
|
114
|
+
2. Choose **Checkout** and pay with a test card.
|
|
115
|
+

|
|
116
|
+
|
|
117
|
+
You have placed your first order. Next: [track it](../how-to/track-an-order.md).
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
A reference page:
|
|
121
|
+
|
|
122
|
+
```markdown
|
|
123
|
+
# Order states
|
|
124
|
+
|
|
125
|
+
| State | What it means |
|
|
126
|
+
|---|---|
|
|
127
|
+
| Paid | The payment went through; the order waits for packing. |
|
|
128
|
+
| Shipped | The parcel left the warehouse. |
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
An explanation: plain paragraphs that say why ("Card payments are confirmed the next morning, so a cancelled order
|
|
132
|
+
costs the customer nothing"), with a picture only when it shows the point.
|
|
133
|
+
|
|
134
|
+
Link pages with relative `.md` links (`[track it](../how-to/track-an-order.md)`); Kaloko and every export rewrite
|
|
135
|
+
them. Keep one task per how-to; split a page that needs two "and then" headings.
|
|
136
|
+
|
|
137
|
+
### Training guides
|
|
138
|
+
|
|
139
|
+
A how-to or tutorial is also a walkthrough: on Kaloko, "Walk through it step by step" shows one step at a time,
|
|
140
|
+
full screen, with the step's words as the caption, and readers tick "I tried it". Each list item (or paragraph)
|
|
141
|
+
with a picture becomes one step; a picture on its own line belongs to the words above it; a before/after pair shows
|
|
142
|
+
the after. So for guides people train with: one action per item, the picture right under it, words that make sense
|
|
143
|
+
without the paragraphs around them.
|
|
144
|
+
|
|
145
|
+
### Translations
|
|
146
|
+
|
|
147
|
+
Translations sit next to the original: `pay.md` and `pay.cs.md`. `docs.languages: [en, cs]` names the languages;
|
|
148
|
+
the first is the language of the originals. Pictures follow the language of the text (a Czech page shows Czech
|
|
149
|
+
screens) unless a reference names `locale=`.
|
|
150
|
+
|
|
151
|
+
When you change an original, update its translations in the same change. Translate the words, keep the step
|
|
152
|
+
references as they are. To say which version of the original a translation follows, put the first characters of
|
|
153
|
+
the original's SHA-256 in the translation's front matter (`source_hash: 1a2b3c4d`; `shasum -a 256 pay.md`);
|
|
154
|
+
without it, `kaloko docs check` compares git dates. It reports missing and outdated translations as warnings.
|
|
155
|
+
|
|
156
|
+
### Stale sections and `kaloko docs check`
|
|
157
|
+
|
|
158
|
+
`kaloko docs publish` sends the folder to Kaloko as the docs of `latest` (`--version 2.4.0` for a release;
|
|
159
|
+
`kaloko release` publishes the folder for its version by itself). When a page's text changes, Kaloko remembers the
|
|
160
|
+
screen behind each of its references. When an accepted run later shows a different screen, the section reads
|
|
161
|
+
"the screen changed in 2.4 — check the text" for the people who write the docs.
|
|
162
|
+
|
|
163
|
+
Before a pull request that changes screens, and in CI:
|
|
164
|
+
|
|
165
|
+
1. `kaloko docs check` (add `--json` to read it as data). Errors: broken references, steps the scenario files do
|
|
166
|
+
not have, references without an accepted picture, stale sections. Warnings: missing or outdated translations,
|
|
167
|
+
user-visible changelog items without a picture (mark one with `<!-- no picture -->` when there is nothing to
|
|
168
|
+
show). Exit code 1 on errors; `--strict` also on warnings.
|
|
169
|
+
2. For each stale section, open the step (`resolve_step_image` or the link on the page), compare, and rewrite the
|
|
170
|
+
words that no longer fit. Editing the text clears the note at the next `kaloko docs publish`.
|
|
171
|
+
3. If the text still fits, say so to the person; with their go-ahead `kaloko docs publish --reviewed` clears the
|
|
172
|
+
notes without a text change. Never use `--reviewed` to silence notes you have not read.
|
|
173
|
+
|
|
174
|
+
MCP: `docs_check` (the same report for the published docs), `get_docs` (the sidebar, or a page with its sections,
|
|
175
|
+
stale sections and training steps).
|
|
176
|
+
|
|
177
|
+
### Exports
|
|
178
|
+
|
|
179
|
+
`kaloko export --format md|docusaurus|vitepress|mkdocs|html|pdf|json [--product p] [--version v] [--lang cs]`
|
|
180
|
+
writes the docs and the changelog with the pictures as files: Markdown with an `assets/` folder (any static site),
|
|
181
|
+
a Docusaurus, VitePress or MkDocs folder with sidebars and front matter, offline HTML, a PDF (printed by the
|
|
182
|
+
browser), or the changelog as JSON (`schemas/changelog.v1.json`). `--local` exports the files in the repository
|
|
183
|
+
instead of what was published; `--what docs|changelog` exports one of them. The docs and changelog pages offer the
|
|
184
|
+
same downloads. An existing docs site keeps its own build: export into its folder and commit the result, or run the
|
|
185
|
+
export in its CI.
|
|
186
|
+
|
|
187
|
+
### Release tools in CI
|
|
188
|
+
|
|
189
|
+
When release-please, changesets or semantic-release makes the releases, Kaloko follows them:
|
|
190
|
+
`kaloko ci github --release` writes `.github/workflows/kaloko-release.yml`, which runs
|
|
191
|
+
`kaloko release <version> --no-write` whenever a GitHub release is published (all three tools publish one). It
|
|
192
|
+
reads the entry the tool wrote, records the release with its pictures and publishes the docs of that version.
|
|
193
|
+
`kaloko ci github --release --snippet` prints the step to put after the tool's own step instead (release-please:
|
|
194
|
+
`if: steps.release.outputs.release_created`; changesets: `if: steps.changesets.outputs.published == 'true'`;
|
|
195
|
+
semantic-release: right after `npx semantic-release`). On GitLab, call `kaloko release <version> --no-write` in
|
|
196
|
+
the release job. Ask before writing a workflow.
|
|
197
|
+
|
|
198
|
+
### "What's new" e-mail
|
|
199
|
+
|
|
200
|
+
Readers subscribe per product on its changelog or docs page (Business). When a release is recorded, they get its
|
|
201
|
+
entry with pictures in their language. Nothing to do in the repository beyond writing the entry for people.
|
|
202
|
+
|
|
203
|
+
## Products, modules and versions
|
|
204
|
+
|
|
205
|
+
Without `products:` in `kaloko.config.yml` the project is the product and `CHANGELOG.md` in the root is its
|
|
206
|
+
changelog. Pick the pattern that fits; tag new scenarios accordingly without asking each time:
|
|
207
|
+
|
|
208
|
+
1. **One app, one team**: no products. Optional `docs: { changelog: CHANGELOG.md }`.
|
|
209
|
+
2. **Monorepo with several apps**: one product per app, each with its version file and changelog; every scenario
|
|
210
|
+
says `product: <slug>`.
|
|
211
|
+
```yaml
|
|
212
|
+
products:
|
|
213
|
+
shop:
|
|
214
|
+
name: { en: Web shop, cs: E-shop }
|
|
215
|
+
version: { source: package.json, path: apps/shop/package.json }
|
|
216
|
+
docs: { changelog: apps/shop/CHANGELOG.md }
|
|
217
|
+
project: eshop
|
|
218
|
+
reference_env: staging
|
|
219
|
+
admin:
|
|
220
|
+
version: { source: git-tag, pattern: "admin-v*" }
|
|
221
|
+
```
|
|
222
|
+
3. **Agency**: a project per client, a product per client deliverable; client guests of the project read only that
|
|
223
|
+
product's changelog.
|
|
224
|
+
4. **Large app with modules**: one product with `modules: [checkout, account, …]`; scenarios carry
|
|
225
|
+
`product:` and `module:`; one combined release changelog with a section per module if the team wants it.
|
|
226
|
+
|
|
227
|
+
The version comes from what the repository already uses: release-please, changesets, semantic-release,
|
|
228
|
+
`package.json` (or pyproject/Cargo/gemspec), else git tags `v*`. When a release tool writes `CHANGELOG.md`, Kaloko
|
|
229
|
+
reads its entry and never rewrites the file; put your draft into the pull request or release notes instead.
|
|
230
|
+
`reference_env` says which environment the pictures come from (default: any accepted run).
|
|
231
|
+
|
|
232
|
+
`kaloko doctor` warns when a product's version cannot be read or a scenario names no product while several exist.
|
|
233
|
+
|
|
234
|
+
## Readers
|
|
235
|
+
|
|
236
|
+
The changelog page (`/<org>/products/<product>/changelog`, or `/<org>/projects/<project>/changelog`) and the docs
|
|
237
|
+
(`…/docs`) are read by everyone who sees one of the product's projects, guests included. An admin of those projects may open it to
|
|
238
|
+
readers from the organization's verified domains or publish it (`/p/<org>/<product>/changelog` with an Atom feed;
|
|
239
|
+
not indexed until the organization allows it). `publish:` in the config only asks for it; an admin confirms on the
|
|
240
|
+
page. Never publish without the person asking.
|
|
241
|
+
|
|
242
|
+
## MCP
|
|
243
|
+
|
|
244
|
+
`get_changelog` (releases with entries; `resolve: true` adds the pictures), `draft_changelog_entry` (the service's
|
|
245
|
+
half of a draft: changed screens with before/after references), `resolve_step_image` (one reference),
|
|
246
|
+
`docs_check` (what needs attention in the published docs), `get_docs` (the docs, or one page).
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Jira, Linear, channels and hosted runs
|
|
2
|
+
|
|
3
|
+
What the organization connected on kaloko.app (Settings → Integrations, done by an
|
|
4
|
+
admin) and what you may do with it from the CLI and MCP.
|
|
5
|
+
|
|
6
|
+
## Issues in Jira or Linear
|
|
7
|
+
|
|
8
|
+
When a reviewer returned a step or a criterion fails and the team tracks work in
|
|
9
|
+
Jira or Linear, file it there from the step instead of copying text by hand:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
kaloko issue create --step checkout --to jira --criterion AC2 --note "Total ignores the voucher"
|
|
13
|
+
kaloko issue list --state open
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
- `--run <id>` names the shared run; without it the current run is used once it
|
|
17
|
+
is shared. MCP: `create_issue`, `list_issues`.
|
|
18
|
+
- The issue gets the screenshot, the criterion with its evidence, the reviewers'
|
|
19
|
+
open notes on the step and a link back to the step. The project or team comes
|
|
20
|
+
from the admin's mapping per Kaloko project; `--target WEB` overrides it.
|
|
21
|
+
- The returned note on the step (or a new comment) mirrors the issue: when the
|
|
22
|
+
issue is done or cancelled in the tracker, the thread gets a reply and is
|
|
23
|
+
resolved; reopened, it opens again. Do not resolve that thread yourself.
|
|
24
|
+
- Needs the Developer / Tester role and a token with the comment scope. A 409
|
|
25
|
+
means the tracker is not connected or the project has no mapping: tell the
|
|
26
|
+
person, an admin sets it up.
|
|
27
|
+
- Name the issue key in the branch (`feat/WEB-12-gift-cards`, Linear's
|
|
28
|
+
`anna/eng-42-…`) or the pull request title, or `issue: { key: WEB-12 }` in the
|
|
29
|
+
scenario: the run links to the issue and the issue gets a comment with the run.
|
|
30
|
+
|
|
31
|
+
Ask before filing issues in bulk; one issue per real problem, not per criterion.
|
|
32
|
+
|
|
33
|
+
## Channels per project
|
|
34
|
+
|
|
35
|
+
Slack and Teams channels are chosen per project by an admin, with the events
|
|
36
|
+
each wants (new run, returned, accepted, comment, mention, release recorded) and
|
|
37
|
+
quiet hours. Nothing to do from the CLI: sharing, returning and recording a
|
|
38
|
+
release reach the right channels. Restricted projects reach only channels that
|
|
39
|
+
name them.
|
|
40
|
+
|
|
41
|
+
## Hosted runs
|
|
42
|
+
|
|
43
|
+
Kaloko can open a read-only scenario's pages on its own browsers every day or
|
|
44
|
+
week and share the run like yours (Business plan, a monthly page budget):
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
kaloko schedule add --scenario qa/flows/public.yml --env production --every day --at 5
|
|
48
|
+
kaloko schedule add --scenario qa/flows/account.yml --env staging --every week --weekday mon --account anna
|
|
49
|
+
kaloko schedule list # next and last run, pages used this month
|
|
50
|
+
kaloko schedule run <id> # starts within 15 minutes
|
|
51
|
+
kaloko schedule pause|resume|remove <id>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
- Works for: public pages, pages behind HTTP Basic (the environment's
|
|
55
|
+
`access.basic` variables are sent once and stored encrypted), and signed-in
|
|
56
|
+
pages through a session saved with `kaloko auth save` (`--account`, cookies only).
|
|
57
|
+
- Opens only steps whose script just opens the page (`steps/open.mjs`, or a
|
|
58
|
+
script that only calls `page.goto`). Steps that click or type are left out and
|
|
59
|
+
named in the answer. Criteria decided: `exists`, `absent`, `count`, `text_*`,
|
|
60
|
+
`attr_*`, `title_matches`, `meta_matches`; the rest shows "not evaluated".
|
|
61
|
+
- Does not work for: native apps, local or private addresses (localhost, IPs,
|
|
62
|
+
`.local`), header credentials, base URLs per locale.
|
|
63
|
+
- For those, or for the full walk on a schedule, write a GitHub Actions
|
|
64
|
+
workflow instead: `kaloko schedule export github --scenario <file> --env <name>
|
|
65
|
+
[--every week] [--at 5]`. It names the repository secrets it needs.
|
|
66
|
+
- A 404 from `schedule add` means hosted runs are not enabled on this service:
|
|
67
|
+
use the workflow.
|
|
@@ -33,9 +33,13 @@ file.
|
|
|
33
33
|
| `decide_step` | records your (the agent's) decision on a step: `approve`, or `return` with a `note`; marked as an agent's and not counted as a person's. Never use it to approve for a person |
|
|
34
34
|
| `revoke_carried_approval` | revokes an approval carried over to a step that looks unchanged but should be looked at again (`run_id`, `step`) |
|
|
35
35
|
| `get_step_assets` | documentation layer (Business): newest capture of every step of a scenario with stable image, HTML and metadata URLs (`scenario`, `step`, `locale`, `viewport`, `accepted`) |
|
|
36
|
+
| `get_changelog` | the visual changelog of a product (`product`, `version`, `resolve: true` for the pictures, `limit`): releases newest first with the entry as written and its groups; see [docs.md](docs.md) |
|
|
37
|
+
| `draft_changelog_entry` | what accepted runs since the last release (or `since`) show differently, as a Keep a Changelog draft with before/after step references (`product`, `since`) |
|
|
38
|
+
| `resolve_step_image` | one step reference (`ref` = `kaloko:<scenario>/<step>?…`, `product`, `version`, `locale`, `viewport`) as a signed image URL with its run, how the version was found and canvas links |
|
|
36
39
|
| `list_step_changes` | documentation layer: steps whose capture or status changed since the previous accepted run or `since` (`scenario`, `since`, `accepted`); see [documentation.md](documentation.md) |
|
|
37
40
|
| `get_started` | where the organization stands (`empty`, `sample`, `active`), its sample run, the next steps and a prompt; call it in a new project, see [first-run.md](first-run.md) |
|
|
38
41
|
| `add_sample_run` | adds the sample run (or returns the one there is); needs an upload or full token and the Developer / Tester role |
|
|
42
|
+
| `search_screens` | the screen library: newest screenshot of every step across the organization's flows (`q` words matched against titles, ids, paths, URLs, page title and H1; `project`, `product`, `module`, `scenario`, `locale`, `viewport`, `device`, `status`, `environment`; `source: design` or `all` for design versions; `group: none` for every locale and viewport; `cursor` from `next`), each with a signed image and the canvas link |
|
|
39
43
|
| `get_affected_steps` | which steps of a scenario changed files reach, with the reason per step (`scenario`, `changed_files`, `run_id`, `upstream`); route files are matched against the step paths and URLs of the newest run. Imports and `affects:` globs need the repository: `kaloko affected` follows them |
|
|
40
44
|
|
|
41
45
|
## Comment tools
|
|
@@ -49,6 +53,9 @@ file.
|
|
|
49
53
|
| `get_signoff_record` | the signed acceptance record of an accepted run (Business): approvals with provenance, criteria, capture hashes, signature |
|
|
50
54
|
| `resolve_comment` | close a thread with a `note` that says what changed (it becomes the last reply) |
|
|
51
55
|
| `reopen_comment`, `edit_comment`, `delete_comment` | reopen; edit or delete your own comment |
|
|
56
|
+
| `create_issue` | a Jira or Linear issue from a step (`run_id`, `step`, `to`: jira or linear, optional `criterion`, `title`, `note`, `locale`, `viewport`, `target`): screenshot, criterion, notes and a link back; the step's thread resolves when the issue is done. Developer / Tester, scope comment; see [integrations.md](integrations.md) |
|
|
57
|
+
| `list_issues` | issues created from steps with key, URL and state (`run_id`, `scenario`, `state`) |
|
|
58
|
+
| `list_schedules`, `run_schedule` | hosted runs: schedules of read-only scenarios on Kaloko's browsers with the month's page budget; start one now (`id`) |
|
|
52
59
|
|
|
53
60
|
Writes need a token with scope full. Follow *Processing feedback* in
|
|
54
61
|
[collaboration.md](collaboration.md).
|
|
@@ -76,6 +83,8 @@ The same data and permissions as the REST API; each tool is its REST route.
|
|
|
76
83
|
| `list_step_changes` | steps that differ between two references (default design reference → draft) |
|
|
77
84
|
| `get_references`, `get_tokens` | design reference and baseline; the project's token set |
|
|
78
85
|
| `get_draft_feedback` | draft comments, pinned ones with their element |
|
|
79
|
-
| `
|
|
86
|
+
| `get_version_notes` | what changed in a version (`version`: vN or run id) or what publishing the draft now would say (`version: draft`): a summary and one plain sentence per changed step; text by default, `format: json` for the structure |
|
|
87
|
+
| `publish_version`, `set_reference`, `set_step_status`, `add_draft_comment` | writes: need a token with scope full; ask first where the skill says so. `publish_version` takes `notes` (a summary, then `step-id: text` lines, or `{ summary, steps }`) |
|
|
88
|
+
| `set_version_notes` | rewrite the summary or step texts of a published version's notes (design scope) |
|
|
80
89
|
|
|
81
90
|
Files are not uploaded over MCP: the CLI (`kaloko sync`) or the REST blob endpoints carry them.
|