Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions app/DESIGN.md/route.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// ABOUTME: Serves the /DESIGN.md agent artifact — Steel's brand design language.
// ABOUTME: Returned as raw markdown so the YAML token block stays machine-readable.
import { DESIGN_MD } from '@/lib/design-md';

export const revalidate = false;

export async function GET() {
return new Response(DESIGN_MD, {
headers: { 'Content-Type': 'text/markdown; charset=utf-8' },
});
}
1 change: 1 addition & 0 deletions lib/agent-instructions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export const AGENT_INSTRUCTIONS = `# Steel Documentation
- API base URL: \`https://api.steel.dev\`
- WebSocket: \`wss://connect.steel.dev?apiKey=<key>&sessionId=<id>\`
- API reference: https://steel.apidocumentation.com/api-reference
- Brand design language (DESIGN.md): https://docs.steel.dev/DESIGN.md

## Agent Instructions

Expand Down
69 changes: 69 additions & 0 deletions lib/design-md.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
// ABOUTME: Steel's core brand design language, served to agents at /DESIGN.md.
// ABOUTME: Machine-readable token block (palette/typefaces) followed by brand principles.

export const DESIGN_MD = `---
version: alpha
name: Steel
description: Steel's core brand design language — dark, dense, technical, and quiet. Color carries meaning; the mark is confident and minimal.
palette:
canvas: "#0F0F0F" # the void behind everything
surface: ["#161615", "#1C1C1A", "#232320"] # neutral steps for layering
ink: ["#EDEDEC", "#A1A09A", "#7F7E77"] # primary → muted text
hairline: "#232320"
brand: ["#F5D90A", "#FF5500"] # Steel yellow (primary), Steel orange
status: { live: "#30A46C", warn: "#F5D90A", error: "#E5484D", info: "#0090FF" }
typefaces:
ui: Geist
mono: "Geist Mono"
voice: "Compact and confident; Geist Mono carries code, data, and labels."
---

# Steel Brand

Steel is dark-first, dense, and quiet — a utilitarian, technical aesthetic for
people who work with browsers and infrastructure at speed. The interface steps
back; the data does the talking.

## Character
- **Dark and grounded.** Near-black canvases layered with warm-neutral surfaces. Never bright for its own sake.
- **Color means state.** Status colors signal what's happening (live, warn, error, info); brand yellow is the single accent, used sparingly.
- **Mono-minded.** Geist for prose; Geist Mono for code, identifiers, metrics, and labels. It reads like a tool, not a brochure.
- **Quiet depth.** Structure comes from tonal steps and 1px hairlines, not soft shadows.

