@autocode-cli/autocode 0.29.0 → 0.37.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.
- package/.output/nitro.json +1 -1
- package/.output/public/_i18n/Mqu2gZRD/en/messages.json +1 -0
- package/.output/public/_i18n/Mqu2gZRD/fr/messages.json +1 -0
- package/.output/public/_nuxt/-DEWfUYv.js +1 -0
- package/.output/public/_nuxt/{CGH8jYZ3.js → 0VxesDuV.js} +1 -1
- package/.output/public/_nuxt/{Cw9GjiQd.js → 3dDT4orS.js} +1 -1
- package/.output/public/_nuxt/{DJ68wI4q.js → B-L8_kPw.js} +1 -1
- package/.output/public/_nuxt/{WXFPFJGI.js → B6_0bWxd.js} +1 -1
- package/.output/public/_nuxt/B8IBFC6T.js +1 -0
- package/.output/public/_nuxt/{mhFvEihp.js → B9-SkqjX.js} +3 -3
- package/.output/public/_nuxt/{DwEf6snv.js → BBTritm-.js} +1 -1
- package/.output/public/_nuxt/{D2yqkPsk.js → BDW6A7V8.js} +1 -1
- package/.output/public/_nuxt/{CuMOMF74.js → BE1Ftxsu.js} +1 -1
- package/.output/public/_nuxt/BF5itqHW.js +10 -0
- package/.output/public/_nuxt/{c7taDBy4.js → BHpbNCa8.js} +1 -1
- package/.output/public/_nuxt/{CUrMRCov.js → BJGB6i4C.js} +1 -1
- package/.output/public/_nuxt/{ttDeS43_.js → BJnlSHzy.js} +1 -1
- package/.output/public/_nuxt/{Dnk-IiYT.js → BNr40Cyx.js} +1 -1
- package/.output/public/_nuxt/{CftWxl87.js → BP-5A3ad.js} +1 -1
- package/.output/public/_nuxt/{CvtJgrAC.js → BPSRe1xo.js} +1 -1
- package/.output/public/_nuxt/{DV1gbxJr.js → BatC3POU.js} +1 -1
- package/.output/public/_nuxt/{QO28866g.js → BcwrT42V.js} +1 -1
- package/.output/public/_nuxt/{MqYwBbea.js → BmfOZEEG.js} +1 -1
- package/.output/public/_nuxt/BqOlVwUK.js +1 -0
- package/.output/public/_nuxt/{CMirklGN.js → Bx15WLHx.js} +1 -1
- package/.output/public/_nuxt/{s3F7y6k3.js → C1Dh6gFG.js} +1 -1
- package/.output/public/_nuxt/{Bb4iE1RK.js → C1d_VCXk.js} +1 -1
- package/.output/public/_nuxt/{YFXx8Qjo.js → C3g32ML-.js} +1 -1
- package/.output/public/_nuxt/{BiTHsA5D.js → C819KIPL.js} +1 -1
- package/.output/public/_nuxt/{DMLkLSSr.js → CDRiuU72.js} +1 -1
- package/.output/public/_nuxt/{BWuiHx6Z.js → CH4xRPqk.js} +1 -1
- package/.output/public/_nuxt/{Qp3vP2w-.js → CHFxtqug.js} +1 -1
- package/.output/public/_nuxt/{BhOptLaB.js → CHQoxcLf.js} +1 -1
- package/.output/public/_nuxt/CKyM99yH.js +1 -0
- package/.output/public/_nuxt/{2aYBL_7i.js → CORW7tev.js} +1 -1
- package/.output/public/_nuxt/{5c4wy8Fe.js → CQakkP7y.js} +1 -1
- package/.output/public/_nuxt/{C1majTdt.js → CTidC4T0.js} +1 -1
- package/.output/public/_nuxt/CWELpXTp.js +1 -0
- package/.output/public/_nuxt/{C8ykELcI.js → CjND9Y9S.js} +1 -1
- package/.output/public/_nuxt/{eAMnPBdX.js → Cm1brjPJ.js} +1 -1
- package/.output/public/_nuxt/{DUT6s2Vc.js → CohKcwVk.js} +1 -1
- package/.output/public/_nuxt/CpaAmOT1.js +1 -0
- package/.output/public/_nuxt/{BKohRmb3.js → CqtB_OH7.js} +1 -1
- package/.output/public/_nuxt/{DBRrdiDg.js → CvEn06t8.js} +1 -1
- package/.output/public/_nuxt/{D0l9HWst.js → D3FsoLQm.js} +1 -1
- package/.output/public/_nuxt/{ZxHW_Wwi.js → D3uRvzsu.js} +1 -1
- package/.output/public/_nuxt/{c9kaG6Mb.js → D6s--CDK.js} +1 -1
- package/.output/public/_nuxt/{CFO65yNa.js → DL-48EFA.js} +1 -1
- package/.output/public/_nuxt/{a0ULJgSn.js → DPdNpAt1.js} +1 -1
- package/.output/public/_nuxt/DbKMezC2.js +1 -0
- package/.output/public/_nuxt/{W7VQVcj3.js → DjSp0ni5.js} +3 -3
- package/.output/public/_nuxt/{C9F9DISc.js → Dku8fc7v.js} +1 -1
- package/.output/public/_nuxt/{B-SoSAQ-.js → DorDSzHT.js} +1 -1
- package/.output/public/_nuxt/{CtihvsfH.js → DpJr9JIo.js} +1 -1
- package/.output/public/_nuxt/{DS8c6APr.js → DvdVpK92.js} +1 -1
- package/.output/public/_nuxt/{DfzafmDP.js → DyAfzMRU.js} +1 -1
- package/.output/public/_nuxt/{tqfMB__6.js → G3ENYyJJ.js} +1 -1
- package/.output/public/_nuxt/{BvR2cHrU.js → G3RO7xM_.js} +1 -1
- package/.output/public/_nuxt/{BsOUGgHX.js → Q3VbeUEc.js} +1 -1
- package/.output/public/_nuxt/{E037g09h.js → _Lx_e17m.js} +1 -1
- package/.output/public/_nuxt/{DEbgyyF-.js → _S9g-Cdv.js} +1 -1
- package/.output/public/_nuxt/{C_XYgaP4.js → _dIH-mlE.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/cbc2f99e-ecf0-446a-810b-808825114bc3.json +1 -0
- package/.output/public/_nuxt/{BrN48gj6.js → c0R8lEWK.js} +1 -1
- package/.output/public/_nuxt/cli.D68WAxVv.css +1 -0
- package/.output/public/_nuxt/{Dmbsi9xE.js → cm-fPQZs.js} +1 -1
- package/.output/public/_nuxt/{C2MG9-_i.js → hYe2UtEI.js} +1 -1
- package/.output/public/_nuxt/index.B4qqY6WX.css +1 -0
- package/.output/public/_nuxt/index.CPvzWVwd.css +1 -0
- package/.output/public/_nuxt/{Camk5F-_.js → mbPYOeR0.js} +1 -1
- package/.output/public/_nuxt/n-2mvXdi.js +1 -0
- package/.output/public/_nuxt/new.84MgEEsd.css +1 -0
- package/.output/public/_nuxt/prompt.CNw9EZnJ.css +1 -0
- package/.output/public/_nuxt/{CL8Pd5Up.js → qNJDhLpf.js} +1 -1
- package/.output/public/_nuxt/{CDsqJjO8.js → rFVztcxU.js} +1 -1
- package/.output/public/_nuxt/{BG7brVhY.js → up1a6xQr.js} +1 -1
- package/.output/public/_nuxt/x9aAWeiI.js +1 -0
- package/.output/public/_payload.json +1 -1
- package/.output/public/api/_openapi.json +1 -1
- package/.output/public/docs/api/_payload.json +1 -1
- package/.output/public/docs/api/index.html +8 -4
- package/.output/public/docs/cli/_payload.json +1 -1
- package/.output/public/docs/cli/index.html +13 -13
- package/.output/public/index.html +1 -1
- package/.output/server/chunks/_/en.mjs +16 -23
- package/.output/server/chunks/_/en.mjs.map +1 -1
- package/.output/server/chunks/_/fr.mjs +16 -23
- package/.output/server/chunks/_/fr.mjs.map +1 -1
- package/.output/server/chunks/build/LandingAutonomy-styles.Dvel3Juy.mjs +8 -0
- package/.output/server/chunks/build/LandingAutonomy-styles.Dvel3Juy.mjs.map +1 -0
- package/.output/server/chunks/build/LandingFooter-styles.CudcJSR4.mjs +8 -0
- package/.output/server/chunks/build/LandingFooter-styles.CudcJSR4.mjs.map +1 -0
- package/.output/server/chunks/build/LandingPipeline-styles.C8JPQYOV.mjs +8 -0
- package/.output/server/chunks/build/LandingPipeline-styles.C8JPQYOV.mjs.map +1 -0
- package/.output/server/chunks/build/{cli-CZwbcgW5.mjs → cli-S2geGQoF.mjs} +27 -14
- package/.output/server/chunks/build/cli-S2geGQoF.mjs.map +1 -0
- package/.output/server/chunks/build/cli-styles.BonhH80m.mjs +8 -0
- package/.output/server/chunks/build/cli-styles.BonhH80m.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/{en-BwRtQJL1.mjs → en-nHmCjmd_.mjs} +17 -24
- package/.output/server/chunks/build/{en-BwRtQJL1.mjs.map → en-nHmCjmd_.mjs.map} +1 -1
- package/.output/server/chunks/build/{fr-BAbxj8tA.mjs → fr-7FZEU85C.mjs} +17 -24
- package/.output/server/chunks/build/{fr-BAbxj8tA.mjs.map → fr-7FZEU85C.mjs.map} +1 -1
- package/.output/server/chunks/build/{index-CKZ58Ox2.mjs → index-BZJzUQ3B.mjs} +27 -17
- package/.output/server/chunks/build/index-BZJzUQ3B.mjs.map +1 -0
- package/.output/server/chunks/build/{index-3KvoAMZW.mjs → index-DYwGkPcJ.mjs} +92 -275
- package/.output/server/chunks/build/index-DYwGkPcJ.mjs.map +1 -0
- package/.output/server/chunks/build/index-styles.BP9liX_F.mjs +8 -0
- package/.output/server/chunks/build/index-styles.BP9liX_F.mjs.map +1 -0
- package/.output/server/chunks/build/{new-BI12IpeK.mjs → new-BqYiaSD7.mjs} +19 -19
- package/.output/server/chunks/build/{new-BI12IpeK.mjs.map → new-BqYiaSD7.mjs.map} +1 -1
- package/.output/server/chunks/build/new-styles.BPjkN6Iy.mjs +8 -0
- package/.output/server/chunks/build/new-styles.BPjkN6Iy.mjs.map +1 -0
- package/.output/server/chunks/build/{prompt-BjvwrM-J.mjs → prompt-D-xu1MtO.mjs} +41 -12
- package/.output/server/chunks/build/prompt-D-xu1MtO.mjs.map +1 -0
- package/.output/server/chunks/build/prompt-styles.Dvlc6Xra.mjs +8 -0
- package/.output/server/chunks/build/prompt-styles.Dvlc6Xra.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +9 -9
- package/.output/server/chunks/build/styles.mjs +29 -35
- package/.output/server/chunks/nitro/nitro.mjs +551 -521
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/.well-known/appspecific/_...path_.mjs +34 -0
- package/.output/server/chunks/routes/.well-known/appspecific/_...path_.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/history.get.mjs +3 -2
- package/.output/server/chunks/routes/api/issues/_id/history.get.mjs.map +1 -1
- package/.output/server/node_modules/.prisma/client/index.js +4 -3
- package/.output/server/node_modules/.prisma/client/package.json +1 -1
- package/.output/server/package.json +1 -1
- package/bin/autocode +188 -4
- package/package.json +5 -6
- package/prisma/migrations/20260104173538_init/migration.sql +142 -0
- package/prisma/migrations/20260104180000_pipeline_versioning/migration.sql +216 -0
- package/prisma/migrations/20260104190638_add_column_prompts/migration.sql +50 -0
- package/prisma/migrations/20260105120000_remove_column_prompts/migration.sql +3 -0
- package/prisma/migrations/20260105150000_normalize_pipeline_names/migration.sql +37 -0
- package/prisma/migrations/20260105170000_remove_slug_prefixes/migration.sql +16 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema.prisma +185 -0
- package/templates/prompts/_transition-decision.en.md +41 -25
- package/templates/prompts/_transition-decision.fr.md +28 -11
- package/templates/prompts/design.en.md +31 -9
- package/templates/prompts/design.fr.md +31 -9
- package/templates/prompts/git-tag.en.md +47 -11
- package/templates/prompts/git-tag.fr.md +47 -11
- package/templates/prompts/in-progress.en.md +43 -9
- package/templates/prompts/in-progress.fr.md +44 -10
- package/templates/prompts/qualification.en.md +48 -17
- package/templates/prompts/qualification.fr.md +48 -17
- package/templates/prompts/retest-cypress.en.md +14 -3
- package/templates/prompts/retest-cypress.fr.md +14 -3
- package/templates/prompts/review-security.en.md +35 -6
- package/templates/prompts/review-security.fr.md +35 -6
- package/templates/prompts/specification.en.md +29 -7
- package/templates/prompts/specification.fr.md +29 -7
- package/templates/prompts/splitter.en.md +50 -28
- package/templates/prompts/splitter.fr.md +52 -31
- package/templates/prompts/testing-cypress.en.md +14 -4
- package/templates/prompts/testing-cypress.fr.md +14 -4
- package/templates/prompts/testing-integration.en.md +39 -3
- package/templates/prompts/testing-integration.fr.md +39 -3
- package/.output/public/_i18n/_RCBbyrF/en/messages.json +0 -1
- package/.output/public/_i18n/_RCBbyrF/fr/messages.json +0 -1
- package/.output/public/_nuxt/B-QzFHDD.js +0 -1
- package/.output/public/_nuxt/Bn3kTsBm.js +0 -1
- package/.output/public/_nuxt/C2Vs_J-1.js +0 -1
- package/.output/public/_nuxt/CDVPefsv.js +0 -1
- package/.output/public/_nuxt/CSk34z2H.js +0 -1
- package/.output/public/_nuxt/DPWzdJ4S.js +0 -1
- package/.output/public/_nuxt/DrzMcrms.js +0 -1
- package/.output/public/_nuxt/_bAHEawb.js +0 -1
- package/.output/public/_nuxt/b2LQmhwq.js +0 -1
- package/.output/public/_nuxt/builds/meta/4d6876ea-4c52-49d1-a9d5-07bb0648a85e.json +0 -1
- package/.output/public/_nuxt/cli.e1u7fwy6.css +0 -1
- package/.output/public/_nuxt/hWy-7Z1L.js +0 -10
- package/.output/public/_nuxt/index.COVdL_Kx.css +0 -1
- package/.output/public/_nuxt/index.Dndk3KN9.css +0 -1
- package/.output/public/_nuxt/new.BFERdqdm.css +0 -1
- package/.output/public/_nuxt/prompt.DZ0wdOji.css +0 -1
- package/.output/server/chunks/build/LandingArchitecture-styles.Don6ug3a.mjs +0 -8
- package/.output/server/chunks/build/LandingArchitecture-styles.Don6ug3a.mjs.map +0 -1
- package/.output/server/chunks/build/LandingAutonomy-styles.D9JJFMEO.mjs +0 -8
- package/.output/server/chunks/build/LandingAutonomy-styles.D9JJFMEO.mjs.map +0 -1
- package/.output/server/chunks/build/LandingDemo-styles.WY8VUN9P.mjs +0 -8
- package/.output/server/chunks/build/LandingDemo-styles.WY8VUN9P.mjs.map +0 -1
- package/.output/server/chunks/build/LandingFooter-styles.sSpn5cgM.mjs +0 -8
- package/.output/server/chunks/build/LandingFooter-styles.sSpn5cgM.mjs.map +0 -1
- package/.output/server/chunks/build/LandingPipeline-styles.CL96fyQR.mjs +0 -8
- package/.output/server/chunks/build/LandingPipeline-styles.CL96fyQR.mjs.map +0 -1
- package/.output/server/chunks/build/LandingRoadmap-styles.DX5EsTsx.mjs +0 -8
- package/.output/server/chunks/build/LandingRoadmap-styles.DX5EsTsx.mjs.map +0 -1
- package/.output/server/chunks/build/cli-CZwbcgW5.mjs.map +0 -1
- package/.output/server/chunks/build/cli-styles.CSdcLhw8.mjs +0 -8
- package/.output/server/chunks/build/cli-styles.CSdcLhw8.mjs.map +0 -1
- package/.output/server/chunks/build/index-3KvoAMZW.mjs.map +0 -1
- package/.output/server/chunks/build/index-CKZ58Ox2.mjs.map +0 -1
- package/.output/server/chunks/build/index-styles.BJ7kZO7q.mjs +0 -8
- package/.output/server/chunks/build/index-styles.BJ7kZO7q.mjs.map +0 -1
- package/.output/server/chunks/build/new-styles.Chk5u_6M.mjs +0 -8
- package/.output/server/chunks/build/new-styles.Chk5u_6M.mjs.map +0 -1
- package/.output/server/chunks/build/prompt-BjvwrM-J.mjs.map +0 -1
- package/.output/server/chunks/build/prompt-styles.DWfublIG.mjs +0 -8
- package/.output/server/chunks/build/prompt-styles.DWfublIG.mjs.map +0 -1
|
@@ -2,29 +2,60 @@
|
|
|
2
2
|
|
|
3
3
|
## Role
|
|
4
4
|
|
|
5
|
-
|
|
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.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
- [ ]
|
|
24
|
-
- [ ] Les criteres d'acceptation sont testables
|
|
25
|
-
- [ ]
|
|
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
|
-
|
|
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} "
|
|
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} "
|
|
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
|
-
|
|
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} "
|
|
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} "
|
|
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
|
-
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
|
13
|
-
5. Specify API contracts
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
|
13
|
-
5. Specifier les contrats API
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
5
|
+
Evaluate whether the ticket needs to be split into sub-tickets. **By default, DO NOT SPLIT.**
|
|
6
6
|
|
|
7
|
-
## When to
|
|
7
|
+
## When NOT to split (majority of cases)
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
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
|
-
|
|
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
|
|
18
|
-
2.
|
|
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
|
-
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
-
|
|
44
|
+
**IMPORTANT**: Use ONLY `autocode new-child {key}`, never `autocode new --parent`
|
|
31
45
|
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
45
|
-
- [ ]
|
|
46
|
-
- [ ]
|
|
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
|
-
|
|
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
|
-
##
|
|
3
|
+
## Role
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Evaluer si le ticket doit etre decoupe en sous-tickets. **Par defaut, NE PAS DECOUPER.**
|
|
6
6
|
|
|
7
|
-
## Quand
|
|
7
|
+
## Quand NE PAS decouper (cas majoritaire)
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
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
|
-
|
|
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
|
|
18
|
-
2. Identifier les
|
|
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
|
-
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
-
|
|
44
|
+
**IMPORTANT** : Utiliser UNIQUEMENT `autocode new-child {key}`, jamais `autocode new --parent`
|
|
31
45
|
|
|
32
|
-
|
|
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
|
-
##
|
|
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
|
|
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
|
-
|
|
45
|
-
- [ ]
|
|
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
|
-
|
|
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
|
|
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} "
|
|
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
|
-
|
|
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
|
-
-
|
|
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} "
|
|
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
|
-
|
|
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
|
|