# Wbso Signup

> Maak een nieuw WBSO.ai-account aan vanuit de skill. Gebruik wanneer de gebruiker zegt "maak een account aan", "ik wil registreren", "nog geen account", of zich voor het eerst aanmeldt. Voor inloggen met een bestaande key, gebruik de wbso-auth skill.

- Skill: `wbso-ai/wbso-signup` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add wbso-ai/wbso-signup`
- Raw SKILL.md: https://api.skillmd.com/api/skills/wbso-ai/wbso-signup/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: wbso-ai (https://skillmd.com/u/wbso-ai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/wbso-ai/wbso-signup

---


# Account aanmaken op WBSO.ai

Claude Code zet plugin-root `bin/` in `$PATH`, dus daar werkt `wbso`
direct. Anders resolve je de self-contained `scripts/wbso` naast deze
skill als `$WBSO_CLI`:

```bash
WBSO_CLI="$(
  command -v wbso 2>/dev/null ||
  { [ -n "${CLAUDE_PLUGIN_ROOT:-}" ] && [ -x "${CLAUDE_PLUGIN_ROOT}/bin/wbso" ] && printf '%s\n' "${CLAUDE_PLUGIN_ROOT}/bin/wbso"; } ||
  find \
    "$PWD" \
    "$HOME/.claude/skills" \
    "$PWD/.claude/skills" \
    "$HOME/.cursor/skills" \
    "$PWD/.cursor/skills" \
    "$HOME/.agents/skills" \
    "$PWD/.agents/skills" \
    "$HOME/.codex/skills" \
    "$HOME/.codex/plugins/cache/wbso-ai/wbso" \
    "$HOME/.codex/plugins/cache" \
    -path '*/scripts/wbso' -type f 2>/dev/null |
  sort -V | tail -1
)"
test -n "$WBSO_CLI" || { echo "WBSO CLI niet gevonden"; exit 127; }
```

Stuur eerst een korte uitleg en vraag alle vier de velden in één
plain-tekst bericht (geen modal, geen losse vragen — anders voelt 't
als een verhoor):

> *"Top! Vul deze vier even in op aparte regels, dan maak ik je
> account aan:"*
>
> *"- Voornaam:"*
> *"- Achternaam:"*
> *"- E-mailadres:"*
> *"- Bedrijfsnaam:"*

Parse de regels. Als er één ontbreekt of onduidelijk is: vraag dán
pas specifiek dat ene veld opnieuw.

## Aanmaken via de CLI

```bash
"$WBSO_CLI" signup \
  --first-name "<VOORNAAM>" \
  --last-name "<ACHTERNAAM>" \
  --email "<EMAIL>" \
  --company-name "<BEDRIJFSNAAM>"
```

`wbso signup` slaat de `api_key` direct op in
`~/.config/wbso/config` en print een JSON-respons met:

```json
{
  "email": "...",
  "company_slug": "...",
  "api_key": "...",
  "login_url": "https://portal.wbso.ai/login_with_code?code=ABCDE&return_to=/signup/application"
}
```

### Exit code 2: het e-mailadres heeft al een account

Bestaat het adres al, dan komt `wbso signup` terug met exit code 2 en
een respons als:

```json
{
  "existing_account": true,
  "email": "...",
  "message": "Er bestaat al een account met dit e-mailadres. We hebben een login-link naar je e-mail gestuurd."
}
```

De portal stuurt automatisch een magic-link e-mail naar het opgegeven
adres. Vraag de gebruiker om de e-mail te openen en op de inlog-link te
klikken. Na inloggen moet de gebruiker naar
`Instellingen → Compliance → API keys` navigeren om een nieuwe key aan
te maken. Vraag dán om die key en gebruik de gebundelde `wbso-auth` skill (of
`wbso login --api-key <KEY>`) om die op te slaan.

Bij `422` toont het response-body een `error`-veld (bijv. ongeldig
e-mailadres). Laat dat aan de gebruiker zien.

## Browser openen voor profiel

De `login_url` is een eenmalig magic-link token (10 minuten geldig).
Leg uit waarom 't nodig is, vraag dán pas toestemming:

> *"Account is aangemaakt. Voor we uren kunnen registreren moet je
> account nog gekoppeld worden aan een WBSO-aanvraag — dat doe je in
> een korte wizard in de browser: óf je upload je RVO-beschikkings-
> PDF, óf je kiest een demo-aanvraag om mee te spelen."*
>
> *"Mag ik die wizard nu openen in je browser?"*

Bij "ja" / "ok" / lege regel:

Voeg `utm_source=agent_skill` toe aan het `return_to`-pad in `login_url`
zodat de portal weet dat de gebruiker uit een AI-agent komt. Concreet:
vervang
`return_to=%2Fsignup%2Fapplication` door
`return_to=%2Fsignup%2Fapplication%3Futm_source%3Dagent_skill`.

```bash
url="<login_url met utm_source=agent_skill in return_to>"
xdg-open "$url" 2>/dev/null || open "$url" 2>/dev/null || \
  echo "Open zelf: $url"
```

Direct na het openen, plain tekst:

> *"Rond de wizard af in je browser — daarna kun je hier verder met
> uren registreren."*

Bij "nee" / "later": toon dezelfde URL (mét `utm_source=agent_skill` in
`return_to`) als platte tekst zodat de gebruiker 'm zelf kan openen,
en stuur dezelfde afmaak-melding.

## Wacht tot de wizard klaar is

Direct na signup heeft het account nog geen projecten. Poll `wbso
context` tot er minstens één `<project slug=...>` blok in de respons
zit (max ~2 min, 4s per poging):

```bash
WBSO_CLI="$(
  command -v wbso 2>/dev/null ||
  { [ -n "${CLAUDE_PLUGIN_ROOT:-}" ] && [ -x "${CLAUDE_PLUGIN_ROOT}/bin/wbso" ] && printf '%s\n' "${CLAUDE_PLUGIN_ROOT}/bin/wbso"; } ||
  find \
    "$PWD" \
    "$HOME/.claude/skills" \
    "$PWD/.claude/skills" \
    "$HOME/.cursor/skills" \
    "$PWD/.cursor/skills" \
    "$HOME/.agents/skills" \
    "$PWD/.agents/skills" \
    "$HOME/.codex/skills" \
    "$HOME/.codex/plugins/cache/wbso-ai/wbso" \
    "$HOME/.codex/plugins/cache" \
    -path '*/scripts/wbso' -type f 2>/dev/null |
  sort -V | tail -1
)"
test -n "$WBSO_CLI" || { echo "WBSO CLI niet gevonden"; exit 127; }
for i in $(seq 1 30); do
  "$WBSO_CLI" context > /tmp/wbso-ctx.md
  grep -q '<project slug=' /tmp/wbso-ctx.md && break
  sleep 4
done
cat /tmp/wbso-ctx.md
```

Zie je projecten? Noem ze kort op en check of de gebruiker uren wil
boeken via de `wbso` skill. Blijft het leeg na 2 minuten? Vraag of er hulp
nodig is in het stappenplan.

