ワンクリックで
generate-story-qa
Génère une story QA à partir de guidelines et du contrat d’interface d’un composant.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Génère une story QA à partir de guidelines et du contrat d’interface d’un composant.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Produit une analyse des bugs de Lucca Front sur une période donnée (trimestre, mois…) en croisant deux populations : les issues de type `Bug` (demande) et les PR labellisées FIX (livraison) — volumes ouverts/traités/restants, criticité, sujets et comparatif trimestriel.
Règles d’écriture du SCSS Lucca Front : nommage type BEM à plat, modifiers/états, layers, tokens, propriétés logiques, structure de fichiers et enregistrement highlight-prisme. À utiliser pour écrire ou modifier du SCSS dans packages/scss, packages/ng ou les stories.
Génère ou complète des tests Storybook (`play`) pour les stories Lucca Front.
Design system Lucca Front / Prisme (Angular). À charger pour tout fichier d'un projet qui dépend de @lucca-front/ng ou @lucca-front/scss, ou contenant des sélecteurs lu-*, pr-* ou des directives commençant par 'lu' (ex: luButton, luTooltip, luForm).
Design system Lucca Front / Prisme (Angular). À charger pour tout fichier d'un projet qui dépend de @lucca-front/ng ou @lucca-front/scss, ou contenant des sélecteurs lu-*, pr-* ou des directives commençant par 'lu' (ex: luButton, luTooltip, luForm).
Design system Lucca Front / Prisme (Angular) — toutes versions. À charger pour tout fichier d'un projet qui dépend de @lucca-front/ng ou @lucca-front/scss, ou contenant des sélecteurs lu-*, pr-* ou des directives commençant par 'lu' (ex: luButton, luTooltip, luForm).
| name | generate-story-qa |
| description | Génère une story QA à partir de guidelines et du contrat d’interface d’un composant. |
Chaque composant possède une story QA qui liste les cas d’usage permettant de tester ses différentes options. Ces stories sont situées dans stories/qa/<composant>/ et suivent un format strict pour être facilement maintenues et utilisées par les équipes de développement et de QA.
Avant de générer la story, explorer le code source du composant dans packages/ng/<composant>/ pour identifier :
@Input()) : chaque input avec plusieurs valeurs possibles doit avoir une ligne dans la table@Output()) : à mentionner si nécessaire dans un cas de test interactifmod-*, is-*, palette-*) définies dans le SCSSdisabled, loading, error, success…)Chaque combinaison significative d'options donne lieu à une ligne dans la table QA.
Si des guidelines design sont fournies (texte, Figma, documentation), les utiliser pour :
Si aucune guideline n'est fournie, demander à l'utilisateur s'il souhaite en fournir une (lien Figma, documentation, texte libre) avant de générer la story, en précisant que cela permettra de couvrir les règles d'usage officielles et les cas limites. Si l'utilisateur confirme qu'il n'en a pas, se baser uniquement sur le contrat d'interface.
Ordre de priorité recommandé pour les lignes de la table :
palette-*mod-S, mod-M, mod-XS…loading, success, errorChaque dossier contient exactement 2 fichiers :
stories/qa/<composant>/
├── <composant>.stories.ts
└── <composant>.stories.html
<composant>.stories.tsimport { ChangeDetectionStrategy, Component } from '@angular/core';
import { MonComposantComponent } from '@lucca-front/ng/mon-composant';
import { Meta, StoryObj } from '@storybook/angular-vite';
@Component({
selector: 'mon-composant-stories',
templateUrl: './mon-composant.stories.html',
imports: [MonComposantComponent],
changeDetection: ChangeDetectionStrategy.OnPush,
})
class MonComposantStory {
// Propriétés réactives si nécessaire (ex: données pour les selects)
}
export default {
title: 'QA/MonComposant',
component: MonComposantStory,
} as Meta;
const template = () => ({});
export const Basic: StoryObj<MonComposantStory> = {
args: {},
render: template,
};
Règles :
selector suit le pattern <kebab-case>-storieschangeDetection: ChangeDetectionStrategy.OnPush est toujours présenttitle suit le pattern 'QA/<NomPascalCase>'Basic dans la grande majorité des cas<composant>.stories.html<table class="demo-QAtable">
<tbody>
<tr>
<td></td>
<td>
<div class="demo-QAtable-list">HTML</div>
</td>
<td>
<div class="demo-QAtable-list">Angular</div>
</td>
</tr>
<tr>
<td>Default</td>
<td>
<div class="demo-QAtable-list">
<!-- Implémentation HTML pure avec classes CSS -->
</div>
</td>
<td>
<div class="demo-QAtable-list">
<!-- Implémentation Angular avec composants/directives -->
</div>
</td>
</tr>
<tr>
<td>Variante A</td>
<td>
<div class="demo-QAtable-list"><!-- ... --></div>
</td>
<td>
<div class="demo-QAtable-list"><!-- ... --></div>
</td>
</tr>
<!-- Une ligne par cas de test -->
</tbody>
</table>
<!-- To tell the ui-diff tool that the page has finished rendering -->
<span id="ready"></span>
Règles :
<tr> représente un cas de test (Default, Style, Size, States, Disabled…)demo-QAtable-list est toujours présent pour wrapper les exemples d'une même cellule<span id="ready"></span> est obligatoire en fin de fichier (signal pour l'outil ui-diff)<td> reste vide