Files
nanoclaw/setup
gavrielc 0a5ffde133 refactor(setup): Option A — shared wire stays in init-first-agent, no duplication
The connect/wire procedure (owner role + cli_scope=global, messaging-group,
wiring, /welcome) is identical across channels, so it should NOT be re-expressed
in every channel SKILL.md. It stays in scripts/init-first-agent.ts. A channel
SKILL.md owns only the channel-specific part: install + credentials + resolving
the wire inputs (owner_handle + platform_id).

- Engine: ApplyResult gains `vars` — the non-secret resolved values (prompt
  answers + capture outputs), so a caller can read what a skill produced.
  Secrets are never surfaced.
- add-slack SKILL.md: the ncl wire block is removed. "Connect yourself" becomes
  "Resolve your DM channel" — prompt owner_handle, validate auth.test, and
  capture platform_id from conversations.open as `slack:<channelId>`.
- runChannelSkill: re-adds the shared polish (agent name default "Nano", role
  owner|admin) and routes the wire through init-first-agent with the composed
  user-id and the resolved platform_id. No ncl wiring emitted by the adapter.

This restores the two regressions for free (cli_scope=global and the /welcome
system instruction come from init-first-agent) plus role choice and the
agent-name prompt — with the wire in exactly one place. Dry-run on the real
add-slack: res.vars = {owner_handle, platform_id}, secrets excluded. 611 pass.

Remaining polish (next): prompt format-validation, "Connected as @bot" identity
display, reuse-existing-credential prompts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 18:40:19 +03:00
..