shipit: Skill for Claude Code

.agents/skills/client-architecture/SKILL.md

client-architecture is a skill for Claude Code, Codex from nikzlabs/shipit. It costs 54 tokens per session (2,749 once invoked), scanned A, original, Apache-2.0.

A guide to the ShipIt web client, which is a React single-page application. It documents its state stores, browser-to-server communication, and main interface components.

In plain words
What is it for?
Use it when changing frontend components, shared state, API calls, live session updates, or the client’s three-panel layout.
Why use it?
It gives developers a map of the client code so they can find the right store, hook, or component without tracing the whole application first.

Skill for Claude CodeCodex

Written for Claude Code: user-invocable in frontmatter. Also seen: names the AskUserQuestion tool; installed under .agents/ (shared by several agents); mentions Codex.

This is nikzlabs/shipit's own configuration. It tells Claude Code and Codex how to work on shipit itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything shipit configures →

Reuse

Borrowing it

Nothing to install: this file belongs to nikzlabs/shipit. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/nikzlabs/shipit/main/.agents/skills/client-architecture/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/nikzlabs/shipit

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for client-architecture

README.md
[![agentmods](https://agentmods.dev/badge/skills/nikzlabs/shipit/client-architecture/github.svg)](https://agentmods.dev/skills/nikzlabs/shipit/client-architecture)
Your own site
<a href="https://agentmods.dev/skills/nikzlabs/shipit/client-architecture"><img src="https://agentmods.dev/badge/skills/nikzlabs/shipit/client-architecture/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for client-architecture

Your own site · 80×15
<a href="https://agentmods.dev/skills/nikzlabs/shipit/client-architecture"><img src="https://agentmods.dev/badge/skills/nikzlabs/shipit/client-architecture.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 54 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,749 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00054 $0.02749
Opus 5.5 $0.00022 $0.01100
Sonnet 5.5 $0.00011 $0.00550
Haiku 4.5 $0.00005 $0.00275

Measured 26d ago against content hash 370893059331, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

client-architecture scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 26d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.agents/skills/client-architecture/SKILL.md · 219 lines

How it starts

The opening of the file, as written. The whole thing — 219 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Client Architecture

The client is a React 19 SPA built with Vite and Tailwind CSS v4. State management uses Zustand stores. Communication with the server uses three channels: HTTP for reads/mutations, per-session WebSocket for streaming and real-time interaction, and SSE for global broadcasts.

Entry Point

src/client/main.tsx renders the app inside a BrowserRouter with an ErrorBoundary. Two route patterns:

  • /session/:sessionId — session view
  • * — catch-all (home screen, /{slug}/new for new repo sessions)

src/client/App.tsx is the main component. It wires together all hooks, stores, and UI components. Layout is a three-panel design: sidebar (sessions), center (chat), right (preview/files/git/terminal).

State Management (Zustand)

The main stores (partial — ls src/client/stores/ for the full set):

Store File Key State
Session session-store.ts sessionId, messages[], isLoading, activity, sessions[], authUrl, queuedMessages[]
Git git-store.ts commits[], identity, turnDiff, lastCommitPair
File file-store.ts tree[], viewingFile, viewingFileContent, docFiles[]
Preview preview-store.ts status, selectedPort, installStatus, crashInfo
Terminal terminal-store.ts entries[], mode, shellStarted
PR pr-store.ts result, status, descGenerating
Settings settings-store.ts permissionMode, systemPromptContent, githubStatus, pendingFiles[]
UI ui-store.ts rightTab, templates[], agentList, modelInfo, toast, features[]
Repo repo-store.ts repos[], addRepoDialogOpen

Patterns

  • Stores are created with create<StateType>((set, get) => ({...})).
  • Each store has a reset() method for clearing session-specific state during session switching.
  • Components subscribe to individual fields via selectors: useSessionStore((s) => s.messages).
  • Stores are updated directly — no centralized dispatcher. Handlers call store.getState().setX(value).
  • App.tsx selects single rows, never a list that changes for other sessions (sessions, the PR store's per-session maps): each such change would re-render the whole app. setSessions keeps unchanged row objects (utils/session-rows.ts), so a one-row selector is stable. A reader of the whole list goes in a leaf component (AttentionNotifications, AllSessionsDialogWithRows) or in AppLayout, which gets the panels as finished elements. Guard: App.render-count.test.tsx.

Read the full file on GitHub · 219 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 26d ago Changed · +1 lines 370893059331
  2. 1mo ago Changed · -5 lines 5d1c58fda274
  3. 1mo ago First seen · 223 lines · 54 tokens per session scan A eaa5b378a264

Subscribe to this mod's changes

client-architecture is a skill published in the GitHub repository nikzlabs/shipit (9 stars, last pushed today), licensed Apache-2.0. It adds 54 tokens to every session and 2,749 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories