Skip to content

feat(web): surface the sketchi CLI across the site#293

Merged
graphite-app[bot] merged 1 commit into
mainfrom
feat/cli-visibility
Jul 25, 2026
Merged

feat(web): surface the sketchi CLI across the site#293
graphite-app[bot] merged 1 commit into
mainfrom
feat/cli-visibility

Conversation

@anandpant

@anandpant anandpant commented Jul 25, 2026

Copy link
Copy Markdown
Collaborator

The gap

sketchi is published on npm and does real work, but apps/web/src mentioned
npm, npx, install.sh or the CLI zero times — not the header, footer,
homepage, docs or agents pages. A visitor to sketchi.app could not discover the
CLI existed.

This treats the terminal as a peer of the playground and the agent route.

What's here

  • CliBand homepage section (#cli, after the feature grid) — a terminal
    card carrying both install commands copy-pasteable through the existing
    CopyButton, an example generate call, three honest capability claims, and
    a link to the package.
  • Reachable from every page — header nav (desktop + mobile sheet), footer
    Product column, footer npm package link, and a third route in the closing CTA.
  • Docs — a third path lane in the explainer plus a real #cli section:
    install, the command surface, and the agent-facing flags.
  • llms.txt — a CLI section so agents discover it the same way.
  • npm mark — pulled from our own library at icons.sketchi.app/api/icons/npm.svg
    into public/brand/npm.svg.

Accuracy

Every claim comes from sketchi --help and the published npm metadata. Both
install commands were run end-to-end against the published package in an
isolated HOME before shipping: the one-liner installed 0.3.0, wired zsh
completions, and create / list / export --format png all produced real
output.

The install commands are pinned byte-for-byte in cli-package.test.ts so they
cannot drift silently, and nothing names a version — npm shows the current one.

Also fixed

.docs-section code styled inline prose pills, which made commands inside a
docs codeblock unreadable once docs actually had one. Caught in the browser
pass, not by tests.

Proof

  • pnpm nx run-many -t typecheck,test,build — green, 17 projects
  • pnpm test:tools — 64 pass (incl. the workers.dev public-surface guard)
  • pnpm nx lint web, build-storybook for diagram-ui and web — green
  • Component tests and Storybook stories for the new section, matching existing
    coverage; 57 web tests pass
  • Verified in a real browser at 1440px and 390px: copy controls, npm link,
    and the nav/footer entries from /, /agents, /agents/codex, /docs

Review

codex review --base main raised two valid P2 accuracy findings; both
reproduced against the binary and are fixed in the second commit:

  1. The lead claimed offline "for everything but generation" — share and
    pull are network commands too.
  2. Docs and llms.txt claimed every command reads --json / --file
    list, show, export, restore reject both. Scoped to create/edit/patch.

Deliberately left out

  • No version number anywhere in copy.
  • Three docs lanes are stacked, not side-by-side: .docs-article is capped
    at 72ch, so three columns would be ~200px each and could not hold the
    inline commands.
  • No hero button — the hero keeps its two-button conversion path; the CLI gets
    its own full section instead of crowding it.
  • Root README untouched, per the brief.

Found, not fixed (pre-existing on main)

The mobile header sheet has no background, so page content shows through the
open menu. Identical on main; outside this slice.

Copy link
Copy Markdown
Collaborator Author

How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • merge - adds this PR to the back of the merge queue
  • fast - for urgent changes, fast-track this PR to the front of the merge queue

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@github-actions

github-actions Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Sketchi Web Preview

Status: deleted

Preview Worker cleanup has completed.

@github-actions

github-actions Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Sketchi Icons Preview

Status: deleted

Preview Worker cleanup has completed.

@github-actions

github-actions Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Sketchi Excalidraw Workspace Preview

Status: deleted

  • Surface: internal preview; not linked from public navigation
  • Project: excalidraw
  • Worker identity: sketchi-excalidraw
  • Route policy: internal canvas workspace; no public product domain
  • Preview Worker: sketchi-excalidraw-pr-293
  • Commit: bd1ceb326811
  • Workflow run: https://github.com/shpitdev/sketchi/actions/runs/30165160656

Preview Worker cleanup has completed.

@github-actions

github-actions Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Sketchi Eval Harness Preview

Status: deleted

  • Surface: internal preview; not linked from public navigation
  • Project: eval-harness
  • Worker identity: sketchi-playground
  • Route policy: internal eval harness; no public product domain
  • Preview Worker: sketchi-playground-pr-293
  • Commit: bd1ceb326811
  • Workflow run: https://github.com/shpitdev/sketchi/actions/runs/30165160656

Preview Worker cleanup has completed.

@github-actions

github-actions Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Sketchi Playground / Studio Preview

Status: deleted

  • Surface: public product preview
  • Project: playground
  • Worker identity: sketchi-studio
  • Route policy: playground.sketchi.app product surface; authenticated Studio remains unexposed
  • Preview Worker: sketchi-studio-pr-293
  • Commit: bd1ceb326811
  • Workflow run: https://github.com/shpitdev/sketchi/actions/runs/30165160656

Preview Worker cleanup has completed.

@graphite-app

graphite-app Bot commented Jul 25, 2026

Copy link
Copy Markdown

Merge activity

## The gap

`sketchi` is published on npm and does real work, but `apps/web/src` mentioned
`npm`, `npx`, `install.sh` or the CLI **zero** times — not the header, footer,
homepage, docs or agents pages. A visitor to sketchi.app could not discover the
CLI existed.

This treats the terminal as a peer of the playground and the agent route.

## What's here

- **`CliBand` homepage section** (`#cli`, after the feature grid) — a terminal
  card carrying both install commands copy-pasteable through the existing
  `CopyButton`, an example `generate` call, three honest capability claims, and
  a link to the package.
- **Reachable from every page** — header nav (desktop + mobile sheet), footer
  Product column, footer npm package link, and a third route in the closing CTA.
- **Docs** — a third path lane in the explainer plus a real `#cli` section:
  install, the command surface, and the agent-facing flags.
- **`llms.txt`** — a CLI section so agents discover it the same way.
- **npm mark** — pulled from our own library at `icons.sketchi.app/api/icons/npm.svg`
  into `public/brand/npm.svg`.

## Accuracy

Every claim comes from `sketchi --help` and the published npm metadata. Both
install commands were **run end-to-end against the published package** in an
isolated HOME before shipping: the one-liner installed 0.3.0, wired zsh
completions, and `create` / `list` / `export --format png` all produced real
output.

The install commands are pinned byte-for-byte in `cli-package.test.ts` so they
cannot drift silently, and nothing names a version — npm shows the current one.

## Also fixed

`.docs-section code` styled inline prose pills, which made commands inside a
docs codeblock unreadable once docs actually had one. Caught in the browser
pass, not by tests.

## Proof

- `pnpm nx run-many -t typecheck,test,build` — green, 17 projects
- `pnpm test:tools` — 64 pass (incl. the `workers.dev` public-surface guard)
- `pnpm nx lint web`, `build-storybook` for `diagram-ui` and `web` — green
- Component tests and Storybook stories for the new section, matching existing
  coverage; 57 web tests pass
- Verified in a real browser at 1440px and 390px: copy controls, npm link,
  and the nav/footer entries from `/`, `/agents`, `/agents/codex`, `/docs`

## Review

`codex review --base main` raised two valid P2 accuracy findings; both
reproduced against the binary and are fixed in the second commit:

1. The lead claimed offline "for everything but generation" — `share` and
   `pull` are network commands too.
2. Docs and `llms.txt` claimed every command reads `--json` / `--file` —
   `list`, `show`, `export`, `restore` reject both. Scoped to create/edit/patch.

## Deliberately left out

- No version number anywhere in copy.
- Three docs lanes are **stacked, not side-by-side**: `.docs-article` is capped
  at `72ch`, so three columns would be ~200px each and could not hold the
  inline commands.
- No hero button — the hero keeps its two-button conversion path; the CLI gets
  its own full section instead of crowding it.
- Root README untouched, per the brief.

## Found, not fixed (pre-existing on `main`)

The mobile header sheet has no background, so page content shows through the
open menu. Identical on `main`; outside this slice.
@graphite-app
graphite-app Bot force-pushed the feat/cli-visibility branch 2 times, most recently from 52552c4 to bd1ceb3 Compare July 25, 2026 16:11
@graphite-app
graphite-app Bot merged commit bd1ceb3 into main Jul 25, 2026
10 checks passed
@graphite-app
graphite-app Bot deleted the feat/cli-visibility branch July 25, 2026 16:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant