Spécification de développement

VérifiéPrudence

Génère des modèles de spécification pour les modifications complexes suivant le flux GitHub Spec Kit (Specify → Clarify → Tasks → Implement). Crée automatiquement une issue GitHub et un fichier de spécification.

Spar Skills Guide Bot
DeveloppementIntermédiaire
04/03/2026
Claude Code
#spec-driven-development#github-issues#planning#crossplane#infrastructure-as-code

Recommandé pour

Synthèse automatique

Génère un modèle de spécification pour des changements non triviaux, en créant d'abord une issue GitHub d'ancrage puis un fichier de spec numéroté dans docs/specs, selon le workflow Specify → Clarify → Tasks → Implement.

Points forts

  • Automatise l'ensemble de la mécanique : slug sémantique, création d'issue GitHub, numérotation séquentielle à 4 chiffres et nommage du fichier avec référence à l'issue
  • Sépare clairement le « quoi/pourquoi » (issue) du « comment » (fichier de spec), ce qui facilite la traçabilité via « Implements #123 »
  • Détecte le type de spec (composition, infrastructure, security, platform) à partir de motifs de fichiers et propose une valeur par défaut tout en demandant confirmation
  • Indique explicitement les cas à ne pas spécifier (bump de version, docs, correctif mono-fichier), évitant la sur-documentation

Limites

  • Fortement lié à un contexte plateforme précis (Crossplane/KCL, OpenTofu/Terramate, EKS, OpenBao), peu réutilisable tel quel ailleurs
  • Suppose une arborescence docs/specs/active et docs/specs/completed ainsi que des labels GitHub spec et <type> déjà en place
  • Nécessite gh authentifié et des droits de création d'issues ; le contenu de la spec reste un squelette à remplir manuellement
Quand l'utiliser

À utiliser avant d'implémenter une composition Crossplane, un changement d'infrastructure majeur, une modification de sécurité ou une fonctionnalité multi-composants.

Quand l'éviter

À éviter pour les bumps de version Renovate, les changements de documentation seule, les correctifs mono-fichier ou les ajustements mineurs de valeurs HelmRelease.

Analyse de sécurité

Prudence
Score qualité74/100

The skill uses Bash, the GitHub CLI (network), and Write to create issues and spec files, which are powerful but legitimate operations. There are no destructive commands (no rm -rf, no curl|sh), no obfuscated/base64 payloads, and no attempts to exfiltrate secrets or disable safety. All shell activity (git/gh/ls/sed/grep) is scoped to generating spec scaffolding, so it warrants 'caution' rather than 'risky'.

Points d'attention
  • •Uses Bash with gh CLI (network calls to GitHub: issue create, issue comment)
  • •Creates/writes files under docs/specs/active/ via Write and shell redirection
  • •Runs shell pipelines (ls, sed, grep, printf) for numbering and slug generation
  • •Filename embeds '#' from issue number; unquoted usage could cause minor shell issues in some contexts
Comment cette analyse est faite

Exemples

Crossplane composition
/specify composition Add a Valkey caching composition for Redis workloads
Security change
/specify security Zero-trust network policies and RBAC for the payments namespace
Infrastructure change
/specify infrastructure Migrate EKS node groups to Karpenter with spot instances

name: specify description: Generate a specification template for non-trivial changes using Spec-Driven Development. Creates GitHub issue + spec file following the 4-stage workflow (Specify → Clarify → Tasks → Implement). allowed-tools: Read, Write, Bash(git:), Bash(gh:), Glob, Grep

Specify Skill

Generate specification templates for changes that require formal design documentation before implementation. Follows GitHub Spec Kit 4-stage workflow: Specify → Clarify → Tasks → Implement.

Usage

/specify <type> [description]

Types: composition | infrastructure | security | platform

When to Use

Run /specify when making:

  • composition: New Crossplane compositions (KCL modules, XRDs)
  • infrastructure: Major OpenTofu/Terramate changes (VPC, EKS, IAM)
  • security: Network policies, RBAC, secrets management, PKI
  • platform: Multi-component features spanning multiple subsystems

When NOT to Use

Skip specs for:

  • Version bumps (Renovate PRs)
  • Documentation-only changes
  • Single-file bug fixes
  • Minor HelmRelease value tweaks

Workflow

Step 1: Determine Spec Type

If type argument provided, use it directly.

If type NOT provided, use AskUserQuestion to prompt:

Question: "What type of specification do you want to create?"
Header: "Spec type"
Options:
  - composition: "New Crossplane KCL composition, XRD, or managed resource pattern"
  - infrastructure: "OpenTofu/Terramate changes (VPC, EKS, IAM, network)"
  - security: "Network policies, RBAC, secrets management, PKI changes"
  - platform: "Multi-component features spanning multiple subsystems"

Context hints (use to suggest a default, but always confirm with user):

| Type | Trigger Patterns | |------|-----------------| | composition | KCL files, *-composition.yaml, *-definition.yaml | | infrastructure | opentofu/**/*.tf, terramate.tm.hcl, EKS/VPC changes | | security | *networkpolicy*, *rbac*, openbao/**, secrets | | platform | Multi-directory changes, new HelmReleases, observability |

Step 2: Get Description

If description provided, use it directly.

If description NOT provided, ask the user:

  • "Briefly describe what you want to specify (e.g., 'Add Valkey caching composition for Redis workloads')"

Step 3: Generate Semantic Slug

From description, create a slug:

  • Filter out stop words (I, want, to, the, for, a, an, etc.)
  • Take 3-4 most meaningful words
  • Join with hyphens, lowercase
  • Example: "Create a Valkey caching composition" → "valkey-caching-composition"

Step 4: Create GitHub Issue (Anchor)

Create a GitHub issue as the immutable anchor for discussion and tracking:

# Create issue and capture the issue number directly from the output
ISSUE_URL=$(gh issue create \
  --title "[SPEC] ${TITLE}" \
  --label "spec,${TYPE}" \
  --body "## Summary
${DESCRIPTION}

## Spec Type
${TYPE}

## Spec File
Will be created at: \`docs/specs/active/XXXX-#ISSUE-${SLUG}.md\`

---
_This issue tracks a formal specification. See the linked spec file for full details._")

# Extract issue number from the returned URL
ISSUE_NUM=$(echo "$ISSUE_URL" | grep -oP 'issues/\K\d+$')

Why GitHub Issue first?

  • Provides discoverability (searchable, project boards)
  • Enables discussion (comments, reactions, mentions)
  • Creates linkable anchor for PRs (Implements #123)
  • Separates "what/why" (issue) from "how" (spec file)

Step 5: Generate Spec Number

# Find next spec number by extracting the highest existing number
MAX_NUM=$(ls -1 docs/specs/active/*.md docs/specs/completed/*.md 2>/dev/null | \
  sed 's|.*/||' | \
  grep -oP '^\d{4}(?=-)' | \
  sort -rn | \
  head -1)
