@relipa/ai-flow-kit 0.1.4 → 0.1.5-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (325) hide show
  1. package/README.md +0 -0
  2. package/bin/aiflow.js +0 -0
  3. package/bin/ak.js +0 -0
  4. package/custom/harness/playwright/.env.example +0 -0
  5. package/custom/harness/playwright/playwright.config.ts +0 -0
  6. package/custom/harness/playwright/tests/e2e/auth.setup.ts +0 -0
  7. package/custom/harness/playwright/tests/e2e/fixtures/test.ts +0 -0
  8. package/custom/harness/playwright/tests/e2e/pages/BasePage.ts +0 -0
  9. package/custom/harness/playwright/tests/e2e/support/auth.ts +0 -0
  10. package/custom/mcp-presets/README.md +0 -0
  11. package/custom/mcp-presets/backlog.json +0 -0
  12. package/custom/mcp-presets/figma-desktop.json +0 -0
  13. package/custom/mcp-presets/figma.json +0 -0
  14. package/custom/mcp-presets/gitnexus.json +0 -0
  15. package/custom/mcp-presets/google-sheets.json +0 -0
  16. package/custom/mcp-presets/jira.json +0 -0
  17. package/custom/mcp-presets/playwright.json +0 -0
  18. package/custom/prompts/bug-fix.md +0 -0
  19. package/custom/prompts/feature.md +0 -0
  20. package/custom/prompts/investigation.md +0 -0
  21. package/custom/rules/code-style.md +0 -0
  22. package/custom/rules/java/code-style.md +0 -0
  23. package/custom/rules/java/naming.md +0 -0
  24. package/custom/rules/java/review-checklist.md +0 -0
  25. package/custom/rules/java/spring-boot-examples.md +0 -0
  26. package/custom/rules/javascript/code-style.md +0 -0
  27. package/custom/rules/javascript/naming.md +0 -0
  28. package/custom/rules/ml-conventions.md +0 -0
  29. package/custom/rules/ml-review-checklist.md +0 -0
  30. package/custom/rules/naming.md +0 -0
  31. package/custom/rules/php/code-style.md +0 -0
  32. package/custom/rules/php/naming.md +0 -0
  33. package/custom/rules/project-conventions.md +0 -0
  34. package/custom/rules/review-checklist.md +0 -0
  35. package/custom/rules/test-patterns.md +0 -0
  36. package/custom/skills/automation-testing/SKILL.md +0 -0
  37. package/custom/skills/automation-testing/templates/BasePage.ts +0 -0
  38. package/custom/skills/automation-testing/templates/PageObject.example.ts +0 -0
  39. package/custom/skills/automation-testing/templates/playwright.config.ts +0 -0
  40. package/custom/skills/automation-testing/templates/spec.example.ts +0 -0
  41. package/custom/skills/ba-skills/{skill-ba-xay-dung-business-rules-v1.md → skill-ba-build-business-rules-v1.md} +0 -0
  42. package/custom/skills/ba-skills/{skill-ba-template-phan-tich-ban-dau-v1.md → skill-ba-initial-analysis-template-v1.md} +0 -0
  43. package/custom/skills/ba-skills/{skill-ba-phan-tich-ban-dau-v1.md → skill-ba-initial-analysis-v1.md} +2 -2
  44. package/custom/skills/ba-skills/{skill-ba-ve-luong-mermaid-v1.md → skill-ba-mermaid-flowchart-v1.md} +0 -0
  45. package/custom/skills/ba-skills/{skill-ba-qa-template-v1.md → skill-ba-qna-template-v1.md} +0 -0
  46. package/custom/skills/ba-skills/{skill-ba-qa-v1.md → skill-ba-qna-v1.md} +2 -2
  47. package/custom/skills/ba-skills/{skill-ba-template-uc-v1.md → skill-ba-uc-template-v1.md} +0 -0
  48. package/custom/skills/ba-skills/{skill-ba-prototype-v1.md → skill-ba-ui-prototype-v1.md} +2 -2
  49. package/custom/skills/ba-skills/{skill-ba-viet-spec-uc-v1.md → skill-ba-write-uc-spec-v1.md} +4 -4
  50. package/custom/skills/coverage-check/SKILL.md +0 -0
  51. package/custom/skills/deploy-model/SKILL.md +0 -0
  52. package/custom/skills/design-experiment/SKILL.md +0 -0
  53. package/custom/skills/evaluate-model/SKILL.md +0 -0
  54. package/custom/skills/evidence-aggregation/SKILL.md +0 -0
  55. package/custom/skills/execute-flow/SKILL.md +0 -0
  56. package/custom/skills/execute-flow/templates/playwright.config.ts +0 -0
  57. package/custom/skills/explore-data/SKILL.md +0 -0
  58. package/custom/skills/figma-to-component/SKILL.md +0 -0
  59. package/custom/skills/frame-ml-problem/SKILL.md +0 -0
  60. package/custom/skills/gate-review/SKILL.md +0 -0
  61. package/custom/skills/generate-spec/SKILL.md +0 -0
  62. package/custom/skills/generate-test-report/SKILL.md +0 -0
  63. package/custom/skills/generate-test-report/templates/test-report.md +0 -0
  64. package/custom/skills/generate-testcase/SKILL.md +0 -0
  65. package/custom/skills/generate-testcase/templates/testcase.md +0 -0
  66. package/custom/skills/impact-analysis/SKILL.md +0 -0
  67. package/custom/skills/improve-algorithm/SKILL.md +0 -0
  68. package/custom/skills/investigate-bug/SKILL.md +0 -0
  69. package/custom/skills/log-bug/SKILL.md +0 -0
  70. package/custom/skills/pr-impact-analysis/SKILL.md +0 -0
  71. package/custom/skills/report-customer/SKILL.md +0 -0
  72. package/custom/skills/retest-orchestration/SKILL.md +0 -0
  73. package/custom/skills/review-plan/SKILL.md +0 -0
  74. package/custom/skills/script-sync/SKILL.md +0 -0
  75. package/custom/skills/test-analysis/SKILL.md +0 -0
  76. package/custom/skills/test-skills/categories/00-core/00.01.requirement-analysis.md +0 -0
  77. package/custom/skills/test-skills/categories/00-core/00.02.risk-analysis.md +0 -0
  78. package/custom/skills/test-skills/categories/00-core/00.03.test-scenario-builder.md +0 -0
  79. package/custom/skills/test-skills/categories/00-core/00.04.testcase-review.md +0 -0
  80. package/custom/skills/test-skills/categories/01-test-design/01.01.boundary-value-analysis.md +0 -0
  81. package/custom/skills/test-skills/categories/01-test-design/01.02.equivalence.partitioning.md +0 -0
  82. package/custom/skills/test-skills/categories/01-test-design/01.03.decision-table.md +0 -0
  83. package/custom/skills/test-skills/categories/01-test-design/01.04.state.transition.md +0 -0
  84. package/custom/skills/test-skills/categories/01-test-design/01.05.pairwise.md +0 -0
  85. package/custom/skills/test-skills/categories/01-test-design/01.06.error-guessing.md +0 -0
  86. package/custom/skills/test-skills/categories/02-ui-testing/02.01.UI-layout.md +0 -0
  87. package/custom/skills/test-skills/categories/02-ui-testing/02.02.form-validation.md +0 -0
  88. package/custom/skills/test-skills/categories/02-ui-testing/02.03.navigation.md +0 -0
  89. package/custom/skills/test-skills/categories/02-ui-testing/02.04.localization.md +0 -0
  90. package/custom/skills/test-skills/categories/02-ui-testing/02.05.accessibility.md +0 -0
  91. package/custom/skills/test-skills/categories/03-business-testing/03.01.CRUD-testing.md +0 -0
  92. package/custom/skills/test-skills/categories/03-business-testing/03.02.workflow-testing.md +0 -0
  93. package/custom/skills/test-skills/categories/03-business-testing/03.03.permission-testing.md +0 -0
  94. package/custom/skills/test-skills/categories/03-business-testing/03.04.dependency-validation.md +0 -0
  95. package/custom/skills/test-skills/categories/03-business-testing/03.05.notification-testing.md +0 -0
  96. package/custom/skills/test-skills/categories/03-business-testing/03.06.calculation.testing.md +0 -0
  97. package/custom/skills/test-skills/categories/04-data-testing/04.01.database-testing.md +0 -0
  98. package/custom/skills/test-skills/categories/04-data-testing/04.02.import-export-testing.md +0 -0
  99. package/custom/skills/test-skills/categories/04-data-testing/04.03.data-mapping.md +0 -0
  100. package/custom/skills/test-skills/categories/04-data-testing/04.04.duplicate-handling.md +0 -0
  101. package/custom/skills/test-skills/categories/04-data-testing/04.05.migration.md +0 -0
  102. package/custom/skills/test-skills/categories/05-integration/05.01.API-testing.md +0 -0
  103. package/custom/skills/test-skills/categories/05-integration/05.02.third-party-integration.md +0 -0
  104. package/custom/skills/test-skills/categories/05-integration/05.03.batch-processing.md +0 -0
  105. package/custom/skills/test-skills/categories/05-integration/05.04.file-upload-download.md +0 -0
  106. package/custom/skills/test-skills/categories/08-domain-skills/CMS.md +0 -0
  107. package/custom/skills/test-skills/categories/08-domain-skills/Ecommerce.md +0 -0
  108. package/custom/skills/test-skills/categories/99-review/99.01.coverage-review.md +0 -0
  109. package/custom/skills/test-skills/categories/99-review/99.02.knowledge-learning.md +0 -0
  110. package/custom/skills/test-skills/categories/99-review/99.03.repository-update.md +0 -0
  111. package/custom/skills/test-skills/categories/99-review/99.04.change-history.md +0 -0
  112. package/custom/skills/test-skills/rules/directory-and-naming-convention.md +158 -0
  113. package/custom/skills/test-skills/rules/{QA_Writing_Standards.md → qa-writing-standards.md} +0 -0
  114. package/custom/skills/test-skills/template/{template_testcase.md → testcase-template.md} +0 -0
  115. package/custom/skills/train-model/SKILL.md +0 -0
  116. package/custom/templates/laravel.md +0 -0
  117. package/custom/templates/nestjs.md +0 -0
  118. package/custom/templates/nextjs.md +0 -0
  119. package/custom/templates/nodejs-express.md +0 -0
  120. package/custom/templates/php-plain.md +0 -0
  121. package/custom/templates/php.md +0 -0
  122. package/custom/templates/python-django.md +0 -0
  123. package/custom/templates/python-fastapi.md +0 -0
  124. package/custom/templates/python-ml.md +0 -0
  125. package/custom/templates/python.md +0 -0
  126. package/custom/templates/reactjs.md +0 -0
  127. package/custom/templates/shared/coding-workflow.md +15 -0
  128. package/custom/templates/shared/create-spec-workflow.md +80 -89
  129. package/custom/templates/shared/create-testcase-workflow.md +65 -75
  130. package/custom/templates/shared/gate-workflow.md +3 -3
  131. package/custom/templates/shared/ml-gate-workflow.md +0 -0
  132. package/custom/templates/spring-boot.md +0 -0
  133. package/custom/templates/tools/claude.md +0 -0
  134. package/custom/templates/tools/copilot.md +0 -0
  135. package/custom/templates/tools/cursor.md +0 -0
  136. package/custom/templates/tools/gemini.md +0 -0
  137. package/custom/templates/tools/generic.md +0 -0
  138. package/custom/templates/vue-nuxt.md +0 -0
  139. package/docs/common/AIFLOW.md +0 -0
  140. package/docs/common/CHANGELOG.md +28 -9
  141. package/docs/common/QUICK_START.md +0 -0
  142. package/docs/common/ai-integration.md +0 -0
  143. package/docs/common/cli-reference.md +0 -0
  144. package/docs/common/configuration.md +0 -0
  145. package/docs/common/getting-started.md +0 -0
  146. package/docs/common/troubleshooting.md +0 -0
  147. package/docs/common/workflows/bug-fix.md +0 -0
  148. package/docs/common/workflows/feature.md +0 -0
  149. package/docs/common/workflows/figma.md +0 -0
  150. package/docs/common/workflows/impact-analysis.md +0 -0
  151. package/docs/common/workflows/investigation.md +0 -0
  152. package/docs/common/workflows/refactor.md +0 -0
  153. package/docs/project/ARCHITECTURE.md +0 -0
  154. package/index.js +0 -0
  155. package/package.json +1 -1
  156. package/scripts/checkpoint.js +0 -0
  157. package/scripts/config.js +0 -0
  158. package/scripts/context.js +0 -0
  159. package/scripts/create-score-excel.js +41 -47
  160. package/scripts/detect.js +0 -0
  161. package/scripts/doctor.js +0 -0
  162. package/scripts/gitnexus-worker.js +0 -0
  163. package/scripts/guide.js +0 -0
  164. package/scripts/hooks/block-git-write.js +0 -0
  165. package/scripts/hooks/session-start.js +1 -0
  166. package/scripts/hooks/session-stop.js +0 -0
  167. package/scripts/init.js +5 -0
  168. package/scripts/memory.js +0 -0
  169. package/scripts/prompt.js +0 -0
  170. package/scripts/remove.js +0 -0
  171. package/scripts/review.js +0 -0
  172. package/scripts/scaffold-playwright.js +0 -0
  173. package/scripts/task.js +0 -0
  174. package/scripts/telemetry/cli.js +0 -0
  175. package/scripts/telemetry/config.js +0 -0
  176. package/scripts/telemetry/crypto.js +0 -0
  177. package/scripts/telemetry/flush.js +0 -0
  178. package/scripts/telemetry/record.js +0 -0
  179. package/scripts/update.js +0 -0
  180. package/scripts/use.js +3 -2
  181. package/scripts/validate.js +0 -0
  182. package/upstream/.claude-plugin/marketplace.json +0 -0
  183. package/upstream/.claude-plugin/plugin.json +0 -0
  184. package/upstream/.codex/INSTALL.md +0 -0
  185. package/upstream/.cursor-plugin/plugin.json +0 -0
  186. package/upstream/.gitattributes +0 -0
  187. package/upstream/.github/FUNDING.yml +0 -0
  188. package/upstream/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  189. package/upstream/.github/ISSUE_TEMPLATE/config.yml +0 -0
  190. package/upstream/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  191. package/upstream/.github/ISSUE_TEMPLATE/platform_support.md +0 -0
  192. package/upstream/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  193. package/upstream/.opencode/INSTALL.md +0 -0
  194. package/upstream/.opencode/plugins/superpowers.js +0 -0
  195. package/upstream/.version-bump.json +0 -0
  196. package/upstream/AGENTS.md +0 -0
  197. package/upstream/CHANGELOG.md +0 -0
  198. package/upstream/CLAUDE.md +0 -0
  199. package/upstream/CODE_OF_CONDUCT.md +0 -0
  200. package/upstream/GEMINI.md +0 -0
  201. package/upstream/LICENSE +0 -0
  202. package/upstream/README.md +0 -0
  203. package/upstream/RELEASE-NOTES.md +0 -0
  204. package/upstream/agents/code-reviewer.md +0 -0
  205. package/upstream/commands/brainstorm.md +0 -0
  206. package/upstream/commands/execute-plan.md +0 -0
  207. package/upstream/commands/write-plan.md +0 -0
  208. package/upstream/docs/README.codex.md +0 -0
  209. package/upstream/docs/README.opencode.md +0 -0
  210. package/upstream/docs/plans/2025-11-22-opencode-support-design.md +0 -0
  211. package/upstream/docs/plans/2025-11-22-opencode-support-implementation.md +0 -0
  212. package/upstream/docs/plans/2025-11-28-skills-improvements-from-user-feedback.md +0 -0
  213. package/upstream/docs/plans/2026-01-17-visual-brainstorming.md +0 -0
  214. package/upstream/docs/superpowers/plans/2026-01-22-document-review-system.md +0 -0
  215. package/upstream/docs/superpowers/plans/2026-02-19-visual-brainstorming-refactor.md +0 -0
  216. package/upstream/docs/superpowers/plans/2026-03-11-zero-dep-brainstorm-server.md +0 -0
  217. package/upstream/docs/superpowers/plans/2026-03-23-codex-app-compatibility.md +0 -0
  218. package/upstream/docs/superpowers/specs/2026-01-22-document-review-system-design.md +0 -0
  219. package/upstream/docs/superpowers/specs/2026-02-19-visual-brainstorming-refactor-design.md +0 -0
  220. package/upstream/docs/superpowers/specs/2026-03-11-zero-dep-brainstorm-server-design.md +0 -0
  221. package/upstream/docs/superpowers/specs/2026-03-23-codex-app-compatibility-design.md +0 -0
  222. package/upstream/docs/testing.md +0 -0
  223. package/upstream/docs/windows/polyglot-hooks.md +0 -0
  224. package/upstream/gemini-extension.json +0 -0
  225. package/upstream/hooks/hooks-cursor.json +0 -0
  226. package/upstream/hooks/hooks.json +0 -0
  227. package/upstream/hooks/run-hook.cmd +0 -0
  228. package/upstream/hooks/session-start +0 -0
  229. package/upstream/package.json +0 -0
  230. package/upstream/scripts/bump-version.sh +0 -0
  231. package/upstream/skills/brainstorming/SKILL.md +0 -0
  232. package/upstream/skills/brainstorming/scripts/frame-template.html +0 -0
  233. package/upstream/skills/brainstorming/scripts/helper.js +0 -0
  234. package/upstream/skills/brainstorming/scripts/server.cjs +0 -0
  235. package/upstream/skills/brainstorming/scripts/start-server.sh +0 -0
  236. package/upstream/skills/brainstorming/scripts/stop-server.sh +0 -0
  237. package/upstream/skills/brainstorming/spec-document-reviewer-prompt.md +0 -0
  238. package/upstream/skills/brainstorming/visual-companion.md +0 -0
  239. package/upstream/skills/dispatching-parallel-agents/SKILL.md +0 -0
  240. package/upstream/skills/executing-plans/SKILL.md +0 -0
  241. package/upstream/skills/finishing-a-development-branch/SKILL.md +0 -0
  242. package/upstream/skills/receiving-code-review/SKILL.md +0 -0
  243. package/upstream/skills/requesting-code-review/SKILL.md +0 -0
  244. package/upstream/skills/requesting-code-review/code-reviewer.md +0 -0
  245. package/upstream/skills/subagent-driven-development/SKILL.md +0 -0
  246. package/upstream/skills/subagent-driven-development/code-quality-reviewer-prompt.md +0 -0
  247. package/upstream/skills/subagent-driven-development/implementer-prompt.md +0 -0
  248. package/upstream/skills/subagent-driven-development/spec-reviewer-prompt.md +0 -0
  249. package/upstream/skills/systematic-debugging/CREATION-LOG.md +0 -0
  250. package/upstream/skills/systematic-debugging/SKILL.md +0 -0
  251. package/upstream/skills/systematic-debugging/condition-based-waiting-example.ts +0 -0
  252. package/upstream/skills/systematic-debugging/condition-based-waiting.md +0 -0
  253. package/upstream/skills/systematic-debugging/defense-in-depth.md +0 -0
  254. package/upstream/skills/systematic-debugging/find-polluter.sh +0 -0
  255. package/upstream/skills/systematic-debugging/root-cause-tracing.md +0 -0
  256. package/upstream/skills/systematic-debugging/test-academic.md +0 -0
  257. package/upstream/skills/systematic-debugging/test-pressure-1.md +0 -0
  258. package/upstream/skills/systematic-debugging/test-pressure-2.md +0 -0
  259. package/upstream/skills/systematic-debugging/test-pressure-3.md +0 -0
  260. package/upstream/skills/tdd-lean/SKILL.md +0 -0
  261. package/upstream/skills/test-driven-development/SKILL.md +0 -0
  262. package/upstream/skills/test-driven-development/testing-anti-patterns.md +0 -0
  263. package/upstream/skills/using-git-worktrees/SKILL.md +0 -0
  264. package/upstream/skills/using-superpowers/SKILL.md +0 -0
  265. package/upstream/skills/using-superpowers/references/codex-tools.md +0 -0
  266. package/upstream/skills/using-superpowers/references/copilot-tools.md +0 -0
  267. package/upstream/skills/using-superpowers/references/gemini-tools.md +0 -0
  268. package/upstream/skills/verification-before-completion/SKILL.md +0 -0
  269. package/upstream/skills/writing-plans/SKILL.md +0 -0
  270. package/upstream/skills/writing-plans/plan-document-reviewer-prompt.md +0 -0
  271. package/upstream/skills/writing-skills/SKILL.md +0 -0
  272. package/upstream/skills/writing-skills/anthropic-best-practices.md +0 -0
  273. package/upstream/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +0 -0
  274. package/upstream/skills/writing-skills/graphviz-conventions.dot +0 -0
  275. package/upstream/skills/writing-skills/persuasion-principles.md +0 -0
  276. package/upstream/skills/writing-skills/render-graphs.js +0 -0
  277. package/upstream/skills/writing-skills/testing-skills-with-subagents.md +0 -0
  278. package/upstream/tests/brainstorm-server/package-lock.json +0 -0
  279. package/upstream/tests/brainstorm-server/package.json +0 -0
  280. package/upstream/tests/brainstorm-server/server.test.js +0 -0
  281. package/upstream/tests/brainstorm-server/windows-lifecycle.test.sh +0 -0
  282. package/upstream/tests/brainstorm-server/ws-protocol.test.js +0 -0
  283. package/upstream/tests/claude-code/README.md +0 -0
  284. package/upstream/tests/claude-code/analyze-token-usage.py +0 -0
  285. package/upstream/tests/claude-code/run-skill-tests.sh +0 -0
  286. package/upstream/tests/claude-code/test-document-review-system.sh +0 -0
  287. package/upstream/tests/claude-code/test-helpers.sh +0 -0
  288. package/upstream/tests/claude-code/test-subagent-driven-development-integration.sh +0 -0
  289. package/upstream/tests/claude-code/test-subagent-driven-development.sh +0 -0
  290. package/upstream/tests/explicit-skill-requests/prompts/action-oriented.txt +0 -0
  291. package/upstream/tests/explicit-skill-requests/prompts/after-planning-flow.txt +0 -0
  292. package/upstream/tests/explicit-skill-requests/prompts/claude-suggested-it.txt +0 -0
  293. package/upstream/tests/explicit-skill-requests/prompts/i-know-what-sdd-means.txt +0 -0
  294. package/upstream/tests/explicit-skill-requests/prompts/mid-conversation-execute-plan.txt +0 -0
  295. package/upstream/tests/explicit-skill-requests/prompts/please-use-brainstorming.txt +0 -0
  296. package/upstream/tests/explicit-skill-requests/prompts/skip-formalities.txt +0 -0
  297. package/upstream/tests/explicit-skill-requests/prompts/subagent-driven-development-please.txt +0 -0
  298. package/upstream/tests/explicit-skill-requests/prompts/use-systematic-debugging.txt +0 -0
  299. package/upstream/tests/explicit-skill-requests/run-all.sh +0 -0
  300. package/upstream/tests/explicit-skill-requests/run-claude-describes-sdd.sh +0 -0
  301. package/upstream/tests/explicit-skill-requests/run-extended-multiturn-test.sh +0 -0
  302. package/upstream/tests/explicit-skill-requests/run-haiku-test.sh +0 -0
  303. package/upstream/tests/explicit-skill-requests/run-multiturn-test.sh +0 -0
  304. package/upstream/tests/explicit-skill-requests/run-test.sh +0 -0
  305. package/upstream/tests/opencode/run-tests.sh +0 -0
  306. package/upstream/tests/opencode/setup.sh +0 -0
  307. package/upstream/tests/opencode/test-plugin-loading.sh +0 -0
  308. package/upstream/tests/opencode/test-priority.sh +0 -0
  309. package/upstream/tests/opencode/test-tools.sh +0 -0
  310. package/upstream/tests/skill-triggering/prompts/dispatching-parallel-agents.txt +0 -0
  311. package/upstream/tests/skill-triggering/prompts/executing-plans.txt +0 -0
  312. package/upstream/tests/skill-triggering/prompts/requesting-code-review.txt +0 -0
  313. package/upstream/tests/skill-triggering/prompts/systematic-debugging.txt +0 -0
  314. package/upstream/tests/skill-triggering/prompts/test-driven-development.txt +0 -0
  315. package/upstream/tests/skill-triggering/prompts/writing-plans.txt +0 -0
  316. package/upstream/tests/skill-triggering/run-all.sh +0 -0
  317. package/upstream/tests/skill-triggering/run-test.sh +0 -0
  318. package/upstream/tests/subagent-driven-dev/go-fractals/design.md +0 -0
  319. package/upstream/tests/subagent-driven-dev/go-fractals/plan.md +0 -0
  320. package/upstream/tests/subagent-driven-dev/go-fractals/scaffold.sh +0 -0
  321. package/upstream/tests/subagent-driven-dev/run-test.sh +0 -0
  322. package/upstream/tests/subagent-driven-dev/svelte-todo/design.md +0 -0
  323. package/upstream/tests/subagent-driven-dev/svelte-todo/plan.md +0 -0
  324. package/upstream/tests/subagent-driven-dev/svelte-todo/scaffold.sh +0 -0
  325. package/custom/skills/test-skills/rules/Directory_and_Naming_Convention.md +0 -257
