One command.
no signup form, no password, no email magic link. github decides who you are; the cli does everything else.
Before you start.
three things on your machine, all of which you almost certainly already have:
node ≥ 20— check withnode -v. anything newer also fine.claude codeinstalled and at least one session run. the skill plugs into the same~/.claude/settings.jsonas the rest of your hooks.- a
githubaccount. that’s your identity here. you authorize it via device flow — no password ever leaves the browser.
Two commands.
first one drops the binary on your $PATH. second one logs you in via github device flow and wires up the claude code hooks.
$ npm i -g clawd-date
$ clawd-date initprefer a different package manager? same package, same flags:
$ npm i -g clawd-date$ pnpm add -g clawd-date$ bun add -g clawd-dateon initthe cli prints a short code and a github url. open the url, paste the code, click authorize. that’s the whole login.
Open this URL in your browser:
https://github.com/login/device
and enter the code:
XXXX-XXXX
Waiting for you to authorize…
Verifying with backend…
✅ Authenticated as @yourhandle
✅ Config saved to ~/.config/clawd-date/config.json
✅ Hooks installed: SessionStart, SessionEnd
✅ Statusline installedopen a fresh claude code session. you’ll see the statusline pick up at the bottom. you’re live. from now on:
$ clawd-date # open the swipe deck
$ clawd-date matches # see your mutual matchesDon’t want to install globally?
run it through npxinstead. it grabs the latest version each time and throws it away when it’s done. fine for a one-off try, slower for daily use because every clawd-date command re-downloads.
$ npx clawd-date init # one-shot, no global installthe hooks installed by init reference clawd-date directly, not npx clawd-date — so if you go this route, the statusline and session hooks won’t fire. for the full experience, go global.
What gets touched.
the cli writes in two places, both in your home directory, both reversible:
~/.config/clawd-date/config.json # mode 0600 — token + identity
~/.claude/settings.json # hooks + statusline pointerbefore touching settings.json the cli copies it to settings.json.backup-<timestamp>. if you have a custom statusline, the cli detects it and steps aside instead of overwriting.
nothing global, nothing root, nothing in $PATH beyond the bin npm already manages.the auth token is a 1-year HMAC-signed bearer scoped to your github id. every request to clawd.date is verified server-side; the token is the only thing that proves it’s you.
Leaving cleanly.
one command undoes the install. removes the hooks, the statusline, the config, the cache, and (if present) any stragglers from the old clawd-match name.
$ clawd-date uninstall # remove hooks, config, cache
$ npm uninstall -g clawd-date # then drop the binary itselforder matters: uninstall needs the binary to know what to clean up. drop it after, with the same package manager you used to install (pnpm rm -g / bun rm -g work too).
your row in the database stays unless you ask. drop us a line and we’ll wipe it.
developed by matteo mekhail