Rédiger une spécification

VérifiéSûr

Rédiger une spécification formelle à partir d'ADRs acceptés et de documents d'idée. Interroger les limites du contrat et produire un spéc sans ambiguïté.

Spar Skills Guide Bot
DocumentationIntermédiaire
24/07/2026
Claude Code
#spec-writing#adr#api-contracts#technical-writing#architecture

Recommandé pour

Synthèse automatique

Transforme des ADR acceptés et des documents d'idées en spécifications d'implémentation formelles, en interrogeant l'auteur sur les frontières du contrat et en appliquant une checklist de rigueur.

Points forts

  • Entretien structuré couvrant types, signatures, cas d'erreur, cas limites, ordonnancement et contraintes
  • La vérification de rigueur interdit les « à définir » et impose des contraintes mesurables ainsi qu'un comportement explicite pour chaque erreur
  • Pousse à découper la spec par préoccupation délimitée et à extraire des modules profonds
  • Relie la spec aux ADR par des références croisées et la mise à jour de l'index docs/specs/README.md

Limites

  • Nécessite au moins un ADR accepté comme point d'entrée ; impossible de partir de zéro
  • Suppose les conventions du projet : gabarit docs/specs, tâches mise, commande /de-slopify, index des specs
  • La précision finale dépend des réponses à l'entretien ; le code existant n'est consulté qu'en cas de besoin
Quand l'utiliser

Quand un ADR accepté doit devenir un contrat implémentable pour une API, un protocole filaire ou un format de données.

Quand l'éviter

Pour de la configuration d'outillage ou des conventions de documentation, ou lorsque l'ADR est déjà assez précise pour coder directement.

Analyse de sécurité

Sûr
Score qualité86/100

This is a documentation/prose authoring workflow: it reads ADRs and idea docs, interviews the user, and writes a markdown spec file. The only executable actions are a project task runner (`mise run fmt/lint`), a self-hosted slash command, and a git commit gated on explicit user approval. There is no network egress, no secret handling, no destructive filesystem operations, and no obfuscated payloads, so the listing itself carries no meaningful execution risk. The only minor note is that these shell invocations are implied rather than declared in allowed-tools.

Points d'attention
  • •Skill instructs running project-local commands (`mise run fmt`, `mise run lint`, `/de-slopify`) even though no allowed-tools are declared, so tool permissions are ambiguous at the harness level
Comment cette analyse est faite

Exemples

Spec from an ADR
Read docs/adr/0012-session-serialization.md and write the spec for the session serialization format. Interview me on field types, error cases, and size limits before drafting.
API surface spec
Turn the accepted ADR on the plugin API into a formal spec at docs/specs/0007-plugin-api.md — cover every function signature, error type, and edge case, and leave no TBDs.
Split bounded concerns
Based on the accepted daemon IPC ADR, decide whether this should be one spec or several, then draft the wire protocol spec with measurable constraints.

name: write-spec description: | Write a formal specification from accepted ADRs and idea docs. Interviews about contract boundaries, sketches bounded concerns, and produces a spec with no hand-waving.

Use when: transitioning from accepted ADRs to implementation specs, formalizing API surfaces, wire protocols, or data formats. Must have at least one accepted ADR as input.

Write Spec

Turn accepted ADRs into formal implementation contracts. A spec defines the exact interface, behavior, and constraints that code must satisfy.

Skip for: decisions that don't need formal contracts (tooling config, doc conventions), or when the ADR itself is specific enough to implement from directly.

Process

1. Gather Input

Read the accepted ADR(s) that led to this spec. Read the idea docs they reference. Identify what the spec must formalize — the ADR decided what, the spec defines how exactly.

2. Interview About the Contract Boundary

Walk through each branch of the contract, resolving ambiguity:

  • Types: What are the exact data structures? Field names, types, optionality, invariants.
  • Functions/Messages: What are the signatures? Parameters, return types, error types.
  • Error Cases: What can go wrong? How is each error reported? What does the caller do?
  • Edge Cases: Empty input, maximum sizes, concurrent access, version mismatches.
  • Constraints: Performance budgets, memory limits, security requirements.
  • Ordering: Are operations sequential, concurrent, or unordered? What happens during races?

