From 6c362e34f1c1519a275f056060170f72f52f67f1 Mon Sep 17 00:00:00 2001 From: dvcdsys Date: Mon, 27 Jul 2026 17:05:25 +0100 Subject: [PATCH 1/2] feat(site): add a "who it's for" section above the problem pitch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The landing page opens by arguing that grep is insufficient, which only lands if the reader has already decided they have that problem. Someone arriving cold — from a directory listing, a search result, a link in a thread — has a cheaper question first: is this for me? Answer it before the argument. Three situations, phrased as the visitor's week rather than the product's features: an agent that should arrive knowing the codebase, research across code you didn't write, and a spread out team whose agents should all read the same index. Each maps to something the project actually does — hooks and skills, workspaces, and the multi-user server with roles, view-groups and per-user API keys — so the section qualifies rather than promises. Reuses .why-grid for layout so the mobile collapse already applies; the marker is a small arrow instead of a display-size numeral, otherwise this section and "The problem" below it read as one long numbered list. Co-Authored-By: Claude Opus 5 --- site/src/landing/app.jsx | 3 ++- site/src/landing/sections.jsx | 31 +++++++++++++++++++++++++++++++ site/src/styles.css | 14 ++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/site/src/landing/app.jsx b/site/src/landing/app.jsx index 168464db..c02d3de8 100644 --- a/site/src/landing/app.jsx +++ b/site/src/landing/app.jsx @@ -2,7 +2,7 @@ import { CixAscii } from '../shared/ascii.jsx'; import { Foot } from '../shared/foot.jsx'; import { SERVER_VERSION, CLI_VERSION, GITHUB_URL } from '../shared/versions.js'; import { HeroTerminal } from './terminal.jsx'; -import { Why, Features, Playground, Workspaces, Agent, CaseStudy, QuickStart, FAQ } from './sections.jsx'; +import { Fit, Why, Features, Playground, Workspaces, Agent, CaseStudy, QuickStart, FAQ } from './sections.jsx'; export function App() { return ( @@ -11,6 +11,7 @@ export function App() {
+ diff --git a/site/src/landing/sections.jsx b/site/src/landing/sections.jsx index cc103731..4ac63a82 100644 --- a/site/src/landing/sections.jsx +++ b/site/src/landing/sections.jsx @@ -3,6 +3,37 @@ import { WorkspaceDemo } from './workspace-demo.jsx'; import { GITHUB_URL, PLUGIN_VERSION } from '../shared/versions.js'; import { TeamDiagram } from '../shared/team-diagram.jsx'; +export function Fit() { + return ( +
+
+
+ Who it's for +

If any of this is your week,
cix was built for it.

+

Three situations it was made for — and one server behind all of them.

+
+
+
+ +

Your agent should already know the codebase.

+

No pasted file paths, no “read these first”. Hooks nudge Claude toward the index and the skills teach it the five search modes — context arrives with the question instead of after three rounds of prompting.

+
+
+ +

You research code you didn't write.

+

Large, unfamiliar, half-remembered — the kind of repo where nobody agrees what a thing is called. Ask in plain language, get ranked file:line answers, across one repo or a whole workspace of them.

+
+
+ +

Your team is spread out. So are its agents.

+

One shared server rather than a per-seat sidecar: the same index for every developer, terminal and agent, with roles, view-groups and per-user API keys deciding who sees what.

+
+
+
+
+ ); +} + export function Why() { return (
diff --git a/site/src/styles.css b/site/src/styles.css index 4f633c97..f5604af0 100644 --- a/site/src/styles.css +++ b/site/src/styles.css @@ -681,6 +681,20 @@ h3 { font-size: clamp(20px, 2vw, 24px); } .why-card h3 { font-size: 22px; margin-bottom: 8px; } .why-card p { color: var(--ink-soft); margin: 0; font-size: 15px; } +/* Who it's for — same grid as Why, quieter marker so the two sections + don't read as one long numbered list. */ +.fit-card { padding: 28px; } +.fit-card .mark { + font-family: var(--font-display); + font-size: 30px; + color: var(--red); + line-height: 1; + display: block; + margin-bottom: 12px; +} +.fit-card h3 { font-size: 20px; margin-bottom: 8px; } +.fit-card p { color: var(--ink-soft); margin: 0; font-size: 15px; } + /* Features grid */ .feat-grid { display: grid; From e59757067b6ecef8ec45fce0caed537266324966 Mon Sep 17 00:00:00 2001 From: dvcdsys Date: Mon, 27 Jul 2026 17:07:25 +0100 Subject: [PATCH 2/2] feat(site): three more situations in the "who it's for" grid MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Spec work, security passes and sprawling microservice estates are the cases people described in their own words, and each already maps to something the tool does — references and touchpoints for scoping, the five search modes for tracing what reaches a risky function, workspaces for a system split across a dozen repos. The security card says plainly that cix does not scan for CVEs. It finds everything worth scanning, which is a different and more defensible claim than implying a scanner. Cards move to a data array now that there are six of them; the grid already handles the second row and the mobile collapse. Co-Authored-By: Claude Opus 5 --- site/src/landing/sections.jsx | 39 +++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/site/src/landing/sections.jsx b/site/src/landing/sections.jsx index 4ac63a82..f7447ce6 100644 --- a/site/src/landing/sections.jsx +++ b/site/src/landing/sections.jsx @@ -3,6 +3,21 @@ import { WorkspaceDemo } from './workspace-demo.jsx'; import { GITHUB_URL, PLUGIN_VERSION } from '../shared/versions.js'; import { TeamDiagram } from '../shared/team-diagram.jsx'; +const FIT = [ + { title: 'Your agent should already know the codebase.', + body: <>No pasted file paths, no “read these first”. Hooks nudge Claude toward the index and the skills teach it the five search modes — context arrives with the question instead of after three rounds of prompting. }, + { title: 'You research code you didn’t write.', + body: <>Large, unfamiliar, half-remembered — the kind of repo where nobody agrees what a thing is called. Ask in plain language, get ranked file:line answers back. }, + { title: 'You are writing the spec before the code.', + body: <>Scoping work means knowing what already exists, where the new thing plugs in and what it breaks. Find the touchpoints, walk the references, and write the ticket against the codebase instead of against memory. }, + { title: 'You are doing a security pass.', + body: <>cix does not scan for CVEs — it finds everything worth scanning. Where input is parsed, where secrets are read, which callsites actually reach the function you are worried about. }, + { title: 'Your system is a dozen services in a dozen repos.', + body: <>Group them into a workspace and search the union: hybrid BM25 + dense ranking surfaces the services involved, then defs and refs drill into the one that owns the answer. }, + { title: 'Your team is spread out. So are its agents.', + body: <>One shared server rather than a per-seat sidecar: the same index for every developer, terminal and agent, with roles, view-groups and per-user API keys deciding who sees what. }, +]; + export function Fit() { return (
@@ -10,24 +25,16 @@ export function Fit() {
Who it's for

If any of this is your week,
cix was built for it.

-

Three situations it was made for — and one server behind all of them.

+

Six situations it was made for — and one server behind all of them.

-
- -

Your agent should already know the codebase.

-

No pasted file paths, no “read these first”. Hooks nudge Claude toward the index and the skills teach it the five search modes — context arrives with the question instead of after three rounds of prompting.

-
-
- -

You research code you didn't write.

-

Large, unfamiliar, half-remembered — the kind of repo where nobody agrees what a thing is called. Ask in plain language, get ranked file:line answers, across one repo or a whole workspace of them.

-
-
- -

Your team is spread out. So are its agents.

-

One shared server rather than a per-seat sidecar: the same index for every developer, terminal and agent, with roles, view-groups and per-user API keys deciding who sees what.

-
+ {FIT.map(({ title, body }) => ( +
+ +

{title}

+

{body}

+
+ ))}