skills/vana-connect/SKILL.md
Connect personal data from any web platform using browser automation. Use when: (1) user wants to connect a data source like ChatGPT, Instagram, Spotify, or any platform, (2) user says "connect my [platform]", (3) user wants to generate or update their profile from connected data. Also triggers on: "create a connector for [platform]".
npx skillsauth add vana-com/data-connectors vana-connectInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Connect personal data from web platforms using the vana CLI and local browser automation.
Prefer an installed vana CLI on PATH:
command -v vana
If that succeeds, use:
vana
If vana is unavailable, install the current published canary. Prefer:
macOS with Homebrew:
brew tap vana-com/vana
brew install vana
macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/vana-com/vana-connect/feat/connect-cli-v1/install/install.sh | sh -s -- --version canary-feat-connect-cli-v1
Only if the installed CLI path is unavailable or blocked, fall back to:
npx -y @opendatalabs/connect@canary
If the user is explicitly testing local changes, fall back to:
node /home/tnunamak/code/vana-connect/dist/cli/bin.js
If neither path is available, follow SETUP.md in this folder.
Before connecting a source, check runtime state with:
vana status --json
If the user needs install, path, or upgrade diagnostics, use:
vana doctor
If the user needs recent setup, fetch, or run logs, use:
vana logs
vana logs <platform>
If the runtime is missing, tell the user: "I need to do a one-time setup first. This downloads a browser engine and some dependencies into ~/.dataconnect/ and usually takes about a minute." Then run:
vana setup --yes
vana sources --json
This is the source of truth for what the CLI can currently connect. Prefer it over inspecting repo files manually.
If the requested platform is present, use the CLI flow below.
If no connector exists for the platform, tell the user you'll build one — this involves researching the platform's data APIs, writing the extraction code, and testing it. Let them know it'll take a bit and they're welcome to do something else while you work. Then read CREATE.md and follow it.
Start with the agent-safe probe:
vana connect <platform> --json --no-input
This will:
needs_input, legacy_auth, connected_local_only, or connected_and_ingestedIf the outcome is needs_input, rerun interactively:
vana connect <platform>
If the user specifically wants to inspect current state before rerunning, use:
vana status
The CLI emits structured JSON events in --json mode.
Key outcomes:
needs_input
The connector needs a live login or another manual step. Explain that you'll rerun interactively.legacy_auth
The connector still depends on showBrowser / promptUser. Explain that this source still needs a headed/manual session path and may not work in fully headless batch mode yet.connected_local_only
Data was collected locally but no Personal Server target was available.connected_and_ingested
Data was collected and synced to the Personal Server.If setup, fetch, or run output is truncated, use:
vana logs
vana logs <platform>
Prefer that over manually hunting through ~/.dataconnect/logs/ or rerunning blindly.
After a successful connect, prefer the CLI data surfaces over raw file inspection when possible:
vana data list
vana data show <platform>
vana data path <platform>
vana logs <platform>
If you built or modified a connector, immediately run validation — before presenting results to the user:
node scripts/validate.cjs connectors/<company>/<name>-playwright.js --check-result ~/.dataconnect/last-result.json
Fix any issues the validator reports. The validator checks debug code, login method diversity, schema descriptions, data cleanliness, and more — it is the quality gate. Iterate until validation passes.
Then read the result file and summarize for the user in human terms (see "Communicating with the user" below).
If you built a new connector (not one from the registry), ask the user:
"Want to share this connector so others can connect their [Platform] data too? Contributing means the community helps maintain it when [Platform] changes their site."
If yes, run node scripts/validate.cjs connectors/<company>/<name>-playwright.js --contribute. If no, move on.
After the contribution question is resolved (or if using an existing connector), suggest use cases from RECIPES.md: user profile generation, personal knowledge base, data backup, cross-platform synthesis, activity analytics.
The user can't see what you're doing behind the scenes. Keep them informed at key moments:
Before asking for credentials, explain the approach and reassure on privacy:
During long operations (building a connector, collecting paginated data), give brief progress updates. Don't go silent for more than ~30 seconds.
After collection, summarize results in human terms — not file paths:
exportSummary and the scoped keys.On failure, explain what went wrong and what the user can do:
Use this order when choosing the CLI entrypoint:
vananpx -y @opendatalabs/connect@canarynode /home/tnunamak/code/vana-connect/dist/cli/bin.js only for local development or debuggingtools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.