@shepai/cli 1.59.0 → 1.60.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 (267) hide show
  1. package/dist/src/presentation/web/app/skills/page.d.ts +2 -0
  2. package/dist/src/presentation/web/app/skills/page.d.ts.map +1 -0
  3. package/dist/src/presentation/web/app/skills/page.js +11 -0
  4. package/dist/src/presentation/web/components/features/skills/category-filter.d.ts +8 -0
  5. package/dist/src/presentation/web/components/features/skills/category-filter.d.ts.map +1 -0
  6. package/dist/src/presentation/web/components/features/skills/category-filter.js +12 -0
  7. package/dist/src/presentation/web/components/features/skills/category-filter.stories.d.ts +9 -0
  8. package/dist/src/presentation/web/components/features/skills/category-filter.stories.d.ts.map +1 -0
  9. package/dist/src/presentation/web/components/features/skills/category-filter.stories.js +36 -0
  10. package/dist/src/presentation/web/components/features/skills/index.d.ts +6 -0
  11. package/dist/src/presentation/web/components/features/skills/index.d.ts.map +1 -0
  12. package/dist/src/presentation/web/components/features/skills/index.js +5 -0
  13. package/dist/src/presentation/web/components/features/skills/skill-card.d.ts +7 -0
  14. package/dist/src/presentation/web/components/features/skills/skill-card.d.ts.map +1 -0
  15. package/dist/src/presentation/web/components/features/skills/skill-card.js +12 -0
  16. package/dist/src/presentation/web/components/features/skills/skill-card.stories.d.ts +11 -0
  17. package/dist/src/presentation/web/components/features/skills/skill-card.stories.d.ts.map +1 -0
  18. package/dist/src/presentation/web/components/features/skills/skill-card.stories.js +88 -0
  19. package/dist/src/presentation/web/components/features/skills/skill-detail-drawer.d.ts +7 -0
  20. package/dist/src/presentation/web/components/features/skills/skill-detail-drawer.d.ts.map +1 -0
  21. package/dist/src/presentation/web/components/features/skills/skill-detail-drawer.js +13 -0
  22. package/dist/src/presentation/web/components/features/skills/skill-detail-drawer.stories.d.ts +10 -0
  23. package/dist/src/presentation/web/components/features/skills/skill-detail-drawer.stories.d.ts.map +1 -0
  24. package/dist/src/presentation/web/components/features/skills/skill-detail-drawer.stories.js +71 -0
  25. package/dist/src/presentation/web/components/features/skills/skill-list.d.ts +7 -0
  26. package/dist/src/presentation/web/components/features/skills/skill-list.d.ts.map +1 -0
  27. package/dist/src/presentation/web/components/features/skills/skill-list.js +21 -0
  28. package/dist/src/presentation/web/components/features/skills/skill-list.stories.d.ts +9 -0
  29. package/dist/src/presentation/web/components/features/skills/skill-list.stories.d.ts.map +1 -0
  30. package/dist/src/presentation/web/components/features/skills/skill-list.stories.js +124 -0
  31. package/dist/src/presentation/web/components/features/skills/skills-page-client.d.ts +6 -0
  32. package/dist/src/presentation/web/components/features/skills/skills-page-client.d.ts.map +1 -0
  33. package/dist/src/presentation/web/components/features/skills/skills-page-client.js +52 -0
  34. package/dist/src/presentation/web/components/features/skills/skills-page-client.stories.d.ts +16 -0
  35. package/dist/src/presentation/web/components/features/skills/skills-page-client.stories.d.ts.map +1 -0
  36. package/dist/src/presentation/web/components/features/skills/skills-page-client.stories.js +186 -0
  37. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
  38. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +3 -2
  39. package/dist/src/presentation/web/lib/feature-flags.d.ts +10 -0
  40. package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -0
  41. package/dist/src/presentation/web/lib/feature-flags.js +12 -0
  42. package/dist/src/presentation/web/lib/skills.d.ts +30 -0
  43. package/dist/src/presentation/web/lib/skills.d.ts.map +1 -0
  44. package/dist/src/presentation/web/lib/skills.js +137 -0
  45. package/dist/tsconfig.build.tsbuildinfo +1 -1
  46. package/package.json +1 -1
  47. package/web/.next/BUILD_ID +1 -1
  48. package/web/.next/app-path-routes-manifest.json +1 -0
  49. package/web/.next/build-manifest.json +4 -4
  50. package/web/.next/cache/.previewinfo +1 -1
  51. package/web/.next/cache/.rscinfo +1 -1
  52. package/web/.next/cache/.tsbuildinfo +1 -1
  53. package/web/.next/cache/config.json +3 -3
  54. package/web/.next/fallback-build-manifest.json +2 -2
  55. package/web/.next/prerender-manifest.json +3 -3
  56. package/web/.next/required-server-files.js +1 -1
  57. package/web/.next/required-server-files.json +1 -1
  58. package/web/.next/routes-manifest.json +6 -0
  59. package/web/.next/server/app/_global-error/page/build-manifest.json +2 -2
  60. package/web/.next/server/app/_global-error.html +2 -2
  61. package/web/.next/server/app/_global-error.rsc +1 -1
  62. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  63. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  64. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  65. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  66. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  67. package/web/.next/server/app/_not-found/page/build-manifest.json +2 -2
  68. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  69. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  70. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  71. package/web/.next/server/app/api/tools/[id]/install/route.js +1 -1
  72. package/web/.next/server/app/api/tools/[id]/install/route.js.nft.json +1 -1
  73. package/web/.next/server/app/page/build-manifest.json +2 -2
  74. package/web/.next/server/app/page/server-reference-manifest.json +14 -14
  75. package/web/.next/server/app/page.js +1 -1
  76. package/web/.next/server/app/page.js.nft.json +1 -1
  77. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  78. package/web/.next/server/app/skills/page/app-paths-manifest.json +3 -0
  79. package/web/.next/server/app/skills/page/build-manifest.json +17 -0
  80. package/web/.next/server/app/skills/page/next-font-manifest.json +6 -0
  81. package/web/.next/server/app/skills/page/react-loadable-manifest.json +1 -0
  82. package/web/.next/server/app/skills/page/server-reference-manifest.json +20 -0
  83. package/web/.next/server/app/skills/page.js +16 -0
  84. package/web/.next/server/app/skills/page.js.map +5 -0
  85. package/web/.next/server/app/skills/page.js.nft.json +1 -0
  86. package/web/.next/server/app/skills/page_client-reference-manifest.js +2 -0
  87. package/web/.next/server/app/tools/page/build-manifest.json +2 -2
  88. package/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
  89. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  90. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  91. package/web/.next/server/app/version/page/build-manifest.json +2 -2
  92. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  93. package/web/.next/server/app/version/page.js.nft.json +1 -1
  94. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  95. package/web/.next/server/app-paths-manifest.json +1 -0
  96. package/web/.next/server/chunks/{[root-of-the-server]__bb619083._.js → [root-of-the-server]__e926de65._.js} +2 -2
  97. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
  98. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js.map +1 -1
  99. package/web/.next/server/chunks/ssr/[root-of-the-server]__2395adc6._.js +3 -0
  100. package/web/.next/server/chunks/ssr/[root-of-the-server]__2395adc6._.js.map +1 -0
  101. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  102. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  103. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  104. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  105. package/web/.next/server/chunks/ssr/[root-of-the-server]__87fda958._.js +3 -0
  106. package/web/.next/server/chunks/ssr/[root-of-the-server]__87fda958._.js.map +1 -0
  107. package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +2 -2
  108. package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js.map +1 -1
  109. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__86c7bba5._.js → server/chunks/ssr/[root-of-the-server]__b6839c3f._.js} +3 -3
  110. package/web/.next/server/chunks/ssr/{[root-of-the-server]__86c7bba5._.js.map → [root-of-the-server]__b6839c3f._.js.map} +1 -1
  111. package/web/.next/server/chunks/ssr/[root-of-the-server]__da0ade1f._.js +4 -0
  112. package/web/.next/server/chunks/ssr/[root-of-the-server]__da0ade1f._.js.map +1 -0
  113. package/web/.next/server/chunks/ssr/[root-of-the-server]__edca9510._.js +3 -0
  114. package/web/.next/server/chunks/ssr/[root-of-the-server]__edca9510._.js.map +1 -0
  115. package/web/.next/server/chunks/ssr/[root-of-the-server]__ee7cffe1._.js +3 -0
  116. package/web/.next/server/chunks/ssr/[root-of-the-server]__ee7cffe1._.js.map +1 -0
  117. package/web/.next/server/chunks/ssr/[root-of-the-server]__fbc89707._.js +1 -1
  118. package/web/.next/server/chunks/ssr/_34627374._.js +6 -0
  119. package/web/.next/server/chunks/ssr/_34627374._.js.map +1 -0
  120. package/web/.next/server/chunks/ssr/_380c6567._.js +6 -0
  121. package/web/.next/server/chunks/ssr/_380c6567._.js.map +1 -0
  122. package/web/.next/server/chunks/ssr/_44cce4e0._.js +4 -0
  123. package/web/.next/server/chunks/ssr/_44cce4e0._.js.map +1 -0
  124. package/web/.next/server/chunks/ssr/_9915d2a7._.js +3 -0
  125. package/web/.next/server/chunks/ssr/_9915d2a7._.js.map +1 -0
  126. package/web/.next/server/chunks/ssr/_a64b7b24._.js +3 -0
  127. package/web/.next/server/chunks/ssr/{_e242b954._.js.map → _a64b7b24._.js.map} +1 -1
  128. package/web/.next/server/chunks/ssr/_e7a4b0e4._.js +3 -0
  129. package/web/.next/server/chunks/ssr/_e7a4b0e4._.js.map +1 -0
  130. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/node_modules__pnpm_d26a7485._.js → server/chunks/ssr/node_modules__pnpm_fe355030._.js} +2 -2
  131. package/web/.next/server/chunks/ssr/node_modules__pnpm_fe355030._.js.map +1 -0
  132. package/web/.next/server/chunks/ssr/src_presentation_web_components_0286756b._.js +3 -0
  133. package/web/.next/server/chunks/ssr/src_presentation_web_components_0286756b._.js.map +1 -0
  134. package/web/.next/server/middleware-build-manifest.js +2 -2
  135. package/web/.next/server/pages/500.html +2 -2
  136. package/web/.next/server/server-reference-manifest.js +1 -1
  137. package/web/.next/server/server-reference-manifest.json +22 -15
  138. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  139. package/web/.next/standalone/src/presentation/web/.next/app-path-routes-manifest.json +1 -0
  140. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +4 -4
  141. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  142. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  143. package/web/.next/standalone/src/presentation/web/.next/routes-manifest.json +6 -0
  144. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page/build-manifest.json +2 -2
  145. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  146. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  147. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  148. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  149. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  150. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  151. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  152. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/build-manifest.json +2 -2
  153. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  154. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  155. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  156. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/route.js +1 -1
  157. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/route.js.nft.json +1 -1
  158. package/web/.next/standalone/src/presentation/web/.next/server/app/page/build-manifest.json +2 -2
  159. package/web/.next/standalone/src/presentation/web/.next/server/app/page/server-reference-manifest.json +14 -14
  160. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js +1 -1
  161. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js.nft.json +1 -1
  162. package/web/.next/standalone/src/presentation/web/.next/server/app/page_client-reference-manifest.js +1 -1
  163. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/app-paths-manifest.json +3 -0
  164. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/build-manifest.json +17 -0
  165. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/next-font-manifest.json +6 -0
  166. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/react-loadable-manifest.json +1 -0
  167. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +20 -0
  168. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js +16 -0
  169. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.map +5 -0
  170. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -0
  171. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +2 -0
  172. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/build-manifest.json +2 -2
  173. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
  174. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
  175. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  176. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/build-manifest.json +2 -2
  177. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  178. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
  179. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  180. package/web/.next/standalone/src/presentation/web/.next/server/app-paths-manifest.json +1 -0
  181. package/web/.next/standalone/src/presentation/web/.next/server/chunks/{[root-of-the-server]__bb619083._.js → [root-of-the-server]__e926de65._.js} +2 -2
  182. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
  183. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__2395adc6._.js +3 -0
  184. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  185. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  186. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__87fda958._.js +3 -0
  187. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +2 -2
  188. package/web/.next/{server/chunks/ssr/[root-of-the-server]__86c7bba5._.js → standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__b6839c3f._.js} +3 -3
  189. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__da0ade1f._.js +4 -0
  190. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__edca9510._.js +3 -0
  191. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__ee7cffe1._.js +3 -0
  192. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__fbc89707._.js +1 -1
  193. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_34627374._.js +6 -0
  194. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_380c6567._.js +6 -0
  195. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_44cce4e0._.js +4 -0
  196. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9915d2a7._.js +3 -0
  197. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_a64b7b24._.js +3 -0
  198. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_e7a4b0e4._.js +3 -0
  199. package/web/.next/{server/chunks/ssr/node_modules__pnpm_d26a7485._.js → standalone/src/presentation/web/.next/server/chunks/ssr/node_modules__pnpm_fe355030._.js} +2 -2
  200. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_0286756b._.js +3 -0
  201. package/web/.next/standalone/src/presentation/web/.next/server/middleware-build-manifest.js +2 -2
  202. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  203. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  204. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +22 -15
  205. package/web/.next/standalone/src/presentation/web/app/skills/page.tsx +12 -0
  206. package/web/.next/standalone/src/presentation/web/components/features/skills/category-filter.stories.tsx +57 -0
  207. package/web/.next/standalone/src/presentation/web/components/features/skills/category-filter.tsx +36 -0
  208. package/web/.next/standalone/src/presentation/web/components/features/skills/index.ts +5 -0
  209. package/web/.next/standalone/src/presentation/web/components/features/skills/skill-card.stories.tsx +105 -0
  210. package/web/.next/standalone/src/presentation/web/components/features/skills/skill-card.tsx +48 -0
  211. package/web/.next/standalone/src/presentation/web/components/features/skills/skill-detail-drawer.stories.tsx +96 -0
  212. package/web/.next/standalone/src/presentation/web/components/features/skills/skill-detail-drawer.tsx +100 -0
  213. package/web/.next/standalone/src/presentation/web/components/features/skills/skill-list.stories.tsx +139 -0
  214. package/web/.next/standalone/src/presentation/web/components/features/skills/skill-list.tsx +48 -0
  215. package/web/.next/standalone/src/presentation/web/components/features/skills/skills-page-client.stories.tsx +199 -0
  216. package/web/.next/standalone/src/presentation/web/components/features/skills/skills-page-client.tsx +112 -0
  217. package/web/.next/standalone/src/presentation/web/components/layouts/app-sidebar/app-sidebar.tsx +10 -1
  218. package/web/.next/standalone/src/presentation/web/lib/feature-flags.ts +14 -0
  219. package/web/.next/standalone/src/presentation/web/lib/skills.ts +188 -0
  220. package/web/.next/standalone/src/presentation/web/package.json +2 -0
  221. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  222. package/web/.next/static/chunks/09d898be63c54f20.js +1 -0
  223. package/web/.next/static/chunks/{4f7d89c9e09aed99.js → 1fe24572a810eafa.js} +5 -5
  224. package/web/.next/static/chunks/25f42652257ff43d.js +1 -0
  225. package/web/.next/static/chunks/2934854f0378f815.js +1 -0
  226. package/web/.next/static/chunks/7d3c5ae8f47e74cd.js +1 -0
  227. package/web/.next/static/chunks/8b2879f911a05b55.css +2 -0
  228. package/web/.next/static/chunks/acdb8af5a21f1ae9.js +1 -0
  229. package/web/.next/static/chunks/bac5122e95f5c7eb.js +1 -0
  230. package/web/.next/static/chunks/{3d4dcf0be654a331.js → cb1b27e4a21415d3.js} +2 -2
  231. package/web/.next/static/chunks/d4379644a6145352.js +1 -0
  232. package/web/.next/static/chunks/{turbopack-6a11f2f1634ff6e0.js → turbopack-eb24b869babb34b4.js} +2 -2
  233. package/web/.next/trace +1 -1
  234. package/web/.next/trace-build +1 -1
  235. package/web/.next/types/link.d.ts +1 -0
  236. package/web/.next/types/routes.d.ts +2 -1
  237. package/web/.next/types/validator.ts +9 -0
  238. package/web/package.json +2 -0
  239. package/web/.next/server/chunks/ssr/[root-of-the-server]__bced1185._.js +0 -3
  240. package/web/.next/server/chunks/ssr/[root-of-the-server]__bced1185._.js.map +0 -1
  241. package/web/.next/server/chunks/ssr/[root-of-the-server]__d21f0894._.js +0 -3
  242. package/web/.next/server/chunks/ssr/[root-of-the-server]__d21f0894._.js.map +0 -1
  243. package/web/.next/server/chunks/ssr/_027596cf._.js +0 -6
  244. package/web/.next/server/chunks/ssr/_027596cf._.js.map +0 -1
  245. package/web/.next/server/chunks/ssr/_e242b954._.js +0 -3
  246. package/web/.next/server/chunks/ssr/node_modules__pnpm_d26a7485._.js.map +0 -1
  247. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +0 -3
  248. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +0 -1
  249. package/web/.next/server/chunks/ssr/src_presentation_web_components_ec3b0a65._.js +0 -3
  250. package/web/.next/server/chunks/ssr/src_presentation_web_components_ec3b0a65._.js.map +0 -1
  251. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__bced1185._.js +0 -3
  252. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__d21f0894._.js +0 -3
  253. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_027596cf._.js +0 -6
  254. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_e242b954._.js +0 -3
  255. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +0 -3
  256. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_ec3b0a65._.js +0 -3
  257. package/web/.next/static/chunks/0cd7c513169faee3.js +0 -1
  258. package/web/.next/static/chunks/67459433cc866344.js +0 -1
  259. package/web/.next/static/chunks/6d33cb9af6245c98.js +0 -1
  260. package/web/.next/static/chunks/a9c2b889c8749a94.js +0 -1
  261. package/web/.next/static/chunks/b511c65023ec1889.css +0 -2
  262. package/web/.next/static/chunks/cda11a2491d519fc.js +0 -1
  263. package/web/.next/static/chunks/d85b95e893db08bc.js +0 -1
  264. /package/web/.next/server/chunks/{[root-of-the-server]__bb619083._.js.map → [root-of-the-server]__e926de65._.js.map} +0 -0
  265. /package/web/.next/static/{xjc1tfvwTdK1Xv5Id2oaO → enyZhg62FqP6oInxg1T3h}/_buildManifest.js +0 -0
  266. /package/web/.next/static/{xjc1tfvwTdK1Xv5Id2oaO → enyZhg62FqP6oInxg1T3h}/_clientMiddlewareManifest.json +0 -0
  267. /package/web/.next/static/{xjc1tfvwTdK1Xv5Id2oaO → enyZhg62FqP6oInxg1T3h}/_ssgManifest.js +0 -0
