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,65 @@
1
+ ---
2
+ name: progressive-disclosure
3
+ description: Keep SKILL.md short and push depth into on-demand reference files so agents load only what each task needs. Consult when a skill grows large.
4
+ domain: meta
5
+ category: meta
6
+ tags: [progressive-disclosure, agent-skills, context-window, reference-files, token-budget]
7
+ official_sources:
8
+ - https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices
9
+ - https://github.com/anthropics/skills
10
+ verified: 2026-06-16
11
+ ---
12
+
13
+ # Progressive Disclosure
14
+
15
+ ## Overview
16
+ Progressive disclosure is the design principle behind Agent Skills: an agent loads information in stages as a task calls for it, rather than consuming the whole skill up front. A short `SKILL.md` acts like a table of contents that points to deeper reference files, scripts, and assets, which are read or executed only on demand. Read this when a skill is getting long, its body exceeds the recommended budget, or you want bundled reference material to stay out of context until needed.
17
+
18
+ ## Official sources
19
+ - Docs (best practices, "Progressive disclosure patterns"): https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices
20
+ - Docs (overview, "How Skills work"): https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview
21
+ - Open spec ("Progressive disclosure"): https://agentskills.io/specification
22
+ - Repo (official examples): https://github.com/anthropics/skills
23
+
24
+ ## Core concepts
25
+ - **Three loading levels.** Level 1: metadata (`name` + `description`, ~100 tokens) loaded at startup for every skill. Level 2: the `SKILL.md` body, loaded when the skill triggers. Level 3: bundled files in `scripts/`, `references/`, `assets/`, loaded only when actually accessed.
26
+ - **The context window is a shared public good.** Once `SKILL.md` is loaded, every token competes with conversation history and other skills' metadata — conciseness still matters even though bundled files are free until read (best-practices, "Concise is key").
27
+ - **Bundled content has no context penalty until used.** A skill can ship comprehensive API docs, large datasets, or many examples; files consume zero tokens until the agent reads them (overview, "Level 3").
28
+ - **Scripts execute without entering context.** Running `validate.py` via bash brings only its output into context, not the source — cheaper and more reliable than regenerating equivalent code.
29
+ - **`SKILL.md` is a navigation hub.** Treat it like an onboarding guide's table of contents that links to the right detailed file for each branch of the task.
30
+
31
+ ## Best practices
32
+ - Keep the `SKILL.md` body under 500 lines; split content into separate files as you approach the limit (best-practices, "Token budgets").
33
+ - Keep file references one level deep from `SKILL.md` so the agent reads complete files instead of partial `head -100` previews (best-practices, "Avoid deeply nested references").
34
+ - Organize reference files by domain (`reference/finance.md`, `reference/sales.md`) so a query about one domain never pulls in unrelated context (best-practices, "Pattern 2: Domain-specific organization").
35
+ - Add a table of contents to any reference file longer than ~100 lines so the agent can see its full scope even when previewing (best-practices, "Structure longer reference files").
36
+ - Use forward slashes in all paths so references resolve across platforms (best-practices, "Anti-patterns to avoid").
37
+
38
+ ## Common pitfalls
39
+ - Cramming every detail into `SKILL.md` → move advanced/edge-case material into linked reference files that load only when relevant.
40
+ - Deeply nested reference chains (`SKILL.md` → `advanced.md` → `details.md`) → the agent may read referenced-from-referenced files only partially; keep all links one level deep from `SKILL.md`.
41
+ - Over-explaining things the agent already knows → trim it; padding `SKILL.md` raises token cost without adding signal (best-practices, "Default assumption: Claude is already very smart").
42
+
43
+ ## Examples
44
+ ```markdown
45
+ # BigQuery Data Analysis
46
+
47
+ ## Available datasets
48
+ - Finance: revenue, ARR, billing — see reference/finance.md
49
+ - Sales: opportunities, pipeline — see reference/sales.md
50
+ - Product: API usage, adoption — see reference/product.md
51
+
52
+ ## Quick search
53
+ Find metrics with grep:
54
+
55
+ grep -i "revenue" reference/finance.md
56
+ ```
57
+ The body stays tiny; `reference/finance.md` is read only when a query is about finance, leaving the other reference files at zero token cost.
58
+
59
+ ## Further reading
60
+ - Overview, "Three types of Skill content, three levels of loading": https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview
61
+ - Best-practices authoring checklist: https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices
62
+
63
+ ## Related skills
64
+ - ../authoring-agent-skills — the overall skill folder + SKILL.md format
65
+ - ../skill-frontmatter-spec — the metadata fields loaded at Level 1
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: skill-frontmatter-spec
3
+ description: SKILL.md YAML frontmatter fields (name, description, license, compatibility, metadata, allowed-tools) and constraints. Consult when writing frontmatter.
4
+ domain: meta
5
+ category: meta
6
+ tags: [frontmatter, yaml, agent-skills, skill-md, spec]
7
+ official_sources:
8
+ - https://agentskills.io/specification
9
+ - https://github.com/agentskills/agentskills
10
+ verified: 2026-06-16
11
+ ---
12
+
13
+ # SKILL.md Frontmatter Spec
14
+
15
+ ## Overview
16
+ Every Agent Skill begins with YAML frontmatter at the top of its `SKILL.md`. Two fields are required (`name`, `description`); the open Agent Skills specification also defines optional fields (`license`, `compatibility`, `metadata`, `allowed-tools`) and clients may add their own (unknown fields are ignored for forward compatibility). Read this when authoring frontmatter, debugging why a skill fails validation, or aligning frontmatter conventions across repos like anthropics/skills, vercel-labs/agent-skills, and remotion-dev/skills.
17
+
18
+ ## Official sources
19
+ - Spec (full frontmatter table + per-field rules): https://agentskills.io/specification
20
+ - Spec repo + `skills-ref` validator: https://github.com/agentskills/agentskills
21
+ - Anthropic field requirements (overview, "Skill structure"): https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview
22
+ - Example skills using this frontmatter: https://github.com/anthropics/skills · https://github.com/vercel-labs/agent-skills · https://github.com/remotion-dev/skills
23
+
24
+ ## Core concepts
25
+ - **`name` (required).** 1–64 chars, lowercase letters/numbers/hyphens only (`^[a-z0-9]+(-[a-z0-9]+)*$`), no leading/trailing or consecutive hyphens, and must match the parent directory name. Anthropic's docs additionally forbid the reserved words `anthropic` and `claude` and any XML tags.
26
+ - **`description` (required).** 1–1024 chars, non-empty, no XML tags; should state what the skill does and when to use it, with discovery keywords. It is loaded into the system prompt at startup, so it drives skill selection.
27
+ - **`license` (optional).** A license name or a reference to a bundled license file; keep it short (spec, `license` field).
28
+ - **`compatibility` (optional).** Up to 500 chars describing environment needs (intended product, required system packages, network access). Most skills omit it (spec, `compatibility` field).
29
+ - **`metadata` (optional).** An arbitrary string-to-string map for client-specific data such as `author` and `version`; use reasonably unique keys to avoid conflicts (spec, `metadata` field).
30
+ - **`allowed-tools` (optional, experimental).** A space-separated string of pre-approved tools, e.g. `Bash(git:*) Bash(jq:*) Read`; support varies by agent implementation (spec, `allowed-tools` field).
31
+
32
+ ## Best practices
33
+ - Make the `name` exactly match the skill's directory name — the spec requires it and validators enforce it.
34
+ - Validate frontmatter with the reference tool before shipping: `skills-ref validate ./my-skill` (spec, "Validation").
35
+ - Quote ambiguous YAML scalars (e.g. `version: "1.0"`) so they are not parsed as numbers (spec `metadata` example uses quotes).
36
+ - Treat the `description` as a discovery surface: front-load distinctive keywords and the triggering context, since it is the metadata loaded for every skill at startup (Anthropic best-practices, "Writing effective descriptions").
37
+ - Only add `compatibility` when the skill genuinely has environment requirements; leaving it off keeps metadata lean (spec note: "Most skills do not need the `compatibility` field").
38
+
39
+ ## Common pitfalls
40
+ - Uppercase, leading/trailing, or consecutive hyphens in `name` (`PDF-Processing`, `-pdf`, `pdf--processing`) → use lowercase, single-hyphen-separated tokens matching the regex.
41
+ - `name` that differs from the folder name → rename one so they match, or validation fails.
42
+ - Putting custom keys at the top level of the frontmatter → nest non-spec data under `metadata` so it is treated as client metadata rather than an unknown/ignored field.
43
+ - Embedding XML tags or exceeding length limits in `name`/`description` → both fields reject XML tags, and they cap at 64 and 1024 characters respectively.
44
+
45
+ ## Examples
46
+ ```yaml
47
+ ---
48
+ name: pdf-processing
49
+ description: Extract PDF text, fill forms, merge files. Use when handling PDFs, forms, or document extraction.
50
+ license: Apache-2.0
51
+ compatibility: Requires Python 3.14+ and uv
52
+ metadata:
53
+ author: example-org
54
+ version: "1.0"
55
+ allowed-tools: Bash(git:*) Read
56
+ ---
57
+ ```
58
+
59
+ ## Further reading
60
+ - Full specification with valid/invalid examples per field: https://agentskills.io/specification
61
+ - Anthropic frontmatter requirements + description guidance: https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices
62
+
63
+ ## Related skills
64
+ - ../authoring-agent-skills — the skill folder + SKILL.md format the frontmatter belongs to
65
+ - ../progressive-disclosure — how the frontmatter metadata enables on-demand loading
@@ -0,0 +1,59 @@
1
+ # Skill — adr-technical-decisions
2
+
3
+ **Trigger:** An architecturally significant technical decision is being made (stack choice, data model, integration approach, cross-cutting pattern) and must be recorded as an Architecture Decision Record before or as it is committed.
4
+
5
+ Produces a single immutable ADR file capturing the decision, its context, and its consequences, added to the project's decision log.
6
+
7
+ ## When to use
8
+ - Choosing a load-bearing technology, library, protocol, or pattern.
9
+ - Making a trade-off whose rationale future maintainers will need (and would otherwise guess at).
10
+ - Reversing or superseding an earlier architectural decision.
11
+
12
+ ## When NOT to use
13
+ - A reversible, low-impact implementation detail with no real trade-off (just do it; a comment suffices).
14
+ - The decision isn't made yet and you're still prioritizing options — use `process/prioritization-moscow-rice` first, then record the outcome here.
15
+ - General planning (use `process/app-planning`); an ADR records *one* decision, not a whole plan.
16
+
17
+ ## Required context & inputs
18
+ - The decision being made and the forces/constraints driving it.
19
+ - The alternatives considered and why they were or weren't chosen.
20
+ - The existing ADR directory and the next sequence number (check `docs/adr/` or the org's convention).
21
+ - The org's stack and constraints (from `.claude/CLAUDE.md`).
22
+
23
+ ## Procedure
24
+ 1. **Confirm it's architecturally significant.** An ADR documents "a justified design choice that addresses a functional or non-functional requirement that is architecturally significant." If the choice is trivial or easily reversed, don't spend an ADR on it.
25
+ 2. **Locate the decision log.** Find the ADR directory (commonly `docs/adr/` or `doc/architecture/decisions/`). All ADRs together form the project's **decision log** — the chronological record of architectural choices. If none exists, create the directory and start the sequence at `0001`.
26
+ 3. **Assign a sequential number and title.** Number ADRs monotonically (`0001`, `0002`, …) so order is preserved. Title it as a short noun phrase naming the decision (e.g. "0007 — Use Drizzle for the ORM").
27
+ 4. **Write the ADR using the standard sections** (Nygard format):
28
+ - **Title** — the numbered short phrase.
29
+ - **Status** — one of: proposed, accepted, deprecated, or superseded by ADR-NNNN.
30
+ - **Context** — the forces at play: the problem, constraints, and assumptions that make this decision necessary. State alternatives considered.
31
+ - **Decision** — the choice made, stated in active voice ("We will …").
32
+ - **Consequences** — what becomes easier *and* harder as a result; the trade-offs accepted, including downsides.
33
+ 5. **Keep ADRs immutable.** Once accepted, do not edit the substance of an ADR. If the decision changes, write a **new** ADR and mark the old one `superseded by ADR-NNNN`; mark the new one `supersedes ADR-MMMM`. The log preserves history — never rewrite it.
34
+ 6. **Set the status correctly.** Use `proposed` while under discussion, flip to `accepted` when committed. Reflect lifecycle changes via new ADRs, not edits.
35
+ 7. **Link from the work.** Reference the ADR from the plan, the relevant C4 view, and ideally the code/PR that implements it, so the rationale is discoverable from the artifact.
36
+
37
+ ## Output format
38
+ - A markdown file `docs/adr/NNNN-<slug>.md` (4-digit number) in the project, containing exactly the sections: Title, Status, Context, Decision, Consequences.
39
+ - The decision log is the ordered set of these files; optionally an index/README listing them with status.
40
+
41
+ ## Quality & validation rules
42
+ - The file has all five sections; an ADR missing Context or Consequences is incomplete.
43
+ - Status is one of the valid lifecycle values and accurate.
44
+ - Context names the alternatives considered and the constraints — not just the winner.
45
+ - Consequences honestly state the downsides/trade-offs, not only benefits.
46
+ - The number is unique and sequential; no gaps reused, no duplicates.
47
+ - Superseded decisions are linked in both directions (old ↔ new); accepted ADRs are never edited in substance.
48
+
49
+ ## Failure handling
50
+ - **Decision later proves wrong** → write a new ADR that supersedes it; never delete or silently edit the original — the wrong turn is part of the record.
51
+ - **Can't articulate consequences** → the decision may be premature; gather more context or spike before recording it as accepted.
52
+ - **No ADR directory or convention** → create `docs/adr/` and seed it with `0001` (e.g. "Record architecture decisions in ADRs") to establish the practice.
53
+ - **Two ADRs grabbed the same number** → renumber the later one and update any links; numbers must stay unique.
54
+
55
+ ## Related
56
+ - Sources:
57
+ - ADR home / definition — https://adr.github.io/
58
+ - ADR templates & examples — https://github.com/joelparkerhenderson/architecture-decision-record
59
+ - Skills: `process/app-planning`, `process/prioritization-moscow-rice`
@@ -0,0 +1,63 @@
1
+ # Skill — app-planning
2
+
3
+ **Trigger:** A new app, service, or major feature area is being started and needs an end-to-end plan — scope, architecture, and milestones — *before* code is written.
4
+
5
+ Produces a planning document that defines what is being built (scope), how it is structured (C4 architecture views), and how it will be delivered (agile backlog and milestones).
6
+
7
+ ## When to use
8
+ - Kicking off a greenfield app or a substantial new module.
9
+ - The work is large enough to span multiple sprints and needs a shared mental model across the team/agents.
10
+ - Stakeholders need to agree on scope and sequence before implementation starts.
11
+
12
+ ## When NOT to use
13
+ - A bounded change to existing code with an obvious shape (just implement it).
14
+ - The plan exists and only one technical decision is open — use `process/adr-technical-decisions`.
15
+ - You only need a priority order for an existing backlog — use `process/prioritization-moscow-rice`.
16
+
17
+ ## When NOT to use (continued)
18
+ - UX/IA validation of an existing flow — use `process/validating-ux-navigation`.
19
+
20
+ ## Required context & inputs
21
+ - The product goal and target users (who, and what outcome).
22
+ - The org's declared stack, runtime layout, and constraints (from `.claude/CLAUDE.md`).
23
+ - Known external systems the app must integrate with (auth, payment, data sources).
24
+ - Any non-functional requirements: scale, latency, compliance, offline support.
25
+
26
+ ## Procedure
27
+ 1. **State scope as outcomes.** Write the problem statement and 3-7 concrete user outcomes. Explicitly list what is *out* of scope for v1 to prevent creep (mirror the MoSCoW "Won't have this time" bucket).
28
+ 2. **Identify users and external systems.** Enumerate the people/roles (actors) and the external software systems the app talks to. This is the raw material for the C4 System Context view.
29
+ 3. **Draw the C4 System Context view (Level 1).** One diagram: your software system in the middle, the people and external systems around it, and the relationships between them. This is the "big picture" — keep it free of technology detail.
30
+ 4. **Draw the C4 Container view (Level 2).** Decompose your system into containers — separately runnable/deployable units (web app, API, database, worker, SPA, mobile app). Show the technology choice per container and how containers communicate. This is where the stack is committed.
31
+ 5. **Draw the C4 Component view (Level 3) for the risky containers only.** For each container with non-trivial internal structure, show its major components and responsibilities. Skip containers that are simple CRUD. (Level 4 / Code is generated from the IDE — do not hand-draw it.)
32
+ 6. **Define the agile work hierarchy.** Translate scope into the Atlassian hierarchy: group outcomes into **epics** (large bodies of work toward one goal), break each epic into **user stories** sized to fit in a single sprint. Stories that would take weeks become their own epic. The set of epics/stories is the product backlog.
33
+ 7. **Prioritize the backlog.** Apply `process/prioritization-moscow-rice` to order stories and define the v1 cut line.
34
+ 8. **Sequence into milestones.** Group stories into milestones/iterations along a roadmap, each milestone delivering a coherent, demonstrable increment. Sequence by dependency and priority, front-loading the riskiest architectural assumptions to validate them early.
35
+ 9. **Plan the cross-cutting work up front.** Before milestone 1, ensure the plan includes: a threat model entry point (`process/security-by-design`), a test strategy (`process/testing-before-done`), and ADRs for the load-bearing stack/architecture choices made in steps 4-5.
36
+
37
+ ## Output format
38
+ - A `PLAN.md` (or equivalent planning doc) in the workspace containing:
39
+ - Scope: problem statement, in-scope outcomes, explicit out-of-scope list.
40
+ - Architecture: C4 Context and Container views (as diagrams or structured text), plus Component views for complex containers.
41
+ - Stack: the technology committed per container, each with a link to its ADR.
42
+ - Delivery: epics → stories backlog, prioritized, grouped into milestones on a roadmap.
43
+ - Diagrams may live in `examples/` or be embedded; reference them from `PLAN.md`.
44
+
45
+ ## Quality & validation rules
46
+ - Every in-scope outcome maps to at least one epic; every epic to at least one story; no orphan stories.
47
+ - The C4 views are consistent: every container in Level 2 traces to a system in Level 1; every component in Level 3 lives inside a Level 2 container.
48
+ - Each container's technology choice is named (no "TBD" on load-bearing choices) and the choice with trade-offs is backed by an ADR.
49
+ - Every user story is small enough to fit one sprint; anything larger is promoted to an epic.
50
+ - Milestone 1 exercises the highest-risk architectural assumption, not just the easiest work.
51
+ - Out-of-scope list is non-empty (a plan with nothing excluded is under-scoped).
52
+
53
+ ## Failure handling
54
+ - **Scope keeps growing** → freeze v1 scope, move new asks to "Won't have this time," and revisit after the first milestone.
55
+ - **A container's tech choice is contested** → spike it or open an ADR; do not let the diagram hide an unresolved decision.
56
+ - **Stories won't fit a sprint** → split them; if a story can't be split, it's an epic — re-decompose.
57
+ - **No external systems identified** → re-check; almost every app has auth/data/observability dependencies. An empty Context view usually means the analysis is incomplete.
58
+
59
+ ## Related
60
+ - Sources:
61
+ - C4 model — https://c4model.com/
62
+ - Agile (epics/stories/backlog) — https://www.atlassian.com/agile/project-management/epics-stories-themes
63
+ - Skills: `process/prioritization-moscow-rice`, `process/adr-technical-decisions`, `process/security-by-design`, `process/testing-before-done`
@@ -0,0 +1,52 @@
1
+ # Skill — architecture-before-code
2
+
3
+ **Trigger:** A scoped slice/feature is about to be implemented and it introduces new systems, boundaries, data flows, or integrations — before writing the implementation.
4
+
5
+ Produces a shared, just-enough architecture description (C4-style diagrams + the load-bearing decisions) so engineers agree on boundaries and data flow before code locks them in.
6
+
7
+ ## When to use
8
+ - The work adds a new container (service, app, database, queue), a new integration, or a non-trivial data flow across boundaries.
9
+ - Decisions about boundaries, data ownership, or technology are hard to reverse later and must be gotten approximately right early.
10
+ - More than one engineer/agent will touch the system and needs a shared mental model.
11
+
12
+ ## When NOT to use
13
+ - The change fits cleanly inside an existing component with no new boundary or data-flow (just implement, following existing patterns in `.claude/CLAUDE.md`).
14
+ - A current, accurate architecture doc already covers this change.
15
+ - It is a pure UI flow with no architectural impact — use `mocks-and-screen-flows`.
16
+
17
+ ## Required context & inputs
18
+ - The scoped slice (`mvp-slice.md`) and its requirements/specs.
19
+ - The org's `.claude/CLAUDE.md` (declared stack, existing services, runtime root and isolation model, sync/watcher architecture).
20
+ - The existing system's current architecture (read the code/structure to know what is already there).
21
+
22
+ ## Procedure
23
+ Document with the **C4 model**: describe the software at increasing zoom — **System Context → Containers → Components → (optionally) Code** — using the abstractions person, software system, container, and component (see Related). Keep it "just enough": architecture is the shared understanding of the important, hard-to-change stuff (per Fowler), not exhaustive UML.
24
+
25
+ 1. **System Context diagram.** Show the system as one box, the people (actors) who use it, and the external systems it depends on. Establishes scope and who/what it talks to.
26
+ 2. **Container diagram.** Decompose the system into deployable/runnable units (web app, API, database, worker, agent runtime) with the technology of each and the data that flows between them. This is the primary architecture artifact for most features.
27
+ 3. **Component diagram (only where it adds value).** Inside the container you are changing, show the major components and responsibilities. Skip for containers you are not touching.
28
+ 4. **Define boundaries & ownership.** State which container owns which data, the contract (API/event/schema) at each boundary, and the direction of dependencies. Avoid cyclic dependencies between containers.
29
+ 5. **Trace the data flow.** Walk the slice's main path across the diagram (a dynamic/sequence view) — request in, transformations, persistence, response out — confirming every hop exists and is owned.
30
+ 6. **Record the decisions.** For each significant, hard-to-reverse choice (boundary placement, datastore, sync strategy, build vs. integrate), write a short decision: context, options considered, choice, consequences. Prefer one ADR per decision.
31
+ 7. **Check internal quality.** Confirm the design favors high internal quality (clear seams, low coupling) — this speeds future delivery, not slows it (per Fowler). Reject designs that bypass existing isolation/sync boundaries the org depends on.
32
+ 8. **Review with the team** before coding; the diagrams are the alignment instrument.
33
+
34
+ ## Output format
35
+ - An `architecture.md` (in the work item's planning folder) containing the C4 Context and Container diagrams (and Component where useful), the boundary/ownership/contract notes, and the traced data flow.
36
+ - One ADR per significant decision (context · options · decision · consequences), linked from `architecture.md`.
37
+
38
+ ## Quality & validation rules
39
+ - Every container has a named responsibility, technology, and the data it owns; every boundary names its contract.
40
+ - The slice's main path traces end-to-end across the diagram with no missing or unowned hop.
41
+ - Each hard-to-reverse decision has a recorded rationale and considered alternatives (an ADR), so future readers know *why*, not just *what*.
42
+ - The design respects the org's existing architectural invariants (e.g. Constella's runtime root, FS isolation/jail, sync-engine/watcher boundaries). Done = a reviewer agrees boundaries and data flow before any implementation begins.
43
+
44
+ ## Failure handling
45
+ - **Two valid boundary options and no clear winner:** record both in the ADR with trade-offs and escalate the decision rather than picking silently.
46
+ - **Design violates an existing invariant:** stop; either redesign within the invariant or raise an explicit, justified ADR to change it.
47
+ - **Architecture grows beyond the slice:** scope the diagram to this slice and note future containers as out-of-scope rather than designing the whole platform.
48
+ - Keep `architecture.md` and ADRs updated if implementation forces a change, so the doc stays the source of truth.
49
+
50
+ ## Related
51
+ - Sources: https://c4model.com/ ; https://martinfowler.com/architecture/ ; ADRs — https://adr.github.io/
52
+ - Skills: ../mocks-and-screen-flows, ../requirements-to-specs, ../specs-to-issues
@@ -0,0 +1,53 @@
1
+ # Skill — breaking-work-into-sprints
2
+
3
+ **Trigger:** A backlog of well-formed issues/stories exists and must be sliced into deliverable increments (sprints) with a goal and a Definition of Done — before the team starts building.
4
+
5
+ Produces a Sprint Backlog (Sprint Goal + selected items + a plan) where every increment is potentially releasable and meets a shared Definition of Done.
6
+
7
+ ## When to use
8
+ - The work item's backlog (from `specs-to-issues`) is ready and must be scheduled into one or more increments.
9
+ - You need to commit to a focused, achievable goal for the next increment rather than "do everything".
10
+ - A feature is too large for one increment and must be delivered in usable slices.
11
+
12
+ ## When NOT to use
13
+ - Issues/specs do not exist yet — go to `specs-to-issues` / `requirements-to-specs`.
14
+ - Decomposing a raw idea into an MVP — that is `idea-to-product` (this skill schedules already-defined work).
15
+ - The org does not run iterative increments and uses continuous flow only — adapt the Definition-of-Done and increment-sizing parts, skip the time-box.
16
+
17
+ ## Required context & inputs
18
+ - The prioritized backlog of issues (`issues.md`) with acceptance criteria and dependencies.
19
+ - The team's capacity, the Product Goal, and the agreed **Definition of Done**.
20
+ - Dependency/ordering constraints from `architecture.md`.
21
+
22
+ ## Procedure
23
+ Run **Sprint Planning** per the Scrum Guide: a Sprint is a fixed-length container (one month or less) in which ideas turn into value; planning answers **Why** (the Sprint Goal), **What** (selected Product Backlog items), and **How** (the plan to deliver them). Nothing counts as part of the **Increment** until it meets the **Definition of Done** (see Related).
24
+
25
+ 1. **Confirm the Definition of Done.** Make explicit the quality bar an increment must meet to be releasable (built, tested, reviewed, parity-checked, docs updated, deployed/deployable). For Constella, include the 3-axis parity gate and build/typecheck gates.
26
+ 2. **Refine the backlog (Why-ready).** Ensure top items are small, clear, and estimated. Split any item too large to finish within one Sprint (`specs-to-issues` mechanics). Order by value and dependency.
27
+ 3. **Set the Sprint Goal (Why).** Define one coherent objective for the increment that delivers user/business value — the single thing the increment is *about*. Items are selected to serve it.
28
+ 4. **Select the work (What).** Pull the highest-value, dependency-respecting items from the top of the backlog that fit the team's capacity and serve the goal. Do not overcommit; capacity, not ambition, sets the line.
29
+ 5. **Plan the delivery (How).** Break selected items into the concrete tasks needed to meet the Definition of Done (build, test, review, integrate). This is the Sprint Backlog.
30
+ 6. **Sequence within the increment.** Order tasks so dependencies are satisfied and a usable slice emerges early; front-load the riskiest item.
31
+ 7. **Make each increment releasable.** Each Sprint must produce at least one valuable, usable Increment that meets the Definition of Done — not a half-done layer.
32
+ 8. **Reserve continuous refinement.** Keep refining the rest of the backlog during the increment so the next planning is fast.
33
+
34
+ ## Output format
35
+ - A `sprint-plan.md` (or tracker sprint/board) per increment containing: the **Sprint Goal**, the **selected items** (links to issues), the **delivery plan** (task breakdown per item), the **Definition of Done** in force, and the dependency-aware sequence.
36
+ - For multi-sprint features, a short increment roadmap listing each Sprint Goal and the releasable slice it ships.
37
+
38
+ ## Quality & validation rules
39
+ - Every selected item fits within the increment and traces to the Sprint Goal; nothing selected is unrelated to the goal.
40
+ - The increment is potentially releasable and every included item can meet the Definition of Done — no item is "done except for testing/review".
41
+ - Selection respects capacity (no overcommit) and dependency order (nothing scheduled before its blocker).
42
+ - The Definition of Done is explicit and shared. Done = the team agrees the plan is achievable and the increment, if completed, ships real value.
43
+
44
+ ## Failure handling
45
+ - **An item is too big for one Sprint:** split it before committing; never carry an unsplittable giant into the increment.
46
+ - **Capacity does not fit the goal:** narrow the Sprint Goal or drop lowest-value items — keep the increment releasable rather than overcommitting.
47
+ - **A blocking dependency is unresolved:** reorder or descope; do not schedule blocked work.
48
+ - **Scope discovered mid-increment:** add to the backlog for refinement, not to the current Sprint, unless it serves the goal and capacity allows; record the change.
49
+ - Log the goal, commitments, and any descoping in `sprint-plan.md` for the increment review.
50
+
51
+ ## Related
52
+ - Sources: https://scrumguides.org/scrum-guide.html (2020 Scrum Guide — Sprint, Sprint Planning, Increment, Definition of Done)
53
+ - Skills: ../specs-to-issues, ../requirements-to-specs, ../idea-to-product
@@ -0,0 +1,50 @@
1
+ # Skill — idea-to-product
2
+
3
+ **Trigger:** A validated problem (or a strong raw idea) exists and must become a small, buildable, testable slice — before writing specs or code for the whole thing.
4
+
5
+ Produces a scoped MVP slice with its riskiest assumption, the experiment that tests it, and the success metric — so the team ships the smallest thing that produces validated learning.
6
+
7
+ ## When to use
8
+ - Discovery/framing produced a problem worth solving and you must decide *what to build first*.
9
+ - The idea is large and you need to carve a thin end-to-end slice rather than build everything at once.
10
+ - You want evidence the solution works before investing in the full feature.
11
+
12
+ ## When NOT to use
13
+ - The problem itself is not yet validated — go to `product-discovery` / `problem-framing` first.
14
+ - The slice is already chosen and specced — go to `requirements-to-specs`.
15
+ - Scope is being cut into delivery increments for an *already-committed* feature — that is sprint slicing (`breaking-work-into-sprints`), not idea-to-MVP.
16
+
17
+ ## Required context & inputs
18
+ - The validated problem statement / job-to-be-done (`discovery.md`, `problem-framing.md`).
19
+ - The success metric the business cares about.
20
+ - The org's `.claude/CLAUDE.md` stack and constraints (what is cheap vs expensive to build).
21
+
22
+ ## Procedure
23
+ Apply the Lean Startup **Build–Measure–Learn** loop with a Minimum Viable Product: the smallest thing that lets you start the learning loop and gather **validated learning** (see Related). Optimize for fastest learning, not most features.
24
+
25
+ 1. **State the value & growth hypotheses.** Write the leap-of-faith assumptions the idea depends on (does the user want this? will it produce the intended outcome?). These are the things that, if false, kill the product.
26
+ 2. **Rank by risk.** Identify the single riskiest assumption — the one whose failure is most likely and most damaging. The MVP exists to test *that*.
27
+ 3. **Design the MVP slice.** Define the thinnest end-to-end path through the product that exercises the riskiest assumption and delivers real value to one user for one job. Cut everything not required to learn. (A concierge, mock, or single-flow build often suffices.)
28
+ 4. **Define Measure.** Pick a clear, actionable success metric and the threshold that counts as validation vs. invalidation *before* building. Avoid vanity metrics.
29
+ 5. **Specify Learn.** State, in advance, what result will make you persevere, pivot, or stop.
30
+ 6. **Scope the build.** List what is in the slice and explicitly what is deferred. Keep the slice releasable and observable.
31
+ 7. **Hand the slice off** to `requirements-to-specs` (to make it testable) and `specs-to-issues` (to make it trackable).
32
+
33
+ ## Output format
34
+ - An `mvp-slice.md` (in the work item's planning folder) with: value & growth hypotheses, the ranked riskiest assumption, the MVP slice definition (in-scope path + explicit out-of-scope list), the success metric + validation threshold, and the persevere/pivot/stop criteria.
35
+
36
+ ## Quality & validation rules
37
+ - The slice is end-to-end (a user can complete one real job), releasable, and instrumented to produce the chosen metric.
38
+ - The riskiest assumption is named and the slice demonstrably tests it. Done = building this slice will produce validated learning, not just output.
39
+ - The success threshold and pivot/persevere criteria were written *before* building, so the result cannot be rationalized after the fact.
40
+ - Out-of-scope items are explicit, preventing scope creep.
41
+
42
+ ## Failure handling
43
+ - **Slice still too big to ship fast:** cut to a single flow or a non-code experiment (concierge/Wizard-of-Oz) that still tests the riskiest assumption.
44
+ - **No measurable success metric available:** treat that as the first risk to resolve — define how learning will be observed before building anything.
45
+ - **MVP invalidates the assumption:** that is a successful experiment; record the learning and route back to `problem-framing` to pivot rather than forcing the build.
46
+ - Log hypotheses, metric, and outcome so the next loop iteration builds on real evidence.
47
+
48
+ ## Related
49
+ - Sources: https://leanstartup.co/ ; https://www.nngroup.com/articles/minimum-viable-product/
50
+ - Skills: ../product-discovery, ../problem-framing, ../requirements-to-specs, ../breaking-work-into-sprints
@@ -0,0 +1,52 @@
1
+ # Skill — mocks-and-screen-flows
2
+
3
+ **Trigger:** A scoped slice or feature needs a UI and you are about to design or build screens — before any component or page code is written.
4
+
5
+ Produces a wireflow (screen mocks wired by interaction arrows) that maps every screen state and transition for the flow, so engineers build from an unambiguous visual + behavioral spec.
6
+
7
+ ## When to use
8
+ - A user-facing flow must be designed: you know the job-to-be-done but not the exact screens, states, and transitions.
9
+ - The app is dynamic (content/state changes on a few core screens, AJAX-style updates, checkout/filter/onboarding flows) where a static screen-by-screen wireframe set would not capture behavior.
10
+ - In Constella, before reproducing or extending UI, to nail the 3-axis parity target (visual + structure + behavior) the build will be judged against.
11
+
12
+ ## When NOT to use
13
+ - The flow is a large static website with many discrete linked pages and little dynamic behavior — a sitemap + page wireframes fit better than a wireflow.
14
+ - An approved mock/`Spec.html` already exists and is canonical — build to it (parity work), do not re-design.
15
+ - No UI is involved (pure backend/data work).
16
+
17
+ ## Required context & inputs
18
+ - The scoped slice (`mvp-slice.md`) and the job-to-be-done / problem statement.
19
+ - The org's design system / existing components and `.claude/CLAUDE.md` UI conventions, plus any prototype baseline to match.
20
+ - The list of user goals/tasks this flow must support.
21
+
22
+ ## Procedure
23
+ Build a **wireflow**: wireframe-style page layouts connected by a simplified flowchart of interactions, where an arrow leaves the specific UI element a user acts on and points to the resulting screen *state* (see Related).
24
+
25
+ 1. **List the tasks & happy path.** Enumerate the user goals this flow serves and the primary (happy-path) sequence of steps to complete each.
26
+ 2. **Sketch low-fidelity first.** Rough each distinct screen as a wireframe (layout, key elements, content placeholders) — paper/whiteboard fidelity. Resolve structure before visual polish.
27
+ 3. **Wire interactions.** From each actionable element (button, link, field, filter), draw an arrow to the resulting state. That state may be a *new* screen, the *same* screen with changed content, or a feedback element (confirmation, error, loading).
28
+ 4. **Cover non-happy states.** Add empty, loading, error, validation-failure, and permission-denied states as their own nodes — these are where builds usually diverge from intent.
29
+ 5. **Map branches & loops.** Show decision points (auth required, item in/out of stock) and back/cancel paths so no transition is undefined.
30
+ 6. **Raise fidelity to mocks.** Once the flow is complete and reviewed, raise the wireframes to mocks using the design system so visual detail matches the build target.
31
+ 7. **Annotate behavior.** Note any logic an image cannot convey (validation rules, what data populates a region, side effects of an action) next to the relevant arrow/node.
32
+ 8. **Review against the tasks.** Walk each user task through the wireflow end-to-end; confirm every step has a screen and every action has a defined result.
33
+
34
+ ## Output format
35
+ - A wireflow artifact (image/Figma link, or `Spec.html`-style page in the work item folder) showing every screen state as a node and every interaction as a labeled arrow to its resulting state.
36
+ - A short `screen-flows.md` listing the tasks covered, each screen state, and the behavior annotations (validation, data sources, side effects) keyed to the wireflow.
37
+
38
+ ## Quality & validation rules
39
+ - Every actionable element has exactly one defined resulting state; no dangling or ambiguous transitions.
40
+ - Empty / loading / error / edge states are present, not just the happy path.
41
+ - Every user task from step 1 can be traced node-to-node through the wireflow to completion.
42
+ - Mocks reference real design-system components and (for parity work) match the prototype baseline. Done = an engineer could build the flow without guessing any state or transition.
43
+
44
+ ## Failure handling
45
+ - **A transition's target state is unknown:** stop and resolve it with the product owner; do not let engineering invent it.
46
+ - **Flow has too many screens to wireflow cleanly:** split into sub-flows (one wireflow per task) and link them.
47
+ - **Mock conflicts with design-system constraints:** flag the conflict in `screen-flows.md` and resolve before build, not during.
48
+ - Record open UI questions in `screen-flows.md` so the build phase inherits them.
49
+
50
+ ## Related
51
+ - Sources: https://www.nngroup.com/articles/wireflows/ ; https://www.nngroup.com/articles/wireframe-fidelity/
52
+ - Skills: ../idea-to-product, ../requirements-to-specs, ../architecture-before-code
@@ -0,0 +1,64 @@
1
+ # Skill — prioritization-moscow-rice
2
+
3
+ **Trigger:** A backlog, feature list, or set of competing initiatives needs an explicit, defensible priority order before committing engineering capacity.
4
+
5
+ Produces a prioritized work list: a MoSCoW categorization for release-scoping plus a RICE-scored ranking for the contested items, with the reasoning recorded.
6
+
7
+ ## When to use
8
+ - You have more candidate work than capacity for the next release/sprint and must decide what is in, what waits, and what is cut.
9
+ - Stakeholders disagree on order and you need an objective, repeatable tiebreaker.
10
+ - Planning a milestone where the "must-have" set defines whether the release ships at all.
11
+
12
+ ## When NOT to use
13
+ - A single obvious item with no contention (just do it).
14
+ - The decision is architectural rather than about *what* to build — use `process/adr-technical-decisions` and `process/app-planning`.
15
+ - You lack any data or even rough estimates for Reach/Impact/Effort and cannot get them — fix that first; do not fabricate scores.
16
+
17
+ ## Required context & inputs
18
+ - The candidate list of features/initiatives, each stated as an outcome (not a solution).
19
+ - The release goal or business objective they serve.
20
+ - Rough estimates per item: how many users it reaches in a fixed time window, expected per-user impact, your confidence, and effort in person-months.
21
+ - The org's declared stack and team size (from `.claude/CLAUDE.md`) to calibrate effort.
22
+
23
+ ## Procedure
24
+ 1. **Frame the timebox.** Fix the period RICE Reach is measured over (e.g. "per quarter") and the capacity available (person-months). Every item is scored against the same window — never mix windows.
25
+ 2. **First pass — MoSCoW categorize.** Sort every item into exactly one bucket (Dai Clegg's method):
26
+ - **Must have** — release is useless or broken without it. Non-negotiable for *this* timebox.
27
+ - **Should have** — important and high-value, but the release still works if it slips to a future release.
28
+ - **Could have** — nice-to-have, small impact if dropped; the first to be cut if Must/Should overrun.
29
+ - **Won't have (this time)** — explicitly out of scope for this timebox; record it to prevent scope creep and reset stakeholder expectations.
30
+ 3. **Budget the Musts.** If "Must have" exceeds the capacity from step 1, the release is over-scoped — renegotiate scope or timeline now, before scoring further. Musts must fit.
31
+ 4. **Second pass — RICE-score the contested tier.** For the Should/Could items competing for the remaining capacity, score each factor:
32
+ - **Reach** — number of people or events affected in the fixed time window (e.g. 1,200 customers/quarter).
33
+ - **Impact** — per-person magnitude on the multiple-choice scale: 3 = massive, 2 = high, 1 = medium, 0.5 = low, 0.25 = minimal.
34
+ - **Confidence** — percentage on the scale: 100% = high, 80% = medium, 50% = low; below that is a moonshot — flag it, don't score it.
35
+ - **Effort** — total person-months across all functions; use whole numbers, or 0.5 for sub-month work. Higher effort lowers the score.
36
+ 5. **Compute the score** for each item: `RICE = (Reach × Impact × Confidence) ÷ Effort`. This yields impact-per-time-worked.
37
+ 6. **Rank and slot.** Order the contested items by descending RICE score and fill the remaining capacity top-down. Items that don't fit fall to the next release (re-label them Should/Won't-have-this-time).
38
+ 7. **Record the decision.** Capture the bucket, the four raw RICE inputs, and the final score per item so the priority is auditable and re-runnable when estimates change.
39
+
40
+ ## Output format
41
+ - A `prioritization.md` (or the planning doc's priority section) in the workspace containing:
42
+ - A MoSCoW table: `Item | Bucket | Rationale`.
43
+ - A RICE table for contested items: `Item | Reach | Impact | Confidence | Effort | RICE score`, sorted descending.
44
+ - The fixed time window, the capacity budget, and the cut line (what's in vs. deferred).
45
+
46
+ ## Quality & validation rules
47
+ - Every item lands in exactly one MoSCoW bucket; no item is uncategorized.
48
+ - The "Must have" set fits within stated capacity (step 3) — if not, the plan is not done.
49
+ - RICE uses the canonical scales (Impact 3/2/1/0.5/0.25; Confidence 100/80/50%); no invented values.
50
+ - All RICE items share one Reach time window.
51
+ - Each score traces to its four raw inputs — a bare number with no inputs is invalid.
52
+ - MoSCoW is the scoping lens, RICE is the objective tiebreaker; do not rely on MoSCoW alone for the contested tier.
53
+
54
+ ## Failure handling
55
+ - **No reliable estimates** → score Confidence honestly (low/moonshot), mark the item "needs discovery," and exclude it from the committed set rather than guessing high.
56
+ - **Must-haves overflow capacity** → stop and renegotiate scope/timeline with stakeholders; do not silently demote a true Must.
57
+ - **Stakeholder dispute on a bucket** → resolve by RICE-scoring the disputed item; the higher impact-per-effort wins. Record the disagreement and resolution.
58
+ - **Score ties** → break ties by lower Effort (cheaper first) or higher Confidence; note the tiebreak used.
59
+
60
+ ## Related
61
+ - Sources:
62
+ - MoSCoW — https://www.productplan.com/glossary/moscow-prioritization/
63
+ - RICE — https://www.intercom.com/blog/rice-simple-prioritization-for-product-managers/
64
+ - Skills: `process/app-planning`, `process/adr-technical-decisions`
@@ -0,0 +1,51 @@
1
+ # Skill — problem-framing
2
+
3
+ **Trigger:** A problem statement or request exists but it may be the *wrong* or too-narrow framing — before committing scope, specs, or architecture to it.
4
+
5
+ Produces a reframed, validated problem statement (often with the underlying job-to-be-done) so the team solves the highest-value version of the problem, not the first one stated.
6
+
7
+ ## When to use
8
+ - Discovery surfaced a problem, or a stakeholder handed you one, and you suspect it is stated as a pre-baked solution ("we need a button that…") rather than a need.
9
+ - The team is jumping straight to solution mode without checking it understands the problem (the most common and most costly failure — most organizations are weak at diagnosis, not solving).
10
+ - Multiple stakeholders describe "the problem" differently.
11
+
12
+ ## When NOT to use
13
+ - The problem is already crisply framed, agreed, and evidenced (proceed to `requirements-to-specs` or `architecture-before-code`).
14
+ - Reframing would be procrastination: the problem is small, well-understood, and the cost of solving the "wrong" version is trivial.
15
+
16
+ ## Required context & inputs
17
+ - The current problem statement and who authored it.
18
+ - `discovery.md` / research evidence if it exists (from `product-discovery`).
19
+ - Access to at least one outsider (someone not embedded in the problem) and the original stakeholders.
20
+
21
+ ## Procedure
22
+ Use Wedell-Wedellsborg's reframing method (HBR, see Related). The goal is **not** to find the "real" problem but to see whether there is a *better* problem to solve. Run a short, repeatable reframing loop.
23
+
24
+ 1. **Establish legitimacy.** Get explicit buy-in that questioning the framing is welcome, so people engage instead of defending the original ask.
25
+ 2. **Bring in outsiders.** Include at least one person without stake in the current framing; they spot blind spots insiders cannot.
26
+ 3. **Get definitions in writing.** Have each stakeholder write down, in one or two sentences, what they think the problem is. Compare — divergence reveals the real disagreement.
27
+ 4. **Ask what's missing.** What does every written definition leave out? Add the missing factors.
28
+ 5. **Consider multiple categories.** Is this a process problem? An incentive problem? An expectation problem? Re-categorize deliberately.
29
+ 6. **Analyze positive exceptions.** Where does this problem *not* occur (a person, team, or context that already succeeds)? Study why — the reframe often hides there.
30
+ 7. **Question the objective.** Ask what goal the stated problem actually serves; a higher goal may have a cheaper or entirely different solution.
31
+ 8. **Restate as a job-to-be-done.** Express the chosen frame as the outcome the user is trying to achieve ("When [situation], I want to [motivation], so I can [expected outcome]"), independent of any solution.
32
+ 9. **Pick the better problem** and record why it beats the original framing.
33
+
34
+ ## Output format
35
+ - A `problem-framing.md` (in the work item's planning folder) with: the original statement, each stakeholder's written definition, what was missing, alternative categorizations considered, positive exceptions found, the questioned objective, and the **chosen reframed problem statement** expressed as a job-to-be-done, plus a one-line rationale for choosing it.
36
+
37
+ ## Quality & validation rules
38
+ - The final problem statement is solution-free: it names a situation, a motivation, and a desired outcome — no UI, schema, or technology.
39
+ - At least three of the seven reframing practices were actually applied and their output recorded (not just listed).
40
+ - An outsider's input is captured. Done = the reframe is traceable to evidence/perspectives, not to one author's preference.
41
+ - The original framing is preserved alongside the new one so the decision is auditable.
42
+
43
+ ## Failure handling
44
+ - **Reframing produces no better problem:** keep the original framing and record that it was deliberately validated (this is a success, not a waste).
45
+ - **Stakeholders cannot agree on the frame:** escalate the disagreement with the written definitions attached; do not silently pick one.
46
+ - **Reframe invalidates prior discovery:** loop back to `product-discovery` to re-validate the new frame before building on it.
47
+ - Log the chosen frame and rejected alternatives so later phases do not relitigate them.
48
+
49
+ ## Related
50
+ - Sources: https://hbr.org/2017/01/are-you-solving-the-right-problems (Thomas Wedell-Wedellsborg — the seven reframing practices)
51
+ - Skills: ../product-discovery, ../idea-to-product, ../requirements-to-specs