Chalk Labs
Need help deploying spencer-approved-frontends?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/schneidenbach-spencer-approved-frontends
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, frontend, data, security
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 26, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/spencer-approved-frontends
What's inside
- Skill name
spencer-approved-frontends- Description
- Spencer's house style for UIs. DO NOT INVOKE THIS SKILL UNLESS SPECIFICALLY ASKED. Use whenever Spencer asks for a frontend, page, screen, component, dashboard, app shell, modal, form, table, or any kind of web visual — including phrasings like "build a UI for X", "throw together a screen", "make a dashboard", "I need a quick app". Also use when starting a brand-new React project from scratch on this machine. Overrides any general "frontend-design" skill: Spencer dislikes the default shiny-AI aesthetic and wants tight, neutral, dense, system-font UIs that look like the due-diligence and security-review apps. If Spencer is editing an existing repo with a clearly different stack (e.g. Next.js with shadcn already wired up), follow that repo's conventions, but still apply Spencer's typography, density, and tone preferences from this skill.
- License
- MIT
- Instructions
- 375 lines in SKILL.md · view on GitHub
Before installing
- Instructions call the network
Files (7)
- SKILL.md
- openai.yaml · agents/
- anti-patterns.md · references/
- full-index-css.md · references/
- full-tailwind-config.md · references/
- starter-app.md · references/
- textarea-autoresize.md · references/
SKILL.md (first lines)
# Spencer-Approved Frontends
The default "AI-generated frontend" look is wrong for Spencer. Glassy gradients, oversized hero text, generous padding, drop shadows on every card, blue-to-purple linear gradients, rounded-2xl everything, lucide icons everywhere — none of that. Spencer ships dense, neutral, system-font UIs that read like serious internal tooling. Think Linear, Notion's admin views, the macOS settings panel — not a SaaS landing page.
When in doubt, fewer pixels of decoration, smaller text, tighter spacing, and one neutral color ramp.
## When this overrides other skills
If `frontend-design` (or anything similar) is also active, this skill wins on style decisions. The other skill's process is fine; the visual defaults are not. Spencer's frontends look like the `due-diligence` and `security-review` repos in `~/Repos/`. If you have access to those repos and the user is starting something new, you may peek at them as ground truth. Otherwise, follow the patterns in this file.
## Stack defaults for new projects
For a new project from scratch, start here unless Spencer says otherwise:
- **React 18** with **Vite 5+** (not Next.js, not CRA)
- **TypeScript** strict mode + `noUncheckedIndexedAccess` + `noImplicitOverride`
- **Tailwind CSS 3.4** (NOT Tailwind 4 by default — Spencer's repos pin to 3.4)
- **npm** (not pnpm/yarn/bun)
- **No component library.** No shadcn, no Radix, no MUI, no Mantine, no Chakra, no Headless UI. Build the few primitives you need by hand (Modal, Badge, Button, InlinePicker).
- **No icon library** by default. Use small SVG inline or text glyphs (`::` for a drag handle, `×` for close). If Spencer asks for icons, ask which library before adding one.
- **No form library.** `useState` + a plain `<form onSubmit>` is enough.
- **No state library.** `useState` / `useReducer` / `useContext` is enough until proven otherwise. No Redux, Zustand, Jotai, Recoil.
- **No data fetching library.** Plain `fetch` wrapped in a small `lib/api.ts` module. No React Query, SWR, axios.
- **No animation library.** No framer-motion, no react-spring. CSS `transition` on hover/focus is the whole animation budget.
- **No router library** for small apps — manual `window.location.pathname` parsing in `App.tsx`. If the app grows past ~3 routes, ask Spencer if it's time for a router.
If Spencer asks for a different stack, follow Spencer. But propose this stack first.
## Project layout
```
src/
App.tsx root, manual routing
main.tsx entry
index.css global tokens + utilities
components/ one .tsx per component, PascalCase
lib/ cx.ts, format.ts, api.ts, hooks
shared/ types shared with backend, aliased as @shared/*
```
No barrel exports. No `pages/` directory for small apps. No co-located CSS files — Tailwind utilities only.
## The visual contract
Every Spencer UI obeys these defaults. Memorize them.
### Color tokens
Define these in `tailwind.config.ts` and `index.css` as CSS variables. Do not skip this step — Tailwind's default neutral palette is too cool and too saturated.
```ts
// tailwind.config.ts (excerpt)
colors: {
surface: {
DEFAULT: "#ffffff",
soft: "#fafafa",
deep: "#f5f5f4",
hover: "#f4f4f4",
},
ink: {
DEFAULT: "#0a0a0a",
soft: "#404040",
muted: "#737373",
faint: "#a3a3a3",
},
line: {
DEFAULT: "#eaeaea",
strong: "#d4d4d4",
},
// domain-specific severity ramp — rename per project
// e.g. "risk" for due-diligence, "sev" for security-review,
// "status" or "tier" for whatever the app is about
risk: {
critical: "#7f1d1d",
high: "#b91c1c",
medium: "#b45309",
low: "#1d4ed8",
},
},
```
Pair each semantic color with a *soft background variant* via CSS variable, e.g. `--risk-high-soft`, used as `bg-[var(--risk-high-soft)]`. Soft backgrounds + saturated text = the badge look.
### Typography
```ts
fontFamily: {
sans: ["-apple-system", "BlinkMacSystemFont", "'SF Pro Text'", "'Segoe UI'", "Roboto", "Helvetica", "Arial", "sans-serif"],
mono: ["'SFMono-Regular'", "'SF Mono'", "Menlo", "Consolas", "monospace"],
},
```
System fonts only. No Google Fonts, no Inter, no Geist, no font imports.
**Allowed sizes** (use `text-[Npx]` arbitrary values where Tailwind defaults don't fit):
- `11px` — tracked labels, badges, dense buttons
- `12px` — primary buttons, dense controls
- `12.5px` — secondary buttons
- `13px` — body text (this is the base — the `<body>` itself is `font-size: 14px` with `line-height: 1.5`, but most app chrome is 13px)
- `15px` — modal titles, section headings
That is the whole scale. No `text-base`, no `text-lg`, no `text-2xl`, no hero text. If you need emphasis, use `font-semibold tracking-tight` at 15px, not bigger type.
For form/section labels, use this utility (defined in `index.css`):
```css
.tracked-label {
font-size: 11px;
font-weight: 500;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--ink-muted);
}
```
### Spacing & density
Spencer's UIs are *dense*. Allowed spacing values, in order of frequency:From schneidenbach/skills, MIT.
More from schneidenbach/skills
- 0.635score
revu
schneidenbach
Open the revu review window for this session's code changes across every repo or worktree it touched, wait for the user to submit a PR-style review, then…
SkillAFreshness: A★ 20Claude Code +9 - 0.609score
claude-code-review
schneidenbach
Review code changes for bugs, security issues, and code quality using Claude Code CLI as an external adversarial reviewer.
SkillBFreshness: B★ 20Claude Code +9 - 0.609score
codex-code-review
schneidenbach
Review code changes for bugs, security issues, and code quality using OpenAI Codex CLI as an external adversarial reviewer.
SkillBFreshness: B★ 20Claude Code +9 - 0.595score
relentless-quality-assurance
schneidenbach
A relentless quality assurance session.
SkillBFreshness: B★ 20Claude Code +9 - 0.593score
relentless-quality-assurance-and-fixes
schneidenbach
A relentless quality assurance session where we also fix the bugs we find.
SkillBFreshness: B★ 20Claude Code +9 - 0.579score
prototype
schneidenbach
Build a throwaway prototype to answer a design question.
SkillBFreshness: B★ 20Claude Code +9 - 0.579score
domain-modeling
schneidenbach
Build and sharpen a project's domain model.
SkillBFreshness: B★ 20Claude Code +9 - 0.579score
grilling
schneidenbach
Grill the user relentlessly about a plan, decision, or idea.
SkillBFreshness: B★ 20Claude Code +9 - 0.576score
wayfinder
schneidenbach
Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time…
SkillBFreshness: B★ 20Claude Code +9
Signals
- Stars
- 20
- Forks
- 2
- Open issues
- 0
- Last commit (this folder)
- Aug 26, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/schneidenbach/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from schneidenbach
- 0.635score
revu
schneidenbach
Open the revu review window for this session's code changes across every repo or worktree it touched, wait for the user to submit a PR-style review, then…
SkillAFreshness: A★ 20Claude Code +9 - 0.609score
claude-code-review
schneidenbach
Review code changes for bugs, security issues, and code quality using Claude Code CLI as an external adversarial reviewer.
SkillBFreshness: B★ 20Claude Code +9 - 0.609score
codex-code-review
schneidenbach
Review code changes for bugs, security issues, and code quality using OpenAI Codex CLI as an external adversarial reviewer.
SkillBFreshness: B★ 20Claude Code +9 - 0.595score
relentless-quality-assurance
schneidenbach
A relentless quality assurance session.
SkillBFreshness: B★ 20Claude Code +9 - 0.593score
relentless-quality-assurance-and-fixes
schneidenbach
A relentless quality assurance session where we also fix the bugs we find.
SkillBFreshness: B★ 20Claude Code +9 - 0.579score
prototype
schneidenbach
Build a throwaway prototype to answer a design question.
SkillBFreshness: B★ 20Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get spencer-approved-frontends running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
spencer-approved-frontends skill. Agent Mart. https://agentmart.dev/skills/schneidenbach-spencer-approved-frontends (last updated 2026-10-24)