@@ -1,2 +1,2 @@
1
- <!DOCTYPE html><!--xjc1tfvwTdK1Xv5Id2oaO--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/a9c2b889c8749a94.js"/><script src="/_next/static/chunks/07f00e2e73d322d2.js" async=""></script><script src="/_next/static/chunks/1887af4ad3781531.js" async=""></script><script src="/_next/static/chunks/cfe4dc9904fcfddb.js" async=""></script><script src="/_next/static/chunks/turbopack-6a11f2f1634ff6e0.js" async=""></script><script src="/_next/static/chunks/ab02eec995295bef.js" async=""></script><script src="/_next/static/chunks/fe70e73feb07bcfd.js" async=""></script><title>500: Internal Server Error.</title><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
2
- @media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/a9c2b889c8749a94.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[40799,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"default\"]\n3:I[73006,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"default\"]\n4:I[66658,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[66658,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"ViewportBoundary\"]\n9:I[66658,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"MetadataBoundary\"]\nb:I[42726,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"xjc1tfvwTdK1Xv5Id2oaO\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/ab02eec995295bef.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/fe70e73feb07bcfd.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><!--enyZhg62FqP6oInxg1T3h--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/acdb8af5a21f1ae9.js"/><script src="/_next/static/chunks/07f00e2e73d322d2.js" async=""></script><script src="/_next/static/chunks/1887af4ad3781531.js" async=""></script><script src="/_next/static/chunks/cfe4dc9904fcfddb.js" async=""></script><script src="/_next/static/chunks/turbopack-eb24b869babb34b4.js" async=""></script><script src="/_next/static/chunks/ab02eec995295bef.js" async=""></script><script src="/_next/static/chunks/fe70e73feb07bcfd.js" async=""></script><title>500: Internal Server Error.</title><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
2
+ @media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/acdb8af5a21f1ae9.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[40799,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"default\"]\n3:I[73006,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"default\"]\n4:I[66658,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[66658,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"ViewportBoundary\"]\n9:I[66658,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"MetadataBoundary\"]\nb:I[42726,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"enyZhg62FqP6oInxg1T3h\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/ab02eec995295bef.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/fe70e73feb07bcfd.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
@@ -1 +1 @@
1
- self.__RSC_SERVER_MANIFEST="{\n \"node\": {\n \"00f283d375a68f16f486b4d96a73d29642d70e2c49\": {\n \"workers\": {\n \"app/_not-found/page\": {\n \"moduleId\": 66973,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n },\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n },\n \"app/tools/page\": {\n \"moduleId\": 19036,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n },\n \"app/version/page\": {\n \"moduleId\": 86139,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n }\n },\n \"layer\": {\n \"app/_not-found/page\": \"action-browser\",\n \"app/page\": \"action-browser\",\n \"app/tools/page\": \"action-browser\",\n \"app/version/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\",\n \"exportedName\": \"pickFolder\"\n },\n \"604b2436c25d3184a91e706af2aee635c1ebd4a82d\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"approveFeature\",\n \"filename\": \"src/presentation/web/app/actions/approve-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/approve-feature.ts\",\n \"exportedName\": \"approveFeature\"\n },\n \"606b19bfa1c0b5083719b9769235270652970ac528\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"rejectFeature\",\n \"filename\": \"src/presentation/web/app/actions/reject-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/reject-feature.ts\",\n \"exportedName\": \"rejectFeature\"\n },\n \"40ab134a3e230ca75ec945b21530996f28478eaebd\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"getFeatureArtifact\",\n \"filename\": \"src/presentation/web/app/actions/get-feature-artifact.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-feature-artifact.ts\",\n \"exportedName\": \"getFeatureArtifact\"\n },\n \"4089deaf16fedc6a345e56ad7bfc988b487e34eefa\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"getResearchArtifact\",\n \"filename\": \"src/presentation/web/app/actions/get-research-artifact.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-research-artifact.ts\",\n \"exportedName\": \"getResearchArtifact\"\n },\n \"004b4a427a9b3db7f8002cfc69e453961d25caa5c5\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"getWorkflowDefaults\",\n \"filename\": \"src/presentation/web/app/actions/get-workflow-defaults.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-workflow-defaults.ts\",\n \"exportedName\": \"getWorkflowDefaults\"\n },\n \"402a4ec8d26f9c9f41e698de41dd62bd38c3094f15\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"getMergeReviewData\",\n \"filename\": \"src/presentation/web/app/actions/get-merge-review-data.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-merge-review-data.ts\",\n \"exportedName\": \"getMergeReviewData\"\n },\n \"40548f2101be4900dc1959a49650c2e0006397bd9a\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"openIde\",\n \"filename\": \"src/presentation/web/app/actions/open-ide.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/open-ide.ts\",\n \"exportedName\": \"openIde\"\n },\n \"40586217019fa643c0babbbde4463a3cc1c92294e3\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"openShell\",\n \"filename\": \"src/presentation/web/app/actions/open-shell.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/open-shell.ts\",\n \"exportedName\": \"openShell\"\n },\n \"40515f42aff14843ca67f2bd609b840bdda32955f9\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"openFolder\",\n \"filename\": \"src/presentation/web/app/actions/open-folder.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/open-folder.ts\",\n \"exportedName\": \"openFolder\"\n },\n \"40d08b0d92d2b703d3db56e765e35375751ac01684\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"createFeature\",\n \"filename\": \"src/presentation/web/app/actions/create-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/create-feature.ts\",\n \"exportedName\": \"createFeature\"\n },\n \"4041951039830c9a9b9643f88550f93dec377c5f3f\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"deleteFeature\",\n \"filename\": \"src/presentation/web/app/actions/delete-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/delete-feature.ts\",\n \"exportedName\": \"deleteFeature\"\n },\n \"40fbe3ea2311abba27bc48c26f5508fb7025e4f58a\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"addRepository\",\n \"filename\": \"src/presentation/web/app/actions/add-repository.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/add-repository.ts\",\n \"exportedName\": \"addRepository\"\n },\n \"404aff2a63b14ad2f9b6417055e6f2ba87fe90e911\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"deleteRepository\",\n \"filename\": \"src/presentation/web/app/actions/delete-repository.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/delete-repository.ts\",\n \"exportedName\": \"deleteRepository\"\n }\n },\n \"edge\": {},\n \"encryptionKey\": \"/62RwJFHaetWcHvJhUZemNYnHwGJ6+ItihS+zZR0WQw=\"\n}"
1
+ self.__RSC_SERVER_MANIFEST="{\n \"node\": {\n \"005002b953331ef2b32b0ee2a29b030254fa27d4f8\": {\n \"workers\": {\n \"app/_not-found/page\": {\n \"moduleId\": 66973,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n },\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n },\n \"app/skills/page\": {\n \"moduleId\": 41115,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n },\n \"app/tools/page\": {\n \"moduleId\": 19036,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n },\n \"app/version/page\": {\n \"moduleId\": 86139,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n }\n },\n \"layer\": {\n \"app/_not-found/page\": \"action-browser\",\n \"app/page\": \"action-browser\",\n \"app/skills/page\": \"action-browser\",\n \"app/tools/page\": \"action-browser\",\n \"app/version/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\",\n \"exportedName\": \"pickFolder\"\n },\n \"603678ffdda82d766bd57b7cf3a44583c6af1bd731\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"approveFeature\",\n \"filename\": \"src/presentation/web/app/actions/approve-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/approve-feature.ts\",\n \"exportedName\": \"approveFeature\"\n },\n \"6088bf597ba6473c1afca4f0297666105be5a15c9e\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"rejectFeature\",\n \"filename\": \"src/presentation/web/app/actions/reject-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/reject-feature.ts\",\n \"exportedName\": \"rejectFeature\"\n },\n \"40bc811484a5f239d58ee65a0bd59328811ff2b4e3\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"getFeatureArtifact\",\n \"filename\": \"src/presentation/web/app/actions/get-feature-artifact.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-feature-artifact.ts\",\n \"exportedName\": \"getFeatureArtifact\"\n },\n \"4007171cf7da2fd054e5e014401e5c9cc36635fd04\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"getResearchArtifact\",\n \"filename\": \"src/presentation/web/app/actions/get-research-artifact.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-research-artifact.ts\",\n \"exportedName\": \"getResearchArtifact\"\n },\n \"00db78a75eeac6610a7482f83c2d6e9cf7821846dd\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"getWorkflowDefaults\",\n \"filename\": \"src/presentation/web/app/actions/get-workflow-defaults.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-workflow-defaults.ts\",\n \"exportedName\": \"getWorkflowDefaults\"\n },\n \"4090f202fed23dc9161fabe4c27979ced8bead4ba9\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"getMergeReviewData\",\n \"filename\": \"src/presentation/web/app/actions/get-merge-review-data.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-merge-review-data.ts\",\n \"exportedName\": \"getMergeReviewData\"\n },\n \"407d5afd78499db86e3eff56fdb63e778de00b36b1\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"openIde\",\n \"filename\": \"src/presentation/web/app/actions/open-ide.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/open-ide.ts\",\n \"exportedName\": \"openIde\"\n },\n \"409f8daa4548d14a38c6edfc3041836f18795b19d9\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"openShell\",\n \"filename\": \"src/presentation/web/app/actions/open-shell.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/open-shell.ts\",\n \"exportedName\": \"openShell\"\n },\n \"406dc7ef8c8774e1e72b1453fc61d10d0c28e8c665\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"openFolder\",\n \"filename\": \"src/presentation/web/app/actions/open-folder.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/open-folder.ts\",\n \"exportedName\": \"openFolder\"\n },\n \"402fada86fc26ca8ede1ba9c4c6b166807b445ec7e\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"createFeature\",\n \"filename\": \"src/presentation/web/app/actions/create-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/create-feature.ts\",\n \"exportedName\": \"createFeature\"\n },\n \"40d8a084578197cb61b49f374df7aebd4123184ee8\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"deleteFeature\",\n \"filename\": \"src/presentation/web/app/actions/delete-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/delete-feature.ts\",\n \"exportedName\": \"deleteFeature\"\n },\n \"407df636fc8220cd03b329236c8672fe57a23588d7\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"addRepository\",\n \"filename\": \"src/presentation/web/app/actions/add-repository.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/add-repository.ts\",\n \"exportedName\": \"addRepository\"\n },\n \"404d9996266111ff820086d49653feeaf03304d055\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"deleteRepository\",\n \"filename\": \"src/presentation/web/app/actions/delete-repository.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/delete-repository.ts\",\n \"exportedName\": \"deleteRepository\"\n }\n },\n \"edge\": {},\n \"encryptionKey\": \"BSWjcQYQYXudhnah0VC2q2mhJZ50qvsRRMCnweVbWwU=\"\n}"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "node": {
3
- "00f283d375a68f16f486b4d96a73d29642d70e2c49": {
3
+ "005002b953331ef2b32b0ee2a29b030254fa27d4f8": {
4
4
  "workers": {
5
5
  "app/_not-found/page": {
6
6
  "moduleId": 66973,
@@ -14,6 +14,12 @@
14
14
  "exportedName": "pickFolder",
15
15
  "filename": "src/presentation/web/app/actions/pick-folder.ts"
16
16
  },
17
+ "app/skills/page": {
18
+ "moduleId": 41115,
19
+ "async": false,
20
+ "exportedName": "pickFolder",
21
+ "filename": "src/presentation/web/app/actions/pick-folder.ts"
22
+ },
17
23
  "app/tools/page": {
18
24
  "moduleId": 19036,
19
25
  "async": false,
@@ -30,13 +36,14 @@
30
36
  "layer": {
31
37
  "app/_not-found/page": "action-browser",
32
38
  "app/page": "action-browser",
39
+ "app/skills/page": "action-browser",
33
40
  "app/tools/page": "action-browser",
34
41
  "app/version/page": "action-browser"
35
42
  },
36
43
  "filename": "src/presentation/web/app/actions/pick-folder.ts",
37
44
  "exportedName": "pickFolder"
38
45
  },
39
- "604b2436c25d3184a91e706af2aee635c1ebd4a82d": {
46
+ "603678ffdda82d766bd57b7cf3a44583c6af1bd731": {
40
47
  "workers": {
41
48
  "app/page": {
42
49
  "moduleId": 16555,
@@ -51,7 +58,7 @@
51
58
  "filename": "src/presentation/web/app/actions/approve-feature.ts",
52
59
  "exportedName": "approveFeature"
53
60
  },
54
- "606b19bfa1c0b5083719b9769235270652970ac528": {
61
+ "6088bf597ba6473c1afca4f0297666105be5a15c9e": {
55
62
  "workers": {
56
63
  "app/page": {
57
64
  "moduleId": 16555,
@@ -66,7 +73,7 @@
66
73
  "filename": "src/presentation/web/app/actions/reject-feature.ts",
67
74
  "exportedName": "rejectFeature"
68
75
  },
69
- "40ab134a3e230ca75ec945b21530996f28478eaebd": {
76
+ "40bc811484a5f239d58ee65a0bd59328811ff2b4e3": {
70
77
  "workers": {
71
78
  "app/page": {
72
79
  "moduleId": 16555,
@@ -81,7 +88,7 @@
81
88
  "filename": "src/presentation/web/app/actions/get-feature-artifact.ts",
82
89
  "exportedName": "getFeatureArtifact"
83
90
  },
84
- "4089deaf16fedc6a345e56ad7bfc988b487e34eefa": {
91
+ "4007171cf7da2fd054e5e014401e5c9cc36635fd04": {
85
92
  "workers": {
86
93
  "app/page": {
87
94
  "moduleId": 16555,
@@ -96,7 +103,7 @@
96
103
  "filename": "src/presentation/web/app/actions/get-research-artifact.ts",
97
104
  "exportedName": "getResearchArtifact"
98
105
  },
99
- "004b4a427a9b3db7f8002cfc69e453961d25caa5c5": {
106
+ "00db78a75eeac6610a7482f83c2d6e9cf7821846dd": {
100
107
  "workers": {
101
108
  "app/page": {
102
109
  "moduleId": 16555,
@@ -111,7 +118,7 @@
111
118
  "filename": "src/presentation/web/app/actions/get-workflow-defaults.ts",
112
119
  "exportedName": "getWorkflowDefaults"
113
120
  },
114
- "402a4ec8d26f9c9f41e698de41dd62bd38c3094f15": {
121
+ "4090f202fed23dc9161fabe4c27979ced8bead4ba9": {
115
122
  "workers": {
116
123
  "app/page": {
117
124
  "moduleId": 16555,
@@ -126,7 +133,7 @@
126
133
  "filename": "src/presentation/web/app/actions/get-merge-review-data.ts",
127
134
  "exportedName": "getMergeReviewData"
128
135
  },
129
- "40548f2101be4900dc1959a49650c2e0006397bd9a": {
136
+ "407d5afd78499db86e3eff56fdb63e778de00b36b1": {
130
137
  "workers": {
131
138
  "app/page": {
132
139
  "moduleId": 16555,
@@ -141,7 +148,7 @@
141
148
  "filename": "src/presentation/web/app/actions/open-ide.ts",
142
149
  "exportedName": "openIde"
143
150
  },
144
- "40586217019fa643c0babbbde4463a3cc1c92294e3": {
151
+ "409f8daa4548d14a38c6edfc3041836f18795b19d9": {
145
152
  "workers": {
146
153
  "app/page": {
147
154
  "moduleId": 16555,
@@ -156,7 +163,7 @@
156
163
  "filename": "src/presentation/web/app/actions/open-shell.ts",
157
164
  "exportedName": "openShell"
158
165
  },
159
- "40515f42aff14843ca67f2bd609b840bdda32955f9": {
166
+ "406dc7ef8c8774e1e72b1453fc61d10d0c28e8c665": {
160
167
  "workers": {
161
168
  "app/page": {
162
169
  "moduleId": 16555,
@@ -171,7 +178,7 @@
171
178
  "filename": "src/presentation/web/app/actions/open-folder.ts",
172
179
  "exportedName": "openFolder"
173
180
  },
174
- "40d08b0d92d2b703d3db56e765e35375751ac01684": {
181
+ "402fada86fc26ca8ede1ba9c4c6b166807b445ec7e": {
175
182
  "workers": {
176
183
  "app/page": {
177
184
  "moduleId": 16555,
@@ -186,7 +193,7 @@
186
193
  "filename": "src/presentation/web/app/actions/create-feature.ts",
187
194
  "exportedName": "createFeature"
188
195
  },
189
- "4041951039830c9a9b9643f88550f93dec377c5f3f": {
196
+ "40d8a084578197cb61b49f374df7aebd4123184ee8": {
190
197
  "workers": {
191
198
  "app/page": {
192
199
  "moduleId": 16555,
@@ -201,7 +208,7 @@
201
208
  "filename": "src/presentation/web/app/actions/delete-feature.ts",
202
209
  "exportedName": "deleteFeature"
203
210
  },
204
- "40fbe3ea2311abba27bc48c26f5508fb7025e4f58a": {
211
+ "407df636fc8220cd03b329236c8672fe57a23588d7": {
205
212
  "workers": {
206
213
  "app/page": {
207
214
  "moduleId": 16555,
@@ -216,7 +223,7 @@
216
223
  "filename": "src/presentation/web/app/actions/add-repository.ts",
217
224
  "exportedName": "addRepository"
218
225
  },
219
- "404aff2a63b14ad2f9b6417055e6f2ba87fe90e911": {
226
+ "404d9996266111ff820086d49653feeaf03304d055": {
220
227
  "workers": {
221
228
  "app/page": {
222
229
  "moduleId": 16555,
@@ -233,5 +240,5 @@
233
240
  }
234
241
  },
235
242
  "edge": {},
236
- "encryptionKey": "/62RwJFHaetWcHvJhUZemNYnHwGJ6+ItihS+zZR0WQw="
243
+ "encryptionKey": "BSWjcQYQYXudhnah0VC2q2mhJZ50qvsRRMCnweVbWwU="
237
244
  }
@@ -0,0 +1,12 @@
1
+ import { notFound } from 'next/navigation';
2
+ import { getSkills } from '@/lib/skills';
3
+ import { SkillsPageClient } from '@/components/features/skills';
4
+ import { featureFlags } from '@/lib/feature-flags';
5
+
6
+ export default async function SkillsPage() {
7
+ if (!featureFlags.skills) notFound();
8
+
9
+ const skills = await getSkills();
10
+
11
+ return <SkillsPageClient skills={skills} />;
12
+ }
@@ -0,0 +1,57 @@
1
+ import { useState } from 'react';
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import { CategoryFilter } from './category-filter';
4
+ import type { SkillCategory } from '@/lib/skills';
5
+
6
+ const meta: Meta<typeof CategoryFilter> = {
7
+ title: 'Features/CategoryFilter',
8
+ component: CategoryFilter,
9
+ tags: ['autodocs'],
10
+ parameters: {
11
+ layout: 'padded',
12
+ },
13
+ };
14
+
15
+ export default meta;
16
+ type Story = StoryObj<typeof CategoryFilter>;
17
+
18
+ /* ---------------------------------------------------------------------------
19
+ * Interactive wrapper — manages activeCategory state
20
+ * ------------------------------------------------------------------------- */
21
+
22
+ function InteractiveCategoryFilter({
23
+ initial,
24
+ counts,
25
+ }: {
26
+ initial: SkillCategory | null;
27
+ counts?: Record<SkillCategory, number>;
28
+ }) {
29
+ const [active, setActive] = useState<SkillCategory | null>(initial);
30
+ return <CategoryFilter activeCategory={active} onCategoryChange={setActive} counts={counts} />;
31
+ }
32
+
33
+ /* ---------------------------------------------------------------------------
34
+ * Stories
35
+ * ------------------------------------------------------------------------- */
36
+
37
+ export const AllSelected: Story = {
38
+ render: () => <InteractiveCategoryFilter initial={null} />,
39
+ };
40
+
41
+ export const WorkflowSelected: Story = {
42
+ render: () => <InteractiveCategoryFilter initial="Workflow" />,
43
+ };
44
+
45
+ export const WithCounts: Story = {
46
+ render: () => (
47
+ <InteractiveCategoryFilter
48
+ initial={null}
49
+ counts={{
50
+ Workflow: 8,
51
+ 'Code Generation': 1,
52
+ Analysis: 2,
53
+ Reference: 7,
54
+ }}
55
+ />
56
+ ),
57
+ };
@@ -0,0 +1,36 @@
1
+ import { Button } from '@/components/ui/button';
2
+ import type { SkillCategory } from '@/lib/skills';
3
+
4
+ const CATEGORIES: { label: string; value: SkillCategory | null }[] = [
5
+ { label: 'All', value: null },
6
+ { label: 'Workflow', value: 'Workflow' },
7
+ { label: 'Code Generation', value: 'Code Generation' },
8
+ { label: 'Analysis', value: 'Analysis' },
9
+ { label: 'Reference', value: 'Reference' },
10
+ ];
11
+
12
+ export interface CategoryFilterProps {
13
+ activeCategory: SkillCategory | null;
14
+ onCategoryChange: (category: SkillCategory | null) => void;
15
+ counts?: Record<SkillCategory, number>;
16
+ }
17
+
18
+ export function CategoryFilter({ activeCategory, onCategoryChange, counts }: CategoryFilterProps) {
19
+ return (
20
+ <div className="flex flex-wrap gap-2" role="group" aria-label="Filter by category">
21
+ {CATEGORIES.map(({ label, value }) => (
22
+ <Button
23
+ key={label}
24
+ variant={activeCategory === value ? 'default' : 'outline'}
25
+ size="sm"
26
+ onClick={() => onCategoryChange(value)}
27
+ >
28
+ {label}
29
+ {counts && value ? (
30
+ <span className="ml-1 text-xs opacity-70">({counts[value]})</span>
31
+ ) : null}
32
+ </Button>
33
+ ))}
34
+ </div>
35
+ );
36
+ }
@@ -0,0 +1,5 @@
1
+ export { SkillsPageClient, type SkillsPageClientProps } from './skills-page-client';
2
+ export { SkillCard, type SkillCardProps } from './skill-card';
3
+ export { CategoryFilter, type CategoryFilterProps } from './category-filter';
4
+ export { SkillList, type SkillListProps } from './skill-list';
5
+ export { SkillDetailDrawer, type SkillDetailDrawerProps } from './skill-detail-drawer';
@@ -0,0 +1,105 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { fn } from '@storybook/test';
3
+ import { SkillCard } from './skill-card';
4
+ import type { SkillData } from '@/lib/skills';
5
+
6
+ const meta: Meta<typeof SkillCard> = {
7
+ title: 'Features/SkillCard',
8
+ component: SkillCard,
9
+ tags: ['autodocs'],
10
+ parameters: {
11
+ layout: 'centered',
12
+ },
13
+ args: {
14
+ onSelect: fn(),
15
+ },
16
+ };
17
+
18
+ export default meta;
19
+ type Story = StoryObj<typeof meta>;
20
+
21
+ /* ---------------------------------------------------------------------------
22
+ * Data fixtures
23
+ * ------------------------------------------------------------------------- */
24
+
25
+ const baseSkill: SkillData = {
26
+ name: 'shep-kit:implement',
27
+ displayName: 'implement',
28
+ description: 'Validate specs and autonomously execute implementation tasks with status tracking.',
29
+ category: 'Workflow',
30
+ source: 'project',
31
+ body: '## Usage\n\nRun /shep-kit:implement after planning is complete.',
32
+ resources: [],
33
+ };
34
+
35
+ const skillWithAllBadges: SkillData = {
36
+ name: 'shep:ui-component',
37
+ displayName: 'ui-component',
38
+ description:
39
+ 'Use when creating, modifying, or reviewing web UI components. Triggers include "new component", "add component", "create UI".',
40
+ context: 'fork',
41
+ allowedTools: 'Read, Write, Bash, Edit, Glob',
42
+ category: 'Code Generation',
43
+ source: 'project',
44
+ body: '## Overview\n\nScaffolds UI components following the four-tier hierarchy.',
45
+ resources: [
46
+ { name: 'references', fileCount: 7 },
47
+ { name: 'templates', fileCount: 3 },
48
+ { name: 'rules', fileCount: 2 },
49
+ ],
50
+ };
51
+
52
+ const globalSkill: SkillData = {
53
+ name: 'vercel-react-best-practices',
54
+ displayName: 'vercel-react-best-practices',
55
+ description: 'React and Next.js performance optimization guidelines from Vercel Engineering.',
56
+ category: 'Reference',
57
+ source: 'global',
58
+ body: 'Performance patterns for React and Next.js applications.',
59
+ resources: [{ name: 'references', fileCount: 4 }],
60
+ };
61
+
62
+ const skillWithContext: SkillData = {
63
+ name: 'architecture-reviewer',
64
+ displayName: 'architecture-reviewer',
65
+ description: 'Use when making architectural decisions, planning features, or reviewing PRs.',
66
+ context: 'fork',
67
+ category: 'Analysis',
68
+ source: 'project',
69
+ body: '',
70
+ resources: [],
71
+ };
72
+
73
+ /* ---------------------------------------------------------------------------
74
+ * Stories
75
+ * ------------------------------------------------------------------------- */
76
+
77
+ export const Default: Story = {
78
+ args: {
79
+ skill: baseSkill,
80
+ },
81
+ };
82
+
83
+ export const WithContext: Story = {
84
+ args: {
85
+ skill: skillWithContext,
86
+ },
87
+ };
88
+
89
+ export const WithAllBadges: Story = {
90
+ args: {
91
+ skill: skillWithAllBadges,
92
+ },
93
+ };
94
+
95
+ export const ProjectSource: Story = {
96
+ args: {
97
+ skill: baseSkill,
98
+ },
99
+ };
100
+
101
+ export const GlobalSource: Story = {
102
+ args: {
103
+ skill: globalSkill,
104
+ },
105
+ };
@@ -0,0 +1,48 @@
1
+ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
2
+ import { Badge } from '@/components/ui/badge';
3
+ import type { SkillData } from '@/lib/skills';
4
+ import { FolderOpen } from 'lucide-react';
5
+
6
+ export interface SkillCardProps {
7
+ skill: SkillData;
8
+ onSelect: (skill: SkillData) => void;
9
+ }
10
+
11
+ export function SkillCard({ skill, onSelect }: SkillCardProps) {
12
+ return (
13
+ <Card
14
+ className="hover:border-primary/50 cursor-pointer transition-colors"
15
+ role="button"
16
+ tabIndex={0}
17
+ onClick={() => onSelect(skill)}
18
+ onKeyDown={(e) => {
19
+ if (e.key === 'Enter' || e.key === ' ') {
20
+ e.preventDefault();
21
+ onSelect(skill);
22
+ }
23
+ }}
24
+ data-testid={`skill-card-${skill.name}`}
25
+ >
26
+ <CardHeader className="pb-3">
27
+ <CardTitle className="text-base">{skill.displayName}</CardTitle>
28
+ <p className="text-muted-foreground font-mono text-xs">{skill.name}</p>
29
+ </CardHeader>
30
+ <CardContent className="space-y-3">
31
+ <p className="text-muted-foreground line-clamp-2 text-sm">{skill.description}</p>
32
+ <div className="flex flex-wrap items-center gap-1.5">
33
+ <Badge variant={skill.source === 'project' ? 'secondary' : 'outline'}>
34
+ {skill.source === 'project' ? 'Project' : 'Global'}
35
+ </Badge>
36
+ {skill.context ? <Badge variant="outline">{skill.context}</Badge> : null}
37
+ {skill.allowedTools ? <Badge variant="outline">Tools</Badge> : null}
38
+ {skill.resources.length > 0 ? (
39
+ <span className="text-muted-foreground inline-flex items-center gap-1 text-xs">
40
+ <FolderOpen className="size-3" />
41
+ {skill.resources.length} {skill.resources.length === 1 ? 'resource' : 'resources'}
42
+ </span>
43
+ ) : null}
44
+ </div>
45
+ </CardContent>
46
+ </Card>
47
+ );
48
+ }
@@ -0,0 +1,96 @@
1
+ import { useState } from 'react';
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import { SkillDetailDrawer } from './skill-detail-drawer';
4
+ import { Button } from '@/components/ui/button';
5
+ import type { SkillData } from '@/lib/skills';
6
+
7
+ const meta: Meta<typeof SkillDetailDrawer> = {
8
+ title: 'Features/SkillDetailDrawer',
9
+ component: SkillDetailDrawer,
10
+ tags: ['autodocs'],
11
+ parameters: {
12
+ layout: 'fullscreen',
13
+ },
14
+ };
15
+
16
+ export default meta;
17
+ type Story = StoryObj<typeof SkillDetailDrawer>;
18
+
19
+ /* ---------------------------------------------------------------------------
20
+ * Data fixtures
21
+ * ------------------------------------------------------------------------- */
22
+
23
+ const skillWithResources: SkillData = {
24
+ name: 'shep:ui-component',
25
+ displayName: 'ui-component',
26
+ description:
27
+ 'Use when creating, modifying, or reviewing web UI components. Triggers include "new component", "add component", "create UI", "build a widget".',
28
+ context: 'fork',
29
+ allowedTools: 'Read, Write, Bash, Edit, Glob, Grep',
30
+ category: 'Code Generation',
31
+ source: 'project',
32
+ body: '## Overview\n\nScaffolds UI components following the four-tier hierarchy.\n\n## Usage\n\nRun /shep:ui-component when you need to create or modify components.',
33
+ resources: [
34
+ { name: 'references', fileCount: 7 },
35
+ { name: 'templates', fileCount: 3 },
36
+ { name: 'rules', fileCount: 2 },
37
+ ],
38
+ };
39
+
40
+ const skillWithoutResources: SkillData = {
41
+ name: 'shep-kit:implement',
42
+ displayName: 'implement',
43
+ description:
44
+ 'Validate specs and autonomously execute implementation tasks with status tracking. Use after /shep-kit:plan when ready to start implementation.',
45
+ category: 'Workflow',
46
+ source: 'project',
47
+ body: '## Usage\n\nRun /shep-kit:implement after planning is complete to start autonomous implementation.\n\n## What it does\n\n1. Pre-Implementation Validation Gate\n2. Autonomous Execution\n3. Status Tracking',
48
+ resources: [],
49
+ };
50
+
51
+ const minimalSkill: SkillData = {
52
+ name: 'find-skills',
53
+ displayName: 'find-skills',
54
+ description: 'Helps users discover and install agent skills.',
55
+ category: 'Reference',
56
+ source: 'global',
57
+ body: '',
58
+ resources: [],
59
+ };
60
+
61
+ /* ---------------------------------------------------------------------------
62
+ * Trigger wrapper — starts closed, click to open
63
+ * ------------------------------------------------------------------------- */
64
+
65
+ function DrawerTrigger({ skill, label }: { skill: SkillData; label: string }) {
66
+ const [selected, setSelected] = useState<SkillData | null>(null);
67
+
68
+ return (
69
+ <div className="flex h-screen items-start p-4">
70
+ <Button variant="outline" onClick={() => setSelected(skill)}>
71
+ {label}
72
+ </Button>
73
+ <SkillDetailDrawer skill={selected} onClose={() => setSelected(null)} />
74
+ </div>
75
+ );
76
+ }
77
+
78
+ /* ---------------------------------------------------------------------------
79
+ * Stories
80
+ * ------------------------------------------------------------------------- */
81
+
82
+ export const Open: Story = {
83
+ render: () => <DrawerTrigger skill={skillWithResources} label="Open Skill Detail" />,
84
+ };
85
+
86
+ export const WithResources: Story = {
87
+ render: () => <DrawerTrigger skill={skillWithResources} label="Open With Resources" />,
88
+ };
89
+
90
+ export const WithoutResources: Story = {
91
+ render: () => <DrawerTrigger skill={skillWithoutResources} label="Open Without Resources" />,
92
+ };
93
+
94
+ export const MinimalSkill: Story = {
95
+ render: () => <DrawerTrigger skill={minimalSkill} label="Open Minimal Skill" />,
96
+ };