cc-ship 0.0.6 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agents/ship-architect.md +23 -20
- package/agents/ship-brainstormer-prd.md +24 -21
- package/agents/ship-brainstormer.md +256 -250
- package/agents/ship-executor.md +17 -4
- package/agents/ship-shaper.md +159 -146
- package/agents/ship-specifier.md +23 -20
- package/agents/ship-splitter.md +24 -21
- package/agents/ship-verifier.md +15 -2
- package/bin/install.js +29 -3
- package/commands/ship/architect.md +17 -8
- package/commands/ship/brainstorm.md +84 -75
- package/commands/ship/execute.md +16 -13
- package/commands/ship/help.md +111 -105
- package/commands/ship/init.md +73 -0
- package/commands/ship/next.md +35 -14
- package/commands/ship/prd.md +16 -7
- package/commands/ship/shape.md +112 -103
- package/commands/ship/specify.md +16 -7
- package/commands/ship/split.md +20 -11
- package/commands/ship/status.md +136 -129
- package/commands/ship/verify.md +13 -10
- package/hooks/check-agent-completion.js +64 -0
- package/hooks/lib/config.js +34 -0
- package/hooks/lib/find-packages.js +37 -0
- package/hooks/lib/parse-frontmatter.js +135 -0
- package/hooks/validate-frontmatter.js +109 -0
- package/hooks/validate-transition.js +136 -0
- package/hooks-settings.json +26 -0
- package/package.json +33 -31
- package/skills/ship-shaping/SKILL.md +151 -151
- package/skills/ship-writing/SKILL.md +152 -152
package/commands/ship/shape.md
CHANGED
|
@@ -1,103 +1,112 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ship:shape
|
|
3
|
-
description: "Lance le shaping d'un package en scopes indépendants"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Commande shape
|
|
7
|
-
|
|
8
|
-
Lance l'agent ship-shaper pour planifier UN package en scopes indépendants avec critères de vérification.
|
|
9
|
-
|
|
10
|
-
## Instructions
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
**
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
1
|
+
---
|
|
2
|
+
name: ship:shape
|
|
3
|
+
description: "Lance le shaping d'un package en scopes indépendants"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Commande shape
|
|
7
|
+
|
|
8
|
+
Lance l'agent ship-shaper pour planifier UN package en scopes indépendants avec critères de vérification.
|
|
9
|
+
|
|
10
|
+
## Instructions
|
|
11
|
+
|
|
12
|
+
### Résolution du projet (PREMIÈRE ÉTAPE)
|
|
13
|
+
|
|
14
|
+
1. Lire `cc-ship.json` à la racine du repo
|
|
15
|
+
2. Résoudre le chemin : `{projectsDir}/{currentProject}/`
|
|
16
|
+
3. Si `cc-ship.json` n'existe pas OU `currentProject` est null → ERREUR : "Lance `/ship:init` ou `/ship:next` d'abord pour initialiser un projet."
|
|
17
|
+
4. Utiliser ce chemin partout au lieu de `.ship/`
|
|
18
|
+
|
|
19
|
+
### Lancement de l'agent
|
|
20
|
+
|
|
21
|
+
Tu dois lancer l'agent `ship-shaper` en utilisant le tool Task avec les paramètres suivants:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
subagent_type: ship-shaper
|
|
25
|
+
prompt: "Le chemin du projet est {projectPath}. [Le nom du package à shaper ou 'Demande quel package shaper']"
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Prérequis
|
|
29
|
+
|
|
30
|
+
Avant de lancer l'agent, vérifie que ces fichiers existent :
|
|
31
|
+
|
|
32
|
+
| Fichier | Obligatoire | Créé par |
|
|
33
|
+
|---------|-------------|----------|
|
|
34
|
+
| `{projectPath}/packages/mapping.md` | Oui | splitter |
|
|
35
|
+
| `{projectPath}/prd.md` | Oui | brainstormer-prd |
|
|
36
|
+
| `{projectPath}/architecture.md` | Oui | architect |
|
|
37
|
+
| `{projectPath}/requirements.md` | Oui | specifier |
|
|
38
|
+
|
|
39
|
+
Si un fichier manque, indique à l'utilisateur quelle commande lancer :
|
|
40
|
+
- Pas de mapping.md → `/ship:split`
|
|
41
|
+
- Pas de prd.md → `/ship:prd`
|
|
42
|
+
- Pas d'architecture.md → `/ship:architect`
|
|
43
|
+
- Pas de requirements.md → `/ship:specify`
|
|
44
|
+
|
|
45
|
+
## Comportement de relais (IMPORTANT)
|
|
46
|
+
|
|
47
|
+
Tu es un **relais transparent** entre l'agent et l'utilisateur.
|
|
48
|
+
|
|
49
|
+
Quand l'agent te retourne une question pour l'utilisateur :
|
|
50
|
+
1. **Utilise `AskUserQuestion`** pour la poser exactement comme l'agent l'a formulée
|
|
51
|
+
2. Récupère la réponse de l'utilisateur
|
|
52
|
+
3. Relance l'agent avec cette réponse
|
|
53
|
+
|
|
54
|
+
**Ce que tu ne fais JAMAIS** :
|
|
55
|
+
- Résumer les questions de l'agent
|
|
56
|
+
- Reformuler ce que l'agent demande
|
|
57
|
+
- Répondre à la place de l'utilisateur
|
|
58
|
+
|
|
59
|
+
**Ce que tu fais TOUJOURS** :
|
|
60
|
+
- Utiliser AskUserQuestion avec la question exacte de l'agent
|
|
61
|
+
- Passer la réponse de l'utilisateur à l'agent
|
|
62
|
+
- Continuer jusqu'à ce que l'agent ait terminé
|
|
63
|
+
|
|
64
|
+
## Comportement attendu
|
|
65
|
+
|
|
66
|
+
1. **Vérifier les prérequis** : mapping.md, prd.md, architecture.md, requirements.md
|
|
67
|
+
|
|
68
|
+
2. **Identifier le package** :
|
|
69
|
+
- Si un nom de package est fourni en argument → utiliser ce package
|
|
70
|
+
- Sinon → l'agent demandera lequel shaper
|
|
71
|
+
|
|
72
|
+
3. **Lancer l'agent ship-shaper** qui va :
|
|
73
|
+
- Lire le mapping et les inputs globaux
|
|
74
|
+
- Extraire les exigences pertinentes
|
|
75
|
+
- Proposer un découpage en scopes (validation utilisateur)
|
|
76
|
+
- Définir les must-haves par scope
|
|
77
|
+
- Définir les critères de vérification
|
|
78
|
+
- Produire package.md et verification.md
|
|
79
|
+
|
|
80
|
+
## Syntaxe
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
/ship:shape
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Shape un package (l'agent demandera lequel si plusieurs dans le mapping).
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
/ship:shape auth
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Shape le package "auth" spécifiquement.
|
|
93
|
+
|
|
94
|
+
## Output
|
|
95
|
+
|
|
96
|
+
Le package sera planifié dans `{projectPath}/packages/<nom-package>/` avec :
|
|
97
|
+
- `package.md` : Vision, scopes, truths, artifacts, key links
|
|
98
|
+
- `verification.md` : Critères de vérification par scope
|
|
99
|
+
|
|
100
|
+
## Exemples
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
/ship:shape
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Lance le shaping. Si le mapping contient plusieurs packages, l'agent demande lequel shaper.
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
/ship:shape dashboard
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Shape directement le package "dashboard".
|
package/commands/ship/specify.md
CHANGED
|
@@ -9,19 +9,28 @@ Transforme un PRD existant en Software Requirements Specification (SRS) formel.
|
|
|
9
9
|
|
|
10
10
|
## Instructions
|
|
11
11
|
|
|
12
|
+
### Resolution du projet (PREMIERE ETAPE)
|
|
13
|
+
|
|
14
|
+
1. Lire `cc-ship.json` a la racine du repo
|
|
15
|
+
2. Resoudre le chemin : `{projectsDir}/{currentProject}/`
|
|
16
|
+
3. Si `cc-ship.json` n'existe pas OU `currentProject` est null → ERREUR : "Lance `/ship:init` ou `/ship:next` d'abord pour initialiser un projet."
|
|
17
|
+
4. Utiliser ce chemin partout au lieu de `.ship/`
|
|
18
|
+
|
|
19
|
+
### Lancement de l'agent
|
|
20
|
+
|
|
12
21
|
Tu dois lancer l'agent `ship-specifier` en utilisant le tool Task avec les parametres suivants:
|
|
13
22
|
|
|
14
23
|
```
|
|
15
24
|
subagent_type: ship-specifier
|
|
16
|
-
prompt: [Le contexte de l'utilisateur ou
|
|
25
|
+
prompt: "Le chemin du projet est {projectPath}. [Le contexte de l'utilisateur ou 'Transforme le PRD en requirements']"
|
|
17
26
|
```
|
|
18
27
|
|
|
19
28
|
## Prerequis
|
|
20
29
|
|
|
21
|
-
Un PRD doit exister dans
|
|
30
|
+
Un PRD doit exister dans `{projectPath}/prd.md`.
|
|
22
31
|
|
|
23
32
|
**Si aucun PRD n'existe** :
|
|
24
|
-
> "Je ne trouve pas de PRD dans
|
|
33
|
+
> "Je ne trouve pas de PRD dans `{projectPath}/prd.md`. Lance d'abord `/ship:prd` pour creer un PRD, puis reviens ici."
|
|
25
34
|
|
|
26
35
|
## Comportement de relais (IMPORTANT)
|
|
27
36
|
|
|
@@ -45,13 +54,13 @@ Quand l'agent te retourne une question pour l'utilisateur :
|
|
|
45
54
|
|
|
46
55
|
## Comportement attendu
|
|
47
56
|
|
|
48
|
-
1. Verifier que
|
|
57
|
+
1. Verifier que `{projectPath}/prd.md` existe
|
|
49
58
|
2. L'agent va:
|
|
50
59
|
- Lire le PRD et la research (si presente)
|
|
51
60
|
- Extraire les exigences fonctionnelles, non-fonctionnelles et contraintes
|
|
52
61
|
- Poser des questions pour clarifier les ambiguites
|
|
53
62
|
- Prioriser avec MoSCoW (Must/Should/Could/Won't)
|
|
54
|
-
- Produire un SRS structure dans
|
|
63
|
+
- Produire un SRS structure dans `{projectPath}/requirements.md`
|
|
55
64
|
|
|
56
65
|
## Exemple d'utilisation
|
|
57
66
|
|
|
@@ -61,8 +70,8 @@ Quand l'agent te retourne une question pour l'utilisateur :
|
|
|
61
70
|
|
|
62
71
|
## Output
|
|
63
72
|
|
|
64
|
-
**Fichier genere** :
|
|
65
|
-
-
|
|
73
|
+
**Fichier genere** (dans le dossier projet) :
|
|
74
|
+
- `requirements.md` : Le Software Requirements Specification
|
|
66
75
|
|
|
67
76
|
**Structure du requirements.md** :
|
|
68
77
|
- Meta (version, date, source, statut)
|
package/commands/ship/split.md
CHANGED
|
@@ -9,11 +9,20 @@ Decoupe le projet en packages livrables et cree le mapping exigences <-> package
|
|
|
9
9
|
|
|
10
10
|
## Instructions
|
|
11
11
|
|
|
12
|
+
### Resolution du projet (PREMIERE ETAPE)
|
|
13
|
+
|
|
14
|
+
1. Lire `cc-ship.json` a la racine du repo
|
|
15
|
+
2. Resoudre le chemin : `{projectsDir}/{currentProject}/`
|
|
16
|
+
3. Si `cc-ship.json` n'existe pas OU `currentProject` est null → ERREUR : "Lance `/ship:init` ou `/ship:next` d'abord pour initialiser un projet."
|
|
17
|
+
4. Utiliser ce chemin partout au lieu de `.ship/`
|
|
18
|
+
|
|
19
|
+
### Lancement de l'agent
|
|
20
|
+
|
|
12
21
|
Tu dois lancer l'agent `ship-splitter` en utilisant le tool Task avec les parametres suivants:
|
|
13
22
|
|
|
14
23
|
```
|
|
15
24
|
subagent_type: ship-splitter
|
|
16
|
-
prompt: [Le contexte de l'utilisateur ou
|
|
25
|
+
prompt: "Le chemin du projet est {projectPath}. [Le contexte de l'utilisateur ou 'Decoupe le projet en packages livrables']"
|
|
17
26
|
```
|
|
18
27
|
|
|
19
28
|
## Syntaxe
|
|
@@ -26,18 +35,18 @@ prompt: [Le contexte de l'utilisateur ou "Decoupe le projet en packages livrable
|
|
|
26
35
|
|
|
27
36
|
Les fichiers suivants doivent exister :
|
|
28
37
|
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
38
|
+
- `{projectPath}/requirements.md` (obligatoire)
|
|
39
|
+
- `{projectPath}/architecture.md` (obligatoire)
|
|
40
|
+
- `{projectPath}/prd.md` (recommande)
|
|
32
41
|
|
|
33
42
|
**Si requirements.md n'existe pas** :
|
|
34
|
-
> "Je ne trouve pas de requirements dans
|
|
43
|
+
> "Je ne trouve pas de requirements dans `{projectPath}/requirements.md`. Lance d'abord `/ship:specify` pour creer les requirements, puis reviens ici."
|
|
35
44
|
|
|
36
45
|
**Si architecture.md n'existe pas** :
|
|
37
|
-
> "Je ne trouve pas d'architecture dans
|
|
46
|
+
> "Je ne trouve pas d'architecture dans `{projectPath}/architecture.md`. Lance d'abord `/ship:architect` pour definir l'architecture, puis reviens ici."
|
|
38
47
|
|
|
39
48
|
**Si le PRD n'existe pas** :
|
|
40
|
-
> "Note: Je ne trouve pas de PRD dans
|
|
49
|
+
> "Note: Je ne trouve pas de PRD dans `{projectPath}/prd.md`. Je vais travailler avec les requirements et l'architecture uniquement."
|
|
41
50
|
|
|
42
51
|
## Comportement de relais (IMPORTANT)
|
|
43
52
|
|
|
@@ -61,7 +70,7 @@ Quand l'agent te retourne une question pour l'utilisateur :
|
|
|
61
70
|
|
|
62
71
|
## Comportement attendu
|
|
63
72
|
|
|
64
|
-
1. Verifier que
|
|
73
|
+
1. Verifier que `{projectPath}/requirements.md` et `{projectPath}/architecture.md` existent
|
|
65
74
|
2. L'agent va:
|
|
66
75
|
- Lire les requirements, architecture et PRD (si present)
|
|
67
76
|
- Identifier les frontieres naturelles
|
|
@@ -70,7 +79,7 @@ Quand l'agent te retourne une question pour l'utilisateur :
|
|
|
70
79
|
- Creer le mapping exigences <-> packages
|
|
71
80
|
- Identifier les dependances entre packages
|
|
72
81
|
- Suggerer l'ordre d'implementation
|
|
73
|
-
- Produire le mapping dans
|
|
82
|
+
- Produire le mapping dans `{projectPath}/packages/mapping.md`
|
|
74
83
|
|
|
75
84
|
## Exemple d'utilisation
|
|
76
85
|
|
|
@@ -80,8 +89,8 @@ Quand l'agent te retourne une question pour l'utilisateur :
|
|
|
80
89
|
|
|
81
90
|
## Output
|
|
82
91
|
|
|
83
|
-
**Fichier genere** :
|
|
84
|
-
-
|
|
92
|
+
**Fichier genere** (dans le dossier projet) :
|
|
93
|
+
- `packages/mapping.md` : Le document de mapping
|
|
85
94
|
|
|
86
95
|
**Structure du mapping.md** :
|
|
87
96
|
- Vue d'ensemble (nombre de packages, approche de decoupage)
|
package/commands/ship/status.md
CHANGED
|
@@ -1,129 +1,136 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ship:status
|
|
3
|
-
description: "Affiche l'état du projet ship et recommande l'étape suivante"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Commande status
|
|
7
|
-
|
|
8
|
-
Affiche l'état actuel du projet ship et recommande la prochaine étape.
|
|
9
|
-
|
|
10
|
-
## Instructions
|
|
11
|
-
|
|
12
|
-
###
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
→
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
[
|
|
99
|
-
[
|
|
100
|
-
[
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
|
120
|
-
|
|
121
|
-
|
|
|
122
|
-
|
|
|
123
|
-
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
1
|
+
---
|
|
2
|
+
name: ship:status
|
|
3
|
+
description: "Affiche l'état du projet ship et recommande l'étape suivante"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Commande status
|
|
7
|
+
|
|
8
|
+
Affiche l'état actuel du projet ship et recommande la prochaine étape.
|
|
9
|
+
|
|
10
|
+
## Instructions
|
|
11
|
+
|
|
12
|
+
### Résolution du projet (PREMIÈRE ÉTAPE)
|
|
13
|
+
|
|
14
|
+
1. Lire `cc-ship.json` à la racine du repo
|
|
15
|
+
2. Résoudre le chemin : `{projectsDir}/{currentProject}/`
|
|
16
|
+
3. Si `cc-ship.json` n'existe pas OU `currentProject` est null → ERREUR : "Lance `/ship:init` ou `/ship:next` d'abord pour initialiser un projet."
|
|
17
|
+
4. Utiliser ce chemin partout au lieu de `.ship/`
|
|
18
|
+
|
|
19
|
+
### Étape 1 : Vérifier les fichiers globaux
|
|
20
|
+
|
|
21
|
+
Vérifie l'existence de chaque fichier dans l'ordre:
|
|
22
|
+
|
|
23
|
+
1. `{projectPath}/` - Le dossier projet existe-t-il?
|
|
24
|
+
2. `{projectPath}/brief.md` - Brief du projet (output brainstormer)
|
|
25
|
+
3. `{projectPath}/research.md` - Recherche domaine (optionnel)
|
|
26
|
+
4. `{projectPath}/prd.md` - Product Requirements Document
|
|
27
|
+
5. `{projectPath}/requirements.md` - Spécifications (SRS)
|
|
28
|
+
6. `{projectPath}/architecture.md` - Architecture technique
|
|
29
|
+
7. `{projectPath}/packages/mapping.md` - Mapping des packages
|
|
30
|
+
|
|
31
|
+
### Étape 2 : Analyser les packages
|
|
32
|
+
|
|
33
|
+
Si `mapping.md` existe, lire son contenu pour identifier les packages.
|
|
34
|
+
|
|
35
|
+
Pour chaque package listé:
|
|
36
|
+
1. Vérifier si le dossier `{projectPath}/packages/<nom>/` existe
|
|
37
|
+
2. Lire le front-matter de `package.md` pour obtenir le status et current_scope
|
|
38
|
+
|
|
39
|
+
### Algorithme de détection
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
1. SI {projectPath}/ n'existe pas
|
|
43
|
+
→ État: "Non initialisé"
|
|
44
|
+
→ Recommandation: /ship:brainstorm
|
|
45
|
+
|
|
46
|
+
2. SI {projectPath}/brief.md n'existe pas
|
|
47
|
+
→ Recommandation: /ship:brainstorm
|
|
48
|
+
|
|
49
|
+
3. SI {projectPath}/prd.md n'existe pas
|
|
50
|
+
→ Recommandation: /ship:prd
|
|
51
|
+
|
|
52
|
+
4. SI {projectPath}/requirements.md n'existe pas
|
|
53
|
+
→ Recommandation: /ship:specify
|
|
54
|
+
|
|
55
|
+
5. SI {projectPath}/architecture.md n'existe pas
|
|
56
|
+
→ Recommandation: /ship:architect
|
|
57
|
+
|
|
58
|
+
6. SI {projectPath}/packages/mapping.md n'existe pas
|
|
59
|
+
→ Recommandation: /ship:split
|
|
60
|
+
|
|
61
|
+
7. SINON analyser les packages par leur front-matter
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Front-matter des packages
|
|
65
|
+
|
|
66
|
+
Format attendu dans `package.md`:
|
|
67
|
+
|
|
68
|
+
```yaml
|
|
69
|
+
---
|
|
70
|
+
status: pending | shaping | shaped | executing | executed | verifying | done
|
|
71
|
+
current_scope: scope-1-auth-basic
|
|
72
|
+
---
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### États possibles d'un package
|
|
76
|
+
|
|
77
|
+
| Status | Description | Recommandation |
|
|
78
|
+
|--------|-------------|----------------|
|
|
79
|
+
| `pending` | Non commencé | /ship:shape <package> |
|
|
80
|
+
| `shaping` | Shaping en cours | /ship:shape <package> |
|
|
81
|
+
| `shaped` | Shape terminé | /ship:execute <package> |
|
|
82
|
+
| `executing` | Exécution en cours | /ship:execute <package> |
|
|
83
|
+
| `executed` | Exécution terminée | /ship:verify <package> |
|
|
84
|
+
| `verifying` | Vérification en cours | /ship:verify <package> |
|
|
85
|
+
| `done` | Package terminé | Passer au suivant |
|
|
86
|
+
|
|
87
|
+
## Format de sortie
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
==========================================
|
|
91
|
+
SHIP STATUS - [Nom Projet]
|
|
92
|
+
==========================================
|
|
93
|
+
|
|
94
|
+
FICHIERS GLOBAUX
|
|
95
|
+
----------------
|
|
96
|
+
[OK] brief.md Brief du projet
|
|
97
|
+
[OK] research.md Recherche domaine (optionnel)
|
|
98
|
+
[OK] prd.md Product Requirements
|
|
99
|
+
[OK] requirements.md Spécifications (SRS)
|
|
100
|
+
[OK] architecture.md Architecture technique
|
|
101
|
+
[OK] packages/mapping.md Mapping des packages
|
|
102
|
+
|
|
103
|
+
PACKAGES (N)
|
|
104
|
+
------------
|
|
105
|
+
[DONE] auth Scope 3/3 - Terminé
|
|
106
|
+
[EXECUTING] dashboard Scope 2/5 - En cours: scope-2-widgets
|
|
107
|
+
[PENDING] notifications Scope 0/4 - Non commencé
|
|
108
|
+
|
|
109
|
+
==========================================
|
|
110
|
+
PROCHAINE ÉTAPE RECOMMANDÉE:
|
|
111
|
+
/ship:execute dashboard
|
|
112
|
+
|
|
113
|
+
Continuer l'implémentation du scope "scope-2-widgets"
|
|
114
|
+
==========================================
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Recommandations contextualisées
|
|
118
|
+
|
|
119
|
+
| Situation | Message |
|
|
120
|
+
|-----------|---------|
|
|
121
|
+
| Rien n'existe | "Lance `/ship:brainstorm` pour démarrer" |
|
|
122
|
+
| Brief seul | "Lance `/ship:prd` pour créer le PRD" |
|
|
123
|
+
| PRD présent | "Lance `/ship:specify` pour définir les exigences" |
|
|
124
|
+
| Requirements présents | "Lance `/ship:architect` pour définir l'architecture" |
|
|
125
|
+
| Architecture présente | "Lance `/ship:split` pour découper en packages" |
|
|
126
|
+
| Mapping présent, aucun package shapé | "Lance `/ship:shape <premier-package>`" |
|
|
127
|
+
| Package executing | "Continue avec `/ship:execute <package>` (scope: <name>)" |
|
|
128
|
+
| Package executed | "Lance `/ship:verify <package>`" |
|
|
129
|
+
| Vérification failed | "Corrige puis `/ship:execute <package>`" |
|
|
130
|
+
| Tout done | "Tous les packages sont terminés!" |
|
|
131
|
+
|
|
132
|
+
## Notes
|
|
133
|
+
|
|
134
|
+
- Si un front-matter est absent ou malformé, considérer le package comme `pending`
|
|
135
|
+
- Ne pas lister tous les fichiers, juste vérifier l'existence
|
|
136
|
+
- Les messages doivent être clairs et actionnables
|