Skip to content

Positioning canon, docs metadata and repo polish - #315

Merged
hayesdavis merged 12 commits into
mainfrom
worktree-positioning-canon
Jul 27, 2026
Merged

Positioning canon, docs metadata and repo polish#315
hayesdavis merged 12 commits into
mainfrom
worktree-positioning-canon

Conversation

@hayesdavis

Copy link
Copy Markdown
Contributor

Twelve commits, reviewable in order. Split by concern rather than by file, so each one stands alone.

What's here

A canonical source for how we describe Argus. docs/contributing/ was two guides scoped to docs/, which is why several surfaces had drifted apart: four different one-liners, and an og:description calling the audience "non-coders" that nothing governed. It's now six single-purpose guides covering every user-facing word, including the CLI and the repo description. CLAUDE.md points at them instead of restating them.

Docs site metadata. Shared links previewed with no image at all. Adds og:image with a card built from the Activity screenshot, plus og:url, og:type, og:site_name, twitter:card, a sitemap, robots.txt and rel=canonical. Social tags are now per page, so a link to /download no longer previews as the home page. Every page carries its own description.

README. 211 lines to 149. Removed CLI reference that duplicated the docs site; added a supported-agents table with real read paths, an architecture section, verified CLI examples and a dev quickstart. Fixes a "Windows is coming soon" line that had been false since v0.1.22.

Docs pages brought in line with the canon. ChatGPT Work went from zero mentions to four pages. Codex had been described as "OpenAI's coding and knowledge work agent", merging two products. Twenty task-shaped headings renamed under a new rule, with inbound anchors repointed in the same commits.

Privacy page now discloses the update check, the one network call Argus makes unprompted.

npm metadata. The published package had no repository, homepage, license or README, so npmjs.com rendered a bare description with no link back.

SECURITY.md, routed through GitHub private vulnerability reporting.

Checks

692 tests pass, typecheck clean, docs build clean at every commit so no dead anchors mid-history. Security review found nothing: the code surface is six files and none takes untrusted input.

Not included

Release notes are still raw PR titles, mirrored onto the public changelog. Deferred deliberately.

Follow-ups: the demo site (web/index.html) has no title or description, and #314 covers Cowork on Windows.

hayesdavis and others added 12 commits July 27, 2026 15:56
Split docs/contributing into six single-purpose guides so each owns one
question and none restates another. Previously the audience definition and
the product lexicon both lived inside the technical-writing guide, which
scoped them to docs/ even though they govern the CLI, the web app, the
README and the repo description too. That scoping gap is why several
surfaces drifted apart.

- audience.md (new): the canonical reader definition, promoted out of
  technical-writing.md because it sits upstream of everything else and
  governs product decisions, not just copy.
- positioning.md (new): the promise, the canonical descriptions, which
  register each surface uses, which claims are safe to make, the answer to
  the privacy question, related projects, and an inventory of every place a
  description of Argus lives.
- terminology.md (new): the product lexicon, promoted out of
  technical-writing.md so someone writing an error message doesn't have to
  open the docs-structure guide.
- voice-and-tone.md: now governs every surface. Absorbs the terminal rules
  that were duplicated in CLAUDE.md, and scopes "Not a sales pitch" to
  reference docs so outward-facing copy can lead with the promise.
- technical-writing.md: trimmed to building a docs page.
- README.md: routes by job rather than listing files.

Also records that Codex and ChatGPT Work are two separate OpenAI products
rather than two names for one, per OpenAI's own documentation, and that
Argus covers both through a single source because they appear to share a
session format on disk.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The audience definition, the terminal-output rules and the product name
styling were all duplicated here and in docs/contributing/, which is how
they drift. Each is now a pointer to whichever guide owns it.

Also widens the writing section from "Writing the docs" to "Writing about
Argus", since the guides govern every user-facing word and not just the
VitePress site, and lists what each of the five owns.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The site description and og:description still described Argus as software that
"analyzes AI agent usage", and og:description called the audience "non-coders",
which docs/contributing/ now rules out. Both now use the canonical one-liner.

Fills in what was missing rather than wrong:

- og:image, with a card built from the Activity screenshot. Shared links
  previewed with no image at all before this.
- og:url, og:type, og:site_name, twitter:card and twitter:image.
- A sitemap and a robots.txt pointing at it.
- rel=canonical on every page.

og:title, og:description, og:url and the canonical are now per page via
transformPageData, so a link to /download no longer previews as the home page.
Each page carries its own description in frontmatter, which feeds both the
standard meta description and og:description. The home page deliberately has
none so it falls back to the one-liner, keeping that copy in one place.
docs/changelog.md is generated, so its frontmatter is emitted by the generator,
above the banner comment since VitePress only parses frontmatter at the top of
a file.

scripts/og-image.ts (bun run og-image) rebuilds the card, so it can be
regenerated when the screenshot changes instead of being a binary nobody can
reproduce. Re-run it after refreshing the Activity screenshot.

Also drops icon-192.png, icon-512.png and icon-512-maskable.png. There is no
web manifest and nothing referenced them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
"Filtering what you see" and "Moving between views" read as instructions and
make the reader parse a sentence to find the thing they came for. A noun phrase
scans faster in an outline and doesn't lead the reader by the hand.

Carves out conventional section names so Install, Settings and License stay as
they are: the rule targets headings shaped like sentences, questions or gerunds,
not every heading containing a verb.

The heading-case bullet used "Get started" and "What the dashboard shows" as its
examples, both of which the new rule rejects, so those are replaced too.

