This file contains guidelines for agentic coding assistants working in this Docusaurus documentation repository.
# Start development server (default: http://localhost:3000)
npm start
# Build for production
npm build
# Serve built site locally
npm serve
# Clear build cache
npm clear
# Write translations
npm write-translations
# Write heading IDs
npm write-heading-ids
# Swizzle default Docusaurus components for customization
npm run swizzleNote: This project has no configured linting, testing, or type checking scripts. Code quality is maintained through manual review.
docs/- Documentation content (MDX files organized by category)src/- Custom React components and pagessrc/components/- Reusable UI components (Button, Card, Icons)src/css/custom.css- Global styles and TailwindCSS importsrc/pages/- Custom pages (homepage, markdown pages)static/- Static assets (images, PDFs, JS files)docusaurus.config.js- Site configurationsidebars.js- Navigation sidebar configuration
- Use ES6 import syntax
- Import React in all component files:
import React from 'react'; - Import Docusaurus components from
@docusaurus/*(e.g.,@docusaurus/Link,@docusaurus/useDocusaurusContext) - Import custom components from
@site/src/components/*pattern in MDX - Import static assets using
require('@site/static/img/...').defaultpattern - Group imports in order: React → Docusaurus → Third-party → Local
- Use functional components with React Hooks
- Export named components:
export { Button, CardContent }; - Export default for main components:
export default function HomepageFeatures() - Use
clsxfor conditional className composition - Use TailwindCSS for styling (imported via
@import "tailwindcss"in custom.css)
- Use
// @ts-checkcomment at file top for TypeScript checking in JS files - Use JSDoc type annotations for better IDE support
- Example:
/** @type {import('@docusaurus/types').Config} */
Every MDX file must have frontmatter:
---
sidebar_position: 1.0
sidebar_label: "Display Name"
---- Use
.module.csssuffix for component-scoped styles - Import and apply via:
import styles from './styles.module.css'; - Use camelCase class names in JS files matching kebab-case in CSS
- Files: PascalCase for components (e.g.,
Button.js,HomepageFeatures/) - Components: PascalCase (e.g.,
const Button,function Feature) - Variables/Functions: camelCase (e.g.,
const featureList,export default function Home()) - CSS Classes: kebab-case in CSS, camelCase in JS (CSS Modules)
- Constants: PascalCase or UPPER_CASE (e.g.,
const FeatureList)
- Use 2-space indentation
- No trailing whitespace
- Use single quotes for strings (except in JSX attributes)
- Use trailing commas in multi-line arrays/objects
- Max line length: ~100 characters (soft limit)
- Docusaurus handles most routing errors via
onBrokenLinks: 'throw'andonBrokenMarkdownLinks: 'warn' - For image imports, use
.defaultwhen required:require('./img.png').default - Validate frontmatter structure matches sidebar expectations
- Write documentation in Simplified Chinese (zh-Hans)
- Use numbered steps with emoji:
#### 1️⃣ Step title - Use Docusaurus admonitions:
:::tip,:::warning,:::info,:::note,:::danger - Use inline links with emojis:
**Link text🔗**or**Link text**in Markdown - Image format:
<div style={{ display: "flex", justifyContent: "left", alignItems: "center", marginBottom: "40px"}}> <img src={require('./img/filename.png').default} alt="description" width="700px" style={{boxShadow: "0px 0px 5PX 2PX rgba(0, 0, 0, 0.1), inset 0 0 50px rgba(0, 0, 0, 0.3)"}}/> </div>
- Use descriptive alt text for accessibility
- Shadow style:
boxShadow: "0px 0px 5PX 2PX rgba(0, 0, 0, 0.1), inset 0 0 50px rgba(0, 0, 0, 0.3)"
- Project paths: No Chinese characters allowed in file/project paths (build errors)
- Image paths: Relative to MDX file using
require('./img/...').default - Documentation links: Use
/docs/stm32/...pattern for internal links - External links: Include
target="_blank"for external URLs
docusaurus.config.js: Main site config with theme, navbar, pluginssidebars.js: Navigation structure - usesautogeneratedtype fromstm32directorypostcss.config.mjs: TailwindCSS PostCSS plugin configurationbabel.config.js: Uses Docusaurus default preset
- Node.js version: >=18.0 (see package.json engines field)
- Package manager: pnpm (lockfile: pnpm-lock.yaml, package-lock.json present)
- i18n: Default locale is
zh-Hans(Simplified Chinese only) - Custom PostCSS plugin for TailwindCSS integration
- Static files in
static/served at root URL
Button component: Takes { icon, href, children } props, uses Tailwind classes
Card components: Card and CardContent for content grouping
Icons: Emojis or image imports, exported as named functions
- Add new components to
src/components/ - Import and use in MDX via
@site/src/components/ComponentName - Update
sidebars.jsif adding new docs (uses auto-generation by default) - Test locally with
npm startbefore committing - Verify Chinese text displays correctly
- Check internal and external links work
- No automated test suite configured
- Manual testing required: run
npm startand verify in browser - Check responsiveness on different screen sizes
- Verify all images load correctly
- Test all navigation links