Rédiger AGENTS.md
Le fichier AGENTS.md est la fondation d’AIDF. C’est le document unique qui transforme un assistant IA générique en un membre d’équipe compétent.
Philosophie
Section intitulée « Philosophie »Rédigez AGENTS.md comme si vous intégriez un développeur senior qui travaillera de manière autonome. Il doit savoir :
- Ce que fait le projet
- Comment le code est organisé
- Quels patterns suivre
- Quelles erreurs éviter
- Comment vérifier son travail
Structure
Section intitulée « Structure »1. Vue d’Ensemble du Projet
Section intitulée « 1. Vue d’Ensemble du Projet »Commencez par la vue d’ensemble :
## Project Overview
[Project Name] is a [type of project] that [primary purpose].
**Key characteristics:**- [Characteristic 1]- [Characteristic 2]
**Target users:**- [User type 1]- [User type 2]Exemple :
## Project Overview
Commerce Kit is a React component library for e-commerce applications.
**Key characteristics:**- Atomic Design architecture (atoms → molecules → organisms)- Framework-agnostic (works with Next.js, Remix, Vite)- Fully typed with TypeScript- Accessible by default (WCAG 2.1 AA)
**Target users:**- Frontend developers building e-commerce sites- Design systems teams2. Architecture
Section intitulée « 2. Architecture »Décrivez comment le code est organisé :
## Architecture
### Directory Structure
\`\`\`src/├── atoms/ # Basic building blocks├── molecules/ # Composed components├── organisms/ # Complex features├── hooks/ # Shared React hooks├── utils/ # Pure utility functions└── types/ # Shared TypeScript types\`\`\`
### Key Patterns
**[Pattern Name]**[Description of pattern and when to use it]
**[Pattern Name]**[Description]3. Stack Technologique
Section intitulée « 3. Stack Technologique »Soyez précis sur les versions et les configurations :
## Technology Stack
| Category | Technology | Version | Notes ||----------|------------|---------|-------|| Language | TypeScript | 5.x | Strict mode enabled || Framework | React | 18.x | Hooks only, no classes || Build | tsup | 8.x | ESM + CJS output || Testing | Vitest | 3.x | With Testing Library || Styling | CSS | - | Custom properties, BEM-like |4. Conventions
Section intitulée « 4. Conventions »C’est essentiel. Soyez explicite sur le nommage et la structure :
## Conventions
### File Naming
| Type | Convention | Example ||------|------------|---------|| Components | PascalCase | `Button.tsx` || Styles | kebab-case | `button.css` || Tests | PascalCase + .test | `Button.test.tsx` || Types | PascalCase + .types | `Button.types.ts` || Constants | PascalCase + .constants | `Button.constants.ts` |
### Component Structure
Every component folder contains:
\`\`\`ComponentName/├── ComponentName.tsx # Component implementation├── ComponentName.types.ts # TypeScript interfaces├── ComponentName.constants.ts # Constants and mappings├── component-name.css # Styles├── ComponentName.test.tsx # Unit tests└── index.ts # Public exports\`\`\`
### CSS Conventions
- Prefix all classes with `pt-` (project prefix)- Use BEM-like naming: `.pt-Component__element--modifier`- Use CSS custom properties for all values- No hardcoded colors, spacing, or typography5. Standards de Qualité
Section intitulée « 5. Standards de Qualité »Définissez ce que signifie “bon” :
## Quality Standards
### Testing
- Minimum 80% code coverage- Every component must test: - Default render - All props/variants - User interactions - Accessibility (no a11y violations) - Ref forwarding
### Type Safety
- No `any` types (except in tests)- All props must be typed- Export types alongside components- Use `strict: true` in tsconfig
### Code Style
- ESLint must pass with zero warnings- Prettier formatting required- No console.log in production code6. Limites
Section intitulée « 6. Limites »Indiquez explicitement ce qui ne doit PAS être fait :
## Boundaries
### Never Modify Without Approval
- `package.json` (dependency changes)- `tsconfig.json` (compiler settings)- `.github/` (CI/CD workflows)- `src/core/` (critical shared code)
### Never Do
- Add external UI libraries (Material-UI, Chakra, etc.)- Use CSS-in-JS (styled-components, emotion)- Create class components- Use `any` type in production code- Commit console.log statements- Skip writing tests
### Requires Discussion
- New design tokens- New shared utilities- Changes to component API- New dependencies7. Référence des Commandes
Section intitulée « 7. Référence des Commandes »Listez les commandes que l’IA doit utiliser :
## Commands
### Development
\`\`\`bashpnpm install # Install dependenciespnpm dev # Start dev serverpnpm storybook # Start Storybook\`\`\`
### Quality
\`\`\`bashpnpm lint # Check code stylepnpm typecheck # Check typespnpm test # Run testspnpm quality:fast # All checks (lint + typecheck + test)\`\`\`
### Build
\`\`\`bashpnpm build # Build for productionpnpm storybook:build # Build Storybook\`\`\`Sections Avancées
Section intitulée « Sections Avancées »Patterns d’API de Composants
Section intitulée « Patterns d’API de Composants »Si vous avez des patterns spécifiques pour les API de composants :
## Component API Patterns
### Props Design
1. **Extend HTML attributes** \`\`\`typescript interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> { variant?: 'primary' | 'secondary'; } \`\`\`
2. **Use discriminated unions for variants** \`\`\`typescript type ButtonProps = | { as?: 'button' } & ButtonHTMLAttributes<HTMLButtonElement> | { as: 'a' } & AnchorHTMLAttributes<HTMLAnchorElement>; \`\`\`
3. **Always forward refs** \`\`\`typescript export const Button = forwardRef<HTMLButtonElement, ButtonProps>(...); \`\`\`Gestion des Erreurs
Section intitulée « Gestion des Erreurs »## Error Handling
- Use Error Boundaries for component errors- Log errors to [logging service]- Never swallow errors silently- Provide user-friendly error messagesConsidérations de Performance
Section intitulée « Considérations de Performance »## Performance
- Memoize expensive computations with useMemo- Memoize callbacks with useCallback only when passed to memoized children- Avoid inline object/array creation in render- Use React.lazy for code splitting at route levelConseils
Section intitulée « Conseils »Soyez Spécifique, Pas Générique
Section intitulée « Soyez Spécifique, Pas Générique »Mauvais :
Follow best practices for React development.Bon :
Use functional components with hooks. Never use class components.Memoize with useMemo only for expensive computations (>10ms).Incluez des Exemples
Section intitulée « Incluez des Exemples »Mauvais :
Name files correctly.Bon :
Name files correctly:- Component: `UserProfile.tsx`- Styles: `user-profile.css`- Test: `UserProfile.test.tsx`Dites l’Évident
Section intitulée « Dites l’Évident »Si quelque chose est important, dites-le explicitement même si cela semble évident :
### Import Order
1. React imports2. External libraries3. Internal absolute imports4. Relative imports5. Style imports
Always leave a blank line between groups.Maintenance
Section intitulée « Maintenance »AGENTS.md devrait évoluer avec votre projet :
- Mettez à jour lorsque les patterns changent
- Ajoutez les leçons tirées des revues de code
- Documentez les décisions et leur justification
- Supprimez les informations obsolètes
Considérez-le comme une documentation vivante qui améliore la collaboration avec l’IA au fil du temps.