@kybernesis/create 0.7.1 → 0.7.3
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/dist/arcana.d.ts +8 -0
- package/dist/arcana.js +99 -0
- package/dist/cli.js +21 -0
- package/dist/deploy.d.ts +4 -0
- package/dist/deploy.js +169 -0
- package/dist/init.js +6 -0
- package/dist/register.d.ts +5 -0
- package/dist/register.js +110 -0
- package/dist/skills.js +13 -1
- package/package.json +1 -1
- package/skills/fde-engagement/references/playbook.md +11 -0
- package/skills/kybernesis-packages/SKILL.md +7 -3
- package/skills/self-hosting/SKILL.md +13 -3
- package/skills/.claude/skills/certification/SKILL.md +0 -75
- package/skills/.claude/skills/connect-agents/SKILL.md +0 -119
- package/skills/.claude/skills/control-plane/SKILL.md +0 -80
- package/skills/.claude/skills/eve-building/SKILL.md +0 -106
- package/skills/.claude/skills/fde-engagement/SKILL.md +0 -35
- package/skills/.claude/skills/fde-engagement/references/playbook.md +0 -2312
- package/skills/.claude/skills/kybernesis-packages/SKILL.md +0 -148
- package/skills/.claude/skills/self-hosting/SKILL.md +0 -206
- package/skills/.claude/skills/source-of-truth/SKILL.md +0 -60
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Use when connecting two deployed eve agents so one can delegate to the other — "connect agent A to agent B", agent-to-agent communication, remote peers, cross-deployment delegation. Wires @kybernesis/dispatch edges end to end.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Connecting two eve agents (@kybernesis/dispatch)
|
|
6
|
-
|
|
7
|
-
An **edge** lets one deployed eve agent call another as if it were a local
|
|
8
|
-
subagent, with the human's identity carried across the hop. One edge covers a
|
|
9
|
-
full question-and-answer round trip (the caller parks until the peer's callback
|
|
10
|
-
returns). Wire the mirror-image edge only if the other agent should also be
|
|
11
|
-
able to *initiate*.
|
|
12
|
-
|
|
13
|
-
## Before wiring — gather the facts
|
|
14
|
-
|
|
15
|
-
1. **Both repos' eve versions must be compatible** (`node_modules/eve/package.json`
|
|
16
|
-
in each). An old receiver silently drops principal forwarding and runs as
|
|
17
|
-
service identity — no error. Upgrade both ends together first if they differ.
|
|
18
|
-
2. **Vercel identities** of both projects: team slug + project name as shown in
|
|
19
|
-
`npx vercel ls <project>` (slugs, not `team_…`/`prj_…` IDs).
|
|
20
|
-
3. **Stable production URL** of the callee: `npx vercel inspect <latest-prod-url>`
|
|
21
|
-
→ Aliases — then **verify the alias is OPEN before wiring it**:
|
|
22
|
-
`curl -s -o /dev/null -w "%{http_code}" <url>/eve/v1/health` must return
|
|
23
|
-
**200**. The `<project>-<team>.vercel.app` aliases commonly sit behind
|
|
24
|
-
Vercel SSO deployment protection (302 → vercel.com/sso-api) and CANNOT
|
|
25
|
-
receive dispatches; the shorter production alias is usually the open one.
|
|
26
|
-
4. Both repos need `@kybernesis/dispatch` installed (`npm i @kybernesis/dispatch`).
|
|
27
|
-
|
|
28
|
-
## Caller side — one file
|
|
29
|
-
|
|
30
|
-
`agent/subagents/<peer-name>.ts` (file name = tool name the model routes to):
|
|
31
|
-
|
|
32
|
-
```ts
|
|
33
|
-
import { remotePeer } from "@kybernesis/dispatch";
|
|
34
|
-
|
|
35
|
-
export default remotePeer({
|
|
36
|
-
envVar: "GTM_AGENT_URL",
|
|
37
|
-
description: "…", // see below — this is the whole routing story
|
|
38
|
-
});
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
**Write the description from the CALLEE's actual capabilities.** Read the peer
|
|
42
|
-
repo's `agent/instructions*`, subagent descriptions, and skills, then write the
|
|
43
|
-
concrete topics people ask about ("posting cadence, open GTM plays, outreach
|
|
44
|
-
targets, content drafting in the house voice") — not a generic blurb. If the
|
|
45
|
-
caller has local subagents with overlapping remits, differentiate explicitly or
|
|
46
|
-
routing will be ambiguous.
|
|
47
|
-
|
|
48
|
-
Set the env var on the caller's Vercel project:
|
|
49
|
-
`printf "<stable-prod-url>" | npx vercel env add GTM_AGENT_URL production`
|
|
50
|
-
|
|
51
|
-
## Receiver side — one file
|
|
52
|
-
|
|
53
|
-
`agent/channels/eve.ts` on the callee:
|
|
54
|
-
|
|
55
|
-
```ts
|
|
56
|
-
import { dispatchChannel } from "@kybernesis/dispatch";
|
|
57
|
-
|
|
58
|
-
export default dispatchChannel({
|
|
59
|
-
trustedPeers: [{ teamSlug: "<caller-team>", projectName: "<caller-project>" }],
|
|
60
|
-
});
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
If the callee already has an authored `agent/channels/eve.ts` with app auth,
|
|
64
|
-
either migrate it to `dispatchChannel({ trustedPeers, extraAuth: […] })` or add
|
|
65
|
-
the peer by hand to BOTH the `vercelOidc({ subjects })` list and the
|
|
66
|
-
`trustedForwarders` predicate — they must never drift apart. Never write
|
|
67
|
-
`trustedForwarders: () => true`.
|
|
68
|
-
|
|
69
|
-
## Verify
|
|
70
|
-
|
|
71
|
-
1. `npx eve info` in both repos: 0 diagnostics; the caller's manifest gains a
|
|
72
|
-
`remoteAgents` entry (it does NOT appear in the local subagent count).
|
|
73
|
-
2. `npm run typecheck` both.
|
|
74
|
-
3. Deploy BOTH (`npx eve deploy` / git push per repo convention). The edge is
|
|
75
|
-
live only when both ends are.
|
|
76
|
-
4. Live test from the caller's real surface (e.g. Slack): ask something only
|
|
77
|
-
the peer knows. Confirm delegation in the caller's reply, then check
|
|
78
|
-
telemetry (PostHog): the peer-side turn should carry the human's
|
|
79
|
-
distinct_id, plus the `eve:forwarded-by` attribute naming the caller.
|
|
80
|
-
|
|
81
|
-
## Failure signatures
|
|
82
|
-
|
|
83
|
-
- **403 on dispatch** → receiver has no authored eve channel, or the caller
|
|
84
|
-
isn't in `trustedPeers`. Check team slug/project name spelling — a typo
|
|
85
|
-
silently rejects everything.
|
|
86
|
-
- **`principal_required` on the peer's user-scoped connections** → forwarding
|
|
87
|
-
isn't arriving: receiver predates forwarding, or the assertion was dropped.
|
|
88
|
-
- **Peer never gets called** → routing description too vague, or it collides
|
|
89
|
-
with a local subagent's remit. Rewrite from the callee's real capabilities.
|
|
90
|
-
- **Works locally, 401 in production** → caller's OIDC not accepted: the
|
|
91
|
-
receiver's `trustedPeers` names the wrong environment (default is
|
|
92
|
-
production-only) or wrong project.
|
|
93
|
-
|
|
94
|
-
## Governed mode (control-plane edges — preferred when the client runs the admin)
|
|
95
|
-
|
|
96
|
-
Instead of hand-enumerated peers, edges are GRANTED in the Kybernesis control
|
|
97
|
-
plane and enforced with 300s A2A tokens. Full lifecycle proven live 2026-08-07
|
|
98
|
-
(grant → dispatch → revoke → refused ≤5 min → re-grant → restored, no deploys).
|
|
99
|
-
|
|
100
|
-
Setup, per agent (admin UI /agents):
|
|
101
|
-
1. Register both agents as eve deployments — URL must be the OPEN production
|
|
102
|
-
alias (health 200; forms sanitize pasted punctuation as of this writing).
|
|
103
|
-
2. Grant the edge on the CALLEE's panel ("Agent-to-agent edges" → allow calls
|
|
104
|
-
from <caller> + purpose; expiry optional — self-destructing edge).
|
|
105
|
-
3. Mint each agent's credential (shown ONCE) → set as Sensitive env
|
|
106
|
-
`KYBERNESIS_AGENT_CREDENTIAL` on that agent's Vercel project.
|
|
107
|
-
|
|
108
|
-
Then in code (dispatch ≥0.2.1 + enterprise ≥0.2.0 both installed):
|
|
109
|
-
- caller: `remotePeer({ callee: "<EXACT registered name>", governed: { issuer },
|
|
110
|
-
envVar, fallbackUrl, description })` — envVar/fallbackUrl kept as overrides;
|
|
111
|
-
registry supplies the URL when the credential is present.
|
|
112
|
-
- receiver: `dispatchChannel({ governed: { issuer, agent: "<own name>" } })`.
|
|
113
|
-
|
|
114
|
-
Gotchas: names are case-sensitive ("Kyber" ≠ "kyber" — copy from the admin);
|
|
115
|
-
credentials are one JWS line ~3 segments, an ES256 signature is 86 base64url
|
|
116
|
-
chars — a truncated paste fails verification silently, so length-check it;
|
|
117
|
-
scheduled/cron turns still forward no human (service identity at the peer);
|
|
118
|
-
the deployed agent's model spend shares the project's AI Gateway budget with
|
|
119
|
-
local eval runs — size the budget for BOTH or production goes model-dead.
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Use when registering an agent with the Kybernesis control plane, granting/revoking user access, wiring kybernesisAuth, running the governance E2E check, or debugging 401/403s from a governed agent.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# The Kybernesis control plane (agent.kybernesis.ai)
|
|
6
|
-
|
|
7
|
-
The control plane governs WHO may talk to which agent. It is an OIDC-style
|
|
8
|
-
issuer (per-org ES256 keys at `/api/jwks`) minting **IdentitySessions**
|
|
9
|
-
`{ issuer, token, bundle, jwks }`; the policy bundle carries
|
|
10
|
-
`agentGrants[{agent, level}]`. Agents verify OFFLINE via
|
|
11
|
-
`kybernesisAuth()` from `@kybernesis/enterprise` — no callback to the plane
|
|
12
|
-
on each request.
|
|
13
|
-
|
|
14
|
-
## Wiring a governed agent
|
|
15
|
-
|
|
16
|
-
Env: `KYBERNESIS_ISSUER=https://agent.kybernesis.ai` and
|
|
17
|
-
`KYBERNESIS_AGENT=<agent-name>` (must equal the name registered in the
|
|
18
|
-
admin). The registry item writes the route-auth file; `kyb doctor` checks
|
|
19
|
-
JWKS reachability. Callers send `authorization: Bearer <token>` +
|
|
20
|
-
`x-kybernesis-bundle: <bundle>`. Expected failures: 401 = no/bad
|
|
21
|
-
credentials; 403 `agent_not_granted` = valid user, no grant for THIS agent.
|
|
22
|
-
|
|
23
|
-
## Admin flow (browser, agent.kybernesis.ai)
|
|
24
|
-
|
|
25
|
-
Register the agent under Agents (runtime: ▲ eve + deployment URL — the row
|
|
26
|
-
shows a health probe). Grant users under their profile (grants resolve at
|
|
27
|
-
MINT time). Users page also links/revokes chat identities (Slack ↔ user).
|
|
28
|
-
Sign-in for humans is RFC 8628 device flow (user code, e.g. ABCD-EFGH).
|
|
29
|
-
|
|
30
|
-
## Timing semantics (the support-ticket section)
|
|
31
|
-
|
|
32
|
-
Token TTL defaults to 1h — that IS the revocation SLA for already-minted
|
|
33
|
-
sessions. Suspension blocks new mints immediately; revocation of a grant
|
|
34
|
-
takes effect at next mint. Tune `IDENTITY_TOKEN_TTL_SECONDS` to the client's
|
|
35
|
-
appetite and tell them the number.
|
|
36
|
-
|
|
37
|
-
## The governance E2E check (run before any client demo)
|
|
38
|
-
|
|
39
|
-
1. Call the governed agent with no credentials → expect 401.
|
|
40
|
-
2. Mint via device flow WITHOUT a grant → call → expect 403 agent_not_granted.
|
|
41
|
-
3. Grant the user in the admin → re-mint → call → expect 200/202.
|
|
42
|
-
4. Revoke the grant → old token still works until TTL; re-mint refused.
|
|
43
|
-
5. Suspend the user → mint refused immediately; restore → mint works.
|
|
44
|
-
|
|
45
|
-
This exact sequence was verified against production 2026-08-05. The demo
|
|
46
|
-
moment for clients is step 3→4 — access appearing and disappearing from the
|
|
47
|
-
admin screen.
|
|
48
|
-
|
|
49
|
-
## It also brokers connectors and the user's own machine
|
|
50
|
-
|
|
51
|
-
Governance was the first job; the plane now also holds the two things an agent
|
|
52
|
-
cannot hold itself.
|
|
53
|
-
|
|
54
|
-
**Connectors** (`/api/connectors`, `link`, `disconnect`, `tools`, `execute`,
|
|
55
|
-
`custom`, `mcp`, `mcp/test`). Each ORG holds its own broker (Composio) API key,
|
|
56
|
-
encrypted at rest with `SECRET_ENCRYPTION_KEY` (AES-256-GCM,
|
|
57
|
-
`v1:<iv>:<tag>:<ct>`), set
|
|
58
|
-
through the admin — never an env var, never our key used for a client. The
|
|
59
|
-
agent asks the plane which services the CURRENT principal has connected;
|
|
60
|
-
`@kybernesis/connectors` turns the answer into tools for that turn only. The
|
|
61
|
-
broker's entity is `<registered-agent-name>:<userId>` — the registered NAME,
|
|
62
|
-
not the agent's UUID.
|
|
63
|
-
|
|
64
|
-
**Local access** (`/api/local-exec/*`). A device enrolls, the user grants it
|
|
65
|
-
once, and that grant is STANDING — no expiry. Requests and responses are relayed
|
|
66
|
-
as frames; the plane never executes anything. See `@kybernesis/local`.
|
|
67
|
-
|
|
68
|
-
**A client must refresh on the earlier of the token and the bundle.** They have
|
|
69
|
-
independent lifetimes: a token with 57 minutes left and a bundle with 12 will
|
|
70
|
-
start returning 401 while every dashboard says the session is fine. This cost a
|
|
71
|
-
full day, presented to the user as "log out and log back in", and the fix is one
|
|
72
|
-
line — `Math.min(tokenExpiry, bundleExpiry)`. On a 401, force a refresh and
|
|
73
|
-
retry ONCE before showing a human anything.
|
|
74
|
-
|
|
75
|
-
## Boundaries to state plainly
|
|
76
|
-
|
|
77
|
-
Control-plane grants govern the HTTP/desktop doors — NOT the Slack door
|
|
78
|
-
(Slack access = workspace membership). Person-scoped approvals and
|
|
79
|
-
`governedSlackChannel()` are specced, not built. HITL approvals are
|
|
80
|
-
session-scoped; any thread member can click them.
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Use when building out an eve agent — adding channels (Slack, iMessage, Telegram, Discord…), connections to client systems, agent skills, model pinning, instructions, or testing in eve dev. The how-to for every eve authoring surface.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Building eve agents
|
|
6
|
-
|
|
7
|
-
**The prime rule: read the pinned docs before writing eve code.** The
|
|
8
|
-
installed framework docs are the source of truth for THIS project's version:
|
|
9
|
-
`node_modules/eve/docs/` (README.md indexes them). Never author a channel,
|
|
10
|
-
connection, sandbox, or schedule from memory — read its doc page first.
|
|
11
|
-
Fallback when docs are absent: https://eve.dev/docs.
|
|
12
|
-
|
|
13
|
-
## The loop
|
|
14
|
-
|
|
15
|
-
`read the doc → write the file → npx eve info (0 diagnostics) → test a turn
|
|
16
|
-
in npx eve dev → eval`. Every authoring task follows it.
|
|
17
|
-
|
|
18
|
-
## Model (agent/agent.ts)
|
|
19
|
-
|
|
20
|
-
`defineAgent({ model })`. No agent.ts → defaults to anthropic/claude-sonnet-5;
|
|
21
|
-
once the file exists, `model` is required. String = Vercel AI Gateway id
|
|
22
|
-
(`anthropic/claude-opus-4.8`, dot version) — the client-deploy default.
|
|
23
|
-
Direct provider: install `@ai-sdk/<provider>`, pass `anthropic("claude-opus-4-8")`
|
|
24
|
-
(hyphen version) + provider key in env. Dynamic per-principal selection via
|
|
25
|
-
`defineDynamic({ fallback, events })` — prefer `session.started` scope (prompt
|
|
26
|
-
caches are per model). Docs: `agent-config.md`.
|
|
27
|
-
|
|
28
|
-
## Channels (agent/channels/, one file per surface)
|
|
29
|
-
|
|
30
|
-
Filename = channel id. eve normalizes every surface into one runtime — tools/
|
|
31
|
-
instructions/memory never change per channel. Available: Slack, Photon
|
|
32
|
-
(iMessage), Telegram, Discord, Teams, Twilio (SMS/voice), GitHub, Linear,
|
|
33
|
-
web (eve HTTP + useEveAgent), custom (`defineChannel`). Install:
|
|
34
|
-
`eve add channel/<name>` (e.g. `channel/photon-imessage`, `channel/telegram`).
|
|
35
|
-
|
|
36
|
-
Setup is always three steps: (1) the channel file, (2) provider-side
|
|
37
|
-
credentials in env — the HUMAN runs anything with a browser login, (3) point
|
|
38
|
-
the provider at the mounted route (`/eve/v1/<channel>`). Each channel's doc
|
|
39
|
-
page (`docs/channels/<name>.mdx`) has the complete recipe including webhook
|
|
40
|
-
registration and HITL behavior. For Kybernesis Slack deploys use
|
|
41
|
-
`@kybernesis/multiplayer` (group semantics) — see the `kybernesis-packages`
|
|
42
|
-
skill.
|
|
43
|
-
|
|
44
|
-
## Connections (agent/connections/)
|
|
45
|
-
|
|
46
|
-
Search before writing: `eve registry list` / `search <term>` / `view <item>`
|
|
47
|
-
/ `add <item>` (setup flows resume via `eve add <item> --skip-install`).
|
|
48
|
-
Hand-author only for client-internal services. Two shapes: MCP server →
|
|
49
|
-
`defineMcpClientConnection`; OpenAPI 3.x doc → `defineOpenAPIConnection`.
|
|
50
|
-
Four auth modes: static token (`auth.getToken` from env — pilot default),
|
|
51
|
-
Vercel Connect user-scoped (`connect("<connector-UID>")` — UID not short
|
|
52
|
-
name; first use posts an OAuth link in-thread, turn parks + resumes), Connect
|
|
53
|
-
app-scoped (`connect({connector, principalType:"app"})` — non-interactive),
|
|
54
|
-
or none. Connector provisioning is CLI-able:
|
|
55
|
-
`vercel connect create <service> --name <n>` + `vercel connect attach <uid> --yes`.
|
|
56
|
-
Subagents have NO user principal — static or app-scoped only. Write the
|
|
57
|
-
connection `description` as a capability naming the systems; decide surface
|
|
58
|
-
gating (fail-closed) and `approval` gates per connection at install time.
|
|
59
|
-
Docs: `docs/connections/*`.
|
|
60
|
-
|
|
61
|
-
## Skills (agent/skills/)
|
|
62
|
-
|
|
63
|
-
On-demand procedures (model calls `load_skill` when the description matches).
|
|
64
|
-
Forms: flat `.md` (first line = routing description) → packaged dir with
|
|
65
|
-
`SKILL.md` (+`references/`, description frontmatter required) → `defineSkill`
|
|
66
|
-
(only for typed/generated content). The description is a ROUTING HINT — write
|
|
67
|
-
it as the triggering task ("Use when…") and test by asking without naming the
|
|
68
|
-
skill. Scoped per agent: subagents need their own copies (or subagent-local
|
|
69
|
-
extension mounts that ship them). Community marketplace: skills.sh — included
|
|
70
|
-
in `eve registry search`; install `eve add @skills/<owner>/<repo>/<name>`;
|
|
71
|
-
ALWAYS review the diff before running. Docs: `docs/skills.mdx`.
|
|
72
|
-
|
|
73
|
-
## Instructions (agent/instructions.md or instructions/)
|
|
74
|
-
|
|
75
|
-
Always-on context: identity, tone, standing rules ONLY — procedures go in
|
|
76
|
-
skills. Directory entries combine alphabetically (root file first); `.ts`
|
|
77
|
-
entries wrap `defineInstructions` (compile-time) or `defineDynamic`
|
|
78
|
-
(per-session, e.g. surface-aware greetings). Draft with Claude from discovery
|
|
79
|
-
notes, then judge by test (eve dev turns + evals), never by reading.
|
|
80
|
-
|
|
81
|
-
## Subagents (agent/subagents/<id>/)
|
|
82
|
-
|
|
83
|
-
Inherit NOTHING. Own tools/skills/connections/instructions/sandbox; on eve
|
|
84
|
-
≥0.30 also OWN extension mounts (`subagents/<id>/extensions/` — mounts only
|
|
85
|
-
into that subagent). No channels/schedules; no user principal; whole job must
|
|
86
|
-
fit one delegation call. Docs: `docs/subagents.mdx`.
|
|
87
|
-
|
|
88
|
-
**Sandbox layout trap:** a FLAT `agent/sandbox.ts` is discovered but scopes to
|
|
89
|
-
the ROOT agent only — subagents silently fall back to the default backend
|
|
90
|
-
chain (Docker → microsandbox → just-bash), which surfaces as
|
|
91
|
-
`opening sandbox session "subagents/<id>" on backend "docker"` in eval logs.
|
|
92
|
-
Use the directory form `agent/sandbox/sandbox.ts` — that one is app-level and
|
|
93
|
-
subagents get it free. (Cost a debugging session on eve-gtm, 2026-08-07.)
|
|
94
|
-
|
|
95
|
-
**Parallel same-subagent delegation collides** (`Session … lost
|
|
96
|
-
continuationToken … to session …`, failed subagent-result actions): two
|
|
97
|
-
delegations to the SAME subagent fired in one step race on child sessions.
|
|
98
|
-
Instruct serial delegation ("one draft at a time, wait for each result").
|
|
99
|
-
|
|
100
|
-
## Test in eve dev
|
|
101
|
-
|
|
102
|
-
`npx eve dev` boots the local runtime + chat TUI. Walk: identity → skill
|
|
103
|
-
routing (watch load_skill) → delegation → memory round-trip → (engineer)
|
|
104
|
-
screenshot turn. Local principal counts as a DM surface. Kill the dev server
|
|
105
|
-
before `npm run eval`. The TUI is NOT the deployed agent — redeploy after
|
|
106
|
-
every change.
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Use when running or planning a Kybernesis FDE client engagement — pilot phases, discovery questions, day-by-day plan, demo script, handover. The operating manual for deploying an eve agent at a client.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Kybernesis FDE engagement
|
|
6
|
-
|
|
7
|
-
Kybernesis forward-deploys engineers into companies to agentify them: we build
|
|
8
|
-
eve-framework agents the client reaches on surfaces they already use (Slack,
|
|
9
|
-
iMessage, Telegram, web…), wired to their systems, governed by our control
|
|
10
|
-
plane (agent.kybernesis.ai), remembering through Arcana, and quality-gated by
|
|
11
|
-
evals. You (Claude) are the FDE's co-builder for all of it.
|
|
12
|
-
|
|
13
|
-
The complete engagement runbook is `references/playbook.md` — READ THE PHASE
|
|
14
|
-
YOU ARE IN before acting. Map of the playbook:
|
|
15
|
-
|
|
16
|
-
- **Fast path**: `npm create @kybernesis <name> -- [--engineer]` scaffolds the
|
|
17
|
-
entire baseline (governance + memory + multiplayer Slack + evals, optional
|
|
18
|
-
engineer layer). `kyb doctor` checks wiring at any point.
|
|
19
|
-
- **Phase 1–2**: pre-engagement checklist; the discovery conversation (agent
|
|
20
|
-
name, departments, SURFACES — never assume Slack, §2.3 — cohort, data
|
|
21
|
-
sensitivities). Leave discovery with the §2.6 table filled in.
|
|
22
|
-
- **Phase 3**: environment setup — scaffold, `vercel link`, registry, version
|
|
23
|
-
pins (eve pinned to the Kybernesis-CERTIFIED version, never blind latest).
|
|
24
|
-
- **Phase 4**: the build — model pinning (§4.0b), our packages (§4.1–4.3b),
|
|
25
|
-
channels/connections/skills for the client's stack (§4.3c–e), instructions
|
|
26
|
-
(§4.4), `eve dev` test-drive (§4.4b), subagents (§4.5), evals (§4.8).
|
|
27
|
-
- **Phase 5–6**: deploy + control-plane registration and grants.
|
|
28
|
-
- **Phase 7–9**: pilot onboarding, the acceptance demo script, handover.
|
|
29
|
-
- **§10**: troubleshooting appendix — check it before debugging from scratch.
|
|
30
|
-
- **§11**: known gaps — state them plainly to the client, never sell around.
|
|
31
|
-
|
|
32
|
-
Non-negotiables that survive every engagement: production promotion is
|
|
33
|
-
human-approved; evals gate every deploy; secrets live in env (Vercel
|
|
34
|
-
Sensitive), never in code or memory; every live failure becomes a playbook or
|
|
35
|
-
skill edit the same day (see the `source-of-truth` skill).
|