← Retour à la liste
★★★★½ 4.7 / 5
Catégorie 04SKILLS

Drupal Obsidian

config/sync/*.yml → vault Obsidian vivant — 14 entités, Dataview audit, graphes HTML

Installation
Via npx (recommandé)npx skill add ThomasRoger76/drupal-obsidian
Via gitgit clone https://github.com/ThomasRoger76/drupal-obsidian.git ~/.claude/skills/drupal-obsidian
Vérifier dans Claude Code/skills
VersionPython 3.12, Obsidian 1.x, Dataview
PrixGratuit
Plateformes
Drupal 10Drupal 11
Commandes8
Exemples3
SKL
À propos

Skill de connaissance pure qui transforme Claude en expert documentation architecturale Drupal via Obsidian — génère le script Python d'extraction, les templates de notes et les queries Dataview d'audit, permettant de transformer n'importe quelle config Drupal en documentation vivante en moins d'une heure. Contenu injecté : patterns d'extraction Python (14 types d'entités depuis config/sync/*.yml, ThreadPoolExecutor 8 workers pour 1000+ fichiers, gestion YAML malformés sans crash), frontmatter standardisé avec wikilinks bidirectionnels automatiques (CT↔Fields↔Views↔Workflows↔Templates), queries Dataview pour l'audit d'architecture (CT sans tests, Paragraphs sans template Twig, champs critiques backlinks > 3, timeline des modifications), intégration skill graphify pour les Knowledge Graphs HTML interactifs avec clustering communautaire, pipeline CI/CD GitLab (job extract-vault déclenché sur config/sync/**, vault auto-commité dans la branche MR, job vault-health-check avec commentaire MR automatique). Pas d'agents — skill de connaissance pure. Gain mesuré : documentation architecturale auto-générée et toujours à jour (vs documentation manuelle qui se périme en 2 sprints), audit d'architecture en temps réel via Dataview sans effort, Graph View révèle des dépendances architecturales invisibles dans le code.

Fonctionnalités clés
Extraction Python — 14 types d'entités détectés automatiquementScript Python qui parse config/sync/*.yml et détecte le type depuis le nom de fichier. ThreadPoolExecutor 8 workers pour 1000+ fichiers en quelques secondes, gestion des YAML malformés sans crash.
Frontmatter standardisé + wikilinks bidirectionnelsChaque note générée inclut type, machine_name, label, fields/views/templates en wikilinks [[...]]. Le Graph View Obsidian affiche automatiquement les dépendances architecturales sans configuration.
Dataview — audit d'architecture en temps réelDASHBOARD.md avec queries Dataview : CT sans tests (tests_coverage: false), Paragraphs sans template Twig (via backlinks), champs critiques backlinks > 3, timeline des modifications.
Graph View — clusters et hubs de dépendancesLes wikilinks génèrent un graphe dans Obsidian sans configuration. Clusters visibles (modules isolés, entités partagées), identification des champs critiques (nombreux backlinks = ne pas supprimer).
graphify integration — Knowledge Graph HTML exportableVia le skill graphify, le vault se transforme en Knowledge Graph HTML avec force-directed layout, clustering communautaire, filtres par type. Déployable comme page web pour les présentations d'architecture.
CI/CD GitLab — vault jamais obsolète, auto-commitéJob déclenché sur les changements de config/sync/**. Extraction + git commit + push automatiques dans la branche MR. Job vault-health-check avec commentaire automatique sur les incohérences.
Commandes
CommandeDescription
python drupal-to-obsidian.py --config=config/sync/ --output=vault/Extraction complète config/sync/*.yml vers notes Obsidian (14 types d'entités)
python drupal-to-obsidian.py --type=content_type --output=vault/content-types/Extraire uniquement les Content Types (node.type.*)
python drupal-to-obsidian.py --parallel --workers=8Extraction parallèle ThreadPoolExecutor pour les projets 1000+ YAML
python drupal-to-obsidian.py --diff --since=2024-01-01Mettre à jour uniquement les entités modifiées depuis une date donnée
grep -r "type: content_type" vault/ | wc -lCompter les Content Types documentés dans le vault Obsidian
python scripts/vault-health-check.pyDétecter les liens cassés et le frontmatter incomplet dans le vault
python scripts/export-to-gitlab-wiki.py vault/ wiki/Exporter le vault Obsidian vers un GitLab Wiki en Markdown standard
find vault/ -name "*.md" -newer vault/last-update.txtLister les notes modifiées depuis la dernière extraction
Exemples
Script Python — extraction complète config/sync vers ObsidianCODE
#!/usr/bin/env python3
import yaml, pathlib, argparse
from concurrent.futures import ThreadPoolExecutor

ENTITY_PATTERNS = {
  'node.type.': ('content_type', 'content-types/'),
  'paragraphs.paragraphs_type.': ('paragraph', 'paragraphs/'),
  'field.storage.': ('field_storage', 'fields/'),
  'views.view.': ('view', 'views/'),
  'workflows.workflow.': ('workflow', 'workflows/'),
  'user.role.': ('role', 'roles/'),
}

def extract_entity(yaml_file: pathlib.Path, output: pathlib.Path) -> None:
  try:
    data = yaml.safe_load(yaml_file.read_text())
  except yaml.YAMLError:
    return  # Ignorer les YAML malformés sans crasher
  for prefix, (entity_type, subdir) in ENTITY_PATTERNS.items():
    if yaml_file.name.startswith(prefix):
      name = yaml_file.stem.replace(prefix.rstrip('.'), '').lstrip('.')
      note_dir = output / subdir
      note_dir.mkdir(parents=True, exist_ok=True)
      note = f"---\ntype: {entity_type}\nmachine_name: {name}\nlabel: {data.get('label','')}\ntests_coverage: false\n---\n\n# {data.get('label', name)}\n"
      (note_dir / f"{name}.md").write_text(note)
      break

if __name__ == '__main__':
  p = argparse.ArgumentParser()
  p.add_argument('--config', default='config/sync/')
  p.add_argument('--output', default='vault/')
  p.add_argument('--workers', type=int, default=8)
  args = p.parse_args()
  files = list(pathlib.Path(args.config).glob('*.yml'))
  out   = pathlib.Path(args.output)
  with ThreadPoolExecutor(max_workers=args.workers) as ex:
    ex.map(lambda f: extract_entity(f, out), files)
  print(f"{len(files)} fichiers YAML traités → {args.output}")
Dashboard Dataview — audit d'architecture DrupalCODE
# vault/_index/DASHBOARD.md

## Santé du vault
```dataview
TABLE length(rows) AS "Total"
FROM ""
GROUP BY type
SORT type ASC
```

## Content Types sans tests
```dataview
TABLE tests_coverage AS "Tests couverts"
FROM "content-types"
WHERE type = "content_type" AND tests_coverage = false
SORT file.name ASC
```

## Champs critiques (utilisés dans + de 3 Content Types)
```dataviewjs
const fields = dv.pages('"fields"').where(f => f.type === 'field_storage');
fields.filter(f => (f.file.inlinks ?? []).length > 3)
      .forEach(f => dv.paragraph(`[[${f.file.name}]] — ${f.file.inlinks.length} CT`));
```

## Paragraphs sans template Twig
```dataviewjs
const paragraphs = dv.pages('"paragraphs"');
const templates  = dv.pages('"templates"');
paragraphs.filter(p => !templates.some(t => t.file.inlinks?.includes(p.file.link)))
          .forEach(p => dv.paragraph(`⚠️ [[${p.file.name}]] — aucun template`));
```
Pipeline GitLab CI — vault auto-mis à jour à chaque MRCODE
# .gitlab-ci.yml
extract-vault:
  stage: docs
  image: python:3.12-slim
  rules:
    - changes: [config/sync/**]
  script:
    - pip install pyyaml -q
    - python scripts/drupal-to-obsidian.py --config=config/sync/ --output=docs/vault/ --workers=8
    - git config user.email "ci@example.com"
    - git config user.name "CI Bot"
    - git add docs/vault/
    - git diff --staged --quiet || git commit -m "docs: vault Obsidian mis à jour [skip ci]"
    - git push origin HEAD:$CI_COMMIT_REF_NAME

vault-health-check:
  stage: docs
  image: python:3.12-slim
  script:
    - python scripts/vault-health-check.py --vault=docs/vault/ --output=report.json
    - python scripts/post-mr-comment.py --report=report.json
  artifacts: { paths: [report.json] }
Points forts & faibles
Points forts
+Documentation vivante auto-générée depuis la config — toujours à jour
+Graph View révèle les dépendances cachées et entités critiques
+Dataview queries = audit architectural sans effort manuel
+CI/CD intégré — vault mis à jour sans action humaine à chaque MR
Points faibles
Nécessite Obsidian installé localement (application desktop)
Le vault peut devenir volumineux sur les gros projets (500+ notes)
Verdict

Skill unique qui transforme la config Drupal en documentation vivante et explorable. Le Graph View révèle des dépendances architecturales invisibles dans le code, les queries Dataview automatisent les audits.

Architectes Drupal, tech leads, équipes qui veulent documenter leur architecture sans effort manuel