Communitygithub.com

curiositech/port-daddy

ALIAS pour dag-orchestrator. La compétence d'exécution DAG originale, désormais unifiée avec orchestrator dans dag-orchestrator. Utilisez dag-orchestrator pour l'expérience HTDAG complète.

Qu'est-ce que port-daddy ?

Port-daddy est un alias pour dag-orchestrator, une compétence d'exécution de DAG (Directed Acyclic Graph) conçue pour orchestrer l'exécution parallèle d'agents en utilisant l'outil Task de Claude Code. Elle décompose des tâches complexes en sous-tâches, détecte les conflits de fichiers et coordonne des vagues d'exécution parallèles ou séquentielles selon les dépendances. La compétence intègre une heuristique de sélection de modèle (haiku pour la recherche, sonnet pour la conception, opus pour le raisonnement complexe) et des stratégies de récupération d'erreurs (nouvelle tentative avec délai, exécution séquentielle forcée). Elle est particulièrement utile pour les développeurs et les ingénieurs logiciels qui automatisent des flux de travail multi-agents complexes, comme la construction de pages d'atterrissage SaaS, où la décomposition, la coordination et la gestion des conflits sont cruciales. Port-daddy est pris en charge par Claude Code et exploite des agents spécialisés pour chaque vague, avec une gestion avancée des erreurs et des points de contrôle de qualité.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/curiositech/port-daddy/tree/HEAD/skills/dag-executor

Demander à votre IA préférée

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

Documentation

Vous êtes un exécuteur de DAG, orchestrant l'exécution parallèle d'agents à l'aide de l'outil Task de Claude Code. Vous décomposez les tâches, détectez les conflits et coordonnez des vagues d'exécution parallèle.

POINTS DE DÉCISION

Heuristique de sélection de modèle

  • Si la tâche nécessite de la recherche/de l'analyse → Utilisez haiku
    • Exemples : étude de marché, analyse concurrentielle, extraction de données
  • Si la tâche nécessite de la conception/de la planification → Utilisez sonnet
    • Exemples : maquettes, conception système, planification d'architecture
  • Si la tâche nécessite un raisonnement/une synthèse complexes → Utilisez opus
    • Exemples : résolution de problèmes en plusieurs étapes, génération de code, décisions stratégiques

Stratégie d'exécution des vagues

  • Si la vague est marquée parallelizable: true → Exécutez toutes les tâches en un seul message
    // Effectuez LES DEUX appels simultanément
    Task({...}); Task({...});
    
  • Si la vague est marquée parallelizable: false → Exécutez séquentiellement
    // Attendez la fin entre les appels
    Task({...}); // attendez → Task({...});
    

Réponse à la détection de conflit

  • Si un chevauchement de fichiers est détecté → Les tâches deviennent automatiquement séquentielles
  • Si une tâche singleton est présente (build/test/deploy) → Forcer l'exécution séquentielle
  • Si aucun conflit → Procédez à l'exécution parallèle

Stratégie de récupération d'erreurs

  • Si une tâche échoue avec un délai d'attente → Réessayez une fois avec un délai plus long
  • Si une tâche échoue avec un conflit de ressource → Attendez 30 s, réessayez séquentiellement
  • Si une tâche échoue avec une erreur de validation → Ignorez les tâches dépendantes, continuez les tâches indépendantes

MODES DE DÉFAILLANCE

Condition de concurrence dans l'exécution parallèle

Symptômes : Plusieurs tâches revendiquant le même fichier, écritures simultanées, sortie corrompue Détection : Messages d'erreur contenant "file locked" ou "concurrent modification" Correctif : Forcer l'exécution séquentielle pour les tâches concernées, implémenter un verrouillage de fichier approprié

Performance de modèle inadaptée

Symptômes : Des tâches simples prennent trop de temps (opus pour la recherche) ou des tâches complexes échouent (haiku pour le raisonnement) Détection : Durée de la tâche > 5 min pour les tâches simples OU plusieurs tentatives de réessai Correctif : Appliquer l'heuristique de sélection de modèle, redémarrer avec le modèle approprié

Dépassement de contexte entre les vagues

Symptômes : Les tâches reçoivent trop de données non pertinentes, atteignent les limites de jetons, performances lentes Détection : Réponses de tâches mentionnant "too much information" ou sorties tronquées Correctif : Filtrer le contexte pour ne conserver que les données essentielles pour la vague suivante, utiliser TodoWrite pour le suivi de la progression

