diff --git a/packages/website/AGENTS.md b/packages/website/AGENTS.md
index c05eece..1a2290d 100644
--- a/packages/website/AGENTS.md
+++ b/packages/website/AGENTS.md
@@ -5,9 +5,9 @@
- **React** with TypeScript
- **Vite** for dev server and build
- **Tailwind CSS** for styling
-- **shadcn/ui** (new-york style) for UI components
+- **shadcn/ui** (new-york style) for UI components — **do NOT hand-edit `src/components/ui/` files**
- **Magic UI** for animations and effects
-- **wouter** with hash routing for static hosting
+- **wouter** with browser routing (`base: "/page-agent"`)
- **lucide-react** for icons
## Component Guidelines
@@ -53,58 +53,74 @@ Located in `src/components/ui/`:
### Styling Rules
1. **Prefer Tailwind classes** over custom CSS
-2. Use CSS modules only for complex component-specific styles
-3. Support dark mode via `dark:` classes
-4. Use CSS variables from `src/index.css` for theme colors
+2. Support dark mode via `dark:` classes
+3. Use CSS variables from `src/index.css` for theme colors
## Project Structure
```
src/
├── pages/
-│ ├── Home.tsx # Homepage
+│ ├── home/
+│ │ ├── HomeContent.tsx # Homepage sections
+│ │ └── ...Section.tsx
│ └── docs/
-│ ├── Layout.tsx # Documentation sidebar
+│ ├── index.tsx # Docs route switch
+│ ├── Layout.tsx # Sidebar navigation
│ └── [section]/[topic]/page.tsx
├── components/
-│ ├── ui/ # shadcn/ui + Magic UI components
+│ ├── ui/ # shadcn/ui + Magic UI (DO NOT hand-edit)
+│ ├── Heading.tsx # Anchor heading for doc pages
│ ├── Header.tsx # Site header
│ └── Footer.tsx # Site footer
├── i18n/ # Internationalization
-├── router.tsx # Central routing
+├── router.tsx # Root layout + routing
└── main.tsx # App entry
```
+## Routing
+
+Uses wouter browser routing with base path for GitHub Pages deployment at `https://alibaba.github.io/page-agent/`.
+
+```tsx
+// main.tsx
+
+
+
+```
+
+**Key rules:**
+
+- Header and Footer live in `router.tsx` **outside** ``, so they always see the root router context (`base="/page-agent"`)
+- Docs pages are nested via ``, which creates a child context (`base="/page-agent/docs"`)
+- Inside the docs nest, Link hrefs are relative to `/docs` (e.g. `href="/features/models"`, NOT `href="/docs/features/models"`)
+- **Never use `~` prefix** in Link hrefs — it bypasses the base path entirely
+- Doc page headings use `` for anchor links
+
+### SPA on GitHub Pages
+
+Instead of `404.html` redirects, the build copies `index.html` into every route directory. Add new routes to the `SPA_ROUTES` array in `vite.config.js`.
+
## Adding New Pages
### Documentation Page
1. Create `src/pages/docs///page.tsx`
-2. Add route to `src/router.tsx` with ` + ` wrapper
-3. Add navigation item to `pages/docs/Layout.tsx`
-
-## Routing
-
-Uses hash-based routing for static hosting:
-
-```tsx
-import { Router } from 'wouter'
-import { useHashLocation } from 'wouter/use-hash-location'
-
-;{/* routes */}
-```
+2. Add route in `src/pages/docs/index.tsx`
+3. Add navigation item in `src/pages/docs/Layout.tsx`
+4. Add path to `SPA_ROUTES` in `vite.config.js`
## Configuration Files
| File | Purpose |
| ----------------- | ----------------------- |
| `components.json` | shadcn/ui configuration |
-| `vite.config.js` | Vite build settings |
+| `vite.config.js` | Vite build + SPA routes |
| `tsconfig.json` | TypeScript config |
## Commands
```bash
-npm start # Dev server (from root)
+npm start # Dev server (from root)
npm run build:website # Build website (from root)
```