For each question, provide a recommended answer. If the answer requires exploration (reading existing code, checking a dependency's API), do the exploration.

3. Sketch Bounded Concerns

Identify if this spec should be one document or split into multiple specs. One spec per bounded concern:

  • One API surface (plugin API, config API, agent control API)
  • One wire protocol (daemon↔client IPC, remote access WebSocket)
  • One data format (session serialization, scroll buffer archive format)

Look for opportunities to extract deep modules — interfaces that encapsulate complexity behind a simple, testable boundary that rarely changes.

4. Write the Spec

Use the project's spec template (docs/specs/0000-template.md). Every section must be concrete:

Overview: One paragraph — what this spec defines and why.

Contract: The formal definition. No hand-waving. Every type is defined. Every function has a signature. Every message has a format. If referencing an IDL file (.proto, .wit), the IDL is the source of truth and the spec explains behavior and constraints the IDL can't express.

Behavior: Expected behavior for normal and error cases. Edge cases called out explicitly. State transitions documented if applicable.

Constraints: Performance budgets, memory limits, security requirements, backward compatibility guarantees.

References: Link to the ADR(s) that led here and the idea doc(s) for broader context.

5. Rigor Check

Before presenting the spec:

  • [ ] Every type is fully defined (no TBD, details later, to be determined)
  • [ ] Every function/message has input types, output types, and error types
  • [ ] Every error case has a defined behavior (what happens, what the caller sees)
  • [ ] Edge cases are called out (empty, maximum, concurrent, disconnected)
  • [ ] Constraints are measurable (not "fast" but "< X ms" or "competitive with Y")
  • [ ] All ADR decisions are reflected in the spec
  • [ ] Cross-references link to real docs
  • [ ] If an IDL file is referenced, its path is specified

6. Checks

  • mise run fmt — format
  • mise run lint — lint
  • /de-slopify on all prose
  • Verify frontmatter is complete (spec number, title, status: draft, date, ADR references, tags)
  • Check all cross-references resolve

7. Update Index

  • Add the new spec to the index table in docs/specs/README.md.
  • Update cross-references in related ADR and idea docs if needed.

8. Commit Gate

Present the spec summary and wait for explicit "commit" before committing.

Common Mistakes

| Mistake | Fix | | ----------------------------------------- | -------------------------------------------------------------------- | | Spec restates the ADR's rationale | Spec defines the contract; ADR explains why. Don't duplicate. | | "TBD" or "details later" in any section | Resolve it now or split into a separate spec with a dependency note. | | Types defined only by example | Write the full type definition. Examples supplement, not replace. | | Error cases listed without behavior | For each error: what does the system do? What does the caller see? | | Performance constraints as absolutes | Use "competitive with X" or "measured by benchmark Y" per ADR-0002. | | Spec too broad (covers multiple concerns) | Split into focused specs. One API surface, one protocol, one format. |

Output

A spec file at docs/specs/NNNN-short-title.md following the project template. If the spec references an IDL, the IDL file path is specified (the file itself may not exist yet — the spec is the contract, the IDL is generated during implementation).

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/write-spec-mryiqikg/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/write-spec-mryiqikg' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/write-spec-mryiqikg/download' --output '.skill-downloads/write-spec-mryiqikg/SKILL.md.part' && mv '.skill-downloads/write-spec-mryiqikg/SKILL.md.part' '.skill-downloads/write-spec-mryiqikg/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

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/write-spec-mryiqikg/SKILL.md' && test -s '.skill-downloads/write-spec-mryiqikg/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/write-spec' && cp -R '.skill-downloads/write-spec-mryiqikg' '.claude/skills/write-spec'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/write-spec-mryiqikg'

openskills read 'write-spec-mryiqikg'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

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/write-spec-mryiqikg/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