testeiya 0.2.1 → 0.3.1-0.1

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 (404) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +309 -171
  3. package/dist/prompt/context.js +79 -0
  4. package/dist/prompt/context.js.map +1 -0
  5. package/dist/prompt/index.js +60 -0
  6. package/dist/prompt/index.js.map +1 -0
  7. package/dist/prompt/print.js +30 -0
  8. package/dist/prompt/print.js.map +1 -0
  9. package/dist/prompt/project-info.js +2 -0
  10. package/dist/prompt/project-info.js.map +1 -0
  11. package/{src/prompt/system-prompt.ts → dist/prompt/system-prompt.js} +38 -25
  12. package/dist/prompt/system-prompt.js.map +1 -0
  13. package/dist/prompt/testomatio.js +264 -0
  14. package/dist/prompt/testomatio.js.map +1 -0
  15. package/dist/prompt/tools.js +70 -0
  16. package/dist/prompt/tools.js.map +1 -0
  17. package/dist/prompt/vocab.js +8 -0
  18. package/dist/prompt/vocab.js.map +1 -0
  19. package/dist/src/args.js +207 -0
  20. package/dist/src/args.js.map +1 -0
  21. package/dist/src/cli.js +114 -0
  22. package/dist/src/cli.js.map +1 -0
  23. package/dist/src/doctor.js +171 -0
  24. package/dist/src/doctor.js.map +1 -0
  25. package/dist/src/env.js +93 -0
  26. package/dist/src/env.js.map +1 -0
  27. package/dist/src/mcp-extension.js +9 -0
  28. package/dist/src/mcp-extension.js.map +1 -0
  29. package/dist/src/mcp.js +139 -0
  30. package/dist/src/mcp.js.map +1 -0
  31. package/dist/src/model.js +71 -0
  32. package/dist/src/model.js.map +1 -0
  33. package/dist/src/models.js +38 -0
  34. package/dist/src/models.js.map +1 -0
  35. package/dist/src/output.js +194 -0
  36. package/dist/src/output.js.map +1 -0
  37. package/dist/src/result.js +41 -0
  38. package/dist/src/result.js.map +1 -0
  39. package/dist/src/run.js +295 -0
  40. package/dist/src/run.js.map +1 -0
  41. package/dist/src/session.js +98 -0
  42. package/dist/src/session.js.map +1 -0
  43. package/dist/src/sessions.js +72 -0
  44. package/dist/src/sessions.js.map +1 -0
  45. package/dist/src/skills.js +88 -0
  46. package/dist/src/skills.js.map +1 -0
  47. package/dist/vendor/mcp.js +14801 -0
  48. package/mcp-tools.json +2967 -0
  49. package/package.json +34 -43
  50. package/prompt/context.ts +101 -0
  51. package/prompt/index.ts +102 -0
  52. package/prompt/print.ts +32 -0
  53. package/prompt/project-info.ts +30 -0
  54. package/prompt/system-prompt.ts +187 -0
  55. package/{src/prompt → prompt}/testomatio.ts +120 -9
  56. package/prompt/tools.ts +72 -0
  57. package/prompt/vocab.ts +7 -0
  58. package/skills/codeceptjs/ci-fix-tests/SKILL.md +7 -8
  59. package/skills/codeceptjs/codeceptjs-auth/SKILL.md +47 -64
  60. package/skills/codeceptjs/codeceptjs-exploration/SKILL.md +56 -47
  61. package/skills/codeceptjs/codeceptjs-fundamentals/SKILL.md +144 -106
  62. package/skills/codeceptjs/codeceptjs-run-analysis/SKILL.md +50 -57
  63. package/skills/codeceptjs/debugging-codeceptjs-tests/SKILL.md +88 -196
  64. package/skills/codeceptjs/migrate-codeceptjs-4/SKILL.md +4 -5
  65. package/skills/codeceptjs/migrate-cypress-to-codeceptjs/SKILL.md +25 -36
  66. package/skills/codeceptjs/migrate-protractor-to-codeceptjs/SKILL.md +23 -36
  67. package/skills/codeceptjs/migrate-selenium-java-to-codeceptjs/SKILL.md +23 -36
  68. package/skills/codeceptjs/migrate-testcafe-to-codeceptjs/SKILL.md +23 -35
  69. package/skills/codeceptjs/refactoring-codeceptjs-tests/SKILL.md +50 -53
  70. package/skills/codeceptjs/writing-codeceptjs-tests/SKILL.md +87 -191
  71. package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/SKILL.md +1 -1
  72. package/{skills.lock.json → skills/skills.lock.json} +43 -36
  73. package/skills/skills.yaml +34 -0
  74. package/skills/testomatio/explorbot/explorbot-fundamentals/SKILL.md +49 -61
  75. package/skills/testomatio/explorbot/explorbot-fundamentals/references/no-install.md +36 -0
  76. package/skills/testomatio/explorbot/explorbot-plan/SKILL.md +20 -7
  77. package/skills/testomatio/explorbot/explorbot-setup/SKILL.md +41 -289
  78. package/skills/testomatio/qa-process/qa-explain-behavior/SKILL.md +111 -0
  79. package/skills/testomatio/qa-process/qa-explain-behavior/references/answer-shapes.md +116 -0
  80. package/skills/testomatio/qa-process/qa-explain-behavior/references/examples.md +157 -0
  81. package/skills/testomatio/qa-process/qa-lead-strategy-advisor/SKILL.md +91 -0
  82. package/skills/testomatio/qa-process/qa-lead-strategy-advisor/references/output-format.md +71 -0
  83. package/skills/testomatio/qa-process/testing-workflow/SKILL.md +227 -0
  84. package/skills/testomatio/test-automation/qa-data-seeder/SKILL.md +83 -0
  85. package/skills/testomatio/test-automation/run-tests-with-testomatio-reporter/SKILL.md +5 -3
  86. package/skills/testomatio/test-automation/setup-change-aware-pr-testing/SKILL.md +190 -0
  87. package/skills/testomatio/test-automation/setup-ci-automation/SKILL.md +76 -0
  88. package/skills/testomatio/test-management/qa-split-testing-levels-pyramid/SKILL.md +55 -0
  89. package/skills/testomatio/test-management/qa-sprint-report-by-testomatio/SKILL.md +220 -0
  90. package/skills/testomatio/test-management/qa-sprint-report-by-testomatio/references/qa-sprint-report.md +126 -0
  91. package/skills/testomatio/test-management/qa-test-code-coverage/SKILL.md +1 -1
  92. package/skills/testomatio/test-management/qa-thinking/SKILL.md +25 -25
  93. package/skills/testomatio/test-management/testomatio-mcp/SKILL.md +14 -1
  94. package/skills/testomatio/test-management/testomatio-mcp/references/MCP_SETUP.md +8 -0
  95. package/assets/testeiya-logo-dark.svg +0 -16
  96. package/assets/testeiya-logo.svg +0 -15
  97. package/models.catalog.json +0 -6963
  98. package/skills/playwright-best-practices-skill/LICENSE.md +0 -7
  99. package/skills/playwright-best-practices-skill/README.md +0 -147
  100. package/skills/testeiya/README.md +0 -29
  101. package/skills/testeiya/answer-formatting/SKILL.md +0 -30
  102. package/skills/testeiya/check-cucumber/SKILL.md +0 -200
  103. package/skills/testeiya/check-tests/SKILL.md +0 -260
  104. package/skills/testeiya/manual-run-assistant/SKILL.md +0 -61
  105. package/skills/testeiya/testomatio-docs/INDEX.md +0 -175
  106. package/skills/testeiya/testomatio-docs/SKILL.md +0 -102
  107. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-agents.md +0 -144
  108. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-powered-features.md +0 -531
  109. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-requirements.md +0 -437
  110. package/skills/testeiya/testomatio-docs/docs/advanced/api-access/index.md +0 -191
  111. package/skills/testeiya/testomatio-docs/docs/advanced/branches-folder/index.md +0 -277
  112. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/bulk-edit-demos.mdx +0 -39
  113. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/bulk-edit-on-suite-and-test-level.md +0 -122
  114. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/what-is-bulk-edit.md +0 -170
  115. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/branches.md +0 -53
  116. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/index.mdx +0 -98
  117. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/jira-issue.md +0 -151
  118. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/runs-and-reports.md +0 -377
  119. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/work-in-jira.md +0 -267
  120. package/skills/testeiya/testomatio-docs/docs/advanced/living-doc/index.md +0 -138
  121. package/skills/testeiya/testomatio-docs/docs/advanced/milestones/index.md +0 -220
  122. package/skills/testeiya/testomatio-docs/docs/advanced/shortcuts/index.md +0 -48
  123. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/labels-and-custom-fields.md +0 -201
  124. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/tags-or-labels.md +0 -94
  125. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/tags.md +0 -243
  126. package/skills/testeiya/testomatio-docs/docs/advanced/test-artifacts/index.md +0 -135
  127. package/skills/testeiya/testomatio-docs/docs/advanced/tql/index.md +0 -394
  128. package/skills/testeiya/testomatio-docs/docs/getting-started/index.md +0 -290
  129. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/azure.md +0 -96
  130. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/bamboo.md +0 -94
  131. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/bitbucket.md +0 -106
  132. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/circle.md +0 -115
  133. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/github.md +0 -120
  134. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/gitlab.md +0 -88
  135. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/index.mdx +0 -151
  136. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/jenkins.md +0 -121
  137. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/teamcity.md +0 -96
  138. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/azure.md +0 -31
  139. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/clickup.md +0 -54
  140. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/confluence.md +0 -34
  141. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/github.md +0 -31
  142. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/gitlab.md +0 -93
  143. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/index.md +0 -131
  144. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/jira.md +0 -164
  145. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/linear.md +0 -29
  146. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/shortcut.md +0 -67
  147. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/youtrack.md +0 -94
  148. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/azure-devops.md +0 -53
  149. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/email.md +0 -71
  150. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/jira.md +0 -52
  151. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/ms-teams.md +0 -60
  152. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/rules.md +0 -267
  153. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/slack.md +0 -82
  154. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/telegram.md +0 -73
  155. package/skills/testeiya/testomatio-docs/docs/integrations/scim-provisioning/index.mdx +0 -207
  156. package/skills/testeiya/testomatio-docs/docs/integrations/scim-provisioning/okta.md +0 -204
  157. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/azure.md +0 -95
  158. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/google.md +0 -75
  159. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/index.mdx +0 -33
  160. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/okta.md +0 -108
  161. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/saml.md +0 -66
  162. package/skills/testeiya/testomatio-docs/docs/legal/compliance/gdpr.md +0 -95
  163. package/skills/testeiya/testomatio-docs/docs/legal/compliance/index.mdx +0 -94
  164. package/skills/testeiya/testomatio-docs/docs/legal/compliance/privacy.md +0 -26
  165. package/skills/testeiya/testomatio-docs/docs/legal/compliance/terms.md +0 -32
  166. package/skills/testeiya/testomatio-docs/docs/legal/security/index.mdx +0 -242
  167. package/skills/testeiya/testomatio-docs/docs/legal/security/jira.md +0 -140
  168. package/skills/testeiya/testomatio-docs/docs/legal/security/subprocessors.md +0 -76
  169. package/skills/testeiya/testomatio-docs/docs/management/company/administration.md +0 -363
  170. package/skills/testeiya/testomatio-docs/docs/management/company/audit-log.md +0 -41
  171. package/skills/testeiya/testomatio-docs/docs/management/company/plan-features-comparison.md +0 -240
  172. package/skills/testeiya/testomatio-docs/docs/management/company/subscriptions.md +0 -326
  173. package/skills/testeiya/testomatio-docs/docs/management/company/trials.md +0 -75
  174. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/accountant.md +0 -49
  175. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/index.mdx +0 -285
  176. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/read-only-user.md +0 -67
  177. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/teams.md +0 -138
  178. package/skills/testeiya/testomatio-docs/docs/management/project/settings.md +0 -87
  179. package/skills/testeiya/testomatio-docs/docs/management/project/templates.md +0 -546
  180. package/skills/testeiya/testomatio-docs/docs/project/analytics/index.md +0 -326
  181. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/classical-tests-markdown-format.md +0 -386
  182. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/download-manual-tests-as-files.md +0 -378
  183. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/export-to-obsidian.md +0 -112
  184. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/export-to-spreadsheet.md +0 -127
  185. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/auto-import.md +0 -63
  186. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Allure-TestOps.md +0 -49
  187. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-QTest.md +0 -41
  188. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Qase.md +0 -39
  189. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Zephyr.md +0 -37
  190. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-csv-xlsx.md +0 -117
  191. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-cucumber.md +0 -93
  192. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-qmetry.md +0 -44
  193. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-source-code.md +0 -117
  194. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testcaselabs.md +0 -44
  195. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testmo.md +0 -47
  196. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testrail.md +0 -82
  197. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-xray.md +0 -55
  198. package/skills/testeiya/testomatio-docs/docs/project/plans/index.md +0 -334
  199. package/skills/testeiya/testomatio-docs/docs/project/pulse/index.md +0 -104
  200. package/skills/testeiya/testomatio-docs/docs/project/runs/archive-runs-and-groups.md +0 -176
  201. package/skills/testeiya/testomatio-docs/docs/project/runs/custom-statuses.md +0 -195
  202. package/skills/testeiya/testomatio-docs/docs/project/runs/environments.md +0 -203
  203. package/skills/testeiya/testomatio-docs/docs/project/runs/managing-runs.md +0 -455
  204. package/skills/testeiya/testomatio-docs/docs/project/runs/merge-strategies.md +0 -137
  205. package/skills/testeiya/testomatio-docs/docs/project/runs/reports.md +0 -329
  206. package/skills/testeiya/testomatio-docs/docs/project/runs/rungroups.md +0 -342
  207. package/skills/testeiya/testomatio-docs/docs/project/runs/running-automated-tests.md +0 -256
  208. package/skills/testeiya/testomatio-docs/docs/project/runs/running-manual-and-automated-tests.md +0 -331
  209. package/skills/testeiya/testomatio-docs/docs/project/runs/running-tests-manually.md +0 -633
  210. package/skills/testeiya/testomatio-docs/docs/project/runs/temporary-tests-notes.md +0 -223
  211. package/skills/testeiya/testomatio-docs/docs/project/steps-snippets/snippets.md +0 -68
  212. package/skills/testeiya/testomatio-docs/docs/project/steps-snippets/steps.md +0 -181
  213. package/skills/testeiya/testomatio-docs/docs/project/tests/bdd-test-case-editor.md +0 -98
  214. package/skills/testeiya/testomatio-docs/docs/project/tests/classical-test-case-editor.md +0 -354
  215. package/skills/testeiya/testomatio-docs/docs/project/tests/classical-vs-bdd.md +0 -169
  216. package/skills/testeiya/testomatio-docs/docs/project/tests/copy-and-move-your-tests.md +0 -156
  217. package/skills/testeiya/testomatio-docs/docs/project/tests/other-features-for-test-case-design.md +0 -412
  218. package/skills/testeiya/testomatio-docs/docs/project/tests/test-case-creation-and-editing.md +0 -527
  219. package/skills/testeiya/testomatio-docs/docs/support/index.md +0 -75
  220. package/skills/testeiya/testomatio-docs/docs/test-reporting/artifacts.md +0 -388
  221. package/skills/testeiya/testomatio-docs/docs/test-reporting/cli.md +0 -215
  222. package/skills/testeiya/testomatio-docs/docs/test-reporting/configuration.md +0 -247
  223. package/skills/testeiya/testomatio-docs/docs/test-reporting/frameworks.md +0 -490
  224. package/skills/testeiya/testomatio-docs/docs/test-reporting/functions.md +0 -144
  225. package/skills/testeiya/testomatio-docs/docs/test-reporting/index.mdx +0 -48
  226. package/skills/testeiya/testomatio-docs/docs/test-reporting/junit.md +0 -248
  227. package/skills/testeiya/testomatio-docs/docs/test-reporting/logger.md +0 -138
  228. package/skills/testeiya/testomatio-docs/docs/test-reporting/php.md +0 -77
  229. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/bitbucket.md +0 -72
  230. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/csv.md +0 -23
  231. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/debug.md +0 -18
  232. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/github.md +0 -63
  233. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/gitlab.md +0 -29
  234. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/html.md +0 -80
  235. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/index.mdx +0 -57
  236. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/testomatio.md +0 -331
  237. package/skills/testeiya/testomatio-docs/docs/test-reporting/python.md +0 -229
  238. package/skills/testeiya/testomatio-docs/docs/test-reporting/workflows.md +0 -325
  239. package/skills/testeiya/testomatio-docs/docs/tutorials/Interacting-via-API.md +0 -159
  240. package/skills/testeiya/testomatio-docs/docs/tutorials/Manual-Testing-Classic.md +0 -164
  241. package/skills/testeiya/testomatio-docs/docs/tutorials/Set-Up-Read-Only-Access.md +0 -85
  242. package/skills/testeiya/testomatio-docs/docs/tutorials/Using-AI-in-Testing.md +0 -163
  243. package/skills/testeiya/testomatio-docs/docs/tutorials/Working-with-Jira.md +0 -125
  244. package/skills/testeiya/testomatio-docs/docs/tutorials/java.md +0 -478
  245. package/skills/testeiya/testomatio-docs/docs/tutorials/playwright.md +0 -207
  246. package/skills/testeiya/testomatio-docs/docs/tutorials/webdriver.md +0 -218
  247. package/skills/testeiya/testomatio-docs/docs.lock.json +0 -6
  248. package/skills/testeiya/testomatio-reporter/SKILL.md +0 -307
  249. package/skills/testomatio/test-automation/setup-pr-testing/SKILL.md +0 -199
  250. package/skills.yaml +0 -21
  251. package/src/ai-debug.ts +0 -188
  252. package/src/api/agent-get.ts +0 -22
  253. package/src/api/agent-start.ts +0 -384
  254. package/src/api/client-log.ts +0 -29
  255. package/src/api/context.ts +0 -332
  256. package/src/api/debug-layout.ts +0 -47
  257. package/src/api/debug-report.ts +0 -29
  258. package/src/api/debug-snapshot.ts +0 -30
  259. package/src/api/debug-stream.ts +0 -52
  260. package/src/api/files-delete.ts +0 -184
  261. package/src/api/files-read.ts +0 -41
  262. package/src/api/files-rename.ts +0 -99
  263. package/src/api/files-tree.ts +0 -292
  264. package/src/api/files-write.ts +0 -41
  265. package/src/api/mcp.ts +0 -603
  266. package/src/api/memory.ts +0 -69
  267. package/src/api/open-external.ts +0 -39
  268. package/src/api/playwright-cli.ts +0 -606
  269. package/src/api/providers.ts +0 -457
  270. package/src/api/read-env-token.ts +0 -33
  271. package/src/api/sessions.ts +0 -79
  272. package/src/api/settings.ts +0 -120
  273. package/src/api/skills.ts +0 -58
  274. package/src/api/testomatio-attachment.ts +0 -89
  275. package/src/api/testomatio-auth.ts +0 -284
  276. package/src/api/testomatio-proxy.ts +0 -197
  277. package/src/api/testomatio-run-stats.ts +0 -81
  278. package/src/api/testomatio-target.ts +0 -225
  279. package/src/api/testomatio-transcription.ts +0 -82
  280. package/src/api/workspace-search.ts +0 -96
  281. package/src/api/workspace-sync.ts +0 -151
  282. package/src/api/workspace.ts +0 -165
  283. package/src/app-server.ts +0 -556
  284. package/src/bridge.ts +0 -251
  285. package/src/check-tests.ts +0 -156
  286. package/src/cli.ts +0 -17
  287. package/src/commands.ts +0 -244
  288. package/src/config.ts +0 -183
  289. package/src/connection.ts +0 -658
  290. package/src/context-store.ts +0 -265
  291. package/src/debug-bus.ts +0 -405
  292. package/src/extensions/tool-gate.ts +0 -220
  293. package/src/extensions/webui/ask-channel.ts +0 -52
  294. package/src/extensions/webui/index.ts +0 -184
  295. package/src/extensions/webui/tools/ask-question.ts +0 -88
  296. package/src/extensions/webui/tools/query-result.ts +0 -79
  297. package/src/extensions/webui/tools/render-chart.ts +0 -53
  298. package/src/extensions/webui/tools/render-item.ts +0 -61
  299. package/src/extensions/webui/tools/render-list.ts +0 -170
  300. package/src/extensions/webui/tools/render-result.ts +0 -85
  301. package/src/extensions/webui/tools/render-tree.ts +0 -71
  302. package/src/extensions/webui/tools/ui-widget.ts +0 -54
  303. package/src/extensions/webui/tools/widget-result.ts +0 -13
  304. package/src/extensions/webui/widget-channel.ts +0 -50
  305. package/src/file-log.ts +0 -196
  306. package/src/git-tracked.ts +0 -68
  307. package/src/gitignore.ts +0 -53
  308. package/src/json-store.ts +0 -43
  309. package/src/load-env.ts +0 -70
  310. package/src/loader-style.ts +0 -96
  311. package/src/main.ts +0 -140
  312. package/src/mcp-catalog.ts +0 -96
  313. package/src/models-catalog.ts +0 -72
  314. package/src/permissions.ts +0 -120
  315. package/src/project-dir.ts +0 -189
  316. package/src/project-info.ts +0 -108
  317. package/src/prompt/app-ui.ts +0 -59
  318. package/src/prompt/browser.ts +0 -27
  319. package/src/prompt/index.ts +0 -62
  320. package/src/prompt/tools.ts +0 -27
  321. package/src/server-info.ts +0 -62
  322. package/src/session-factory.ts +0 -442
  323. package/src/session-store.ts +0 -115
  324. package/src/shell-env.ts +0 -45
  325. package/src/skills.ts +0 -163
  326. package/src/sync-snapshot.ts +0 -140
  327. package/src/telemetry.ts +0 -239
  328. package/src/testomatio-auth.ts +0 -299
  329. package/src/testomatio.ts +0 -98
  330. package/src/theme.ts +0 -30
  331. package/src/user-env.ts +0 -94
  332. package/src/welcome.ts +0 -194
  333. package/src/workspace/safe-path.ts +0 -85
  334. package/src/workspace/test-md.ts +0 -70
  335. package/src/workspace-model.ts +0 -440
  336. package/testeiya.config.json +0 -14
  337. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/authentication-flows.md +0 -0
  338. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/authentication.md +0 -0
  339. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/clock-mocking.md +0 -0
  340. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/mobile-testing.md +0 -0
  341. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/multi-context.md +0 -0
  342. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/multi-user.md +0 -0
  343. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/network-advanced.md +0 -0
  344. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/third-party.md +0 -0
  345. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/architecture/pom-vs-fixtures.md +0 -0
  346. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/architecture/test-architecture.md +0 -0
  347. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/architecture/when-to-mock.md +0 -0
  348. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/browser-apis/browser-apis.md +0 -0
  349. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/browser-apis/iframes.md +0 -0
  350. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/browser-apis/service-workers.md +0 -0
  351. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/browser-apis/websockets.md +0 -0
  352. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/annotations.md +0 -0
  353. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/assertions-waiting.md +0 -0
  354. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/configuration.md +0 -0
  355. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/fixtures-hooks.md +0 -0
  356. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/global-setup.md +0 -0
  357. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/locators.md +0 -0
  358. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/page-object-model.md +0 -0
  359. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/projects-dependencies.md +0 -0
  360. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/test-data.md +0 -0
  361. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/test-suite-structure.md +0 -0
  362. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/test-tags.md +0 -0
  363. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/debugging/console-errors.md +0 -0
  364. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/debugging/debugging.md +0 -0
  365. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/debugging/error-testing.md +0 -0
  366. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/debugging/flaky-tests.md +0 -0
  367. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/frameworks/angular.md +0 -0
  368. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/frameworks/nextjs.md +0 -0
  369. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/frameworks/react.md +0 -0
  370. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/frameworks/vue.md +0 -0
  371. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/ci-cd.md +0 -0
  372. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/docker.md +0 -0
  373. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/github-actions.md +0 -0
  374. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/gitlab.md +0 -0
  375. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/other-providers.md +0 -0
  376. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/parallel-sharding.md +0 -0
  377. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/performance.md +0 -0
  378. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/reporting.md +0 -0
  379. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/test-coverage.md +0 -0
  380. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/accessibility.md +0 -0
  381. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/api-testing.md +0 -0
  382. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/browser-extensions.md +0 -0
  383. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/canvas-webgl.md +0 -0
  384. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/component-testing.md +0 -0
  385. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/drag-drop.md +0 -0
  386. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/electron.md +0 -0
  387. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/file-operations.md +0 -0
  388. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/file-upload-download.md +0 -0
  389. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/forms-validation.md +0 -0
  390. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/graphql-testing.md +0 -0
  391. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/i18n.md +0 -0
  392. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/performance-testing.md +0 -0
  393. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/security-testing.md +0 -0
  394. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/visual-regression.md +0 -0
  395. /package/skills/{playwright-cli → playwright/playwright-cli}/SKILL.md +0 -0
  396. /package/skills/{playwright-cli → playwright/playwright-cli}/references/element-attributes.md +0 -0
  397. /package/skills/{playwright-cli → playwright/playwright-cli}/references/playwright-tests.md +0 -0
  398. /package/skills/{playwright-cli → playwright/playwright-cli}/references/request-mocking.md +0 -0
  399. /package/skills/{playwright-cli → playwright/playwright-cli}/references/running-code.md +0 -0
  400. /package/skills/{playwright-cli → playwright/playwright-cli}/references/session-management.md +0 -0
  401. /package/skills/{playwright-cli → playwright/playwright-cli}/references/storage-state.md +0 -0
  402. /package/skills/{playwright-cli → playwright/playwright-cli}/references/test-generation.md +0 -0
  403. /package/skills/{playwright-cli → playwright/playwright-cli}/references/tracing.md +0 -0
  404. /package/skills/{playwright-cli → playwright/playwright-cli}/references/video-recording.md +0 -0