SPEC_NUM=$(printf "%04d" $((10#${MAX_NUM:-0} + 1)))

Step 6: Create Spec File

# Include issue number in filename for traceability
SPEC_FILE="docs/specs/active/${SPEC_NUM}-#${ISSUE_NUM}-${SLUG}.md"

Copy the appropriate template:

  • composition → docs/specs/templates/spec-crossplane-composition.md
  • infrastructure → docs/specs/templates/spec-infrastructure.md
  • security → docs/specs/templates/spec-security.md
  • platform → docs/specs/templates/spec-platform-capability.md

Step 7: Pre-fill Context

Replace placeholders in the template:

  • SPEC-XXXX → SPEC-${SPEC_NUM}
  • YYYY-MM-DD → current date
  • [Composition Name] / [Title] → derived from description
  • GitHub Issue: #XXX → GitHub Issue: #${ISSUE_NUM}

Step 8: Update GitHub Issue with Spec Link

gh issue comment ${ISSUE_NUM} --body "Spec file created: [\`${SPEC_FILE}\`](${SPEC_FILE})"

Step 9: Read Related Context

To help fill in the template, scan relevant files (only if they exist):

# Always read these core files
[ -f "CLAUDE.md" ] && echo "Read: CLAUDE.md"
[ -f "docs/specs/constitution.md" ] && echo "Read: constitution.md (platform principles)"

# Type-specific context (only if files exist)
if [ "$TYPE" = "composition" ]; then
  [ -f "docs/crossplane.md" ] && echo "Read: docs/crossplane.md"
fi

# Optional architectural context
[ -f "docs/technology-choices.md" ] && echo "Read: docs/technology-choices.md"

# Always scan similar completed specs for patterns
ls docs/specs/completed/*.md 2>/dev/null | head -3

Required context files:

  • CLAUDE.md - Project patterns and validation requirements
  • docs/specs/constitution.md - Platform-wide non-negotiable principles

Optional context files (read if they exist):

  • docs/crossplane.md - Composition patterns (for composition type)
  • docs/technology-choices.md - Architectural context
  • docs/specs/completed/*.md - Similar completed specs for reference

Step 10: Output

Display:

  1. GitHub issue URL
  2. Created spec file path
  3. Template type used
  4. Quick reference to the 4 personas who should review
  5. Next steps

Output Format

✅ Specification created!

🔗 GitHub Issue: https://github.com/Smana/cloud-native-ref/issues/XXX
📄 Spec File: docs/specs/active/XXXX-#XXX-slug.md
📋 Type: [composition|infrastructure|security|platform]

## Review Personas
Before implementation, self-review as:
- [ ] PM: Problem clear? User stories valid? Scope defined?
- [ ] Platform Engineer: Patterns consistent? Implementation feasible?
- [ ] Security & Compliance: Zero-trust? Least privilege? Secrets managed?
- [ ] SRE: Observable? Recoverable? Failure modes documented?

## Next Steps
1. Fill in the spec template (especially [NEEDS CLARIFICATION] sections)
2. Run /clarify to resolve clarifications interactively
3. Run /tasks to generate task breakdown
4. Implement the changes
5. Reference issue in PR: `Implements #XXX`
6. After merge: `mv docs/specs/active/XXXX-*.md docs/specs/completed/`
7. Close the GitHub issue

Examples

# Explicit type
/specify composition Create a Valkey caching composition for Redis workloads

# Explicit type
/specify infrastructure Add Karpenter provisioner for GPU nodes

# Explicit type
/specify security Implement network policies for apps namespace

# Explicit type
/specify platform Add distributed tracing with Tempo

Integration with Other Skills

  • /specify → Creates GitHub issue + spec file (this skill)
  • /clarify → Resolves [NEEDS CLARIFICATION] markers interactively
  • /tasks → Generates task breakdown from spec's Rollout Plan
  • /create-pr → Auto-detects spec and references issue (Implements #XXX)

Spec Lifecycle

┌─────────────────┐     ┌──────────────────────────────────┐     ┌─────────────────────┐
│  GitHub Issue   │────▶│  docs/specs/active/XXXX-#XX.md   │────▶│  docs/specs/completed/
│  #XXX (anchor)  │     │  (detailed spec)                 │     │  XXXX-#XX.md        │
└─────────────────┘     └──────────────────────────────────┘     └─────────────────────┘
       │                              │                                    │
       │                              ▼                                    │
       │                     [Implementation]                              │
       │                              │                                    │
       ▼                              ▼                                    ▼
   Discussion              PR: "Implements #XXX"                    Reference
   Comments                     Code Review                         History
   Reactions                       Merge

Two-Document Model

| Document | Purpose | Location | |----------|---------|----------| | GitHub Issue | Immutable anchor, discussion, "what/why" | GitHub Issues | | Spec File | Detailed design, checklists, "how" | docs/specs/active/ |

The issue provides discoverability and discussion; the spec file contains implementation details.

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

Outils déclarés par l’auteur (à vérifier dans votre agent) : Read, Write, Bash(git:*), Bash(gh:*), Glob, Grep

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/spec-driven-development-mmbizjsr/SKILL.md' && test -s '.skill-downloads/spec-driven-development-mmbizjsr/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/specify' && cp -R '.skill-downloads/spec-driven-development-mmbizjsr' '.claude/skills/specify'

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/spec-driven-development-mmbizjsr'

openskills read 'spec-driven-development-mmbizjsr'

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/spec-driven-development-mmbizjsr/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