Skip to content

Système Playbooks

Les Playbooks sont le cerveau contextuel de Hatcher - un système de fichiers de contexte dynamiques et évolutifs qui enseignent à l'IA comment comprendre, naviguer et modifier votre projet selon vos standards exacts.

Qu'est-ce qu'un Playbook ?

Un Playbook est un document vivant qui capture :

  • Règles Architecturales : Modèles et conventions de votre projet
  • Standards de Code : Style, nommage et meilleures pratiques
  • Contexte Métier : Logique domaine et exigences spécifiques
  • Apprentissage Adaptatif : Amélioration continue basée sur vos interactions

Types de Playbooks

1. Playbooks Système (Automatiques)

Générés automatiquement par l'analyse de votre base de code :

typescript
// Exemple : Détection automatique de modèles
{
  "pattern_type": "component_structure",
  "detected_at": "2024-01-15T10:30:00Z",
  "pattern": {
    "file_naming": "PascalCase",
    "props_interface": "Props",
    "styling_approach": "tailwind_classes",
    "state_management": "pinia"
  },
  "confidence": 0.95,
  "examples": [
    "src/components/UserProfile.vue",
    "src/components/ProjectCard.vue"
  ]
}

2. Playbooks Projet (Configurés)

Définis explicitement pour votre projet :

yaml
# .hatcher/playbooks/component-standards.yml
name: 'Standards de Composants'
version: '1.0'
scope: 'components'

rules:
  naming:
    files: 'PascalCase'
    props: 'camelCase'
    events: 'kebab-case'

  structure:
    template_order: ['template', 'script', 'style']
    composition_api_required: true

  styling:
    framework: 'tailwindcss'
    custom_classes_prefix: 'app-'
    responsive_breakpoints: ['sm', 'md', 'lg', 'xl']

3. Playbooks Équipe (Partagés)

Synchronisés entre les membres de l'équipe :

json
{
  "team_standards": {
    "commit_messages": {
      "format": "conventional_commits",
      "scopes": ["ui", "api", "docs", "test"]
    },
    "code_review": {
      "required_approvals": 2,
      "automated_checks": ["lint", "test", "build"]
    },
    "documentation": {
      "jsdoc_required": true,
      "readme_sections": ["installation", "usage", "api"]
    }
  }
}

Comment les Playbooks Fonctionnent

1. Découverte Automatique

Hatcher analyse votre projet pour découvrir :

typescript
// Analyse des modèles de fichiers
const patterns = await analyzeProject({
  paths: ['src/**/*.vue', 'src/**/*.ts'],
  exclude: ['node_modules', 'dist'],
})

// Détection des conventions
const conventions = {
  componentNaming: detectNamingPattern(patterns.components),
  stateManagement: detectStatePattern(patterns.stores),
  routingStructure: detectRoutingPattern(patterns.routes),
}

2. Génération de Contexte

Lors d'une interaction IA, les Playbooks génèrent un contexte riche :

typescript
interface AIContext {
  currentFile: FileContext
  relevantRules: PlaybookRule[]
  similarExamples: CodeExample[]
  architecturalConstraints: Constraint[]
  teamStandards: TeamStandard[]
}

3. Application Intelligente

L'IA utilise ce contexte pour :

  • Générer du code cohérent avec vos modèles existants
  • Respecter vos conventions de nommage et structure
  • Suivre vos standards de qualité et sécurité
  • Maintenir la cohérence architecturale

Configuration des Playbooks

Structure du Répertoire

.hatcher/
├── playbooks/
│   ├── component-standards.yml
│   ├── api-patterns.yml
│   ├── testing-rules.yml
│   └── deployment-config.yml
├── patterns/
│   ├── detected/           # Modèles auto-détectés
│   └── custom/            # Modèles personnalisés
└── config/
    └── playbook-config.yml # Configuration globale

Exemple de Configuration

