@autocode-cli/autocode 0.28.1 → 0.36.0

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.
Files changed (194) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_i18n/Ld0h1Adq/en/messages.json +1 -0
  3. package/.output/public/_i18n/Ld0h1Adq/fr/messages.json +1 -0
  4. package/.output/public/_nuxt/00BWY9Ij.js +10 -0
  5. package/.output/public/_nuxt/{DqQxVbWA.js → 48RFRq_I.js} +1 -1
  6. package/.output/public/_nuxt/{AM5G3Gb5.js → 6gOFoOBv.js} +1 -1
  7. package/.output/public/_nuxt/7sR_btEk.js +1 -0
  8. package/.output/public/_nuxt/{DVrAHktU.js → Amqf1SBE.js} +1 -1
  9. package/.output/public/_nuxt/{B2zBdK3d.js → B0yQK1au.js} +1 -1
  10. package/.output/public/_nuxt/{DDhcSt_S.js → B3JaNZxX.js} +1 -1
  11. package/.output/public/_nuxt/{BHVpJd4P.js → BAAiS_qy.js} +1 -1
  12. package/.output/public/_nuxt/{hAo59O9E.js → BAOdxXv4.js} +1 -1
  13. package/.output/public/_nuxt/BGJFtQgK.js +1 -0
  14. package/.output/public/_nuxt/BMQOAvhP.js +1 -0
  15. package/.output/public/_nuxt/{CebUck3P.js → BPxDXB13.js} +1 -1
  16. package/.output/public/_nuxt/{Cm0Kz8KR.js → BQMX0Vtg.js} +1 -1
  17. package/.output/public/_nuxt/{H1ZdG1j9.js → BQPgjGfs.js} +1 -1
  18. package/.output/public/_nuxt/{BQNoAdwZ.js → BRNVrR0Q.js} +1 -1
  19. package/.output/public/_nuxt/{DUmRoRZn.js → BRR7H4VZ.js} +1 -1
  20. package/.output/public/_nuxt/{CPo_B76D.js → BStRXLlp.js} +1 -1
  21. package/.output/public/_nuxt/{D1bOowq2.js → BTUypKON.js} +1 -1
  22. package/.output/public/_nuxt/{Dg0UerBw.js → BZ5eH4oZ.js} +1 -1
  23. package/.output/public/_nuxt/{CTBcrkyt.js → BcjH67ba.js} +1 -1
  24. package/.output/public/_nuxt/{BeGyjVK0.js → BrtBSWOq.js} +1 -1
  25. package/.output/public/_nuxt/{E6PL7Nzd.js → C0Gbbife.js} +1 -1
  26. package/.output/public/_nuxt/{DrakT86i.js → C9P-GWig.js} +1 -1
  27. package/.output/public/_nuxt/{xpS189GL.js → C9Q_XE2y.js} +1 -1
  28. package/.output/public/_nuxt/{BPzjv_6i.js → CCEPkO9Q.js} +1 -1
  29. package/.output/public/_nuxt/{Dh-Zeb3O.js → CFJDHFu0.js} +1 -1
  30. package/.output/public/_nuxt/{Bpmmm66_.js → CFQXrjRh.js} +1 -1
  31. package/.output/public/_nuxt/{sXDQPz8X.js → CGNl3nJG.js} +1 -1
  32. package/.output/public/_nuxt/{Cx_L8WQj.js → CKjR6Oik.js} +1 -1
  33. package/.output/public/_nuxt/{B9C0HWuW.js → CTLXeCVr.js} +1 -1
  34. package/.output/public/_nuxt/{BWz5jw0L.js → CXfoqgHV.js} +1 -1
  35. package/.output/public/_nuxt/{5FWvGp_V.js → CZAptABr.js} +1 -1
  36. package/.output/public/_nuxt/{DGllJptg.js → CaT6Gmvd.js} +1 -1
  37. package/.output/public/_nuxt/{C2GaASXz.js → CeKi_uUO.js} +1 -1
  38. package/.output/public/_nuxt/CercIbuG.js +1 -0
  39. package/.output/public/_nuxt/{D8OjLiok.js → CgTGeNUg.js} +1 -1
  40. package/.output/public/_nuxt/{Dk0kqhok.js → ChtvGXKc.js} +1 -1
  41. package/.output/public/_nuxt/{Dn7Pqpyg.js → CkQJAsUV.js} +1 -1
  42. package/.output/public/_nuxt/{DBPjp5rm.js → CnBvzpvA.js} +1 -1
  43. package/.output/public/_nuxt/{D5ooCSL9.js → Co4zaoac.js} +1 -1
  44. package/.output/public/_nuxt/CouFgKW5.js +1 -0
  45. package/.output/public/_nuxt/{Ch6U-XfV.js → CpoLuEmz.js} +1 -1
  46. package/.output/public/_nuxt/{xPRPCEbj.js → Cpxhv8Qg.js} +1 -1
  47. package/.output/public/_nuxt/{BVJEdOBz.js → D45sR6CZ.js} +1 -1
  48. package/.output/public/_nuxt/{Dq2LFE1d.js → DAGJ7zg9.js} +1 -1
  49. package/.output/public/_nuxt/{CEVkryQZ.js → DAlNcmKB.js} +1 -1
  50. package/.output/public/_nuxt/{C6NP8L7w.js → DDNH3Fq2.js} +1 -1
  51. package/.output/public/_nuxt/{C7oKuzsd.js → DQwsIvTZ.js} +1 -1
  52. package/.output/public/_nuxt/{CKs1TwM-.js → DRMwpGCv.js} +1 -1
  53. package/.output/public/_nuxt/{7OrNJZ8q.js → DYqWq1Vn.js} +1 -1
  54. package/.output/public/_nuxt/Dfr112Jw.js +1 -0
  55. package/.output/public/_nuxt/{D2RHUlLB.js → DkJTip7e.js} +1 -1
  56. package/.output/public/_nuxt/{BTpkhX3G.js → Dob4oaN0.js} +1 -1
  57. package/.output/public/_nuxt/{B1Etvs3c.js → DpYdB9MN.js} +1 -1
  58. package/.output/public/_nuxt/{DDBIX1Ge.js → DxNPZ1bU.js} +1 -1
  59. package/.output/public/_nuxt/{BsL_VgkM.js → I5zwxUB4.js} +1 -1
  60. package/.output/public/_nuxt/{DHK6Urm7.js → NIeoUmDE.js} +1 -1
  61. package/.output/public/_nuxt/{DadxcRMs.js → NVsyChWu.js} +1 -1
  62. package/.output/public/_nuxt/SK7I1OsC.js +1 -0
  63. package/.output/public/_nuxt/{CBV4OF4H.js → Wm7exVxY.js} +1 -1
  64. package/.output/public/_nuxt/{CWOdQCPj.js → _hRtkQ2r.js} +1 -1
  65. package/.output/public/_nuxt/builds/latest.json +1 -1
  66. package/.output/public/_nuxt/builds/meta/eddd3f97-dfcd-4aa3-a8e7-9f432f427e6d.json +1 -0
  67. package/.output/public/_nuxt/cIYz9vRR.js +1 -0
  68. package/.output/public/_nuxt/cli.D68WAxVv.css +1 -0
  69. package/.output/public/_nuxt/{2UKQ6Srj.js → ge5HoFHn.js} +3 -3
  70. package/.output/public/_nuxt/{index.Dndk3KN9.css → index.B-MCQhP8.css} +1 -1
  71. package/.output/public/_nuxt/index.CPvzWVwd.css +1 -0
  72. package/.output/public/_nuxt/{BZwqSlWD.js → ivFMXWZI.js} +1 -1
  73. package/.output/public/_nuxt/kdqZYFE6.js +1 -0
  74. package/.output/public/_nuxt/{Dye3__N7.js → nSLZfjDc.js} +3 -3
  75. package/.output/public/_nuxt/new.84MgEEsd.css +1 -0
  76. package/.output/public/_nuxt/prompt.CNw9EZnJ.css +1 -0
  77. package/.output/public/_nuxt/{CGLkc3In.js → t7k_e5FQ.js} +1 -1
  78. package/.output/public/_nuxt/{CNa2gyMe.js → uL1fX62J.js} +1 -1
  79. package/.output/public/_payload.json +1 -1
  80. package/.output/public/api/_openapi.json +1 -1
  81. package/.output/public/docs/api/_payload.json +1 -1
  82. package/.output/public/docs/api/index.html +8 -4
  83. package/.output/public/docs/cli/_payload.json +1 -1
  84. package/.output/public/docs/cli/index.html +13 -13
  85. package/.output/public/index.html +1 -1
  86. package/.output/server/chunks/_/en.mjs +5 -1
  87. package/.output/server/chunks/_/en.mjs.map +1 -1
  88. package/.output/server/chunks/_/fr.mjs +5 -1
  89. package/.output/server/chunks/_/fr.mjs.map +1 -1
  90. package/.output/server/chunks/build/LandingFooter-styles.CudcJSR4.mjs +8 -0
  91. package/.output/server/chunks/build/LandingFooter-styles.CudcJSR4.mjs.map +1 -0
  92. package/.output/server/chunks/build/{cli-CZwbcgW5.mjs → cli-S2geGQoF.mjs} +27 -14
  93. package/.output/server/chunks/build/cli-S2geGQoF.mjs.map +1 -0
  94. package/.output/server/chunks/build/cli-styles.BonhH80m.mjs +8 -0
  95. package/.output/server/chunks/build/cli-styles.BonhH80m.mjs.map +1 -0
  96. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  97. package/.output/server/chunks/build/{en-BwRtQJL1.mjs → en-BhagfGAQ.mjs} +6 -2
  98. package/.output/server/chunks/build/{en-BwRtQJL1.mjs.map → en-BhagfGAQ.mjs.map} +1 -1
  99. package/.output/server/chunks/build/{fr-BAbxj8tA.mjs → fr-12bubW4G.mjs} +6 -2
  100. package/.output/server/chunks/build/{fr-BAbxj8tA.mjs.map → fr-12bubW4G.mjs.map} +1 -1
  101. package/.output/server/chunks/build/{index-CKZ58Ox2.mjs → index-BZJzUQ3B.mjs} +27 -17
  102. package/.output/server/chunks/build/index-BZJzUQ3B.mjs.map +1 -0
  103. package/.output/server/chunks/build/index-styles.BP9liX_F.mjs +8 -0
  104. package/.output/server/chunks/build/index-styles.BP9liX_F.mjs.map +1 -0
  105. package/.output/server/chunks/build/{index-3KvoAMZW.mjs → index-tBZcd_Xi.mjs} +78 -182
  106. package/.output/server/chunks/build/index-tBZcd_Xi.mjs.map +1 -0
  107. package/.output/server/chunks/build/{new-BI12IpeK.mjs → new-BqYiaSD7.mjs} +19 -19
  108. package/.output/server/chunks/build/{new-BI12IpeK.mjs.map → new-BqYiaSD7.mjs.map} +1 -1
  109. package/.output/server/chunks/build/new-styles.BPjkN6Iy.mjs +8 -0
  110. package/.output/server/chunks/build/new-styles.BPjkN6Iy.mjs.map +1 -0
  111. package/.output/server/chunks/build/{prompt-BjvwrM-J.mjs → prompt-D-xu1MtO.mjs} +41 -12
  112. package/.output/server/chunks/build/prompt-D-xu1MtO.mjs.map +1 -0
  113. package/.output/server/chunks/build/prompt-styles.Dvlc6Xra.mjs +8 -0
  114. package/.output/server/chunks/build/prompt-styles.Dvlc6Xra.mjs.map +1 -0
  115. package/.output/server/chunks/build/server.mjs +9 -9
  116. package/.output/server/chunks/build/styles.mjs +15 -21
  117. package/.output/server/chunks/nitro/nitro.mjs +545 -515
  118. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  119. package/.output/server/chunks/routes/.well-known/appspecific/_...path_.mjs +34 -0
  120. package/.output/server/chunks/routes/.well-known/appspecific/_...path_.mjs.map +1 -0
  121. package/.output/server/chunks/routes/api/issues/_id/history.get.mjs +3 -2
  122. package/.output/server/chunks/routes/api/issues/_id/history.get.mjs.map +1 -1
  123. package/.output/server/node_modules/.prisma/client/index.js +4 -3
  124. package/.output/server/node_modules/.prisma/client/package.json +1 -1
  125. package/.output/server/package.json +1 -1
  126. package/bin/autocode +176 -4
  127. package/package.json +5 -6
  128. package/prisma/migrations/20260104173538_init/migration.sql +142 -0
  129. package/prisma/migrations/20260104180000_pipeline_versioning/migration.sql +216 -0
  130. package/prisma/migrations/20260104190638_add_column_prompts/migration.sql +50 -0
  131. package/prisma/migrations/20260105120000_remove_column_prompts/migration.sql +3 -0
  132. package/prisma/migrations/20260105150000_normalize_pipeline_names/migration.sql +37 -0
  133. package/prisma/migrations/20260105170000_remove_slug_prefixes/migration.sql +16 -0
  134. package/prisma/migrations/migration_lock.toml +3 -0
  135. package/prisma/schema.prisma +185 -0
  136. package/templates/prompts/_transition-decision.en.md +41 -25
  137. package/templates/prompts/_transition-decision.fr.md +28 -11
  138. package/templates/prompts/design.en.md +31 -9
  139. package/templates/prompts/design.fr.md +31 -9
  140. package/templates/prompts/git-tag.en.md +47 -11
  141. package/templates/prompts/git-tag.fr.md +47 -11
  142. package/templates/prompts/in-progress.en.md +43 -9
  143. package/templates/prompts/in-progress.fr.md +44 -10
  144. package/templates/prompts/qualification.en.md +48 -17
  145. package/templates/prompts/qualification.fr.md +48 -17
  146. package/templates/prompts/retest-cypress.en.md +14 -3
  147. package/templates/prompts/retest-cypress.fr.md +14 -3
  148. package/templates/prompts/review-security.en.md +35 -6
  149. package/templates/prompts/review-security.fr.md +35 -6
  150. package/templates/prompts/specification.en.md +29 -7
  151. package/templates/prompts/specification.fr.md +29 -7
  152. package/templates/prompts/splitter.en.md +50 -28
  153. package/templates/prompts/splitter.fr.md +52 -31
  154. package/templates/prompts/testing-cypress.en.md +14 -4
  155. package/templates/prompts/testing-cypress.fr.md +14 -4
  156. package/templates/prompts/testing-integration.en.md +39 -3
  157. package/templates/prompts/testing-integration.fr.md +39 -3
  158. package/.output/public/_i18n/1tr7GMXh/en/messages.json +0 -1
  159. package/.output/public/_i18n/1tr7GMXh/fr/messages.json +0 -1
  160. package/.output/public/_nuxt/BLgRKHG3.js +0 -1
  161. package/.output/public/_nuxt/Bn3kTsBm.js +0 -1
  162. package/.output/public/_nuxt/D1HszwGo.js +0 -1
  163. package/.output/public/_nuxt/D3gNfEFX.js +0 -1
  164. package/.output/public/_nuxt/DYSILRDe.js +0 -1
  165. package/.output/public/_nuxt/F0VLILv_.js +0 -1
  166. package/.output/public/_nuxt/_bAHEawb.js +0 -1
  167. package/.output/public/_nuxt/builds/meta/869ae272-5034-4cd9-bcf3-c435cd504497.json +0 -1
  168. package/.output/public/_nuxt/cli.e1u7fwy6.css +0 -1
  169. package/.output/public/_nuxt/eYN6S-_a.js +0 -1
  170. package/.output/public/_nuxt/index.COVdL_Kx.css +0 -1
  171. package/.output/public/_nuxt/new.BFERdqdm.css +0 -1
  172. package/.output/public/_nuxt/prompt.DZ0wdOji.css +0 -1
  173. package/.output/public/_nuxt/x-ybRJG0.js +0 -10
  174. package/.output/public/_nuxt/xFbyDfcC.js +0 -1
  175. package/.output/server/chunks/build/LandingArchitecture-styles.Don6ug3a.mjs +0 -8
  176. package/.output/server/chunks/build/LandingArchitecture-styles.Don6ug3a.mjs.map +0 -1
  177. package/.output/server/chunks/build/LandingDocs-styles.FyNL7DNS.mjs +0 -8
  178. package/.output/server/chunks/build/LandingDocs-styles.FyNL7DNS.mjs.map +0 -1
  179. package/.output/server/chunks/build/LandingFooter-styles.sSpn5cgM.mjs +0 -8
  180. package/.output/server/chunks/build/LandingFooter-styles.sSpn5cgM.mjs.map +0 -1
  181. package/.output/server/chunks/build/LandingRoadmap-styles.DX5EsTsx.mjs +0 -8
  182. package/.output/server/chunks/build/LandingRoadmap-styles.DX5EsTsx.mjs.map +0 -1
  183. package/.output/server/chunks/build/cli-CZwbcgW5.mjs.map +0 -1
  184. package/.output/server/chunks/build/cli-styles.CSdcLhw8.mjs +0 -8
  185. package/.output/server/chunks/build/cli-styles.CSdcLhw8.mjs.map +0 -1
  186. package/.output/server/chunks/build/index-3KvoAMZW.mjs.map +0 -1
  187. package/.output/server/chunks/build/index-CKZ58Ox2.mjs.map +0 -1
  188. package/.output/server/chunks/build/index-styles.BJ7kZO7q.mjs +0 -8
  189. package/.output/server/chunks/build/index-styles.BJ7kZO7q.mjs.map +0 -1
  190. package/.output/server/chunks/build/new-styles.Chk5u_6M.mjs +0 -8
  191. package/.output/server/chunks/build/new-styles.Chk5u_6M.mjs.map +0 -1
  192. package/.output/server/chunks/build/prompt-BjvwrM-J.mjs.map +0 -1
  193. package/.output/server/chunks/build/prompt-styles.DWfublIG.mjs +0 -8
  194. package/.output/server/chunks/build/prompt-styles.DWfublIG.mjs.map +0 -1
