just-vibe 0.7.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 (512) hide show
  1. package/.agents/plugins/marketplace.json +12 -0
  2. package/.claude-plugin/marketplace.json +12 -0
  3. package/CHANGELOG.md +49 -0
  4. package/LICENSE +21 -0
  5. package/README.md +282 -0
  6. package/bin/just-vibe.mjs +3 -0
  7. package/docs/command-quality.md +74 -0
  8. package/docs/compatibility.md +29 -0
  9. package/docs/releases.md +51 -0
  10. package/evals/README.md +47 -0
  11. package/evals/behavior/cases/arch-events/flow.json +12 -0
  12. package/evals/behavior/cases/arch-events/task.md +3 -0
  13. package/evals/behavior/cases/authz/access.mjs +1 -0
  14. package/evals/behavior/cases/authz/task.md +3 -0
  15. package/evals/behavior/cases/checkout/checkout.mjs +1 -0
  16. package/evals/behavior/cases/checkout/contract.md +1 -0
  17. package/evals/behavior/cases/checkout/keep.txt +1 -0
  18. package/evals/behavior/cases/checkout/task.md +3 -0
  19. package/evals/behavior/cases/data-reconcile/source.json +14 -0
  20. package/evals/behavior/cases/data-reconcile/target.json +14 -0
  21. package/evals/behavior/cases/data-reconcile/task.md +3 -0
  22. package/evals/behavior/cases/db-migrate/context.json +13 -0
  23. package/evals/behavior/cases/db-migrate/migration.sql +3 -0
  24. package/evals/behavior/cases/db-migrate/task.md +3 -0
  25. package/evals/behavior/cases/db-query/query.sql +1 -0
  26. package/evals/behavior/cases/db-query/rows.json +32 -0
  27. package/evals/behavior/cases/db-query/task.md +3 -0
  28. package/evals/behavior/cases/decision-matrix/decision.json +22 -0
  29. package/evals/behavior/cases/decision-matrix/task.md +3 -0
  30. package/evals/behavior/cases/github-pr/prs.json +16 -0
  31. package/evals/behavior/cases/github-pr/request.json +9 -0
  32. package/evals/behavior/cases/github-pr/task.md +3 -0
  33. package/evals/behavior/cases/idempotency/contract.md +1 -0
  34. package/evals/behavior/cases/idempotency/orders.mjs +1 -0
  35. package/evals/behavior/cases/idempotency/task.md +3 -0
  36. package/evals/behavior/cases/ml-checkpoint/checkpoint.json +6 -0
  37. package/evals/behavior/cases/ml-checkpoint/task.md +3 -0
  38. package/evals/behavior/cases/ml-checkpoint/training.json +16 -0
  39. package/evals/behavior/cases/ml-evaluate/labels.json +18 -0
  40. package/evals/behavior/cases/ml-evaluate/predictions.json +14 -0
  41. package/evals/behavior/cases/ml-evaluate/task.md +3 -0
  42. package/evals/behavior/cases/ml-leakage/task.json +30 -0
  43. package/evals/behavior/cases/ml-leakage/task.md +3 -0
  44. package/evals/behavior/cases/ml-parity/serving.json +16 -0
  45. package/evals/behavior/cases/ml-parity/task.md +3 -0
  46. package/evals/behavior/cases/ml-parity/training.json +16 -0
  47. package/evals/behavior/cases/ml-split/task.json +7 -0
  48. package/evals/behavior/cases/ml-split/task.md +3 -0
  49. package/evals/behavior/cases/ops-logs/context.json +4 -0
  50. package/evals/behavior/cases/ops-logs/events.json +17 -0
  51. package/evals/behavior/cases/ops-logs/task.md +3 -0
  52. package/evals/behavior/cases/rag-boundary/documents.json +26 -0
  53. package/evals/behavior/cases/rag-boundary/query.json +5 -0
  54. package/evals/behavior/cases/rag-boundary/task.md +3 -0
  55. package/evals/behavior/cases/react-race/AccountPanel.jsx +1 -0
  56. package/evals/behavior/cases/react-race/loader.mjs +1 -0
  57. package/evals/behavior/cases/react-race/task.md +3 -0
  58. package/evals/behavior/cases/regression-test/checkout.mjs +1 -0
  59. package/evals/behavior/cases/regression-test/contract.md +1 -0
  60. package/evals/behavior/cases/regression-test/task.md +3 -0
  61. package/evals/behavior/cases/ui-accessibility/observations.json +17 -0
  62. package/evals/behavior/cases/ui-accessibility/task.md +3 -0
  63. package/evals/behavior/cases/vercel-env/consumers.json +13 -0
  64. package/evals/behavior/cases/vercel-env/metadata.json +11 -0
  65. package/evals/behavior/cases/vercel-env/task.md +3 -0
  66. package/evals/behavior/cases/vite-assets/deployment.json +8 -0
  67. package/evals/behavior/cases/vite-assets/render.mjs +1 -0
  68. package/evals/behavior/cases/vite-assets/task.md +3 -0
  69. package/evals/behavior/cases/vite-assets/vite.config.mjs +1 -0
  70. package/evals/behavior/cases.json +185 -0
  71. package/evals/behavior/code-oracles.mjs +58 -0
  72. package/evals/behavior/harness.mjs +109 -0
  73. package/evals/behavior/oracles.json +196 -0
  74. package/evals/benchmark/README.md +57 -0
  75. package/evals/benchmark/cases.json +9 -0
  76. package/evals/benchmark/harness.mjs +231 -0
  77. package/evals/benchmark/oracles/node.mjs +69 -0
  78. package/evals/benchmark/oracles/python.py +117 -0
  79. package/evals/benchmark/report.mjs +62 -0
  80. package/evals/benchmark/repos/async-cache/README.md +12 -0
  81. package/evals/benchmark/repos/async-cache/TASK.md +1 -0
  82. package/evals/benchmark/repos/async-cache/package.json +1 -0
  83. package/evals/benchmark/repos/async-cache/src/cache.mjs +13 -0
  84. package/evals/benchmark/repos/async-cache/src/view.mjs +9 -0
  85. package/evals/benchmark/repos/async-cache/test/smoke.test.mjs +9 -0
  86. package/evals/benchmark/repos/ledger/README.md +11 -0
  87. package/evals/benchmark/repos/ledger/TASK.md +1 -0
  88. package/evals/benchmark/repos/ledger/src/service.py +14 -0
  89. package/evals/benchmark/repos/ledger/src/store.py +12 -0
  90. package/evals/benchmark/repos/ledger/test/test_smoke.py +9 -0
  91. package/evals/benchmark/repos/scoped-commit/README.md +5 -0
  92. package/evals/benchmark/repos/scoped-commit/TASK.md +1 -0
  93. package/evals/benchmark/repos/scoped-commit/package.json +1 -0
  94. package/evals/benchmark/repos/scoped-commit/src/invoice.mjs +8 -0
  95. package/evals/benchmark/repos/scoped-commit/test/invoice.test.mjs +4 -0
  96. package/evals/benchmark/repos/temporal-ml/README.md +12 -0
  97. package/evals/benchmark/repos/temporal-ml/TASK.md +1 -0
  98. package/evals/benchmark/repos/temporal-ml/src/features.py +9 -0
  99. package/evals/benchmark/repos/temporal-ml/src/pipeline.py +10 -0
  100. package/evals/benchmark/repos/temporal-ml/src/report.py +2 -0
  101. package/evals/benchmark/repos/temporal-ml/test/test_smoke.py +7 -0
  102. package/evals/benchmark/support/commit-tree.mjs +11 -0
  103. package/evals/benchmark/support/python-test-report.py +48 -0
  104. package/evals/fixtures/checkout/checkout.mjs +4 -0
  105. package/evals/fixtures/checkout/checkout.test.mjs +13 -0
  106. package/evals/fixtures/checkout/package.json +6 -0
  107. package/evals/fixtures/checkout/unrelated.txt +1 -0
  108. package/evals/fixtures/ml/observations.csv +5 -0
  109. package/evals/fixtures/ml/task.md +1 -0
  110. package/evals/releases/0.2.0.md +45 -0
  111. package/evals/releases/0.3.0.md +23 -0
  112. package/evals/releases/0.4.0-results.json +1274 -0
  113. package/evals/releases/0.4.0.md +55 -0
  114. package/evals/releases/0.5.0.md +28 -0
  115. package/evals/releases/0.6.0-after-results.json +1307 -0
  116. package/evals/releases/0.6.0-before-results.json +4850 -0
  117. package/evals/releases/0.6.0.md +94 -0
  118. package/evals/releases/0.7.0.md +32 -0
  119. package/evals/scenarios.json +7777 -0
  120. package/package.json +50 -0
  121. package/plugins/just-vibe/.claude-plugin/plugin.json +11 -0
  122. package/plugins/just-vibe/.codex-plugin/plugin.json +24 -0
  123. package/plugins/just-vibe/LICENSE +21 -0
  124. package/plugins/just-vibe/catalog/commands.json +16757 -0
  125. package/plugins/just-vibe/catalog/packs.json +115 -0
  126. package/plugins/just-vibe/catalog/profiles.json +2503 -0
  127. package/plugins/just-vibe/hooks/hooks.json +11 -0
  128. package/plugins/just-vibe/references/command-reference.md +328 -0
  129. package/plugins/just-vibe/references/daily-workflows.md +133 -0
  130. package/plugins/just-vibe/references/execution.md +60 -0
  131. package/plugins/just-vibe/references/instruction-memory.md +86 -0
  132. package/plugins/just-vibe/references/packs/api.md +27 -0
  133. package/plugins/just-vibe/references/packs/architecture.md +29 -0
  134. package/plugins/just-vibe/references/packs/backend.md +43 -0
  135. package/plugins/just-vibe/references/packs/data.md +27 -0
  136. package/plugins/just-vibe/references/packs/database.md +32 -0
  137. package/plugins/just-vibe/references/packs/decisions.md +29 -0
  138. package/plugins/just-vibe/references/packs/general.md +34 -0
  139. package/plugins/just-vibe/references/packs/git.md +45 -0
  140. package/plugins/just-vibe/references/packs/github.md +31 -0
  141. package/plugins/just-vibe/references/packs/installation.md +27 -0
  142. package/plugins/just-vibe/references/packs/llm.md +33 -0
  143. package/plugins/just-vibe/references/packs/ml-data.md +43 -0
  144. package/plugins/just-vibe/references/packs/ml-deployment.md +31 -0
  145. package/plugins/just-vibe/references/packs/ml-evaluation.md +29 -0
  146. package/plugins/just-vibe/references/packs/ml-experiments.md +29 -0
  147. package/plugins/just-vibe/references/packs/operations.md +35 -0
  148. package/plugins/just-vibe/references/packs/react.md +29 -0
  149. package/plugins/just-vibe/references/packs/security.md +31 -0
  150. package/plugins/just-vibe/references/packs/testing.md +35 -0
  151. package/plugins/just-vibe/references/packs/ui.md +29 -0
  152. package/plugins/just-vibe/references/packs/vercel.md +29 -0
  153. package/plugins/just-vibe/references/packs/vite.md +29 -0
  154. package/plugins/just-vibe/references/profile-reference.md +155 -0
  155. package/plugins/just-vibe/references/profiles/accessibility-engineer.md +31 -0
  156. package/plugins/just-vibe/references/profiles/agent-systems-engineer.md +31 -0
  157. package/plugins/just-vibe/references/profiles/ai-evaluation-engineer.md +31 -0
  158. package/plugins/just-vibe/references/profiles/ai-security-engineer.md +31 -0
  159. package/plugins/just-vibe/references/profiles/analytics-engineer.md +31 -0
  160. package/plugins/just-vibe/references/profiles/android-engineer.md +31 -0
  161. package/plugins/just-vibe/references/profiles/api-engineer.md +31 -0
  162. package/plugins/just-vibe/references/profiles/application-security-engineer.md +31 -0
  163. package/plugins/just-vibe/references/profiles/applied-ai-engineer.md +31 -0
  164. package/plugins/just-vibe/references/profiles/backend-engineer.md +31 -0
  165. package/plugins/just-vibe/references/profiles/bioinformatics-engineer.md +31 -0
  166. package/plugins/just-vibe/references/profiles/blockchain-engineer.md +31 -0
  167. package/plugins/just-vibe/references/profiles/build-release-engineer.md +31 -0
  168. package/plugins/just-vibe/references/profiles/business-intelligence-engineer.md +31 -0
  169. package/plugins/just-vibe/references/profiles/capacity-engineer.md +31 -0
  170. package/plugins/just-vibe/references/profiles/causal-inference-scientist.md +31 -0
  171. package/plugins/just-vibe/references/profiles/cloud-architect.md +31 -0
  172. package/plugins/just-vibe/references/profiles/cloud-engineer.md +31 -0
  173. package/plugins/just-vibe/references/profiles/cloud-security-engineer.md +31 -0
  174. package/plugins/just-vibe/references/profiles/compiler-engineer.md +31 -0
  175. package/plugins/just-vibe/references/profiles/computer-vision-engineer.md +31 -0
  176. package/plugins/just-vibe/references/profiles/controls-engineer.md +31 -0
  177. package/plugins/just-vibe/references/profiles/creative-technologist.md +31 -0
  178. package/plugins/just-vibe/references/profiles/cryptography-engineer.md +31 -0
  179. package/plugins/just-vibe/references/profiles/data-analyst.md +31 -0
  180. package/plugins/just-vibe/references/profiles/data-architect.md +31 -0
  181. package/plugins/just-vibe/references/profiles/data-engineer.md +31 -0
  182. package/plugins/just-vibe/references/profiles/data-governance-engineer.md +31 -0
  183. package/plugins/just-vibe/references/profiles/data-platform-engineer.md +31 -0
  184. package/plugins/just-vibe/references/profiles/data-quality-engineer.md +31 -0
  185. package/plugins/just-vibe/references/profiles/data-scientist.md +31 -0
  186. package/plugins/just-vibe/references/profiles/database-engineer.md +31 -0
  187. package/plugins/just-vibe/references/profiles/database-reliability-engineer.md +31 -0
  188. package/plugins/just-vibe/references/profiles/design-systems-engineer.md +31 -0
  189. package/plugins/just-vibe/references/profiles/desktop-engineer.md +31 -0
  190. package/plugins/just-vibe/references/profiles/detection-engineer.md +31 -0
  191. package/plugins/just-vibe/references/profiles/developer-advocate.md +31 -0
  192. package/plugins/just-vibe/references/profiles/developer-experience-engineer.md +31 -0
  193. package/plugins/just-vibe/references/profiles/devops-engineer.md +31 -0
  194. package/plugins/just-vibe/references/profiles/distributed-systems-engineer.md +31 -0
  195. package/plugins/just-vibe/references/profiles/edge-engineer.md +31 -0
  196. package/plugins/just-vibe/references/profiles/embedded-engineer.md +31 -0
  197. package/plugins/just-vibe/references/profiles/engineering-manager.md +31 -0
  198. package/plugins/just-vibe/references/profiles/enterprise-architect.md +31 -0
  199. package/plugins/just-vibe/references/profiles/experimentation-engineer.md +31 -0
  200. package/plugins/just-vibe/references/profiles/finops-engineer.md +31 -0
  201. package/plugins/just-vibe/references/profiles/firmware-engineer.md +31 -0
  202. package/plugins/just-vibe/references/profiles/frontend-architect.md +31 -0
  203. package/plugins/just-vibe/references/profiles/frontend-engineer.md +31 -0
  204. package/plugins/just-vibe/references/profiles/fullstack-engineer.md +31 -0
  205. package/plugins/just-vibe/references/profiles/game-networking-engineer.md +31 -0
  206. package/plugins/just-vibe/references/profiles/gameplay-engineer.md +31 -0
  207. package/plugins/just-vibe/references/profiles/geospatial-engineer.md +31 -0
  208. package/plugins/just-vibe/references/profiles/graphics-engineer.md +31 -0
  209. package/plugins/just-vibe/references/profiles/hpc-engineer.md +31 -0
  210. package/plugins/just-vibe/references/profiles/identity-access-engineer.md +31 -0
  211. package/plugins/just-vibe/references/profiles/inference-engineer.md +31 -0
  212. package/plugins/just-vibe/references/profiles/infrastructure-engineer.md +31 -0
  213. package/plugins/just-vibe/references/profiles/integration-architect.md +31 -0
  214. package/plugins/just-vibe/references/profiles/integration-engineer.md +31 -0
  215. package/plugins/just-vibe/references/profiles/ios-engineer.md +31 -0
  216. package/plugins/just-vibe/references/profiles/iot-engineer.md +31 -0
  217. package/plugins/just-vibe/references/profiles/kubernetes-engineer.md +31 -0
  218. package/plugins/just-vibe/references/profiles/llm-engineer.md +31 -0
  219. package/plugins/just-vibe/references/profiles/machine-learning-engineer.md +31 -0
  220. package/plugins/just-vibe/references/profiles/ml-architect.md +31 -0
  221. package/plugins/just-vibe/references/profiles/ml-data-engineer.md +31 -0
  222. package/plugins/just-vibe/references/profiles/ml-platform-engineer.md +31 -0
  223. package/plugins/just-vibe/references/profiles/mlops-engineer.md +31 -0
  224. package/plugins/just-vibe/references/profiles/mobile-engineer.md +31 -0
  225. package/plugins/just-vibe/references/profiles/network-engineer.md +31 -0
  226. package/plugins/just-vibe/references/profiles/nlp-engineer.md +31 -0
  227. package/plugins/just-vibe/references/profiles/observability-engineer.md +31 -0
  228. package/plugins/just-vibe/references/profiles/performance-engineer.md +31 -0
  229. package/plugins/just-vibe/references/profiles/platform-architect.md +31 -0
  230. package/plugins/just-vibe/references/profiles/platform-engineer.md +31 -0
  231. package/plugins/just-vibe/references/profiles/principal-engineer.md +31 -0
  232. package/plugins/just-vibe/references/profiles/privacy-engineer.md +31 -0
  233. package/plugins/just-vibe/references/profiles/product-engineer.md +31 -0
  234. package/plugins/just-vibe/references/profiles/product-security-engineer.md +31 -0
  235. package/plugins/just-vibe/references/profiles/protocol-engineer.md +31 -0
  236. package/plugins/just-vibe/references/profiles/qa-automation-engineer.md +31 -0
  237. package/plugins/just-vibe/references/profiles/recommendation-engineer.md +31 -0
  238. package/plugins/just-vibe/references/profiles/reinforcement-learning-engineer.md +31 -0
  239. package/plugins/just-vibe/references/profiles/research-engineer.md +31 -0
  240. package/plugins/just-vibe/references/profiles/research-scientist.md +31 -0
  241. package/plugins/just-vibe/references/profiles/responsible-ai-engineer.md +31 -0
  242. package/plugins/just-vibe/references/profiles/robotics-engineer.md +31 -0
  243. package/plugins/just-vibe/references/profiles/runtime-engineer.md +31 -0
  244. package/plugins/just-vibe/references/profiles/scientific-software-engineer.md +31 -0
  245. package/plugins/just-vibe/references/profiles/search-engineer.md +31 -0
  246. package/plugins/just-vibe/references/profiles/security-architect.md +31 -0
  247. package/plugins/just-vibe/references/profiles/security-automation-engineer.md +31 -0
  248. package/plugins/just-vibe/references/profiles/security-incident-responder.md +31 -0
  249. package/plugins/just-vibe/references/profiles/senior-software-engineer.md +31 -0
  250. package/plugins/just-vibe/references/profiles/simulation-engineer.md +31 -0
  251. package/plugins/just-vibe/references/profiles/site-reliability-engineer.md +31 -0
  252. package/plugins/just-vibe/references/profiles/software-architect.md +31 -0
  253. package/plugins/just-vibe/references/profiles/solutions-architect.md +31 -0
  254. package/plugins/just-vibe/references/profiles/speech-engineer.md +31 -0
  255. package/plugins/just-vibe/references/profiles/staff-engineer.md +31 -0
  256. package/plugins/just-vibe/references/profiles/storage-engineer.md +31 -0
  257. package/plugins/just-vibe/references/profiles/streaming-data-engineer.md +31 -0
  258. package/plugins/just-vibe/references/profiles/supply-chain-security-engineer.md +31 -0
  259. package/plugins/just-vibe/references/profiles/systems-engineer.md +31 -0
  260. package/plugins/just-vibe/references/profiles/tech-lead.md +31 -0
  261. package/plugins/just-vibe/references/profiles/technical-writer.md +31 -0
  262. package/plugins/just-vibe/references/profiles/test-infrastructure-engineer.md +31 -0
  263. package/plugins/just-vibe/references/profiles/ui-engineer.md +31 -0
  264. package/plugins/just-vibe/references/profiles/ux-engineer.md +31 -0
  265. package/plugins/just-vibe/references/profiles/web-performance-engineer.md +31 -0
  266. package/plugins/just-vibe/references/profiles/xr-engineer.md +31 -0
  267. package/plugins/just-vibe/references/profiles.md +59 -0
  268. package/plugins/just-vibe/references/runtime.md +70 -0
  269. package/plugins/just-vibe/references/scenarios/auth.md +31 -0
  270. package/plugins/just-vibe/references/scenarios/combobox.md +9 -0
  271. package/plugins/just-vibe/references/scenarios/date-picker.md +9 -0
  272. package/plugins/just-vibe/references/scenarios/delivery-evidence.md +21 -0
  273. package/plugins/just-vibe/references/scenarios/dialog.md +9 -0
  274. package/plugins/just-vibe/references/scenarios/training.md +21 -0
  275. package/plugins/just-vibe/references/teach-test.md +37 -0
  276. package/plugins/just-vibe/references/teaching.md +34 -0
  277. package/plugins/just-vibe/references/validation.md +11 -0
  278. package/plugins/just-vibe/scripts/discover-capabilities.mjs +3 -0
  279. package/plugins/just-vibe/scripts/hooks.mjs +14 -0
  280. package/plugins/just-vibe/scripts/inspect-project.mjs +3 -0
  281. package/plugins/just-vibe/scripts/installer.mjs +280 -0
  282. package/plugins/just-vibe/scripts/lib/automation.mjs +142 -0
  283. package/plugins/just-vibe/scripts/lib/bundle.mjs +100 -0
  284. package/plugins/just-vibe/scripts/lib/catalog.mjs +135 -0
  285. package/plugins/just-vibe/scripts/lib/command.mjs +26 -0
  286. package/plugins/just-vibe/scripts/lib/continuity.mjs +77 -0
  287. package/plugins/just-vibe/scripts/lib/discovery.mjs +84 -0
  288. package/plugins/just-vibe/scripts/lib/entrypoint.mjs +12 -0
  289. package/plugins/just-vibe/scripts/lib/evidence.mjs +136 -0
  290. package/plugins/just-vibe/scripts/lib/process.mjs +44 -0
  291. package/plugins/just-vibe/scripts/lib/profiles.mjs +83 -0
  292. package/plugins/just-vibe/scripts/lib/project.mjs +60 -0
  293. package/plugins/just-vibe/scripts/lib/routing.mjs +82 -0
  294. package/plugins/just-vibe/scripts/lib/run.mjs +248 -0
  295. package/plugins/just-vibe/scripts/lib/storage.mjs +84 -0
  296. package/plugins/just-vibe/scripts/lib/teaching.mjs +118 -0
  297. package/plugins/just-vibe/scripts/toolkit.mjs +225 -0
  298. package/plugins/just-vibe/skills/a11y/SKILL.md +8 -0
  299. package/plugins/just-vibe/skills/api-breaking/SKILL.md +56 -0
  300. package/plugins/just-vibe/skills/api-client/SKILL.md +56 -0
  301. package/plugins/just-vibe/skills/api-contract-test/SKILL.md +56 -0
  302. package/plugins/just-vibe/skills/api-design/SKILL.md +56 -0
  303. package/plugins/just-vibe/skills/api-errors/SKILL.md +56 -0
  304. package/plugins/just-vibe/skills/api-openapi/SKILL.md +56 -0
  305. package/plugins/just-vibe/skills/api-pagination/SKILL.md +56 -0
  306. package/plugins/just-vibe/skills/api-webhooks/SKILL.md +56 -0
  307. package/plugins/just-vibe/skills/arch-boundaries/SKILL.md +58 -0
  308. package/plugins/just-vibe/skills/arch-contracts/SKILL.md +56 -0
  309. package/plugins/just-vibe/skills/arch-event-flow/SKILL.md +56 -0
  310. package/plugins/just-vibe/skills/arch-feature/SKILL.md +57 -0
  311. package/plugins/just-vibe/skills/arch-map/SKILL.md +56 -0
  312. package/plugins/just-vibe/skills/arch-modernize/SKILL.md +56 -0
  313. package/plugins/just-vibe/skills/arch-scale/SKILL.md +58 -0
  314. package/plugins/just-vibe/skills/arch-tenancy/SKILL.md +56 -0
  315. package/plugins/just-vibe/skills/auto/SKILL.md +67 -0
  316. package/plugins/just-vibe/skills/automate/SKILL.md +56 -0
  317. package/plugins/just-vibe/skills/backend-auth/SKILL.md +63 -0
  318. package/plugins/just-vibe/skills/backend-cache/SKILL.md +59 -0
  319. package/plugins/just-vibe/skills/backend-concurrency/SKILL.md +58 -0
  320. package/plugins/just-vibe/skills/backend-idempotency/SKILL.md +58 -0
  321. package/plugins/just-vibe/skills/backend-jobs/SKILL.md +56 -0
  322. package/plugins/just-vibe/skills/backend-permissions/SKILL.md +56 -0
  323. package/plugins/just-vibe/skills/backend-resilience/SKILL.md +56 -0
  324. package/plugins/just-vibe/skills/backend-service/SKILL.md +56 -0
  325. package/plugins/just-vibe/skills/brainstorm/SKILL.md +56 -0
  326. package/plugins/just-vibe/skills/build/SKILL.md +56 -0
  327. package/plugins/just-vibe/skills/challenge/SKILL.md +56 -0
  328. package/plugins/just-vibe/skills/checkpoint/SKILL.md +59 -0
  329. package/plugins/just-vibe/skills/ci/SKILL.md +56 -0
  330. package/plugins/just-vibe/skills/cleanup/SKILL.md +56 -0
  331. package/plugins/just-vibe/skills/compare/SKILL.md +56 -0
  332. package/plugins/just-vibe/skills/copy/SKILL.md +56 -0
  333. package/plugins/just-vibe/skills/coverage/SKILL.md +56 -0
  334. package/plugins/just-vibe/skills/data-backfill/SKILL.md +56 -0
  335. package/plugins/just-vibe/skills/data-contract/SKILL.md +56 -0
  336. package/plugins/just-vibe/skills/data-incremental/SKILL.md +56 -0
  337. package/plugins/just-vibe/skills/data-lineage/SKILL.md +56 -0
  338. package/plugins/just-vibe/skills/data-pipeline/SKILL.md +56 -0
  339. package/plugins/just-vibe/skills/data-profile/SKILL.md +56 -0
  340. package/plugins/just-vibe/skills/data-quality/SKILL.md +56 -0
  341. package/plugins/just-vibe/skills/data-reconcile/SKILL.md +56 -0
  342. package/plugins/just-vibe/skills/db-access/SKILL.md +56 -0
  343. package/plugins/just-vibe/skills/db-explain/SKILL.md +56 -0
  344. package/plugins/just-vibe/skills/db-index/SKILL.md +56 -0
  345. package/plugins/just-vibe/skills/db-integrity/SKILL.md +57 -0
  346. package/plugins/just-vibe/skills/db-locks/SKILL.md +56 -0
  347. package/plugins/just-vibe/skills/db-migrate/SKILL.md +63 -0
  348. package/plugins/just-vibe/skills/db-query/SKILL.md +56 -0
  349. package/plugins/just-vibe/skills/db-schema/SKILL.md +56 -0
  350. package/plugins/just-vibe/skills/debug/SKILL.md +56 -0
  351. package/plugins/just-vibe/skills/decide/SKILL.md +57 -0
  352. package/plugins/just-vibe/skills/decision-adr/SKILL.md +56 -0
  353. package/plugins/just-vibe/skills/decision-buy-build/SKILL.md +56 -0
  354. package/plugins/just-vibe/skills/decision-matrix/SKILL.md +56 -0
  355. package/plugins/just-vibe/skills/decision-premortem/SKILL.md +56 -0
  356. package/plugins/just-vibe/skills/decision-reversible/SKILL.md +56 -0
  357. package/plugins/just-vibe/skills/decision-revisit/SKILL.md +56 -0
  358. package/plugins/just-vibe/skills/decision-spike/SKILL.md +58 -0
  359. package/plugins/just-vibe/skills/deploy/SKILL.md +56 -0
  360. package/plugins/just-vibe/skills/deps/SKILL.md +56 -0
  361. package/plugins/just-vibe/skills/design/SKILL.md +56 -0
  362. package/plugins/just-vibe/skills/do/SKILL.md +8 -0
  363. package/plugins/just-vibe/skills/docs/SKILL.md +56 -0
  364. package/plugins/just-vibe/skills/doctor/SKILL.md +58 -0
  365. package/plugins/just-vibe/skills/explain/SKILL.md +56 -0
  366. package/plugins/just-vibe/skills/fix/SKILL.md +57 -0
  367. package/plugins/just-vibe/skills/git-bisect/SKILL.md +58 -0
  368. package/plugins/just-vibe/skills/git-commit/SKILL.md +59 -0
  369. package/plugins/just-vibe/skills/git-conflicts/SKILL.md +58 -0
  370. package/plugins/just-vibe/skills/git-diff/SKILL.md +58 -0
  371. package/plugins/just-vibe/skills/git-recover/SKILL.md +58 -0
  372. package/plugins/just-vibe/skills/git-split/SKILL.md +58 -0
  373. package/plugins/just-vibe/skills/git-status/SKILL.md +58 -0
  374. package/plugins/just-vibe/skills/git-worktree/SKILL.md +58 -0
  375. package/plugins/just-vibe/skills/github-actions/SKILL.md +64 -0
  376. package/plugins/just-vibe/skills/github-address-review/SKILL.md +58 -0
  377. package/plugins/just-vibe/skills/github-fix-ci/SKILL.md +63 -0
  378. package/plugins/just-vibe/skills/github-issue/SKILL.md +58 -0
  379. package/plugins/just-vibe/skills/github-pr/SKILL.md +63 -0
  380. package/plugins/just-vibe/skills/github-release/SKILL.md +58 -0
  381. package/plugins/just-vibe/skills/github-review/SKILL.md +58 -0
  382. package/plugins/just-vibe/skills/github-triage/SKILL.md +58 -0
  383. package/plugins/just-vibe/skills/handoff/SKILL.md +62 -0
  384. package/plugins/just-vibe/skills/help/SKILL.md +63 -0
  385. package/plugins/just-vibe/skills/integrate/SKILL.md +56 -0
  386. package/plugins/just-vibe/skills/learn/SKILL.md +56 -0
  387. package/plugins/just-vibe/skills/llm-cost/SKILL.md +56 -0
  388. package/plugins/just-vibe/skills/llm-evals/SKILL.md +58 -0
  389. package/plugins/just-vibe/skills/llm-injection/SKILL.md +56 -0
  390. package/plugins/just-vibe/skills/llm-prompt/SKILL.md +56 -0
  391. package/plugins/just-vibe/skills/llm-rag/SKILL.md +56 -0
  392. package/plugins/just-vibe/skills/llm-retrieval/SKILL.md +56 -0
  393. package/plugins/just-vibe/skills/llm-structured/SKILL.md +56 -0
  394. package/plugins/just-vibe/skills/llm-tools/SKILL.md +58 -0
  395. package/plugins/just-vibe/skills/map/SKILL.md +56 -0
  396. package/plugins/just-vibe/skills/match/SKILL.md +56 -0
  397. package/plugins/just-vibe/skills/migrate/SKILL.md +56 -0
  398. package/plugins/just-vibe/skills/ml-ablation/SKILL.md +56 -0
  399. package/plugins/just-vibe/skills/ml-baseline/SKILL.md +56 -0
  400. package/plugins/just-vibe/skills/ml-batch/SKILL.md +56 -0
  401. package/plugins/just-vibe/skills/ml-calibrate/SKILL.md +56 -0
  402. package/plugins/just-vibe/skills/ml-dataset/SKILL.md +56 -0
  403. package/plugins/just-vibe/skills/ml-dataset-version/SKILL.md +56 -0
  404. package/plugins/just-vibe/skills/ml-debug-training/SKILL.md +56 -0
  405. package/plugins/just-vibe/skills/ml-drift/SKILL.md +56 -0
  406. package/plugins/just-vibe/skills/ml-error-analysis/SKILL.md +56 -0
  407. package/plugins/just-vibe/skills/ml-evaluate/SKILL.md +56 -0
  408. package/plugins/just-vibe/skills/ml-experiments/SKILL.md +56 -0
  409. package/plugins/just-vibe/skills/ml-explain/SKILL.md +56 -0
  410. package/plugins/just-vibe/skills/ml-features/SKILL.md +59 -0
  411. package/plugins/just-vibe/skills/ml-frame/SKILL.md +56 -0
  412. package/plugins/just-vibe/skills/ml-imbalance/SKILL.md +56 -0
  413. package/plugins/just-vibe/skills/ml-inference-perf/SKILL.md +56 -0
  414. package/plugins/just-vibe/skills/ml-labels/SKILL.md +56 -0
  415. package/plugins/just-vibe/skills/ml-leakage/SKILL.md +64 -0
  416. package/plugins/just-vibe/skills/ml-monitor/SKILL.md +56 -0
  417. package/plugins/just-vibe/skills/ml-package/SKILL.md +56 -0
  418. package/plugins/just-vibe/skills/ml-parity/SKILL.md +56 -0
  419. package/plugins/just-vibe/skills/ml-report/SKILL.md +56 -0
  420. package/plugins/just-vibe/skills/ml-reproduce/SKILL.md +56 -0
  421. package/plugins/just-vibe/skills/ml-robustness/SKILL.md +56 -0
  422. package/plugins/just-vibe/skills/ml-rollout/SKILL.md +56 -0
  423. package/plugins/just-vibe/skills/ml-serving/SKILL.md +56 -0
  424. package/plugins/just-vibe/skills/ml-slices/SKILL.md +56 -0
  425. package/plugins/just-vibe/skills/ml-split/SKILL.md +58 -0
  426. package/plugins/just-vibe/skills/ml-threshold/SKILL.md +56 -0
  427. package/plugins/just-vibe/skills/ml-train/SKILL.md +62 -0
  428. package/plugins/just-vibe/skills/ml-training-cost/SKILL.md +56 -0
  429. package/plugins/just-vibe/skills/ml-tune/SKILL.md +56 -0
  430. package/plugins/just-vibe/skills/ops-alerts/SKILL.md +56 -0
  431. package/plugins/just-vibe/skills/ops-container/SKILL.md +56 -0
  432. package/plugins/just-vibe/skills/ops-incident/SKILL.md +56 -0
  433. package/plugins/just-vibe/skills/ops-logs/SKILL.md +56 -0
  434. package/plugins/just-vibe/skills/ops-observability/SKILL.md +56 -0
  435. package/plugins/just-vibe/skills/ops-postmortem/SKILL.md +56 -0
  436. package/plugins/just-vibe/skills/ops-restore/SKILL.md +56 -0
  437. package/plugins/just-vibe/skills/ops-runbook/SKILL.md +56 -0
  438. package/plugins/just-vibe/skills/orient/SKILL.md +58 -0
  439. package/plugins/just-vibe/skills/perf/SKILL.md +56 -0
  440. package/plugins/just-vibe/skills/plan/SKILL.md +56 -0
  441. package/plugins/just-vibe/skills/polish/SKILL.md +56 -0
  442. package/plugins/just-vibe/skills/pr/SKILL.md +58 -0
  443. package/plugins/just-vibe/skills/profile/SKILL.md +66 -0
  444. package/plugins/just-vibe/skills/profiles/SKILL.md +58 -0
  445. package/plugins/just-vibe/skills/react-async/SKILL.md +57 -0
  446. package/plugins/just-vibe/skills/react-audit/SKILL.md +56 -0
  447. package/plugins/just-vibe/skills/react-component/SKILL.md +65 -0
  448. package/plugins/just-vibe/skills/react-effects/SKILL.md +58 -0
  449. package/plugins/just-vibe/skills/react-forms/SKILL.md +56 -0
  450. package/plugins/just-vibe/skills/react-hydration/SKILL.md +57 -0
  451. package/plugins/just-vibe/skills/react-rerenders/SKILL.md +56 -0
  452. package/plugins/just-vibe/skills/react-state/SKILL.md +56 -0
  453. package/plugins/just-vibe/skills/refactor/SKILL.md +56 -0
  454. package/plugins/just-vibe/skills/release/SKILL.md +58 -0
  455. package/plugins/just-vibe/skills/remember/SKILL.md +70 -0
  456. package/plugins/just-vibe/skills/repro/SKILL.md +56 -0
  457. package/plugins/just-vibe/skills/research/SKILL.md +56 -0
  458. package/plugins/just-vibe/skills/responsive/SKILL.md +8 -0
  459. package/plugins/just-vibe/skills/resume/SKILL.md +63 -0
  460. package/plugins/just-vibe/skills/review/SKILL.md +56 -0
  461. package/plugins/just-vibe/skills/scope/SKILL.md +56 -0
  462. package/plugins/just-vibe/skills/security/SKILL.md +56 -0
  463. package/plugins/just-vibe/skills/security-authz/SKILL.md +56 -0
  464. package/plugins/just-vibe/skills/security-config/SKILL.md +56 -0
  465. package/plugins/just-vibe/skills/security-dependencies/SKILL.md +56 -0
  466. package/plugins/just-vibe/skills/security-fix/SKILL.md +56 -0
  467. package/plugins/just-vibe/skills/security-inputs/SKILL.md +56 -0
  468. package/plugins/just-vibe/skills/security-secrets/SKILL.md +56 -0
  469. package/plugins/just-vibe/skills/security-threat-model/SKILL.md +56 -0
  470. package/plugins/just-vibe/skills/security-uploads/SKILL.md +56 -0
  471. package/plugins/just-vibe/skills/setup/SKILL.md +60 -0
  472. package/plugins/just-vibe/skills/skill/SKILL.md +56 -0
  473. package/plugins/just-vibe/skills/spec/SKILL.md +56 -0
  474. package/plugins/just-vibe/skills/tasks/SKILL.md +56 -0
  475. package/plugins/just-vibe/skills/teach/SKILL.md +63 -0
  476. package/plugins/just-vibe/skills/teach-test/SKILL.md +65 -0
  477. package/plugins/just-vibe/skills/test/SKILL.md +56 -0
  478. package/plugins/just-vibe/skills/test-e2e/SKILL.md +56 -0
  479. package/plugins/just-vibe/skills/test-fixtures/SKILL.md +56 -0
  480. package/plugins/just-vibe/skills/test-flaky/SKILL.md +56 -0
  481. package/plugins/just-vibe/skills/test-integration/SKILL.md +56 -0
  482. package/plugins/just-vibe/skills/test-load/SKILL.md +56 -0
  483. package/plugins/just-vibe/skills/test-property/SKILL.md +56 -0
  484. package/plugins/just-vibe/skills/test-regression/SKILL.md +57 -0
  485. package/plugins/just-vibe/skills/test-unit/SKILL.md +56 -0
  486. package/plugins/just-vibe/skills/tools/SKILL.md +64 -0
  487. package/plugins/just-vibe/skills/trace/SKILL.md +56 -0
  488. package/plugins/just-vibe/skills/ui-accessibility/SKILL.md +57 -0
  489. package/plugins/just-vibe/skills/ui-audit/SKILL.md +56 -0
  490. package/plugins/just-vibe/skills/ui-flow/SKILL.md +56 -0
  491. package/plugins/just-vibe/skills/ui-motion/SKILL.md +56 -0
  492. package/plugins/just-vibe/skills/ui-responsive/SKILL.md +56 -0
  493. package/plugins/just-vibe/skills/ui-states/SKILL.md +56 -0
  494. package/plugins/just-vibe/skills/ui-system/SKILL.md +56 -0
  495. package/plugins/just-vibe/skills/ui-visual-diff/SKILL.md +56 -0
  496. package/plugins/just-vibe/skills/vercel-audit/SKILL.md +56 -0
  497. package/plugins/just-vibe/skills/vercel-build-fix/SKILL.md +63 -0
  498. package/plugins/just-vibe/skills/vercel-env/SKILL.md +56 -0
  499. package/plugins/just-vibe/skills/vercel-performance/SKILL.md +56 -0
  500. package/plugins/just-vibe/skills/vercel-preview/SKILL.md +56 -0
  501. package/plugins/just-vibe/skills/vercel-release-check/SKILL.md +57 -0
  502. package/plugins/just-vibe/skills/vercel-routing/SKILL.md +56 -0
  503. package/plugins/just-vibe/skills/vercel-runtime/SKILL.md +61 -0
  504. package/plugins/just-vibe/skills/verify/SKILL.md +59 -0
  505. package/plugins/just-vibe/skills/vite-assets/SKILL.md +57 -0
  506. package/plugins/just-vibe/skills/vite-bundle/SKILL.md +58 -0
  507. package/plugins/just-vibe/skills/vite-chunks/SKILL.md +56 -0
  508. package/plugins/just-vibe/skills/vite-config/SKILL.md +56 -0
  509. package/plugins/just-vibe/skills/vite-env/SKILL.md +56 -0
  510. package/plugins/just-vibe/skills/vite-hmr/SKILL.md +56 -0
  511. package/plugins/just-vibe/skills/vite-setup/SKILL.md +56 -0
  512. package/plugins/just-vibe/skills/vite-upgrade/SKILL.md +56 -0