yaml
# .hatcher/config/playbook-config.yml
playbook_discovery:
  auto_scan: true
  scan_interval: '24h'
  include_patterns:
    - 'src/**/*.{vue,ts,js}'
    - 'docs/**/*.md'
  exclude_patterns:
    - 'node_modules/**'
    - 'dist/**'

ai_integration:
  context_depth: 'full'
  example_count: 3
  confidence_threshold: 0.8

team_sync:
  enabled: true
  repository: 'github'
  auto_commit: false

Règles Personnalisées

typescript
// .hatcher/playbooks/custom-rules.ts
export const customRules: PlaybookRule[] = [
  {
    name: "API Response Structure",
    scope: "api",
    pattern: {
      success: { data: "T", message?: "string" },
      error: { error: "string", code: "number" }
    },
    examples: [
      "return { data: users, message: 'Success' }",
      "return { error: 'Not found', code: 404 }"
    ]
  },

  {
    name: "Vue Component Props",
    scope: "components",
    pattern: {
      interface_suffix: "Props",
      required_props_first: true,
      default_values: "defineProps"
    },
    template: `
interface {{ComponentName}}Props {
  // Props requis en premier
  {{#requiredProps}}
  {{name}}: {{type}}
  {{/requiredProps}}

  // Props optionnels
  {{#optionalProps}}
  {{name}}?: {{type}}
  {{/optionalProps}}
}
    `
  }
]

Playbooks Avancés

Règles Conditionnelles

yaml
conditional_rules:
  - condition: "file.path.includes('components/forms')"
    rules:
      - validation_required: true
      - accessibility_attrs: ['aria-label', 'aria-describedby']
      - error_handling: 'user_friendly'

  - condition: "project.framework === 'nuxt'"
    rules:
      - ssr_compatible: true
      - meta_tags_required: true
      - performance_optimized: true

Apprentissage Adaptatif

typescript
// Le système apprend de vos corrections
class AdaptiveLearning {
  async recordFeedback(interaction: AIInteraction, feedback: UserFeedback) {
    if (feedback.type === 'correction') {
      await this.updatePlaybook({
        pattern: interaction.generatedPattern,
        correction: feedback.correctedVersion,
        confidence: this.calculateConfidence(feedback),
      })
    }
  }

  async suggestPlaybookUpdates(): Promise<PlaybookSuggestion[]> {
    const patterns = await this.analyzeRecentCorrections()
    return patterns.map((pattern) => ({
      type: 'pattern_update',
      suggestion: pattern.correctedPattern,
      confidence: pattern.confidence,
      examples: pattern.examples,
    }))
  }
}

Validation et Tests

yaml
# .hatcher/playbooks/testing-standards.yml
testing_rules:
  unit_tests:
    framework: 'vitest'
    coverage_threshold: 80
    naming_pattern: '*.spec.ts'

  integration_tests:
    framework: 'cypress'
    page_object_pattern: true

  component_tests:
    framework: '@vue/test-utils'
    render_testing: true
    accessibility_tests: true

validation:
  pre_commit:
    - lint_check
    - type_check
    - test_run

  pre_push:
    - full_test_suite
    - build_check
    - playbook_compliance

Meilleures Pratiques

1. Structure Progressive

  • Commencez simple avec des règles de base
  • Ajoutez de la complexité progressivement
  • Documentez les décisions importantes

2. Collaboration d'Équipe

  • Versionner les Playbooks avec Git
  • Réviser les changements en équipe
  • Maintenir la cohérence entre projets

3. Maintenance Continue

  • Réviser périodiquement les règles
  • Nettoyer les modèles obsolètes
  • Mettre à jour avec l'évolution du projet

4. Optimisation des Performances

  • Garder les règles ciblées et spécifiques
  • Éviter la sur-spécification
  • Tester l'impact sur la génération de code

Les Playbooks transforment l'IA d'un assistant générique en un membre d'équipe qui comprend vraiment votre projet, vos standards et votre vision architecturale.

Released under the MIT License. Built with ❤️ by Chriss Mejía and the Hatcher community.