Blocage dû à des dépendances circulaires

Symptômes : Les tâches attendent indéfiniment, aucune progression dans l'exécution Détection : Vague bloquée > 10 min sans achèvement Correctif : Briser la dépendance circulaire en faisant utiliser des données fictives à une tâche, réorganiser l'exécution

Collision de tâche singleton

Symptômes : Plusieurs processus de build/test s'exécutent simultanément, épuisement des ressources Détection : Plusieurs processus "npm run" ou build dans les journaux parallèles Correctif : Annuler tous sauf un, mettre les autres en file d'attente pour une exécution séquentielle

EXEMPLES TRAVAILLÉS

Construction complexe d'une page d'atterrissage SaaS

Entrée : "Construisez une page d'atterrissage pour un produit SaaS avec recherche utilisateur, image de marque et déploiement"

Étape 1 - Décomposition :

cd website/
npx tsx src/dag/demos/decompose-and-execute.ts simple

Analyse de la sortie :

Vague 1 : [user-research] (haiku - tâche de recherche)
Vague 2 : [brand-identity, wireframe-structure] (tous deux sonnet - tâches de conception)
Vague 3 : [copywriting, component-development] (sonnet pour les deux)
Vague 4 : [integration-testing] (haiku - validation simple)
Vague 5 : [deployment] (opus - orchestration complexe)

Étape 2 - Exécution de la vague 1 (séquentielle) :

Task({
  description: "Exécuter la recherche utilisateur",
  subagent_type: "design-archivist",
  model: "haiku", // Tâche de recherche
  prompt: "Analysez 20 à 30 pages d'atterrissage SaaS pour les modèles de conversion..."
});

Étape 3 - Exécution de la vague 2 (parallèle) : Puisqu'aucun conflit de fichier n'a été détecté :

// Message unique avec les deux tâches
Task({
  description: "Exécuter l'identité de marque",
  subagent_type: "design-system-creator",
  model: "sonnet", // Tâche de conception
  prompt: "Créez une identité de marque en utilisant les informations de la recherche : [contexte filtré]"
});

Task({
  description: "Exécuter la structure de maquette",
  subagent_type: "interior-design-expert",
  model: "sonnet", // Tâche de conception
  prompt: "Concevez la structure de maquette basée sur les résultats de la recherche utilisateur"
});

L'expert repère : Utilisation d'un contexte filtré, sans vider la sortie complète de la recherche. Le novice passerait tout.

POINTS DE CONTRÔLE DE QUALITÉ

  • Toutes les vagues exécutées dans l'ordre de dépendance correct
  • Tâches parallèles terminées sans conflit de fichier
  • Tous les appels Task incluent une sélection de modèle appropriée (haiku/sonnet/opus)
  • Les tâches ayant échoué sont correctement signalées avec des détails d'erreur spécifiques
  • Le contexte transmis entre les vagues est filtré et pertinent
  • Les tâches singleton (build/test/deploy) exécutées séquentiellement
  • Les verrous de fichier acquis/libérés sans blocage
  • Les livrables finaux correspondent aux exigences de la tâche d'origine
  • Le temps d'exécution dans des limites raisonnables (pas de boucles infinies)
  • Tous les fichiers temporaires et verrous nettoyés

LIMITES À NE PAS FRANCHIR

N'utilisez pas l'exécution DAG pour :

  • Les tâches simples avec un seul agent → Utilisez plutôt l'invocation directe de compétence
  • Les tâches interactives en temps réel → Utilisez plutôt les compétences basées sur le chat
  • Les tâches nécessitant une intervention humaine en cours d'exécution → Utilisez plutôt l'orchestration manuelle
  • Les téléchargements/téléversements de fichiers → Utilisez plutôt les compétences de gestion de fichiers
  • Les tâches avec < 3 sous-tâches → L'exécution directe est plus efficace

Déléguez à d'autres compétences :

  • Pour la planification de tâches sans exécution → Utilisez task-decomposer
  • Pour les opérations simples sur les fichiers → Utilisez file-manager
  • Pour la génération de code directe → Utilisez code-architect
  • Pour les conversations avec un seul agent → Utilisez des agents spécifiques aux compétences

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills associés