@@ -2,29 +2,60 @@
2
2
 
3
3
  ## Role
4
4
 
5
- Analyser et qualifier le besoin du ticket. S'assurer que la demande est claire, faisable et correctement delimitee.
5
+ Explorer le codebase et reformuler le ticket pour produire une specification claire et sans ambiguite. Ce mode est similaire au "plan mode" : comprendre le contexte existant puis clarifier precisement ce qui doit etre fait.
6
+
7
+ **IMPORTANT** : Le client est roi. Ne JAMAIS juger si une feature "appartient" au projet ou non. Ton role est de clarifier et specifier, pas de filtrer les demandes.
6
8
 
7
9
  ## Actions
8
10
 
9
- 1. Lire la description du ticket et les criteres d'acceptation
10
- 2. Identifier les ambiguites ou informations manquantes
11
- 3. Evaluer la faisabilite technique
12
- 4. Estimer la complexite (simple/moyenne/complexe)
13
- 5. Identifier les dependances avec d'autres tickets ou systemes
14
- 6. Si clarification necessaire : ajouter un commentaire avec les questions
15
- 7. Si travail hors scope detecte :
16
- - Legerement hors scope (amelioration mineure, cas limite) : `autocode new "<titre>" "<description>" --priority P2 --labels "<labels>" --acceptance "<criteres>" --semver patch --column ready`
17
- - Tres hors scope (nouvelle feature, changement majeur) : `autocode new "<titre>" "<description>" --priority P2 --labels "<labels>" --acceptance "<criteres>" --semver patch --column backlog`
18
- - Dans le scope : traiter directement dans le ticket actuel
19
- 8. Documenter : `autocode comment <issue-key> "Qualification terminee : <resume>"`
11
+ 1. **Explorer le codebase**
12
+ - Identifier les fichiers et composants qui pourraient etre concernes
13
+ - Comprendre l'architecture existante et les patterns utilises
14
+ - Si c'est une nouvelle feature, identifier ou elle s'integrerait
15
+
16
+ 2. **Reformuler la description**
17
+ - Reecrire la description pour qu'elle soit precise et actionnable
18
+ - Inclure le contexte technique (fichiers existants ou a creer)
19
+ - Lever toute ambiguite sur le comportement attendu
20
+
21
+ 3. **Affiner les criteres d'acceptation**
22
+ - Reformuler chaque critere pour qu'il soit testable et verifiable
23
+ - Ajouter des criteres manquants
24
+ - Preciser les cas limites
25
+
26
+ 4. **Mettre a jour le ticket**
27
+ ```
28
+ autocode edit {key} --description "<nouvelle description>"
29
+ autocode criteria {key} set "<critere1>" "<critere2>" ...
30
+ ```
31
+
32
+ ## Format de commentaire obligatoire
33
+
34
+ Terminer avec :
35
+ ```
36
+ autocode comment {key} "[OK] - Qualification : <resume des clarifications apportees>"
37
+ ```
38
+
39
+ Statuts valides :
40
+ - `[OK]` - Specification clarifiee et ticket mis a jour (cas par defaut)
41
+ - `[BLOCKED]` - UNIQUEMENT si une ambiguite technique bloque (ex: "quelle API utiliser ?", "quel format de donnees ?")
42
+
43
+ **Si BLOCKED, tu DOIS poser une question claire :**
44
+ ```
45
+ autocode comment {key} "[BLOCKED] - Question technique : <ta question precise>"
46
+ ```
47
+
48
+ **NE JAMAIS bloquer pour** :
49
+ - "Cette feature n'appartient pas au projet"
50
+ - "Ceci est hors scope"
51
+ - Toute raison non-technique
20
52
 
21
53
  ## Criteres de Validation
22
54
 
23
- - [ ] Le besoin est clair et sans ambiguite
24
- - [ ] Les criteres d'acceptation sont testables
25
- - [ ] L'approche technique est identifiee
26
- - [ ] Pas de dependances bloquantes
55
+ - [ ] La description est precise et inclut le contexte technique
56
+ - [ ] Les criteres d'acceptation sont testables et complets
57
+ - [ ] Le ticket a ete mis a jour avec la spec clarifiee
27
58
 
28
59
  ## Notes
29
60
 
30
- Un ticket bien qualifie fait gagner du temps en developpement. En cas de doute, demander des clarifications plutot que supposer.
61
+ Une bonne qualification transforme une demande vague en specification actionnable. L'objectif est que le developpeur qui prend le ticket n'ait aucun doute sur ce qu'il doit faire.
@@ -9,12 +9,12 @@ Re-run all automated E2E tests to ensure refactoring did not introduce regressio
9
9
  Before running tests, check if Cypress is applicable:
10
10
 
11
11
  1. **Sandbox feature**: If the feature is in `fake-features/`, it's isolated from the main app
12
- - Comment: `autocode comment {key} "Retest Cypress: SKIP - Sandbox feature isolated in fake-features/, no Cypress tests required"`
12
+ - Comment: `autocode comment {key} "SKIP - Sandbox feature isolated in fake-features/"`
13
13
  - **STOP** - Do not run Cypress tests
14
14
 
15
15
  2. **No specific tests**: Check if Cypress tests exist for this feature
16
16
  - Look in `cypress/e2e/` for files related to the feature
17
- - If no tests found: `autocode comment {key} "Retest Cypress: SKIP - No Cypress tests specific to this feature"`
17
+ - If no tests found: `autocode comment {key} "SKIP - No Cypress tests for this feature"`
18
18
  - **STOP** - Do not run the full suite
19
19
 
20
20
  If the feature IS in the main app AND has Cypress tests, continue with the actions below.
@@ -25,7 +25,18 @@ If the feature IS in the main app AND has Cypress tests, continue with the actio
25
25
  2. Compare results with pre-refactoring run
26
26
  3. If new failures: identify cause (test or code issue)
27
27
  4. Fix any regressions before proceeding
28
- 5. Document: `autocode comment <issue-key> "Retest Cypress: [passed/failed] - <details>"`
28
+
29
+ ## Mandatory Comment Format
30
+
31
+ End with:
32
+ ```
33
+ autocode comment {key} "[OK] - Retest Cypress: X/Y passing, no regressions"
34
+ ```
35
+
36
+ Valid statuses:
37
+ - `[OK]` - All tests passing
38
+ - `[FAILED]` - Tests failing (describe regressions)
39
+ - `SKIP -` - Cypress not applicable (see pre-verification)
29
40
 
30
41
  ## Validation Criteria
31
42
 
@@ -9,12 +9,12 @@ Re-executer tous les tests E2E automatises pour s'assurer que le refactoring n'a
9
9
  Avant d'executer les tests, verifier si Cypress est applicable:
10
10
 
11
11
  1. **Feature sandbox** : Si la feature est dans `fake-features/`, elle est isolee du main app
12
- - Commenter: `autocode comment {key} "Retest Cypress: SKIP - Feature sandbox isolee dans fake-features/, pas de tests Cypress requis"`
12
+ - Commenter: `autocode comment {key} "SKIP - Feature sandbox isolee dans fake-features/"`
13
13
  - **TERMINER** - Ne pas executer de tests Cypress
14
14
 
15
15
  2. **Pas de tests specifiques** : Verifier si des tests Cypress existent pour cette feature
16
16
  - Chercher dans `cypress/e2e/` des fichiers lies a la feature
17
- - Si aucun test trouve: `autocode comment {key} "Retest Cypress: SKIP - Aucun test Cypress specifique pour cette feature"`
17
+ - Si aucun test trouve: `autocode comment {key} "SKIP - Aucun test Cypress pour cette feature"`
18
18
  - **TERMINER** - Ne pas executer la suite complete
19
19
 
20
20
  Si la feature EST dans le main app ET a des tests Cypress, continuer avec les actions ci-dessous.
@@ -25,7 +25,18 @@ Si la feature EST dans le main app ET a des tests Cypress, continuer avec les ac
25
25
  2. Comparer les resultats avec l'execution pre-refactoring
26
26
  3. Si nouveaux echecs : identifier la cause (probleme de test ou de code)
27
27
  4. Corriger toute regression avant de continuer