@@ -1,206 +1,102 @@
1
1
  ---
2
2
  name: writing-codeceptjs-tests
3
- description: Use when writing a new CodeceptJS 4 test, extending an existing Scenario, or porting a manual test plan to code. Builds tests live — opens the real page through the CodeceptJS MCP server, queries ARIA/HTML to learn locators, runs each step incrementally to verify it works, then commits the verified sequence to a test file. Two authoring modes — Mode A (incremental `run_code`) for known flows, Mode B (scaffold-and-pause — write `I.amOnPage(...); pause();`, run via MCP, drive the live browser, replace `pause()` with the verified sequence) for greenfield / unknown flows. Never invents locators or flows from imagination; drives the actual browser. Trigger on any request to create, write, add, draft, or scaffold a CodeceptJS test, login flow, end-to-end check, or "test from scratch".
3
+ description: >
4
+ Use when creating a new CodeceptJS 4 test, extending an existing Scenario, or
5
+ porting a manual test plan to code. Builds tests against the live browser via
6
+ the CodeceptJS MCP server — never from imagined locators or flows. Trigger on
7
+ any request to create, write, add, draft, or scaffold a CodeceptJS test,
8
+ login flow, end-to-end check, or "test from scratch".
4
9
  ---
5
10
 
6
11
  # Writing CodeceptJS 4 Tests
