@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
|
@@ -7,7 +7,13 @@ You are the **transition decider** for AutoCode. After Claude finishes its work
|
|
|
7
7
|
- **Issue**: {key}
|
|
8
8
|
- **Title**: {title}
|
|
9
9
|
- **Current column**: {currentColumn}
|
|
10
|
-
- **
|
|
10
|
+
- **Next column**: {nextColumn}
|
|
11
|
+
|
|
12
|
+
## Project pipeline (columns in order)
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
{columnsList}
|
|
16
|
+
```
|
|
11
17
|
|
|
12
18
|
## Recent history
|
|
13
19
|
|
|
@@ -21,36 +27,45 @@ You are the **transition decider** for AutoCode. After Claude finishes its work
|
|
|
21
27
|
|
|
22
28
|
Analyze the work done and decide the next action:
|
|
23
29
|
|
|
24
|
-
| Action |
|
|
30
|
+
| Action | Description |
|
|
25
31
|
|--------|-------------|
|
|
26
|
-
| `NEXT` |
|
|
27
|
-
| `RETRY` |
|
|
28
|
-
| `BLOCKED` |
|
|
29
|
-
| `MOVE <
|
|
32
|
+
| `NEXT` | Execute `autocode next` → automatically move to **{nextColumn}** |
|
|
33
|
+
| `RETRY` | Retry the same column ({currentColumn}) |
|
|
34
|
+
| `BLOCKED` | Human intervention needed |
|
|
35
|
+
| `MOVE <slug>` | Go to a specific column (use exact slug from pipeline above) |
|
|
36
|
+
|
|
37
|
+
## Status Detection (STRICT)
|
|
38
|
+
|
|
39
|
+
Search for these EXACT patterns in the last comment:
|
|
40
|
+
|
|
41
|
+
| Pattern found | Action |
|
|
42
|
+
|---------------|--------|
|
|
43
|
+
| `[OK]` | → **NEXT** |
|
|
44
|
+
| `[FAILED]` | → **RETRY** |
|
|
45
|
+
| `[BLOCKED]` | → **BLOCKED** |
|
|
46
|
+
| `[SKIP]` or `SKIP -` | → **NEXT** |
|
|
47
|
+
|
|
48
|
+
**If NO pattern found** → **RETRY** (force Claude to comment correctly)
|
|
30
49
|
|
|
31
|
-
##
|
|
50
|
+
## Additional Rules
|
|
32
51
|
|
|
33
52
|
### NEXT - Move forward
|
|
34
|
-
- Comment
|
|
35
|
-
- Comment contains "SKIP" indicating the column is not applicable for this feature
|
|
36
|
-
- No blocking errors mentioned
|
|
53
|
+
- Comment contains `[OK]` or `[SKIP]` or `SKIP -`
|
|
37
54
|
- Column objectives appear to be met
|
|
38
55
|
|
|
39
56
|
### RETRY - Try again
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
57
|
+
- Comment contains `[FAILED]`
|
|
58
|
+
- OR no status pattern found
|
|
59
|
+
- OR temporary recoverable error
|
|
43
60
|
|
|
44
61
|
### BLOCKED - Block
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
- Tests failing repeatedly
|
|
62
|
+
- Comment contains `[BLOCKED]`
|
|
63
|
+
- OR critical non-recoverable error
|
|
64
|
+
- OR missing information that requires human
|
|
49
65
|
|
|
50
|
-
### MOVE <
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
- Other column based on context
|
|
66
|
+
### MOVE <slug> - Redirect
|
|
67
|
+
- Use the **exact slug** of a column from the pipeline above
|
|
68
|
+
- Typical cases: back to qualification, splitter, or other column based on context
|
|
54
69
|
|
|
55
70
|
## Response format
|
|
56
71
|
|
|
@@ -61,10 +76,11 @@ ACTION [short reason]
|
|
|
61
76
|
```
|
|
62
77
|
|
|
63
78
|
Examples:
|
|
64
|
-
- `NEXT [
|
|
65
|
-
- `RETRY [
|
|
66
|
-
- `
|
|
67
|
-
- `
|
|
79
|
+
- `NEXT [Pattern [OK] detected]`
|
|
80
|
+
- `RETRY [Pattern [FAILED] detected]`
|
|
81
|
+
- `RETRY [No status pattern found]`
|
|
82
|
+
- `BLOCKED [Pattern [BLOCKED] detected]`
|
|
83
|
+
- `MOVE qualification [Missing acceptance criteria]`
|
|
68
84
|
|
|
69
85
|
## Response
|
|
70
86
|
|
|
@@ -34,24 +34,34 @@ Analyse le travail effectue et decide de la prochaine action parmi :
|
|
|
34
34
|
| `BLOCKED` | Intervention humaine necessaire |
|
|
35
35
|
| `MOVE <slug>` | Aller vers une colonne specifique (utilise le slug exact du pipeline ci-dessus) |
|
|
36
36
|
|
|
37
|
-
##
|
|
37
|
+
## Detection du statut (STRICT)
|
|
38
|
+
|
|
39
|
+
Chercher ces patterns EXACTS dans le dernier commentaire :
|
|
40
|
+
|
|
41
|
+
| Pattern trouve | Action |
|
|
42
|
+
|----------------|--------|
|
|
43
|
+
| `[OK]` | → **NEXT** |
|
|
44
|
+
| `[FAILED]` | → **RETRY** |
|
|
45
|
+
| `[BLOCKED]` | → **BLOCKED** |
|
|
46
|
+
| `[SKIP]` ou `SKIP -` | → **NEXT** |
|
|
47
|
+
|
|
48
|
+
**Si AUCUN pattern trouve** → **RETRY** (forcer Claude a commenter correctement)
|
|
49
|
+
|
|
50
|
+
## Regles supplementaires
|
|
38
51
|
|
|
39
52
|
### NEXT - Passer a la suite
|
|
40
|
-
- Le commentaire
|
|
41
|
-
- Le commentaire contient "SKIP" indiquant que la colonne n'est pas applicable
|
|
42
|
-
- Pas d'erreur bloquante mentionnee
|
|
53
|
+
- Le commentaire contient `[OK]` ou `[SKIP]` ou `SKIP -`
|
|
43
54
|
- Les objectifs de la colonne semblent atteints
|
|
44
55
|
|
|
45
56
|
### RETRY - Reessayer
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
57
|
+
- Le commentaire contient `[FAILED]`
|
|
58
|
+
- OU aucun pattern de statut trouve
|
|
59
|
+
- OU erreur temporaire recuperable
|
|
49
60
|
|
|
50
61
|
### BLOCKED - Bloquer
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
- Tests echoues de maniere repetee
|
|
62
|
+
- Le commentaire contient `[BLOCKED]`
|
|
63
|
+
- OU erreur critique non recuperable
|
|
64
|
+
- OU information manquante qui necessite un humain
|
|
55
65
|
|
|
56
66
|
### MOVE <slug> - Rediriger
|
|
57
67
|
- Utilise le **slug exact** d'une colonne du pipeline ci-dessus
|
|
@@ -65,5 +75,12 @@ Reponds UNIQUEMENT avec une ligne au format :
|
|
|
65
75
|
ACTION [raison courte]
|
|
66
76
|
```
|
|
67
77
|
|
|
78
|
+
Exemples :
|
|
79
|
+
- `NEXT [Pattern [OK] detecte]`
|
|
80
|
+
- `RETRY [Pattern [FAILED] detecte]`
|
|
81
|
+
- `RETRY [Aucun pattern de statut trouve]`
|
|
82
|
+
- `BLOCKED [Pattern [BLOCKED] detecte]`
|
|
83
|
+
- `MOVE qualification [Missing acceptance criteria]`
|
|
84
|
+
|
|
68
85
|
## Reponse
|
|
69
86
|
|
|
@@ -7,16 +7,38 @@ Create technical and/or UX design for the feature. Prepare mockups, diagrams, or
|
|
|
7
7
|
## Actions
|
|
8
8
|
|
|
9
9
|
1. Review specifications and requirements
|
|
10
|
-
2. Create UI mockups/wireframes
|
|
11
|
-
3. Design component architecture
|
|
12
|
-
4. Create sequence diagrams
|
|
13
|
-
5. Define state management approach
|
|
10
|
+
2. Create UI mockups/wireframes IF ticket involves user interface
|
|
11
|
+
3. Design component architecture IF new module or major refactoring
|
|
12
|
+
4. Create sequence diagrams IF flow involves 3+ components
|
|
13
|
+
5. Define state management approach IF new global state or state shared between components
|
|
14
14
|
6. Document design decisions and trade-offs
|
|
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] - Design: <summary>"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Valid statuses:
|
|
40
|
+
- `[OK]` - Design completed successfully
|
|
41
|
+
- `[BLOCKED]` - Need clarification on requirements
|
|
20
42
|
|
|
21
43
|
## Validation Criteria
|
|
22
44
|
|
|
@@ -7,16 +7,38 @@ Creer le design technique et/ou UX pour la fonctionnalite. Preparer les maquette
|
|
|
7
7
|
## Actions
|
|
8
8
|
|
|
9
9
|
1. Revoir les specifications et exigences
|
|
10
|
-
2. Creer des maquettes UI/wireframes
|
|
11
|
-
3. Designer l'architecture des composants
|
|
12
|
-
4. Creer des diagrammes de sequence
|
|
13
|
-
5. Definir l'approche de gestion d'etat
|
|
10
|
+
2. Creer des maquettes UI/wireframes SI le ticket concerne une interface utilisateur
|
|
11
|
+
3. Designer l'architecture des composants SI nouveau module ou refactoring majeur
|
|
12
|
+
4. Creer des diagrammes de sequence SI flux impliquant 3+ composants
|
|
13
|
+
5. Definir l'approche de gestion d'etat SI nouvel etat global ou partage entre composants
|
|
14
14
|
6. Documenter les decisions de design et compromis
|
|
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] - Design : <resume>"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Statuts valides :
|
|
40
|
+
- `[OK]` - Design termine avec succes
|
|
41
|
+
- `[BLOCKED]` - Besoin clarification sur exigences
|
|
20
42
|
|
|
21
43
|
## Criteres de Validation
|
|
22
44
|
|
|
@@ -4,24 +4,60 @@
|
|
|
4
4
|
|
|
5
5
|
Create a version tag for the release. Follow semantic versioning.
|
|
6
6
|
|
|
7
|
+
## Semver Decision Tree
|
|
8
|
+
|
|
9
|
+
Use this decision tree in order:
|
|
10
|
+
|
|
11
|
+
### 1. MAJOR (X.0.0) - Breaking change
|
|
12
|
+
Increment MAJOR if ANY of these conditions are true:
|
|
13
|
+
- [ ] Public API modified (function signature changed, export removed)
|
|
14
|
+
- [ ] Database schema modified (non-reversible migration)
|
|
15
|
+
- [ ] Configuration format changed (old files incompatible)
|
|
16
|
+
- [ ] Default behavior changed in incompatible way
|
|
17
|
+
|
|
18
|
+
### 2. MINOR (0.X.0) - New feature
|
|
19
|
+
Increment MINOR if ANY of these conditions are true AND no MAJOR condition:
|
|
20
|
+
- [ ] New feature added (endpoint, component, command)
|
|
21
|
+
- [ ] New configuration option added
|
|
22
|
+
- [ ] Deprecation announced (old code still works)
|
|
23
|
+
|
|
24
|
+
### 3. PATCH (0.0.X) - Fix
|
|
25
|
+
Increment PATCH if no MAJOR or MINOR condition:
|
|
26
|
+
- [ ] Bug fix
|
|
27
|
+
- [ ] Performance improvement
|
|
28
|
+
- [ ] Internal refactoring (no API change)
|
|
29
|
+
- [ ] Documentation fix
|
|
30
|
+
|
|
31
|
+
**When in doubt: choose PATCH**
|
|
32
|
+
|
|
7
33
|
## Actions
|
|
8
34
|
|
|
9
|
-
1.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
35
|
+
1. Check current version: `git describe --tags --abbrev=0`
|
|
36
|
+
2. Analyze commits since last tag: `git log $(git describe --tags --abbrev=0)..HEAD --oneline`
|
|
37
|
+
3. Apply the decision tree above
|
|
38
|
+
4. Create annotated tag: `git tag -a v<version> -m "<release notes>"`
|
|
39
|
+
5. Push tag: `git push origin v<version>`
|
|
40
|
+
6. Verify tag on remote
|
|
41
|
+
|
|
42
|
+
## Mandatory Comment Format
|
|
43
|
+
|
|
44
|
+
End with:
|
|
45
|
+
```
|
|
46
|
+
autocode comment {key} "[OK] - Git tag: v<version> (<type>)"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Valid types: `MAJOR`, `MINOR`, `PATCH`
|
|
50
|
+
|
|
51
|
+
Valid statuses:
|
|
52
|
+
- `[OK]` - Tag created and pushed successfully
|
|
53
|
+
- `[FAILED]` - Failed (describe the problem)
|
|
18
54
|
|
|
19
55
|
## Validation Criteria
|
|
20
56
|
|
|
21
57
|
- [ ] Version follows semver
|
|
22
|
-
- [ ] Tag is annotated with message
|
|
58
|
+
- [ ] Tag is annotated with descriptive message
|
|
23
59
|
- [ ] Tag pushed to remote
|
|
24
|
-
- [ ] Version increment is
|
|
60
|
+
- [ ] Version increment is justified by decision tree
|
|
25
61
|
|
|
26
62
|
## Notes
|
|
27
63
|
|
|
@@ -4,24 +4,60 @@
|
|
|
4
4
|
|
|
5
5
|
Creer un tag de version pour la release. Suivre le versionnement semantique.
|
|
6
6
|
|
|
7
|
+
## Arbre de decision semver
|
|
8
|
+
|
|
9
|
+
Utiliser cet arbre de decision dans l'ordre :
|
|
10
|
+
|
|
11
|
+
### 1. MAJOR (X.0.0) - Changement cassant
|
|
12
|
+
Incrementer MAJOR si UNE de ces conditions est vraie :
|
|
13
|
+
- [ ] API publique modifiee (signature de fonction, export supprime)
|
|
14
|
+
- [ ] Schema base de donnees modifie (migration non-reversible)
|
|
15
|
+
- [ ] Format de configuration change (anciens fichiers incompatibles)
|
|
16
|
+
- [ ] Comportement par defaut change de maniere incompatible
|
|
17
|
+
|
|
18
|
+
### 2. MINOR (0.X.0) - Nouvelle fonctionnalite
|
|
19
|
+
Incrementer MINOR si UNE de ces conditions est vraie ET aucune condition MAJOR :
|
|
20
|
+
- [ ] Nouvelle fonctionnalite ajoutee (endpoint, composant, commande)
|
|
21
|
+
- [ ] Nouvelle option de configuration ajoutee
|
|
22
|
+
- [ ] Deprecation annoncee (ancien code fonctionne encore)
|
|
23
|
+
|
|
24
|
+
### 3. PATCH (0.0.X) - Correction
|
|
25
|
+
Incrementer PATCH si aucune condition MAJOR ou MINOR :
|
|
26
|
+
- [ ] Bug fix
|
|
27
|
+
- [ ] Amelioration de performance
|
|
28
|
+
- [ ] Refactoring interne (pas de changement d'API)
|
|
29
|
+
- [ ] Correction de documentation
|
|
30
|
+
|
|
31
|
+
**En cas de doute : choisir PATCH**
|
|
32
|
+
|
|
7
33
|
## Actions
|
|
8
34
|
|
|
9
|
-
1.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
35
|
+
1. Verifier la version actuelle : `git describe --tags --abbrev=0`
|
|
36
|
+
2. Analyser les commits depuis le dernier tag : `git log $(git describe --tags --abbrev=0)..HEAD --oneline`
|
|
37
|
+
3. Appliquer l'arbre de decision ci-dessus
|
|
38
|
+
4. Creer un tag annote : `git tag -a v<version> -m "<notes de release>"`
|
|
39
|
+
5. Pousser le tag : `git push origin v<version>`
|
|
40
|
+
6. Verifier le tag sur le distant
|
|
41
|
+
|
|
42
|
+
## Format de commentaire obligatoire
|
|
43
|
+
|
|
44
|
+
Terminer avec :
|
|
45
|
+
```
|
|
46
|
+
autocode comment {key} "[OK] - Git tag : v<version> (<type>)"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Types valides : `MAJOR`, `MINOR`, `PATCH`
|
|
50
|
+
|
|
51
|
+
Statuts valides :
|
|
52
|
+
- `[OK]` - Tag cree et pousse avec succes
|
|
53
|
+
- `[FAILED]` - Echec (decrire le probleme)
|
|
18
54
|
|
|
19
55
|
## Criteres de Validation
|
|
20
56
|
|
|
21
57
|
- [ ] La version suit semver
|
|
22
|
-
- [ ] Le tag est annote avec un message
|
|
58
|
+
- [ ] Le tag est annote avec un message descriptif
|
|
23
59
|
- [ ] Le tag est pousse sur le distant
|
|
24
|
-
- [ ] L'increment de version est
|
|
60
|
+
- [ ] L'increment de version est justifie par l'arbre de decision
|
|
25
61
|
|
|
26
62
|
## Notes
|
|
27
63
|
|
|
@@ -4,24 +4,58 @@
|
|
|
4
4
|
|
|
5
5
|
Active development. Issue is being worked on, code is being written.
|
|
6
6
|
|
|
7
|
+
## Pre-coding Checklist
|
|
8
|
+
|
|
9
|
+
BEFORE modifying code:
|
|
10
|
+
- [ ] Read ALL acceptance criteria
|
|
11
|
+
- [ ] Identified files to modify
|
|
12
|
+
- [ ] Verified no criterion is already 100% satisfied
|
|
13
|
+
- [ ] Estimated < 2h of work (otherwise, request split via comment)
|
|
14
|
+
|
|
7
15
|
## Actions
|
|
8
16
|
|
|
9
17
|
1. Analyze issue and acceptance criteria
|
|
10
18
|
2. Explore codebase to understand existing context
|
|
11
19
|
3. Plan modifications (files to create/modify)
|
|
12
20
|
4. **MANDATORY VERIFICATION**: For EACH acceptance criterion:
|
|
13
|
-
-
|
|
14
|
-
- If
|
|
15
|
-
- If
|
|
21
|
+
- Test if criterion is 100% satisfied in current code
|
|
22
|
+
- If satisfaction < 100%: implement the missing part
|
|
23
|
+
- If satisfaction = 100%: move to next criterion
|
|
16
24
|
5. Test locally that ALL criteria pass
|
|
17
25
|
6. Commit + push work done
|
|
18
|
-
|
|
19
|
-
|
|
26
|
+
|
|
27
|
+
## Scope Management
|
|
28
|
+
|
|
29
|
+
If out-of-scope work is detected:
|
|
30
|
+
|
|
31
|
+
| Situation | Action |
|
|
32
|
+
|-----------|--------|
|
|
33
|
+
| Modification < 30 min, same files | Handle in this ticket |
|
|
34
|
+
| Modification 30min-2h, 1-2 new files | Create child ticket → ready |
|
|
35
|
+
| Modification > 2h OR > 3 new files | Create ticket → backlog |
|
|
36
|
+
|
|
37
|
+
**Commands:**
|
|
38
|
+
- CHILD ticket: `autocode new-child {key} "<title>" "<description>" -p P2 -a "<criterion1>" -a "<criterion2>"`
|
|
39
|
+
- INDEPENDENT ticket: `autocode new "<title>" "<description>" -p P2 -a "<criteria>"`
|
|
40
|
+
|
|
41
|
+
**IMPORTANT**: Never use `autocode new --parent`, use `new-child` instead.
|
|
42
|
+
|
|
43
|
+
## Mandatory Comment Format
|
|
44
|
+
|
|
45
|
+
End with:
|
|
46
|
+
```
|
|
47
|
+
autocode comment {key} "[OK] - Development: <list of changes>"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Valid statuses:
|
|
51
|
+
- `[OK]` - All criteria implemented and tested
|
|
52
|
+
- `[FAILED]` - Failed, needs retry (describe the problem)
|
|
53
|
+
- `[BLOCKED]` - Blocked, needs human intervention
|
|
20
54
|
|
|
21
55
|
## IMPORTANT
|
|
22
56
|
|
|
23
57
|
If criteria cannot be satisfied:
|
|
24
|
-
-
|
|
58
|
+
- Use `[BLOCKED]` and explain why
|
|
25
59
|
- The system will decide next steps automatically
|
|
26
60
|
|
|
27
61
|
If code exists but does not match criteria:
|
|
@@ -30,11 +64,11 @@ If code exists but does not match criteria:
|
|
|
30
64
|
|
|
31
65
|
## Validation Criteria
|
|
32
66
|
|
|
33
|
-
- [ ] ALL acceptance criteria
|
|
34
|
-
- [ ] Code implements ALL
|
|
67
|
+
- [ ] ALL acceptance criteria verified ONE BY ONE
|
|
68
|
+
- [ ] Code implements ALL required functionalities
|
|
35
69
|
- [ ] Local tests pass
|
|
36
70
|
- [ ] Code is committed and pushed
|
|
37
|
-
- [ ]
|
|
71
|
+
- [ ] Comment with status [OK]/[FAILED]/[BLOCKED]
|
|
38
72
|
|
|
39
73
|
## Notes
|
|
40
74
|
|
|
@@ -4,37 +4,71 @@
|
|
|
4
4
|
|
|
5
5
|
Developpement actif. Le ticket est en cours de travail, le code est en cours d'ecriture.
|
|
6
6
|
|
|
7
|
+
## Checklist avant de coder
|
|
8
|
+
|
|
9
|
+
AVANT de modifier le code :
|
|
10
|
+
- [ ] Lu TOUS les criteres d'acceptation
|
|
11
|
+
- [ ] Identifie les fichiers a modifier
|
|
12
|
+
- [ ] Verifie qu'aucun critere n'est deja satisfait a 100%
|
|
13
|
+
- [ ] Estime < 2h de travail (sinon, demander split via commentaire)
|
|
14
|
+
|
|
7
15
|
## Actions
|
|
8
16
|
|
|
9
17
|
1. Analyser le ticket et les criteres d'acceptation
|
|
10
18
|
2. Explorer le codebase pour comprendre le contexte existant
|
|
11
19
|
3. Planifier les modifications (fichiers a creer/modifier)
|
|
12
20
|
4. **VERIFICATION OBLIGATOIRE** : Pour CHAQUE critere d'acceptation :
|
|
13
|
-
-
|
|
14
|
-
- Si
|
|
15
|
-
- Si
|
|
21
|
+
- Tester si le critere est satisfait a 100% dans le code actuel
|
|
22
|
+
- Si satisfaction < 100% : implementer la partie manquante
|
|
23
|
+
- Si satisfaction = 100% : passer au critere suivant
|
|
16
24
|
5. Tester localement que TOUS les criteres passent
|
|
17
25
|
6. Commit + push du travail effectue
|
|
18
|
-
|
|
19
|
-
|
|
26
|
+
|
|
27
|
+
## Gestion du scope
|
|
28
|
+
|
|
29
|
+
Si travail hors scope detecte :
|
|
30
|
+
|
|
31
|
+
| Situation | Action |
|
|
32
|
+
|-----------|--------|
|
|
33
|
+
| Modification < 30 min, memes fichiers | Traiter dans ce ticket |
|
|
34
|
+
| Modification 30min-2h, 1-2 nouveaux fichiers | Creer ticket enfant → ready |
|
|
35
|
+
| Modification > 2h OU > 3 nouveaux fichiers | Creer ticket → backlog |
|
|
36
|
+
|
|
37
|
+
**Commandes :**
|
|
38
|
+
- Ticket ENFANT : `autocode new-child {key} "<titre>" "<description>" -p P2 -a "<critere1>" -a "<critere2>"`
|
|
39
|
+
- Ticket INDEPENDANT : `autocode new "<titre>" "<description>" -p P2 -a "<criteres>"`
|
|
40
|
+
|
|
41
|
+
**IMPORTANT** : Ne jamais utiliser `autocode new --parent`, utiliser `new-child` a la place.
|
|
42
|
+
|
|
43
|
+
## Format de commentaire obligatoire
|
|
44
|
+
|
|
45
|
+
Terminer avec :
|
|
46
|
+
```
|
|
47
|
+
autocode comment {key} "[OK] - Developpement : <liste des modifications>"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Statuts valides :
|
|
51
|
+
- `[OK]` - Tous les criteres implementes et testes
|
|
52
|
+
- `[FAILED]` - Echec, necessite retry (decrire le probleme)
|
|
53
|
+
- `[BLOCKED]` - Bloque, necessite intervention humaine
|
|
20
54
|
|
|
21
55
|
## IMPORTANT
|
|
22
56
|
|
|
23
57
|
Si des criteres ne peuvent pas etre satisfaits :
|
|
24
|
-
-
|
|
58
|
+
- Utiliser `[BLOCKED]` et expliquer pourquoi
|
|
25
59
|
- Le systeme decidera automatiquement de la suite
|
|
26
60
|
|
|
27
|
-
Si le code existe
|
|
61
|
+
Si le code existe mais ne correspond pas aux criteres :
|
|
28
62
|
- MODIFIER le code pour qu'il corresponde aux criteres
|
|
29
63
|
- Ne pas supposer que "le code existe donc c'est bon"
|
|
30
64
|
|
|
31
65
|
## Criteres de Validation
|
|
32
66
|
|
|
33
|
-
- [ ] TOUS les criteres d'acceptation
|
|
34
|
-
- [ ]
|
|
67
|
+
- [ ] TOUS les criteres d'acceptation verifies UN PAR UN
|
|
68
|
+
- [ ] Code implemente TOUTES les fonctionnalites requises
|
|
35
69
|
- [ ] Tests locaux passent
|
|
36
70
|
- [ ] Code commite et pousse
|
|
37
|
-
- [ ]
|
|
71
|
+
- [ ] Commentaire avec statut [OK]/[FAILED]/[BLOCKED]
|
|
38
72
|
|
|
39
73
|
## Notes
|
|
40
74
|
|
|
@@ -2,29 +2,60 @@
|
|
|
2
2
|
|
|
3
3
|
## Role
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Explore the codebase and reformulate the ticket to produce a clear, unambiguous specification. This mode is similar to "plan mode": understand the existing context then precisely clarify what needs to be done.
|
|
6
|
+
|
|
7
|
+
**IMPORTANT**: The customer is king. NEVER judge whether a feature "belongs" to the project or not. Your role is to clarify and specify, not to filter requests.
|
|
6
8
|
|
|
7
9
|
## Actions
|
|
8
10
|
|
|
9
|
-
1.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
11
|
+
1. **Explore the codebase**
|
|
12
|
+
- Identify files and components that could be involved
|
|
13
|
+
- Understand existing architecture and patterns used
|
|
14
|
+
- If it's a new feature, identify where it would integrate
|
|
15
|
+
|
|
16
|
+
2. **Reformulate the description**
|
|
17
|
+
- Rewrite the description to be precise and actionable
|
|
18
|
+
- Include technical context (existing files or files to create)
|
|
19
|
+
- Remove any ambiguity about expected behavior
|
|
20
|
+
|
|
21
|
+
3. **Refine acceptance criteria**
|
|
22
|
+
- Reformulate each criterion to be testable and verifiable
|
|
23
|
+
- Add missing criteria
|
|
24
|
+
- Specify edge cases
|
|
25
|
+
|
|
26
|
+
4. **Update the ticket**
|
|
27
|
+
```
|
|
28
|
+
autocode edit {key} --description "<new description>"
|
|
29
|
+
autocode criteria {key} set "<criterion1>" "<criterion2>" ...
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Mandatory Comment Format
|
|
33
|
+
|
|
34
|
+
End with:
|
|
35
|
+
```
|
|
36
|
+
autocode comment {key} "[OK] - Qualification: <summary of clarifications made>"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Valid statuses:
|
|
40
|
+
- `[OK]` - Specification clarified and ticket updated (default case)
|
|
41
|
+
- `[BLOCKED]` - ONLY if a technical ambiguity blocks (e.g., "which API to use?", "what data format?")
|
|
42
|
+
|
|
43
|
+
**If BLOCKED, you MUST ask a clear question:**
|
|
44
|
+
```
|
|
45
|
+
autocode comment {key} "[BLOCKED] - Technical question: <your precise question>"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**NEVER block for**:
|
|
49
|
+
- "This feature doesn't belong to the project"
|
|
50
|
+
- "This is out of scope"
|
|
51
|
+
- Any non-technical reason
|
|
20
52
|
|
|
21
53
|
## Validation Criteria
|
|
22
54
|
|
|
23
|
-
- [ ]
|
|
24
|
-
- [ ] Acceptance criteria are testable
|
|
25
|
-
- [ ]
|
|
26
|
-
- [ ] No blocking dependencies
|
|
55
|
+
- [ ] Description is precise and includes technical context
|
|
56
|
+
- [ ] Acceptance criteria are testable and complete
|
|
57
|
+
- [ ] Ticket was updated with clarified spec
|
|
27
58
|
|
|
28
59
|
## Notes
|
|
29
60
|
|
|
30
|
-
|
|
61
|
+
Good qualification transforms a vague request into an actionable specification. The goal is that the developer picking up the ticket has zero doubt about what needs to be done.
|