@@ -39,8 +39,8 @@ function parseLog(filePath) {
39
39
  if (!user || user === '-' || user === '') continue;
40
40
 
41
41
  const timestamp = cols[0] || '';
42
- const command = cols[6] || '';
43
- const ticket = cols[9] || '';
42
+ const command = cols[6] || '';
43
+ const ticket = cols[9] || '';
44
44
 
45
45
  const date = timestamp.split(' ')[0]; // dd/MM/yyyy
46
46
 
@@ -74,10 +74,10 @@ function calcScore(u) {
74
74
  if (events === 0) return 0;
75
75
 
76
76
  // Gate aggregation
77
- const gateStarted = new Set(); // gate numbers
78
- const gateApproved = new Set();
79
- const ticketsStarted = new Set();
80
- const ticketsCompleted = new Set(); // gate4.approved or gate5.start
77
+ const gateStarted = new Set(); // gate numbers
78
+ const gateApproved = new Set();
79
+ const ticketsStarted = new Set();
80
+ const ticketsCompleted = new Set(); // gate4.approved or gate5.start
81
81
 
82
82
  for (const g of gateCmds) {
83
83
  const hasTicket = g.ticket && g.ticket !== '-' && g.ticket !== '';
@@ -97,9 +97,9 @@ function calcScore(u) {
97
97
  }
98
98
  }
99
99
 
100
- const hasUse = USE_CMDS.has('use') && rawCmds.has('use');
101
- const hasPrompt = rawCmds.has('prompt');
102
- const hasGuide = rawCmds.has('guide') || rawCmds.has('guideline') || rawCmds.has('sync-skills');
100
+ const hasUse = USE_CMDS.has('use') && rawCmds.has('use');
101
+ const hasPrompt = rawCmds.has('prompt');
102
+ const hasGuide = rawCmds.has('guide') || rawCmds.has('guideline') || rawCmds.has('sync-skills');
103
103
  const hasGateHighApproved = gateApproved.has(3) || gateApproved.has(4);
104
104
 
105
105
  // Score 5: gate 3-5 approved + ≥ 3 tickets completed
@@ -122,9 +122,9 @@ function calcScore(u) {
122
122
  }
123
123
 
124
124
  const SCORE_LABELS = [
125
- 'Không hoạt động',
126
- 'Mới khám phá',
127
- 'Bắt đầu dùng',
125
+ 'Trong tuần không sử dụng lần nào',
126
+ 'Rất ít dùng',
127
+ ' sử dụng nhưng chưa bắt đầu workflow nào cả',
128
128
  'Dùng có workflow',
129
129
  'Hoàn thành workflow',
130
130
  'Sử dụng thường xuyên workflow',
@@ -149,19 +149,19 @@ function buildRow(email, u) {
149
149
  .sort();
150
150
 
151
151
  // Compact gate summary
152
- const startedGates = [...new Set(gateCmds.filter(g => g.type === 'start').map(g => g.gateNum))].sort((a, b) => a - b);
152
+ const startedGates = [...new Set(gateCmds.filter(g => g.type === 'start').map(g => g.gateNum))].sort((a, b) => a - b);
153
153
  const approvedGates = [...new Set(gateCmds.filter(g => g.type === 'approved').map(g => g.gateNum))].sort((a, b) => a - b);
154
154
 
155
- const ticketsStarted = [...new Set(gateCmds.filter(g => g.type === 'start' && g.ticket && g.ticket !== '-').map(g => g.ticket))];
156
- const ticketsApproved = [...new Set(gateCmds.filter(g => g.type === 'approved' && g.ticket && g.ticket !== '-').map(g => g.ticket))];
155
+ const ticketsStarted = [...new Set(gateCmds.filter(g => g.type === 'start' && g.ticket && g.ticket !== '-').map(g => g.ticket))];
156
+ const ticketsApproved = [...new Set(gateCmds.filter(g => g.type === 'approved' && g.ticket && g.ticket !== '-').map(g => g.ticket))];
157
157
  const ticketsCompleted = [...new Set(gateCmds.filter(g =>
158
158
  ((g.type === 'approved' && g.gateNum >= 4) || (g.gateNum === 5 && g.type === 'start'))
159
159
  && g.ticket && g.ticket !== '-'
160
160
  ).map(g => g.ticket))];
161
161
 
162
- const gateStartStr = startedGates.length ? `G${startedGates.join(',')} / ${ticketsStarted.length} ticket(s)` : '';
162
+ const gateStartStr = startedGates.length ? `G${startedGates.join(',')} / ${ticketsStarted.length} ticket(s)` : '';
163
163
  const gateApprovedStr = approvedGates.length ? `G${approvedGates.join(',')} / ${ticketsApproved.length} ticket(s)` : '';
164
- const ticketsStr = ticketsCompleted.length ? ticketsCompleted.join(', ') : '';
164
+ const ticketsStr = ticketsCompleted.length ? ticketsCompleted.join(', ') : '';
165
165
 
166
166
  // Notes
167
167
  const onlyExploreCmds = [...rawCmds].every(c => EXPLORE_CMDS.has(c));
@@ -207,20 +207,20 @@ async function writeExcel(rows, outputPath, sheetLabel, fromLabel, toLabel) {
207
207
  const sheet = workbook.addWorksheet(`Score ${sheetLabel}`);
208
208
 
209
209
  sheet.columns = [
210
- { key: 'no', width: 5 },
211
- { key: 'email', width: 30 },
212
- { key: 'events', width: 8 },
213
- { key: 'activeDays', width: 10 },
214
- { key: 'keyCommands', width: 40 },
215
- { key: 'gateStart', width: 24 },
210
+ { key: 'no', width: 5 },
211
+ { key: 'email', width: 30 },
212
+ { key: 'events', width: 8 },
213
+ { key: 'activeDays', width: 10 },
214
+ { key: 'keyCommands', width: 40 },
215
+ { key: 'gateStart', width: 24 },
216
216
  { key: 'gateApproved', width: 24 },
217
- { key: 'tickets', width: 44 },
218
- { key: 'depthScore', width: 8 },
219
- { key: 'depthLabel', width: 28 },
220
- { key: 'impactScore', width: 8 },
221
- { key: 'impactLabel', width: 18 },
222
- { key: 'totalScore', width: 8 },
223
- { key: 'notes', width: 54 },
217
+ { key: 'tickets', width: 44 },
218
+ { key: 'depthScore', width: 8 },
219
+ { key: 'depthLabel', width: 28 },
220
+ { key: 'impactScore', width: 8 },
221
+ { key: 'impactLabel', width: 18 },
222
+ { key: 'totalScore', width: 8 },
223
+ { key: 'notes', width: 54 },
224
224
  ];
225
225
 
226
226
  const border = {
@@ -232,9 +232,9 @@ async function writeExcel(rows, outputPath, sheetLabel, fromLabel, toLabel) {
232
232
  sheet.addRow([`AI Flow Kit — Weekly Score Report: ${fromLabel} – ${toLabel}`]);
233
233
  sheet.mergeCells('A1:N1');
234
234
  const title = sheet.getCell('A1');
235
- title.font = { bold: true, size: 13, color: { argb: 'FF1F3864' } };
235
+ title.font = { bold: true, size: 13, color: { argb: 'FF1F3864' } };
236
236
  title.alignment = { vertical: 'middle', horizontal: 'center' };
237
- title.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FFD6DCE4' } };
237
+ title.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FFD6DCE4' } };
238
238
  sheet.getRow(1).height = 28;
239
239
 
240
240
  // Header row
@@ -247,10 +247,10 @@ async function writeExcel(rows, outputPath, sheetLabel, fromLabel, toLabel) {
247
247
  const hRow = sheet.addRow(HEADERS);
248
248
  hRow.height = 36;
249
249
  hRow.eachCell(cell => {
250
- cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FF4472C4' } };
251
- cell.font = { bold: true, color: { argb: 'FFFFFFFF' }, size: 11 };
250
+ cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FF4472C4' } };
251
+ cell.font = { bold: true, color: { argb: 'FFFFFFFF' }, size: 11 };
252
252
  cell.alignment = { vertical: 'middle', horizontal: 'center', wrapText: true };
253
- cell.border = border;
253
+ cell.border = border;
254
254
  });
255
255
 
256
256
  // Score → row color
@@ -276,7 +276,7 @@ async function writeExcel(rows, outputPath, sheetLabel, fromLabel, toLabel) {
276
276
  const fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: COLORS[row.depthScore] || 'FFFFFFFF' } };
277
277
  r.eachCell({ includeEmpty: true }, (cell, col) => {
278
278
  cell.border = border;
279
- cell.fill = fill;
279
+ cell.fill = fill;
280
280
  cell.alignment = (col <= 4 || (col >= 9 && col <= 13))
281
281
  ? { vertical: 'middle', horizontal: 'center' }
282
282
  : { vertical: 'middle', horizontal: 'left', wrapText: false };
@@ -286,7 +286,7 @@ async function writeExcel(rows, outputPath, sheetLabel, fromLabel, toLabel) {
286
286
  r.getCell(13).value = { formula: `I${excelRowNum}+K${excelRowNum}` };
287
287
  });
288
288
 
289
- sheet.views = [{ state: 'frozen', ySplit: 2 }];
289
+ sheet.views = [{ state: 'frozen', ySplit: 2 }];
290
290
  sheet.autoFilter = { from: 'A2', to: 'N2' };
291
291
 
292
292
  await workbook.xlsx.writeFile(outputPath);
@@ -295,17 +295,14 @@ async function writeExcel(rows, outputPath, sheetLabel, fromLabel, toLabel) {
295
295
 
296
296
  // ── Canonical user list (fixed order) ─────────────────────────────────────
297
297
  const CANONICAL_USERS = [
298
- 'anhtt@relipasoft.com',
299
298
  'hoangdv@relipasoft.com',
300
299
  'chinhtt@relipasoft.com',
301
- 'hieptv@relipasoft.com',
302
300
  'phongnx@relipasoft.com',
303
301
  'dungha@relipasoft.com',
304
302
  'thangnv@relipasoft.com',
305
303
  'nguyenlt@relipasoft.com',
306
304
  'thuongvv@relipasoft.com',
307
305
  'yenvtb@relipasoft.com',
308
- 'tructh@relipasoft.com',
309
306
  'thainq@relipasoft.com',
310
307
  'tuoittx@relipasoft.com',
311
308
  'hungdv@relipasoft.com',
@@ -314,7 +311,7 @@ const CANONICAL_USERS = [
314
311
  'huynq@relipasoft.com',
315
312
  'thinhvq@relipasoft.com',
316
313
  'banv@relipasoft.com',
317
- 'duongnt@relipasoft.com',
314
+ 'duongnt1@relipasoft.com',
318
315
  'anhnt@relipasoft.com',
319
316
  'khanhdd@relipasoft.com',
320
317
  'hieunv@relipasoft.com',
@@ -322,9 +319,7 @@ const CANONICAL_USERS = [
322
319
 
323
320
  // Log email → canonical email (for slight mismatches)
324
321
  const LOG_EMAIL_ALIAS = {
325
- 'tructh@relipasoft.com': 'tructth@relipasoft.com',
326
- 'duongnt1@relipasoft.com': 'duongnt@relipasoft.com',
327
- 'anhtt2@relipasoft.com': 'anhtt@relipasoft.com',
322
+
328
323
  };
329
324
 
330
325
  const EMPTY_USER = (email) => ({
@@ -343,15 +338,14 @@ const EMPTY_USER = (email) => ({
343
338
  ? [dateMatch[1].replace(/-/g, '/'), dateMatch[2].replace(/-/g, '/')]
344
339
  : ['?', '?'];
345
340
  const sheetLabel = dateMatch
346
- ? `${dateMatch[1].slice(0,5).replace(/-/g,'.')}-${dateMatch[2].slice(0,5).replace(/-/g,'.')}.${dateMatch[1].slice(6,10)}`
341
+ ? `${dateMatch[1].slice(0, 5).replace(/-/g, '.')}-${dateMatch[2].slice(0, 5).replace(/-/g, '.')}.${dateMatch[1].slice(6, 10)}`
347
342
  : stem;
348
343
 
349
- const logFile = path.join(__dirname, '..', 'tellog', stem);
344
+ const logFile = path.join(__dirname, '..', 'tellog', stem);
350
345
  const outputFile = path.join(__dirname, '..', 'tellog', `${stem}.xlsx`);
351
346
 
352
347
  const rawUsers = parseLog(logFile);
353
348
 
354
- // Re-key log users using alias map (tructh → tructth, duongnt1 → duongnt)
355
349
  const users = {};
356
350
  for (const [logEmail, data] of Object.entries(rawUsers)) {
357
351
  const canonical = LOG_EMAIL_ALIAS[logEmail] || logEmail;
package/scripts/detect.js CHANGED
File without changes
package/scripts/doctor.js CHANGED
File without changes
File without changes
package/scripts/guide.js CHANGED
File without changes
File without changes
@@ -263,6 +263,7 @@ function buildContextPrompt(ctx, taskState) {
263
263
  lines.push('');
264
264
  lines.push('DO NOT wait for the developer to ask. START NOW.');
265
265
  lines.push('If you have not started automatically, begin as soon as the developer types **"start"**.');
266
+ lines.push('(If a later ticket switch does not seem to trigger this — e.g. `ak use` was run in another terminal while this chat was already open — the developer can run **`/coding`** to load it manually.)');
266
267
  }
267
268
 
268
269
  lines.push('</ACTIVE_TASK>');
File without changes
package/scripts/init.js CHANGED
@@ -305,6 +305,11 @@ async function setupClaudeCommands(projectDir) {
305
305
  dest: 'create-testcase.md',
306
306
  description: 'QA 4-Gate TestCase Creation Workflow — converts raw requirements (SRS/Backlog/Jira/Spec file) into a complete, execution-ready Test Case set following the QA Workflow standard: Gate 1 (requirement & risk analysis), Gate 2 (scenario building), Gate 3 (detailed test case design), Gate 4 (review & optimization). Reads QA sub-skills from .claude/skills/test-skills/.',
307
307
  },
308
+ {
309
+ src: path.join(PKG_DIR, 'custom', 'templates', 'shared', 'coding-workflow.md'),
310
+ dest: 'coding.md',
311
+ description: 'Manual trigger for the DEV 5-Gate Coding Workflow (bug-fix / feature / refactor / investigation / documentation). Use this when the SessionStart auto-start message was missed — e.g. a ticket was loaded with `ak use` while this chat session was already open.',
312
+ },
308
313
  ];
309
314
 
310
315
  for (const cmd of commands) {
package/scripts/memory.js CHANGED
File without changes
package/scripts/prompt.js CHANGED
File without changes
package/scripts/remove.js CHANGED
File without changes
package/scripts/review.js CHANGED
File without changes
File without changes
package/scripts/task.js CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/scripts/update.js CHANGED
File without changes
package/scripts/use.js CHANGED
@@ -630,7 +630,6 @@ async function promptForTaskType(detectedDefault) {
630
630
  { name: td("🐛 Bug Fix", "Coding", "Fix bugs, crashes, regressions"), value: "bug-fix" },
631
631
  { name: td("✨ Feature", "Coding", "Build new features, user stories"), value: "feature" },
632
632
  { name: td("🔄 Refactor", "Coding", "Improve code without behavior change"), value: "refactor" },
633
- { name: td("🔬 Testing", "Testing", "Write tests, QA, coverage"), value: "testing" },
634
633
  { name: td("▶️ Execute Test", "Testing", "Run existing TC scripts (4-gate flow)"), value: "execute" },
635
634
  { name: td("📋 Create Spec", "BA", "Create UC Spec from raw requirements (4-gate BA)"), value: "create-spec" },
636
635
  { name: td("✅ Create TestCase", "QA", "Create Test Cases from requirements (4-gate QA)"), value: "create-testcase" },
@@ -704,7 +703,6 @@ async function manualContext(prefillId = "") {
704
703
  { name: td("🐛 Bug Fix", "Coding", "Fix bugs, crashes, regressions"), value: "bug-fix" },
705
704
  { name: td("✨ Feature", "Coding", "Build new features, user stories"), value: "feature" },
706
705
  { name: td("🔄 Refactor", "Coding", "Improve code without behavior change"), value: "refactor" },
707
- { name: td("🔬 Testing", "Testing", "Write tests, QA, coverage"), value: "testing" },
708
706
  { name: td("▶️ Execute Test", "Testing", "Run existing TC scripts (4-gate flow)"), value: "execute" },
709
707
  { name: td("📋 Create Spec", "BA", "Create UC Spec from raw requirements (4-gate BA)"), value: "create-spec" },
710
708
  { name: td("✅ Create TestCase", "QA", "Create Test Cases from requirements (4-gate QA)"), value: "create-testcase" },
@@ -1103,6 +1101,9 @@ async function suggestNextStep() {
1103
1101
  console.log(
1104
1102
  `\n ${chalk.yellow("Note:")} If the AI does not start automatically, type ${chalk.bold.green('"Gate 1"')} or ${chalk.bold.green('"Analyze ticket"')} to begin.`,
1105
1103
  );
1104
+ console.log(
1105
+ ` ${chalk.yellow("Already have a chat open?")} A ticket loaded via ${chalk.bold.green("ak use")} is only picked up by a ${chalk.bold("new")} Claude session (SessionStart hook). If you loaded this ticket into an already-running chat, type ${chalk.bold.green('"/coding"')} there to load it manually instead of restarting.`,
1106
+ );
1106
1107
  console.log();
1107
1108
  }
1108
1109
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/upstream/LICENSE CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes