@vatio-ai/skills 2.0.0 → 2.2.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.
@@ -12,7 +12,7 @@
12
12
  "name": "vatio",
13
13
  "source": "./",
14
14
  "description": "Vatio skills and MCP for Claude Code, Cursor and Codex: build and test an AI agent for the app you're building with /vatio-init, improve it daily with /vatio-improve and learn what people ask it with /vatio-analyze. Vatio holds the agent; no config files in your repo.",
15
- "version": "2.0.0",
15
+ "version": "2.2.0",
16
16
  "homepage": "https://vatio.ai/docs/integrations/claude-code",
17
17
  "category": "development",
18
18
  "keywords": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vatio",
3
3
  "description": "Vatio skills and MCP for Claude Code, Cursor and Codex: build and test an AI agent for the app you're building with /vatio-init, improve it daily with /vatio-improve and learn what people ask it with /vatio-analyze. Vatio holds the agent; no config files in your repo.",
4
- "version": "2.0.0",
4
+ "version": "2.2.0",
5
5
  "author": {
6
6
  "name": "Vatio",
7
7
  "url": "https://vatio.ai"
package/README.md CHANGED
@@ -11,20 +11,20 @@ Then, in Claude Code, approve the **vatio** MCP server it asks about, sign in
11
11
  to Vatio, and run `/vatio-init` (in Cursor or Codex, ask it to use
12
12
  vatio-init). It builds the agent from your project, writes its tests and puts
13
13
  it in your app; [Vatio](https://vatio.ai) holds and runs it, with an inbox,
14
- human handoff and the tests checked before every publish. There are no config
15
- files to keep in your repository: the agent lives on Vatio and your coding
16
- agent changes it through the Vatio MCP.
14
+ human handoff and the tests checked before every change reaches your users.
15
+ There are no config files to keep in your repository: the agent lives on
16
+ Vatio and your coding agent changes it through the Vatio MCP.
17
17
 
18
18
  After launch, report mistakes in the inbox and make `/vatio-improve` your
19
- daily routine. Your coding agent fixes the agent, Vatio replays the reported
20
- cases and your tests, and you approve the update. You do not need to write
21
- code yourself; you need your app’s project on your computer and Node.js 20 or
22
- newer.
19
+ daily routine. You approve each fix, your coding agent makes it, and Vatio
20
+ replays the reported cases and your tests: the fix reaches your users once
21
+ nothing that worked breaks. You do not need to write code yourself; you need
22
+ your app’s project on your computer and Node.js 20 or newer.
23
23
 
24
24
  | Skill | What it does |
25
25
  |---|---|
26
26
  | `vatio-init` | The first one in a project: looks at what is already there (the workspaces your account reaches, the app's code) and recommends from it. With no agent yet, builds one through the MCP: asks the owner what the code does not answer, writes its instructions, knowledge and tools, tries it, writes its tests, puts the widget or SDK in your app and hands over a link to try. With one, gets a developer who joined the project up to speed |
27
- | `vatio-improve` | Takes every reply your supervisors reported in the inbox in one session: reads `list_reports`, fixes each cause, proves it with `run_tests` (on Vatio's servers) and publishes after your approval |
27
+ | `vatio-improve` | Takes every reply your supervisors reported in the inbox in one session: reads `list_reports`, fixes each cause after your approval and proves it with `run_tests` (on Vatio's servers); the fix reaches your users once the tests that pass today pass on it |
28
28
  | `vatio-analyze` | Reads what people talked about with the agent between two dates, from `list_conversations` (redacted by Vatio before it leaves): topics with their counts, the questions it could not answer and the words people use, in a report for writing content, FAQs or knowledge. Anyone on the workspace's team can run it, viewers included |
29
29
  | `vatio-share-session` | Sends the coding session to the Vatio team when you ask it to, after showing you what goes (images left out, anything that looks like a secret redacted), with your feedback if you want to add some |
30
30
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vatio-ai/skills",
3
- "version": "2.0.0",
3
+ "version": "2.2.0",
4
4
  "description": "Vatio skills and MCP for Claude Code, Cursor and Codex: build and test an AI agent for the app you're building with /vatio-init, improve it daily with /vatio-improve and learn what people ask it with /vatio-analyze. Vatio holds the agent; no config files in your repo.",
5
5
  "keywords": [
6
6
  "vatio",
@@ -16,10 +16,10 @@ Vatio keeps the instructions for working the reports on the platform, so they
16
16
  are never out of date here. Start by reading them: `list_workspaces` for the
17
17
  slug (or the one the app names), then `list_reports`. It returns every open
18
18
  report (the conversation, each tool call with what the backend answered, and
19
- the supervisor's note), then the tests that fail on preview and the ones the
20
- agent answers differently each time, with how to work them at the top, and
21
- every test last. Follow those instructions; they take precedence over
22
- anything below.
19
+ the supervisor's note), then the tests that fail on the newest version and
20
+ the ones the agent answers differently each time, with how to work them at
21
+ the top, and every test last. Follow those instructions; they take
22
+ precedence over anything below.
23
23
 
24
24
  In short:
25
25
 
@@ -34,7 +34,9 @@ In short:
34
34
  `remove_test` removes a report and its test for everyone. It is the
35
35
  developer's call: propose it (a report Vatio caused, one that asks for
36
36
  something the agent must not do, one whose fix is in but the tests cannot
37
- reproduce) and run it only when they say so.
37
+ reproduce) and run it only when they say so. A report on one of the
38
+ team's own conversations (its Conversation row says `your team's`) is a
39
+ test like any other: work it the same way.
38
40
  2. Group the reports by cause, and fix each cause where it lives:
39
41
  `update_agent` (instructions, tools, knowledge, links),
40
42
  `write_knowledge_entry`, `set_tool`, or the app's backend a tool calls
@@ -42,31 +44,42 @@ In short:
42
44
  error rate, timeouts and latency, and the calls that failed with what the
43
45
  backend answered: a failing tool rarely gets reported, because the agent
44
46
  apologizes and moves on. Fix those too. After the reports come the tests
45
- that fail on preview and the ones the agent answers differently each time:
46
- work those too, as their sections say. Never remove a test because it
47
- fails. Something the developer asks the agent to do that no report covers
48
- is a test first: `add_test` with `question` and `should` asks it on preview,
49
- and `get_test` with the `chat_id` it answers with says whether it passes
50
- now; then fix until it does.
51
- 3. Each change lands on preview at once and runs no tests. `get_agent` reads
52
- the agent whole before you change it.
53
- 4. `run_tests` replays every report and test against preview on Vatio's
54
- servers and returns the run ids; `get_test_results` with each id shows the
55
- report so far. It takes a few minutes: ask again until it has finished. A
56
- case that did not pass names the conversation of its replay
47
+ that fail on the newest version and the ones the agent answers differently
48
+ each time: work those too, as their sections say. Never remove a test
49
+ because it fails. Something the developer asks the agent to do that no
50
+ report covers is a test first: `add_test` with `question` and `should`
51
+ asks it in a new conversation, and `get_test` with the `chat_id` it
52
+ answers with says whether it passes now; then fix until it does.
53
+ 3. Reports come from people who talk to the agent, so show the developer
54
+ each fix first and change the agent (`update_agent`,
55
+ `write_knowledge_entry`, `set_tool`) once they agree. There is nothing to
56
+ publish: each change reaches the team at once (`chat_with_agent` talks to
57
+ it) and everyone a few minutes later, once the tests that pass today pass
58
+ on it. `get_agent` reads the agent whole before you change it.
59
+ 4. `run_tests` replays every report and test against the newest version on
60
+ Vatio's servers and returns the run ids; `get_test_results` with each id
61
+ shows the report so far. It takes a few minutes: ask again until it has
62
+ finished. A case that did not pass names the conversation of its replay
57
63
  (`get_conversation`). Iterate (fix, `run_tests`) until the reports pass
58
- and nothing that passes on live fails. A case marked "not tested (Vatio's
64
+ and nothing that passed before fails. A case marked "not tested (Vatio's
59
65
  side)" says nothing about your fix: run the tests again. One not tested
60
66
  because a tool needs a signed-in visitor replays signed in with
61
67
  `run_tests` and a `visitor_token`
62
68
  (https://vatio.ai/docs/authentication/tools.md#test-a-private-tool).
63
69
  Name reports by id (`F-7K2QX`).
64
- 5. Show the developer what passes now, and `publish` once they agree: it
65
- changes what visitors get. In a draft (no conversation from outside the
66
- team yet) live already runs every change, and `publish` says there is
67
- nothing to publish. If it is refused, follow its message. Never pass
68
- `force` unless the developer explicitly asks for it; `rollback` undoes a
69
- publish.
70
+ 5. `get_status` says whether the fix reached everyone, in `shipping.state`:
71
+ `live` when everyone has it, `testing` while Vatio replays the tests that
72
+ pass today on it (`testing.expected_by` says until about when), and `held`
73
+ when one of them fails on it in every attempt. Held, the team keeps it,
74
+ everyone else keeps the version before, and whoever made the change gets
75
+ an email; `shipping.held.tests` names each test, with the `chat_id` of its
76
+ replay. Another change that fixes it moves it on, as does `remove_test`
77
+ for a test the change made obsolete (the developer's call) or a
78
+ `run_tests` run that passes; there is no way to force it. Once the fix
79
+ reaches everyone, the reports it passes are marked resolved in the inbox.
80
+ Tell the developer what passes now and where the change stands.
81
+ `rollback` undoes the last change for everyone, the team included: only
82
+ when they ask.
70
83
  6. Last, tell the Vatio team how it went, with the MCP's `send_feedback`
71
84
  (and the workspace's slug): which step of fixing the reports took the most
72
85
  work, and why (a report that left you guessing, a test that would not
@@ -69,7 +69,8 @@ endpoints become tools, what becomes knowledge. Then:
69
69
  person should take over (https://vatio.ai/docs/handoff.md). An endpoint the
70
70
  app does not have yet is yours to write in the app. A tool that writes (an
71
71
  order, a booking) needs a test value (`set_secret` with `tests: true`, a
72
- staging API) so tests never write to production.
72
+ staging API), which your team's conversations and every test use, so they
73
+ never write to production.
73
74
  4. **Try it** with `chat_with_agent`: a few representative conversations,
74
75
  including one that should hand off and one that asks for something it must
75
76
  not say. Read the tools each reply called and what the backend answered;
@@ -83,20 +84,22 @@ endpoints become tools, what becomes knowledge. Then:
83
84
  answers in `chat_with_agent`'s `files`.
84
85
  5. **Write down what it should do as tests.** For each question that
85
86
  matters, `add_test` with `question` (what a visitor would ask) and
86
- `should` (what the answer has to do). It asks it on preview and answers
87
- at once with a `chat_id` and how many seconds to wait: add the other tests
88
- meanwhile, then `get_test` with each `chat_id` shows the test and whether
89
- it passes now (while it is still being made, it says when to ask again).
90
- A reply you already have becomes one with `chat_id` or `message_id`. Three or four is enough to start, including the
91
- hand-off and something it must not say. This is the only thing that makes
92
- a later version's mistake visible: `run_tests` replays them all, and once
93
- the workspace is published `publish` refuses a version that breaks one. A
94
- workspace with no tests publishes with nothing checked, which is how a fix
95
- for one question quietly breaks another. Fix and `add_test` again until
96
- they pass; `run_tests` then `get_test_results` checks them all together.
87
+ `should` (what the answer has to do). It asks it in a new conversation and
88
+ answers at once with a `chat_id` and how many seconds to wait: add the
89
+ other tests meanwhile, then `get_test` with each `chat_id` shows the test
90
+ and whether it passes now (while it is still being made, it says when to
91
+ ask again). A reply you already have becomes one with `chat_id` or
92
+ `message_id`. Three or four is enough to start, including the hand-off and
93
+ something it must not say. This is the only thing that makes a later
94
+ change's mistake visible: Vatio replays the tests that pass today on every
95
+ change, and one that breaks a test reaches your team but not everyone
96
+ else. A workspace with no tests gets every change at once with nothing
97
+ checked, which is how a fix for one question quietly breaks another. Fix
98
+ and `add_test` again until they pass; `run_tests` then `get_test_results`
99
+ checks them all together.
97
100
  6. **Put it in the app.** `get_status` returns `put_in_the_app`: the
98
- publishable key and the widget's script tag, which work from any site
99
- (local and production alike), and `preview_key` to try preview locally.
101
+ publishable key and the widget's script tag. It is one key for
102
+ development and production alike, and works from any site or app.
100
103
  Add the widget (the tag, or `@vatio-ai/widget`) or the iOS, Android or
101
104
  Flutter SDK where the app's users are, in the app's style:
102
105
  https://vatio.ai/docs/channels/widget.md, https://vatio.ai/docs/sdk/ios.md,
@@ -107,13 +110,12 @@ endpoints become tools, what becomes knowledge. Then:
107
110
  pkey -in vatio-private.pem -pubout`), keep the private key in the backend's
108
111
  secrets (never in the frontend, never committed), `set_auth` with the
109
112
  public key, and follow https://vatio.ai/docs/authentication.md.
110
- 7. **Hand over.** `get_status` gives `try_preview`: the inbox with Try the
111
- agent open (web chat, WhatsApp and Instagram). Give it with what you tried
112
- and the tests. Until someone outside the team talks to the agent the
113
- workspace is a draft: every change reaches the app at once and there is
114
- nothing to publish, so you need not explain preview and live. Once
115
- `get_status` says it is no longer a draft, changes wait in preview:
116
- `publish` only when they ask.
113
+ 7. **Hand over.** `get_status` gives `try_it`: the inbox with Try the agent
114
+ open (web chat, WhatsApp and Instagram). Give it with what you tried and
115
+ the tests. There is nothing to publish: every change reaches the app on
116
+ its own, as **How a change reaches people** below says. Until people talk
117
+ to the agent you need not ask before each change; once they do, ask
118
+ first.
117
119
 
118
120
  ### A workspace already exists
119
121
 
@@ -123,6 +125,9 @@ create another. `get_agent` and `get_status`, then explain the agent from them
123
125
  from what you see:
124
126
 
125
127
  - open reports in `list_reports`: work them with the `vatio-improve` skill;
128
+ - a change held back from everyone (`shipping.state` is `held` in
129
+ `get_status`): `shipping.held.tests` says which test it breaks, and **How a
130
+ change reaches people** below what moves it on;
126
131
  - tools failing in `get_tool_health`: the fix is in the backend they call;
127
132
  - few or no tests (`list_reports` lists them last): offer to `add_test` what
128
133
  matters most;
@@ -134,6 +139,37 @@ change it through the MCP from now on. Recommend removing `vatio.yml`,
134
139
  `tools/` and `identity.pub` from the repository, so nobody pushes an old copy
135
140
  over it, and do it only with their yes.
136
141
 
142
+ ## How a change reaches people
143
+
144
+ The agent is one, and there is nothing to publish. Every change
145
+ (`update_agent`, `set_tool`, `set_backend`, `set_auth`, the knowledge tools)
146
+ reaches your team at once (`chat_with_agent`, Try the agent in the inbox,
147
+ Vatio's shared WhatsApp number and Instagram account) and everyone a few
148
+ minutes later, once the tests that pass today pass on it. With no tests,
149
+ everyone gets it at once.
150
+
151
+ 1. **Ask first when people already talk to the agent** (`impact` in
152
+ `get_status` counts its replies to them, or the person says so): say what
153
+ you will change and change it only with their yes. On a new agent nobody
154
+ talks to yet, there is no need to ask for each change.
155
+ 2. **Make the change, then try it** with `chat_with_agent`, which talks to
156
+ the newest version, and `add_test` what it must keep doing.
157
+ 3. **`get_status` says where it stands**, in `shipping.state`: `live` when
158
+ everyone has it, `testing` while Vatio replays the tests on it
159
+ (`testing.expected_by` says until about when), and `held` when a test that
160
+ passes today fails on it in every attempt. Held, your team keeps it,
161
+ everyone else keeps the version before, and whoever made the change gets
162
+ an email. `shipping.held.tests` names each test, with the `chat_id` of its
163
+ replay for `get_conversation` (with none, `shipping.held.reason` and
164
+ `message` say why). Another change that fixes it moves it on, as does
165
+ `remove_test` for a test the change made obsolete (their call) or a
166
+ `run_tests` run that passes. There is no way to force it.
167
+ 4. **`rollback` undoes the last change** for everyone, your team included.
168
+
169
+ A reply someone on the team reports on one of their own conversations (in
170
+ Try the agent, say) is a test like any other, resolved once the version
171
+ everyone has passes it.
172
+
137
173
  ## Claude Code permissions
138
174
 
139
175
  In Claude Code, once the agent works, check the project's
@@ -141,7 +177,7 @@ In Claude Code, once the agent works, check the project's
141
177
  no `mcp__vatio` rule, offer once to add the block in **Auto mode** on
142
178
  https://vatio.ai/docs/integrations/claude-code.md: it lets you call the Vatio
143
179
  tools without a prompt each time, and still asks the developer before
144
- `publish`, `rollback`, `set_secret` and the like. Add it only with their yes,
180
+ `rollback`, `set_secret` and the like. Add it only with their yes,
145
181
  merged into what the file has, never replacing it, and add no other rule.
146
182
  Never edit `~/.claude/settings.json`.
147
183
 
@@ -161,6 +197,6 @@ TERM` prints the sections that mention it, with their page, and
161
197
  `npx @vatio-ai/cli@latest docs PAGE` one page (`tools`, `knowledge`); neither
162
198
  needs a workspace or a sign-in.
163
199
 
164
- A tool that refuses says what to do next: follow it. `publish` with `force`,
165
- `rollback`, `remove_test`, `erase_contact` and anything that reaches real
166
- people (a chat on live, WhatsApp live on) are the person's call: ask first.
200
+ A tool that refuses says what to do next: follow it. A change to an agent
201
+ people already talk to, `rollback`, `remove_test`, `erase_contact` and
202
+ turning WhatsApp live on are the person's call: ask first.