docs(website): lead with the agent-native story

`skills install` becomes the featured card on the home page, in the wide slot
the grid gives its first entry: one command hands a coding agent the JSON keys
of every record, the exit-code meanings, and the --json rule, with nothing to
clone because the skill ships inside the binary. The docs page gains a callout
and the command in the shell listing.

Also catches the site up with the scriptable command surface the last two
releases introduced: `get`, `shares add`, `serve`, `room list`, `message send`
and `--json` replace the flags and spellings that no longer exist.
This commit is contained in:
Michel de Graaf
2026-07-25 02:24:58 +02:00
parent 95bc18672d
commit 17e4bf9fd3
5 changed files with 111 additions and 51 deletions
+34 -15
View File
@@ -20,22 +20,41 @@ const PLATFORMS: readonly { name: OsName; note: string; anchor: string }[] = [
]
const FEATURES = [
{
glyph: '✦',
color: 'var(--accent-text)',
title: 'Agent native',
cmd: 'soulseek-rs skills install',
body: (
<>
One command hands your coding agent the whole surface: the JSON keys every record
carries, what each exit code means, and the rule that it always asks for{' '}
<code>--json</code>. The skill ships inside the binary, so there is nothing to
clone and nothing to configure — it finds Claude Code and opencode on its own.
</>
),
},
{
glyph: '→',
color: 'var(--accent-text)',
title: 'Search & download',
cmd: 'soulseek-rs "field recordings"',
body: <>Search the network, pick results in the TUI, and queue downloads with pause, resume, and retry.</>,
cmd: 'soulseek-rs get "field recordings"',
body: (
<>
Queue downloads in the TUI with pause, resume, and retry, or let <code>get</code>{' '}
search, pick the best, and download in one command.
</>
),
},
{
glyph: '↑',
color: 'var(--status-success)',
title: 'Sharing',
cmd: 'soulseek-rs --shared-dir ~/Music',
cmd: 'soulseek-rs shares add ~/Music',
body: (
<>
Point <code>--shared-dir</code> at a directory and your files show up in searches;
peers browse and download them.
Point <code>shares add</code> at a directory and your files show up in searches;{' '}
<code>serve</code> stays online so peers can browse and download them.
</>
),
},
@@ -50,14 +69,14 @@ const FEATURES = [
glyph: '#',
color: 'var(--status-warning)',
title: 'Chat rooms',
cmd: 'soulseek-rs rooms',
cmd: 'soulseek-rs room list',
body: <>List, join, and talk in public rooms, several open at once as tabs.</>,
},
{
glyph: '@',
color: 'var(--status-info)',
title: 'Private messages',
cmd: 'soulseek-rs message <user> "hi"',
cmd: 'soulseek-rs message send <user> "hi"',
body: <>Send and receive PMs, with an inbox and an unread counter in the TUI.</>,
},
{
@@ -88,11 +107,11 @@ const FEATURES = [
glyph: '▮',
color: 'var(--accent-text)',
title: 'TUI and CLI',
cmd: 'soulseek-rs',
cmd: 'soulseek-rs search "rjd2" --json',
body: (
<>
A full terminal interface, plus scriptable subcommands: search, message, browse,
rooms, chat, portmap.
A full terminal interface, plus scriptable subcommands: stdout is data, stderr is
progress, the exit code is the verdict.
</>
),
},
@@ -203,10 +222,10 @@ export const Home = () => {
</Callout>
<Callout title="agents and automation">
<p>
Every command runs as a one-off from the shell: <Code>search</Code>,{' '}
<Code>browse</Code>, <Code>rooms</Code>, <Code>chat</Code>,{' '}
<Code>message</Code>, <Code>portmap</Code>. Point cron, a script, or an
agent at them and read the output back. No daemon, no API to stand up.{' '}
Every command runs as a one-off from the shell. Point cron, a script, or an
agent at them and read JSON records back off stdout. No daemon, no API to
stand up — and <Code>skills install</Code> teaches the agent the surface
for you.{' '}
<Link to="/docs" className="text-link hover:text-link-hover">
See the commands
</Link>
@@ -243,7 +262,7 @@ export const Home = () => {
<div className="flex flex-col gap-3.5">
<Eyebrow>get started</Eyebrow>
<h2 className="text-[26px] leading-[34px] font-medium text-balance sm:text-title sm:leading-[var(--text-title--line-height)]">
Install it, then press <span className="text-accent-text">/</span> to search.
Install it, then press <span className="text-accent-text">s</span> to search.
</h2>
<p className="text-secondary">
Needs a Rust toolchain. From there it&rsquo;s one command, then the TUI opens.