skills/hexagone-frontend/SKILL.md
Navigue et interroge la documentation des composants frontend Hexagone (@his/hexa-components). À utiliser quand l'utilisateur pose des questions sur les composants Vue.js Hexagone, les patrons UI, les classes CSS beta-scss, les modules de store Vuex, les directives personnalisées, les règles de validation de formulaires ou le design system frontend Hexagone. Récupère la documentation optimisée LLM depuis le dépôt GitLab.
npx skillsauth add dedalus-erp-pas/foundation-skills hexagone-frontendInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill gives you access to the Hexagone frontend component documentation (@his/hexa-components) published as GitLab Pages. Your role is to fetch and read the relevant documentation files when answering questions about Hexagone frontend components, patterns, and conventions.
The Hexagone frontend is built with Vue.js 2 using a custom component library (@his/hexa-components) with beta-scss utility classes and Vuex with vuex-pathify for state management. The documentation site is published at:
https://erp-pas.gitlab-pages-erp-pas.dedalus.lan/hexagone/frontend/hexagone-documentation
The site is a single-page application (SPA) and cannot be fetched directly. Instead, use the raw markdown files from the GitLab repository, which are specifically optimized for LLM consumption.
When to use this skill:
<btn>, <multiselect>, <data-table>, etc.)flex:6/12, p:1, m:1, etc.)Api(), StandardApi())v-focus, v-uppercase)IMPORTANT: Hexagone uses custom tag names. NEVER use standard HTML tags for these components.
| Standard HTML | Hexagone equivalent | Doc file |
|---------------|---------------------|----------|
| <button> | <btn> | components/button.md |
| <select> | <multiselect> | components/select.md |
| <table> | <data-table> | components/datatable.md |
| <input type="checkbox"> | <checkbox> | components/checkbox.md |
Key rules:
<div class="input-field"><label for="id">Label</label><!-- component --></div>flex, flex:wrap, flex:6/12, p:1, m:1, etc.this.$store.get('module/path') and this.$store.set('module/path', value)@his/hexa-components, Framework: Vue.js 2The raw files are available at:
BASE_RAW_URL = https://gitlab-erp-pas.dedalus.lan/erp-pas/hexagone/frontend/hexagone-documentation/-/raw/master/docs/llm/
| Component | Tag | File path |
|-----------|-----|-----------|
| Input | <input> + wrapper | components/input.md |
| Textarea | <textarea> + wrapper | components/textarea.md |
| Number | <number> | components/number.md |
| Currency | <currency> | components/currency.md |
| Select | <multiselect> | components/select.md |
| Autocomplete | <autocomplete> | components/autocomplete.md |
| Checkbox | <checkbox> | components/checkbox.md |
| Radio | <radio> | components/radio.md |
| ButtonSwitch | <btn-switch> | components/button-switch.md |
| Datepicker | <datepicker> | components/datepicker.md |
| Timepicker | <timepicker> | components/timepicker.md |
| Colorpicker | <colorpicker> | components/colorpicker.md |
| File | <file> | components/file.md |
| Iban | <iban> | components/iban.md |
| Bic | <bic> | components/bic.md |
| Radical | <radical> | components/radical.md |
| Component | Tag | File path |
|-----------|-----|-----------|
| Button | <btn> | components/button.md |
| ButtonGroup | <btn-group> | components/button-group.md |
| FloatingButton | <floating-btn> | components/floating-button.md |
| Action | <action> | components/action.md |
| Link | <link> | components/link.md |
| Bookmark | <bookmark> | components/bookmark.md |
| Tabs | <tabs> | components/tabs.md |
| Steps | <steps> | components/steps.md |
| Component | Tag | File path |
|-----------|-----|-----------|
| DataTable | <data-table> | components/datatable.md |
| SimpleTable | <simple-table> | components/simple-table.md |
| Card | <card> | components/card.md |
| ProgressBar | <progress-bar> | components/progress-bar.md |
| Component | Tag | File path |
|-----------|-----|-----------|
| Alert | <alert> | components/alert.md |
| Modal | <modal> | components/modal.md |
| Notification | $notification() | components/notification.md |
| Question | <question> | components/question.md |
| Tooltips | <tooltips> | components/tooltips.md |
| PostIt | <post-it> | components/post-it.md |
| Spinner | <spinner> | components/spinner.md |
| Component | Tag | File path |
|-----------|-----|-----------|
| Collapsible | <collapsible> | components/collapsible.md |
| Topic | File path | Description |
|-------|-----------|-------------|
| API utility | patterns/api.md | Api(url, options) and StandardApi(USP) for web service calls |
| Store (Vuex) | patterns/store.md | Vuex store with vuex-pathify, shared modules (user, session, etc.) |
| Topic | File path | Description |
|-------|-----------|-------------|
| Directives | reference/directives.md | v-uppercase, v-focus custom directives |
| Events | reference/events.md | Mouse and keyboard event handling |
| Form rules | reference/form-rules.md | Validation rules, required fields, @is-valid pattern |
Use this table to quickly find which file to fetch when the user mentions a component tag:
| Tag pattern | File |
|-------------|------|
| <btn>, button | components/button.md |
| <btn-group> | components/button-group.md |
| <btn-switch> | components/button-switch.md |
| <floating-btn> | components/floating-button.md |
| <multiselect>, select | components/select.md |
| <data-table>, datatable, table | components/datatable.md |
| <simple-table> | components/simple-table.md |
| <datepicker>, date | components/datepicker.md |
| <timepicker>, time, heure | components/timepicker.md |
| <checkbox> | components/checkbox.md |
| <radio> | components/radio.md |
| <autocomplete> | components/autocomplete.md |
| <modal>, modale | components/modal.md |
| <alert>, alerte | components/alert.md |
| <notification>, $notification | components/notification.md |
| <question> | components/question.md |
| <card>, carte | components/card.md |
| <collapsible> | components/collapsible.md |
| <tabs>, onglets | components/tabs.md |
| <steps>, etapes | components/steps.md |
| <spinner>, loading | components/spinner.md |
| <currency>, montant | components/currency.md |
| <iban> | components/iban.md |
| <bic> | components/bic.md |
| <number>, nombre | components/number.md |
| <input>, champ texte | components/input.md |
| <textarea> | components/textarea.md |
| <file>, upload | components/file.md |
| <radical> | components/radical.md |
| <colorpicker>, couleur | components/colorpicker.md |
| <action> | components/action.md |
| <link>, lien | components/link.md |
| <bookmark>, signet | components/bookmark.md |
| <post-it> | components/post-it.md |
| <progress-bar> | components/progress-bar.md |
| <tooltips>, infobulle | components/tooltips.md |
These classes are available without any fetch -- use them directly:
| Class | Description |
|-------|-------------|
| flex | Display flex |
| flex:wrap | Flex wrap |
| flex:col | Flex direction column |
| flex:X/12 | Fractional width (e.g., flex:6/12 = 50%) |
| p:1 | Padding 1rem |
| m:1 | Margin 1rem |
| pt:1, pr:1, pb:1, pl:1 | Directional padding |
| mt:1, mr:1, mb:1, ml:1 | Directional margin |
| text:bold | Font-weight bold |
| text:center | Text-align center |
| bg:grey-light | Light grey background |
| border | Standard border |
| rounded:1/2 | Border-radius |
| w:full | Width 100% |
Use the <icon> component with the icon name:
<icon>checked</icon>
<icon>close</icon>
<icon>search</icon>
<icon>edit</icon>
Icons come from @his/fonts-icons.
Map the user's question to one or more documentation files using the tables above:
<btn>, <multiselect>) --> use the tag-to-file lookuppatterns/store.mdpatterns/api.mdv-focus, v-uppercase) --> fetch reference/directives.mdreference/form-rules.mdreference/events.mdUse WebFetch to retrieve the raw markdown file from GitLab:
WebFetch: url="${BASE_RAW_URL}<file-path>" prompt="Return the full content of this markdown file"
For example:
WebFetch: url="https://gitlab-erp-pas.dedalus.lan/erp-pas/hexagone/frontend/hexagone-documentation/-/raw/master/docs/llm/components/button.md" prompt="Return the full content"WebFetch: url="https://gitlab-erp-pas.dedalus.lan/erp-pas/hexagone/frontend/hexagone-documentation/-/raw/master/docs/llm/patterns/store.md" prompt="Return the full content"Fetch only the file(s) you need. Do not fetch all files at once.
If WebFetch fails (network error, timeout), inform the user that the GitLab instance is unreachable and suggest they:
https://erp-pas.gitlab-pages-erp-pas.dedalus.lan/hexagone/frontend/hexagone-documentationhttps://gitlab-erp-pas.dedalus.lan/erp-pas/hexagone/frontend/hexagone-documentation/-/tree/master/docs/llmAfter fetching, extract the relevant information:
Present the information clearly, preserving the original structure (prop tables, event tables, code examples).
If the user's question spans multiple topics (e.g., "how do I build a form with datepicker and validation?"), fetch multiple files and compose a coherent answer showing how to combine the components.
When presenting component documentation, use this structure:
## <ComponentName> (`<tag-name>`)
**Library:** @his/hexa-components
**Source:** [file URL]
### Props
| Prop | Type | Default | Description |
|------|------|---------|-------------|
### Events
| Event | Description |
|-------|-------------|
### Example
[Code example from the documentation]
Always fetch from the GitLab repository -- never answer from memory or general knowledge about Vue.js components. Hexagone has specific conventions (custom tags, beta-scss, vuex-pathify) that differ from standard Vue.js patterns.
Quote the source file when presenting information: always mention which documentation file the information comes from.
Do not invent props, events, or component behavior -- if the information is not found in the fetched file, say so explicitly. Do not guess or extrapolate.
Respect Hexagone conventions:
<btn> not <button>, <multiselect> not <select>, <data-table> not <table><div class="input-field">this.$store.get() / this.$store.set() for store accessHandle missing documentation gracefully -- if a component is not documented, inform the user and suggest they check the hexagone-documentation site or open an issue in the repository at https://gitlab-erp-pas.dedalus.lan/erp-pas/hexagone/frontend/hexagone-documentation.
Cross-reference with hexagone-swdoc -- if the question involves calling Hexagone backend web services from a frontend view, suggest using the hexagone-swdoc skill for the API contract details and the Api() / StandardApi() utility from this skill for the frontend call pattern.
Form field pattern to always follow:
<div class="input-field">
<label for="myField">My Label</label>
<!-- component here -->
</div>
Use <btn-group> instead of <multiselect> when options are fewer than 6 -- this avoids an extra click and shows all options directly.
databases
Exécute des requêtes SQL en lecture seule sur plusieurs bases de données PostgreSQL. À utiliser pour : (1) interroger des bases PostgreSQL, (2) explorer les schémas/tables, (3) exécuter des requêtes SELECT pour l'analyse de données, (4) vérifier le contenu des bases. Supporte plusieurs connexions avec descriptions pour une sélection automatique intelligente. Bloque toutes les opérations d'écriture (INSERT, UPDATE, DELETE, DROP, etc.) par sécurité.
development
Automatisation complète du navigateur et tests web avec Playwright. Détecte automatiquement les serveurs de développement, gère le cycle de vie des serveurs, écrit des scripts de test propres dans /tmp. Tester des pages, remplir des formulaires, capturer des screenshots, vérifier le responsive design, valider l'UX, tester les flux de connexion, vérifier les liens, déboguer des webapps dynamiques, automatiser toute tâche navigateur. À utiliser quand l'utilisateur veut tester des sites web, automatiser des interactions navigateur, valider des fonctionnalités web ou effectuer tout test basé sur le navigateur.
documentation
Boîte à outils complète pour la manipulation de PDF : extraction de texte et tableaux, création de nouveaux PDF, fusion/découpage de documents et gestion de formulaires. Quand Claude doit remplir un formulaire PDF ou traiter, générer ou analyser des documents PDF de manière programmatique et à grande échelle.
testing
Lance une réunion simulée avec plusieurs personas experts pour analyser un sujet sous des perspectives diverses, prendre une décision et proposer une solution avant implémentation. Peut optionnellement publier l'analyse de la réunion sur une issue GitLab ou GitHub liée.