@@ -0,0 +1,225 @@
1
+ #!/usr/bin/env node
2
+ import { readFileSync, statSync } from 'node:fs';
3
+ import { isDirectRun } from './lib/entrypoint.mjs';
4
+ import { loadCatalog, getCommand, skillFile, invocation, HOSTS, MODES } from './lib/catalog.mjs';
5
+ import { inspectProject } from './lib/project.mjs';
6
+ import { discoverCapabilities, readCapabilityReport, listTools, recommend } from './lib/discovery.mjs';
7
+ import { createRun, startStage, recordStage, finishRun, resumeRun, amendStage, supersedeStage, setRunProfiles } from './lib/run.mjs';
8
+ import { loadProfiles, getProfile, searchProfiles } from './lib/profiles.mjs';
9
+ import { createQuiz, presentQuestion, answerQuestion, reviewFreeText, quizReport } from './lib/teaching.mjs';
10
+ import { main as installerMain, HELP as INSTALLER_HELP } from './installer.mjs';
11
+ import { routeContext, starterIds } from './lib/routing.mjs';
12
+ import { continuity } from './lib/continuity.mjs';
13
+ import { collectEvidence } from './lib/evidence.mjs';
14
+ import { manageHooks } from './lib/automation.mjs';
15
+
16
+ export const HELP = `${INSTALLER_HELP}
17
+ Workflow utilities:
18
+ tools [query] Browse/search shipped workflows and prerequisites
19
+ show <workflow> Read a workflow's full instructions
20
+ profiles [query] Browse engineering profiles (not capability grants)
21
+ profile <id> Read a role's priorities, decisions and verification
22
+ inspect Inspect project manifests and Git identity
23
+ discover Report local capabilities; never log in or call services
24
+ route <goal> Suggest candidates for the host agent, not execute them
25
+ workflow <id> <brief> Produce a context/run record for the host agent
26
+ session <operation> Transform a run record from JSON on stdin
27
+ Operations: create, start, amend, supersede, profile,
28
+ record, finish, resume
29
+ quiz <operation> Native-dialog quiz state from JSON on stdin
30
+ Operations: create, present, answer, review, report
31
+ project <operation> Explicit project preferences, notes and checkpoints
32
+ init, show, configure, remember, forget, checkpoint,
33
+ resume, list; writes use JSON on stdin
34
+ evidence <collector> github, vercel, browser, migrations
35
+ hooks <operation> status, configure, trust, untrust, disable, recover
36
+ Inactive until configured and explicitly trusted
37
+
38
+ Options:
39
+ --root <directory> Project to inspect (default: current directory)
40
+ --target codex|claude Invocation format (default: claude for examples)
41
+ --pack <id> Filter tools by pack
42
+ --available Show only workflows with verified prerequisites
43
+ --all Also include uninstalled/planned/unsupported entries
44
+ --json Machine-readable output
45
+ --limit <number> Bound tools/route results (route defaults to 3)
46
+ --capabilities <file> Host-observed capability report, valid for 15 minutes
47
+ --mode inspect|plan|apply
48
+ --scope <path> Restrict workflow scope within the project
49
+ --profile <id> Pin a task profile when creating a workflow record
50
+ --brief-file <file> Preserve a UTF-8 brief verbatim (max 1 MiB)
51
+ --stdin Read the brief or session/quiz JSON from stdin
52
+ -- <brief> Treat all remaining arguments as context, not flags
53
+
54
+ Evidence options: --repo owner/name --pr NUMBER; --deployment ID/URL
55
+ --team TEAM; --url URL --steps FILE; --directory DIR --applied FILE
56
+ Project checkpoint/resume takes a name after the operation. JSON updates
57
+ include the current revision (0 to create). Project writes go in .just-vibe.
58
+ Browser steps may interact with the chosen site; other collectors only read.
59
+
60
+ Commands such as fix, React, database and ML workflows execute as skills in
61
+ the active Codex/Claude agent. This CLI does not launch a model or execute
62
+ candidate workflows. Use show to inspect a workflow and invoke it in your host.
63
+ `;
64
+
65
+ const operations = new Set(['tools', 'show', 'profiles', 'profile', 'inspect', 'discover', 'route', 'workflow', 'session', 'quiz', 'project', 'evidence', 'hooks']);
66
+ const booleans = new Set(['--json', '--available', '--all', '--stdin']);
67
+ const values = new Set(['--root', '--target', '--pack', '--capabilities', '--mode', '--scope', '--profile', '--brief-file', '--limit', '--repo', '--pr', '--deployment', '--team', '--url', '--steps', '--directory', '--applied']);
68
+
69
+ export function parseToolkitArgs(args) {
70
+ const [operation, ...rest] = args;
71
+ if (!operations.has(operation)) throw new Error(`Unknown utility: ${operation}`);
72
+ const options = { operation, root: process.cwd(), target: 'claude', positionals: [] };
73
+ const seen = new Set();
74
+ for (let i = 0; i < rest.length; i++) {
75
+ const arg = rest[i];
76
+ if (arg === '--') { options.positionals.push(...rest.slice(i + 1)); break; }
77
+ if (!arg.startsWith('--')) { options.positionals.push(arg); continue; }
78
+ if (!booleans.has(arg) && !values.has(arg)) throw new Error(`Unknown option: ${arg}. Put literal context after --.`);
79
+ if (seen.has(arg)) throw new Error(`Duplicate option: ${arg}`);
80
+ seen.add(arg);
81
+ const key = arg.slice(2);
82
+ if (booleans.has(arg)) options[key] = true;
83
+ else {
84
+ const value = rest[++i];
85
+ if (!value || value.startsWith('--')) throw new Error(`${arg} requires a value.`);
86
+ options[key] = value;
87
+ }
88
+ }
89
+ if (!HOSTS.includes(options.target)) throw new Error('target must be codex or claude.');
90
+ if (options.mode && !MODES.includes(options.mode)) throw new Error('mode must be inspect, plan, or apply.');
91
+ if (options.stdin && options['brief-file']) throw new Error('Use only one brief source.');
92
+ if (options.limit !== undefined) { options.limit = Number(options.limit); if (!Number.isInteger(options.limit) || options.limit < 1 || options.limit > 1000) throw Error('limit must be between 1 and 1000.'); }
93
+ const allowed = {
94
+ tools: ['json', 'available', 'all', 'root', 'target', 'pack', 'capabilities', 'limit'],
95
+ show: ['json', 'target'], inspect: ['json', 'root'], discover: ['json', 'root', 'capabilities'],
96
+ profiles: ['json'], profile: ['json'],
97
+ route: ['json', 'root', 'target', 'capabilities', 'stdin', 'brief-file', 'limit'],
98
+ workflow: ['json', 'root', 'target', 'mode', 'scope', 'profile', 'stdin', 'brief-file'], session: ['json', 'target', 'stdin'], quiz: ['json', 'stdin'],
99
+ project: ['json', 'root', 'stdin'], hooks: ['json', 'root', 'stdin'],
100
+ evidence: ['json', 'root', 'repo', 'pr', 'deployment', 'team', 'url', 'steps', 'directory', 'applied'],
101
+ };
102
+ for (const flag of seen) if (!allowed[operation].includes(flag.slice(2))) throw new Error(`${flag} does not apply to ${operation}.`);
103
+ if (['inspect', 'discover'].includes(operation) && options.positionals.length) throw new Error(`${operation} takes no positional arguments.`);
104
+ if (['show', 'profile', 'session', 'quiz'].includes(operation) && options.positionals.length !== 1) throw new Error(`${operation} requires exactly one name.`);
105
+ if (['hooks', 'evidence'].includes(operation) && options.positionals.length !== 1) throw Error(`${operation} requires exactly one operation.`);
106
+ if (operation === 'project' && options.positionals.length !== (['checkpoint', 'resume'].includes(options.positionals[0]) ? 2 : 1)) throw Error('project checkpoint/resume requires a name; other project operations take one operation.');
107
+ if (operation === 'evidence') {
108
+ const valid = { github: ['repo', 'pr'], vercel: ['deployment', 'team'], browser: ['url', 'steps'], migrations: ['directory', 'applied'] }[options.positionals[0]];
109
+ if (!valid || [...seen].some(flag => !['root', 'json', ...valid].includes(flag.slice(2)))) throw Error('Invalid collector or options for this collector.');
110
+ }
111
+ if (['project', 'hooks'].includes(operation)) {
112
+ const writes = operation === 'project' ? ['init', 'configure', 'remember', 'forget', 'checkpoint'] : ['configure'];
113
+ if (writes.includes(options.positionals[0]) && !options.stdin) throw Error('This operation requires --stdin JSON.');
114
+ if (!writes.includes(options.positionals[0]) && options.stdin) throw Error('--stdin does not apply to this operation.');
115
+ }
116
+ return options;
117
+ }
118
+
119
+ export function readStdin(limit = 1024 * 1024) {
120
+ // Read in bounded chunks; do not buffer an arbitrarily large pipe before checking size.
121
+ const chunks = []; let size = 0;
122
+ return new Promise((done, fail) => {
123
+ process.stdin.on('data', chunk => {
124
+ size += chunk.length;
125
+ if (size > limit) { process.stdin.destroy(); fail(new Error('stdin exceeds 1 MiB.')); }
126
+ else chunks.push(chunk);
127
+ });
128
+ process.stdin.on('end', () => done(Buffer.concat(chunks).toString('utf8')));
129
+ process.stdin.on('error', fail);
130
+ });
131
+ }
132
+
133
+ async function getBrief(options, words, input) {
134
+ if ((options.stdin || options['brief-file']) && words.length) throw new Error('Use context arguments or a brief source, not both.');
135
+ if (options.stdin) return input();
136
+ if (options['brief-file']) {
137
+ const stat = statSync(options['brief-file']);
138
+ if (!stat.isFile() || stat.size > 1024 * 1024) throw new Error('Brief must be a regular file up to 1 MiB.');
139
+ return readFileSync(options['brief-file'], 'utf8');
140
+ }
141
+ return words.join(' ');
142
+ }
143
+
144
+ function formatTools(result) {
145
+ if (!result.tools.length) return 'No matching workflows with the requested filters. Try tools --all or a broader scenario.';
146
+ return [result.note, '', ...result.tools.map(c => `${c.id} [${c.pack}; ${c.status}; ${c.defaultMode}]${c.aliasOf ? ` → ${c.aliasOf}` : ''}\n ${c.summary}\n ${c.invocation} ${c.example.brief}${c.reasons.length ? `\n Needs: ${c.reasons.join('; ')}` : ''}`)].join('\n');
147
+ }
148
+
149
+ function formatRoute(result) {
150
+ if (!result.recommendations.length) return 'No clear workflow match. Describe the outcome or use tools to browse.';
151
+ return [`Suggested path: ${result.strategy.suggested}. ${result.strategy.reasons.join('; ')}.`,
152
+ result.confidence === 'ambiguous' ? 'Several workflows fit; choose using the scope below.' : 'Best matching candidates:',
153
+ ...result.recommendations.map(c => `\n${c.id} [${c.status}] — ${c.summary}\n ${c.selectionReasons.join('; ')}\n ${c.invocation}`),
154
+ '\nSuggestions only. Preserve the complete request and verify task-specific access before execution. Use --json for full context.'].join('\n');
155
+ }
156
+
157
+ export async function main(args, { log = console.log, error = console.error, input = readStdin, catalog = loadCatalog } = {}) {
158
+ try {
159
+ if (!args.length || ['--help', '-h'].includes(args[0]) || (args[0] === 'help' && args.length === 1)) { log(HELP); return 0; }
160
+ if (['setup', 'doctor', 'update', 'uninstall', '--version'].includes(args[0])) return installerMain(args, { log, error });
161
+ if (args[0] === 'help') args = ['tools', ...args.slice(1)];
162
+ const options = parseToolkitArgs(args);
163
+ const data = catalog();
164
+ let result;
165
+ const discovery = () => discoverCapabilities(options.root, {
166
+ report: options.capabilities ? readCapabilityReport(options.capabilities, options.root) : undefined,
167
+ });
168
+ if (options.operation === 'tools') {
169
+ const found = discovery();
170
+ let tools = listTools(data, found, { query: options.positionals.join(' '), pack: options.pack,
171
+ available: options.available, all: options.all, host: options.target });
172
+ const starter = !options.all && !options.available && !options.pack && !options.positionals.length;
173
+ if (starter) { const ids = starterIds(routeContext(options.root)); tools = ids.flatMap(id => tools.filter(t => t.id === id)); }
174
+ result = { tools: tools.slice(0, options.limit || 1000), total: data.commands.length, starter, integrations: found.integrations,
175
+ note: starter ? 'Start here, search tools <scenario>, or use tools --all for the full catalog. Status reports observed prerequisites, not executed model behavior.' : 'Shipped workflow inventory; host enablement and permissions still apply. Available means declared task prerequisites were observed, not that a model has executed the workflow.' };
176
+ } else if (options.operation === 'show') {
177
+ const command = getCommand(data, options.positionals[0]);
178
+ result = { ...command, invocation: invocation(command, options.target), instructions: readFileSync(skillFile(data, command), 'utf8') };
179
+ } else if (options.operation === 'profiles') result = { profiles: searchProfiles(loadProfiles(), options.positionals.join(' ')), note: 'Role priorities for the task; search matches are candidates, not automatic selections.' };
180
+ else if (options.operation === 'profile') result = getProfile(loadProfiles(), options.positionals[0]);
181
+ else if (options.operation === 'inspect') result = inspectProject(options.root);
182
+ else if (options.operation === 'discover') result = discovery();
183
+ else if (options.operation === 'route') result = recommend(data, discovery(), await getBrief(options, options.positionals, input), { host: options.target, ...(options.limit ? { limit: options.limit } : {}) });
184
+ else if (options.operation === 'project') result = continuity(options.root, options.positionals[0], options.stdin ? JSON.parse(await input()) : {}, options.positionals[1]);
185
+ else if (options.operation === 'hooks') result = manageHooks(options.root, options.positionals[0], options.stdin ? JSON.parse(await input()) : {});
186
+ else if (options.operation === 'evidence') result = await collectEvidence(options.positionals[0], { ...options, scope: options.team });
187
+ else if (options.operation === 'workflow') {
188
+ const [id, ...words] = options.positionals;
189
+ if (!id) throw new Error('workflow requires a command ID.');
190
+ result = createRun(data, id, { ...options, brief: await getBrief(options, words, input) });
191
+ } else if (options.operation === 'quiz') {
192
+ const payload = JSON.parse(await input());
193
+ const op = options.positionals[0];
194
+ if (op === 'create') result = createQuiz(payload);
195
+ else if (op === 'present') result = presentQuestion(payload.quiz, payload.question, payload.dialog);
196
+ else if (op === 'answer') result = answerQuestion(payload.quiz, payload.response);
197
+ else if (op === 'review') result = reviewFreeText(payload.quiz, payload.judgment);
198
+ else if (op === 'report') result = quizReport(payload.quiz);
199
+ else throw new Error(`Unknown quiz operation: ${op}`);
200
+ } else if (options.operation === 'session') {
201
+ const payload = JSON.parse(await input());
202
+ const op = options.positionals[0];
203
+ if (op === 'create') result = createRun(data, payload.command, payload);
204
+ else if (op === 'start') {
205
+ const found = discoverCapabilities(payload.run.root, { report: payload.capabilityReport });
206
+ result = startStage(data, payload.run, payload.stage, found.capabilities, options.target);
207
+ } else if (op === 'amend') result = amendStage(payload.run, payload.action);
208
+ else if (op === 'supersede') result = supersedeStage(payload.run, payload.resolution);
209
+ else if (op === 'profile') result = setRunProfiles(payload.run, payload.selection);
210
+ else if (op === 'record') result = recordStage(payload.run, payload.outcome);
211
+ else if (op === 'finish') result = finishRun(payload.run, payload.outcome);
212
+ else if (op === 'resume') result = resumeRun(payload.run, payload.observation);
213
+ else throw new Error(`Unknown session operation: ${op}`);
214
+ }
215
+ if (options.operation === 'tools' && !options.json) log(formatTools(result));
216
+ else if (options.operation === 'route' && !options.json) log(formatRoute(result));
217
+ else if (options.operation === 'profiles' && !options.json) log([result.note, ...result.profiles.map(p => `${p.id} [${p.family}]\n ${p.summary}`)].join('\n\n'));
218
+ else if (options.operation === 'profile' && !options.json) log(`${result.name}\n${result.summary}\n\nPriorities:\n${result.priorities.map(p => `- ${p}`).join('\n')}\n\nDecision: ${result.decision}\n\nVerify:\n${result.verification.map(p => `- ${p}`).join('\n')}\n\nBoundary: ${result.boundary}\nWorkflows: ${result.workflows.join(', ')}\nExample: ${result.example}`);
219
+ else if (options.operation === 'show' && !options.json) log(result.instructions);
220
+ else log(JSON.stringify(result, null, 2));
221
+ return options.operation === 'evidence' && ['failed', 'stale', 'incomplete', 'drift'].includes(result.result) ? 2 : 0;
222
+ } catch (failure) { error(`just-vibe: ${failure.message}`); return 1; }
223
+ }
224
+
225
+ if (isDirectRun(import.meta.url)) process.exitCode = await main(process.argv.slice(2));
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: a11y
3
+ description: "Inspect semantics, keyboard access, focus, contrast, and announcements Alias for ui-accessibility."
4
+ ---
5
+
6
+ # a11y
7
+
8
+ Read [ui-accessibility](../ui-accessibility/SKILL.md) and execute that single canonical workflow. It owns selection, inputs, mode, scope, methods, outputs, recovery, and verification. Preserve the complete appended request and original invoked name (a11y); use ui-accessibility as the canonical command in run records. Do not add a routing stage, change permissions, or reset counters for an alias. This entry deliberately contains no independent behavioral contract.
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: api-breaking
3
+ description: "Identify backward-incompatible API changes Use to assess consumer impact of a change; api-design creates the intended contract."
4
+ ---
5
+
6
+ # api-breaking
7
+
8
+ Identify backward-incompatible API changes
9
+
10
+ ## Choose this workflow
11
+
12
+ Use to assess consumer impact of a change; api-design creates the intended contract.
13
+
14
+ Read [shared execution](../../references/execution.md) for context/mode/authority handling and [APIs methods](../../references/packs/api.md) for tool selection and operational details. Resolve these paths from this skill file; all runtime assets ship inside the plugin.
15
+
16
+ ## Input and mode
17
+
18
+ Use the complete request appended to this invocation, preserving all constraints and references. Default mode: **inspect**. Inspect; old/new contracts or revisions, consumer expectations, and compatibility policy.
19
+
20
+ interface definitions, producer/consumer source, authentication model, versioning constraints, and isolated test endpoints. External API calls must respect environment, credentials, rate limits, and side-effect scope.
21
+
22
+ Declared evidence requirements: `project.read`. Use actual host discovery or adequate supplied artifacts; unavailable evidence remains blocked/unknown.
23
+
24
+ ## Scope
25
+
26
+ Backward compatibility across schemas, semantics, authentication, errors, and timing/order guarantees.
27
+
28
+ None by default. Plan artifacts may be saved when requested.
29
+
30
+ ## Execute
31
+
32
+ - Diff interfaces, inspect behavioral changes, identify affected consumers, classify compatibility impact, and propose rollout/deprecation steps.
33
+ - Compare field presence/types, enum values, validation, defaults, error/status behavior, pagination and timing guarantees against identified consumers.
34
+
35
+ ## Decision branches
36
+
37
+ - **When a syntactically additive change affects strict decoders or behavior:** Classify its actual consumer impact and propose rollout/deprecation evidence.
38
+
39
+ ## Deliver and verify
40
+
41
+ - Breaking-change report with examples and migration options.
42
+ - Change/consumer/impact matrix with compatibility bridge and unknown consumers.
43
+
44
+ Verify these observable conditions when applicable to the actual task; do not claim they were exercised from merely reading this file:
45
+
46
+ - Narrowed validation is recognized as potentially breaking; an additive field is evaluated against actual strict-client behavior.
47
+
48
+ ## Stop and recover
49
+
50
+ - Missing consumer information prevents universal compatibility claims. Do not equate schema compatibility with semantic compatibility.
51
+
52
+ ## Example requests
53
+
54
+ - **Normal (inspect):** Compare these API versions for validation and response-contract breaks.
55
+ - **edge (inspect):** Review a new enum value and a stricter validation rule for old clients.
56
+ - **blocked (inspect):** Assess compatibility without consumer source; avoid declaring universal backward compatibility.
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: api-client
3
+ description: "Build a typed client with authentication and error handling Use for a typed transport boundary to a known API; integrate handles wider product wiring."
4
+ ---
5
+
6
+ # api-client
7
+
8
+ Build a typed client with authentication and error handling
9
+
10
+ ## Choose this workflow
11
+
12
+ Use for a typed transport boundary to a known API; integrate handles wider product wiring.
13
+
14
+ Read [shared execution](../../references/execution.md) for context/mode/authority handling and [APIs methods](../../references/packs/api.md) for tool selection and operational details. Resolve these paths from this skill file; all runtime assets ship inside the plugin.
15
+
16
+ ## Input and mode
17
+
18
+ Use the complete request appended to this invocation, preserving all constraints and references. Default mode: **apply**. Apply; API specification, language/runtime, authentication source, and consumer needs.
19
+
20
+ interface definitions, producer/consumer source, authentication model, versioning constraints, and isolated test endpoints. External API calls must respect environment, credentials, rate limits, and side-effect scope.
21
+
22
+ Declared evidence requirements: `project.read`. Use actual host discovery or adequate supplied artifacts; unavailable evidence remains blocked/unknown.
23
+
24
+ ## Scope
25
+
26
+ Typed client boundary, serialization, errors, pagination, and permitted retries.
27
+
28
+ Only the requested local changes; external actions require their exact action and target in session authorization.
29
+
30
+ ## Execute
31
+
32
+ - Verify contract/version, generate or write a narrow client, isolate credentials, preserve useful errors, and exercise controlled successful and failed responses.
33
+ - Resolve version/auth/schema, validate runtime response shape and preserve actionable status, retry-after and request IDs without leaking credentials.
34
+
35
+ ## Decision branches
36
+
37
+ - **When a mutating request times out:** Retry only under a supported idempotency/reconciliation contract, not generic automatic retry.
38
+
39
+ ## Deliver and verify
40
+
41
+ - Client, usage/configuration documentation, and contract checks.
42
+ - Client interface, configuration names and timeout/refusal/malformed-response checks.
43
+
44
+ Verify these observable conditions when applicable to the actual task; do not claim they were exercised from merely reading this file:
45
+
46
+ - Valid responses decode correctly; rate limits/timeouts produce bounded behavior without duplicating unsafe requests.
47
+
48
+ ## Stop and recover
49
+
50
+ - Do not embed tokens or assume generated types prove runtime validity. Live paid or mutating requests need explicit scope.
51
+
52
+ ## Example requests
53
+
54
+ - **Normal (apply):** Build a typed API client with bounded retries and useful errors.
55
+ - **edge (apply):** Build a client for paginated responses and retry-after throttling.
56
+ - **blocked (inspect):** Implement against supplied contracts without paid or mutating live requests.
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: api-contract-test
3
+ description: "Verify provider and consumer expectations Use to implement consumer/provider contract checks; test-integration exercises broader dependency behavior."
4
+ ---
5
+
6
+ # api-contract-test
7
+
8
+ Verify provider and consumer expectations
9
+
10
+ ## Choose this workflow
11
+
12
+ Use to implement consumer/provider contract checks; test-integration exercises broader dependency behavior.
13
+
14
+ Read [shared execution](../../references/execution.md) for context/mode/authority handling and [APIs methods](../../references/packs/api.md) for tool selection and operational details. Resolve these paths from this skill file; all runtime assets ship inside the plugin.
15
+
16
+ ## Input and mode
17
+
18
+ Use the complete request appended to this invocation, preserving all constraints and references. Default mode: **apply**. Apply; provider/consumer expectations, versions, fixtures, and test environment.
19
+
20
+ interface definitions, producer/consumer source, authentication model, versioning constraints, and isolated test endpoints. External API calls must respect environment, credentials, rate limits, and side-effect scope.
21
+
22
+ Declared evidence requirements: `project.read`. Use actual host discovery or adequate supplied artifacts; unavailable evidence remains blocked/unknown.
23
+
24
+ ## Scope
25
+
26
+ Observable cross-boundary contracts; no reliance on live production state.
27
+
28
+ Only the requested local changes; external actions require their exact action and target in session authorization.
29
+
30
+ ## Execute
31
+
32
+ - Identify important assumptions, build provider/consumer assertions, control fixtures, verify valid and invalid exchanges, and integrate with relevant checks.
33
+ - Derive assertions from actual consumer assumptions, control fixture identity and verify the real provider boundary when a safe environment exists.
34
+
35
+ ## Decision branches
36
+
37
+ - **When only mocks can run:** Report consumer behavior and mocked assumptions separately from provider conformance.
38
+
39
+ ## Deliver and verify
40
+
41
+ - Contract tests, fixture provenance, and execution results.
42
+ - Contract cases, schema/semantic assertions and provider verification coverage.
43
+
44
+ Verify these observable conditions when applicable to the actual task; do not claim they were exercised from merely reading this file:
45
+
46
+ - Removing a required response field fails; implementation changes preserving the contract remain valid.
47
+
48
+ ## Stop and recover
49
+
50
+ - Do not make mocks the sole evidence that the real provider conforms. Missing provider execution is a stated coverage gap.
51
+
52
+ ## Example requests
53
+
54
+ - **Normal (apply):** Test invoice producer and consumer contracts against isolated fixtures.
55
+ - **edge (apply):** Test an API returning an optional field as null versus omitting it.
56
+ - **blocked (inspect):** Design contract checks with no provider runtime; do not equate a mock pass with compatibility.
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: api-design
3
+ description: "Define endpoints, resources, validation, and response contracts Use to design consumer-visible operations; backend-service implements business behavior."
4
+ ---
5
+
6
+ # api-design
7
+
8
+ Define endpoints, resources, validation, and response contracts
9
+
10
+ ## Choose this workflow
11
+
12
+ Use to design consumer-visible operations; backend-service implements business behavior.
13
+
14
+ Read [shared execution](../../references/execution.md) for context/mode/authority handling and [APIs methods](../../references/packs/api.md) for tool selection and operational details. Resolve these paths from this skill file; all runtime assets ship inside the plugin.
15
+
16
+ ## Input and mode
17
+
18
+ Use the complete request appended to this invocation, preserving all constraints and references. Default mode: **plan**. Plan; resources/actions, consumers, access rules, and compatibility requirements.
19
+
20
+ interface definitions, producer/consumer source, authentication model, versioning constraints, and isolated test endpoints. External API calls must respect environment, credentials, rate limits, and side-effect scope.
21
+
22
+ Resolve any task-specific tools, target identity and evidence before dependent actions. No external connection is assumed.
23
+
24
+ ## Scope
25
+
26
+ Endpoint/interface shape, validation, response/error contracts, and evolution.
27
+
28
+ None by default. Plan artifacts may be saved when requested.
29
+
30
+ ## Execute
31
+
32
+ - Inspect domain conventions and existing APIs, define consistent resources and operations, specify normal/error behavior, and check consumer usability and migration needs.
33
+ - Define resource identity, method semantics, validation, authorization, errors and versioning from actual consumer journeys; include one success and failure exchange.
34
+
35
+ ## Decision branches
36
+
37
+ - **When a proposed endpoint hides several independently failing effects:** Expose operation state or explicit partial-failure semantics instead of implying atomic success.
38
+
39
+ ## Deliver and verify
40
+
41
+ - API proposal with request/response examples, invariants, and acceptance scenarios.
42
+ - Request/response examples, status/error meanings and consumer compatibility notes.
43
+
44
+ Verify these observable conditions when applicable to the actual task; do not claim they were exercised from merely reading this file:
45
+
46
+ - Invalid and unauthorized requests have defined outcomes; new behavior does not silently break an existing consumer.
47
+
48
+ ## Stop and recover
49
+
50
+ - Do not choose unresolved business policy or implement endpoints during a design-only request.
51
+
52
+ ## Example requests
53
+
54
+ - **Normal (plan):** Design invitation endpoints with explicit expiry and conflict responses.
55
+ - **edge (plan):** Design an asynchronous export API that can fail after acceptance.
56
+ - **blocked (inspect):** Draft an API with unknown consumer constraints; mark compatibility assumptions.
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: api-errors
3
+ description: "Standardize useful error responses and propagation Use to standardize error behavior without changing business policy; api-design defines a new contract."
4
+ ---
5
+
6
+ # api-errors
7
+
8
+ Standardize useful error responses and propagation
9
+
10
+ ## Choose this workflow
11
+
12
+ Use to standardize error behavior without changing business policy; api-design defines a new contract.
13
+
14
+ Read [shared execution](../../references/execution.md) for context/mode/authority handling and [APIs methods](../../references/packs/api.md) for tool selection and operational details. Resolve these paths from this skill file; all runtime assets ship inside the plugin.
15
+
16
+ ## Input and mode
17
+
18
+ Use the complete request appended to this invocation, preserving all constraints and references. Default mode: **apply**. Apply; API scope, current error format, consumers, and logging requirements.
19
+
20
+ interface definitions, producer/consumer source, authentication model, versioning constraints, and isolated test endpoints. External API calls must respect environment, credentials, rate limits, and side-effect scope.
21
+
22
+ Declared evidence requirements: `project.read`. Use actual host discovery or adequate supplied artifacts; unavailable evidence remains blocked/unknown.
23
+
24
+ ## Scope
25
+
26
+ Error status, machine-readable codes, safe messages, propagation, and trace correlation.
27
+
28
+ Only the requested local changes; external actions require their exact action and target in session authorization.
29
+
30
+ ## Execute
31
+
32
+ - Inventory errors, preserve required compatibility, map domain failures deliberately, redact internals, and test representative client/server failures.
33
+ - Inventory existing client-visible codes and shapes, map domain failures intentionally and preserve safe correlation IDs while redacting internal details.
34
+
35
+ ## Decision branches
36
+
37
+ - **When changing a code would break a known consumer:** Add a compatibility path or a versioned transition instead of silently normalizing it.
38
+
39
+ ## Deliver and verify
40
+
41
+ - Consistent error handling, documented contract, and checks.
42
+ - Error taxonomy, mapping locations and validation/auth/dependency failure cases.
43
+
44
+ Verify these observable conditions when applicable to the actual task; do not claim they were exercised from merely reading this file:
45
+
46
+ - Validation errors identify usable field problems; unexpected failures do not leak stack traces or credentials.
47
+
48
+ ## Stop and recover
49
+
50
+ - Do not turn all failures into success responses or change public codes silently. Unknown consumer reliance needs compatibility handling.
51
+
52
+ ## Example requests
53
+
54
+ - **Normal (apply):** Standardize safe API errors while preserving published machine-readable codes.
55
+ - **edge (apply):** Standardize errors while preserving a client's retry behavior on conflict.
56
+ - **blocked (inspect):** Review errors from source without provoking real service failures.
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: api-openapi
3
+ description: "Create or reconcile OpenAPI documentation with implementation Use to maintain an OpenAPI contract; api-breaking assesses compatibility between versions."
4
+ ---
5
+
6
+ # api-openapi
7
+
8
+ Create or reconcile OpenAPI documentation with implementation
9
+
10
+ ## Choose this workflow
11
+
12
+ Use to maintain an OpenAPI contract; api-breaking assesses compatibility between versions.
13
+
14
+ Read [shared execution](../../references/execution.md) for context/mode/authority handling and [APIs methods](../../references/packs/api.md) for tool selection and operational details. Resolve these paths from this skill file; all runtime assets ship inside the plugin.
15
+
16
+ ## Input and mode
17
+
18
+ Use the complete request appended to this invocation, preserving all constraints and references. Default mode: **apply**. Apply; existing OpenAPI/schema, implementation, and source-of-truth convention.
19
+
20
+ interface definitions, producer/consumer source, authentication model, versioning constraints, and isolated test endpoints. External API calls must respect environment, credentials, rate limits, and side-effect scope.
21
+
22
+ Declared evidence requirements: `project.read`. Use actual host discovery or adequate supplied artifacts; unavailable evidence remains blocked/unknown.
23
+
24
+ ## Scope
25
+
26
+ Reconcile documented paths, schemas, authentication, responses, and examples with actual intended behavior.
27
+
28
+ Only the requested local changes; external actions require their exact action and target in session authorization.
29
+
30
+ ## Execute
31
+
32
+ - Inspect routes and serializers, compare schema coverage, resolve documentation-versus-code discrepancies, update the correct source, and validate references/examples.
33
+ - Identify the authoritative schema source, compare serializers and route validators, then check references, required/null distinctions and representative examples.
34
+
35
+ ## Decision branches
36
+
37
+ - **When generated schema disagrees with runtime behavior:** Correct the source of generation or document a deliberate contract change; do not patch generated output alone.
38
+
39
+ ## Deliver and verify
40
+
41
+ - Validated specification and a list of remaining behavior discrepancies.
42
+ - Covered routes, schema/example validation and unresolved runtime discrepancies.
43
+
44
+ Verify these observable conditions when applicable to the actual task; do not claim they were exercised from merely reading this file:
45
+
46
+ - Examples conform to declared schemas; missing error responses are represented accurately.
47
+
48
+ ## Stop and recover
49
+
50
+ - Do not silently change runtime behavior to match stale documentation or overwrite generated files without updating their source.
51
+
52
+ ## Example requests
53
+
54
+ - **Normal (apply):** Reconcile the existing specification with actual request and error schemas.
55
+ - **edge (apply):** Document nullable fields and a rate-limit response omitted from generated output.
56
+ - **blocked (inspect):** Review supplied schema without running the provider; do not claim runtime conformance.
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: api-pagination
3
+ description: "Design stable pagination, filtering, and sorting Use for stable bounded collection traversal; db-query handles result correctness below it."
4
+ ---
5
+
6
+ # api-pagination
7
+
8
+ Design stable pagination, filtering, and sorting
9
+
10
+ ## Choose this workflow
11
+
12
+ Use for stable bounded collection traversal; db-query handles result correctness below it.
13
+
14
+ Read [shared execution](../../references/execution.md) for context/mode/authority handling and [APIs methods](../../references/packs/api.md) for tool selection and operational details. Resolve these paths from this skill file; all runtime assets ship inside the plugin.
15
+
16
+ ## Input and mode
17
+
18
+ Use the complete request appended to this invocation, preserving all constraints and references. Default mode: **plan**. Plan; dataset/order, concurrent-write behavior, filters, consumer contract, and scale.
19
+
20
+ interface definitions, producer/consumer source, authentication model, versioning constraints, and isolated test endpoints. External API calls must respect environment, credentials, rate limits, and side-effect scope.
21
+
22
+ Declared evidence requirements: `project.read`. Use actual host discovery or adequate supplied artifacts; unavailable evidence remains blocked/unknown.
23
+
24
+ ## Scope
25
+
26
+ Stable pagination and sorting semantics; implement when requested.
27
+
28
+ None by default. Plan artifacts may be saved when requested.
29
+
30
+ ## Execute
31
+
32
+ - Choose deterministic ordering and tie-breakers, assess offset/cursor tradeoffs, bind cursors to filters/scope, and test inserts, deletes, ties, and end conditions.
33
+ - Define deterministic ordering with a unique tie-breaker, scope cursor identity to filters/tenant and specify consistency under concurrent inserts/deletes.
34
+
35
+ ## Decision branches
36
+
37
+ - **When the product requires a stable snapshot across pages:** Choose an actual snapshot/version mechanism or explicitly narrow the guarantee.
38
+
39
+ ## Deliver and verify
40
+
41
+ - Pagination contract or implementation with concurrency-aware tests.
42
+ - Ordering/cursor contract and tie, mutation, invalid-cursor and end-of-list checks.
43
+
44
+ Verify these observable conditions when applicable to the actual task; do not claim they were exercised from merely reading this file:
45
+
46
+ - Equal sort values do not create accidental duplication; invalid or mismatched cursors fail predictably.
47
+
48
+ ## Stop and recover
49
+
50
+ - Do not promise snapshot consistency without a mechanism. Preserve public response shape when constrained.
51
+
52
+ ## Example requests
53
+
54
+ - **Normal (plan):** Plan stable cursor pagination when concurrent inserts share sort values.
55
+ - **edge (plan):** Add cursor pagination with equal timestamps and deleted records between pages.
56
+ - **blocked (inspect):** Design pagination without a declared consistency requirement; show the decision explicitly.