7
12
 
8
- A test that was never executed during authoring is unreliable by definition. The right way to write a Scenario is to drive the real browser through the CodeceptJS MCP server, query the page to learn locators, and only commit steps that actually pass. This skill is the playbook for that loop.
13
+ A test that was never executed during authoring is unreliable. Drive the real browser via the CodeceptJS MCP server, verify every locator against the live page, commit only steps that passed.
9
14
 
10
- Two authoring modes, picked by how much of the flow you already know:
15
+ Two modes, picked by how much of the flow you already know:
11
16
 
12
- - **Mode A — incremental `run_code`** — send one or two `I.*` lines per `run_code`, read the response, repeat. Suited to extending an existing test or porting a manual plan with known steps.
13
- - **Mode B — scaffold-and-pause** (recommended for greenfield / unknown flows) — write a stub `Scenario` containing `I.amOnPage('/...'); pause();`, run via MCP `run_test`. The browser opens and yields control at `pause()` on the live container. Drive the page through `run_code` to discover the flow, then edit the test to replace `pause()` with the verified sequence and re-run.
17
+ - **Mode A — incremental `run_code`**: send one or two `I.*` lines per call, read response, repeat. For extending existing tests, known flows, porting manual plans.
18
+ - **Mode B — scaffold-and-pause** (recommended for greenfield / unknown flows): write a stub Scenario containing `I.amOnPage('/...'); pause();`, run via MCP `run_test`. The browser opens and yields control at `pause()` — drive the live page via `run_code`, then replace `pause()` with the verified sequence.
14
19
 
