constella 0.1.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 (747) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/app-path-routes-manifest.json +53 -0
  3. package/.next/build-manifest.json +20 -0
  4. package/.next/diagnostics/build-diagnostics.json +6 -0
  5. package/.next/diagnostics/framework.json +1 -0
  6. package/.next/export-marker.json +6 -0
  7. package/.next/images-manifest.json +68 -0
  8. package/.next/next-minimal-server.js.nft.json +1 -0
  9. package/.next/next-server.js.nft.json +1 -0
  10. package/.next/package.json +1 -0
  11. package/.next/prerender-manifest.json +36 -0
  12. package/.next/react-loadable-manifest.json +14 -0
  13. package/.next/required-server-files.js +343 -0
  14. package/.next/required-server-files.json +343 -0
  15. package/.next/routes-manifest.json +362 -0
  16. package/.next/server/app/(app)/activity/page.js +2 -0
  17. package/.next/server/app/(app)/activity/page.js.nft.json +1 -0
  18. package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -0
  19. package/.next/server/app/(app)/agents/[handle]/page.js +18 -0
  20. package/.next/server/app/(app)/agents/[handle]/page.js.nft.json +1 -0
  21. package/.next/server/app/(app)/agents/[handle]/page_client-reference-manifest.js +1 -0
  22. package/.next/server/app/(app)/code/page.js +2 -0
  23. package/.next/server/app/(app)/code/page.js.nft.json +1 -0
  24. package/.next/server/app/(app)/code/page_client-reference-manifest.js +1 -0
  25. package/.next/server/app/(app)/config/page.js +2 -0
  26. package/.next/server/app/(app)/config/page.js.nft.json +1 -0
  27. package/.next/server/app/(app)/config/page_client-reference-manifest.js +1 -0
  28. package/.next/server/app/(app)/costs/page.js +2 -0
  29. package/.next/server/app/(app)/costs/page.js.nft.json +1 -0
  30. package/.next/server/app/(app)/costs/page_client-reference-manifest.js +1 -0
  31. package/.next/server/app/(app)/cron/page.js +2 -0
  32. package/.next/server/app/(app)/cron/page.js.nft.json +1 -0
  33. package/.next/server/app/(app)/cron/page_client-reference-manifest.js +1 -0
  34. package/.next/server/app/(app)/dashboard/page.js +2 -0
  35. package/.next/server/app/(app)/dashboard/page.js.nft.json +1 -0
  36. package/.next/server/app/(app)/dashboard/page_client-reference-manifest.js +1 -0
  37. package/.next/server/app/(app)/docs/[id]/page.js +2 -0
  38. package/.next/server/app/(app)/docs/[id]/page.js.nft.json +1 -0
  39. package/.next/server/app/(app)/docs/[id]/page_client-reference-manifest.js +1 -0
  40. package/.next/server/app/(app)/docs/page.js +2 -0
  41. package/.next/server/app/(app)/docs/page.js.nft.json +1 -0
  42. package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -0
  43. package/.next/server/app/(app)/github/page.js +2 -0
  44. package/.next/server/app/(app)/github/page.js.nft.json +1 -0
  45. package/.next/server/app/(app)/github/page_client-reference-manifest.js +1 -0
  46. package/.next/server/app/(app)/goals/page.js +2 -0
  47. package/.next/server/app/(app)/goals/page.js.nft.json +1 -0
  48. package/.next/server/app/(app)/goals/page_client-reference-manifest.js +1 -0
  49. package/.next/server/app/(app)/inbox/page.js +2 -0
  50. package/.next/server/app/(app)/inbox/page.js.nft.json +1 -0
  51. package/.next/server/app/(app)/inbox/page_client-reference-manifest.js +1 -0
  52. package/.next/server/app/(app)/knowledge/page.js +3 -0
  53. package/.next/server/app/(app)/knowledge/page.js.nft.json +1 -0
  54. package/.next/server/app/(app)/knowledge/page_client-reference-manifest.js +1 -0
  55. package/.next/server/app/(app)/models/page.js +2 -0
  56. package/.next/server/app/(app)/models/page.js.nft.json +1 -0
  57. package/.next/server/app/(app)/models/page_client-reference-manifest.js +1 -0
  58. package/.next/server/app/(app)/notifications/page.js +2 -0
  59. package/.next/server/app/(app)/notifications/page.js.nft.json +1 -0
  60. package/.next/server/app/(app)/notifications/page_client-reference-manifest.js +1 -0
  61. package/.next/server/app/(app)/org/page.js +2 -0
  62. package/.next/server/app/(app)/org/page.js.nft.json +1 -0
  63. package/.next/server/app/(app)/org/page_client-reference-manifest.js +1 -0
  64. package/.next/server/app/(app)/organizations/page.js +2 -0
  65. package/.next/server/app/(app)/organizations/page.js.nft.json +1 -0
  66. package/.next/server/app/(app)/organizations/page_client-reference-manifest.js +1 -0
  67. package/.next/server/app/(app)/page.js +3 -0
  68. package/.next/server/app/(app)/page.js.nft.json +1 -0
  69. package/.next/server/app/(app)/page_client-reference-manifest.js +1 -0
  70. package/.next/server/app/(app)/planner/page.js +2 -0
  71. package/.next/server/app/(app)/planner/page.js.nft.json +1 -0
  72. package/.next/server/app/(app)/planner/page_client-reference-manifest.js +1 -0
  73. package/.next/server/app/(app)/plugins/page.js +2 -0
  74. package/.next/server/app/(app)/plugins/page.js.nft.json +1 -0
  75. package/.next/server/app/(app)/plugins/page_client-reference-manifest.js +1 -0
  76. package/.next/server/app/(app)/pm/page.js +2 -0
  77. package/.next/server/app/(app)/pm/page.js.nft.json +1 -0
  78. package/.next/server/app/(app)/pm/page_client-reference-manifest.js +1 -0
  79. package/.next/server/app/(app)/prepare-deploy/page.js +19 -0
  80. package/.next/server/app/(app)/prepare-deploy/page.js.nft.json +1 -0
  81. package/.next/server/app/(app)/prepare-deploy/page_client-reference-manifest.js +1 -0
  82. package/.next/server/app/(app)/profile/page.js +2 -0
  83. package/.next/server/app/(app)/profile/page.js.nft.json +1 -0
  84. package/.next/server/app/(app)/profile/page_client-reference-manifest.js +1 -0
  85. package/.next/server/app/(app)/pulse/page.js +2 -0
  86. package/.next/server/app/(app)/pulse/page.js.nft.json +1 -0
  87. package/.next/server/app/(app)/pulse/page_client-reference-manifest.js +1 -0
  88. package/.next/server/app/(app)/reports/[id]/page.js +3 -0
  89. package/.next/server/app/(app)/reports/[id]/page.js.nft.json +1 -0
  90. package/.next/server/app/(app)/reports/[id]/page_client-reference-manifest.js +1 -0
  91. package/.next/server/app/(app)/reports/page.js +5 -0
  92. package/.next/server/app/(app)/reports/page.js.nft.json +1 -0
  93. package/.next/server/app/(app)/reports/page_client-reference-manifest.js +1 -0
  94. package/.next/server/app/(app)/routines/page.js +2 -0
  95. package/.next/server/app/(app)/routines/page.js.nft.json +1 -0
  96. package/.next/server/app/(app)/routines/page_client-reference-manifest.js +1 -0
  97. package/.next/server/app/(app)/search/page.js +2 -0
  98. package/.next/server/app/(app)/search/page.js.nft.json +1 -0
  99. package/.next/server/app/(app)/search/page_client-reference-manifest.js +1 -0
  100. package/.next/server/app/(app)/security/page.js +2 -0
  101. package/.next/server/app/(app)/security/page.js.nft.json +1 -0
  102. package/.next/server/app/(app)/security/page_client-reference-manifest.js +1 -0
  103. package/.next/server/app/(app)/skills/page.js +18 -0
  104. package/.next/server/app/(app)/skills/page.js.nft.json +1 -0
  105. package/.next/server/app/(app)/skills/page_client-reference-manifest.js +1 -0
  106. package/.next/server/app/(app)/tasks/page.js +2 -0
  107. package/.next/server/app/(app)/tasks/page.js.nft.json +1 -0
  108. package/.next/server/app/(app)/tasks/page_client-reference-manifest.js +1 -0
  109. package/.next/server/app/(app)/test-dev/page.js +2 -0
  110. package/.next/server/app/(app)/test-dev/page.js.nft.json +1 -0
  111. package/.next/server/app/(app)/test-dev/page_client-reference-manifest.js +1 -0
  112. package/.next/server/app/(app)/update/page.js +2 -0
  113. package/.next/server/app/(app)/update/page.js.nft.json +1 -0
  114. package/.next/server/app/(app)/update/page_client-reference-manifest.js +1 -0
  115. package/.next/server/app/(auth)/login/page.js +2 -0
  116. package/.next/server/app/(auth)/login/page.js.nft.json +1 -0
  117. package/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -0
  118. package/.next/server/app/(auth)/onboarding/page.js +18 -0
  119. package/.next/server/app/(auth)/onboarding/page.js.nft.json +1 -0
  120. package/.next/server/app/(auth)/onboarding/page_client-reference-manifest.js +1 -0
  121. package/.next/server/app/_global-error/page.js +32 -0
  122. package/.next/server/app/_global-error/page.js.nft.json +1 -0
  123. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -0
  124. package/.next/server/app/_global-error.html +1 -0
  125. package/.next/server/app/_global-error.meta +16 -0
  126. package/.next/server/app/_global-error.rsc +15 -0
  127. package/.next/server/app/_global-error.segments/_full.segment.rsc +15 -0
  128. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +5 -0
  129. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +5 -0
  130. package/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
  131. package/.next/server/app/_global-error.segments/_index.segment.rsc +6 -0
  132. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  133. package/.next/server/app/_not-found/page.js +2 -0
  134. package/.next/server/app/_not-found/page.js.nft.json +1 -0
  135. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
  136. package/.next/server/app/api/auth/[...all]/route.js +1 -0
  137. package/.next/server/app/api/auth/[...all]/route.js.nft.json +1 -0
  138. package/.next/server/app/api/auth/[...all]/route_client-reference-manifest.js +1 -0
  139. package/.next/server/app/api/cron/tick/route.js +52 -0
  140. package/.next/server/app/api/cron/tick/route.js.nft.json +1 -0
  141. package/.next/server/app/api/cron/tick/route_client-reference-manifest.js +1 -0
  142. package/.next/server/app/api/dev-login/route.js +1 -0
  143. package/.next/server/app/api/dev-login/route.js.nft.json +1 -0
  144. package/.next/server/app/api/dev-login/route_client-reference-manifest.js +1 -0
  145. package/.next/server/app/api/locks/acquire/route.js +1 -0
  146. package/.next/server/app/api/locks/acquire/route.js.nft.json +1 -0
  147. package/.next/server/app/api/locks/acquire/route_client-reference-manifest.js +1 -0
  148. package/.next/server/app/api/models/progress/route.js +1 -0
  149. package/.next/server/app/api/models/progress/route.js.nft.json +1 -0
  150. package/.next/server/app/api/models/progress/route_client-reference-manifest.js +1 -0
  151. package/.next/server/app/api/passkey/authenticate/options/route.js +1 -0
  152. package/.next/server/app/api/passkey/authenticate/options/route.js.nft.json +1 -0
  153. package/.next/server/app/api/passkey/authenticate/options/route_client-reference-manifest.js +1 -0
  154. package/.next/server/app/api/passkey/authenticate/verify/route.js +1 -0
  155. package/.next/server/app/api/passkey/authenticate/verify/route.js.nft.json +1 -0
  156. package/.next/server/app/api/passkey/authenticate/verify/route_client-reference-manifest.js +1 -0
  157. package/.next/server/app/api/passkey/register/options/route.js +1 -0
  158. package/.next/server/app/api/passkey/register/options/route.js.nft.json +1 -0
  159. package/.next/server/app/api/passkey/register/options/route_client-reference-manifest.js +1 -0
  160. package/.next/server/app/api/passkey/register/verify/route.js +1 -0
  161. package/.next/server/app/api/passkey/register/verify/route.js.nft.json +1 -0
  162. package/.next/server/app/api/passkey/register/verify/route_client-reference-manifest.js +1 -0
  163. package/.next/server/app/api/stream/route.js +4 -0
  164. package/.next/server/app/api/stream/route.js.nft.json +1 -0
  165. package/.next/server/app/api/stream/route_client-reference-manifest.js +1 -0
  166. package/.next/server/app/api/sync/file/route.js +2 -0
  167. package/.next/server/app/api/sync/file/route.js.nft.json +1 -0
  168. package/.next/server/app/api/sync/file/route_client-reference-manifest.js +1 -0
  169. package/.next/server/app/api/telegram/poll/route.js +15 -0
  170. package/.next/server/app/api/telegram/poll/route.js.nft.json +1 -0
  171. package/.next/server/app/api/telegram/poll/route_client-reference-manifest.js +1 -0
  172. package/.next/server/app/api/upload/route.js +1 -0
  173. package/.next/server/app/api/upload/route.js.nft.json +1 -0
  174. package/.next/server/app/api/upload/route_client-reference-manifest.js +1 -0
  175. package/.next/server/app/api/v1/[[...path]]/route.js +1 -0
  176. package/.next/server/app/api/v1/[[...path]]/route.js.nft.json +1 -0
  177. package/.next/server/app/api/v1/[[...path]]/route_client-reference-manifest.js +1 -0
  178. package/.next/server/app-paths-manifest.json +53 -0
  179. package/.next/server/chunks/1003.js +1 -0
  180. package/.next/server/chunks/127.js +26 -0
  181. package/.next/server/chunks/1388.js +1 -0
  182. package/.next/server/chunks/1408.js +21 -0
  183. package/.next/server/chunks/1572.js +1 -0
  184. package/.next/server/chunks/1591.js +24 -0
  185. package/.next/server/chunks/1619.js +188 -0
  186. package/.next/server/chunks/162.js +1 -0
  187. package/.next/server/chunks/1881.js +1 -0
  188. package/.next/server/chunks/1968.js +1 -0
  189. package/.next/server/chunks/2297.js +348 -0
  190. package/.next/server/chunks/2341.js +1 -0
  191. package/.next/server/chunks/2517.js +1 -0
  192. package/.next/server/chunks/2549.js +1 -0
  193. package/.next/server/chunks/259.js +14 -0
  194. package/.next/server/chunks/2599.js +1 -0
  195. package/.next/server/chunks/260.js +1 -0
  196. package/.next/server/chunks/2867.js +147 -0
  197. package/.next/server/chunks/3018.js +1 -0
  198. package/.next/server/chunks/3050.js +18 -0
  199. package/.next/server/chunks/3085.js +12 -0
  200. package/.next/server/chunks/3131.js +1 -0
  201. package/.next/server/chunks/3242.js +1 -0
  202. package/.next/server/chunks/3266.js +15 -0
  203. package/.next/server/chunks/3524.js +1 -0
  204. package/.next/server/chunks/3527.js +479 -0
  205. package/.next/server/chunks/3533.js +869 -0
  206. package/.next/server/chunks/3550.js +1 -0
  207. package/.next/server/chunks/3609.js +2 -0
  208. package/.next/server/chunks/3667.js +462 -0
  209. package/.next/server/chunks/3760.js +4 -0
  210. package/.next/server/chunks/4679.js +1 -0
  211. package/.next/server/chunks/4804.js +1 -0
  212. package/.next/server/chunks/4832.js +2 -0
  213. package/.next/server/chunks/4853.js +1 -0
  214. package/.next/server/chunks/4979.js +67 -0
  215. package/.next/server/chunks/5060.js +1 -0
  216. package/.next/server/chunks/5278.js +1 -0
  217. package/.next/server/chunks/5614.js +1 -0
  218. package/.next/server/chunks/5818.js +1 -0
  219. package/.next/server/chunks/6479.js +1 -0
  220. package/.next/server/chunks/6658.js +1 -0
  221. package/.next/server/chunks/6706.js +1 -0
  222. package/.next/server/chunks/6719.js +1 -0
  223. package/.next/server/chunks/678.js +1 -0
  224. package/.next/server/chunks/683.js +1 -0
  225. package/.next/server/chunks/6862.js +1 -0
  226. package/.next/server/chunks/6882.js +1 -0
  227. package/.next/server/chunks/7037.js +1 -0
  228. package/.next/server/chunks/7107.js +741 -0
  229. package/.next/server/chunks/73.js +17 -0
  230. package/.next/server/chunks/7327.js +1 -0
  231. package/.next/server/chunks/7514.js +1 -0
  232. package/.next/server/chunks/7622.js +1 -0
  233. package/.next/server/chunks/7778.js +1 -0
  234. package/.next/server/chunks/7912.js +1 -0
  235. package/.next/server/chunks/7949.js +1 -0
  236. package/.next/server/chunks/7971.js +1 -0
  237. package/.next/server/chunks/7989.js +1 -0
  238. package/.next/server/chunks/842.js +22 -0
  239. package/.next/server/chunks/8762.js +15 -0
  240. package/.next/server/chunks/8823.js +77 -0
  241. package/.next/server/chunks/9146.js +4 -0
  242. package/.next/server/chunks/9676.js +1 -0
  243. package/.next/server/chunks/9783.js +22 -0
  244. package/.next/server/chunks/9969.js +3 -0
  245. package/.next/server/functions-config-manifest.json +18 -0
  246. package/.next/server/instrumentation.js +1 -0
  247. package/.next/server/instrumentation.js.nft.json +1 -0
  248. package/.next/server/interception-route-rewrite-manifest.js +1 -0
  249. package/.next/server/middleware-build-manifest.js +1 -0
  250. package/.next/server/middleware-manifest.json +6 -0
  251. package/.next/server/middleware-react-loadable-manifest.js +1 -0
  252. package/.next/server/middleware.js +18 -0
  253. package/.next/server/middleware.js.nft.json +1 -0
  254. package/.next/server/next-font-manifest.js +1 -0
  255. package/.next/server/next-font-manifest.json +1 -0
  256. package/.next/server/pages/500.html +1 -0
  257. package/.next/server/pages-manifest.json +3 -0
  258. package/.next/server/prefetch-hints.json +1 -0
  259. package/.next/server/server-reference-manifest.js +1 -0
  260. package/.next/server/server-reference-manifest.json +1 -0
  261. package/.next/server/webpack-runtime.js +1 -0
  262. package/.next/static/chunks/1858-339516f78a4b00da.js +1 -0
  263. package/.next/static/chunks/2320-fc8b39380e69d465.js +2 -0
  264. package/.next/static/chunks/23550918-ff694f70f4b0648c.js +1 -0
  265. package/.next/static/chunks/3219-ebb3c23be38c838d.js +1 -0
  266. package/.next/static/chunks/4263-adecb5b466380b6e.js +1 -0
  267. package/.next/static/chunks/5479-0cceab68cd0ca9c7.js +1 -0
  268. package/.next/static/chunks/5701-665b927b06158b76.js +1 -0
  269. package/.next/static/chunks/5920.6451a68b63918988.js +1 -0
  270. package/.next/static/chunks/6575-5c9139720bb0f5bf.js +4 -0
  271. package/.next/static/chunks/6834-4759af1ce7d95fb6.js +32 -0
  272. package/.next/static/chunks/7509.721cd47a931c5518.js +1 -0
  273. package/.next/static/chunks/8264-1ca011989ee2b231.js +1 -0
  274. package/.next/static/chunks/9219-4a39a98b5502d9d1.js +1 -0
  275. package/.next/static/chunks/9690-53d5222618cbeddb.js +1 -0
  276. package/.next/static/chunks/app/(app)/activity/page-3973534281ecea81.js +1 -0
  277. package/.next/static/chunks/app/(app)/agents/[handle]/page-83662a175c098282.js +1 -0
  278. package/.next/static/chunks/app/(app)/code/page-33979545192cd137.js +1 -0
  279. package/.next/static/chunks/app/(app)/config/page-9933aed1ca8a85c1.js +1 -0
  280. package/.next/static/chunks/app/(app)/costs/page-131c4dc580efcc19.js +1 -0
  281. package/.next/static/chunks/app/(app)/cron/page-53ea1aff998a87ca.js +1 -0
  282. package/.next/static/chunks/app/(app)/dashboard/page-deed83aaa9d0d447.js +1 -0
  283. package/.next/static/chunks/app/(app)/docs/[id]/page-38c993d73c0eab4f.js +1 -0
  284. package/.next/static/chunks/app/(app)/docs/page-bf463b55d0554e86.js +1 -0
  285. package/.next/static/chunks/app/(app)/error-988cd28480809861.js +1 -0
  286. package/.next/static/chunks/app/(app)/github/page-62678b4e82dfecb6.js +1 -0
  287. package/.next/static/chunks/app/(app)/goals/page-4adb426fe1c96106.js +1 -0
  288. package/.next/static/chunks/app/(app)/inbox/page-e347dc55ab467310.js +1 -0
  289. package/.next/static/chunks/app/(app)/knowledge/page-65393a045b4349be.js +1 -0
  290. package/.next/static/chunks/app/(app)/layout-7f65675705b011d8.js +1 -0
  291. package/.next/static/chunks/app/(app)/models/page-e01f1dd7e49a2951.js +1 -0
  292. package/.next/static/chunks/app/(app)/notifications/page-56548ac87aef00da.js +1 -0
  293. package/.next/static/chunks/app/(app)/org/page-699e6a6dc0db7d81.js +1 -0
  294. package/.next/static/chunks/app/(app)/organizations/page-36051a380a7e8eb7.js +1 -0
  295. package/.next/static/chunks/app/(app)/page-7d1011a566f81520.js +1 -0
  296. package/.next/static/chunks/app/(app)/planner/page-dab7ced94083373a.js +1 -0
  297. package/.next/static/chunks/app/(app)/plugins/page-5b5a1f53389be42e.js +1 -0
  298. package/.next/static/chunks/app/(app)/pm/page-0de5c08c0b227bb0.js +1 -0
  299. package/.next/static/chunks/app/(app)/prepare-deploy/page-e426038552df8d41.js +1 -0
  300. package/.next/static/chunks/app/(app)/profile/page-608dfcaf8aae0a69.js +1 -0
  301. package/.next/static/chunks/app/(app)/pulse/page-309ccaca91de1faa.js +1 -0
  302. package/.next/static/chunks/app/(app)/reports/[id]/page-53ea1aff998a87ca.js +1 -0
  303. package/.next/static/chunks/app/(app)/reports/page-68cdc6dcfa472d86.js +1 -0
  304. package/.next/static/chunks/app/(app)/routines/page-bcc55550b197a9fa.js +1 -0
  305. package/.next/static/chunks/app/(app)/search/page-5c5f67558d0dbf0d.js +1 -0
  306. package/.next/static/chunks/app/(app)/security/page-a7d41e36aa366b45.js +1 -0
  307. package/.next/static/chunks/app/(app)/skills/page-c5b21e89593b8336.js +1 -0
  308. package/.next/static/chunks/app/(app)/tasks/page-08ae079e3e54d2ce.js +1 -0
  309. package/.next/static/chunks/app/(app)/test-dev/page-633f82dfd9c3ce23.js +1 -0
  310. package/.next/static/chunks/app/(app)/update/page-4be019054351bfac.js +1 -0
  311. package/.next/static/chunks/app/(auth)/login/page-6e85d3377062acae.js +1 -0
  312. package/.next/static/chunks/app/(auth)/onboarding/page-ebb10c175abf3b85.js +1 -0
  313. package/.next/static/chunks/app/_global-error/page-23fe50a6bf589c97.js +1 -0
  314. package/.next/static/chunks/app/_not-found/page-dc38b02aebeab535.js +1 -0
  315. package/.next/static/chunks/app/api/auth/[...all]/route-23fe50a6bf589c97.js +1 -0
  316. package/.next/static/chunks/app/api/cron/tick/route-23fe50a6bf589c97.js +1 -0
  317. package/.next/static/chunks/app/api/dev-login/route-23fe50a6bf589c97.js +1 -0
  318. package/.next/static/chunks/app/api/locks/acquire/route-23fe50a6bf589c97.js +1 -0
  319. package/.next/static/chunks/app/api/models/progress/route-23fe50a6bf589c97.js +1 -0
  320. package/.next/static/chunks/app/api/passkey/authenticate/options/route-23fe50a6bf589c97.js +1 -0
  321. package/.next/static/chunks/app/api/passkey/authenticate/verify/route-23fe50a6bf589c97.js +1 -0
  322. package/.next/static/chunks/app/api/passkey/register/options/route-23fe50a6bf589c97.js +1 -0
  323. package/.next/static/chunks/app/api/passkey/register/verify/route-23fe50a6bf589c97.js +1 -0
  324. package/.next/static/chunks/app/api/stream/route-23fe50a6bf589c97.js +1 -0
  325. package/.next/static/chunks/app/api/sync/file/route-23fe50a6bf589c97.js +1 -0
  326. package/.next/static/chunks/app/api/telegram/poll/route-23fe50a6bf589c97.js +1 -0
  327. package/.next/static/chunks/app/api/upload/route-23fe50a6bf589c97.js +1 -0
  328. package/.next/static/chunks/app/api/v1/[[...path]]/route-23fe50a6bf589c97.js +1 -0
  329. package/.next/static/chunks/app/error-09899a13c38b6e89.js +1 -0
  330. package/.next/static/chunks/app/global-error-b8050d4d886f448c.js +1 -0
  331. package/.next/static/chunks/app/layout-ab9deed1e7e2e9df.js +1 -0
  332. package/.next/static/chunks/framework-4b2c6b6043dd203f.js +1 -0
  333. package/.next/static/chunks/main-722e16032e7764d1.js +5 -0
  334. package/.next/static/chunks/main-app-761880af2b6f1962.js +1 -0
  335. package/.next/static/chunks/next/dist/client/components/builtin/app-error-23fe50a6bf589c97.js +1 -0
  336. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-23fe50a6bf589c97.js +1 -0
  337. package/.next/static/chunks/next/dist/client/components/builtin/not-found-23fe50a6bf589c97.js +1 -0
  338. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-23fe50a6bf589c97.js +1 -0
  339. package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  340. package/.next/static/chunks/webpack-222e3894b78c67db.js +1 -0
  341. package/.next/static/css/0a9b5805594444e3.css +1 -0
  342. package/.next/static/yztMvBwyrWWkSqP6jfXoa/_buildManifest.js +1 -0
  343. package/.next/static/yztMvBwyrWWkSqP6jfXoa/_ssgManifest.js +1 -0
  344. package/.next/trace-build +1 -0
  345. package/.next/types/app/(app)/activity/page.ts +87 -0
  346. package/.next/types/app/(app)/agents/[handle]/page.ts +87 -0
  347. package/.next/types/app/(app)/code/page.ts +87 -0
  348. package/.next/types/app/(app)/config/page.ts +87 -0
  349. package/.next/types/app/(app)/costs/page.ts +87 -0
  350. package/.next/types/app/(app)/cron/page.ts +87 -0
  351. package/.next/types/app/(app)/dashboard/page.ts +87 -0
  352. package/.next/types/app/(app)/docs/[id]/page.ts +87 -0
  353. package/.next/types/app/(app)/docs/page.ts +87 -0
  354. package/.next/types/app/(app)/github/page.ts +87 -0
  355. package/.next/types/app/(app)/goals/page.ts +87 -0
  356. package/.next/types/app/(app)/inbox/page.ts +87 -0
  357. package/.next/types/app/(app)/knowledge/page.ts +87 -0
  358. package/.next/types/app/(app)/models/page.ts +87 -0
  359. package/.next/types/app/(app)/notifications/page.ts +87 -0
  360. package/.next/types/app/(app)/org/page.ts +87 -0
  361. package/.next/types/app/(app)/organizations/page.ts +87 -0
  362. package/.next/types/app/(app)/page.ts +87 -0
  363. package/.next/types/app/(app)/planner/page.ts +87 -0
  364. package/.next/types/app/(app)/plugins/page.ts +87 -0
  365. package/.next/types/app/(app)/pm/page.ts +87 -0
  366. package/.next/types/app/(app)/prepare-deploy/page.ts +87 -0
  367. package/.next/types/app/(app)/profile/page.ts +87 -0
  368. package/.next/types/app/(app)/pulse/page.ts +87 -0
  369. package/.next/types/app/(app)/reports/[id]/page.ts +87 -0
  370. package/.next/types/app/(app)/reports/page.ts +87 -0
  371. package/.next/types/app/(app)/routines/page.ts +87 -0
  372. package/.next/types/app/(app)/search/page.ts +87 -0
  373. package/.next/types/app/(app)/security/page.ts +87 -0
  374. package/.next/types/app/(app)/skills/page.ts +87 -0
  375. package/.next/types/app/(app)/tasks/page.ts +87 -0
  376. package/.next/types/app/(app)/test-dev/page.ts +87 -0
  377. package/.next/types/app/(app)/update/page.ts +87 -0
  378. package/.next/types/app/(auth)/login/page.ts +87 -0
  379. package/.next/types/app/(auth)/onboarding/page.ts +87 -0
  380. package/.next/types/app/api/auth/[...all]/route.ts +351 -0
  381. package/.next/types/app/api/cron/tick/route.ts +351 -0
  382. package/.next/types/app/api/dev-login/route.ts +351 -0
  383. package/.next/types/app/api/locks/acquire/route.ts +351 -0
  384. package/.next/types/app/api/models/progress/route.ts +351 -0
  385. package/.next/types/app/api/passkey/authenticate/options/route.ts +351 -0
  386. package/.next/types/app/api/passkey/authenticate/verify/route.ts +351 -0
  387. package/.next/types/app/api/passkey/register/options/route.ts +351 -0
  388. package/.next/types/app/api/passkey/register/verify/route.ts +351 -0
  389. package/.next/types/app/api/stream/route.ts +351 -0
  390. package/.next/types/app/api/sync/file/route.ts +351 -0
  391. package/.next/types/app/api/telegram/poll/route.ts +351 -0
  392. package/.next/types/app/api/upload/route.ts +351 -0
  393. package/.next/types/app/api/v1/[[...path]]/route.ts +351 -0
  394. package/.next/types/cache-life.d.ts +145 -0
  395. package/.next/types/link.d.ts +210 -0
  396. package/.next/types/package.json +1 -0
  397. package/.next/types/routes.d.ts +120 -0
  398. package/.next/types/validator.ts +511 -0
  399. package/CHANGELOG.md +312 -0
  400. package/LICENSE +21 -0
  401. package/README.md +382 -0
  402. package/README.pt-BR.md +391 -0
  403. package/bin/constella.mjs +329 -0
  404. package/bin/guard-hook.mjs +44 -0
  405. package/bin/lock-hook.mjs +49 -0
  406. package/bin/worker.mjs +142 -0
  407. package/docs/assets/arch-orbit.svg +56 -0
  408. package/docs/assets/blackhole.svg +37 -0
  409. package/docs/assets/divider-orbit.svg +23 -0
  410. package/docs/assets/hero-constella.svg +72 -0
  411. package/docs/en/AGENTS.md +279 -0
  412. package/docs/en/AI_ARCHITECTURE.md +373 -0
  413. package/docs/en/ARCHITECTURE.md +334 -0
  414. package/docs/en/AUTH_MODE.md +247 -0
  415. package/docs/en/CHAT_COMMANDS.md +305 -0
  416. package/docs/en/CONFIGURATION.md +340 -0
  417. package/docs/en/DEPLOY.md +331 -0
  418. package/docs/en/DM.md +297 -0
  419. package/docs/en/FAQ.md +258 -0
  420. package/docs/en/GITHUB.md +341 -0
  421. package/docs/en/GOALS_SPECS_ISSUES.md +303 -0
  422. package/docs/en/INBOX.md +340 -0
  423. package/docs/en/INSTALLATION.md +329 -0
  424. package/docs/en/KB_AGENT.md +305 -0
  425. package/docs/en/KB_RAG.md +356 -0
  426. package/docs/en/MCP.md +313 -0
  427. package/docs/en/MEMORY_RAG.md +289 -0
  428. package/docs/en/MODELS.md +341 -0
  429. package/docs/en/ONBOARDING.md +327 -0
  430. package/docs/en/PLUGINS.md +290 -0
  431. package/docs/en/PORTABLE_MODE.md +387 -0
  432. package/docs/en/PO_AGENT.md +379 -0
  433. package/docs/en/PREPARE_DEPLOY.md +308 -0
  434. package/docs/en/PROJECT_STACKS.md +258 -0
  435. package/docs/en/PUBLIC_API.md +315 -0
  436. package/docs/en/PUBLISHING.md +343 -0
  437. package/docs/en/README.md +95 -0
  438. package/docs/en/SECURITY.md +280 -0
  439. package/docs/en/SKILLS.md +349 -0
  440. package/docs/en/START_MODE.md +340 -0
  441. package/docs/en/SYNCED_BLOCKS.md +320 -0
  442. package/docs/en/TEAM_ROOM.md +285 -0
  443. package/docs/en/TELEGRAM.md +294 -0
  444. package/docs/en/TEST_DEV.md +321 -0
  445. package/docs/en/TROUBLESHOOTING.md +294 -0
  446. package/docs/en/UPDATE.md +301 -0
  447. package/docs/en/VPS_MODE.md +334 -0
  448. package/docs/en/WORKFLOW.md +321 -0
  449. package/docs/pt/AGENTS.md +279 -0
  450. package/docs/pt/AI_ARCHITECTURE.md +373 -0
  451. package/docs/pt/ARCHITECTURE.md +334 -0
  452. package/docs/pt/AUTH_MODE.md +247 -0
  453. package/docs/pt/CHAT_COMMANDS.md +307 -0
  454. package/docs/pt/CONFIGURATION.md +340 -0
  455. package/docs/pt/DEPLOY.md +331 -0
  456. package/docs/pt/DM.md +297 -0
  457. package/docs/pt/FAQ.md +258 -0
  458. package/docs/pt/GITHUB.md +341 -0
  459. package/docs/pt/GOALS_SPECS_ISSUES.md +303 -0
  460. package/docs/pt/INBOX.md +340 -0
  461. package/docs/pt/INSTALLATION.md +329 -0
  462. package/docs/pt/KB_AGENT.md +305 -0
  463. package/docs/pt/KB_RAG.md +356 -0
  464. package/docs/pt/MCP.md +313 -0
  465. package/docs/pt/MEMORY_RAG.md +289 -0
  466. package/docs/pt/MODELS.md +341 -0
  467. package/docs/pt/ONBOARDING.md +327 -0
  468. package/docs/pt/PLUGINS.md +290 -0
  469. package/docs/pt/PORTABLE_MODE.md +387 -0
  470. package/docs/pt/PO_AGENT.md +379 -0
  471. package/docs/pt/PREPARE_DEPLOY.md +308 -0
  472. package/docs/pt/PROJECT_STACKS.md +258 -0
  473. package/docs/pt/PUBLIC_API.md +315 -0
  474. package/docs/pt/PUBLISHING.md +343 -0
  475. package/docs/pt/README.md +95 -0
  476. package/docs/pt/SECURITY.md +280 -0
  477. package/docs/pt/SKILLS.md +349 -0
  478. package/docs/pt/START_MODE.md +340 -0
  479. package/docs/pt/SYNCED_BLOCKS.md +320 -0
  480. package/docs/pt/TEAM_ROOM.md +285 -0
  481. package/docs/pt/TELEGRAM.md +294 -0
  482. package/docs/pt/TEST_DEV.md +321 -0
  483. package/docs/pt/TROUBLESHOOTING.md +294 -0
  484. package/docs/pt/UPDATE.md +301 -0
  485. package/docs/pt/VPS_MODE.md +334 -0
  486. package/docs/pt/WORKFLOW.md +321 -0
  487. package/drizzle/0000_regular_nightshade.sql +644 -0
  488. package/drizzle/0001_mixed_zombie.sql +106 -0
  489. package/drizzle/meta/0000_snapshot.json +4650 -0
  490. package/drizzle/meta/0001_snapshot.json +5418 -0
  491. package/drizzle/meta/_journal.json +20 -0
  492. package/drizzle.config.mjs +16 -0
  493. package/next.config.mjs +18 -0
  494. package/package.json +130 -0
  495. package/scripts/clean-repo.mjs +20 -0
  496. package/scripts/dev-all.mjs +46 -0
  497. package/scripts/i18n-parity.mjs +57 -0
  498. package/scripts/mcp-server.mjs +100 -0
  499. package/scripts/postbuild.mjs +11 -0
  500. package/scripts/publish-public.mjs +116 -0
  501. package/scripts/start-all.mjs +45 -0
  502. package/scripts/trim-next.mjs +23 -0
  503. package/scripts/vps-install.sh +39 -0
  504. package/skills/CONTRIBUTING.md +122 -0
  505. package/skills/COVERAGE.md +129 -0
  506. package/skills/INDEX.json +3443 -0
  507. package/skills/README.md +57 -0
  508. package/skills/design/animation-motion/SKILL.md +60 -0
  509. package/skills/design/color-and-typography/SKILL.md +60 -0
  510. package/skills/design/css-techniques/SKILL.md +58 -0
  511. package/skills/design/design-systems/SKILL.md +60 -0
  512. package/skills/design/gradients/SKILL.md +59 -0
  513. package/skills/design/graphic-design-basics/SKILL.md +55 -0
  514. package/skills/design/microinteractions/SKILL.md +58 -0
  515. package/skills/design/responsive-layout/SKILL.md +59 -0
  516. package/skills/design/ui-ux-principles/SKILL.md +58 -0
  517. package/skills/engineering/architecture/api-design-rest-graphql/SKILL.md +67 -0
  518. package/skills/engineering/architecture/caching-strategies/SKILL.md +59 -0
  519. package/skills/engineering/architecture/data-modeling/SKILL.md +64 -0
  520. package/skills/engineering/architecture/message-queues-async/SKILL.md +58 -0
  521. package/skills/engineering/architecture/scalability-reliability/SKILL.md +62 -0
  522. package/skills/engineering/architecture/software-architecture-patterns/SKILL.md +56 -0
  523. package/skills/engineering/architecture/system-design-fundamentals/SKILL.md +56 -0
  524. package/skills/engineering/backend/auth-and-authorization/SKILL.md +62 -0
  525. package/skills/engineering/backend/backend-fundamentals/SKILL.md +65 -0
  526. package/skills/engineering/backend/observability-logging/SKILL.md +60 -0
  527. package/skills/engineering/frontend/accessibility-wcag/SKILL.md +57 -0
  528. package/skills/engineering/frontend/frontend-architecture/SKILL.md +65 -0
  529. package/skills/engineering/frontend/rendering-strategies-ssr-csr/SKILL.md +60 -0
  530. package/skills/engineering/frontend/state-management/SKILL.md +69 -0
  531. package/skills/engineering/performance/backend-performance/SKILL.md +69 -0
  532. package/skills/engineering/performance/database-query-optimization/SKILL.md +64 -0
  533. package/skills/engineering/performance/profiling-and-benchmarking/SKILL.md +60 -0
  534. package/skills/engineering/performance/web-performance-core-vitals/SKILL.md +72 -0
  535. package/skills/engineering/practices/clean-code/SKILL.md +61 -0
  536. package/skills/engineering/practices/code-optimization/SKILL.md +60 -0
  537. package/skills/engineering/practices/code-review-practices/SKILL.md +58 -0
  538. package/skills/engineering/practices/git-workflow/SKILL.md +62 -0
  539. package/skills/engineering/practices/refactoring/SKILL.md +58 -0
  540. package/skills/engineering/security/appsec-fundamentals/SKILL.md +70 -0
  541. package/skills/engineering/security/dependency-supply-chain/SKILL.md +77 -0
  542. package/skills/engineering/security/owasp-asvs/SKILL.md +54 -0
  543. package/skills/engineering/security/owasp-top-10/SKILL.md +63 -0
  544. package/skills/engineering/security/secrets-management/SKILL.md +58 -0
  545. package/skills/engineering/security/secure-auth-sessions/SKILL.md +56 -0
  546. package/skills/engineering/testing/tdd-and-coverage/SKILL.md +62 -0
  547. package/skills/engineering/testing/testing-strategy-pyramid/SKILL.md +56 -0
  548. package/skills/engineering/testing/unit-integration-e2e/SKILL.md +75 -0
  549. package/skills/languages/c/SKILL.md +74 -0
  550. package/skills/languages/clojure/SKILL.md +73 -0
  551. package/skills/languages/cpp/SKILL.md +75 -0
  552. package/skills/languages/csharp/SKILL.md +75 -0
  553. package/skills/languages/dart/SKILL.md +82 -0
  554. package/skills/languages/elixir/SKILL.md +74 -0
  555. package/skills/languages/erlang/SKILL.md +76 -0
  556. package/skills/languages/go/SKILL.md +83 -0
  557. package/skills/languages/haskell/SKILL.md +70 -0
  558. package/skills/languages/java/SKILL.md +71 -0
  559. package/skills/languages/javascript/SKILL.md +62 -0
  560. package/skills/languages/kotlin/SKILL.md +68 -0
  561. package/skills/languages/lua/SKILL.md +79 -0
  562. package/skills/languages/objectivec/SKILL.md +83 -0
  563. package/skills/languages/php/SKILL.md +74 -0
  564. package/skills/languages/python/SKILL.md +68 -0
  565. package/skills/languages/r/SKILL.md +70 -0
  566. package/skills/languages/ruby/SKILL.md +67 -0
  567. package/skills/languages/rust/SKILL.md +72 -0
  568. package/skills/languages/scala/SKILL.md +73 -0
  569. package/skills/languages/swift/SKILL.md +73 -0
  570. package/skills/languages/typescript/SKILL.md +69 -0
  571. package/skills/meta/authoring-agent-skills/SKILL.md +73 -0
  572. package/skills/meta/progressive-disclosure/SKILL.md +65 -0
  573. package/skills/meta/skill-frontmatter-spec/SKILL.md +65 -0
  574. package/skills/process/adr-technical-decisions/SKILL.md +59 -0
  575. package/skills/process/app-planning/SKILL.md +63 -0
  576. package/skills/process/architecture-before-code/SKILL.md +52 -0
  577. package/skills/process/breaking-work-into-sprints/SKILL.md +53 -0
  578. package/skills/process/idea-to-product/SKILL.md +50 -0
  579. package/skills/process/mocks-and-screen-flows/SKILL.md +52 -0
  580. package/skills/process/prioritization-moscow-rice/SKILL.md +64 -0
  581. package/skills/process/problem-framing/SKILL.md +51 -0
  582. package/skills/process/product-discovery/SKILL.md +53 -0
  583. package/skills/process/readme-generation/SKILL.md +90 -0
  584. package/skills/process/requirements-to-specs/SKILL.md +53 -0
  585. package/skills/process/research-official-docs/SKILL.md +58 -0
  586. package/skills/process/review-code-perf-security/SKILL.md +65 -0
  587. package/skills/process/security-by-design/SKILL.md +68 -0
  588. package/skills/process/specs-to-issues/SKILL.md +53 -0
  589. package/skills/process/testing-before-done/SKILL.md +61 -0
  590. package/skills/process/validating-ux-navigation/SKILL.md +63 -0
  591. package/skills/references/ai-attachments-ui/SKILL.md +66 -0
  592. package/skills/references/ai-in-browser-webllm/SKILL.md +74 -0
  593. package/skills/references/ai-tool-ui-patterns/SKILL.md +63 -0
  594. package/skills/references/component-patterns-gallery/SKILL.md +62 -0
  595. package/skills/references/gradient-resources/SKILL.md +66 -0
  596. package/skills/references/react-component-libraries/SKILL.md +61 -0
  597. package/skills/references/saas-landing-patterns/SKILL.md +67 -0
  598. package/skills/references/shadcn-tailwind-theming/SKILL.md +74 -0
  599. package/skills/references/vercel-ai-sdk-elements/SKILL.md +66 -0
  600. package/skills/references/web-animation-codrops/SKILL.md +68 -0
  601. package/skills/stacks/aiml/jupyter/SKILL.md +68 -0
  602. package/skills/stacks/aiml/keras/SKILL.md +77 -0
  603. package/skills/stacks/aiml/numpy/SKILL.md +69 -0
  604. package/skills/stacks/aiml/pandas/SKILL.md +72 -0
  605. package/skills/stacks/aiml/pytorch/SKILL.md +77 -0
  606. package/skills/stacks/aiml/scikit-learn/SKILL.md +74 -0
  607. package/skills/stacks/aiml/tensorflow/SKILL.md +79 -0
  608. package/skills/stacks/auth/auth0/SKILL.md +63 -0
  609. package/skills/stacks/auth/authjs/SKILL.md +69 -0
  610. package/skills/stacks/auth/clerk/SKILL.md +72 -0
  611. package/skills/stacks/auth/keycloak/SKILL.md +63 -0
  612. package/skills/stacks/auth/lucia/SKILL.md +56 -0
  613. package/skills/stacks/auth/passport/SKILL.md +70 -0
  614. package/skills/stacks/auth/supabase-auth/SKILL.md +66 -0
  615. package/skills/stacks/baas/amplify/SKILL.md +71 -0
  616. package/skills/stacks/baas/appwrite/SKILL.md +79 -0
  617. package/skills/stacks/baas/firebase/SKILL.md +73 -0
  618. package/skills/stacks/baas/heroku/SKILL.md +71 -0
  619. package/skills/stacks/backend/actix/SKILL.md +77 -0
  620. package/skills/stacks/backend/adonisjs/SKILL.md +65 -0
  621. package/skills/stacks/backend/aspnet-core/SKILL.md +75 -0
  622. package/skills/stacks/backend/codeigniter/SKILL.md +76 -0
  623. package/skills/stacks/backend/django/SKILL.md +62 -0
  624. package/skills/stacks/backend/express/SKILL.md +65 -0
  625. package/skills/stacks/backend/fastapi/SKILL.md +64 -0
  626. package/skills/stacks/backend/fastify/SKILL.md +64 -0
  627. package/skills/stacks/backend/fiber/SKILL.md +68 -0
  628. package/skills/stacks/backend/flask/SKILL.md +71 -0
  629. package/skills/stacks/backend/gin/SKILL.md +68 -0
  630. package/skills/stacks/backend/graphql/SKILL.md +70 -0
  631. package/skills/stacks/backend/hono/SKILL.md +64 -0
  632. package/skills/stacks/backend/koa/SKILL.md +63 -0
  633. package/skills/stacks/backend/laravel/SKILL.md +73 -0
  634. package/skills/stacks/backend/nestjs/SKILL.md +70 -0
  635. package/skills/stacks/backend/nginx/SKILL.md +77 -0
  636. package/skills/stacks/backend/phoenix/SKILL.md +68 -0
  637. package/skills/stacks/backend/rails/SKILL.md +67 -0
  638. package/skills/stacks/backend/spring/SKILL.md +70 -0
  639. package/skills/stacks/backend/spring-boot/SKILL.md +70 -0
  640. package/skills/stacks/backend/symfony/SKILL.md +77 -0
  641. package/skills/stacks/container/containerd/SKILL.md +75 -0
  642. package/skills/stacks/container/docker/SKILL.md +90 -0
  643. package/skills/stacks/container/podman/SKILL.md +93 -0
  644. package/skills/stacks/database/cassandra/SKILL.md +74 -0
  645. package/skills/stacks/database/cockroachdb/SKILL.md +69 -0
  646. package/skills/stacks/database/dynamodb/SKILL.md +62 -0
  647. package/skills/stacks/database/mariadb/SKILL.md +71 -0
  648. package/skills/stacks/database/mongodb/SKILL.md +71 -0
  649. package/skills/stacks/database/mysql/SKILL.md +72 -0
  650. package/skills/stacks/database/neon/SKILL.md +68 -0
  651. package/skills/stacks/database/planetscale/SKILL.md +70 -0
  652. package/skills/stacks/database/postgresql/SKILL.md +81 -0
  653. package/skills/stacks/database/redis/SKILL.md +78 -0
  654. package/skills/stacks/database/sqlite/SKILL.md +70 -0
  655. package/skills/stacks/database/supabase/SKILL.md +79 -0
  656. package/skills/stacks/dataviz/chart-js/SKILL.md +72 -0
  657. package/skills/stacks/dataviz/d3/SKILL.md +77 -0
  658. package/skills/stacks/dataviz/grafana/SKILL.md +69 -0
  659. package/skills/stacks/dataviz/plotly/SKILL.md +71 -0
  660. package/skills/stacks/frontend/alpine/SKILL.md +75 -0
  661. package/skills/stacks/frontend/angular/SKILL.md +75 -0
  662. package/skills/stacks/frontend/backbone/SKILL.md +82 -0
  663. package/skills/stacks/frontend/ember/SKILL.md +85 -0
  664. package/skills/stacks/frontend/htmx/SKILL.md +73 -0
  665. package/skills/stacks/frontend/lit/SKILL.md +76 -0
  666. package/skills/stacks/frontend/preact/SKILL.md +74 -0
  667. package/skills/stacks/frontend/qwik/SKILL.md +65 -0
  668. package/skills/stacks/frontend/react/SKILL.md +77 -0
  669. package/skills/stacks/frontend/solidjs/SKILL.md +75 -0
  670. package/skills/stacks/frontend/svelte/SKILL.md +70 -0
  671. package/skills/stacks/frontend/vue/SKILL.md +69 -0
  672. package/skills/stacks/infra/ansible/SKILL.md +76 -0
  673. package/skills/stacks/infra/aws/SKILL.md +66 -0
  674. package/skills/stacks/infra/azure/SKILL.md +72 -0
  675. package/skills/stacks/infra/circleci/SKILL.md +78 -0
  676. package/skills/stacks/infra/cloudflare/SKILL.md +65 -0
  677. package/skills/stacks/infra/fly-io/SKILL.md +63 -0
  678. package/skills/stacks/infra/gcp/SKILL.md +66 -0
  679. package/skills/stacks/infra/jenkins/SKILL.md +73 -0
  680. package/skills/stacks/infra/kubernetes/SKILL.md +64 -0
  681. package/skills/stacks/infra/netlify/SKILL.md +60 -0
  682. package/skills/stacks/infra/railway/SKILL.md +63 -0
  683. package/skills/stacks/infra/tailscale/SKILL.md +65 -0
  684. package/skills/stacks/infra/terraform/SKILL.md +75 -0
  685. package/skills/stacks/infra/vagrant/SKILL.md +70 -0
  686. package/skills/stacks/infra/vercel/SKILL.md +60 -0
  687. package/skills/stacks/meta/astro/SKILL.md +64 -0
  688. package/skills/stacks/meta/docusaurus/SKILL.md +71 -0
  689. package/skills/stacks/meta/eleventy/SKILL.md +69 -0
  690. package/skills/stacks/meta/gatsby/SKILL.md +63 -0
  691. package/skills/stacks/meta/hugo/SKILL.md +73 -0
  692. package/skills/stacks/meta/jekyll/SKILL.md +70 -0
  693. package/skills/stacks/meta/nextjs/SKILL.md +62 -0
  694. package/skills/stacks/meta/nuxt/SKILL.md +66 -0
  695. package/skills/stacks/meta/remix/SKILL.md +67 -0
  696. package/skills/stacks/meta/sveltekit/SKILL.md +70 -0
  697. package/skills/stacks/meta/vite/SKILL.md +63 -0
  698. package/skills/stacks/mobile/android/SKILL.md +77 -0
  699. package/skills/stacks/mobile/flutter/SKILL.md +77 -0
  700. package/skills/stacks/mobile/ionic/SKILL.md +72 -0
  701. package/skills/stacks/mobile/nativescript/SKILL.md +71 -0
  702. package/skills/stacks/mobile/react-native/SKILL.md +75 -0
  703. package/skills/stacks/mobile/xamarin/SKILL.md +73 -0
  704. package/skills/stacks/orm/diesel/SKILL.md +72 -0
  705. package/skills/stacks/orm/django-orm/SKILL.md +58 -0
  706. package/skills/stacks/orm/drizzle/SKILL.md +67 -0
  707. package/skills/stacks/orm/gorm/SKILL.md +73 -0
  708. package/skills/stacks/orm/knex/SKILL.md +64 -0
  709. package/skills/stacks/orm/mongoose/SKILL.md +64 -0
  710. package/skills/stacks/orm/prisma/SKILL.md +64 -0
  711. package/skills/stacks/orm/sequelize/SKILL.md +65 -0
  712. package/skills/stacks/orm/sqlalchemy/SKILL.md +71 -0
  713. package/skills/stacks/orm/typeorm/SKILL.md +70 -0
  714. package/skills/stacks/queue/bullmq/SKILL.md +69 -0
  715. package/skills/stacks/queue/celery/SKILL.md +68 -0
  716. package/skills/stacks/queue/kafka/SKILL.md +66 -0
  717. package/skills/stacks/queue/nats/SKILL.md +66 -0
  718. package/skills/stacks/queue/rabbitmq/SKILL.md +64 -0
  719. package/skills/stacks/queue/redis/SKILL.md +66 -0
  720. package/skills/stacks/runtime/beam/SKILL.md +72 -0
  721. package/skills/stacks/runtime/bun/SKILL.md +80 -0
  722. package/skills/stacks/runtime/deno/SKILL.md +74 -0
  723. package/skills/stacks/runtime/dotnet/SKILL.md +64 -0
  724. package/skills/stacks/runtime/jvm/SKILL.md +66 -0
  725. package/skills/stacks/runtime/node/SKILL.md +70 -0
  726. package/skills/stacks/runtime/pypy/SKILL.md +69 -0
  727. package/skills/stacks/runtime/python3/SKILL.md +70 -0
  728. package/skills/stacks/styling/bootstrap/SKILL.md +74 -0
  729. package/skills/stacks/styling/bulma/SKILL.md +80 -0
  730. package/skills/stacks/styling/chakra-ui/SKILL.md +61 -0
  731. package/skills/stacks/styling/css-modules/SKILL.md +54 -0
  732. package/skills/stacks/styling/mui/SKILL.md +60 -0
  733. package/skills/stacks/styling/sass/SKILL.md +63 -0
  734. package/skills/stacks/styling/shadcn-ui/SKILL.md +58 -0
  735. package/skills/stacks/styling/styled-components/SKILL.md +62 -0
  736. package/skills/stacks/styling/tailwind/SKILL.md +59 -0
  737. package/skills/stacks/styling/unocss/SKILL.md +64 -0
  738. package/skills/stacks/styling/vanilla-extract/SKILL.md +64 -0
  739. package/skills/stacks/styling/vuetify/SKILL.md +89 -0
  740. package/skills/stacks/testing/cypress/SKILL.md +68 -0
  741. package/skills/stacks/testing/jasmine/SKILL.md +67 -0
  742. package/skills/stacks/testing/jest/SKILL.md +67 -0
  743. package/skills/stacks/testing/mocha/SKILL.md +71 -0
  744. package/skills/stacks/testing/playwright/SKILL.md +68 -0
  745. package/skills/stacks/testing/puppeteer/SKILL.md +70 -0
  746. package/skills/stacks/testing/selenium/SKILL.md +70 -0
  747. package/skills/stacks/testing/vitest/SKILL.md +68 -0
@@ -0,0 +1,53 @@
1
+ # Skill — product-discovery
2
+
3
+ **Trigger:** A new product, feature, or initiative is proposed and the problem space, the users, or "is this worth building" is still uncertain — i.e. before any spec or mock exists.
4
+
5
+ Produces an evidence-backed problem statement plus the user-needs and constraints that justify (or kill) the work, so the team commits to building the right thing.
6
+
7
+ ## When to use
8
+ - New work was just born (DM @ada / `/planner New Work`) and the requestor described a *desired outcome*, not a validated problem.
9
+ - There are many unknowns, stakeholders are not aligned on the goal, a new market/regulation/strategy shift triggered the request, or a chronic problem keeps recurring.
10
+ - You are tempted to jump straight to a mock or schema but cannot yet name *who* hurts, *what* they are trying to accomplish, and *what evidence* says so.
11
+
12
+ ## When NOT to use
13
+ - The problem is already validated and documented (a discovery artifact or prior spec already states the user, the job, and the evidence) — go to `idea-to-product` or `requirements-to-specs`.
14
+ - The change is a bug fix, a small refactor, or a 1:1 reproduction of an approved mock (Constella parity work) where the "right thing" is already fixed.
15
+ - The work is purely internal/technical with no end-user-facing behavior to validate.
16
+
17
+ ## Required context & inputs
18
+ - The raw request and who asked for it (the requestor / stakeholder).
19
+ - The org's `.claude/CLAUDE.md` (declared product, stack, existing personas/journeys).
20
+ - Any existing research, analytics, support tickets, or prior solutions attempted for this problem.
21
+ - Access to (or a documented stand-in for) the target users.
22
+
23
+ ## Procedure
24
+ Discovery is the **Discover → Define** half of the Double Diamond: diverge to explore the problem space, then converge on one evidenced problem statement (see Related). Run it as a bounded phase, not open-ended research.
25
+
26
+ 1. **Frame the inquiry.** Write the open questions discovery must answer ("Who experiences this? What are they trying to get done? How often / how costly? What have they tried?"). Timebox the phase explicitly.
27
+ 2. **Interview stakeholders.** Capture the business objective, constraints, success metric, and every solution already attempted (so you do not re-propose a known failure).
28
+ 3. **Run exploratory user research.** Use interviews, field/diary studies, or a short survey to learn the problem space firsthand. Talk to real users (or the closest available proxy); record verbatim pains, not feature requests.
29
+ 4. **Synthesize (converge).** Affinity-map the findings. Cluster pains into a small set of user-needs statements. Separate *observed evidence* from *assumption* — flag every assumption as a risk to validate.
30
+ 5. **Write the problem statement.** One paragraph: the user, the job/outcome they cannot achieve today, the evidence, and the cost of leaving it unsolved. It must be falsifiable.
31
+ 6. **Test the three lenses.** Confirm a solution would be **desirable** (users want it), **viable** (the org can sustain it), and **feasible** (buildable on the current stack). If any lens fails, say so.
32
+ 7. **Produce light artifacts only as needed:** persona(s), a journey map or service blueprint of the current painful experience, and a high-level concept — *not* a finished design.
33
+ 8. **Recommend go / pivot / no-go** with the evidence that drives the recommendation.
34
+
35
+ ## Output format
36
+ - A `discovery.md` (in the work item's planning folder) containing: open questions, stakeholder notes, research method + participants, synthesized user-needs, the **problem statement**, assumptions-as-risks, the desirability/viability/feasibility verdict, and a go/pivot/no-go recommendation.
37
+ - Optional supporting artifacts (persona, current-state journey map) linked from `discovery.md`.
38
+
39
+ ## Quality & validation rules
40
+ - The problem statement names a real user and a real job, and is backed by at least one piece of gathered evidence (interview quote, datum, ticket) — never by assumption alone.
41
+ - Every assumption is listed as a risk with how it would be validated. Done = no un-flagged assumptions masquerading as fact.
42
+ - Discovery answered its open questions or explicitly states which remain open and why. The phase has a recorded end; it is not still "in progress" when a recommendation is made.
43
+ - No solution detail (screens, schemas, endpoints) leaked into discovery output.
44
+
45
+ ## Failure handling
46
+ - **Cannot reach users / no evidence available:** do not fabricate findings. Record the gap, mark the related needs as unvalidated assumptions, and lower the recommendation confidence.
47
+ - **Findings contradict the original request:** reframe the problem (hand off to `problem-framing`) and report the conflict to the requestor rather than forcing the original solution.
48
+ - **Discovery keeps expanding:** stop at the timebox, ship the strongest evidenced problem statement you have, and list remaining unknowns as follow-up.
49
+ - Record blockers and the decision trail in `discovery.md` so the next phase inherits the reasoning.
50
+
51
+ ## Related
52
+ - Sources: https://www.nngroup.com/articles/discovery-phase/ ; Double Diamond — https://www.designcouncil.org.uk/our-resources/the-double-diamond/
53
+ - Skills: ../problem-framing, ../idea-to-product, ../mocks-and-screen-flows
@@ -0,0 +1,90 @@
1
+ ---
2
+ name: readme-generation
3
+ description: Generate a beautiful, non-generic project README — capsule-render banner, shields badges derived from the real stack, emoji section headers, a tech-stack table, ASCII architecture, getting-started, configuration, commands, roadmap, contributing and license. Consult whenever creating or rewriting a project README.
4
+ domain: process
5
+ category: process
6
+ tags:
7
+ - readme
8
+ - documentation
9
+ - shields
10
+ - capsule-render
11
+ - markdown
12
+ - open-source
13
+ official_sources:
14
+ - https://shields.io/
15
+ - https://github.com/Ileriayo/markdown-badges
16
+ - https://github.com/othneildrew/Best-README-Template
17
+ verified: 2026-06-16
18
+ ---
19
+
20
+ ## Overview
21
+
22
+ A README is the front door of a project. It must be **specific to THIS project** — never a generic
23
+ "Scaffolded by X" stub. This skill is the standard for authoring (or rewriting) a README that is
24
+ beautiful, complete, and immediately useful to a newcomer.
25
+
26
+ ## When to use
27
+
28
+ - A project was just scaffolded and its `README.md` is generic or thin.
29
+ - The stack, mission, or scope changed and the README is now stale.
30
+ - The operator asks to "improve the README" or "make the docs look professional".
31
+
32
+ ## Quality bar (a great README has ALL of these)
33
+
34
+ 1. **Banner** — a `capsule-render` waving header with the project name + one-line mission, colored
35
+ to the project's own palette (not a default).
36
+ 2. **Badge row** — `shields.io` badges for each defining stack item (language, runtime, framework,
37
+ database, …) using the real brand logo + color, plus license + a "built with" badge.
38
+ 3. **Table of Contents** — anchor links to every section.
39
+ 4. **Emoji section headers** (`## 🎯 About`, `## 🧩 Tech Stack`, …) — scannable and consistent.
40
+ 5. **About** — the mission as a blockquote + the concrete objective; what the project does and why.
41
+ 6. **Tech Stack table** — Layer → Technology, ideally with each tech's devicon.
42
+ 7. **Architecture** — a compact ASCII diagram filled with the REAL stack (client → server → data).
43
+ 8. **Getting Started** — real, copy-pasteable install + run commands for the actual runtime
44
+ (npm/bun/deno/pip/cargo/go), prerequisites, and the `.env` setup step.
45
+ 9. **Configuration** — a table of environment variables (name · description · required) + a note
46
+ that secrets never get hard-coded.
47
+ 10. **Commands** — dev / build / test / lint for the real toolchain.
48
+ 11. **Project Structure** — a tree of the top-level directories with one-line purposes.
49
+ 12. **Roadmap** — a checklist (done/now/next) — optionally a progress badge.
50
+ 13. **Contributing** — branch/PR/test expectations, link to code standards.
51
+ 14. **License** — name + link, matched by a badge.
52
+ 15. **Footer** — a closing `capsule-render` wave or a small credit line.
53
+
54
+ ## Procedure
55
+
56
+ 1. **Read the project facts.** Get the company/mission/objective and the chosen stack from
57
+ `.claude/CLAUDE.md` (and `workspace.stack`). Never invent a stack — use what's configured.
58
+ 2. **Pick a palette** from the project identity (deterministic from the name) for the banner +
59
+ accents, so the README has its own look.
60
+ 3. **Derive badges** from each stack value (see the Badge cookbook). One badge per defining pick.
61
+ 4. **Write each section** in the order of the Quality bar. Fill the architecture diagram and the
62
+ commands from the actual runtime — no placeholders, no lorem ipsum.
63
+ 5. **Verify**: every TOC link resolves to a real `## ` anchor; every badge/logo slug is valid;
64
+ relative links (`./DOCS`, `./LICENSE`) point at files that exist; no empty sections remain.
65
+ 6. **Write** to `README.md`. Keep it deterministic and re-renderable.
66
+
67
+ ## Badge cookbook
68
+
69
+ - **Shields static badge:**
70
+ `https://img.shields.io/badge/<LABEL>-<HEXCOLOR>?style=for-the-badge&logo=<simple-icons-slug>&logoColor=white`
71
+ - Escape the label: `-` → `--`, `_` → `__`, space → `_`.
72
+ - `<simple-icons-slug>` comes from https://simpleicons.org (e.g. `typescript`, `nodedotjs`,
73
+ `postgresql`, `react`, `tailwindcss`, `docker`). If unknown, omit `&logo=`.
74
+ - **Capsule-render banner:**
75
+ `https://capsule-render.vercel.app/api?type=waving&height=200&color=0:<HEX1>,100:<HEX2>&text=<URL-ENCODED-NAME>&fontColor=ffffff&fontSize=64&desc=<URL-ENCODED-TAGLINE>&descSize=16&descColor=ffffff`
76
+ - **Devicon (for the stack table):**
77
+ `https://cdn.jsdelivr.net/gh/devicons/devicon/icons/<slug>/<slug>-original.svg` — embed via
78
+ `<img src="…" width="18" />`. Fall back to plain text if the slug doesn't exist.
79
+
80
+ ## Anti-patterns (never do)
81
+
82
+ - A generic 3-line README (`# Name\n\nMission\n\nScaffolded by …`).
83
+ - Lorem ipsum, TODO placeholders, or empty sections.
84
+ - Badges for technologies not actually in the stack, or broken logo slugs (renders an ugly grey box).
85
+ - Hard-coded secrets, internal URLs, or real tokens anywhere in the README.
86
+ - Inventing install commands that don't match the runtime.
87
+
88
+ ## Related
89
+
90
+ - [[clean-code]] · [[git-workflow]] · [[authoring-agent-skills]]
@@ -0,0 +1,53 @@
1
+ # Skill — requirements-to-specs
2
+
3
+ **Trigger:** Requirements exist (from discovery, a slice, or stakeholder input) and must become testable specs with explicit acceptance criteria — before they are decomposed into issues or implemented.
4
+
5
+ Produces user stories with testable acceptance criteria (the "Confirmation" of each story) so every requirement has an unambiguous, verifiable definition of done.
6
+
7
+ ## When to use
8
+ - You have requirements/needs and must turn them into something a team can build *and verify*.
9
+ - A requirement is stated vaguely ("users should be able to manage their data") and needs concrete, testable conditions.
10
+ - Before `specs-to-issues`, so each issue inherits clear acceptance criteria.
11
+
12
+ ## When NOT to use
13
+ - The problem/slice is not yet validated — go to `product-discovery` / `idea-to-product`.
14
+ - Acceptance criteria already exist and are testable — go straight to `specs-to-issues`.
15
+ - It is exploratory research with no commitment to build.
16
+
17
+ ## Required context & inputs
18
+ - The validated requirements / `mvp-slice.md` and problem statement.
19
+ - The wireflow + behavior annotations (`screen-flows.md`) and `architecture.md` if they exist.
20
+ - The org's `.claude/CLAUDE.md` conventions and (for Constella) the canonical `Spec.html` PAGES `beh:`/`cmp:` parity definitions.
21
+
22
+ ## Procedure
23
+ Capture requirements lightweightly as **user stories** and confirm each with **acceptance criteria** — the conditions a story must satisfy to be complete, written as clear, concise, testable statements (Atlassian; the 3 C's = Card, Conversation, Confirmation — see Related).
24
+
25
+ 1. **Express each requirement as a user story.** Use the template: *"As a [persona], I want to [action], so that [benefit/outcome]."* Keep it user-centric and solution-light.
26
+ 2. **Hold the conversation.** Note the open questions and assumptions for each story; resolve them with the product owner. The card is a placeholder for this conversation, not a full spec.
27
+ 3. **Write acceptance criteria (the Confirmation).** For each story, list the conditions that must be true for it to be done. Prefer:
28
+ - **Scenario-oriented (Given/When/Then)** for behavior with clear pre-conditions, actions, and outcomes; and/or
29
+ - **Rule-oriented checklists** for constraints, validations, and states.
30
+ 4. **Make criteria testable.** Each criterion must be objectively pass/fail — no "fast", "intuitive", or "nice". State concrete values, states, and error cases.
31
+ 5. **Cover non-happy paths.** Add criteria for empty/error/permission/validation states surfaced in the wireflow.
32
+ 6. **Add non-functional acceptance** where relevant (performance budget, accessibility, security, and — for Constella — visual + structural parity to the baseline at the spec'd viewport).
33
+ 7. **Check sizing.** A story should be small enough to build and verify within one increment; if its criteria sprawl, split it (defer the split mechanics to `specs-to-issues`/`breaking-work-into-sprints`).
34
+ 8. **Get sign-off** on the criteria from whoever validates "done."
35
+
36
+ ## Output format
37
+ - A `specs.md` (in the work item's planning folder): one section per user story (`As a … I want to … so that …`) followed by its acceptance criteria as Given/When/Then scenarios and/or a checklist, plus any non-functional criteria and a link to the relevant wireflow node.
38
+
39
+ ## Quality & validation rules
40
+ - Every requirement maps to at least one story, and every story has at least one acceptance criterion.
41
+ - Every acceptance criterion is testable (objectively pass/fail) — a tester or automated check could confirm it without judgment calls.
42
+ - Non-happy-path and applicable non-functional criteria are present, not just the happy path.
43
+ - Criteria are solution-aware but not over-prescriptive of implementation. Done = each story's "done" is unambiguous and signed off, and (for Constella) parity criteria reference the canonical `Spec.html` behavior/component definitions.
44
+
45
+ ## Failure handling
46
+ - **A requirement cannot be made testable:** it is too vague — loop back to the product owner / `problem-framing` to sharpen it; do not write a criterion you cannot verify.
47
+ - **Criteria reveal hidden complexity:** split the story and flag scope growth to planning.
48
+ - **Conflict between stories' criteria:** record the conflict and resolve before issues are created.
49
+ - Log unresolved questions per story in `specs.md` so they block, rather than silently leak into, implementation.
50
+
51
+ ## Related
52
+ - Sources: https://www.atlassian.com/agile/project-management/user-stories ; https://www.atlassian.com/work-management/project-management/acceptance-criteria ; Given/When/Then (Gherkin) — https://cucumber.io/docs/gherkin/reference/
53
+ - Skills: ../idea-to-product, ../mocks-and-screen-flows, ../specs-to-issues, ../breaking-work-into-sprints
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: research-official-docs
3
+ description: Research trusted documentation on the web (WebSearch/WebFetch) and capture what you learn into the knowledge base — use when you need authoritative, current API/library/framework/security details before deciding or building.
4
+ domain: process
5
+ category: research
6
+ tags: [research, web, documentation, official-sources, rag, knowledge]
7
+ official_sources:
8
+ - https://developer.mozilla.org/
9
+ - https://web.dev/
10
+ verified: 2026-06-21
11
+ ---
12
+
13
+ # Research official documentation
14
+
15
+ When you are unsure about an API, a framework's idiom, a config, a version difference, or a security/best
16
+ practice for this project's stack — **look it up against trusted sources instead of guessing**, then record
17
+ what you learned so the whole team reuses it. You have the `WebSearch` and `WebFetch` tools (when web
18
+ research is enabled for this workspace).
19
+
20
+ ## When to use
21
+ - You need exact, current details (an API signature, a config option, a breaking change, a CVE/mitigation).
22
+ - A decision or implementation hinges on how a library/framework actually works in THIS stack's version.
23
+ - The Knowledge section didn't already answer it (don't re-research what the KB already holds).
24
+
25
+ Don't over-research: only when it changes a real decision or prevents a wrong implementation.
26
+
27
+ ## Source priority (most to least trusted)
28
+ 1. **Official documentation** for the exact library/framework + version (e.g. the framework's own docs site).
29
+ 2. **Official repositories** — the project's own README, examples, CHANGELOG, release notes.
30
+ 3. **Recognized technical references** — MDN, web.dev, OWASP, language/standard specs.
31
+ 4. **Community best practices** from reputable maintainers/foundations.
32
+ 5. **Trusted examples** — official samples, well-known reference implementations.
33
+ 6. **Official downloads / registries** (npm, PyPI, the vendor's releases) for versions + integrity.
34
+ 7. **Up-to-date references** — prefer the newest that matches the project's pinned versions.
35
+
36
+ Avoid: random blogs, outdated Q&A, content farms, AI-generated SEO pages, anything unversioned or that
37
+ contradicts the official source.
38
+
39
+ ## How
40
+ 1. `WebSearch` to find the **official** page for the exact topic + the project's version.
41
+ 2. `WebFetch` the official page and read the relevant part. Prefer the version the project pins.
42
+ 3. **Validate**: for anything correctness- or security-critical, confirm against the official source — never
43
+ trust a single secondary source. If sources disagree, the official one wins; note the discrepancy.
44
+
45
+ ## Capture what you learned (so it lands in the RAG and is reused)
46
+ After you confirm something useful, record it durably so the next agent doesn't re-research it. Emit:
47
+
48
+ `[[REMEMBER type=doc: <concise fact or snippet> — applies to <where in this project> (source: <official url>)]]`
49
+
50
+ Always include the **source URL** and **how it applies to this project**. Keep it factual and concise. The
51
+ system stores it in the knowledge base with its source + context, and retrieval surfaces it to the team on
52
+ later tasks — so the system's intelligence grows as it researches, validates and builds.
53
+
54
+ ## If you don't have the WebFetch tool (local model)
55
+ Ask the system to fetch + cache an official page for you: emit `[[RESEARCH: <official-doc url>]]`. The server
56
+ fetches it (only **allowlisted official-doc domains** — your stack's `official_sources` + trusted references
57
+ like MDN/web.dev/OWASP) and stores it in the knowledge base, so it's available to the team (and to you on the
58
+ next step) via retrieval. Prefer the exact official URL for your stack and version.
@@ -0,0 +1,65 @@
1
+ # Skill — review-code-perf-security
2
+
3
+ **Trigger:** A change/PR is ready for review and needs a structured assessment covering correctness/design, performance, and security before it merges.
4
+
5
+ Produces a review that decides whether the change improves overall code health, with findings categorized and each tied to an actionable fix.
6
+
7
+ ## When to use
8
+ - Reviewing a teammate's or agent's PR before merge.
9
+ - A change touches performance-sensitive paths or security-relevant code (auth, input handling, data access).
10
+ - You are the second pair of eyes required by the team's "someone other than the author" rule.
11
+
12
+ ## When NOT to use
13
+ - *Designing* security up front — that's `process/security-by-design` (pre-implementation), this is review (post-implementation).
14
+ - Authoring tests — use `process/testing-before-done`; here you only check that adequate tests exist.
15
+ - Trivial auto-formatted changes with no logic (let tooling handle style).
16
+
17
+ ## Required context & inputs
18
+ - The diff/CL and its description (what it does and why).
19
+ - The acceptance criteria the change claims to satisfy.
20
+ - The threat model and test plan for the area, if they exist (`process/security-by-design`, `process/testing-before-done`).
21
+ - The project's style guide and the org's stack conventions (from `.claude/CLAUDE.md`).
22
+
23
+ ## Procedure
24
+ 1. **Apply the standard of review (Google).** A reviewer is "someone other than the author" examining the code. The bar: **approve once the change definitely improves the overall code health of the system, even if it isn't perfect.** Do not block a healthy improvement in pursuit of perfection; do not approve something that degrades code health.
25
+ 2. **Review across the eight dimensions (Google "What to look for").** Walk the diff against each:
26
+ - **Design** — does the change belong here and integrate well with the system?
27
+ - **Functionality** — does it do what the author intends, and is that good for users/callers? Consider edge cases and concurrency.
28
+ - **Complexity** — is it as simple as possible? Reject over-engineering and code harder to read than necessary.
29
+ - **Tests** — are there correct, well-designed automated tests at the right level (cross-check `process/testing-before-done`)?
30
+ - **Naming** — are names clear and precise?
31
+ - **Comments** — do comments explain *why*, and are they necessary and clear?
32
+ - **Style** — does it follow the project's style guide? (Style nits are non-blocking; prefix them `Nit:`.)
33
+ - **Documentation** — are relevant docs updated/added/removed to match?
34
+ 3. **Review performance explicitly.** Inspect hot paths and data access: algorithmic complexity, N+1 queries, unnecessary allocations/copies, missing pagination or indexes, blocking I/O on critical paths, and unbounded growth. Flag concrete regressions, not speculative micro-optimizations — require evidence (a benchmark or a clear complexity argument) before demanding a change.
35
+ 4. **Review security (OWASP Code Review Guide).** Manual security review still has a prominent place in the SDLC — scanners alone are insufficient. Check the high-risk areas: input validation (treat all external input as hostile), authentication and session handling, authorization/access control on every server-side entry point (least privilege, deny by default), output encoding, error/exception handling that fails securely and doesn't leak internals, secrets handling, and dependency safety. Map findings to the threat model where one exists.
36
+ 5. **Categorize and phrase every finding.** Tag each as **Blocking** (must fix before merge — correctness, security, data loss, perf regression) or **Non-blocking** (`Nit:` / `Optional:` / `FYI:`). State the location, the problem, and a concrete fix. Be courteous and objective — comment on the code, not the author.
37
+ 6. **Decide.** Approve if the change improves code health and has no blocking findings; request changes if blocking findings remain; if blocked on a judgment call, escalate per team norms rather than stalling. Respond promptly so you don't become the bottleneck.
38
+
39
+ ## Output format
40
+ - A review (PR comments or a `review.md`) containing:
41
+ - A verdict: approve / request changes, with the one-line code-health justification.
42
+ - Findings grouped by category (Design/Functionality/Complexity/Tests/Naming/Comments/Style/Docs, plus Performance and Security), each as `Location — problem — fix — Blocking|Nit|Optional`.
43
+ - Inline comments anchored to the relevant diff lines where the platform supports it.
44
+
45
+ ## Quality & validation rules
46
+ - The reviewer is not the author of the code under review.
47
+ - The verdict is justified by overall code-health improvement, not perfection.
48
+ - Every dimension in step 2 was considered (even if "no issues").
49
+ - Performance findings are concrete (complexity argument or benchmark), not speculative.
50
+ - Security review covered input validation, authn, authz/least-privilege, error handling, and dependencies; findings map to the threat model where present.
51
+ - Each finding has a location, a problem, a fix, and a Blocking/Non-blocking tag; pure style is marked `Nit:` and never blocks alone.
52
+ - Tests were checked for existence and correct level, not assumed.
53
+
54
+ ## Failure handling
55
+ - **No tests in the change** → blocking finding; request tests at the appropriate pyramid level (per `process/testing-before-done`).
56
+ - **Security concern without a threat model** → flag it and recommend running `process/security-by-design` for that area before merge.
57
+ - **Author disagrees on a judgment call** → discuss with rationale; if unresolved, escalate per team norms rather than rubber-stamping or stonewalling.
58
+ - **Diff too large to review well** → request it be split into smaller, reviewable CLs; an unreviewable change can't be approved responsibly.
59
+ - **Perf concern is speculative** → ask for a benchmark rather than blocking on a guess.
60
+
61
+ ## Related
62
+ - Sources:
63
+ - Google code review (standard + what to look for) — https://google.github.io/eng-practices/review/
64
+ - OWASP Code Review Guide — https://owasp.org/www-project-code-review-guide/
65
+ - Skills: `process/security-by-design`, `process/testing-before-done`, `process/adr-technical-decisions`
@@ -0,0 +1,68 @@
1
+ # Skill — security-by-design
2
+
3
+ **Trigger:** A new system, service, feature, or significant design change is being planned and its security posture must be analyzed *before* implementation — including threat modeling and least-privilege design.
4
+
5
+ Produces a threat model (answers to the four threat-modeling questions) and a set of proactive controls and least-privilege decisions baked into the design.
6
+
7
+ ## When to use
8
+ - Designing anything that handles user data, authentication, money, or external input.
9
+ - Adding a trust boundary (new API, integration, multi-tenant feature, file upload).
10
+ - Before writing code for an architecturally significant component.
11
+
12
+ ## When NOT to use
13
+ - A cosmetic or internal-only change with no new trust boundary and no sensitive data.
14
+ - A pure security *review of already-written code* — use `process/review-code-perf-security`.
15
+ - Incident response on a live breach (this skill is preventive, not reactive).
16
+
17
+ ## Required context & inputs
18
+ - The system/feature design: the C4 Context and Container views if available (from `process/app-planning`).
19
+ - The data it handles and the data's sensitivity (PII, secrets, payment, health).
20
+ - The trust boundaries: where data crosses from less-trusted to more-trusted zones.
21
+ - The org's stack and runtime isolation model (from `.claude/CLAUDE.md`).
22
+
23
+ ## Procedure
24
+ 1. **Answer Q1 — "What are we working on?"** Document the system in scope: its components, data flows, users, dependencies, assumptions, and — critically — its **trust boundaries** (every point where data or control crosses a privilege level). A data-flow diagram or the C4 Container view is the input here.
25
+ 2. **Answer Q2 — "What can go wrong?"** Systematically enumerate threats against each element and data flow. Use a structured methodology (STRIDE is the common default: Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege; OWASP is methodology-neutral so PASTA/LINDDUN/attack trees are also valid). Capture misuse cases and design assumptions that, if false, become vulnerabilities.
26
+ 3. **Answer Q3 — "What are we going to do about it?"** For each credible threat, decide a response: mitigate, eliminate, transfer, or accept. Map mitigations to the **OWASP Top 10 Proactive Controls (2024)**, designing each relevant control into the system from the start:
27
+ - **C1 Implement Access Control** — enforce least privilege; deny by default; check authorization on every request server-side.
28
+ - **C2 Use Cryptography to Protect Data** — protect data in transit and at rest.
29
+ - **C3 Validate all Input & Handle Exceptions** — treat all external input as hostile; fail securely.
30
+ - **C4 Address Security from the Start** — this skill itself.
31
+ - **C5 Secure By Default Configurations.**
32
+ - **C6 Keep your Components Secure** (dependencies/SCA).
33
+ - **C7 Secure Digital Identities** (authentication, session, MFA).
34
+ - **C8 Leverage Browser Security Features.**
35
+ - **C9 Implement Security Logging and Monitoring.**
36
+ - **C10 Stop Server Side Request Forgery.**
37
+ 4. **Apply least privilege concretely (C1).** For every actor, service account, token, and component, grant the minimum permissions needed and nothing more. Default to deny. Scope credentials to the narrowest resource and lifetime. Honor the runtime's isolation model (e.g. the org's FS jail / per-org runtime root) — do not design around it.
38
+ 5. **Answer Q4 — "Did we do a good job?"** Review the model for completeness against the data flows, record every decision and accepted risk with its rationale, and define follow-up tests that prove the mitigations work (hand these to `process/testing-before-done`).
39
+ 6. **Make it continuous.** Threat modeling is applied throughout development at practical granularity — revisit the model when the design changes, a new trust boundary appears, or assumptions from Q1 are invalidated.
40
+
41
+ ## Output format
42
+ - A `threat-model.md` in the workspace structured around the four questions:
43
+ - Q1: scope, data-flow/Container diagram, trust boundaries, assumptions.
44
+ - Q2: threat list (per element, with the methodology used, e.g. STRIDE category).
45
+ - Q3: mitigations mapped to Proactive Controls C1-C10, with each threat → response.
46
+ - Q4: residual/accepted risks (with rationale), and the security tests to be written.
47
+ - Least-privilege matrix: `Actor/Component | Resource | Permission granted | Justification`.
48
+
49
+ ## Quality & validation rules
50
+ - All four questions are explicitly answered; a model missing Q3 or Q4 is incomplete.
51
+ - Every trust boundary from Q1 has at least one corresponding threat considered in Q2.
52
+ - Every credible threat in Q2 has an explicit response in Q3 (mitigate/eliminate/transfer/accept) — none left undecided.
53
+ - Access control (C1) is enforced server-side and defaults to deny; no permission is granted without a justification in the matrix.
54
+ - Sensitive data is covered by C2 (crypto in transit and at rest).
55
+ - Accepted risks are recorded with rationale, not silently dropped.
56
+ - Mitigations produce concrete test cases handed to the testing process.
57
+
58
+ ## Failure handling
59
+ - **A threat has no feasible mitigation** → record it as an accepted risk with explicit rationale and sign-off, and add monitoring (C9) to detect exploitation.
60
+ - **Trust boundaries are unclear** → stop and clarify the data flows with the team; you cannot model threats over an undefined boundary.
61
+ - **Design conflicts with least privilege** → treat that as a finding; redesign to scope down permissions rather than widening them for convenience.
62
+ - **Model goes stale after a design change** → re-run Q1-Q4 for the changed area; an outdated threat model is a false sense of security.
63
+
64
+ ## Related
65
+ - Sources:
66
+ - Threat modeling (four questions, STRIDE) — https://owasp.org/www-project-threat-modeling/
67
+ - Proactive Controls (C1-C10, 2024) — https://owasp.org/www-project-proactive-controls/
68
+ - Skills: `process/app-planning`, `process/testing-before-done`, `process/review-code-perf-security`
@@ -0,0 +1,53 @@
1
+ # Skill — specs-to-issues
2
+
3
+ **Trigger:** Specs with acceptance criteria exist and must be decomposed into well-formed, trackable tracker issues — before work is scheduled or started.
4
+
5
+ Produces a set of independent, vertically-sliced issues (each with a clear title, context, acceptance criteria, and metadata) that the team can pick up, build, and close.
6
+
7
+ ## When to use
8
+ - Specs/user stories are ready and need to become units of work in the tracker (GitHub Issues, Jira).
9
+ - A large story (epic) must be broken into stories small enough to deliver.
10
+ - Before sprint planning, so the backlog contains well-formed, estimable items.
11
+
12
+ ## When NOT to use
13
+ - The specs/acceptance criteria do not yet exist or are untestable — go to `requirements-to-specs`.
14
+ - Slicing into time-boxed delivery increments — that is `breaking-work-into-sprints` (this skill produces the items; that skill schedules them).
15
+ - Trivial one-line fixes where an issue would be ceremony (still record them, but skip decomposition).
16
+
17
+ ## Required context & inputs
18
+ - The `specs.md` (stories + acceptance criteria) and any `architecture.md` / `screen-flows.md`.
19
+ - The tracker in use and the org's issue templates/labels/milestones conventions (from `.claude/CLAUDE.md` or the repo).
20
+ - Existing related issues (to avoid duplicates and to set dependencies).
21
+
22
+ ## Procedure
23
+ Issues track "bug reports, new features and ideas, and anything else you need to write down" (GitHub). Decompose specs into the **story → epic → initiative** hierarchy where needed: stories are small sprint-sized items, epics group related stories, initiatives group epics (Atlassian — see Related).
24
+
25
+ 1. **Classify the work.** Decide whether each spec is a single story, or an **epic** to be split into stories. Group large bodies of epics under an **initiative** if the org tracks that level.
26
+ 2. **Slice vertically.** Each issue should deliver a thin end-to-end piece of user-visible value (or a deployable internal capability), not a horizontal layer ("all the CSS"). Aim for INVEST-style items: independent, negotiable, valuable, estimable, small, testable.
27
+ 3. **Write a clear title.** Imperative and specific ("Add wishlist save button to product page"), scannable in a list.
28
+ 4. **Write the body** from a template: **Context/why** (link the story + problem), **Acceptance criteria** (copy the testable criteria from `specs.md`, as a checklist), **Out of scope**, and **Links** (wireflow node, ADR, related issues).
29
+ 5. **Add a task list** for multi-step issues so progress is trackable; convert items to **sub-issues** when they are independently workable.
30
+ 6. **Set metadata.** Assign type/labels, a milestone, and project/board placement; declare **dependencies/blocking** relationships between issues.
31
+ 7. **Use issue templates/forms** so every issue carries the required fields and contributors open meaningful issues.
32
+ 8. **De-duplicate and link.** Search existing issues; link or close duplicates; reference related/blocking issues so the graph is navigable.
33
+ 9. **Confirm each issue is estimable and small** enough to fit one increment; if not, split again.
34
+
35
+ ## Output format
36
+ - One tracker issue per unit of work, each with: imperative title; body containing context, acceptance-criteria checklist, out-of-scope, and links; labels/type, milestone, project, and dependency links. Epics link to their child stories; initiatives link to their epics.
37
+ - A short `issues.md` (in the planning folder) listing the created issue IDs/links and the epic→story map, for traceability back to `specs.md`.
38
+
39
+ ## Quality & validation rules
40
+ - Every story in `specs.md` is represented by at least one issue; no acceptance criterion is dropped.
41
+ - Each issue is independently understandable (context + criteria + links) without reading external chat, and is small/estimable enough for one increment.
42
+ - Slices are vertical (deliver value), not horizontal (layers). Dependencies are explicit, not implicit.
43
+ - Titles are imperative and specific; templates/required fields are populated. Done = a team member could pick any issue and know exactly what "done" means.
44
+
45
+ ## Failure handling
46
+ - **An issue is too big to estimate:** split it; if it cannot be split without losing value, mark it an epic and decompose.
47
+ - **Acceptance criteria missing or untestable:** stop and return to `requirements-to-specs`; do not create an unverifiable issue.
48
+ - **Duplicate found:** link/close rather than create; reconcile scope.
49
+ - Record the spec→issue mapping in `issues.md` so traceability survives if issues are reorganized.
50
+
51
+ ## Related
52
+ - Sources: https://docs.github.com/en/issues/tracking-your-work-with-issues/about-issues ; https://www.atlassian.com/agile/project-management/user-stories ; https://www.atlassian.com/agile/project-management/epics-stories-themes
53
+ - Skills: ../requirements-to-specs, ../breaking-work-into-sprints, ../architecture-before-code
@@ -0,0 +1,61 @@
1
+ # Skill — testing-before-done
2
+
3
+ **Trigger:** A feature or change is being planned, and "done" must be defined as "tested" — the test strategy is decided *before* implementation, not after.
4
+
5
+ Produces a test plan shaped by the Test Pyramid (the right tests at the right levels) and a definition of done that gates merge on those tests passing.
6
+
7
+ ## When to use
8
+ - Starting any non-trivial feature where correctness matters.
9
+ - Defining or revising what "done" means for a team or workstream.
10
+ - A bug was found by a high-level/manual test and you need to lock it down at the right level.
11
+
12
+ ## When NOT to use
13
+ - A throwaway spike or prototype explicitly marked as not production-bound.
14
+ - The change is purely a config/copy tweak with no behavior change (still verify, but a full pyramid is overkill).
15
+ - Security-specific test design — derive those cases from `process/security-by-design` and feed them in here.
16
+
17
+ ## Required context & inputs
18
+ - The feature's acceptance criteria / user stories (from `process/app-planning`).
19
+ - The architecture: which units, services/APIs, and UI flows exist (C4 Container/Component views).
20
+ - The org's stack and existing test tooling/runner (from `.claude/CLAUDE.md` and the repo).
21
+ - Any security mitigations that need proof (from `process/security-by-design`).
22
+
23
+ ## Procedure
24
+ 1. **Define "done" before coding.** State explicitly: a change is done only when its tests exist, run in CI, and pass. Write this into the plan so it gates merge — testing is not an afterthought phase.
25
+ 2. **Shape the suite as a pyramid (Fowler/Cohn).** Plan many fast, cheap **unit tests** at the base; fewer **service/integration tests** in the middle (exercise the API/service layer below the UI — "subcutaneous" tests); and very few **UI/end-to-end tests** at the top. The rule: many more low-level unit tests than broad GUI tests.
26
+ 3. **Assign each acceptance criterion to a level.** For each behavior, choose the *lowest* level that can meaningfully test it:
27
+ - Pure logic / a single function or class → unit test.
28
+ - Interaction across components or a service contract → integration/service test.
29
+ - A full critical user journey end-to-end → one UI/E2E test (reserve these for the handful of journeys that must never break).
30
+ 4. **Justify every high-level test.** UI/E2E tests are brittle, expensive to write, slow to run, and prone to non-determinism. Only add one when the journey can't be covered lower down. If you're tempted to add many, that's a signal to push coverage down the pyramid.
31
+ 5. **Set the bug-fix protocol.** When a high-level or manual test exposes a bug, first replicate it with a **unit test**, then fix it. High-level tests are a second line of defense — they catch gaps the unit tests missed, and each gap becomes a new low-level test.
32
+ 6. **Plan for determinism and speed.** Identify flaky risk (timing, network, shared state) and design isolation/mocks so the base of the pyramid stays fast and trustworthy — a non-deterministic suite erodes trust and gets ignored.
33
+ 7. **Write tests alongside (or before) the code.** Tests are part of the deliverable, authored with the implementation, not bolted on after. They run in CI on every change.
34
+
35
+ ## Output format
36
+ - A `test-plan.md` (or the plan's testing section) in the workspace containing:
37
+ - The definition of done (tests exist + pass in CI gates merge).
38
+ - A coverage table: `Acceptance criterion | Test level | Why this level | Test name/file`.
39
+ - The pyramid shape target (rough ratio of unit : integration : E2E for this feature).
40
+ - The list of critical journeys getting an E2E test (kept short, each justified).
41
+ - Security-derived test cases from `process/security-by-design`, slotted into the table at their level.
42
+
43
+ ## Quality & validation rules
44
+ - "Done = tested and green in CI" is written down and gates merge.
45
+ - Every acceptance criterion maps to at least one planned test.
46
+ - The suite is bottom-heavy: unit tests outnumber integration tests, which outnumber E2E tests.
47
+ - Each behavior is tested at the lowest level that can verify it; nothing pushed to E2E that a unit test could cover.
48
+ - Every E2E/UI test has a one-line justification for why it can't live lower.
49
+ - The bug-fix protocol (replicate with a unit test, then fix) is part of the team's definition.
50
+ - Tests are deterministic — known flaky vectors are isolated or mocked.
51
+
52
+ ## Failure handling
53
+ - **A behavior seems testable only via the UI** → re-examine the architecture for a service/API seam (subcutaneous test) before accepting an E2E test.
54
+ - **The suite is slow/flaky** → move coverage down the pyramid and isolate non-determinism; do not paper over flakiness with retries as a permanent fix.
55
+ - **A bug recurs** → it lacked a low-level test; add the unit test that reproduces it before re-fixing.
56
+ - **Pressure to ship untested** → that change is not done by definition; record the gap as explicit, accepted test debt with an owner rather than silently calling it complete.
57
+
58
+ ## Related
59
+ - Sources:
60
+ - Test Pyramid — https://martinfowler.com/bliki/TestPyramid.html
61
+ - Skills: `process/app-planning`, `process/security-by-design`, `process/review-code-perf-security`
@@ -0,0 +1,63 @@
1
+ # Skill — validating-ux-navigation
2
+
3
+ **Trigger:** A new app, feature area, or redesign needs its information architecture (IA), navigation, and user flows validated *before* the UI is finalized in code.
4
+
5
+ Produces a validated IA + navigation design backed by evidence from a structured usability test, with a prioritized list of problems found.
6
+
7
+ ## When to use
8
+ - Designing or restructuring how content/features are organized and how users move between them.
9
+ - A flow exists but users get lost, can't find features, or abandon a task.
10
+ - Before committing navigation markup, to avoid costly structural rework later.
11
+
12
+ ## When NOT to use
13
+ - Pure visual styling with no structural/flow change (use design/component skills instead).
14
+ - The information architecture is already validated and only copy is changing.
15
+ - You cannot recruit even a handful of representative users and the change is low-risk — at minimum do an expert heuristic review instead, and say so.
16
+
17
+ ## Required context & inputs
18
+ - The content inventory: every page/screen/feature the product offers.
19
+ - The primary user roles and their top tasks (what they come to accomplish).
20
+ - The current or proposed navigation components (global nav, breadcrumbs, filters, footer).
21
+ - Access to 5+ representative users per distinct user group for testing.
22
+
23
+ ## Procedure
24
+ 1. **Separate IA from navigation (NN/g distinction).** Treat them as two layers: **IA** is the underlying organization, structure, and naming of content (lives in spreadsheets/diagrams, invisible to users); **navigation** is the visible UI (global nav, breadcrumbs, filters, footers) — "the tip of the iceberg" sitting on top of the IA. Validate the IA *first*; navigation design follows from it.
25
+ 2. **Build the IA.** Run the four NN/g IA activities:
26
+ - **Content inventory** — locate and list all existing content/features.
27
+ - **Content audit** — judge each item's usefulness, accuracy, and effectiveness; drop dead weight.
28
+ - **Information grouping** — group content by user-centered relationships (how users think, not the org chart).
29
+ - **Taxonomy development** — define standardized, user-tested labels and naming.
30
+ 3. **Map the user flows.** For each top task, lay out the step-by-step path through the IA the user must take. Flag steps with ambiguous labels, dead ends, or excessive depth.
31
+ 4. **Design navigation from the IA.** Choose navigation components that expose the grouping from step 2. Navigation must reflect the IA, not fight it.
32
+ 5. **Plan the usability test (Day 1).** Pick 3-5 representative tasks phrased as goals ("find and X"), not instructions. Recruit ~5 participants per user group — five participants uncover the majority of the most common problems. Decide qualitative (discover problems) vs. quantitative (benchmark success rate / time-on-task); for pre-launch validation, run qualitative.
33
+ 6. **Conduct the test (Day 2).** A facilitator gives one task at a time and observes behavior and listens for feedback. The facilitator must **not** lead, hint, or rescue the participant — stay neutral so the data stays valid; ask follow-up questions only to clarify, after the attempt.
34
+ 7. **Analyze and recommend (Day 3).** Cluster observed problems by where they occur in the IA/flow, rank by severity (how many users hit it × how badly it blocks the task), and propose specific IA/navigation/label fixes.
35
+ 8. **Iterate.** Revise the IA or navigation for high-severity issues and, for risky changes, re-test with a fresh set of ~5 users.
36
+
37
+ ## Output format
38
+ - A `ux-validation.md` in the workspace containing:
39
+ - The IA artifact: content inventory + the grouped taxonomy (sitemap/tree).
40
+ - Flow diagrams for the top tasks.
41
+ - The test plan: tasks, participant profile and count, qual/quant choice.
42
+ - Findings table: `Problem | Location in IA/flow | Users affected | Severity | Recommended fix`.
43
+ - Navigation spec derived from the validated IA (component list + labels).
44
+
45
+ ## Quality & validation rules
46
+ - IA is defined and audited *before* navigation is finalized (step 1 ordering is mandatory).
47
+ - Every navigation label traces to a taxonomy term from the IA — no orphan labels.
48
+ - The test used ≥5 participants per user group and tasks phrased as goals, not click-by-click instructions.
49
+ - The facilitator did not lead participants; findings reflect observed behavior, not the team's opinions.
50
+ - Every reported problem has a severity and a concrete fix; "users were confused" with no location/fix is not a finding.
51
+ - High-severity fixes are re-tested before being declared resolved.
52
+
53
+ ## Failure handling
54
+ - **Can't recruit 5 users** → run with the most you can get plus an expert heuristic review, and label confidence as reduced; do not present thin results as definitive.
55
+ - **Test reveals the IA grouping is wrong** → return to step 2 (regroup), do not patch with navigation tweaks over a broken structure.
56
+ - **Facilitator bias suspected** → discard tainted sessions and re-run with neutral facilitation rather than reporting compromised data.
57
+ - **No clear top tasks** → stop and define them with stakeholders; you cannot validate flows for undefined goals.
58
+
59
+ ## Related
60
+ - Sources:
61
+ - IA vs. navigation — https://www.nngroup.com/articles/ia-vs-navigation/
62
+ - Usability testing 101 — https://www.nngroup.com/articles/usability-testing-101/
63
+ - Skills: `process/app-planning`