20 headings across 11 published pages still use the old style and are left for a
separate pass.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Cuts it from 211 lines to 83. The removed 145 lines were CLI reference (flag
tables for serve and index, the task-interpretation config, the sync
walkthrough, systemd and launchd units) that already lives on the docs site and
was drifting out of sync with it.

Fixes what was wrong rather than just long:

- "The macOS build is available now; Windows is coming soon" had been false
  since v0.1.22, which ships signed x64 and arm64 installers.
- The lede led with "analyzes how you use your AI agents", the mechanism-first
  opening docs/contributing/positioning.md rules out. It now uses the canonical
  lede from there.
- Nothing linked the demo, which is the fastest way to evaluate Argus without
  installing a binary.
- Agents were listed in the old order and omitted ChatGPT Work.

Friction signals are now marked Claude-only rather than implied for every
agent, and the supported-agent line says "indexes" rather than "reads", which
is reserved for describing what Argus does to your files.

Headings follow the subject-naming rule.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The previous pass cut the README from 211 lines to 83 by removing CLI reference
that duplicated the docs site. That was the right cut but it went too far, and
took the evaluation material with it. Reference belongs on the docs site;
whether Argus can see your sessions, and what it does with them, belongs here,
because a reader decides that before clicking through.

Compared against ccusage (~2,000 words) and AgentsView (~8,000), both of which
lead with a supported-sources table and real usage examples. This lands at 149
lines.

- Supported agents table with the actual read path per platform, from
  src/paths.ts. Surfaces two facts that were buried: Claude Chat comes out of
  the desktop app's cache rather than a transcript directory, and ChatGPT Work
  and Codex share one directory.
- Architecture section: local SQLite, no service, no account; index as the sole
  writer; the optional model pass and how to point it elsewhere or switch it
  off; the Tauri tray shell.
- Real CLI examples, checked against src/cli.ts rather than invented.
- Development quickstart inline, so "can I build this" doesn't need a second
  file.
- Features now mirrors the docs: the views in the left nav, in the same order
  and framing as docs/overview.md, each linking to the page that covers it.
  Adds Argus Hub, which the feature list had omitted entirely.
- Two screenshot tables, alt text reused verbatim from the docs so the same
  image is described the same way in both places.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The guides in docs/contributing/ landed a few commits ago and the docs site,
the largest surface we have, didn't follow them.

- docs/index.md opened with "Argus analyzes your AI agent usage to help you be
  more productive with AI", the mechanism-first lede the canon rules out. It now
  uses the canonical lede.
- ChatGPT Work appeared on zero pages, so a reader who lives in Work had no way
  to learn Argus covers them. It's now named on four.
- supported-agents.md described Codex as "OpenAI's coding and knowledge work
  agent", merging two products the canon keeps distinct. Codex and ChatGPT Work
  are now separate rows, with a note that they share a directory so Argus reads
  both together.
- Agent lists in four pages used the old order. They now run knowledge work,
  chat, coding.
- The Cowork row put "macOS only" in the Windows column, which reads as a fact
  about Anthropic's product rather than a gap in Argus. It now says not yet
  supported. See #314.

cli-reference.md is here only for its heading rename, because supported-agents.md
links that anchor and the two need to move together.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Applies the heading rule from docs/contributing/technical-writing.md: headings
name the subject, not the reader's task. "Filtering what you see" becomes
"Filters", "Choosing a model provider" becomes "Model providers", and so on.

README.md is here for one line: it linked tasks#choosing-a-model-provider, which
this rename breaks, so the repoint has to land in the same commit.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The desktop app polls GitHub for new releases on a schedule, and the page whose
whole job is enumerating what leaves your machine didn't mention it. That's the
one network call Argus makes without being asked, so a reader auditing the
question should find it there rather than discover it themselves.

Says plainly that the Updates setting controls whether versions install on their
own, not whether Argus checks: with it off it still checks and tells you.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
It listed two, "voice and tone, and technical writing", so anyone following the
pointer missed audience, positioning and terminology. Also widens the scope
line: the guides cover the README, the repo description, package metadata and
release notes, not just pages under docs/.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The published package.json carried only name, version, description, bin, files
and optionalDependencies. npmjs.com rendered a bare description with no link
back to the project, no license and no README.

Adds repository, homepage, bugs and license to the launcher and to every
platform package, plus keywords on the launcher, and ships README.md and LICENSE
so the package page renders. Keywords are deliberately short; a long tail of
near-duplicates reads as padding.

The root description was still the old positioning copy, so it's now the
canonical one-liner from docs/contributing/positioning.md, which is where the
published description comes from.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Argus reads your agent sessions, so a security policy is the file a careful
reader looks for and there wasn't one.

Reports go through GitHub's private vulnerability reporting rather than an email
address, so there's no mailbox to maintain. Scope names what matters most given
what Argus touches: session data leaving the machine, stored API keys, the local
web server and the desktop front-door port, and crafted session files during
indexing.

Also states what Argus already does, so a reporter can judge whether something
is a real finding: read-only indexing, nothing uploaded without a Hub, text
staying local, where keys live per platform, the update check, and how release
artifacts are signed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@hayesdavis
hayesdavis marked this pull request as ready for review July 27, 2026 23:15
@hayesdavis
hayesdavis merged commit b234771 into main Jul 27, 2026
1 check passed
@hayesdavis
hayesdavis deleted the worktree-positioning-canon branch July 27, 2026 23:18
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