15
- Both modes share the discovery / locator / commit steps below; the difference is just *where the in-flight exploration happens*.
20
+ Both share the same discovery / locator / commit steps; the difference is *where the in-flight exploration happens*.
16
21
 
17
22
  ## Workflow
18
23
 
19
- ### 1. Read the project (fundamentals)
20
- Run the **codeceptjs-fundamentals** skill first. You need: active web helper, base URL, plugins (especially `aiTrace`, `auth`), AI provider, page-object names, env vars.
21
-
22
- ### 2. Map what's already there
23
- Before adding anything, enumerate:
24
- - `npx codeceptjs check -c <config>` — verifies the setup loads (config, helpers, plugins, page objects, hooks, tests, defs). Each pass/fail line doubles as an inventory of what the project has wired up.
25
- - `npx codeceptjs list -c <config>` — every available `I.<method>` for the active helpers, including custom ones. Check before suggesting any method.
26
- - `npx codeceptjs dry-run -c <config>` — every Scenario the active config would load, with naming conventions and tags. Add `--steps` to also print queued `I.*` calls, `--numbers` for step indices.
27
- - MCP equivalents: `list_actions`, `list_tests`.
28
-
29
- This catches duplication, surfaces patterns the new test should follow, and confirms a custom step / page-object method doesn't already cover the planned flow.
30
-
31
- > ⚠ `dry-run` does **not** initialize plugins. The `auth` plugin's injected `login(...)` (and any other plugin-injected function) is undefined under `dry-run`, so `Before(({ login }) => login('admin'))` raises **"login is not a function"** even though the actual `run` works fine. Use `--steps` to inspect Scenario shape; ignore plugin-inject errors. To verify auth works, do a real `run` (or MCP `run_test`).
32
-
33
- ### 3. Decide if auth is needed
34
- If the path under test sits behind login, invoke the **codeceptjs-auth** skill:
35
- - If `auth` is already configured, use the existing role: `Before(({ login }) => login())`.
36
- - If not, the auth skill walks through adding the plugin and env-var credentials.
37
- - Public path? Skip.
38
-
39
- ### 4. Look for similar tests and page objects
40
- Before writing anything new, scan:
41
- - existing Scenarios that touch the same feature area
42
- - page objects in the directories registered under `include`
43
- - custom steps in the actor file
44
- - data factories that already create the entities the test needs (user, post, …)
45
-
46
- If a page-object method already encodes the locators for this area, drive through it (`profilePage.openSettings()`) instead of writing raw `I.click` chains.
47
-
48
- ### 5. Identify the starting page
49
- The page where the new test does its work, **after** any auth. Get a real URL, not a guess. Look for similar tests and page objects. If you don't have that data, ask user where to start. CodeceptJS always use relative urls. The host must be set inside config (helpers.Playwright.url or helpers.WebDriver.url or helpers.Puppeteer.url)
50
-
51
- ### 6. Make sure aiTrace + MCP are wired
52
- - **aiTrace under MCP** — auto-enabled. The MCP server forces `plugins.aiTrace = { on: 'step', enabled: true }` for every session (`bin/mcp-server.js`), so you do **not** need to add it to the project config when authoring through MCP. The user can override with `start_browser({ plugins: { aiTrace: { enabled: false } } })`.
53
- - **aiTrace for CLI runs** — *not* auto-enabled. Either add `plugins: { aiTrace: { enabled: true } }` to the active config, or pass `-p aiTrace` on the runner. Without it, the verification run in step 10 produces no `output/trace_*/` artifacts and `codeceptjs-run-analysis` has nothing to read.
54
- - **MCP** — confirm the AI client points at `node_modules/codeceptjs/bin/mcp-server.js` with `CODECEPTJS_CONFIG` and `CODECEPTJS_PROJECT_DIR` set. See `node_modules/codeceptjs/docs/mcp.md` if it isn't.
55
- - **Headless** — run tests headlessly by default. Either rely on `setHeadlessWhen(CI)` (export `CI=1` for the session) or set `show: false` in the helper config.
56
-
57
- ### 7. Open a live session via MCP
58
-
59
- Pick a mode:
60
-
61
- **Mode A — incremental `run_code`** (existing test extension, known flow):
62
- Send a minimal scaffold to MCP `run_code` — `login(<role>)` if auth is needed, then `I.amOnPage(<starting URL>)`. The response includes URL, ARIA snapshot, screenshot, and console logs. This is the ground truth for everything that follows.
63
-
64
- **Mode B — scaffold-and-pause** (greenfield / unknown flow):
65
- Write a draft test stub directly in the test file — minimal but real. For a public page:
66
-
67
- ```js
68
- Scenario('draft - feature exploration', ({ I }) => {
69
- I.amOnPage('/')
70
- pause()
71
- })
72
- ```
73
-
74
- …or with auth:
75
-
76
- ```js
77
- Before(({ login }) => login('admin'))
78
-
79
- Scenario('draft - feature exploration', ({ I }) => {
80
- I.amOnPage('/dashboard')
81
- pause()
82
- })
83
- ```
84
-
85
- Run it via MCP `run_test`. The browser opens, navigates, and yields control at `pause()` — the response carries `{ status: 'paused', pausedAfter, page, suggestions }`. The same `I` / browser the test is using is now driven by `run_code` against the live page.
86
-
87
- ### 8. Learn the page and pick locators
88
- Hand off to the **codeceptjs-exploration** skill: read the ARIA snapshot first, fall back to HTML when needed, and use `I.grabWebElement` / `I.grabWebElements` (with permissive XPaths when the obvious locator misses) to enumerate and disambiguate candidates. Commit a locator only after verifying it matches exactly one element via MCP `run_code`. In Mode B, this exploration happens *during the pause window* — the page is sitting there waiting for you.
89
-
90
- Translate devtools-style strict locators to readable form **before** they hit the test file — see the **Locators** section below.
91
-
92
- ### 9. Build the Scenario via MCP
93
-
94
- **Mode A** — for each user goal (fill a field, click a button, see a confirmation), run one or two CodeceptJS commands through MCP `run_code`, then read the response.
95
-
96
- **Mode B** — work the live page from the pause: try one or two `I.*` lines via `run_code`, read the response, navigate the next step. Each successful command goes into a scratchpad you'll paste back into the test file in step 10. When you've reached the end of the flow you wanted, the scratchpad is your verified sequence.
97
-
98
- After every command (either mode) ask:
99
- - Did the URL or ARIA change the way you expected?
100
- - Any new errors in the console logs?
101
- - Does a `grab*` value match what was expected?
102
-
103
- If a step fails — try a different locator, add a `waitFor*`, or reconsider the flow. **Stop and ask the user** when something is genuinely ambiguous (two "Save" buttons; an unclear empty state; a feature flag that might not be enabled). Don't push through.
104
-
105
- ### 10. Commit the verified sequence
106
- When every step has worked once in isolation, paste them into a test file:
107
- - Match existing file naming and the **one-Feature-per-file** rule.
108
- - Use a page-object method or custom step wherever one fits — don't duplicate selectors.
109
- - **Translate every locator to its readable form** (see the **Locators** section). No `{ css: 'input[placeholder*="…"]' }`, no `{ xpath: '//tr[contains(.,…)]//…' }` in committed code. Strict locators are a code-review red flag unless nothing semantic, ARIA, or `locate()`-shaped fits.
110
- - Wrap secrets with `secret(...)`; pull credentials from env vars only.
111
- - Add the tag the suite already uses (`{ tag: '@smoke' }`) when relevant.
112
- - **Mode B specific** — replace the `pause()` line with the verified sequence above it. Remove the `draft` Scenario name and rename to its real intent. Don't leave `pause()` in a committed test.
113
- - Run the file end-to-end with `aiTrace` enabled: `npx codeceptjs run --grep '<scenario name>' --steps`. Hand the result to **codeceptjs-run-analysis** — it reads `output/trace_*/` artifacts via bash tools so you can confirm the flow ran clean. Only declare done when the scenario passes there.
114
-
115
- ## Locators — readable, semantic, scoped
116
-
117
- Pick the highest-level form that fits. Priority, top wins:
118
-
119
- 1. **Dedicated test attributes** — when the page consistently exposes `data-testid` / `data-qa` / similar. Stable by design.
120
- ```js
121
- I.click('[data-testid="submit-order"]')
122
- ```
123
- 2. **Semantic + context** — plain string (label / button text / placeholder / `aria-label`).
124
- ```js
125
- I.click('Save', '.toolbar')
126
- I.fillField('Email', 'u@t.com', '#login-form')
127
- ```
128
- 3. **ARIA role** — survives markup churn; doubles as accessibility check.
129
- ```js
130
- I.click({ role: 'button', name: 'Sign In' })
131
- ```
132
- 4. **`locate()` builder** — for structural conditions, repeated row/cell targeting, anything CSS can't express in one line.
133
- ```js
134
- I.click(locate('button').withText('Edit').inside(locate('tr').withText('Acme Corp')))
135
- ```
136
- 5. **Strict `{ id }` / `{ name }` / `{ css }`** — when nothing above fits.
137
- ```js
138
- I.fillField({ id: 'email' }, 'u@t.com')
139
- I.seeElement({ css: '.invoice-row.paid' })
140
- ```
141
- 6. **`{ xpath }`** — last resort, for axes (`ancestor`, `following-sibling`) or text predicates the builder doesn't cover.
142
- ```js
143
- I.click({ xpath: '//button[@aria-pressed="true"]' })
144
- ```
145
-
146
- If item 1 applies broadly across the app, enable the **`customLocator` plugin** so `$name` resolves to the configured attribute. Once it's on:
147
-
148
- ```js
149
- // before // after, with customLocator: { attribute: 'data-qa' }
150
- I.click({ css: '[data-qa=submit]' }) I.click('$submit')
151
- I.fillField({ css: '[data-qa=email]' }, ...) I.fillField('$email', ...)
152
- ```
153
-
154
- See `node_modules/codeceptjs/docs/plugins.md` § *customLocator*.
155
-
156
- ### Context
157
-
158
- Most actions accept a **context** as the last argument — any locator type. The lookup runs only inside that region, which disambiguates duplicate labels and keeps semantic strings usable. When several actions target the same region, bind the locator once and reuse it; do not repeat the chain inline.
159
-
160
- Prefer stable structural regions — they survive UI rewrites better than the markup they wrap:
161
-
162
- - Landmark elements — `nav`, `main`, `header`, `footer`, `aside`, `{ role: 'dialog' }`, `{ role: 'navigation' }`.
163
- - App-shell containers — `.main-app`, `.app-content`, `.sidebar`, `.toolbar`, `.modal`, `.drawer`.
164
- - A row, card, or list item identified by its data, expressed via `locate(...)`.
165
-
166
- **`I.see` and `I.dontSee` require a context.** Their first argument is plain text matched across the page, so without a context the assertion can resolve against navigation, a footer, or an unrelated component and produce a false pass. Other assertions (`I.seeElement`, `I.seeNumberOfElements`, etc.) take an explicit locator, which scopes them on its own.
167
-
168
- ### Picking a specific match
169
-
170
- When a locator matches several elements, CodeceptJS uses the first by default. To target another match without writing a more specific locator, pass `elementIndex` via `step.opts()` (`import step from 'codeceptjs/steps'`) — accepts a 1-based number, a negative index, or `'first'` / `'last'`. Same path for `step.opts({ exact: true })` to make a single step throw on ambiguity. See `node_modules/codeceptjs/docs/locators.md` § *Picking a specific element*.
171
-
172
- Full reference: `node_modules/codeceptjs/docs/locators.md`.
173
-
174
- ## Waiting
175
-
176
- CodeceptJS auto-waits before each action, but explicit waits are still needed when:
177
- - a **loader / spinner / skeleton** must hide before the next step → `I.waitForInvisible('.spinner')`, `I.waitForDetached('.skeleton')`
178
- - a **modal / drawer / panel / section** hasn't rendered yet → `I.waitForVisible('.modal')`, `I.waitForElement({ role: 'dialog' })`
179
- - **data must finish loading** — list rows, cards, charts, async text → `I.waitForElement('.user-row', 10)`, `I.waitForText('Loaded', 10, '.status')`
180
-
181
- Detect what to wait for by reading the page HTML / ARIA between MCP steps. If the next element is gated by a spinner overlay or rendered after a fetch, scroll the markup until you find the gating element, pick a stable selector, and wait for the right state (visible, invisible, detached, text-present).
182
-
183
- `I.wait(N)` (raw seconds) is OK during **authoring** to confirm a timing hypothesis — if a 5-second sleep makes the step pass, the cause is timing. **Replace it with a specific `I.waitFor*` before committing.** Hardcoded sleeps are slow on fast machines, flaky on slow ones, and hide the real sync point.
24
+ 1. **Fundamentals first** — run `codeceptjs-fundamentals`. You need: active web helper, base URL, plugins (`aiTrace`, `auth`), AI provider, page objects, env vars.
25
+ 2. **Map what's already there** — `check` / `list` / `dry-run` (see fundamentals § Discover). Catches duplication and confirms no custom step or page-object method already covers the planned flow.
26
+ - ⚠ `dry-run` does **not** initialize plugins: `Before(({ login }) => login('admin'))` raises "login is not a function" under dry-run even though a real run works. Inspect shape with `--steps`; ignore plugin-inject errors; verify auth with a real run.
27
+ 3. **Auth** — path behind login → invoke the `codeceptjs-auth` skill. Existing role configured: `Before(({ login }) => login())`. Not configured: auth skill walks adding it. Public path: skip.
28
+ 4. **Similar tests & page objects** — scan Scenarios in the feature area, POs under `include`, actor-file custom steps, data factories. If a PO method already encodes this area's locators, drive through it instead of raw `I.click` chains.
29
+ 5. **Starting page** — a real URL *after* any auth, not a guess; ask the user if unknown. Relative URLs only — host lives in the config (`helpers.Playwright.url` etc.).
30
+ 6. **aiTrace + MCP wiring**:
31
+ - Under MCP: `aiTrace` is forced on by the MCP server — nothing to configure.
32
+ - CLI runs: *not* auto-enabled — declare in config or pass `-p aiTrace`, or step 11 produces no `output/trace_*/` artifacts for run-analysis.
33
+ - Run headless by default (`setHeadlessWhen(CI)` with `CI=1` exported, or `show: false`).
34
+ - Confirm MCP client points at `node_modules/codeceptjs/bin/mcp-server.js` with `CODECEPTJS_CONFIG` and `CODECEPTJS_PROJECT_DIR` set.
35
+ 7. **Open a live session** (pick mode):
36
+ - Mode A: `run_code` scaffold — `login(<role>)` if needed, then `I.amOnPage(<start URL>)`. The response (URL, ARIA snapshot, screenshot, console) is ground truth for everything after.
37
+ - Mode B: write a minimal-but-real draft in the test file:
38
+ ```js
39
+ Before(({ login }) => login('admin')) // if needed
40
+
41
+ Scenario('draft - feature exploration', ({ I }) => {
42
+ I.amOnPage('/dashboard')
43
+ pause()
44
+ })
45
+ ```
46
+ Run via MCP `run_test` → `{ status: 'paused', pausedAfter, page, suggestions }`. The test's own `I` / browser is now driven by `run_code`.
47
+ 8. **Learn the page** — hand off to `codeceptjs-exploration`: ARIA snapshot first, HTML fallback, enumerate and disambiguate candidates, commit a locator only after verifying it matches exactly one element via `run_code`. In Mode B this happens inside the pause window.
48
+ 9. **Build the Scenario** — one or two commands at a time via `run_code` into a scratchpad. After each ask: did URL/ARIA change as expected? New console errors? Do grabbed values match expectations?
49
+ - Step failed → try a different locator, add a specific `waitFor*`, or reconsider the flow.
50
+ - Genuinely ambiguous (two Save buttons, unclear empty state, possible feature flag) → **stop and ask the user**.
51
+ - Optional UI elements (cookie banners) → `await tryTo(...)` instead of `if` (fundamentals § Effects) — keeps scenarios linear.
52
+ 10. **Commit the verified sequence**:
53
+ - Match existing naming; one `Feature` per file.
54
+ - Use page-object methods / custom steps where they fit — don't duplicate selectors.
55
+ - Translate every locator to readable form (priority below). Strict `{ css }` / `{ xpath }` in committed code are a review red flag unless nothing else fits.
56
+ - Credentials from env vars only, wrapped in `secret(...)`.
57
+ - Mode B: replace the `pause()` line with the sequence; rename `draft - ...` to the real intent.
58
+ 11. **Final verification**: `npx codeceptjs run --grep '<scenario>' --steps` with aiTrace enabled → hand output to `codeceptjs-run-analysis` to confirm the flow ran clean in `output/trace_*/`. Done only when it passes there.
59
+
60
+ ## Locator priority (writing time)
61
+
62
+ Always pass context — see `codeceptjs-fundamentals` § Locators for rationale. Top wins:
63
+
64
+ 1. **Semantic string** — visible text, label, placeholder, `name`, `aria-label`: `I.click('Save', '.toolbar')`
65
+ 2. **ARIA role** — text ambiguous within context ("Delete" link *and* button), or role part of the assertion: `I.click({ role: 'button', name: 'Sign In' }, '#login-form')`
66
+ 3. **`$name` via `customLocator`** — app exposes `data-testid`/`data-qa` broadly
67
+ 4. **`locate()` builder** — structural conditions; often the structural half belongs in the context: `I.click('Edit', locate('tr').withText('Acme Corp'))`
68
+ 5. **Strict `{ id }` / `{ name }` / `{ css }`** — last resorts above exhausted
69
+ 6. **`{ xpath }`** — axes / text predicates the builder can't express
70
+
71
+ Writing-time specifics beyond fundamentals:
72
+
73
+ - Plain strings already match `aria-label` — never write `'aria-label=Save'` or `{ css: '[aria-label="Save"]' }`.
74
+ - Prefer stable contexts: landmarks (`nav`, `main`, `{ role: 'dialog' }`), app-shell containers (`.sidebar`, `.modal`), rows/cards identified by their data.
75
+ - **`I.see` / `I.dontSee` require a context** — their first arg is plain text matched across the whole page; unscoped they can false-pass on nav/footer content.
76
+ - Several matches → `step.opts({ elementIndex: N })` (1-based, negative, `'first'`/`'last'`) or `step.opts({ exact: true })`; import `step` from `codeceptjs/steps`.
77
+
78
+ ## Waiting while authoring
79
+
80
+ - Auto-waiting covers interactions; detect gating elements (spinner overlay, post-fetch render) from the live HTML/ARIA between MCP steps → pick the stable selector and a specific `waitFor*`.
81
+ - `I.wait(N)` is acceptable **during authoring** to confirm a timing hypothesis — if a sleep makes the step pass, timing is the cause. Replace with the specific `waitFor*` before committing.
184
82
 
