Publication de documents Feishu

Publie des documents Markdown vers Feishu via CLI. Gère les synchronisations de module-map, les corrections de bugs et le rétablissement automatique de l'authentification OAuth.

Qu'est-ce que Publication de documents Feishu ?

Cette compétence permet à un agent AI (comme Claude Code, Cursor ou Codex) de publier automatiquement des documents Markdown sur la plateforme Feishu (Lark), de synchroniser des correspondances de modules (module-map) et de rédiger des descriptions de corrections de bugs directement dans Feishu. Elle est conçue pour les développeurs qui utilisent Feishu comme base de connaissance et souhaitent automatiser la publication de documentation technique. La compétence inclut une gestion avancée de l'authentification OAuth : en cas d'expiration du token, l'agent exécute automatiquement la commande `oauth serve` et invite l'utilisateur à simplement autoriser l'accès dans le navigateur, sans intervention manuelle de CLI. Elle applique également des vérifications de sécurité (Publish Safety Gate) pour éviter les publications accidentelles sur des documents non concernés, en validant les IDs de document avant chaque publication. Fonctionnalités principales : - Publication de documents Markdown individuels. - Synchronisation des module-map (clusters). - Rédaction de descriptions de corrections de bugs (BugFix) dans Feishu. - Rétablissement automatique de l'authentification OAuth. - Support de la classification des documents et de la gestion des catégories. La compétence respecte une hiérarchie de recherche des tokens et configurations, et ne modifie pas automatiquement les URLs Feishu dans les module-map après publication, sauf demande explicite de l'utilisateur.

Compatible avec✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/Jcchen2026/feishu-doc-publish/tree/HEAD/cursor/skills/feishu-doc-publish

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Publication de documents Feishu (Feishu Doc Publisher)

Règles générales pour l'agent (à lire impérativement)

  1. Quand une tâche de publication Feishu se présente → lire d'abord cette compétence, puis exécuter la CLI ; ne pas se contenter de dire à l'utilisateur d'exécuter la commande.
  2. Expiration OAuth / absence de token → l'agent rétablit automatiquement (voir §Rétablissement automatique OAuth) ; l'utilisateur n'a qu'à cliquer sur « Autoriser » dans le navigateur.
  3. Ordre de recherche des identifiants (déjà implémenté dans config.py, l'agent ne doit pas recopier) :
    • tools/feishu_doc_publisher/.env + feishu_tokens.json (dans le projet, par défaut)
    • Si absent → ~/.cursor/tools/feishu_doc_publisher/ ou ~/.claude/tools/feishu_doc_publisher/ (surcharge locale)
  4. Registre : tools/feishu_doc_publisher/clusters/registry.json (facultatif ; sans registre, déduction basée sur la convention docs/modules/<cluster>-module-map.md)

Installation initiale (dans le projet cible)

# Installation en une ligne (dépôt public)
curl -fsSL https://raw.githubusercontent.com/Jcchen2026/feishu-doc-publish/main/install.sh | bash -s -- /chemin/vers/votre-repo

# Ou après clonage
git clone https://github.com/Jcchen2026/feishu-doc-publish.git
/chemin/vers/feishu-doc-publish/install.sh /chemin/vers/votre-repo

Après l'installation, configurez le fichier .env et effectuez une authentification OAuth initiale. Voir tools/feishu_doc_publisher/README.md.

Publication standard (document Markdown unique)

cd tools/feishu_doc_publisher
python3 cli.py publish \
  --markdown ../../docs/guides/<fichier>.md \
  --title "<Titre du document Feishu>" \
  --state-file feishu_doc_state_<slug>.json

Publication standard (module-map)

tools/feishu_doc_publisher/sync_module_map.sh --dry-run --cluster <cluster>
tools/feishu_doc_publisher/sync_module_map.sh --cluster <cluster>

Quand l'utilisateur dit « publier sur Feishu / synchroniser module-map » → l'agent exécute lui-même ces commandes et renvoie feishu_url.


Barrière de sécurité de publication (P0)

Contexte : PUBLISH_INCIDENTS.md · Incident de réécriture accidentelle de documents Feishu non concernés.

Si une condition n'est pas remplie → STOP, publication interdite.

Liste de vérification avant publication (auto-contrôle de l'agent)

  • Mode cluster doit utiliser feishu_doc_state_<cluster>.json
  • Interdiction d'utiliser silencieusement feishu_doc_state.json comme cible de publication pour module-map
  • Extraire feishu.cn/docx/<id> depuis module-map.md, qui doit correspondre à document_id dans le fichier d'état
  • Exécuter d'abord --dry-run, vérifier que la sortie contient publish_target: OK
  • Après publication réussie : ne pas modifier automatiquement l'URL Feishu dans module-map / README (sauf demande explicite de l'utilisateur de lier un nouveau document)
  • Afficher pour vérification humaine : state_file · doc_id · module-map doc_id

Interdictions

  • ❌ Utiliser feishu_doc_state.json comme cible lors d'une publication cluster
  • ❌ Modifier automatiquement le lien Feishu dans module-map parce que l'URL de sortie de publication diffère de celle de module-map
  • ❌ Effectuer une publication réelle sans --dry-run pour valider publish_target

Rétablissement automatique de l'authentification OAuth (P0 · L'agent doit exécuter)

