winter-super-cli 2026.6.21 → 2026.6.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/memories/readme.md +35 -0
- package/package.json +6 -1
- package/resources/local/agents.md/AGENTS.md +43 -0
- package/resources/local/agents.md/LICENSE +21 -0
- package/resources/local/agents.md/README.md +49 -0
- package/resources/local/agents.md/components/AboutSection.tsx +37 -0
- package/resources/local/agents.md/components/CodeExample.tsx +207 -0
- package/resources/local/agents.md/components/CompatibilitySection.tsx +378 -0
- package/resources/local/agents.md/components/ExampleListSection.tsx +188 -0
- package/resources/local/agents.md/components/ExamplesSection.tsx +22 -0
- package/resources/local/agents.md/components/FAQSection.tsx +113 -0
- package/resources/local/agents.md/components/Footer.tsx +17 -0
- package/resources/local/agents.md/components/Hero.tsx +230 -0
- package/resources/local/agents.md/components/HowToUseSection.tsx +66 -0
- package/resources/local/agents.md/components/Section.tsx +44 -0
- package/resources/local/agents.md/components/ThreeCanvas.tsx +240 -0
- package/resources/local/agents.md/components/WhySection.tsx +64 -0
- package/resources/local/agents.md/components/icons/ClipboardIcon.tsx +27 -0
- package/resources/local/agents.md/components/icons/CopyIcon.tsx +15 -0
- package/resources/local/agents.md/components/icons/GitHubIcon.tsx +24 -0
- package/resources/local/agents.md/components/icons/LinkIcon.tsx +27 -0
- package/resources/local/agents.md/components/icons/UserIcon.tsx +27 -0
- package/resources/local/agents.md/next.config.ts +8 -0
- package/resources/local/agents.md/package.json +27 -0
- package/resources/local/agents.md/pages/_app.tsx +24 -0
- package/resources/local/agents.md/pages/_document.tsx +24 -0
- package/resources/local/agents.md/pages/index.tsx +160 -0
- package/resources/local/agents.md/pnpm-lock.yaml +2782 -0
- package/resources/local/agents.md/postcss.config.mjs +5 -0
- package/resources/local/agents.md/public/favicon-dark.png +0 -0
- package/resources/local/agents.md/public/favicon-light.png +0 -0
- package/resources/local/agents.md/public/favicon.ico +0 -0
- package/resources/local/agents.md/public/logos/aider.svg +16 -0
- package/resources/local/agents.md/public/logos/amp.svg +5 -0
- package/resources/local/agents.md/public/logos/augment.svg +9 -0
- package/resources/local/agents.md/public/logos/codex.svg +3 -0
- package/resources/local/agents.md/public/logos/copilot.svg +1 -0
- package/resources/local/agents.md/public/logos/cursor.svg +15 -0
- package/resources/local/agents.md/public/logos/devin-dark.svg +1 -0
- package/resources/local/agents.md/public/logos/devin-light.svg +1 -0
- package/resources/local/agents.md/public/logos/factory.svg +3 -0
- package/resources/local/agents.md/public/logos/gemini.svg +27 -0
- package/resources/local/agents.md/public/logos/goose.svg +12 -0
- package/resources/local/agents.md/public/logos/jules.svg +3 -0
- package/resources/local/agents.md/public/logos/junie.svg +5 -0
- package/resources/local/agents.md/public/logos/kilo-code.svg +43 -0
- package/resources/local/agents.md/public/logos/ona-dark.svg +3 -0
- package/resources/local/agents.md/public/logos/ona-light.svg +3 -0
- package/resources/local/agents.md/public/logos/opencode.svg +40 -0
- package/resources/local/agents.md/public/logos/phoenix.svg +44 -0
- package/resources/local/agents.md/public/logos/roocode.svg +3 -0
- package/resources/local/agents.md/public/logos/semgrep.svg +7 -0
- package/resources/local/agents.md/public/logos/uipath.svg +6 -0
- package/resources/local/agents.md/public/logos/vscode-dark.svg +19 -0
- package/resources/local/agents.md/public/logos/vscode-light.svg +12 -0
- package/resources/local/agents.md/public/logos/warp.svg +7 -0
- package/resources/local/agents.md/public/logos/windsurf-dark.svg +3 -0
- package/resources/local/agents.md/public/logos/windsurf-light.svg +3 -0
- package/resources/local/agents.md/public/logos/zed.svg +3 -0
- package/resources/local/agents.md/public/og.png +0 -0
- package/resources/local/agents.md/styles/globals.css +415 -0
- package/resources/local/agents.md/tsconfig.json +34 -0
- package/resources/local/awesome-design-md/README.md +197 -0
- package/resources/local/awesome-design-md/design-md/airbnb/DESIGN.md +545 -0
- package/resources/local/awesome-design-md/design-md/airbnb/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/airtable/DESIGN.md +554 -0
- package/resources/local/awesome-design-md/design-md/airtable/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/apple/DESIGN.md +562 -0
- package/resources/local/awesome-design-md/design-md/apple/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/binance/DESIGN.md +634 -0
- package/resources/local/awesome-design-md/design-md/binance/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/bmw/DESIGN.md +544 -0
- package/resources/local/awesome-design-md/design-md/bmw/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/bmw-m/DESIGN.md +503 -0
- package/resources/local/awesome-design-md/design-md/bmw-m/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/bugatti/DESIGN.md +454 -0
- package/resources/local/awesome-design-md/design-md/bugatti/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/cal/DESIGN.md +542 -0
- package/resources/local/awesome-design-md/design-md/cal/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/claude/DESIGN.md +589 -0
- package/resources/local/awesome-design-md/design-md/claude/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/clay/DESIGN.md +541 -0
- package/resources/local/awesome-design-md/design-md/clay/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/clickhouse/DESIGN.md +544 -0
- package/resources/local/awesome-design-md/design-md/clickhouse/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/cohere/DESIGN.md +451 -0
- package/resources/local/awesome-design-md/design-md/cohere/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/coinbase/DESIGN.md +570 -0
- package/resources/local/awesome-design-md/design-md/coinbase/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/composio/DESIGN.md +506 -0
- package/resources/local/awesome-design-md/design-md/composio/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/cursor/DESIGN.md +537 -0
- package/resources/local/awesome-design-md/design-md/cursor/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/elevenlabs/DESIGN.md +504 -0
- package/resources/local/awesome-design-md/design-md/elevenlabs/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/expo/DESIGN.md +526 -0
- package/resources/local/awesome-design-md/design-md/expo/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/ferrari/DESIGN.md +531 -0
- package/resources/local/awesome-design-md/design-md/ferrari/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/figma/DESIGN.md +578 -0
- package/resources/local/awesome-design-md/design-md/figma/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/framer/DESIGN.md +544 -0
- package/resources/local/awesome-design-md/design-md/framer/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/hashicorp/DESIGN.md +575 -0
- package/resources/local/awesome-design-md/design-md/hashicorp/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/ibm/DESIGN.md +550 -0
- package/resources/local/awesome-design-md/design-md/ibm/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/intercom/DESIGN.md +546 -0
- package/resources/local/awesome-design-md/design-md/intercom/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/kraken/DESIGN.md +125 -0
- package/resources/local/awesome-design-md/design-md/kraken/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/lamborghini/DESIGN.md +288 -0
- package/resources/local/awesome-design-md/design-md/lamborghini/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/linear.app/DESIGN.md +548 -0
- package/resources/local/awesome-design-md/design-md/linear.app/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/lovable/DESIGN.md +298 -0
- package/resources/local/awesome-design-md/design-md/lovable/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/mastercard/DESIGN.md +365 -0
- package/resources/local/awesome-design-md/design-md/mastercard/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/meta/DESIGN.md +683 -0
- package/resources/local/awesome-design-md/design-md/meta/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/minimax/DESIGN.md +746 -0
- package/resources/local/awesome-design-md/design-md/minimax/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/mintlify/DESIGN.md +852 -0
- package/resources/local/awesome-design-md/design-md/mintlify/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/miro/DESIGN.md +825 -0
- package/resources/local/awesome-design-md/design-md/miro/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/mistral.ai/DESIGN.md +773 -0
- package/resources/local/awesome-design-md/design-md/mistral.ai/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/mongodb/DESIGN.md +767 -0
- package/resources/local/awesome-design-md/design-md/mongodb/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/nike/DESIGN.md +575 -0
- package/resources/local/awesome-design-md/design-md/nike/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/notion/DESIGN.md +821 -0
- package/resources/local/awesome-design-md/design-md/notion/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/nvidia/DESIGN.md +640 -0
- package/resources/local/awesome-design-md/design-md/nvidia/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/ollama/DESIGN.md +539 -0
- package/resources/local/awesome-design-md/design-md/ollama/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/opencode.ai/DESIGN.md +521 -0
- package/resources/local/awesome-design-md/design-md/opencode.ai/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/pinterest/DESIGN.md +597 -0
- package/resources/local/awesome-design-md/design-md/pinterest/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/playstation/DESIGN.md +661 -0
- package/resources/local/awesome-design-md/design-md/playstation/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/posthog/DESIGN.md +690 -0
- package/resources/local/awesome-design-md/design-md/posthog/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/raycast/DESIGN.md +669 -0
- package/resources/local/awesome-design-md/design-md/raycast/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/renault/DESIGN.md +589 -0
- package/resources/local/awesome-design-md/design-md/renault/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/replicate/DESIGN.md +616 -0
- package/resources/local/awesome-design-md/design-md/replicate/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/resend/DESIGN.md +585 -0
- package/resources/local/awesome-design-md/design-md/resend/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/revolut/DESIGN.md +636 -0
- package/resources/local/awesome-design-md/design-md/revolut/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/runwayml/DESIGN.md +244 -0
- package/resources/local/awesome-design-md/design-md/runwayml/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/sanity/DESIGN.md +357 -0
- package/resources/local/awesome-design-md/design-md/sanity/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/sentry/DESIGN.md +262 -0
- package/resources/local/awesome-design-md/design-md/sentry/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/shopify/DESIGN.md +350 -0
- package/resources/local/awesome-design-md/design-md/shopify/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/spacex/DESIGN.md +194 -0
- package/resources/local/awesome-design-md/design-md/spacex/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/spotify/DESIGN.md +246 -0
- package/resources/local/awesome-design-md/design-md/spotify/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/starbucks/DESIGN.md +580 -0
- package/resources/local/awesome-design-md/design-md/starbucks/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/stripe/DESIGN.md +322 -0
- package/resources/local/awesome-design-md/design-md/stripe/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/supabase/DESIGN.md +255 -0
- package/resources/local/awesome-design-md/design-md/supabase/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/superhuman/DESIGN.md +252 -0
- package/resources/local/awesome-design-md/design-md/superhuman/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/tesla/DESIGN.md +286 -0
- package/resources/local/awesome-design-md/design-md/tesla/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/theverge/DESIGN.md +339 -0
- package/resources/local/awesome-design-md/design-md/theverge/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/together.ai/DESIGN.md +263 -0
- package/resources/local/awesome-design-md/design-md/together.ai/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/uber/DESIGN.md +295 -0
- package/resources/local/awesome-design-md/design-md/uber/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/vercel/DESIGN.md +310 -0
- package/resources/local/awesome-design-md/design-md/vercel/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/vodafone/DESIGN.md +423 -0
- package/resources/local/awesome-design-md/design-md/vodafone/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/voltagent/DESIGN.md +323 -0
- package/resources/local/awesome-design-md/design-md/voltagent/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/warp/DESIGN.md +253 -0
- package/resources/local/awesome-design-md/design-md/warp/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/webflow/DESIGN.md +92 -0
- package/resources/local/awesome-design-md/design-md/webflow/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/wired/DESIGN.md +278 -0
- package/resources/local/awesome-design-md/design-md/wired/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/wise/DESIGN.md +173 -0
- package/resources/local/awesome-design-md/design-md/wise/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/x.ai/DESIGN.md +257 -0
- package/resources/local/awesome-design-md/design-md/x.ai/README.md +5 -0
- package/resources/local/awesome-design-md/design-md/zapier/DESIGN.md +328 -0
- package/resources/local/awesome-design-md/design-md/zapier/README.md +5 -0
- package/resources/local/awesome-design-md/design-md-cli.js +167 -0
- package/resources/local/karpathy-tools/CLAUDE.md +65 -0
- package/resources/local/karpathy-tools/karpathy-md.js +140 -0
- package/scripts/audit-pack.js +21 -0
- package/skills/coding.md +87 -0
- package/skills/debug.md +63 -0
- package/skills/test.md +64 -0
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
import React, { useEffect, useMemo, useRef, useState } from "react";
|
|
2
|
+
import Image from "next/image";
|
|
3
|
+
import Section from "@/components/Section";
|
|
4
|
+
|
|
5
|
+
type AgentEntry = {
|
|
6
|
+
name: string;
|
|
7
|
+
url: string;
|
|
8
|
+
from?: string;
|
|
9
|
+
imageSrc?: string;
|
|
10
|
+
imageSrcLight?: string;
|
|
11
|
+
imageSrcDark?: string;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const agents: AgentEntry[] = [
|
|
15
|
+
{
|
|
16
|
+
name: "Codex",
|
|
17
|
+
url: "https://openai.com/codex/",
|
|
18
|
+
from: "OpenAI",
|
|
19
|
+
imageSrc: "/logos/codex.svg",
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: "Amp",
|
|
23
|
+
url: "https://ampcode.com",
|
|
24
|
+
imageSrc: "/logos/amp.svg",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: "Jules",
|
|
28
|
+
url: "https://jules.google",
|
|
29
|
+
from: "Google",
|
|
30
|
+
imageSrc: "/logos/jules.svg",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: "Cursor",
|
|
34
|
+
url: "https://cursor.com",
|
|
35
|
+
imageSrc: "/logos/cursor.svg",
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: "Factory",
|
|
39
|
+
url: "https://factory.ai",
|
|
40
|
+
imageSrc: "/logos/factory.svg",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: "RooCode",
|
|
44
|
+
url: "https://roocode.com",
|
|
45
|
+
imageSrc: "/logos/roocode.svg",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: "Aider",
|
|
49
|
+
url: "https://aider.chat/docs/usage/conventions.html#always-load-conventions",
|
|
50
|
+
imageSrc: "/logos/aider.svg",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "Gemini CLI",
|
|
54
|
+
url: "https://github.com/google-gemini/gemini-cli/blob/main/docs/get-started/configuration.md#available-settings-in-settingsjson",
|
|
55
|
+
from: "Google",
|
|
56
|
+
imageSrc: "/logos/gemini.svg",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: "goose",
|
|
60
|
+
url: "https://github.com/block/goose",
|
|
61
|
+
imageSrc: "/logos/goose.svg",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: "Kilo Code",
|
|
65
|
+
url: "https://kilocode.ai/",
|
|
66
|
+
imageSrc: "/logos/kilo-code.svg",
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "opencode",
|
|
70
|
+
url: "https://opencode.ai/docs/rules/",
|
|
71
|
+
imageSrc: "/logos/opencode.svg",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: "Phoenix",
|
|
75
|
+
url: "https://phoenix.new/",
|
|
76
|
+
imageSrc: "/logos/phoenix.svg",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: "Zed",
|
|
80
|
+
url: "https://zed.dev/docs/ai/rules",
|
|
81
|
+
imageSrc: "/logos/zed.svg",
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: "Semgrep",
|
|
85
|
+
url: "https://semgrep.dev",
|
|
86
|
+
imageSrc: "/logos/semgrep.svg",
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: "Warp",
|
|
90
|
+
url: "https://docs.warp.dev/knowledge-and-collaboration/rules#project-scoped-rules-1",
|
|
91
|
+
imageSrc: "/logos/warp.svg",
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: "Coding agent",
|
|
95
|
+
from: "GitHub Copilot",
|
|
96
|
+
url: "https://gh.io/coding-agent-docs",
|
|
97
|
+
imageSrc: "/logos/copilot.svg",
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: "VS Code",
|
|
101
|
+
url: "https://code.visualstudio.com/docs/editor/artificial-intelligence",
|
|
102
|
+
imageSrcLight: "/logos/vscode-light.svg",
|
|
103
|
+
imageSrcDark: "/logos/vscode-dark.svg",
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: "Ona",
|
|
107
|
+
url: "https://ona.com",
|
|
108
|
+
imageSrcLight: "/logos/ona-light.svg",
|
|
109
|
+
imageSrcDark: "/logos/ona-dark.svg",
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
name: "Devin",
|
|
113
|
+
from: "Cognition",
|
|
114
|
+
url: "https://devin.ai",
|
|
115
|
+
imageSrcLight: "/logos/devin-light.svg",
|
|
116
|
+
imageSrcDark: "/logos/devin-dark.svg",
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: "Windsurf",
|
|
120
|
+
from: "Cognition",
|
|
121
|
+
url: "https://windsurf.com",
|
|
122
|
+
imageSrcLight: "/logos/windsurf-light.svg",
|
|
123
|
+
imageSrcDark: "/logos/windsurf-dark.svg",
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: "Autopilot & Coded Agents",
|
|
127
|
+
from: "UiPath",
|
|
128
|
+
url: "https://uipath.github.io/uipath-python",
|
|
129
|
+
imageSrc: "/logos/uipath.svg",
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: "Augment Code",
|
|
133
|
+
url: "https://docs.augmentcode.com/cli/overview",
|
|
134
|
+
imageSrc: "/logos/augment.svg",
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
name: "Junie",
|
|
138
|
+
from: "JetBrains",
|
|
139
|
+
url: "https://jetbrains.com/junie",
|
|
140
|
+
imageSrc: "/logos/junie.svg",
|
|
141
|
+
},
|
|
142
|
+
];
|
|
143
|
+
|
|
144
|
+
const shuffleAgents = (items: AgentEntry[]) => {
|
|
145
|
+
const copy = [...items];
|
|
146
|
+
for (let i = copy.length - 1; i > 0; i -= 1) {
|
|
147
|
+
const j = Math.floor(Math.random() * (i + 1));
|
|
148
|
+
[copy[i], copy[j]] = [copy[j], copy[i]];
|
|
149
|
+
}
|
|
150
|
+
return copy;
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
type LogoItemProps = AgentEntry & {
|
|
154
|
+
variant?: "marquee" | "grid";
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
function LogoItem({
|
|
158
|
+
name,
|
|
159
|
+
url,
|
|
160
|
+
from,
|
|
161
|
+
imageSrc,
|
|
162
|
+
imageSrcLight,
|
|
163
|
+
imageSrcDark,
|
|
164
|
+
variant = "marquee",
|
|
165
|
+
}: LogoItemProps) {
|
|
166
|
+
const baseClasses =
|
|
167
|
+
variant === "grid"
|
|
168
|
+
? "flex h-full w-full min-w-0 items-center gap-4"
|
|
169
|
+
: "flex h-20 min-w-[280px] items-center gap-4 pr-10";
|
|
170
|
+
|
|
171
|
+
return (
|
|
172
|
+
<a
|
|
173
|
+
href={url}
|
|
174
|
+
target="_blank"
|
|
175
|
+
rel="noopener noreferrer"
|
|
176
|
+
className={baseClasses}
|
|
177
|
+
>
|
|
178
|
+
<div className="flex h-16 w-16 items-center justify-center">
|
|
179
|
+
{imageSrcLight && imageSrcDark ? (
|
|
180
|
+
<>
|
|
181
|
+
<Image
|
|
182
|
+
src={imageSrcLight}
|
|
183
|
+
alt={`${name} logo`}
|
|
184
|
+
width={64}
|
|
185
|
+
height={64}
|
|
186
|
+
className="block h-16 w-16 dark:hidden"
|
|
187
|
+
/>
|
|
188
|
+
<Image
|
|
189
|
+
src={imageSrcDark}
|
|
190
|
+
alt={`${name} logo`}
|
|
191
|
+
width={64}
|
|
192
|
+
height={64}
|
|
193
|
+
className="hidden h-16 w-16 dark:block"
|
|
194
|
+
/>
|
|
195
|
+
</>
|
|
196
|
+
) : imageSrc ? (
|
|
197
|
+
<span
|
|
198
|
+
aria-hidden
|
|
199
|
+
className="block h-16 w-16 bg-gray-700 dark:bg-gray-400"
|
|
200
|
+
style={{
|
|
201
|
+
WebkitMaskImage: `url(${imageSrc})`,
|
|
202
|
+
maskImage: `url(${imageSrc})`,
|
|
203
|
+
WebkitMaskRepeat: "no-repeat",
|
|
204
|
+
maskRepeat: "no-repeat",
|
|
205
|
+
WebkitMaskSize: "contain",
|
|
206
|
+
maskSize: "contain",
|
|
207
|
+
WebkitMaskPosition: "center",
|
|
208
|
+
maskPosition: "center",
|
|
209
|
+
}}
|
|
210
|
+
/>
|
|
211
|
+
) : null}
|
|
212
|
+
</div>
|
|
213
|
+
<div className="flex flex-col justify-center text-left">
|
|
214
|
+
<span className="text-xl font-semibold leading-tight text-gray-700 dark:text-gray-300">
|
|
215
|
+
{name}
|
|
216
|
+
</span>
|
|
217
|
+
{from ? (
|
|
218
|
+
<span className="text-sm text-gray-500 dark:text-gray-400">
|
|
219
|
+
<span className="font-light">from</span>{" "}
|
|
220
|
+
<span className="font-semibold">{from}</span>
|
|
221
|
+
</span>
|
|
222
|
+
) : null}
|
|
223
|
+
</div>
|
|
224
|
+
</a>
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
function LogoMarqueeRow({
|
|
229
|
+
agents,
|
|
230
|
+
isActive,
|
|
231
|
+
duration,
|
|
232
|
+
offset,
|
|
233
|
+
}: {
|
|
234
|
+
agents: AgentEntry[];
|
|
235
|
+
isActive: boolean;
|
|
236
|
+
duration: number;
|
|
237
|
+
offset?: number;
|
|
238
|
+
}) {
|
|
239
|
+
const doubledAgents = useMemo(() => [...agents, ...agents], [agents]);
|
|
240
|
+
|
|
241
|
+
if (doubledAgents.length === 0) {
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
const trackStyle = {
|
|
246
|
+
animationPlayState: isActive ? "running" : "paused",
|
|
247
|
+
animationDelay: offset ? `${offset}s` : undefined,
|
|
248
|
+
"--marquee-duration": `${duration}s`,
|
|
249
|
+
} as React.CSSProperties;
|
|
250
|
+
|
|
251
|
+
return (
|
|
252
|
+
<div className="w-full overflow-hidden">
|
|
253
|
+
<div
|
|
254
|
+
className="logo-marquee-track flex items-center gap-8 py-3"
|
|
255
|
+
style={trackStyle}
|
|
256
|
+
>
|
|
257
|
+
{doubledAgents.map((agent, index) => (
|
|
258
|
+
<LogoItem key={`${agent.name}-${index}`} {...agent} />
|
|
259
|
+
))}
|
|
260
|
+
</div>
|
|
261
|
+
</div>
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
export default function CompatibilitySection() {
|
|
266
|
+
const containerRef = useRef<HTMLDivElement | null>(null);
|
|
267
|
+
const [isInView, setIsInView] = useState(false);
|
|
268
|
+
const [shuffledAgents, setShuffledAgents] = useState<AgentEntry[]>(agents);
|
|
269
|
+
const [showGrid, setShowGrid] = useState(false);
|
|
270
|
+
|
|
271
|
+
useEffect(() => {
|
|
272
|
+
setShuffledAgents(shuffleAgents(agents));
|
|
273
|
+
}, []);
|
|
274
|
+
|
|
275
|
+
useEffect(() => {
|
|
276
|
+
if (showGrid) {
|
|
277
|
+
setIsInView(false);
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
const node = containerRef.current;
|
|
282
|
+
if (!node) {
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
const observer = new IntersectionObserver(
|
|
287
|
+
([entry]) => {
|
|
288
|
+
setIsInView(entry.isIntersecting && entry.intersectionRatio > 0);
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
threshold: 0,
|
|
292
|
+
}
|
|
293
|
+
);
|
|
294
|
+
|
|
295
|
+
observer.observe(node);
|
|
296
|
+
|
|
297
|
+
if (typeof window !== "undefined") {
|
|
298
|
+
const rect = node.getBoundingClientRect();
|
|
299
|
+
const isVisible =
|
|
300
|
+
rect.bottom >= 0 &&
|
|
301
|
+
rect.right >= 0 &&
|
|
302
|
+
rect.left <= window.innerWidth &&
|
|
303
|
+
rect.top <= window.innerHeight;
|
|
304
|
+
setIsInView(isVisible);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
return () => {
|
|
308
|
+
observer.disconnect();
|
|
309
|
+
};
|
|
310
|
+
}, [showGrid]);
|
|
311
|
+
|
|
312
|
+
const [topRow, bottomRow] = useMemo(() => {
|
|
313
|
+
const first: AgentEntry[] = [];
|
|
314
|
+
const second: AgentEntry[] = [];
|
|
315
|
+
|
|
316
|
+
shuffledAgents.forEach((agent, index) => {
|
|
317
|
+
if (index % 2 === 0) {
|
|
318
|
+
first.push(agent);
|
|
319
|
+
} else {
|
|
320
|
+
second.push(agent);
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
|
|
324
|
+
return [first, second];
|
|
325
|
+
}, [shuffledAgents]);
|
|
326
|
+
|
|
327
|
+
return (
|
|
328
|
+
<Section
|
|
329
|
+
id="compatibility"
|
|
330
|
+
title="One AGENTS.md works across many agents"
|
|
331
|
+
className={`py-12 px-0 ${showGrid ? "" : "!px-0"}`}
|
|
332
|
+
center
|
|
333
|
+
maxWidthClass={showGrid ? "max-w-3xl" : "max-w-none"}
|
|
334
|
+
>
|
|
335
|
+
<div className="mx-auto max-w-3xl text-center">
|
|
336
|
+
<p className="text-xl font-light text-gray-500 dark:text-gray-400 px-8">
|
|
337
|
+
Your agent definitions are compatible with a growing ecosystem of AI
|
|
338
|
+
coding agents and tools:
|
|
339
|
+
</p>
|
|
340
|
+
</div>
|
|
341
|
+
{showGrid ? (
|
|
342
|
+
<div
|
|
343
|
+
id="supported-agents"
|
|
344
|
+
className="mt-6 grid w-full grid-cols-2 gap-8 md:grid-cols-3"
|
|
345
|
+
>
|
|
346
|
+
{agents.map((agent) => (
|
|
347
|
+
<LogoItem key={agent.name} {...agent} variant="grid" />
|
|
348
|
+
))}
|
|
349
|
+
</div>
|
|
350
|
+
) : (
|
|
351
|
+
<div
|
|
352
|
+
ref={containerRef}
|
|
353
|
+
className="mt-6 flex w-full flex-col gap-6"
|
|
354
|
+
id="supported-agents"
|
|
355
|
+
>
|
|
356
|
+
<LogoMarqueeRow agents={topRow} isActive={isInView} duration={70} />
|
|
357
|
+
<LogoMarqueeRow
|
|
358
|
+
agents={bottomRow}
|
|
359
|
+
isActive={isInView}
|
|
360
|
+
duration={80}
|
|
361
|
+
offset={-35}
|
|
362
|
+
/>
|
|
363
|
+
</div>
|
|
364
|
+
)}
|
|
365
|
+
<div className="mt-4 text-center">
|
|
366
|
+
<button
|
|
367
|
+
type="button"
|
|
368
|
+
onClick={() => setShowGrid((prev) => !prev)}
|
|
369
|
+
className="mt-4 text-base font-medium underline hover:no-underline cursor-pointer"
|
|
370
|
+
aria-controls="supported-agents"
|
|
371
|
+
aria-expanded={showGrid}
|
|
372
|
+
>
|
|
373
|
+
{showGrid ? "Collapse supported agents" : "View all supported agents"}
|
|
374
|
+
</button>
|
|
375
|
+
</div>
|
|
376
|
+
</Section>
|
|
377
|
+
);
|
|
378
|
+
}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
// GitHub language colors for badge backgrounds
|
|
4
|
+
const LANG_BG_COLORS: Record<string, string> = {
|
|
5
|
+
"TypeScript": "#3178c6",
|
|
6
|
+
"Java": "#b07219",
|
|
7
|
+
"Python": "#3572a5",
|
|
8
|
+
"Rust": "#dea584",
|
|
9
|
+
"C++": "#f34b7d",
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
interface RepoCardProps {
|
|
13
|
+
/** e.g. "openai/codex" */
|
|
14
|
+
name: string;
|
|
15
|
+
/** Short 1-2 line summary */
|
|
16
|
+
description: string;
|
|
17
|
+
/** Primary language */
|
|
18
|
+
language: string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Hard-coded examples used for the marketing page. */
|
|
22
|
+
const REPOS: RepoCardProps[] = [
|
|
23
|
+
{
|
|
24
|
+
name: "openai/codex",
|
|
25
|
+
description: "General-purpose CLI tooling for AI coding agents.",
|
|
26
|
+
language: "Rust",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: "apache/airflow",
|
|
30
|
+
description:
|
|
31
|
+
"Platform to programmatically author, schedule, and monitor workflows.",
|
|
32
|
+
language: "Python",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "temporalio/sdk-java",
|
|
36
|
+
description:
|
|
37
|
+
"Java SDK for Temporal, workflow orchestration defined in code.",
|
|
38
|
+
language: "Java",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: "PlutoLang/Pluto",
|
|
42
|
+
description: "A superset of Lua 5.4 with a focus on general-purpose programming.",
|
|
43
|
+
language: "C++",
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
interface ExampleListSectionProps {
|
|
48
|
+
contributorsByRepo?: Record<string, { avatars: string[]; total: number }>;
|
|
49
|
+
standalone?: boolean; // if false wraps with its own section
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const InnerGrid = ({
|
|
53
|
+
contributorsByRepo = {},
|
|
54
|
+
}: {
|
|
55
|
+
contributorsByRepo: Record<string, { avatars: string[]; total: number }>;
|
|
56
|
+
}) => (
|
|
57
|
+
<>
|
|
58
|
+
<div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4">
|
|
59
|
+
{REPOS.map((repo, key) => (
|
|
60
|
+
<ExampleCard
|
|
61
|
+
key={repo.name}
|
|
62
|
+
repo={repo}
|
|
63
|
+
avatars={contributorsByRepo[repo.name]?.avatars ?? []}
|
|
64
|
+
hideOnSmall={key > 3}
|
|
65
|
+
hideOnMedium={key > 2}
|
|
66
|
+
totalContributors={
|
|
67
|
+
contributorsByRepo[repo.name]?.total ??
|
|
68
|
+
contributorsByRepo[repo.name]?.avatars.length ??
|
|
69
|
+
0
|
|
70
|
+
}
|
|
71
|
+
/>
|
|
72
|
+
))}
|
|
73
|
+
</div>
|
|
74
|
+
<div className="flex justify-center mt-6">
|
|
75
|
+
<a
|
|
76
|
+
href="https://github.com/search?q=path%3AAGENTS.md+NOT+is%3Afork+NOT+is%3Aarchived&type=code"
|
|
77
|
+
className="text-base font-medium underline hover:no-underline"
|
|
78
|
+
>
|
|
79
|
+
View 60k+ examples on GitHub
|
|
80
|
+
</a>
|
|
81
|
+
</div>
|
|
82
|
+
</>
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
const ExampleListSection = ({
|
|
86
|
+
contributorsByRepo = {},
|
|
87
|
+
standalone = false,
|
|
88
|
+
}: ExampleListSectionProps) => {
|
|
89
|
+
if (standalone) {
|
|
90
|
+
return (
|
|
91
|
+
<div className="max-w-6xl mx-auto">
|
|
92
|
+
<InnerGrid contributorsByRepo={contributorsByRepo} />
|
|
93
|
+
</div>
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return (
|
|
98
|
+
<section className="px-6 pb-12 -mt-36">
|
|
99
|
+
<div className="max-w-6xl mx-auto">
|
|
100
|
+
<h2 className="text-3xl font-semibold mb-6">Who uses AGENTS.md?</h2>
|
|
101
|
+
<InnerGrid contributorsByRepo={contributorsByRepo} />
|
|
102
|
+
</div>
|
|
103
|
+
</section>
|
|
104
|
+
);
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
interface ExampleCardPropsExtended {
|
|
108
|
+
repo: RepoCardProps;
|
|
109
|
+
avatars?: string[];
|
|
110
|
+
totalContributors?: number;
|
|
111
|
+
hideOnSmall?: boolean;
|
|
112
|
+
hideOnMedium?: boolean;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function ExampleCard({
|
|
116
|
+
repo,
|
|
117
|
+
avatars = [],
|
|
118
|
+
totalContributors = 0,
|
|
119
|
+
hideOnSmall = false,
|
|
120
|
+
hideOnMedium = false,
|
|
121
|
+
}: ExampleCardPropsExtended) {
|
|
122
|
+
// Show top 3 contributors; ensure highest-ranked appears rightmost.
|
|
123
|
+
const orderedAvatars = avatars.slice(0, 3).reverse();
|
|
124
|
+
// Badge background color based on GitHub language colors
|
|
125
|
+
const badgeBg = LANG_BG_COLORS[repo.language] ?? "#6b7280";
|
|
126
|
+
|
|
127
|
+
return (
|
|
128
|
+
<a
|
|
129
|
+
href={`https://github.com/${repo.name}/blob/-/AGENTS.md`}
|
|
130
|
+
target="_blank"
|
|
131
|
+
rel="noopener noreferrer"
|
|
132
|
+
className={`lg:aspect-video bg-white dark:bg-black border border-gray-200 dark:border-gray-700 rounded-lg shadow-sm flex flex-col justify-between p-4 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors ${
|
|
133
|
+
hideOnSmall
|
|
134
|
+
? "hidden lg:flex"
|
|
135
|
+
: hideOnMedium
|
|
136
|
+
? "flex md:hidden lg:flex"
|
|
137
|
+
: ""
|
|
138
|
+
}`}
|
|
139
|
+
>
|
|
140
|
+
<div>
|
|
141
|
+
<h3
|
|
142
|
+
className="font-semibold text-lg leading-snug truncate"
|
|
143
|
+
title={repo.name}
|
|
144
|
+
>
|
|
145
|
+
{repo.name}
|
|
146
|
+
</h3>
|
|
147
|
+
<p className="mt-1 text-sm text-gray-600 dark:text-gray-400">
|
|
148
|
+
{repo.description}
|
|
149
|
+
</p>
|
|
150
|
+
</div>
|
|
151
|
+
|
|
152
|
+
<div className="flex items-end justify-between mt-4">
|
|
153
|
+
<span
|
|
154
|
+
className="text-xs font-semibold px-2 py-0.5 rounded"
|
|
155
|
+
style={{ backgroundColor: badgeBg, color: "#fff" }}
|
|
156
|
+
>
|
|
157
|
+
{repo.language}
|
|
158
|
+
</span>
|
|
159
|
+
<div className="flex items-center justify-center">
|
|
160
|
+
<div className="flex items-center justify-center -space-x-2">
|
|
161
|
+
{orderedAvatars.length > 0
|
|
162
|
+
? orderedAvatars.map((url, i) => (
|
|
163
|
+
// eslint-disable-next-line @next/next/no-img-element
|
|
164
|
+
<img
|
|
165
|
+
key={i}
|
|
166
|
+
src={url}
|
|
167
|
+
alt="Contributor avatar"
|
|
168
|
+
className="w-6 h-6 rounded-full ring-2 ring-white dark:ring-gray-900 object-cover block shrink-0"
|
|
169
|
+
/>
|
|
170
|
+
))
|
|
171
|
+
: Array.from({ length: 3 }).map((_, i) => (
|
|
172
|
+
<span
|
|
173
|
+
key={i}
|
|
174
|
+
aria-hidden
|
|
175
|
+
className="w-6 h-6 rounded-full bg-gray-300 dark:bg-gray-700 ring-2 ring-white dark:ring-gray-900 block shrink-0"
|
|
176
|
+
/>
|
|
177
|
+
))}
|
|
178
|
+
</div>
|
|
179
|
+
<span className="ml-2 text-xs font-semibold px-2 py-0.5 rounded bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300 translate-y-[1px]">
|
|
180
|
+
+ {totalContributors}
|
|
181
|
+
</span>
|
|
182
|
+
</div>
|
|
183
|
+
</div>
|
|
184
|
+
</a>
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export default ExampleListSection;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Section from "@/components/Section";
|
|
3
|
+
import CodeExample from "@/components/CodeExample";
|
|
4
|
+
import ExampleListSection from "@/components/ExampleListSection";
|
|
5
|
+
|
|
6
|
+
interface ExamplesSectionProps {
|
|
7
|
+
contributorsByRepo: Record<string, { avatars: string[]; total: number }>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export default function ExamplesSection({ contributorsByRepo }: ExamplesSectionProps) {
|
|
11
|
+
return (
|
|
12
|
+
<Section id="examples" title="Examples" className="py-12" center>
|
|
13
|
+
{/* Wide code example */}
|
|
14
|
+
<div className="mb-4">
|
|
15
|
+
<CodeExample compact />
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
{/* Repo cards */}
|
|
19
|
+
<ExampleListSection contributorsByRepo={contributorsByRepo} standalone />
|
|
20
|
+
</Section>
|
|
21
|
+
);
|
|
22
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Section from "@/components/Section";
|
|
3
|
+
import CodeExample from "@/components/CodeExample";
|
|
4
|
+
|
|
5
|
+
interface FAQItem {
|
|
6
|
+
question: string;
|
|
7
|
+
answer: React.ReactNode;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export default function FAQ() {
|
|
11
|
+
const faqItems: FAQItem[] = [
|
|
12
|
+
{
|
|
13
|
+
question: "Are there required fields?",
|
|
14
|
+
answer:
|
|
15
|
+
"No. AGENTS.md is just standard Markdown. Use any headings you like; the agent simply parses the text you provide.",
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
question: "What if instructions conflict?",
|
|
19
|
+
answer:
|
|
20
|
+
"The closest AGENTS.md to the edited file wins; explicit user chat prompts override everything.",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: "Will the agent run testing commands found in AGENTS.md automatically?",
|
|
24
|
+
answer:
|
|
25
|
+
"Yes—if you list them. The agent will attempt to execute relevant programmatic checks and fix failures before finishing the task.",
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: "Can I update it later?",
|
|
29
|
+
answer: "Absolutely. Treat AGENTS.md as living documentation.",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
question: "How do I migrate existing docs to AGENTS.md?",
|
|
33
|
+
answer: (
|
|
34
|
+
<>
|
|
35
|
+
<p className="mb-2">
|
|
36
|
+
Rename existing files to AGENTS.md and create symbolic links for backward compatibility:
|
|
37
|
+
</p>
|
|
38
|
+
<div className="w-full flex justify-center">
|
|
39
|
+
<CodeExample
|
|
40
|
+
code="mv AGENT.md AGENTS.md && ln -s AGENTS.md AGENT.md"
|
|
41
|
+
compact
|
|
42
|
+
heightClass="min-h-[48px]"
|
|
43
|
+
centerVertically
|
|
44
|
+
/>
|
|
45
|
+
</div>
|
|
46
|
+
</>
|
|
47
|
+
),
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
question: "How do I configure Aider?",
|
|
51
|
+
answer: (
|
|
52
|
+
<>
|
|
53
|
+
<p className="mb-2">
|
|
54
|
+
Configure Aider to use AGENTS.md in <code>.aider.conf.yml</code>:
|
|
55
|
+
</p>
|
|
56
|
+
<div className="w-full flex justify-center">
|
|
57
|
+
<CodeExample
|
|
58
|
+
code="read: AGENTS.md"
|
|
59
|
+
compact
|
|
60
|
+
heightClass="min-h-[48px]"
|
|
61
|
+
centerVertically
|
|
62
|
+
/>
|
|
63
|
+
</div>
|
|
64
|
+
</>
|
|
65
|
+
),
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
question: "How do I configure Gemini CLI?",
|
|
69
|
+
answer: (
|
|
70
|
+
<>
|
|
71
|
+
<p className="mb-2">
|
|
72
|
+
Configure Gemini CLI to use AGENTS.md in <code>.gemini/settings.json</code>:
|
|
73
|
+
</p>
|
|
74
|
+
<div className="w-full flex justify-center">
|
|
75
|
+
<CodeExample
|
|
76
|
+
code='{
|
|
77
|
+
"context": {
|
|
78
|
+
"fileName": "AGENTS.md"
|
|
79
|
+
},
|
|
80
|
+
}'
|
|
81
|
+
compact
|
|
82
|
+
heightClass="min-h-[48px]"
|
|
83
|
+
centerVertically
|
|
84
|
+
/>
|
|
85
|
+
</div>
|
|
86
|
+
</>
|
|
87
|
+
),
|
|
88
|
+
},
|
|
89
|
+
];
|
|
90
|
+
|
|
91
|
+
return (
|
|
92
|
+
<Section
|
|
93
|
+
id="faq"
|
|
94
|
+
title="FAQ"
|
|
95
|
+
className="py-20"
|
|
96
|
+
center
|
|
97
|
+
maxWidthClass="max-w-3xl"
|
|
98
|
+
>
|
|
99
|
+
<div className="space-y-8 max-w-4xl mx-auto">
|
|
100
|
+
{faqItems.map((item, index) => (
|
|
101
|
+
<div key={index}>
|
|
102
|
+
<h3 className="text-xl font-semibold text-gray-900 dark:text-white mb-2">
|
|
103
|
+
{item.question}
|
|
104
|
+
</h3>
|
|
105
|
+
<div className="text-gray-600 dark:text-gray-400 leading-relaxed">
|
|
106
|
+
{item.answer}
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
))}
|
|
110
|
+
</div>
|
|
111
|
+
</Section>
|
|
112
|
+
);
|
|
113
|
+
}
|