185
83
  ## Things to avoid
186
84
 
187
- - Writing tests from imagined locators or imagined routes.
188
- - Defaulting to strict `{ css }` / `{ xpath }` locators when a semantic string, ARIA role, or `locate()` chain would do. See the **Locators** section.
189
- - Hardcoding credentials anywhere — env vars + `secret()` only.
190
- - Skipping the page-object scan.
191
- - Adding `await` to plain action steps (see fundamentals' `await` rule).
192
- - Adding `waitFor*` speculatively before checking whether auto-waiting already handles it.
193
- - Leaving `I.wait(N)` (raw seconds) in committed tests — replace with a specific `waitFor*`.
194
- - Leaving the `pause()` from Mode B's stub in the committed test — it must be replaced with the verified sequence before the file is done.
195
- - Using Mode A when the flow is genuinely unknown — round-tripping `run_code` for every step is slower than Mode B and easier to lose track of state in.
196
- - Declaring the test done without running the committed file end-to-end with `aiTrace` enabled.
197
-
198
- ## Pointers
199
-
200
- - `node_modules/codeceptjs/docs/basics.md` — locators, assertions, waits, hooks
201
- - `node_modules/codeceptjs/docs/test-structure.md` — Feature/Scenario syntax
202
- - `node_modules/codeceptjs/docs/locators.md`, `docs/element-selection.md`
203
- - `node_modules/codeceptjs/docs/pageobjects.md`, `docs/sessions.md`, `docs/within.md`
204
- - `node_modules/codeceptjs/docs/data.md` — REST helper, Data Objects
205
- - `node_modules/codeceptjs/docs/mcp.md` — MCP tool list and client config
206
- - `node_modules/codeceptjs/docs/secrets.md` — `secret()` wrapper
85
+ - Writing tests from imagined locators or routes — everything from the live page.
86
+ - Strict locators where semantic / ARIA / `locate()` fits.
87
+ - Long unscoped locators instead of short locator + context.
88
+ - Spelling out accessible names or repeating `[data-testid=...]` at call sites.
89
+ - Hardcoded credentials anywhere.
90
+ - Skipping the similar-test / page-object scan.
91
+ - `await` on plain action steps (fundamentals await rule); speculative `waitFor*` before checking auto-waiting.
92
+ - Leaving `I.wait(N)` or `pause()` in committed tests.
93
+ - Using Mode A for genuinely unknown flows — slower than Mode B, easier to lose state.
94
+ - Declaring done without the end-to-end aiTrace run.
95
+
96
+ ## Related skills
97
+
98
+ - `codeceptjs-fundamentals` — rules, effects, discovery (run first)
99
+ - `codeceptjs-exploration` — page inspection, WebElement API
100
+ - `codeceptjs-auth` — login/session reuse
101
+ - `codeceptjs-run-analysis` — trace verification
102
+ - `debugging-codeceptjs-tests` — when the committed test misbehaves
@@ -4,7 +4,7 @@ description: Use when writing Playwright tests, fixing flaky tests, debugging fa
4
4
  license: MIT
5
5
  metadata:
6
6
  author: currents.dev
7
- version: "1.1"
7
+ version: "1.2"
8
8
  ---
9
9
 
10
10
  # Playwright Best Practices
@@ -2,59 +2,66 @@
2
2
  "sources": [
3
3
  {
4
4
  "source": "testomatio/skills",
5
- "ref": "feat/setup-pr-testing-skill",
6
- "sha": "99a6808422ff9e3a6bd46edab04a32d37a6ed028",
5
+ "ref": null,
6
+ "sha": "84d855c359df6bf13bde7749ec3ec8d31e9fc51d",
7
7
  "folder": "testomatio",
8
8
  "skills": [
9
- "testomatio-mcp",
10
- "sync-test-cases-with-tms",
11
- "scan-automation-project",
12
- "qa-write-test-cases",
13
- "qa-thinking",
14
- "qa-test-code-coverage",
15
- "qa-requirement-reviewer",
16
- "qa-pr-requirements-analyzer",
17
- "qa-e2e-tests-reporting",
18
- "pull-request-diff-analyzer",
19
- "improve-test-cases",
20
9
  "detect-duplicate-test-cases",
21
- "setup-pr-testing",
22
- "run-tests-with-testomatio-reporter",
23
- "qa-automation-test-consolidation",
24
- "debug-fix-failed-flaky-autotests",
10
+ "improve-test-cases",
11
+ "pull-request-diff-analyzer",
12
+ "qa-e2e-tests-reporting",
13
+ "qa-pr-requirements-analyzer",
14
+ "qa-requirement-reviewer",
15
+ "qa-split-testing-levels-pyramid",
16
+ "qa-sprint-report-by-testomatio",
17
+ "qa-test-code-coverage",
18
+ "qa-thinking",
19
+ "qa-write-test-cases",
20
+ "scan-automation-project",
21
+ "sync-test-cases-with-tms",
22
+ "testomatio-mcp",
25
23
  "automate-manual-test-cases",
24
+ "debug-fix-failed-flaky-autotests",
25
+ "qa-automation-test-consolidation",
26
+ "qa-data-seeder",
27
+ "run-tests-with-testomatio-reporter",
28
+ "setup-change-aware-pr-testing",
29
+ "setup-ci-automation",
26
30
  "testomat-allure-adapter",
27
- "explorbot-setup",
31
+ "qa-explain-behavior",
32
+ "qa-lead-strategy-advisor",
33
+ "testing-workflow",
34
+ "explorbot-fundamentals",
28
35
  "explorbot-plan",
29
- "explorbot-fundamentals"
36
+ "explorbot-setup"
30
37
  ]
31
38
  },
32
39
  {
33
40
  "source": "codeceptjs/skills",
34
41
  "ref": null,
35
- "sha": "e19ba9d0f513cbc9c3e4a4c5c6dd02cfedde4afd",
42
+ "sha": "d3d6a4e0e29207b1afb051eeb6f5f36984f4752b",
36
43
  "folder": "codeceptjs",
37
44
  "skills": [
38
- "writing-codeceptjs-tests",
39
- "refactoring-codeceptjs-tests",
40
- "migrate-testcafe-to-codeceptjs",
41
- "migrate-selenium-java-to-codeceptjs",
42
- "migrate-protractor-to-codeceptjs",
43
- "migrate-cypress-to-codeceptjs",
44
- "migrate-codeceptjs-4",
45
- "debugging-codeceptjs-tests",
46
- "codeceptjs-run-analysis",
47
- "codeceptjs-fundamentals",
48
- "codeceptjs-exploration",
45
+ "ci-fix-tests",
49
46
  "codeceptjs-auth",
50
- "ci-fix-tests"
47
+ "codeceptjs-exploration",
48
+ "codeceptjs-fundamentals",
49
+ "codeceptjs-run-analysis",
50
+ "debugging-codeceptjs-tests",
51
+ "migrate-codeceptjs-4",
52
+ "migrate-cypress-to-codeceptjs",
53
+ "migrate-protractor-to-codeceptjs",
54
+ "migrate-selenium-java-to-codeceptjs",
55
+ "migrate-testcafe-to-codeceptjs",
56
+ "refactoring-codeceptjs-tests",
57
+ "writing-codeceptjs-tests"
51
58
  ]
52
59
  },
53
60
  {
54
61
  "source": "currents-dev/playwright-best-practices-skill",
55
62
  "ref": null,
56
- "sha": "ef329e7e65149918e1ff0eed2cf7d2e6e6f9eb5b",
57
- "folder": "playwright-best-practices-skill",
63
+ "sha": "283d5cbc5d11aac1abda058b16ad22c317d54dc0",
64
+ "folder": "playwright",
58
65
  "skills": [
59
66
  "playwright-best-practices"
60
67
  ]
@@ -62,8 +69,8 @@
62
69
  {
63
70
  "source": "microsoft/playwright-cli/tree/main/skills/playwright-cli",
64
71
  "ref": null,
65
- "sha": "793cfb32572733cbcb401e6f28d05a7a914ce408",
66
- "folder": "playwright-cli",
72
+ "sha": "2f85a94b7b885dbf4a5d34462f253a8746a690c9",
73
+ "folder": "playwright",
67
74
  "skills": [
68
75
  "playwright-cli"
69
76
  ]
@@ -0,0 +1,34 @@
1
+ # External skills for Testeiya. ONE rule: every line is a GitHub repo.
2
+ #
3
+ # owner/repo a skill repo (one skill, or many)
4
+ # owner/repo/tree/<ref>/<subdir> pin a branch/tag/commit, or point at a subfolder
5
+ #
6
+ # Each source owns one vendor folder next to this file — the repo name, or the
7
+ # owner when the repo is just "skills" (testomatio/skills -> testomatio/).
8
+ # Updates replace only that folder; a folder this file does not own is treated
9
+ # as internal and never touched. First-party skills are not kept here.
10
+ #
11
+ # Vendored folders are gitignored: they belong to their authors, under their own
12
+ # licences. Send patches for them upstream, to the repo listed below.
13
+ #
14
+ # The folder is the category, and the repo decides it:
15
+ # - repo with a Claude-plugin marketplace (.claude-plugin/marketplace.json)
16
+ # -> one category subfolder per plugin (testomatio/ -> test-management / test-automation / explorbot)
17
+ # - repo without one -> skills sit right under the vendor folder (the vendor is the category)
18
+ #
19
+ # Name the folder here when repos from different owners belong under one
20
+ # category — the sources then share it, each skill in its own subfolder:
21
+ #
22
+ # - source: owner/repo
23
+ # folder: playwright
24
+ #
25
+ # Edit the list, then run: bunosh skills:update [vendor] See the result: bunosh skills:list
26
+
27
+ - testomatio/skills
28
+ - codeceptjs/skills
29
+
30
+ # One Playwright category, two upstreams.
31
+ - source: currents-dev/playwright-best-practices-skill
32
+ folder: playwright
33
+ - source: microsoft/playwright-cli/tree/main/skills/playwright-cli
34
+ folder: playwright
@@ -1,88 +1,76 @@
1
1
  ---
2
2
  name: explorbot-fundamentals
3
- description: Use whenever the user runs, configures, or debugs Explorbot from the command line — choosing freesail/explore/test/plan/research, asking what a flag does, asking where an artifact lives, or troubleshooting a failed run. Guide-only — you present the commands/paths and the user runs them.
3
+ description: Use when running or debugging Explorbot from the command line — which command to run, what a flag does, where results were written, why a run failed, or how to run it with nothing installed in the project.
4
4
  license: MIT
5
5
  metadata:
6
6
  author: Testomat.io
7
- version: 0.1.0
7
+ version: 1.2.0
8
8
  ---
9
9
 
10
10
  # Explorbot Fundamentals
11
11
 
12
- Explorbot is an autonomous AI web-testing CLI. It drives its own browser (CodeceptJS → Playwright) and works in cycles of **research → plan → test**.
12
+ Explorbot is an autonomous AI web-testing CLI. It drives its own browser through cycles of research → plan → test, and an agent drives it like `git` or `npm`.
13
13
 
14
- **The installed CLI and the installed package's `docs/` tree are the source of truth — do not paraphrase them from memory.** Discover commands and read docs at the moment of use.
14
+ **Answer command and flag questions from the installed CLI, never from memory.**
15
15
 
16
- ## Where the docs actually live
16
+ ```bash
17
+ npx explorbot --help # commands, and the EXPLORBOT_* variables
18
+ npx explorbot <command> --help # flags for one command
19
+ ```
17
20
 
18
- Docs ship inside the npm package. After `npm i explorbot`, they're at:
21
+ ## Running it with nothing installed
19
22
 
20
- ```
21
- <project root>/node_modules/explorbot/docs/
23
+ Explorbot needs no project install: `npx` plus a provider is enough, and nothing is written into the working directory. Reach for this when the user wants to try Explorbot, or is pointing it at an app that has no repo here.
24
+
25
+ ```bash
26
+ npx explorbot init --global --provider <name> # once per machine, key in ~/.explorbot/.env
27
+ npx explorbot explore https://app.example.com/login --max-tests 3
22
28
  ```
23
29
 
24
- That's the *only* place to read them from in a typical user project. Do **not** look in the skill's own folder, do **not** look in a project-level `docs/` (that belongs to the user's app), do **not** fetch from the web. If `node_modules/explorbot/docs/` doesn't exist, Explorbot isn't installed → route the user to **`explorbot-setup`**.
30
+ Details, including the per-command `EXPLORBOT_*` form for CI: [references/no-install.md](references/no-install.md).
25
31
 
26
- (For an Explorbot contributor working in the explorbot repo itself, docs are at `<repo root>/docs/`. Detect this by checking for `package.json` with `"name": "explorbot"` at the project root. Everyone else: `node_modules/explorbot/docs/`.)
32
+ Installing into the project instead — config, knowledge, and generated tests in the repo — is [[explorbot-setup]].
27
33
 
28
- ## Rule 1 — Discover commands via the CLI
34
+ ## Docs
29
35
 
30
- Always run the CLI's own help before answering a "how do I…" or "what flag…" question:
36
+ `node_modules/explorbot/docs/` after a local install, the repo's `docs/` when working inside Explorbot itself, otherwise `https://raw.githubusercontent.com/testomatio/explorbot/main/docs/<path>`. `docs/index.json` lists every page with a description — read it to pick the page, then open that page.
31
37
 
32
- ```bash
33
- npx explorbot --help # list every command
34
- npx explorbot <command> --help # flags and options for one command
35
- ```
38
+ ## Where results land
36
39
 
37
- These outputs match the installed version. Any hardcoded list (in skills, blog posts, or your own memory) can be stale.
40
+ Explorbot writes into the project directory when the run used a project `explorbot.config.js`, and into `~/.explorbot/sites/<host>/` otherwise. Under that root:
38
41
 
39
- ## Rule 2 — Read docs on demand, do not summarize ahead
42
+ | Path | Contents |
43
+ |---|---|
44
+ | `output/reports/` | session report: coverage, defects, execution issues |
45
+ | `output/plans/` | the plan generated or executed |
46
+ | `output/states/` | per-state HTML, ARIA snapshots, screenshots |
47
+ | `output/research/` | UI maps from the Researcher |
48
+ | `output/tests/` | generated Playwright / CodeceptJS files |
49
+ | `output/explorbot.log` | run log — start here on a failure |
50
+ | `knowledge/`, `experience/` | what you taught it, and what it learned |
40
51
 
41
- Pick the file that matches the topic *when the question comes up* — do not pre-load summaries. All paths below are relative to `node_modules/explorbot/docs/` (or the repo's `docs/` for contributors).
52
+ **Exit codes are not pass/fail.** `explore` and `test` exit `0` whenever the session completes; a failing scenario is a result, not a crash. Read the report. `navigate` is the exception — `1` means unreachable, which makes it a pre-flight check.
42
53
 
43
- | Topic the user is asking about | Open |
44
- |---|---|
45
- | Is this app even suitable for explorbot? | `prerequisites.md` |
46
- | Full list of CLI + TUI commands and flags | `commands.md` |
47
- | Config file shape, `dirs:`, rules wiring | `configuration.md` |
48
- | AI providers (OpenRouter / OpenAI / Anthropic / Groq / Cerebras / Azure) | `providers.md` |
49
- | Knowledge files (URL patterns, frontmatter, interpolation) | `knowledge.md` |
50
- | Planner, planning styles, plan markdown format | `planner.md`, `test-plans.md` |
51
- | Researcher (page analysis) | `researcher.md` |
52
- | Page interaction model (locators, ARIA, iframes) | `page-interaction.md` |
53
- | Re-running generated tests with healing | `rerun.md` |
54
- | Generated test code (Playwright / CodeceptJS) | `automated-tests.md` |
55
- | Hooks | `hooks.md` |
56
- | Reporting (HTML/MD/Testomat.io) | `reporting.md` |
57
- | Tracing / Langfuse / observability | `observability.md` |
58
- | Library / programmatic use | `scripting.md`, `npm-package.md` |
59
- | API testing | `api-testing.md` |
60
- | Doc collector | `doc-collector.md` |
61
-
62
- If the topic isn't in this table, `ls node_modules/explorbot/docs/` and pick the matching file by name.
63
-
64
- ## Rule 3 — CLI only; never drive the TUI
65
-
66
- An agent can run only the non-interactive CLI (`explorbot explore`, `explorbot test`, `explorbot plan`, `explorbot research`, `explorbot navigate`, etc.). These run headless and exit.
67
-
68
- **`explorbot start` launches an interactive terminal UI (TUI). An agent cannot operate a TUI — never try to launch or drive it.** If the user wants interactive mode, tell them to run `explorbot start [path]` themselves.
69
-
70
- ## Order of operations for every question
71
-
72
- 1. Verify `node_modules/explorbot/` exists. If not → route to **`explorbot-setup`**.
73
- 2. Identify whether the user is asking about a **command/flag** (→ run `npx explorbot … --help`) or a **concept/config/feature** (→ open the matching file in `node_modules/explorbot/docs/`).
74
- 3. Read the relevant source.
75
- 4. Answer using what you just read, and cite it (`node_modules/explorbot/docs/knowledge.md`, `npx explorbot explore --help`).
54
+ ## Naming the site
76
55
 
77
- ## Related skills
56
+ A target is either **absolute** — starting with `http://` or `https://` — or a **relative path** starting with `/`. Anything else is ambiguous and not a valid target.
57
+
58
+ A relative path needs a site to resolve against: `web.url` from a project config, or `EXPLORBOT_URL`. Without either, pass the absolute URL. Commands that take no target at all — `test`, `learn`, `knows`, `experience`, `compact` — read the same two sources. `npx explorbot sites` lists what has been explored so far.
59
+
60
+ ## Cheap before expensive
78
61
 
79
- - [[explorbot-setup]] — install + config + verify reachability of one page (curl → navigate → credentials). Use this when `node_modules/explorbot/` is missing.
80
- - [[explorbot-plan]] — write a test plan markdown by hand without exploring a live page.
81
- - [[explorbot-debug]] — diagnose a failed session from `output/explorbot.log` + Langfuse traces.
82
- - [[explorbot-fix-session]] — once a session is diagnosed, propose a single minimal fix.
62
+ - `npx explorbot context <url>` — headings, matched knowledge, interactive elements. No AI calls.
63
+ - `npx explorbot shell <url> '<codecept command>'` — run one command and exit.
64
+ - `npx explorbot knows <url>` — what knowledge matches a page.
65
+ - `npx explorbot navigate <url> --session` — reachability, and it saves the session.
83
66
 
84
- ## Anti-patterns
67
+ ## Rules
68
+
69
+ - `explorbot start` is an interactive TUI — an agent cannot operate it. Ask the user to run it. Everything else runs headless and exits.
70
+ - If `--help` does not show a command or flag, it does not exist.
71
+ - Explorbot needs CRUD; a landing page, blog, or CMS is out of scope.
72
+
73
+ ## Related skills
85
74
 
86
- - ❌ Pasting big config snippets without opening `node_modules/explorbot/docs/configuration.md` first.
87
- - ❌ Inventing a command that "should exist" — if `--help` doesn't show it, it doesn't exist.
88
- - ❌ Telling the user to use explorbot for a landing page / blog / CMS — `node_modules/explorbot/docs/prerequisites.md` says it's for CRUD-heavy apps.
75
+ - [[explorbot-setup]] — install into a project: config, provider, login knowledge, verified navigation.
76
+ - [[explorbot-plan]] — hand-author a test plan and run it with `explorbot test`.