@vatio-ai/skills 1.3.1 → 1.5.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/.claude-plugin/plugin.json +1 -1
- package/README.md +13 -4
- package/bin/install.mjs +21 -3
- package/package.json +1 -1
- package/skills/vatio-improve/SKILL.md +8 -1
- package/skills/vatio-init/SKILL.md +80 -0
- package/skills/vatio-share-session/SKILL.md +75 -0
- package/skills/vatio-new/SKILL.md +0 -41
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vatio",
|
|
3
3
|
"description": "Build a Vatio agent from your coding agent, then fix what supervisors flag and prove it with evals.",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.5.0",
|
|
5
5
|
"author": { "name": "Vatio", "url": "https://vatio.ai" },
|
|
6
6
|
"homepage": "https://vatio.ai/docs",
|
|
7
7
|
"repository": "https://github.com/vatio-ai/skills",
|
package/README.md
CHANGED
|
@@ -4,8 +4,9 @@ Skills for the coding agent working on your [Vatio](https://vatio.ai) agent.
|
|
|
4
4
|
|
|
5
5
|
| Skill | What it does |
|
|
6
6
|
|---|---|
|
|
7
|
-
| `vatio-
|
|
7
|
+
| `vatio-init` | The first one in a project: looks at what is already there (a `vatio.yml` anywhere in the repository, the app's code) and recommends from it. With no agent yet, builds one: asks the owner what the code does not answer, writes `vatio.yml`, pushes it and hands over a link to try. With one, gets a developer who joined the project up to speed |
|
|
8
8
|
| `vatio-improve` | Works through the replies your supervisors flagged in the inbox: reads `vatio flags`, fixes each cause on a branch, proves it with `vatio eval`, and opens a pull request |
|
|
9
|
+
| `vatio-share-session` | Sends the Claude Code session to the Vatio team when you ask it to, or offers to when the other two finish (send it, not now, or don't ask again), after showing you what goes (images left out, anything that looks like a secret redacted), with your feedback if you want to add some |
|
|
9
10
|
|
|
10
11
|
The skills are short on purpose. They tell your coding agent when to reach for
|
|
11
12
|
the Vatio CLI; the instructions themselves come from the platform when it runs
|
|
@@ -19,10 +20,17 @@ Any coding agent, from the root of your project:
|
|
|
19
20
|
npx @vatio-ai/skills
|
|
20
21
|
```
|
|
21
22
|
|
|
22
|
-
It copies
|
|
23
|
+
It copies the skills into `.agents/skills/` (Codex, Cursor, Gemini CLI,
|
|
23
24
|
GitHub Copilot, OpenCode and others) and `.claude/skills/` (Claude Code). Run
|
|
24
25
|
it again to update them.
|
|
25
26
|
|
|
27
|
+
Or with the open [skills](https://skills.sh) CLI, which asks which agents you
|
|
28
|
+
use and installs for those:
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
npx skills add vatio-ai/skills
|
|
32
|
+
```
|
|
33
|
+
|
|
26
34
|
Or in Claude Code, as a plugin:
|
|
27
35
|
|
|
28
36
|
```
|
|
@@ -31,8 +39,9 @@ Or in Claude Code, as a plugin:
|
|
|
31
39
|
```
|
|
32
40
|
|
|
33
41
|
Your agent then uses them on its own when you ask it to build, improve or fix
|
|
34
|
-
a Vatio agent, or you can call them by name:
|
|
35
|
-
|
|
42
|
+
a Vatio agent, or to send the session to Vatio, or you can call them by name:
|
|
43
|
+
`/vatio-init`, `/vatio-improve` and `/vatio-share-session`, or
|
|
44
|
+
`/vatio:vatio-init` and so on from the plugin.
|
|
36
45
|
|
|
37
46
|
`vatio init` also writes a pointer to `vatio flags` into the workspace's
|
|
38
47
|
`AGENTS.md`, which most coding agents read without installing anything.
|
package/bin/install.mjs
CHANGED
|
@@ -4,14 +4,15 @@
|
|
|
4
4
|
// .agents/skills/ Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode, Cline, Amp
|
|
5
5
|
// .claude/skills/ Claude Code, which does not read .agents/
|
|
6
6
|
// Running it again overwrites the copies with this version's.
|
|
7
|
-
import { cpSync, existsSync, readdirSync } from "node:fs";
|
|
7
|
+
import { cpSync, existsSync, readFileSync, readdirSync, rmSync } from "node:fs";
|
|
8
8
|
import { dirname, join, relative } from "node:path";
|
|
9
9
|
import { fileURLToPath } from "node:url";
|
|
10
10
|
|
|
11
11
|
const usage = `usage: npx @vatio-ai/skills [--dir PATH]
|
|
12
12
|
|
|
13
|
-
Copies the Vatio skills (vatio-
|
|
14
|
-
PATH/.claude/skills. PATH defaults to the current
|
|
13
|
+
Copies the Vatio skills (vatio-init, vatio-improve, vatio-share-session) into
|
|
14
|
+
PATH/.agents/skills and PATH/.claude/skills. PATH defaults to the current
|
|
15
|
+
directory.`;
|
|
15
16
|
|
|
16
17
|
const args = process.argv.slice(2);
|
|
17
18
|
let root = process.cwd();
|
|
@@ -34,6 +35,9 @@ if (!existsSync(root)) {
|
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
const source = join(dirname(fileURLToPath(import.meta.url)), "..", "skills");
|
|
38
|
+
// Skills this package used to ship under another name. Left in place, the old
|
|
39
|
+
// copy would answer the same requests as the new one.
|
|
40
|
+
const RENAMED = { "vatio-new": "vatio-init" };
|
|
37
41
|
const skills = readdirSync(source, { withFileTypes: true })
|
|
38
42
|
.filter((entry) => entry.isDirectory())
|
|
39
43
|
.map((entry) => entry.name);
|
|
@@ -44,6 +48,20 @@ for (const target of [".agents/skills", ".claude/skills"]) {
|
|
|
44
48
|
cpSync(join(source, skill), dest, { recursive: true, force: true });
|
|
45
49
|
console.log(` ${relative(process.cwd(), join(dest, "SKILL.md")) || dest}`);
|
|
46
50
|
}
|
|
51
|
+
for (const [old, current] of Object.entries(RENAMED)) {
|
|
52
|
+
const dest = join(root, target, old);
|
|
53
|
+
if (!installedByUs(dest, old)) continue;
|
|
54
|
+
rmSync(dest, { recursive: true, force: true });
|
|
55
|
+
console.log(` removed ${relative(process.cwd(), dest) || dest} (now ${current})`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function installedByUs(dir, name) {
|
|
60
|
+
try {
|
|
61
|
+
return readFileSync(join(dir, "SKILL.md"), "utf8").includes(`\nname: ${name}\n`);
|
|
62
|
+
} catch {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
47
65
|
}
|
|
48
66
|
|
|
49
67
|
console.log(`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vatio-ai/skills",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "Agent skills for building and improving a Vatio agent from your coding agent: Claude Code, Codex, Cursor, Gemini CLI, Copilot and any agent that reads SKILL.md",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"vatio",
|
|
@@ -22,7 +22,11 @@ top. Follow those instructions; they take precedence over anything below.
|
|
|
22
22
|
In short:
|
|
23
23
|
|
|
24
24
|
1. Group the flags by cause, and fix each cause where it lives: `vatio.yml`,
|
|
25
|
-
a knowledge entry, a tool, or the backend a tool calls.
|
|
25
|
+
a knowledge entry, a tool, or the backend a tool calls. `vatio tools --env
|
|
26
|
+
live` shows each tool's error rate, timeouts and latency across every
|
|
27
|
+
conversation, and the calls that failed with what the backend answered: a
|
|
28
|
+
failing tool rarely gets flagged, because the agent apologizes and moves
|
|
29
|
+
on. Fix those too.
|
|
26
30
|
2. Work on a git branch. `vatio push` deploys it to the branch's own
|
|
27
31
|
environment, never to live.
|
|
28
32
|
3. Prove it with `vatio eval`: every flag made on live, or before the first publish, is an eval case, replayed against
|
|
@@ -37,6 +41,9 @@ In short:
|
|
|
37
41
|
inbox, which publishes it. Never `vatio publish` it yourself.
|
|
38
42
|
5. If the digest, an error or the docs left you guessing, say so:
|
|
39
43
|
`vatio feedback "what you were doing and what was missing"`.
|
|
44
|
+
6. Last, in Claude Code, offer to send this session to the Vatio team, as
|
|
45
|
+
the `vatio-share-session` skill says. It starts with
|
|
46
|
+
`vatio share-session --should-ask`: if that prints `no`, say nothing.
|
|
40
47
|
|
|
41
48
|
`vatio docs` prints the whole contract (manifest, tools, knowledge, CLI) if
|
|
42
49
|
the fix needs more than the digest says. If `vatio` is not installed, use
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vatio-init
|
|
3
|
+
description: The first Vatio skill in a project. Looks at what is already there — a vatio.yml anywhere in the repository, the workspace on the platform, the app's own code — and recommends from it, then either builds a customer-facing AI agent (for WhatsApp, Instagram, a website widget or an app) and gets it to the console's Test screen, or gets a developer who joined a project that already has one up to speed. Use when asked to create, set up, start or ship a Vatio agent, a chatbot or a support/sales assistant on Vatio, to get started on or onboard onto a project that uses Vatio, or when the user pastes the prompt from vatio.ai.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Start with Vatio in this project
|
|
7
|
+
|
|
8
|
+
Look before you create: the project may already have an agent. Vatio keeps
|
|
9
|
+
the contract and the procedures on the platform, so they are never out of
|
|
10
|
+
date here. Read them first:
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npx @vatio-ai/cli docs
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Under **For coding agents**, **Starting a new agent** and **Joining an
|
|
17
|
+
existing workspace** are the two procedures. Follow the one that fits; it
|
|
18
|
+
takes precedence over the summary below. The rest of that output is the
|
|
19
|
+
contract for `vatio.yml`, tools, knowledge and the CLI.
|
|
20
|
+
|
|
21
|
+
## 1. Look at what is there
|
|
22
|
+
|
|
23
|
+
- **An agent.** Every `vatio.yml`, at or above the current directory and
|
|
24
|
+
anywhere in the repository (`git ls-files '*vatio.yml'`). Its
|
|
25
|
+
`workspace:` line names the workspace.
|
|
26
|
+
- **The app.** What the project does and for whom; the API an agent could
|
|
27
|
+
call (routes, controllers, an OpenAPI file); how its users sign in; and the
|
|
28
|
+
docs, FAQs or policies an agent could read as knowledge.
|
|
29
|
+
- **This machine.** `vatio doctor`: whether it is signed in, and which
|
|
30
|
+
workspace this directory resolves to.
|
|
31
|
+
|
|
32
|
+
## 2. Say what you found, and recommend
|
|
33
|
+
|
|
34
|
+
Before changing anything, tell the user in a few lines what is there and what
|
|
35
|
+
you recommend, and ask them to confirm.
|
|
36
|
+
|
|
37
|
+
- **No `vatio.yml`: a new agent.** Propose what it could do from what you
|
|
38
|
+
read: what it answers, which endpoints become tools, what becomes
|
|
39
|
+
knowledge. Then follow **Starting a new agent**, in short:
|
|
40
|
+
1. Ask the owner only what the code does not answer: what the business
|
|
41
|
+
does, what the agent must never say, when it hands off to a person,
|
|
42
|
+
which of their systems it should read from. Do not invent business
|
|
43
|
+
facts.
|
|
44
|
+
2. `vatio init SLUG` in the repository the agent belongs in, then write
|
|
45
|
+
`vatio.yml` (and `tools/` for their APIs).
|
|
46
|
+
3. `vatio diff`, `vatio push`, then try it with `vatio chat`, including a
|
|
47
|
+
conversation that should hand off.
|
|
48
|
+
4. Give them the link `vatio push` prints after `Try it:` (the console's
|
|
49
|
+
Test screen, with web chat, WhatsApp and Instagram) with what you
|
|
50
|
+
tried. Publish with `vatio publish` only when they ask.
|
|
51
|
+
- **A `vatio.yml`: the agent exists.** Never `vatio init` here: it writes a
|
|
52
|
+
starter agent, and pushing that replaces the real one. Work from the
|
|
53
|
+
directory of the `vatio.yml` and follow **Joining an existing workspace**:
|
|
54
|
+
sign in with the address they were invited with, then
|
|
55
|
+
`vatio diff --env live` and `vatio status`. Explain the agent from
|
|
56
|
+
`vatio.yml` (what it is for, its tools, its knowledge, when it hands off)
|
|
57
|
+
and recommend from what you see:
|
|
58
|
+
- the folder differs from live: say so first, the repository may be behind;
|
|
59
|
+
- open flags in `vatio flags`: work them with the `vatio-improve` skill;
|
|
60
|
+
- tool calls failing in `vatio tools`: the fix is in the backend they call;
|
|
61
|
+
- `workspace_forbidden`: they are not in the workspace yet, and the owner
|
|
62
|
+
invites them from **Team** in the console.
|
|
63
|
+
- **A workspace slug but no `vatio.yml`.** Ask for the repository it lives
|
|
64
|
+
in: Vatio keeps what was deployed, not the files it came from. Do not
|
|
65
|
+
`vatio init` one instead.
|
|
66
|
+
|
|
67
|
+
## 3. Before you finish
|
|
68
|
+
|
|
69
|
+
1. If an error or the docs left you guessing, say so:
|
|
70
|
+
`vatio feedback "what you were doing and what was missing"`.
|
|
71
|
+
2. Last, in Claude Code, offer to send this session to the Vatio team, as
|
|
72
|
+
the `vatio-share-session` skill says. It starts with
|
|
73
|
+
`vatio share-session --should-ask`: if that prints `no`, say nothing.
|
|
74
|
+
|
|
75
|
+
`vatio` is `npx @vatio-ai/cli` when it is not installed globally. The first
|
|
76
|
+
`vatio push` (or `vatio login`) signs the developer in: it opens the browser
|
|
77
|
+
on their machine (if it doesn't, give them the link it prints). Tell them to
|
|
78
|
+
sign in with email, Google or GitHub and check that the code on the page
|
|
79
|
+
matches the one the terminal printed. If the command times out waiting, run
|
|
80
|
+
it again after they have signed in: it picks up the same sign-in page.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vatio-share-session
|
|
3
|
+
description: Send this coding session to the Vatio team, so they can see where building or improving a Vatio agent got stuck. Use when the user asks to share, send or report this session (or "the conversation", "what we did") to Vatio, when the Vatio team asked them for it, when Vatio itself got in the way and they want the team to see exactly how, or when vatio-init or vatio-improve finish and say to offer it.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Send this session to the Vatio team
|
|
7
|
+
|
|
8
|
+
`vatio share-session` sends the Claude Code session you are running in: what
|
|
9
|
+
the user asked, what you read and ran, and what came back. It leaves out
|
|
10
|
+
images, replaces anything that looks like a key, token or password with
|
|
11
|
+
`[REDACTED]`, and the home directory with `~`. Only the Vatio team reads it,
|
|
12
|
+
to see where Vatio got in the way and fix it.
|
|
13
|
+
|
|
14
|
+
It is sent in one of two ways: the user asked for it, or you offer it because
|
|
15
|
+
`vatio-init` or `vatio-improve` just finished.
|
|
16
|
+
|
|
17
|
+
1. **Only when you are offering it**, ask the CLI first:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx @vatio-ai/cli@latest share-session --should-ask
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
If it prints `no`, stop here and do not mention it: the developer said not
|
|
24
|
+
to ask again, or was asked recently. If it prints `yes`, go on.
|
|
25
|
+
|
|
26
|
+
2. Show the user what would go, without sending anything:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx @vatio-ai/cli@latest share-session --save /tmp/vatio-session.jsonl
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Tell them which session it is (the summary it prints), that it is the
|
|
33
|
+
whole conversation, and that the file is there if they want to read it.
|
|
34
|
+
|
|
35
|
+
3. Ask whether to send it, once. It is their conversation: never send it on
|
|
36
|
+
your own, even when the task seems to call for it.
|
|
37
|
+
|
|
38
|
+
When you are offering it, ask with three answers (in Claude Code, as a
|
|
39
|
+
multiple-choice question), for example: "Do you want to send this session
|
|
40
|
+
to the Vatio team, so they can see where Vatio got in the way and improve
|
|
41
|
+
it?"
|
|
42
|
+
|
|
43
|
+
- **Send it**
|
|
44
|
+
- **Not now**: do nothing more. It will not be offered again for a week.
|
|
45
|
+
- **Don't ask again**: run
|
|
46
|
+
`npx @vatio-ai/cli@latest share-session --never`.
|
|
47
|
+
|
|
48
|
+
In the same question, suggest they add feedback: what got in the way, what
|
|
49
|
+
they expected Vatio to do, or anything else they want the team to know.
|
|
50
|
+
It is optional — the session is what matters, and it goes fine on its own.
|
|
51
|
+
A no is a fine answer: do not insist.
|
|
52
|
+
|
|
53
|
+
4. If they say to send it, send it. With their feedback, in their words, as
|
|
54
|
+
they gave it:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
npx @vatio-ai/cli@latest share-session --yes "their feedback"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Without it, just the session:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npx @vatio-ai/cli@latest share-session --yes
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Never write feedback for them: a summary of the session in your words adds
|
|
67
|
+
nothing the session does not already say.
|
|
68
|
+
|
|
69
|
+
The first time it may ask to sign in: it opens the browser (if it doesn't,
|
|
70
|
+
give them the link it prints). Tell them it was sent and the number it
|
|
71
|
+
printed.
|
|
72
|
+
|
|
73
|
+
Only Claude Code sessions can be sent. In any other coding agent, do not offer
|
|
74
|
+
it; when the user asks, write what happened instead:
|
|
75
|
+
`npx @vatio-ai/cli@latest feedback "…"`.
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: vatio-new
|
|
3
|
-
description: Build someone a customer-facing AI agent on Vatio and get it to the console's Test screen, where they can try it — for WhatsApp, Instagram, a website widget or an app. Use when asked to create, set up, start or ship a Vatio agent, a chatbot or a support/sales assistant on Vatio, or when the user pastes the prompt from vatio.ai.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Start a Vatio agent
|
|
7
|
-
|
|
8
|
-
Vatio keeps the contract and the procedure on the platform, so they are never
|
|
9
|
-
out of date here. Read them first:
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
npx @vatio-ai/cli docs
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
The section **For coding agents → Starting a new agent** is the procedure;
|
|
16
|
-
follow it, it takes precedence over the summary below. The rest of that
|
|
17
|
-
output is the contract for `vatio.yml`, tools, knowledge and the CLI.
|
|
18
|
-
|
|
19
|
-
In short:
|
|
20
|
-
|
|
21
|
-
1. If a `vatio.yml` exists at or above the current directory, work in that
|
|
22
|
-
workspace and keep its slug.
|
|
23
|
-
2. Before writing anything, ask the owner briefly: what the business does,
|
|
24
|
-
what the agent must never say, when it must hand off to a person, and which
|
|
25
|
-
of their systems it should read from. Do not invent business facts.
|
|
26
|
-
3. `vatio init SLUG` in the repository the agent belongs in, then write
|
|
27
|
-
`vatio.yml` (and `tools/` for their APIs).
|
|
28
|
-
4. `vatio diff`, `vatio push`, then try it with `vatio chat` —
|
|
29
|
-
including a conversation that should hand off.
|
|
30
|
-
5. Give them the link `vatio push` prints after `Try it:` — the console's
|
|
31
|
-
Test screen, with web chat, WhatsApp and Instagram — with what you tried.
|
|
32
|
-
Publish with `vatio publish` only when they ask.
|
|
33
|
-
6. If an error or the docs left you guessing, say so before you finish:
|
|
34
|
-
`vatio feedback "what you were doing and what was missing"`.
|
|
35
|
-
|
|
36
|
-
`vatio` is `npx @vatio-ai/cli` when it is not installed globally. The first
|
|
37
|
-
`vatio push` signs the developer in: it opens the browser on their machine
|
|
38
|
-
(if it doesn't, give them the link it prints). Tell them to sign in with
|
|
39
|
-
email, Google or GitHub and check that the code on the page matches the one
|
|
40
|
-
the terminal printed. If the command times out waiting, run it again after
|
|
41
|
-
they have signed in: it picks up the same sign-in page.
|