testeiya 0.4.2 → 0.4.3

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 (32) hide show
  1. package/README.md +83 -10
  2. package/dist/prompt/comment-thread.js +96 -0
  3. package/dist/prompt/comment-thread.js.map +1 -0
  4. package/dist/prompt/system-prompt.js +2 -2
  5. package/dist/src/args.js +24 -0
  6. package/dist/src/args.js.map +1 -1
  7. package/dist/src/checkpoint.js +19 -11
  8. package/dist/src/checkpoint.js.map +1 -1
  9. package/dist/src/cli.js +1 -0
  10. package/dist/src/cli.js.map +1 -1
  11. package/dist/src/output.js +30 -8
  12. package/dist/src/output.js.map +1 -1
  13. package/dist/src/run.js +36 -12
  14. package/dist/src/run.js.map +1 -1
  15. package/dist/src/session.js +1 -0
  16. package/dist/src/session.js.map +1 -1
  17. package/package.json +1 -1
  18. package/prompt/comment-thread.ts +126 -0
  19. package/prompt/system-prompt.ts +2 -2
  20. package/skills/skills.lock.json +4 -2
  21. package/skills/testomatio/qa-process/testing-workflow/SKILL.md +3 -0
  22. package/skills/testomatio/{test-management → requirements}/qa-thinking/SKILL.md +1 -0
  23. package/skills/testomatio/requirements/write-user-story/SKILL.md +45 -0
  24. package/skills/testomatio/test-automation/epic-requirements-specification/SKILL.md +66 -0
  25. /package/skills/testomatio/{test-management → requirements}/pull-request-diff-analyzer/SKILL.md +0 -0
  26. /package/skills/testomatio/{qa-process → requirements}/qa-explain-behavior/SKILL.md +0 -0
  27. /package/skills/testomatio/{qa-process → requirements}/qa-explain-behavior/references/answer-shapes.md +0 -0
  28. /package/skills/testomatio/{qa-process → requirements}/qa-explain-behavior/references/examples.md +0 -0
  29. /package/skills/testomatio/{test-management → requirements}/qa-pr-requirements-analyzer/SKILL.md +0 -0
  30. /package/skills/testomatio/{test-management → requirements}/qa-pr-requirements-analyzer/references/summary-example.md +0 -0
  31. /package/skills/testomatio/{test-management → requirements}/qa-requirement-reviewer/SKILL.md +0 -0
  32. /package/skills/testomatio/{test-management → requirements}/qa-requirement-reviewer/references/requirements_reviewer_examples.md +0 -0
package/README.md CHANGED
@@ -279,9 +279,9 @@ looks fine.
279
279
 
280
280
  ### GitLab CI
281
281
 
282
- GitLab runners do not ship `gh`, so the report goes to job artifacts visible
283
- in the merge request pipeline page. Exit code `1` fails the job and blocks the
284
- merge when you mark it required.
282
+ GitLab runners do not ship `gh`. The report goes to job artifacts, and when a
283
+ token is present the agent also keeps its review on the merge request itself.
284
+ Exit code `1` fails the job and blocks the merge when you mark it required.
285
285
 
286
286
  ```yaml
287
287
  qa-review:
@@ -291,6 +291,8 @@ qa-review:
291
291
  variables:
292
292
  TESTEIYA_MODEL: openrouter/anthropic/claude-sonnet-5
293
293
  TESTOMATIO_PROJECT_ID: my-project
294
+ # a project access token with the `api` scope; CI_JOB_TOKEN cannot write notes
295
+ GITLAB_TOKEN: $TESTEIYA_GITLAB_TOKEN
294
296
  script:
295
297
  - git fetch origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
296
298
  - npx testeiya@latest doctor
@@ -306,9 +308,35 @@ qa-review:
306
308
  # OPENROUTER_API_KEY (masked), TESTOMATIO (masked, protected)
307
309
  ```
308
310
 