28
- 5. Documenter : `autocode comment <issue-key> "Retest Cypress : [OK/echecs] - <details>"`
28
+
29
+ ## Format de commentaire obligatoire
30
+
31
+ Terminer avec :
32
+ ```
33
+ autocode comment {key} "[OK] - Retest Cypress : X/Y passants, aucune regression"
34
+ ```
35
+
36
+ Statuts valides :
37
+ - `[OK]` - Tous les tests passent
38
+ - `[FAILED]` - Tests echouent (decrire les regressions)
39
+ - `SKIP -` - Cypress non applicable (voir pre-verification)
29
40
 
30
41
  ## Criteres de Validation
31
42
 
@@ -12,12 +12,41 @@ Security audit. Identify and fix potential vulnerabilities (OWASP Top 10).
12
12
  4. Verify RLS policies if new tables
13
13
  5. Ensure API keys are in .env, never in code
14
14
  6. Audit API calls (injection, XSS)
15
- 7. Fix vulnerabilities
16
- 8. If out of scope work detected:
17
- - Slightly out of scope (minor improvement, edge case): `autocode new "<title>" "<description>" --priority P2 --labels "<labels>" --acceptance "<criteria>" --semver patch --column ready`
18
- - Significantly out of scope (new feature, major change): `autocode new "<title>" "<description>" --priority P2 --labels "<labels>" --acceptance "<criteria>" --semver patch --column backlog`
19
- - In scope: handle directly in current issue
20
- 9. Document: `autocode comment <issue-key> "Security review: [passed/issues found] - <summary>"`
15
+ 7. Fix found vulnerabilities
16
+
17
+ ## Scope Management
18
+
19
+ If out-of-scope work is detected:
20
+
21
+ | Situation | Action |
22
+ |-----------|--------|
23
+ | Quick fix < 30 min, same files | Handle in this ticket |
24
+ | Fix 30min-2h, 1-2 new files | Create child ticket → ready |
25
+ | Major vulnerability > 2h | Create ticket → backlog (P1) |
26
+
27
+ **Commands:**
28
+ - CHILD ticket: `autocode new-child {key} "<title>" "<description>" -p P1 -a "<criterion1>" -a "<criterion2>"`
29
+ - INDEPENDENT ticket: `autocode new "<title>" "<description>" -p P1 -a "<criteria>"`
30
+
31
+ **IMPORTANT**: Never use `autocode new --parent`, use `new-child` instead.
32
+
33
+ ## Mandatory Comment Format
34
+
35
+ End with:
36
+ ```
37
+ autocode comment {key} "[OK] - Security review: no vulnerabilities"
38
+ ```
39
+
40
+ or
41
+
42
+ ```
43
+ autocode comment {key} "[OK] - Security review: X vulnerabilities fixed"
44
+ ```
45
+
46
+ Valid statuses:
47
+ - `[OK]` - Audit complete, no vulnerabilities or all fixed
48
+ - `[FAILED]` - Unfixed vulnerabilities (describe)
49
+ - `[BLOCKED]` - Critical vulnerability needs human intervention
21
50
 
22
51
  ## Validation Criteria
23
52
 
@@ -12,12 +12,41 @@ Audit securite. Identifier et corriger les vulnerabilites potentielles (OWASP To
12
12
  4. Verifier les politiques RLS si nouvelles tables
13
13
  5. S'assurer que les cles API sont dans .env, jamais dans le code
14
14
  6. Auditer les appels API (injection, XSS)
15
- 7. Corriger les vulnerabilites
16
- 8. Si travail hors scope detecte :
17
- - Legerement hors scope (amelioration mineure, cas limite) : `autocode new "<titre>" "<description>" --priority P2 --labels "<labels>" --acceptance "<criteres>" --semver patch --column ready`
18
- - Tres hors scope (nouvelle feature, changement majeur) : `autocode new "<titre>" "<description>" --priority P2 --labels "<labels>" --acceptance "<criteres>" --semver patch --column backlog`
19
- - Dans le scope : traiter directement dans le ticket actuel
20
- 9. Documenter : `autocode comment <issue-key> "Review security : [OK/Problemes] - <resume>"`
15
+ 7. Corriger les vulnerabilites trouvees
16
+
17
+ ## Gestion du scope
18
+
19
+ Si travail hors scope detecte :
20
+
21
+ | Situation | Action |
22
+ |-----------|--------|
23
+ | Fix rapide < 30 min, memes fichiers | Traiter dans ce ticket |
24
+ | Fix 30min-2h, 1-2 nouveaux fichiers | Creer ticket enfant → ready |
25
+ | Vulnerabilite majeure > 2h | Creer ticket → backlog (P1) |
26
+
27
+ **Commandes :**
28
+ - Ticket ENFANT : `autocode new-child {key} "<titre>" "<description>" -p P1 -a "<critere1>" -a "<critere2>"`
29
+ - Ticket INDEPENDANT : `autocode new "<titre>" "<description>" -p P1 -a "<criteres>"`
30
+
31
+ **IMPORTANT** : Ne jamais utiliser `autocode new --parent`, utiliser `new-child` a la place.
32
+
33
+ ## Format de commentaire obligatoire
34
+
35
+ Terminer avec :
36
+ ```
37
+ autocode comment {key} "[OK] - Review security : aucune vulnerabilite"
38
+ ```
39
+
40
+ ou
41
+
42
+ ```
43
+ autocode comment {key} "[OK] - Review security : X vulnerabilites corrigees"
44
+ ```
45
+
46
+ Statuts valides :
47
+ - `[OK]` - Audit termine, pas de vulnerabilite ou toutes corrigees
48
+ - `[FAILED]` - Vulnerabilites non corrigees (decrire)
49
+ - `[BLOCKED]` - Vulnerabilite critique necessite intervention humaine
21
50
 
22
51
  ## Criteres de Validation
23
52
 
@@ -9,14 +9,36 @@ Write detailed technical specifications for the issue. Define the implementation
9
9
  1. Analyze the qualified requirement
10
10
  2. Define the technical architecture/approach
11
11
  3. List files to create or modify
12
- 4. Define data structures if applicable
13
- 5. Specify API contracts if applicable
12
+ 4. Define data structures IF new tables or types
13
+ 5. Specify API contracts IF new endpoints or API modifications
14
14
  6. Document edge cases and error handling
15
- 7. If out of scope work detected:
16
- - Slightly out of scope (minor improvement, edge case): `autocode new "<title>" "<description>" --priority P2 --labels "<labels>" --acceptance "<criteria>" --semver patch --column ready`
17
- - Significantly out of scope (new feature, major change): `autocode new "<title>" "<description>" --priority P2 --labels "<labels>" --acceptance "<criteria>" --semver patch --column backlog`
18
- - In scope: handle directly in current issue
19
- 8. Document: `autocode comment <issue-key> "Specification: [complete/in progress] - <technical approach>"`
15
+
16
+ ## Scope Management
17
+
18
+ If out-of-scope work is detected, use these criteria:
19
+
20
+ | Situation | Action |
21
+ |-----------|--------|
22
+ | Modification < 30 min, same files | Handle in this ticket |
23
+ | Modification 30min-2h, 1-2 new files | Create child ticket → ready |
24
+ | Modification > 2h OR > 3 new files | Create ticket → backlog |
25
+
26
+ **Commands to create tickets:**
27
+ - CHILD ticket (linked to current ticket): `autocode new-child {key} "<title>" "<description>" -p P2 -a "<criterion1>" -a "<criterion2>"`
28
+ - INDEPENDENT ticket: `autocode new "<title>" "<description>" -p P2 -a "<criteria>"`
29
+
30
+ **IMPORTANT**: Never use `autocode new --parent`, use `new-child` instead.
31
+
32
+ ## Mandatory Comment Format
33
+
34
+ End with:
35
+ ```
36
+ autocode comment {key} "[OK] - Specification: <technical approach>"
37
+ ```
38
+
39
+ Valid statuses:
40
+ - `[OK]` - Specification completed successfully
41
+ - `[BLOCKED]` - Need clarification on requirements
20
42
 
21
43
  ## Validation Criteria
22
44
 
@@ -9,14 +9,36 @@ Rediger les specifications techniques detaillees pour le ticket. Definir clairem
9
9
  1. Analyser le besoin qualifie
10
10
  2. Definir l'architecture/approche technique
11
11
  3. Lister les fichiers a creer ou modifier
12
- 4. Definir les structures de donnees si applicable
13
- 5. Specifier les contrats API si applicable
12
+ 4. Definir les structures de donnees SI nouvelles tables ou types
13
+ 5. Specifier les contrats API SI nouveaux endpoints ou modifications d'API
14
14
  6. Documenter les cas limites et la gestion d'erreurs
15
- 7. Si travail hors scope detecte :
16
- - Legerement hors scope (amelioration mineure, cas limite) : `autocode new "<titre>" "<description>" --priority P2 --labels "<labels>" --acceptance "<criteres>" --semver patch --column ready`
17
- - Tres hors scope (nouvelle feature, changement majeur) : `autocode new "<titre>" "<description>" --priority P2 --labels "<labels>" --acceptance "<criteres>" --semver patch --column backlog`
18
- - Dans le scope : traiter directement dans le ticket actuel
19
- 8. Documenter : `autocode comment <issue-key> "Specification : [terminee/en cours] - <approche technique>"`
15
+
16
+ ## Gestion du scope
17
+
18
+ Si travail hors scope detecte, utiliser ces criteres :
19
+
20
+ | Situation | Action |
21
+ |-----------|--------|
22
+ | Modification < 30 min, memes fichiers | Traiter dans ce ticket |
23
+ | Modification 30min-2h, 1-2 nouveaux fichiers | Creer ticket enfant → ready |
24
+ | Modification > 2h OU > 3 nouveaux fichiers | Creer ticket → backlog |
25
+
26
+ **Commandes pour creer des tickets :**
27
+ - Ticket ENFANT (lie au ticket actuel) : `autocode new-child {key} "<titre>" "<description>" -p P2 -a "<critere1>" -a "<critere2>"`
28
+ - Ticket INDEPENDANT : `autocode new "<titre>" "<description>" -p P2 -a "<criteres>"`
29
+
30
+ **IMPORTANT** : Ne jamais utiliser `autocode new --parent`, utiliser `new-child` a la place.
31
+
32
+ ## Format de commentaire obligatoire
33
+
34
+ Terminer avec :
35
+ ```
36
+ autocode comment {key} "[OK] - Specification : <approche technique>"
37
+ ```
38
+
39
+ Statuts valides :
40
+ - `[OK]` - Specification terminee avec succes
41
+ - `[BLOCKED]` - Besoin clarification sur exigences
20
42
 
21
43
  ## Criteres de Validation
22
44
 
@@ -2,49 +2,71 @@
2
2
 
3
3
  ## Role
4
4
 
5
- Break down large requirements into smaller, focused issues **when needed** to limit responsibility and improve traceability. Create atomic tasks that can be independently implemented and verified.
5
+ Evaluate whether the ticket needs to be split into sub-tickets. **By default, DO NOT SPLIT.**
6
6
 
7
- ## When to Split
7
+ ## When NOT to split (majority of cases)
8
8
 
9
- **Use judgment** - splitting is not always necessary:
10
- - **Split** when the task is large, involves multiple components, or would benefit from parallel work
11
- - **Don't split** when the task is small, focused, or already atomic
9
+ - Task achievable in **1-2 days** of dev
10
+ - **Tightly coupled** components (UI + API for the same feature)
11
+ - **Sequential** work (not parallelizable)
12
+ - **Integrated** feature that must be delivered as a whole
13
+ - **Solo** dev working on the task
12
14
 
13
- If the task is small enough to be completed in one go, proceed directly without splitting.
15
+ **When in doubt: DO NOT SPLIT**
16
+
17
+ ## When to split (rare cases)
18
+
19
+ Split **ONLY** if **ALL** these criteria are met:
20
+
21
+ 1. Task estimated at **more than 3 days** of dev
22
+ 2. **Truly independent** components (e.g., DB migration vs frontend vs E2E tests)
23
+ 3. Work **parallelizable** by multiple devs
24
+ 4. Each sub-ticket is **testable and deployable** independently
14
25
 
15
26
  ## Actions
16
27
 
17
- 1. Analyze the requirement to identify distinct functional components
18
- 2. Identify natural boundaries between features, layers, or responsibilities
28
+ 1. Analyze the ticket to evaluate its size and complexity
29
+ 2. Determine if splitting criteria are met
30
+
31
+ ### If splitting is needed (rare)
19
32
 
20
- ### If splitting is needed
33
+ 3. **MANDATORY**: Define 2-4 specific acceptance criteria for each sub-ticket
34
+ 4. Create sub-tickets with the `new-child` command:
21
35
 
22
- 3. Define clear acceptance criteria for each sub-issue
23
- 4. Ensure each split issue is independently testable and deployable
24
- 5. Create sub-issues: `autocode new "<title>" "<description>" --priority P2 --labels "<labels>" --acceptance "<criteria>" --semver patch --column backlog --parent {key}`
25
- 6. Verify no functionality has been forgotten or duplicated across issues
26
- 7. Create an integration issue that references all sub-issues to validate cohesion
27
- 8. Document the split: `autocode comment {key} "Splitter: Issue split into X sub-issues: [list of keys]. Parent issue completed."`
28
- 9. **COMPLETE the parent issue**: `autocode move {key} done`
36
+ ```bash
37
+ autocode new-child {key} "<title>" "<description>" \
38
+ --priority P2 \
39
+ -a "Criterion 1 verifies X works" \
40
+ -a "Criterion 2 verifies Y is correct" \
41
+ -a "Criterion 3 verifies edge cases"
42
+ ```
29
43
 
30
- ### If no splitting is needed
44
+ **IMPORTANT**: Use ONLY `autocode new-child {key}`, never `autocode new --parent`
31
45
 
32
- 3. Document: `autocode comment {key} "Splitter: Atomic task, no splitting needed. Continuing to ready."`
33
- 4. The issue will automatically continue to the next column (ready)
46
+ 5. Create an integration ticket to validate cohesion
47
+ 6. Document: `autocode comment {key} "Splitter: Ticket split into X sub-tickets: [list of keys]. Parent ticket completed."`
48
+ 7. **COMPLETE the parent ticket**: `autocode move {key} done`
49
+
50
+ ### If no splitting needed (normal case)
51
+
52
+ 3. Document: `autocode comment {key} "Splitter: Atomic task (~X days), no splitting needed."`
53
+ 4. The ticket will automatically continue to the next column (ready)
34
54
 
35
55
  ## Validation Criteria
36
56
 
37
57
  ### If split was performed
38
- - [ ] All sub-issues are atomic and independently implementable
39
- - [ ] No functionality from the original requirement has been forgotten
40
- - [ ] An integration issue exists to verify all parts work together cohesively
41
- - [ ] Each sub-issue has clear acceptance criteria
42
- - [ ] The parent issue was moved to `done` via `autocode move {key} done`
43
58
 
44
- ### If no split was needed
45
- - [ ] A comment explains why the task is already atomic
46
- - [ ] The issue will continue normally to ready
59
+ - [ ] Task exceeded 3 days of estimated dev
60
+ - [ ] Components are truly independent
61
+ - [ ] Each sub-ticket has 2-4 concrete acceptance criteria
62
+ - [ ] An integration ticket exists
63
+ - [ ] Parent ticket was moved to `done`
64
+
65
+ ### If no split
66
+
67
+ - [ ] A comment explains why (size, coupling)
68
+ - [ ] Ticket continues to ready
47
69
 
48
70
  ## Notes
49
71
 
50
- Smaller issues reduce cognitive load and merge conflicts. Always create an integration issue to ensure the split parts form a coherent whole.
72
+ **Splitting increases total dev time** (coordination overhead, integration). Only split if parallelism gains clearly outweigh this overhead.
@@ -1,51 +1,72 @@
1
1
  # Splitter
2
2
 
3
- ## Rôle
3
+ ## Role
4
4
 
5
- Découper les besoins trop importants en tickets plus petits et ciblés **si nécessaire** pour limiter la responsabilité et améliorer la traçabilité. Créer des tâches atomiques pouvant être implémentées et vérifiées indépendamment.
5
+ Evaluer si le ticket doit etre decoupe en sous-tickets. **Par defaut, NE PAS DECOUPER.**
6
6
 
7
- ## Quand Découper
7
+ ## Quand NE PAS decouper (cas majoritaire)
8
8
 
9
- **Faire preuve de jugement** - le découpage n'est pas systématique :
10
- - **Découper** quand la tâche est large, implique plusieurs composants, ou bénéficierait d'un travail parallèle
11
- - **Ne pas découper** quand la tâche est petite, ciblée, ou déjà atomique
9
+ - Tache realisable en **1-2 jours** de dev
10
+ - Composants **fortement couples** (UI + API pour la meme feature)
11
+ - Travail **sequentiel** (pas parallelisable)
12
+ - Feature **integree** qui doit etre livree d'un bloc
13
+ - Dev **solo** sur la tache
12
14
 
13
- Si la tâche est suffisamment petite pour être complétée en une fois, procéder directement sans découpage.
15
+ **En cas de doute : NE PAS DECOUPER**
16
+
17
+ ## Quand decouper (cas rare)
18
+
19
+ Decouper **UNIQUEMENT** si **TOUS** ces criteres sont reunis :
20
+
21
+ 1. Tache estimee a **plus de 3 jours** de dev
22
+ 2. Composants **vraiment independants** (ex: migration DB vs frontend vs tests E2E)
23
+ 3. Travail **parallelisable** par plusieurs devs
24
+ 4. Chaque sous-ticket est **testable et deployable** independamment
14
25
 
15
26
  ## Actions
16
27
 
17
- 1. Analyser le besoin pour identifier les composants fonctionnels distincts
18
- 2. Identifier les frontières naturelles entre fonctionnalités, couches ou responsabilités
28
+ 1. Analyser le ticket pour evaluer sa taille et sa complexite
29
+ 2. Identifier si les criteres de decoupage sont reunis
30
+
31
+ ### Si decoupage necessaire (rare)
19
32
 
20
- ### Si découpage nécessaire
33
+ 3. **OBLIGATOIRE** : Definir 2-4 criteres d'acceptation specifiques pour chaque sous-ticket
34
+ 4. Creer les sous-tickets avec la commande `new-child` :
21
35
 
22
- 3. Définir des critères d'acceptation clairs pour chaque sous-ticket
23
- 4. S'assurer que chaque ticket découpé est testable et déployable indépendamment
24
- 5. Créer les sous-tickets : `autocode new "<title>" "<description>" --priority P2 --labels "<labels>" --acceptance "<criteria>" --semver patch --column backlog --parent {key}`
25
- 6. Vérifier qu'aucune fonctionnalité n'a été oubliée ou dupliquée entre les tickets
26
- 7. Créer un ticket d'intégration qui référence tous les sous-tickets pour valider la cohésion
27
- 8. Documenter le découpage : `autocode comment {key} "Splitter: Ticket découpé en X sous-tickets: [liste des clés]. Ticket parent terminé."`
28
- 9. **TERMINER le ticket parent** : `autocode move {key} done`
36
+ ```bash
37
+ autocode new-child {key} "<titre>" "<description>" \
38
+ --priority P2 \
39
+ -a "Critere 1 verifie que X fonctionne" \
40
+ -a "Critere 2 verifie que Y est correct" \
41
+ -a "Critere 3 verifie les cas limites"
42
+ ```
29
43
 
30
- ### Si pas de découpage nécessaire
44
+ **IMPORTANT** : Utiliser UNIQUEMENT `autocode new-child {key}`, jamais `autocode new --parent`
31
45
 
32
- 3. Documenter : `autocode comment {key} "Splitter: Tâche atomique, pas de découpage nécessaire. Continue vers ready."`
46
+ 5. Creer un ticket d'integration pour valider la cohesion
47
+ 6. Documenter : `autocode comment {key} "Splitter: Ticket decoupe en X sous-tickets: [liste des cles]. Ticket parent termine."`
48
+ 7. **TERMINER le ticket parent** : `autocode move {key} done`
49
+
50
+ ### Si pas de decoupage (cas normal)
51
+
52
+ 3. Documenter : `autocode comment {key} "Splitter: Tache atomique (~X jours), pas de decoupage necessaire."`
33
53
  4. Le ticket continuera automatiquement vers la colonne suivante (ready)
34
54
 
35
- ## Critères de Validation
55
+ ## Criteres de Validation
56
+
57
+ ### Si decoupage effectue
58
+
59
+ - [ ] La tache depassait 3 jours de dev estime
60
+ - [ ] Les composants sont vraiment independants
61
+ - [ ] Chaque sous-ticket possede 2-4 criteres d'acceptation concrets
62
+ - [ ] Un ticket d'integration existe
63
+ - [ ] Le ticket parent a ete envoye en `done`
36
64
 
37
- ### Si découpage effectué
38
- - [ ] Tous les sous-tickets sont atomiques et implémentables indépendamment
39
- - [ ] Aucune fonctionnalité du besoin original n'a été oubliée
40
- - [ ] Un ticket d'intégration existe pour vérifier que toutes les parties fonctionnent ensemble
41
- - [ ] Chaque sous-ticket possède des critères d'acceptation clairs
42
- - [ ] Le ticket parent a été envoyé en `done` via `autocode move {key} done`
65
+ ### Si pas de decoupage
43
66
 
44
- ### Si pas de découpage
45
- - [ ] Un commentaire explique pourquoi la tâche est déjà atomique
46
- - [ ] Le ticket continuera normalement vers ready
67
+ - [ ] Un commentaire explique pourquoi (taille, couplage)
68
+ - [ ] Le ticket continue vers ready
47
69
 
48
70
  ## Notes
49
71
 
50
- Les tickets plus petits réduisent la charge cognitive et les conflits de merge. Toujours créer un ticket d'intégration
51
- pour s'assurer que les parties découpées forment un tout cohérent.
72
+ **Le decoupage rallonge le temps de dev total** (overhead de coordination, integration). Ne decouper que si le gain en parallelisme compense largement cet overhead.
@@ -9,12 +9,11 @@ Write AND execute E2E automated tests to prevent regressions.
9
9
  Before writing tests, check if Cypress is applicable:
10
10
 
11
11
  1. **Sandbox feature**: If the feature is in `fake-features/`, it's isolated from the main app
12
- - Sandbox features use Playwright, NOT Cypress
13
- - Comment: `autocode comment {key} "Testing Cypress: SKIP - Sandbox feature in fake-features/, uses Playwright instead"`
12
+ - Comment: `autocode comment {key} "SKIP - Sandbox feature in fake-features/, uses Playwright"`
14
13
  - **STOP** - Do not write Cypress tests
15
14
 
16
15
  2. **Feature without UI integration**: If the feature has no user interface in the main app
17
- - Comment: `autocode comment {key} "Testing Cypress: SKIP - No UI integration in main app"`
16
+ - Comment: `autocode comment {key} "SKIP - No UI integration in main app"`
18
17
  - **STOP** - Do not write Cypress tests
19
18
 
20
19
  If the feature IS in the main app AND requires E2E tests, continue with the actions below.
@@ -28,7 +27,18 @@ If the feature IS in the main app AND requires E2E tests, continue with the acti
28
27
  5. Execute tests: npx cypress run
29
28
  6. If failures: fix tests or code
30
29
  7. Do not write tests for code outside the issue scope
31
- 8. Document: `autocode comment <issue-key> "Cypress tests: [passed/failed] - <details>"`
30
+
31
+ ## Mandatory Comment Format
32
+
33
+ End with:
34
+ ```
35
+ autocode comment {key} "[OK] - Cypress tests: X/Y passing"
36
+ ```
37
+
38
+ Valid statuses:
39
+ - `[OK]` - Tests written and passing
40
+ - `[FAILED]` - Tests failing (describe the problem)
41
+ - `SKIP -` - Cypress not applicable (see pre-verification)
32
42
 
33
43
  ## Validation Criteria
34
44
 
@@ -9,12 +9,11 @@ Rediger ET executer des tests E2E automatises pour prevenir les regressions.
9
9
  Avant d'ecrire des tests, verifier si Cypress est applicable:
10
10
 
11
11
  1. **Feature sandbox** : Si la feature est dans `fake-features/`, elle est isolee du main app
12
- - Les features sandbox utilisent Playwright, PAS Cypress
13
- - Commenter: `autocode comment {key} "Testing Cypress: SKIP - Feature sandbox dans fake-features/, utilise Playwright a la place"`
12
+ - Commenter: `autocode comment {key} "SKIP - Feature sandbox dans fake-features/, utilise Playwright"`
14
13
  - **TERMINER** - Ne pas ecrire de tests Cypress
15
14
 
16
15
  2. **Feature sans integration UI** : Si la feature n'a pas d'interface utilisateur dans l'app principale
17
- - Commenter: `autocode comment {key} "Testing Cypress: SKIP - Pas d'integration UI dans l'app principale"`
16
+ - Commenter: `autocode comment {key} "SKIP - Pas d'integration UI dans l'app principale"`
18
17
  - **TERMINER** - Ne pas ecrire de tests Cypress
19
18
 
20
19
  Si la feature EST dans le main app ET necessite des tests E2E, continuer avec les actions ci-dessous.
@@ -28,7 +27,18 @@ Si la feature EST dans le main app ET necessite des tests E2E, continuer avec le
28
27
  5. Executer les tests : npx cypress run
29
28
  6. Si echecs : corriger les tests ou le code
30
29
  7. Ne pas ecrire de tests pour du code hors scope du ticket
31
- 8. Documenter : `autocode comment <issue-key> "Tests Cypress : [OK/echecs] - <details>"`
30
+
31
+ ## Format de commentaire obligatoire
32
+
33
+ Terminer avec :
34
+ ```
35
+ autocode comment {key} "[OK] - Tests Cypress : X/Y passants"
36
+ ```
37
+
38
+ Statuts valides :
39
+ - `[OK]` - Tests ecrits et passants
40
+ - `[FAILED]` - Tests echouent (decrire le probleme)
41
+ - `SKIP -` - Cypress non applicable (voir pre-verification)
32
42
 
33
43
  ## Criteres de Validation
34
44