## The mark
- Keep at least 32 px of clear space around the logo and wordmark.
- Never recolor, stretch, rotate, or add effects to the logo. On light grounds, use the inverted variant.
- Steel yellow (#F5D90A) may sit beside the mark as the brand accent; it never replaces the wordmark.

### Logo

\`\`\`svg
<svg width="556" height="400" viewBox="0 0 556 400" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M131.683 0C58.9566 0 0 57.5629 0 128.57C0 199.578 58.9566 257.141 131.683 257.141H277.998C286.079 257.141 292.629 263.537 292.629 271.426C292.629 279.316 286.079 285.712 277.998 285.712H10.242C4.58553 285.712 0 290.189 0 295.712V389.997C0 395.52 4.58553 399.997 10.242 399.997H277.998C350.725 399.997 409.681 342.434 409.681 271.426C409.681 200.419 350.725 142.856 277.998 142.856H131.683C123.603 142.856 117.052 136.46 117.052 128.57C117.052 120.681 123.603 114.285 131.683 114.285H379.797C380.005 114.287 380.213 114.288 380.422 114.288H424.317C432.397 114.288 438.948 120.684 438.948 128.574V390C438.948 395.523 443.534 400 449.19 400H545.758C551.415 400 556 395.523 556 390V128.574C556 57.5661 497.043 0.00320407 424.317 0.00320407H409.681V0H131.683Z" fill="white"/>
</svg>
\`\`\`

### Logo with wordmark

\`\`\`svg
<svg width="116" height="23" viewBox="0 0 116 23" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1890_52524)">
<path d="M7.57889 0C3.39319 0 0 3.30987 0 7.3928C0 11.4757 3.39319 14.7856 7.57889 14.7856H15.9999C16.465 14.7856 16.842 15.1534 16.842 15.607C16.842 16.0607 16.465 16.4284 15.9999 16.4284H0.58947C0.263915 16.4284 0 16.6859 0 17.0034V22.4248C0 22.7424 0.263915 22.9998 0.58947 22.9998H15.9999C20.1856 22.9998 23.5788 19.6899 23.5788 15.607C23.5788 11.5241 20.1856 8.21422 15.9999 8.21422H7.57889C7.11382 8.21422 6.73679 7.84646 6.73679 7.3928C6.73679 6.93914 7.11382 6.57138 7.57889 6.57138H21.8588C21.8708 6.5715 21.8828 6.57156 21.8948 6.57156H24.4211C24.8862 6.57156 25.2632 6.93932 25.2632 7.39298V22.425C25.2632 22.7426 25.5271 23 25.8527 23H31.4105C31.7361 23 32 22.7426 32 22.425V7.39298C32 3.31005 28.6068 0.000184234 24.4211 0.000184234H23.5788L7.57889 0Z" fill="white"/>
<path d="M49.4816 23C47.596 23 45.9675 22.6797 44.5962 22.0391C43.2248 21.3985 42.1427 20.5099 41.3499 19.3733C40.5785 18.2161 40.1286 16.8729 40 15.3437L44.2426 15.0957C44.4354 16.5216 44.9711 17.6168 45.8497 18.3814C46.7282 19.146 47.9602 19.5283 49.5459 19.5283C50.8958 19.5283 51.935 19.2907 52.6635 18.8154C53.4135 18.3194 53.7885 17.6065 53.7885 16.6765C53.7885 16.1186 53.6492 15.6226 53.3706 15.1887C53.0921 14.7547 52.5564 14.3518 51.7636 13.9798C50.9708 13.6078 49.7923 13.2462 48.2281 12.8949C46.3425 12.4816 44.8319 12.0166 43.6962 11.5C42.5606 10.9627 41.7356 10.3014 41.2214 9.51617C40.7071 8.71024 40.45 7.708 40.45 6.50943C40.45 5.22821 40.7821 4.10198 41.4463 3.13073C42.1106 2.13881 43.0534 1.37421 44.2747 0.836926C45.4961 0.278975 46.9639 0 48.6781 0C50.4994 0 52.0421 0.320305 53.3063 0.960915C54.592 1.58086 55.5884 2.43845 56.2955 3.53369C57.024 4.62893 57.474 5.88949 57.6454 7.31536L53.4349 7.50135C53.2849 6.30278 52.8028 5.33154 51.9886 4.5876C51.1743 3.84367 50.0494 3.4717 48.6138 3.4717C47.4138 3.4717 46.4603 3.74034 45.7532 4.27763C45.0676 4.81491 44.7247 5.50719 44.7247 6.35445C44.7247 6.95373 44.864 7.44969 45.1425 7.84232C45.4425 8.23495 45.9675 8.57592 46.7175 8.86523C47.4674 9.15454 48.5173 9.44385 49.8673 9.73315C51.9029 10.1671 53.5206 10.7044 54.7205 11.345C55.9205 11.965 56.7776 12.6986 57.2918 13.5458C57.8061 14.3931 58.0632 15.3643 58.0632 16.4596C58.0632 17.8028 57.6989 18.9703 56.9704 19.9623C56.2633 20.9335 55.2669 21.6878 53.9813 22.2251C52.7171 22.7417 51.2172 23 49.4816 23Z" fill="white"/>
<path d="M67.2076 22.5038C65.4934 22.5038 64.2292 22.1319 63.4149 21.3879C62.6221 20.6233 62.2257 19.4144 62.2257 17.7613V9.02006H59.5259V5.95132H62.2257V2.07666H66.3397V5.95132H70.8716V9.02006H66.3397V17.3893C66.3397 18.1746 66.5112 18.7118 66.854 19.0011C67.2183 19.2905 67.7539 19.4351 68.461 19.4351H70.8716V22.5038H67.2076Z" fill="white"/>
<path d="M80.3882 22.8761C78.674 22.8761 77.1848 22.5248 75.9206 21.8222C74.6564 21.0989 73.6815 20.0864 72.9958 18.7845C72.3101 17.4826 71.9673 15.9637 71.9673 14.2279C71.9673 12.492 72.3101 10.9731 72.9958 9.67124C73.6815 8.36935 74.6457 7.3671 75.8885 6.6645C77.1527 5.94123 78.6204 5.57959 80.2918 5.57959C81.9202 5.57959 83.3452 5.9309 84.5665 6.6335C85.7879 7.33611 86.7307 8.34869 87.3949 9.67124C88.0806 10.9938 88.4234 12.585 88.4234 14.4448V15.3438H76.242C76.3063 16.7903 76.7134 17.8855 77.4634 18.6295C78.2133 19.3527 79.199 19.7144 80.4203 19.7144C82.2845 19.7144 83.4737 18.9498 83.988 17.4206L88.1984 17.6686C87.727 19.2804 86.795 20.5513 85.4022 21.4812C84.0308 22.4111 82.3595 22.8761 80.3882 22.8761ZM76.242 12.678H84.1808C84.0737 11.3348 83.6666 10.3429 82.9595 9.70224C82.2738 9.04096 81.3846 8.71032 80.2918 8.71032C79.1776 8.71032 78.2669 9.05129 77.5598 9.73323C76.8527 10.4152 76.4134 11.3968 76.242 12.678Z" fill="white"/>
<path d="M98.5815 22.8761C96.8673 22.8761 95.3781 22.5248 94.1139 21.8222C92.8497 21.0989 91.8748 20.0864 91.1891 18.7845C90.5034 17.4826 90.1606 15.9637 90.1606 14.2279C90.1606 12.492 90.5034 10.9731 91.1891 9.67124C91.8748 8.36935 92.839 7.3671 94.0818 6.6645C95.346 5.94123 96.8138 5.57959 98.4851 5.57959C100.114 5.57959 101.539 5.9309 102.76 6.6335C103.981 7.33611 104.924 8.34869 105.588 9.67124C106.274 10.9938 106.617 12.585 106.617 14.4448V15.3438H94.4353C94.4996 16.7903 94.9067 17.8855 95.6567 18.6295C96.4067 19.3527 97.3923 19.7144 98.6137 19.7144C100.478 19.7144 101.667 18.9498 102.181 17.4206L106.392 17.6686C105.92 19.2804 104.988 20.5513 103.596 21.4812C102.224 22.4111 100.553 22.8761 98.5815 22.8761ZM94.4353 12.678H102.374C102.267 11.3348 101.86 10.3429 101.153 9.70224C100.467 9.04096 99.5779 8.71032 98.4851 8.71032C97.3709 8.71032 96.4602 9.05129 95.7531 9.73323C95.046 10.4152 94.6068 11.3968 94.4353 12.678Z" fill="white"/>
<path d="M113.5 23C112.236 23 111.25 22.6199 110.5 22C109.771 21.3801 109.347 19.9623 109.347 18.5984V0H113.461V18.1954C113.461 19.022 113.889 19.4353 114.747 19.4353H116V23H113.5Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_1890_52524">
<rect width="116" height="23" fill="white"/>
</clipPath>
</defs>
</svg>
\`\`\`

## Voice
Direct, technical, no fluff. Write operator to operator — precise nouns, short
sentences, no marketing superlatives.
`;
2 changes: 2 additions & 0 deletions lib/markdown-negotiation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ const MARKDOWN_VARY_HEADERS = ['Accept', 'User-Agent'];
const EXCLUDED_EXACT_PATHS = new Set([
'/AGENTS',
'/AGENTS.md',
'/DESIGN',
'/DESIGN.md',
'/favicon.ico',
'/llms-full.txt',
'/llms.txt',
Expand Down
16 changes: 15 additions & 1 deletion next.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ const config = {
destination: "/AGENTS.md",
permanent: true,
},
{
source: "/.well-known/design.md",
destination: "/DESIGN.md",
permanent: true,
},
{
source: "/overview/llms-full.txt",
destination: "/llms-full.txt",
Expand Down Expand Up @@ -268,12 +273,21 @@ const config = {
},
],
},
{
source: "/DESIGN.md",
headers: [
{
key: "X-Robots-Tag",
value: "noindex",
},
],
},
{
source: "/(.*)",
headers: [
{
key: "Link",
value: '</llms.txt>; rel="alternate"; type="text/markdown", </llms-full.txt>; rel="alternate"; type="text/markdown", </.well-known/api-catalog>; rel="api-catalog"; type="application/linkset+json"',
value: '</llms.txt>; rel="alternate"; type="text/markdown", </llms-full.txt>; rel="alternate"; type="text/markdown", </.well-known/api-catalog>; rel="api-catalog"; type="application/linkset+json", </DESIGN.md>; rel="design"; type="text/markdown"',
},
],
},
Expand Down
Loading