Quand déclencher

Mot-clé d'erreurSignification
No user_access_token foundAucun token
Authentication token expired / 99991677access_token expiré
invalid_grant / refresh token has been revokedrefresh_token invalide

Procédure standard pour l'agent

cd tools/feishu_doc_publisher
python3 cli.py oauth serve --timeout 600

L'agent doit :

  1. Lui-même exécuter oauth serve (peut être en arrière-plan avec une boucle d'attente jusqu'à ce que OAuth complete soit affiché).
  2. Informer l'utilisateur : « La page d'autorisation Feishu s'est ouverte dans le navigateur. Veuillez cliquer une fois sur Autoriser. »
  3. Une fois l'autorisation réussie, réessayer immédiatement la tâche d'origine.
  4. Pour les tokens partagés en équipe, commiter le nouveau feishu_tokens.json (ne pas commiter le App Secret).

Interdictions

  • ❌ Se contenter d'afficher « Veuillez d'abord exécuter oauth start / finish » en laissant l'utilisateur opérer lui-même dans le terminal
  • ❌ Après rétablissement OAuth, écraser le feishu_tokens.json du projet avec un ancien token local

Classification des documents

  • Règles : tools/feishu_doc_publisher/CLASSIFY.md
  • Configuration : feishu_categories.json (à copier depuis feishu_categories.json.example)
  • Alignement des états : python3 cli.py reconcile-states
  • Création d'une nouvelle catégorie : python3 setup_category.py <catégorie> --drive-name "..." --wiki-name "..." --wiki-root-node <token>

Descriptions de corrections de bugs (BugFix)

ÉlémentValeur
catégoriebugfix (ou personnalisée selon le projet)
Règles de rédactiontools/feishu_doc_publisher/BUGFIX_DOC_WRITING.md
Règle Cursor.cursor/rules/feishu-bugfix-doc-writing.mdc

Mermaid

  • Git conserve le code source ```mermaid
  • Par défaut FEISHU_MERMAID_MODE=addons : ```mermaid → transformé en diagramme natif Feishu via le module complémentaire « Dessin de texte »
  • En cas d'échec, fallback avec une image PNG associée : docs/assets/<cluster>/

Périmètre

  • Modifications autorisées : tools/feishu_doc_publisher/**, docs/**, .cursor/skills/feishu-doc-publish/**
  • Ne pas commiter : .env (contient le Secret), feishu_tokens.json (la politique d'équipe décide), feishu_folders.json, feishu_wiki.json (cache local)

Skills associés