Créer une phase de pipeline moderniseur

VérifiéPrudence

Guide pas à pas pour ajouter une phase au pipeline : contrat Pydantic, logique déterministe, script, expertise LLM et commande.

Spar Skills Guide Bot
DeveloppementAvancé
31/10/2026
Claude Code
#skill-authoring#pipeline-phases#pydantic-contracts#llm-workflow#claude-code

Recommandé pour

Synthèse automatique

Guide la création d'une nouvelle phase de pipeline, de la définition du contrat Pydantic jusqu'à la commande et l'intégration dans l'orchestrateur.

Points forts

  • Ordonne les étapes avec des points d'arrêt explicites et des commandes de vérification.
  • Sépare clairement contrat, logique déterministe, script, expertise LLM et commande.
  • Couvre les modes LLM none/external/bedrock ainsi que la finalisation typée via Pydantic.
  • Rappelle la mise à jour de l'orchestrateur et la validation globale des skills.

Limites

  • Suppose une structure de dépôt précise (src/contracts, src/agents, scripts, uv) sans l'adapter.
  • Très centré sur les commandes Claude Code (.claude/commands) et un orchestrateur /modernize existant.
  • Ne détaille ni la conception métier du contrat ni les critères de qualité des tests.
Quand l'utiliser

À utiliser lorsqu'on ajoute une phase à un pipeline existant structuré autour de contrats Pydantic et de commandes Claude Code.

Quand l'éviter

À éviter pour créer un skill générique ou travailler dans un dépôt qui ne suit pas cette architecture de phases.

Analyse de sécurité

Prudence
Score qualité80/100

This is a meta-skill that guides an agent through scaffolding a new pipeline phase and running it. It uses bash, Python, and pytest, but only against the project's own code and artifacts; there is no destructive command, no network exfiltration, no obfuscated payload, and no attempt to disable safety controls. The instructions are internally consistent and even include STOP gates and mandatory validation, so the risk is limited to ordinary code-execution risk inherent to any dev-workflow skill — hence caution rather than risky.

Points d'attention
  • •Instructs the agent to create and execute project scripts via `uv run python scripts/...` and `uv run pytest`, meaning arbitrary newly-written code is run — legitimate for the workflow but non-trivial execution risk
  • •Writes/modifies multiple files across src/, tests/, scripts/, and .claude/commands/, and edits an existing orchestrator command; no backup or review step beyond the STOP gates
  • •References external expertise files and artifact paths whose contents are not validated by this skill itself
  • •No allowed-tools declared, yet the workflow instructs the agent to run shell commands (`uv run python`, `uv run pytest`, `uv run python scripts/validate_skills.py`); the manifest should declare `Bash` so the capabilities are explicit rather than implicit.
  • •Placeholder paths such as `artifacts/{database_name}/{job_id}/...` and `--db test` are used without any guard against path traversal; a caller-supplied `job_id`/`database_name` containing `../` could read/write outside the repo. Low severity, since it is upstream project code that would do the resolution.
Comment cette analyse est faite

Exemples

Add a cost-estimate phase
/add-modernizer-skill Add a phase called cost-estimate that estimates warehouse cost from the mapped schema. It needs LLM judgment, reads the mapping contract, and outputs a cost estimate contract.
Add a deterministic validation phase
Use the add-modernizer-skill workflow to create a deterministic validate-schema phase in this repo. It should read the DDL contract and output validation results with errors.
Add an LLM migration phase
I need to add a migrate-ddl phase that uses external LLM mode and writes a .claude command. Walk me through the contract first and stop for approval.

/add-modernizer-skill

Guides creation of a new pipeline phase. Follows strict priority order — each step must be complete before the next begins.

Required Input

Ask the user for:

  • Phase name: e.g. migrate-ddl, validate-schema, cost-estimate
  • Purpose: What this phase does in one sentence
  • Needs LLM?: Whether this phase requires LLM judgment (yes/no)
  • Input: What artifacts from previous phases it reads
  • Output: What it produces

Phase 1: Contract (MUST complete first)

  1. Create src/contracts/{phase_name}_output.py

  2. Define the output Pydantic model with:

    • Clear field descriptions
    • Appropriate types and constraints
    • Validators where needed
  3. If LLM is needed, define the LLM output model separately (keep it minimal — only what requires judgment)

  4. Verify:

    uv run python -c "from src.contracts.{phase_name}_output import *; print('OK')"
    