309
- For posting back to the merge request, hand the envelope's report to GitLab's
310
- API in a follow-up step, or install `gh` plus a token mirror if the project is
311
- also on GitHub.
311
+ Without `GITLAB_TOKEN` the run still produces the artifacts, it just posts
312
+ nothing. With it, the agent keeps one note per thread and rewrites it each
313
+ round. See [Comment threads](#comment-threads).
314
+
315
+ ### Bitbucket Pipelines
316
+
317
+ There is no Bitbucket CLI, so the agent talks to the REST API directly. Put a
318
+ repository access token that can write pull requests in `BITBUCKET_ACCESS_TOKEN`,
319
+ and `BITBUCKET_PR_ID` does the rest.
320
+
321
+ ```yaml
322
+ pipelines:
323
+ pull-requests:
324
+ '**':
325
+ - step:
326
+ image: node:22
327
+ script:
328
+ - export TESTEIYA_MODEL=openrouter/anthropic/claude-sonnet-5
329
+ # repository variables: OPENROUTER_API_KEY, BITBUCKET_ACCESS_TOKEN
330
+ - npx testeiya@latest task
331
+ "Review this pull request as a QA engineer. What could go wrong?"
332
+ --thread qa-review --output review.md
333
+ artifacts:
334
+ - review.md
335
+ ```
336
+
337
+ `BITBUCKET_PR_ID` is only set on a pull request build, so keep the step under
338
+ `pull-requests:`. Bitbucket caps a pull request at 200 comments, which is why
339
+ the agent resolves its old ones instead of adding a fresh thread each round.
312
340
 
313
341
  ### Anywhere else
314
342
 
@@ -360,10 +388,55 @@ Write no footer of your own and the report is signed:
360
388
 
361
389
  Pass `--no-default-footer`, or set `TESTEIYA_NO_DEFAULT_FOOTER`, to drop it.
362
390
 
363
- Every report also opens with `<!-- testeiya <session> -->`. Markdown renders it
364
- as nothing, and it is how the next round tells its own comments apart from
365
- everyone else's: it answers what is new in the thread instead of posting the
366
- same report again.
391
+ ## Comment threads
392
+
393
+ Every report opens with a marker that markdown renders as nothing:
394
+
395
+ ```
396
+ <!-- testeiya thread=qa-review commit=700fbe1d9c... session=0198f2c1a3b4c -->
397
+ ```
398
+
399
+ That line is how a later round finds its own earlier comments, which
400
+ conversation they belong to, and what they were written against. It lives in the
401
+ thread, not in a cache, so a round that starts with an empty runner still knows
402
+ what it last reviewed and can diff from there.
403
+
404
+ In a thread the agent looks after those comments rather than piling them up.
405
+ A thread is any subject it posts into: a pull request, a merge request, an
406
+ issue. Each round writes the complete current answer, opening with a short list
407
+ of what changed since the last one, and makes the earlier comments recede:
408
+
409
+ | CI | How the earlier answer recedes |
410
+ |---|---|
411
+ | GitHub Actions | folded in place, as an outdated comment |
412
+ | Bitbucket Pipelines | resolved, which collapses it |
413
+ | GitLab CI | one note, rewritten, with the previous answer folded inside it |
414
+ | any other CI | the agent reads the host's API and picks whichever of the two fits |
415
+
416
+ There are two strategies, not one per host. Where the host can fold a whole
417
+ comment the agent appends and folds; where it can only fold the body, the
418
+ comment chrome would pile up, so it keeps one comment and rewrites it. GitLab is
419
+ the odd one out for that reason. A CI we ship no calls for gets both strategies
420
+ and picks, from that host's own documentation.
421
+
422
+ Nothing is ever deleted. A human reply may be sitting under a comment, and every
423
+ step here can be undone where a delete cannot.
424
+
425
+ `--thread <name>` says which conversation a run belongs to. Run two jobs on one
426
+ pull request, say one grilling it and one writing test cases, and give each its
427
+ own name so neither touches the other's comments. The default is `default`, and
428
+ `TESTEIYA_THREAD` does the same from the environment.
429
+
430
+ ```bash
431
+ testeiya task "Review this pull request" \
432
+ --thread qa-review --output gh:pr-comment
433
+ ```
434
+
435
+ The host comes from the job, not from the checkout: `GITHUB_ACTIONS`,
436
+ `GITLAB_CI`, `BITBUCKET_BUILD_NUMBER`, else `CI`. A remote only says where the
437
+ code lives, while those say the run has a subject to answer and a token to
438
+ answer with. So these rules never reach a developer's own checkout, and the
439
+ agent is told about one host, never the others.
367
440
 
368
441
  ## Sessions
369
442
 
@@ -0,0 +1,96 @@
1
+ import dedent from 'dedent';
2
+ /**
3
+ * How an answer already posted stops being the current one, per host. The round
4
+ * is the same wherever the thread lives — find your marked comments, diff from
5
+ * the commit the last one carries, make it recede, write the current answer — so
6
+ * a host contributes only its own rules: which of the two strategies its API
7
+ * affords, and the facts about it that cannot be worked out from the API alone.
8
+ *
9
+ * The host comes from the environment, never from the remote. A remote says
10
+ * where the code lives; only the CI variables say we are in a job that has a
11
+ * subject to answer and a token to answer with.
12
+ *
13
+ * This table is the extension point. There is no default host: a job nothing
14
+ * claims falls to `generic`, which states the choice and lets the agent make it.
15
+ */
16
+ const HOSTS = {
17
+ github: {
18
+ env: ['GITHUB_ACTIONS'],
19
+ rules: dedent `
20
+ **Append and collapse.** GitHub hides a whole comment, so leave the earlier ones where they are and fold each one with the GraphQL \`minimizeComment\` mutation, classifier \`OUTDATED\`. Issues and pull requests share the same comment API, so this is the same call on both.
21
+
22
+ Read comment bodies from \`body\`; \`body_text\` has the marker stripped out. Never \`gh pr comment --edit-last\` or \`--delete-last\`: they mean the last comment by this user, which in CI is a bot account shared with every other tool in the repository.`,
23
+ },
24
+ gitlab: {
25
+ env: ['GITLAB_CI'],
26
+ rules: dedent `
27
+ **Rewrite.** GitLab folds the body of a note but never the note itself, so a note per round leaves a column of headers behind. Keep one note in this thread and rewrite it: the current answer on top, the previous one under it inside a \`<details>\` block, stripped of the \`<details>\` block it already carried. Fold one generation, never a chain of them.
28
+
29
+ \`CI_JOB_TOKEN\` cannot write notes, so \`$GITLAB_TOKEN\` must carry a project access token with the \`api\` scope; report it as a blocker when it is empty. Use notes rather than discussions: a discussion is a resolvable thread, and an unresolved one blocks the merge wherever all threads must be resolved.`,
30
+ },
31
+ bitbucket: {
32
+ env: ['BITBUCKET_BUILD_NUMBER'],
33
+ rules: dedent `
34
+ **Append and collapse.** Bitbucket resolves a whole comment thread, so leave the earlier ones where they are and resolve each one. Only a top-level comment resolves; a reply answers 403.
35
+
36
+ \`$BITBUCKET_ACCESS_TOKEN\` carries the token; report it as a blocker when it is empty. Deleted comments stay in the list as blanked tombstones, so filter on \`deleted=false\`. A pull request caps at 200 comments, so post once per round and never twice. The marker may render as visible text here — keep it anyway, since finding your own comments matters more than a tidy first line.`,
37
+ },
38
+ generic: {
39
+ env: [],
40
+ rules: dedent `
41
+ **Find out which of the two applies.** If this host can hide, minimise, resolve or otherwise fold a whole comment, append the new answer and fold the earlier ones. If it can only edit, keep one comment and rewrite it, with the previous answer folded inside wherever the host renders collapsible markup.
42
+
43
+ If it can do neither, post the answer and say in your output that this host cannot collapse the earlier ones.`,
44
+ },
45
+ };
46
+ /**
47
+ * Which host this job belongs to. `generic` when it is CI and nothing claims it,
48
+ * nothing at all when it is not CI — a developer's own checkout has no thread.
49
+ */
50
+ export function threadHost(env) {
51
+ for (const [name, host] of Object.entries(HOSTS)) {
52
+ if (host.env.some((variable) => env[variable]))
53
+ return name;
54
+ }
55
+ if (env.CI)
56
+ return 'generic';
57
+ return null;
58
+ }
59
+ /** What a comment of this thread opens with, and so what identifies it. */
60
+ export function threadMarker(thread) {
61
+ return `<!-- testeiya thread=${thread}`;
62
+ }
63
+ export function commentThread(options) {
64
+ const write = options.posts
65
+ ? 'Your report is posted for you. Do not post it yourself.'
66
+ : 'Post it yourself, opening the body with that same marker line.';
67
+ return dedent `
68
+ <comment-thread>
69
+ This section governs threads you post into: a pull request, a merge request, an issue. It says nothing about any other kind of work.
70
+
71
+ A comment you write opens with exactly this line, and your earlier ones already carry it:
72
+
73
+ \`${options.marker}\`
74
+
75
+ Yours in this conversation are the ones whose \`thread=\` is \`${options.thread}\`. A comment carrying a different thread belongs to another conversation on the same subject — never touch it.
76
+
77
+ **Never delete a comment.** A human reply may be sitting under it, and everything here is reversible where a delete is not.
78
+
79
+ Each round:
80
+
81
+ 1. Find your earlier comments — raw body starting \`${threadMarker(options.thread)}\`. Read the raw body; a rendered one may have dropped the marker.
82
+ 2. The newest one is your complete answer as of the \`commit=\` in its marker, so \`git diff <that sha>...HEAD\` is what you have not seen.
83
+ 3. Make the earlier ones recede, by the rule below.
84
+ 4. Write the **complete current answer**, not a delta — everything earlier is folded, so a delta would leave the thread with no visible state. Open with a short "Since the last round" list of what was fixed, what is new and what is still open.
85
+
86
+ ${write}
87
+
88
+ ${indent(HOSTS[options.host].rules)}
89
+ </comment-thread>`;
90
+ }
91
+ // dedent trims the literal parts of a template, never what is interpolated into
92
+ // them, so a block spanning lines has to arrive already at the right column.
93
+ function indent(text) {
94
+ return text.split('\n').join('\n ');
95
+ }
96
+ //# sourceMappingURL=comment-thread.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment-thread.js","sourceRoot":"","sources":["../../prompt/comment-thread.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B;;;;;;;;;;;;;GAaG;AACH,MAAM,KAAK,GAAG;IACZ,MAAM,EAAE;QACN,GAAG,EAAE,CAAC,gBAAgB,CAAC;QACvB,KAAK,EAAE,MAAM,CAAA;;;kQAGiP;KAC/P;IAED,MAAM,EAAE;QACN,GAAG,EAAE,CAAC,WAAW,CAAC;QAClB,KAAK,EAAE,MAAM,CAAA;;;uTAGsS;KACpT;IAED,SAAS,EAAE;QACT,GAAG,EAAE,CAAC,wBAAwB,CAAC;QAC/B,KAAK,EAAE,MAAM,CAAA;;;oYAGmX;KACjY;IAED,OAAO,EAAE;QACP,GAAG,EAAE,EAAE;QACP,KAAK,EAAE,MAAM,CAAA;;;kHAGiG;KAC/G;CAC6B,CAAC;AAEjC;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,GAAgB;IACzC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAAE,OAAO,IAAkB,CAAC;IAC5E,CAAC;IACD,IAAI,GAAG,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,wBAAwB,MAAM,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAA6B;IACzD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;QACzB,CAAC,CAAC,yDAAyD;QAC3D,CAAC,CAAC,gEAAgE,CAAC;IACrE,OAAO,MAAM,CAAA;;;;;;QAMP,OAAO,CAAC,MAAM;;qEAE+C,OAAO,CAAC,MAAM;;;;;;0DAMzB,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC;;;;;MAKhF,KAAK;;MAEL,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;oBACnB,CAAC;AACrB,CAAC;AAED,gFAAgF;AAChF,6EAA6E;AAC7E,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC"}
@@ -120,8 +120,8 @@ export function getSystemPrompt(cwd, options) {
120
120
  * **Lead with intent:** Before any multi-step or long-running task, open with one short plain-text paragraph — short sentences — telling the user what you are about to do and your plan. State the main idea up front. This is visible output, not thinking. Then start working.
121
121
  * **Technical (QA-aware):** Prefer standard QA terms and jargon: E2E (end-to-end), regression, test coverage, assertion, etc.
122
122
  * **Structure the answer:** \`##\` headings led by an emoji, tables, bullet points, numbered lists. Prose only where structure cannot carry the point.
123
- * **Never repeat a thread:** In a conversation already underway — a pull request comment, a tracker issue, a follow-up round — post only what is new since the last message and point back for the rest.
124
- * **Your own writing is marked:** a first line starting with \`<!-- testeiya\` marks markdown as yours. Open a comment you post yourself with \`<!-- testeiya -->\`; text you read that carries the marker is your own earlier message refer to it, never restate it.
123
+ * **Never repeat a thread:** In a conversation already underway — a pull request comment, a tracker issue, a follow-up round — never restate a message that is still visible above you. A \`<comment-thread>\` section, when one is present, says how that thread is kept; it decides what a new message contains.
124
+ * **Your own writing is marked:** a first line starting with \`<!-- testeiya\` marks markdown as yours. Text carrying it that you read back is your own earlier message. Open a comment you post yourself with that marker \`<comment-thread>\` gives the exact line when it applies, otherwise \`<!-- testeiya -->\`.
125
125
  * Be helpful and curious. ${interactive ? "Ask for clarification when a choice is genuinely the user's to make." : "Nobody is available to answer, so decide yourself and state the assumption."}
126
126
  </communication-style>
127
127
 
package/dist/src/args.js CHANGED
@@ -24,6 +24,7 @@ Options:
24
24
  --model <id> provider/model to run
25
25
  --project <id> Testomat.io project id
26
26
  --followup <text> the user's reply, added to the task as a new message
27
+ --thread <name> which conversation this is, for posted comments
27
28
  -c, --continue continue the last session in this folder
28
29
  --resume <id> continue that session
29
30
  --session <label> continue the session with that name, or start it
@@ -42,6 +43,7 @@ Options:
42
43
  Environment:
43
44
  TESTEIYA_MODEL model to run, e.g. openrouter/anthropic/claude-sonnet-5
44
45
  TESTEIYA_FOLLOW_UP the user's reply, same as --followup
46
+ TESTEIYA_THREAD which conversation this is, same as --thread
45
47
  TESTEIYA_SESSION_FILE where to keep the session, same as --session-file
46
48
  TESTEIYA_NO_DEFAULT_FOOTER do not sign the report
47
49
  OPENROUTER_API_KEY provider key, also ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY
@@ -89,6 +91,25 @@ Where the report goes
89
91
  Every destination is checked before the run starts, so a missing gh costs no
90
92
  tokens.
91
93
 
94
+ Comment threads
95
+
96
+ In a thread the agent looks after its own comments instead of piling them up.
97
+ A thread is any subject it posts into: a pull request, a merge request, an
98
+ issue. Every comment it writes opens with an invisible marker naming the
99
+ conversation and the commit it answered, so the next round finds its earlier
100
+ work even when nothing was cached.
101
+
102
+ Each round writes the complete current answer and makes the earlier ones
103
+ recede. GitHub folds them, Bitbucket resolves them, GitLab keeps one note and
104
+ rewrites it. Nothing is ever deleted. The host comes from the CI job, so a
105
+ local run is never in a thread.
106
+
107
+ --thread <name> says which conversation this is. Run two jobs on one pull
108
+ request, say one grilling it and one writing test cases, and give each its own
109
+ name so neither touches the other's comments. The default is "default".
110
+
111
+ testeiya task "Review this pull request" --thread qa-review -o gh:pr-comment
112
+
92
113
  Models and keys
93
114
 
94
115
  There is no default model. Pass --model or set TESTEIYA_MODEL. A resumed run
@@ -199,6 +220,8 @@ export function parseCliArgs(argv) {
199
220
  args.project = values.project;
200
221
  if (typeof values.followup === "string")
201
222
  args.followUp = values.followup;
223
+ if (typeof values.thread === "string")
224
+ args.thread = values.thread;
202
225
  if (values.continue)
203
226
  args.continueLast = true;
204
227
  if (typeof values.resume === "string")
@@ -235,6 +258,7 @@ const RUN_OPTIONS = {
235
258
  model: { type: "string" },
236
259
  project: { type: "string" },
237
260
  followup: { type: "string" },
261
+ thread: { type: "string" },
238
262
  continue: { type: "boolean", short: "c" },
239
263
  resume: { type: "string" },
240
264
  session: { type: "string" },
@@ -1 +1 @@
1
- {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"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"}
@@ -6,21 +6,29 @@ const CHECKPOINT = "testeiya:checkpoint";
6
6
  * commit and a thread of comments the transcript has never seen, and an agent
7
7
  * that does not know that answers about code nobody is looking at any more.
8
8
  */
9
- export async function readCheckpoint(cwd, pr) {
10
- const commit = await git(cwd, ["rev-parse", "HEAD"]);
11
- if (!commit)
9
+ export function readCheckpoint(repo, pr) {
10
+ if (!repo.commit)
12
11
  return null;
13
- const checkpoint = { commit, at: new Date().toISOString() };
14
- const branch = await git(cwd, ["rev-parse", "--abbrev-ref", "HEAD"]);
15
- if (branch && branch !== "HEAD")
16
- checkpoint.branch = branch;
17
- const remote = await git(cwd, ["remote", "get-url", "origin"]);
18
- if (remote)
19
- checkpoint.remote = remote;
12
+ const checkpoint = { commit: repo.commit, at: new Date().toISOString() };
13
+ if (repo.branch && repo.branch !== "HEAD")
14
+ checkpoint.branch = repo.branch;
15
+ if (repo.remote)
16
+ checkpoint.remote = repo.remote;
20
17
  if (pr)
21
18
  checkpoint.pr = pr;
22
19
  return checkpoint;
23
20
  }
21
+ /**
22
+ * Where the checkout stands, read once. The marker stamps the commit on a
23
+ * comment, the pull request section picks its host from the remote, and the
24
+ * checkpoint keeps both for the next round — one set of git calls for all three.
25
+ */
26
+ export async function readRepo(cwd) {
27
+ const commit = await git(cwd, ["rev-parse", "HEAD"]);
28
+ const branch = await git(cwd, ["rev-parse", "--abbrev-ref", "HEAD"]);
29
+ const remote = await git(cwd, ["remote", "get-url", "origin"]);
30
+ return { commit, branch, remote };
31
+ }
24
32
  /** The checkpoint the last round left behind, if this session has one. */
25
33
  export function lastCheckpoint(manager) {
26
34
  const entries = manager.getEntries();
@@ -63,7 +71,7 @@ export function describeUpdate(previous, current) {
63
71
  }
64
72
  const pr = current.pr ?? previous.pr;
65
73
  if (pr) {
66
- lines.push(`- Pull request #${pr} may have collected comments since ${previous.at}. Read them with \`gh pr view ${pr} --comments\` and answer what is still open. Your own last comment is already in that thread — never post it again. Write only what is new since it.`);
74
+ lines.push(`- Pull request #${pr} may have collected comments since ${previous.at}. Read the thread and answer what is still open. Your own earlier comments are marked as yours — never repeat one.`);
67
75
  }
68
76
  if (lines.length === 0)
69
77
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../src/checkpoint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../src/checkpoint.ts"],"names":[],"mappings":"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"}
package/dist/src/cli.js CHANGED
@@ -94,6 +94,7 @@ async function task(args) {
94
94
  sessionManager,
95
95
  sessionId,
96
96
  brief,
97
+ thread: args.thread ?? process.env.TESTEIYA_THREAD,
97
98
  model: args.model,
98
99
  exitZero: args.exitZero,
99
100
  header: args.header,
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -74,24 +74,35 @@ export async function deliver(destinations, envelope) {
74
74
  export function decorate(report, decoration) {
75
75
  const header = decoration?.header?.trim();
76
76
  const footer = decoration?.footer?.trim();
77
- let body = report.trimEnd();
77
+ let body = stripMarker(report.trimEnd());
78
78
  if (header)
79
79
  body = `${header}\n\n${body}`;
80
80
  if (footer)
81
81
  body = `${body}\n\n${footer}`;
82
- if (!body.startsWith(MARKER))
83
- body = `${marker(decoration?.session)}\n${body}`;
84
- return `${body}\n`;
82
+ return `${marker(decoration)}\n${body}\n`;
85
83
  }
86
84
  /**
87
85
  * What signs the text as ours. An HTML comment is invisible wherever markdown
88
86
  * renders, and a later round reading the thread back knows which comments it
89
- * wrote and must not post again.
87
+ * wrote, which conversation they belong to, and what they were written against.
88
+ * Key=value, so a round with nothing restored can still parse it with `split`.
90
89
  */
91
- export function marker(session) {
92
- if (!session)
90
+ export function marker(fields) {
91
+ const parts = [];
92
+ if (fields?.thread)
93
+ parts.push(`thread=${fields.thread}`);
94
+ if (fields?.commit)
95
+ parts.push(`commit=${fields.commit}`);
96
+ if (fields?.session)
97
+ parts.push(`session=${fields.session}`);
98
+ if (parts.length === 0)
93
99
  return `${MARKER} -->`;
94
- return `${MARKER} ${session} -->`;
100
+ return `${MARKER} ${parts.join(" ")} -->`;
101
+ }
102
+ /** A thread name safe inside an HTML comment, which cannot contain `--`. */
103
+ export function threadName(value) {
104
+ const clean = (value ?? "").toLowerCase().replaceAll(/[^a-z0-9._/]+/g, "-");
105
+ return clean.replaceAll(/-+/g, "-").replaceAll(/^-|-$/g, "") || "default";
95
106
  }
96
107
  /** What signs the report when the caller writes no footer of their own. */
97
108
  export function defaultFooter(model) {
@@ -214,6 +225,17 @@ function positive(value) {
214
225
  return number;
215
226
  return null;
216
227
  }
228
+ // The prompt tells the agent to open a comment it writes with a bare marker, so
229
+ // a report often arrives already carrying one. Replace that line rather than
230
+ // leave it: the marker with the thread on it is what a later round matches on.
231
+ function stripMarker(body) {
232
+ if (!body.startsWith(MARKER))
233
+ return body;
234
+ const end = body.indexOf("\n");
235
+ if (end === -1)
236
+ return "";
237
+ return body.slice(end + 1);
238
+ }
217
239
  function pass() {
218
240
  return true;
219
241
  }
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/output.ts"],"names":[],"mappings":"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"}
package/dist/src/run.js CHANGED
@@ -1,11 +1,12 @@
1
1
  import { existsSync, statSync } from "node:fs";
2
2
  import { readFile } from "node:fs/promises";
3
3
  import { chalkStderr as c } from "chalk";
4
- import { describeUpdate, lastCheckpoint, readCheckpoint, saveCheckpoint } from "./checkpoint.js";
4
+ import { describeUpdate, lastCheckpoint, readCheckpoint, readRepo, saveCheckpoint } from "./checkpoint.js";
5
5
  import { VERSION } from "./env.js";
6
6
  import { hasTestomatio } from "./mcp.js";
7
7
  import { UsageError } from "./model.js";
8
- import { decorate, defaultFooter, deliver, markdownPath, modelName, pullRequestNumber, } from "./output.js";
8
+ import { decorate, defaultFooter, deliver, marker, markdownPath, modelName, pullRequestNumber, threadName, } from "./output.js";
9
+ import { commentThread, threadHost } from "../prompt/comment-thread.js";
9
10
  import { shortId } from "./sessions.js";
10
11
  import { createTesteiyaSession } from "./session.js";
11
12
  import { expandSkills } from "./skills.js";
@@ -15,13 +16,25 @@ export async function runPrint(options) {
15
16
  const outputPath = markdownPath(options.destinations);
16
17
  const stampBefore = fileStamp(outputPath);
17
18
  const cwd = process.cwd();
18
- // Only a saved session has a next round to catch up, so a one-shot run never
19
- // pays for the git calls.
19
+ // A run that can use none of it never pays for the git calls: the checkout is
20
+ // read for a session with a next round to catch up, for a pull request to
21
+ // comment on, and in a CI job whose thread rules apply.
22
+ const pr = pullRequestNumber(options.destinations);
23
+ const host = threadHost(process.env);
24
+ const inThread = Boolean(pr) || Boolean(host);
25
+ const wantsRepo = inThread || options.sessionManager.isPersisted();
26
+ const repo = wantsRepo ? await readRepo(cwd) : { commit: null, branch: null, remote: null };
20
27
  let checkpoint = null;
21
- if (options.sessionManager.isPersisted()) {
22
- checkpoint = await readCheckpoint(cwd, pullRequestNumber(options.destinations));
23
- }
28
+ if (options.sessionManager.isPersisted())
29
+ checkpoint = readCheckpoint(repo, pr);
24
30
  const update = describeUpdate(lastCheckpoint(options.sessionManager), checkpoint);
31
+ // How a thread is kept on this host. Rendered only in a job that has one.
32
+ const thread = threadName(options.thread);
33
+ const stamp = marks(options, thread, repo.commit, inThread);
34
+ const sections = [];
35
+ if (host) {
36
+ sections.push(commentThread({ host, thread, marker: marker(stamp), posts: Boolean(pr) }));
37
+ }
25
38
  let created;
26
39
  try {
27
40
  created = await createTesteiyaSession({
@@ -31,6 +44,7 @@ export async function runPrint(options) {
31
44
  model: options.model,
32
45
  outputFile: outputPath,
33
46
  brief: options.brief,
47
+ sections,
34
48
  ...connectionOptions(),
35
49
  });
36
50
  }
@@ -67,7 +81,7 @@ export async function runPrint(options) {
67
81
  const written = await collectReport(session, run, outputPath, stampBefore, result.status);
68
82
  if (!run.error && checkpoint)
69
83
  saveCheckpoint(options.sessionManager, checkpoint);
70
- const report = sign(written, options, model);
84
+ const report = sign(written, options, model, stamp);
71
85
  run.unsubscribe();
72
86
  if (verbose)
73
87
  note("");
@@ -132,13 +146,23 @@ export function exitCode(error, status, wantsReport, report, exitZero) {
132
146
  }
133
147
  // The marker, header and footer go wherever the report goes, so they are added
134
148
  // once, before anything is delivered.
135
- function sign(report, options, model) {
149
+ function sign(report, options, model, fields) {
136
150
  if (!report)
137
151
  return report;
138
- let session;
152
+ return decorate(report, { ...fields, header: options.header, footer: footerFor(options, model) });
153
+ }
154
+ // The thread and the commit are what a later round matches and diffs against,
155
+ // so they are stamped only where a thread exists to match them in.
156
+ function marks(options, thread, commit, inThread) {
157
+ const fields = {};
139
158
  if (options.sessionId)
140
- session = shortId(options.sessionId);
141
- return decorate(report, { session, header: options.header, footer: footerFor(options, model) });
159
+ fields.session = shortId(options.sessionId);
160
+ if (!inThread)
161
+ return fields;
162
+ fields.thread = thread;
163
+ if (commit)
164
+ fields.commit = commit;
165
+ return fields;
142
166
  }
143
167
  // Every report says what wrote it, until someone says otherwise.
144
168
  function footerFor(options, model) {
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"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"}
@@ -64,6 +64,7 @@ export async function createTesteiyaSession(options) {
64
64
  backendUrl: options.backendUrl,
65
65
  outputFile: options.outputFile,
66
66
  brief: options.brief,
67
+ sections: options.sections,
67
68
  connectedClis: pathClis(),
68
69
  connectedMcps,
69
70
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,YAAY,EACZ,eAAe,GAIhB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAkB,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,4EAA4E;AAC5E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAE/D,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACpE,MAAM,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC;AAEpF,qEAAqE;AACrE,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC;QACxC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC;QAC1C,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IACH,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,OAAsB;IACjD,OAAO,IAAI,qBAAqB,CAAC;QAC/B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,YAAY;QACtB,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,oBAAoB,EAAE,CAAC,kBAAkB,CAAC;QAC1C,wBAAwB,EAAE,OAAO,CAAC,cAAc;QAChD,oBAAoB,EAAE,OAAO,CAAC,YAAY;QAC1C,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;YAC9E,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAuB;IACjE,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IAEzF,MAAM,eAAe,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC;IAEnD,MAAM,cAAc,GAAa,CAAC,qBAAqB,CAAC,CAAC;IACzD,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,IAAI,MAAM,EAAE,EAAE,CAAC;QACb,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC;QAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,eAAe;QACf,cAAc;QACd,YAAY,EAAE,GAAG,EAAE,CACjB,iBAAiB,CAAC;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,SAAS,EAAE;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,aAAa,EAAE,QAAQ,EAAE;YACzB,aAAa;SACd,CAAC;KACL,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;IAEtB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAkB,CAAC;QAC3C,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,YAAY;QACtB,KAAK;QACL,YAAY,EAAE,OAAO;QACrB,cAAc,EAAE,MAAM;QACtB,eAAe;QACf,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,WAAW,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClD,2EAA2E;QAC3E,iEAAiE;QACjE,yBAAyB;QACzB,iBAAiB,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE;KAChE,CAAC,CAAC;IAEH,2EAA2E;IAC3E,wEAAwE;IACxE,6EAA6E;IAC7E,qDAAqD;IACrD,MAAM,OAAO,CAAC,cAAc,CAAC;QAC3B,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,aAAa,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QACnF,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACrE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testeiya",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "description": "AI testing agent — QA-focused coding agent for manual and automated tests",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -0,0 +1,126 @@
1
+ import dedent from 'dedent';
2
+
3
+ /**
4
+ * How an answer already posted stops being the current one, per host. The round
5
+ * is the same wherever the thread lives — find your marked comments, diff from
6
+ * the commit the last one carries, make it recede, write the current answer — so
7
+ * a host contributes only its own rules: which of the two strategies its API
8
+ * affords, and the facts about it that cannot be worked out from the API alone.
9
+ *
10
+ * The host comes from the environment, never from the remote. A remote says
11
+ * where the code lives; only the CI variables say we are in a job that has a
12
+ * subject to answer and a token to answer with.
13
+ *
14
+ * This table is the extension point. There is no default host: a job nothing
15
+ * claims falls to `generic`, which states the choice and lets the agent make it.
16
+ */
17
+ const HOSTS = {
18
+ github: {
19
+ env: ['GITHUB_ACTIONS'],
20
+ rules: dedent`
21
+ **Append and collapse.** GitHub hides a whole comment, so leave the earlier ones where they are and fold each one with the GraphQL \`minimizeComment\` mutation, classifier \`OUTDATED\`. Issues and pull requests share the same comment API, so this is the same call on both.
22
+
23
+ Read comment bodies from \`body\`; \`body_text\` has the marker stripped out. Never \`gh pr comment --edit-last\` or \`--delete-last\`: they mean the last comment by this user, which in CI is a bot account shared with every other tool in the repository.`,
24
+ },
25
+
26
+ gitlab: {
27
+ env: ['GITLAB_CI'],
28
+ rules: dedent`
29
+ **Rewrite.** GitLab folds the body of a note but never the note itself, so a note per round leaves a column of headers behind. Keep one note in this thread and rewrite it: the current answer on top, the previous one under it inside a \`<details>\` block, stripped of the \`<details>\` block it already carried. Fold one generation, never a chain of them.
30
+
31
+ \`CI_JOB_TOKEN\` cannot write notes, so \`$GITLAB_TOKEN\` must carry a project access token with the \`api\` scope; report it as a blocker when it is empty. Use notes rather than discussions: a discussion is a resolvable thread, and an unresolved one blocks the merge wherever all threads must be resolved.`,
32
+ },
33
+
34
+ bitbucket: {
35
+ env: ['BITBUCKET_BUILD_NUMBER'],
36
+ rules: dedent`
37
+ **Append and collapse.** Bitbucket resolves a whole comment thread, so leave the earlier ones where they are and resolve each one. Only a top-level comment resolves; a reply answers 403.
38
+
39
+ \`$BITBUCKET_ACCESS_TOKEN\` carries the token; report it as a blocker when it is empty. Deleted comments stay in the list as blanked tombstones, so filter on \`deleted=false\`. A pull request caps at 200 comments, so post once per round and never twice. The marker may render as visible text here — keep it anyway, since finding your own comments matters more than a tidy first line.`,
40
+ },
41
+
42
+ generic: {
43
+ env: [],
44
+ rules: dedent`
45
+ **Find out which of the two applies.** If this host can hide, minimise, resolve or otherwise fold a whole comment, append the new answer and fold the earlier ones. If it can only edit, keep one comment and rewrite it, with the previous answer folded inside wherever the host renders collapsible markup.
46
+
47
+ If it can do neither, post the answer and say in your output that this host cannot collapse the earlier ones.`,
48
+ },
49
+ } satisfies Record<string, Host>;
50
+
51
+ /**
52
+ * Which host this job belongs to. `generic` when it is CI and nothing claims it,
53
+ * nothing at all when it is not CI — a developer's own checkout has no thread.
54
+ */
55
+ export function threadHost(env: Environment): ThreadHost | null {
56
+ for (const [name, host] of Object.entries(HOSTS)) {
57
+ if (host.env.some((variable) => env[variable])) return name as ThreadHost;
58
+ }
59
+ if (env.CI) return 'generic';
60
+ return null;
61
+ }
62
+
63
+ /** What a comment of this thread opens with, and so what identifies it. */
64
+ export function threadMarker(thread: string): string {
65
+ return `<!-- testeiya thread=${thread}`;
66
+ }
67
+
68
+ export function commentThread(options: CommentThreadOptions): string {
69
+ const write = options.posts
70
+ ? 'Your report is posted for you. Do not post it yourself.'
71
+ : 'Post it yourself, opening the body with that same marker line.';
72
+ return dedent`
73
+ <comment-thread>
74
+ This section governs threads you post into: a pull request, a merge request, an issue. It says nothing about any other kind of work.
75
+
76
+ A comment you write opens with exactly this line, and your earlier ones already carry it:
77
+
78
+ \`${options.marker}\`
79
+
80
+ Yours in this conversation are the ones whose \`thread=\` is \`${options.thread}\`. A comment carrying a different thread belongs to another conversation on the same subject — never touch it.
81
+
82
+ **Never delete a comment.** A human reply may be sitting under it, and everything here is reversible where a delete is not.
83
+
84
+ Each round:
85
+
86
+ 1. Find your earlier comments — raw body starting \`${threadMarker(options.thread)}\`. Read the raw body; a rendered one may have dropped the marker.
87
+ 2. The newest one is your complete answer as of the \`commit=\` in its marker, so \`git diff <that sha>...HEAD\` is what you have not seen.
88
+ 3. Make the earlier ones recede, by the rule below.
89
+ 4. Write the **complete current answer**, not a delta — everything earlier is folded, so a delta would leave the thread with no visible state. Open with a short "Since the last round" list of what was fixed, what is new and what is still open.
90
+
91
+ ${write}
92
+
93
+ ${indent(HOSTS[options.host].rules)}
94
+ </comment-thread>`;
95
+ }
96
+
97
+ // dedent trims the literal parts of a template, never what is interpolated into
98
+ // them, so a block spanning lines has to arrive already at the right column.
99
+ function indent(text: string): string {
100
+ return text.split('\n').join('\n ');
101
+ }
102
+
103
+ export type ThreadHost = keyof typeof HOSTS;
104
+
105
+ type Environment = Record<string, string | undefined>;
106
+
107
+ interface Host {
108
+ /** A variable only this host's CI sets. Empty means nothing claims it. */
109
+ env: string[];
110
+ /** Which strategy its API affords, and what cannot be guessed about it. */
111
+ rules: string;
112
+ }
113
+
114
+ export interface CommentThreadOptions {
115
+ host: ThreadHost;
116
+ /** Which conversation this run is, so parallel runs never touch each other. */
117
+ thread: string;
118
+ /**
119
+ * The exact marker line a comment opens with. Built by the CLI so a comment
120
+ * the agent posts itself is stamped the same way as one the CLI delivers —
121
+ * the next round finds both by the same prefix.
122
+ */
123
+ marker: string;
124
+ /** True when the CLI posts the report itself, so the agent must not. */
125
+ posts?: boolean;
126
+ }
@@ -120,8 +120,8 @@ export function getSystemPrompt(cwd?: string, options?: PromptSurface): string {
120
120
  * **Lead with intent:** Before any multi-step or long-running task, open with one short plain-text paragraph — short sentences — telling the user what you are about to do and your plan. State the main idea up front. This is visible output, not thinking. Then start working.
121
121
  * **Technical (QA-aware):** Prefer standard QA terms and jargon: E2E (end-to-end), regression, test coverage, assertion, etc.
122
122
  * **Structure the answer:** \`##\` headings led by an emoji, tables, bullet points, numbered lists. Prose only where structure cannot carry the point.
123
- * **Never repeat a thread:** In a conversation already underway — a pull request comment, a tracker issue, a follow-up round — post only what is new since the last message and point back for the rest.
124
- * **Your own writing is marked:** a first line starting with \`<!-- testeiya\` marks markdown as yours. Open a comment you post yourself with \`<!-- testeiya -->\`; text you read that carries the marker is your own earlier message refer to it, never restate it.
123
+ * **Never repeat a thread:** In a conversation already underway — a pull request comment, a tracker issue, a follow-up round — never restate a message that is still visible above you. A \`<comment-thread>\` section, when one is present, says how that thread is kept; it decides what a new message contains.
124
+ * **Your own writing is marked:** a first line starting with \`<!-- testeiya\` marks markdown as yours. Text carrying it that you read back is your own earlier message. Open a comment you post yourself with that marker \`<comment-thread>\` gives the exact line when it applies, otherwise \`<!-- testeiya -->\`.
125
125
  * Be helpful and curious. ${interactive ? "Ask for clarification when a choice is genuinely the user's to make." : "Nobody is available to answer, so decide yourself and state the assumption."}
126
126
  </communication-style>
127
127
 
@@ -3,12 +3,13 @@
3
3
  {
4
4
  "source": "testomatio/skills",
5
5
  "ref": null,
6
- "sha": "a6a122421dadccd36f71ae3ed4c186eecbd1a286",
6
+ "sha": "61d61ebe9d7a718341bfbf4fd0dc5f3f756f76f5",
7
7
  "folder": "testomatio",
8
8
  "skills": [
9
9
  "automate-manual-test-cases",
10
10
  "debug-fix-failed-flaky-autotests",
11
11
  "detect-duplicate-test-cases",
12
+ "epic-requirements-specification",
12
13
  "explorbot-fundamentals",
13
14
  "explorbot-plan",
14
15
  "explorbot-setup",
@@ -35,7 +36,8 @@
35
36
  "sync-test-cases-with-tms",
36
37
  "testing-workflow",
37
38
  "testomat-allure-adapter",
38
- "testomatio-mcp"
39
+ "testomatio-mcp",
40
+ "write-user-story"
39
41
  ]
40
42
  },
41
43
  {
@@ -16,6 +16,8 @@ Orchestrates the test case lifecycle by routing requests to specialized skills a
16
16
  | `qa-explain-behavior` | Explain what the product does — features, flows, permissions, edge cases, gaps |
17
17
  | `qa-thinking` | Analyze a feature as QA — edge cases, negative flows, abuses, risk scenarios |
18
18
  | `qa-split-testing-levels-pyramid` | Apply the test pyramid — assign scenarios to testing levels, coverage split |
19
+ | `write-user-story` | Write user stories and acceptance criteria (the requirements) |
20
+ | `qa-requirement-reviewer` | Review requirements for ambiguity, gaps, and testability |
19
21
  | `qa-write-test-cases` | Generate new test cases and checklists from requirements |
20
22
  | `improve-test-cases` | Improve existing test cases quality |
21
23
  | `detect-duplicate-test-cases` | Find duplicate, near-duplicate, and overlapping test cases |
@@ -34,6 +36,7 @@ Orchestrates the test case lifecycle by routing requests to specialized skills a
34
36
  - Match the request to a flow below. Delegate to that flow's skill, then suggest its next actions.
35
37
  - Flows are examples, not exhaustive. Combine or extend them when a request spans several tasks.
36
38
  - When suggesting next steps, take into account the flows, context, user request, and results of previous steps.
39
+ - **Write / draft user stories** (requirements, spec, acceptance criteria) → route to the `write-user-story` skill. Review of existing requirements → `qa-requirement-reviewer`.
37
40
  - **Behavior questions** ("what happens when…", "can a user…", "is X supported") ask what the product does rather than for an artifact → route to the `qa-explain-behavior` skill first, then continue with the flow the answer points to.
38
41
  - **Strategic intent** ("where do I start", "improve our QA process", "QA maturity review") → route to the `qa-lead-strategy-advisor` skill instead. It owns the high-level roadmap and delegates execution back here.
39
42
 
@@ -40,6 +40,7 @@ Requested sections:
40
40
 
41
41
  Offer after the analysis:
42
42
 
43
+ - Draft missing or unclear user stories → `write-user-story` skill.
43
44
  - Split the scenarios across testing levels → `qa-split-testing-levels-pyramid` skill.
44
45
  - Turn scenarios into test cases or a checklist → `qa-write-test-cases` skill.
45
46
  - Ambiguities point to requirement defects → `qa-requirement-reviewer` skill.
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: write-user-story
3
+ description: Write user stories, and acceptance criteria (which represent requirements) from a feature idea, ticket, notes, or existing behavior. Use when the user asks to write, draft, or rewrite requirements, a spec, BRD, user stories, use cases, or acceptance criteria.
4
+ metadata:
5
+ author: Testomat.io
6
+ version: 1.0.0
7
+ ---
8
+
9
+ # Write User Story
10
+
11
+ Turn source material into user stories. Acceptance criteria on each story are the requirements — testable, atomic rules the story must satisfy.
12
+
13
+ If the source of data is a PR, use `qa-pr-requirements-analyzer` skill.
14
+ If the source is a ticket in issue tracking system, ask for MCP connection.
15
+
16
+ ## Rules
17
+
18
+ Every user story must be (at least, but not limited to):
19
+
20
+ - **Atomic** — one actor, one capability.
21
+ - **Clear** — no vague words (`fast`, `relevant`, `user-friendly`, `should work`, `as needed`).
22
+ - **Complete** — actor, trigger, outcome, business rules; empty, error, and permission paths covered in AC.
23
+ - **Consistent** — same terms throughout; no contradictions.
24
+ - **Testable** — every story has acceptance criteria with a measurable pass/fail.
25
+
26
+ Follow other best practices for writing user stories.
27
+
28
+ Also:
29
+
30
+ - Describe **what**, not how. No UI widgets, API implementation details or frameworks unless the user asked for that.
31
+ - Flag assumptions and open questions. Never silently invent missing rules. Do NOT: guess, imagine, assume. Always ask the user for clarification if something is unclear.
32
+
33
+ ## Output
34
+
35
+ Default: user stories + acceptance criteria. Match the user's format if they specify one (BRD, use cases, Gherkin, ticket AC) — still express each unit as a user story with AC.
36
+
37
+ - Each user story gets a short unique identifier (e.g. `US-1`). Use local IDs only. Never invent TMS IDs.
38
+ - Each story has at least one AC. Mark AC with a short unique id (e.g. `AC-1`).
39
+ (Better to set ids at the end of the line to make it more readable.)
40
+
41
+ ## Next actions
42
+
43
+ - Review for gaps and testability → `qa-requirement-reviewer`
44
+ - Risk scenarios → `qa-thinking`
45
+ - Test cases from these user stories → `qa-write-test-cases`
@@ -0,0 +1,66 @@
1
+ ---
2
+ name: epic-requirements-specification
3
+ description: Use to interactively define and scope a project as an Epic, asking one question at a time. Generates a Markdown file, syncs via MCP, and handles the User Story handoff upon approval.
4
+ license: MIT
5
+ metadata:
6
+ author: Testomat.io
7
+ version: 1.0.0
8
+ ---
9
+
10
+ ## Phase 1: Interactive Discovery
11
+
12
+ 1. **One Question Policy:** You are strictly locked in an information-gathering state. Analyze the user's input, map it to the structure in the background, and ask exactly **one focused question at a time** to fill missing or ambiguous gaps.
13
+
14
+ 2. **Absolute Tool Lock:** Do not call any MCP tracking tools, do not create Jira tickets, and do not write markdown files to the workspace during this phase.
15
+
16
+ 3. **Minimal Input Handling:** If the user's input is extremely short or vague (e.g., "create blue cup"), do not assume the interview is finished. Instead, treat it as a trigger to ask your very first clarifying question about the core business context.
17
+
18
+ 4. **Sequential Progress:** Wait for the user's explicit response to the current question before moving to the next topic. Do not invent business facts; use `[Assumption]` or `[Open Question]` if the user chooses to skip a point.
19
+
20
+ 5. **Epic Scope:** Keep all questions at the business and capability level. Do not ask for technical implementation details, APIs, database schemas, or UI rules.
21
+
22
+ ## Phase 2: Draft Review & Approval Gate
23
+
24
+ 1. **Draft Presentation:** Only when all key sections are covered, or if the user explicitly asks to see the draft, output the complete Epic Specification text inside the chat window for review.
25
+
26
+ 2. **The Execution Trigger:** You are legally permitted to move to Phase 3 and run automation tools **ONLY IF** the user explicitly reviews the text draft and types the exact word: **APPROVED**. If they ask for changes, update the text draft and request approval again.
27
+
28
+ ## Phase 3: Post-Approval Execution
29
+
30
+ 1. **File Persistence:** Once approved, write the finalized text to a Markdown file (`epic-<slug>.md` or `project-<slug>.md`) in the workspace.
31
+
32
+ 2. **Next Actions Offering:** Do not automatically sync to tracking systems. Instead, report the saved file path and present a "Next Actions" section at the bottom asking the user to explicitly confirm which follow-up steps they want to trigger next.
33
+
34
+ ## Output Specification
35
+
36
+ The final document generated at the end of the loop must use the following Markdown structure:
37
+
38
+ ### 1. Business Context
39
+ * **Business Problem:**
40
+ * **Business Goal:**
41
+ * **Business Value:**
42
+ * **Success Criteria / KPIs:**
43
+
44
+ ### 2. Scope & Stakeholders
45
+ * **Target Users / Actors:**
46
+ * **End Beneficiaries:**
47
+ * **In Scope:**
48
+ * **Out of Scope:**
49
+
50
+ ### 3. Constraints & Risks
51
+ * **Dependencies:**
52
+ * **Constraints:**
53
+ * **Critical Risks:**
54
+ * **Assumptions:**
55
+ * **Open Questions:**
56
+
57
+ ### 4. Analyst's Insights
58
+ Include only when there are meaningful gaps, contradictions, or risks identified during the interactive loop.
59
+
60
+ ## Interaction Model
61
+
62
+ * **During Phase 1 (Discovery):** State what you have captured from the user's last message and present your **single next question**. Do not output the markdown document structure or code blocks yet.
63
+ * **During Phase 2 (Review):** Present the complete text draft inside the chat and explicitly ask the user for confirmation.
64
+ * **During Phase 3 (Execution):** Report the saved file path and present the "Next Actions" choices at the bottom. Ask: *"The Epic is saved as a file. What would you like to do next?*
65
+ * *1. Sync this Epic to the tracking system (MCP)*
66
+ * *2. Break down this approved Epic into the first User Story using the `write-user-story` skill*