STOP: Do not proceed until the contract compiles and the user approves the field design.

Phase 2: Deterministic Logic

  1. Create src/agents/{phase_name}/handler.py

  2. Implement run_{phase_name}_deterministic(input) -> contract

  3. If LLM is needed, implement:

    • prepare_{phase_name}_llm_input(contract, input) -> dict
    • apply_{phase_name}_llm_output(contract, llm_typed) -> updated_contract
  4. Write tests in tests/agents/test_{phase_name}.py

  5. Verify:

    uv run pytest tests/agents/test_{phase_name}.py -v
    

STOP: Do not proceed until tests pass.

Phase 3: Script

  1. Create scripts/run_{phase_name}.py

  2. Must support: --job-id, --db, --llm-mode (none/external/bedrock), --finalize, --artifact-root

  3. In external mode, inject output_schema:

    llm_request["output_schema"] = LlmModel.model_json_schema()
    
  4. In finalize mode, deserialize through Pydantic:

    llm_typed = LlmModel.model_validate(llm_response)
    updated = apply_llm_output(contract, llm_typed)
    
  5. Output JSON to stdout: {"status": "complete"} or {"status": "awaiting_llm", "llm_request": "..."} or {"status": "validation_failed", "errors": [...]}

  6. Verify deterministic mode works:

    uv run python scripts/run_{phase_name}.py --job-id test --db test --llm-mode none
    

STOP: Do not proceed until the script runs successfully.

Phase 4: Domain Expertise (if LLM phase exists)

  1. Create src/skills/{phase_name}-expertise.md
  2. Write the domain knowledge the LLM needs to make good decisions
  3. Keep it focused — principles and anti-patterns, not implementation details

Phase 5: Command

  1. Create .claude/commands/{phase_name}.md
  2. No frontmatter. Follow this exact template, matching the other shipped commands:
# /{phase_name}

{Brief description.}

## Prerequisites

- {What must be true}

## Steps

1. **Run phase**

   ```bash
   uv run python scripts/run_{phase_name}.py --job-id {job_id} --db {database_name} --llm-mode external
  1. If status is awaiting_llm: a. Read: artifacts/{database_name}/{job_id}/llm_requests/{phase_name}.json

    • Contains context data and output_schema b. Read: src/skills/{phase_name}-expertise.md c. Produce JSON conforming to output_schema d. Write to: artifacts/{database_name}/{job_id}/llm_responses/{phase_name}.json e. Finalize:
    uv run python scripts/run_{phase_name}.py --job-id {job_id} --db {database_name} --finalize
    

    If validation fails, fix errors and retry up to 3 times.

  2. Update state Set phase_status.{phase_name} = "complete"


3. Validate:

   ```bash
   uv run python scripts/validate_skills.py

Phase 6: Integration

  1. Add the new phase to the /modernize orchestrator skill if it belongs in the main pipeline

  2. Update .claude/commands/modernize.md with the new step in the correct position

  3. Run the pre-commit hook to verify everything links up:

    uv run python scripts/validate_skills.py
    

Rules

  • NEVER skip a phase. Each phase depends on the previous.
  • NEVER put contract details in the skill. The script injects output_schema.
  • NEVER reference Python source files from skills.
  • Keep LLM output contracts minimal. If logic can be deterministic, it MUST be.
  • The script is the source of truth for validation — the skill just runs it.

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/create-a-modernizer-pipeline-phase-mvda88r9/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/create-a-modernizer-pipeline-phase-mvda88r9' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/create-a-modernizer-pipeline-phase-mvda88r9/download' --output '.skill-downloads/create-a-modernizer-pipeline-phase-mvda88r9/SKILL.md.part' && mv '.skill-downloads/create-a-modernizer-pipeline-phase-mvda88r9/SKILL.md.part' '.skill-downloads/create-a-modernizer-pipeline-phase-mvda88r9/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Le fichier ne fournit pas un en-tête name/description exploitable pour cette procédure native. Le téléchargement reste disponible pour lecture ; utilisez le mode manuel ci-dessous.

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/create-a-modernizer-pipeline-phase-mvda88r9/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires