@shepai/cli 1.59.0 → 1.61.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 (339) 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/common/action-button/action-button.d.ts.map +1 -1
  5. package/dist/src/presentation/web/components/common/action-button/action-button.js +7 -1
  6. package/dist/src/presentation/web/components/common/action-button/action-button.stories.d.ts +1 -1
  7. package/dist/src/presentation/web/components/common/action-button/action-button.stories.d.ts.map +1 -1
  8. package/dist/src/presentation/web/components/common/action-button/action-button.stories.js +1 -1
  9. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.d.ts.map +1 -1
  10. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.js +10 -1
  11. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.stories.d.ts +20 -0
  12. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.stories.d.ts.map +1 -0
  13. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.stories.js +68 -0
  14. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  15. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +21 -2
  16. package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.d.ts.map +1 -1
  17. package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.js +13 -2
  18. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.d.ts.map +1 -1
  19. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.js +16 -3
  20. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.d.ts +1 -1
  21. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.d.ts.map +1 -1
  22. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.js +1 -1
  23. package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.d.ts.map +1 -1
  24. package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.js +14 -1
  25. package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.stories.d.ts +2 -0
  26. package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.stories.d.ts.map +1 -1
  27. package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.stories.js +2 -0
  28. package/dist/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.d.ts.map +1 -1
  29. package/dist/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.js +4 -1
  30. package/dist/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.stories.d.ts +1 -0
  31. package/dist/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.stories.d.ts.map +1 -1
  32. package/dist/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.stories.js +1 -0
  33. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.d.ts.map +1 -1
  34. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.js +14 -1
  35. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.d.ts +1 -1
  36. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.d.ts.map +1 -1
  37. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.js +1 -1
  38. package/dist/src/presentation/web/components/common/theme-toggle/theme-toggle.d.ts.map +1 -1
  39. package/dist/src/presentation/web/components/common/theme-toggle/theme-toggle.js +13 -0
  40. package/dist/src/presentation/web/components/common/theme-toggle/theme-toggle.stories.d.ts +2 -0
  41. package/dist/src/presentation/web/components/common/theme-toggle/theme-toggle.stories.d.ts.map +1 -1
  42. package/dist/src/presentation/web/components/common/theme-toggle/theme-toggle.stories.js +2 -0
  43. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +2 -2
  44. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  45. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +7 -13
  46. package/dist/src/presentation/web/components/features/skills/category-filter.d.ts +8 -0
  47. package/dist/src/presentation/web/components/features/skills/category-filter.d.ts.map +1 -0
  48. package/dist/src/presentation/web/components/features/skills/category-filter.js +12 -0
  49. package/dist/src/presentation/web/components/features/skills/category-filter.stories.d.ts +9 -0
  50. package/dist/src/presentation/web/components/features/skills/category-filter.stories.d.ts.map +1 -0
  51. package/dist/src/presentation/web/components/features/skills/category-filter.stories.js +36 -0
  52. package/dist/src/presentation/web/components/features/skills/index.d.ts +6 -0
  53. package/dist/src/presentation/web/components/features/skills/index.d.ts.map +1 -0
  54. package/dist/src/presentation/web/components/features/skills/index.js +5 -0
  55. package/dist/src/presentation/web/components/features/skills/skill-card.d.ts +7 -0
  56. package/dist/src/presentation/web/components/features/skills/skill-card.d.ts.map +1 -0
  57. package/dist/src/presentation/web/components/features/skills/skill-card.js +12 -0
  58. package/dist/src/presentation/web/components/features/skills/skill-card.stories.d.ts +11 -0
  59. package/dist/src/presentation/web/components/features/skills/skill-card.stories.d.ts.map +1 -0
  60. package/dist/src/presentation/web/components/features/skills/skill-card.stories.js +88 -0
  61. package/dist/src/presentation/web/components/features/skills/skill-detail-drawer.d.ts +7 -0
  62. package/dist/src/presentation/web/components/features/skills/skill-detail-drawer.d.ts.map +1 -0
  63. package/dist/src/presentation/web/components/features/skills/skill-detail-drawer.js +13 -0
  64. package/dist/src/presentation/web/components/features/skills/skill-detail-drawer.stories.d.ts +10 -0
  65. package/dist/src/presentation/web/components/features/skills/skill-detail-drawer.stories.d.ts.map +1 -0
  66. package/dist/src/presentation/web/components/features/skills/skill-detail-drawer.stories.js +71 -0
  67. package/dist/src/presentation/web/components/features/skills/skill-list.d.ts +7 -0
  68. package/dist/src/presentation/web/components/features/skills/skill-list.d.ts.map +1 -0
  69. package/dist/src/presentation/web/components/features/skills/skill-list.js +21 -0
  70. package/dist/src/presentation/web/components/features/skills/skill-list.stories.d.ts +9 -0
  71. package/dist/src/presentation/web/components/features/skills/skill-list.stories.d.ts.map +1 -0
  72. package/dist/src/presentation/web/components/features/skills/skill-list.stories.js +124 -0
  73. package/dist/src/presentation/web/components/features/skills/skills-page-client.d.ts +6 -0
  74. package/dist/src/presentation/web/components/features/skills/skills-page-client.d.ts.map +1 -0
  75. package/dist/src/presentation/web/components/features/skills/skills-page-client.js +52 -0
  76. package/dist/src/presentation/web/components/features/skills/skills-page-client.stories.d.ts +16 -0
  77. package/dist/src/presentation/web/components/features/skills/skills-page-client.stories.d.ts.map +1 -0
  78. package/dist/src/presentation/web/components/features/skills/skills-page-client.stories.js +186 -0
  79. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
  80. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +3 -2
  81. package/dist/src/presentation/web/hooks/use-notifications.d.ts.map +1 -1
  82. package/dist/src/presentation/web/hooks/use-notifications.js +18 -18
  83. package/dist/src/presentation/web/hooks/use-sound-action.d.ts +100 -0
  84. package/dist/src/presentation/web/hooks/use-sound-action.d.ts.map +1 -0
  85. package/dist/src/presentation/web/hooks/use-sound-action.js +42 -0
  86. package/dist/src/presentation/web/hooks/use-sound-action.stories.d.ts +6 -0
  87. package/dist/src/presentation/web/hooks/use-sound-action.stories.d.ts.map +1 -0
  88. package/dist/src/presentation/web/hooks/use-sound-action.stories.js +61 -0
  89. package/dist/src/presentation/web/lib/feature-flags.d.ts +10 -0
  90. package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -0
  91. package/dist/src/presentation/web/lib/feature-flags.js +12 -0
  92. package/dist/src/presentation/web/lib/skills.d.ts +30 -0
  93. package/dist/src/presentation/web/lib/skills.d.ts.map +1 -0
  94. package/dist/src/presentation/web/lib/skills.js +137 -0
  95. package/dist/tsconfig.build.tsbuildinfo +1 -1
  96. package/package.json +1 -1
  97. package/web/.next/BUILD_ID +1 -1
  98. package/web/.next/app-path-routes-manifest.json +1 -0
  99. package/web/.next/build-manifest.json +4 -4
  100. package/web/.next/cache/.previewinfo +1 -1
  101. package/web/.next/cache/.rscinfo +1 -1
  102. package/web/.next/cache/.tsbuildinfo +1 -1
  103. package/web/.next/cache/config.json +3 -3
  104. package/web/.next/fallback-build-manifest.json +2 -2
  105. package/web/.next/prerender-manifest.json +3 -3
  106. package/web/.next/required-server-files.js +1 -1
  107. package/web/.next/required-server-files.json +1 -1
  108. package/web/.next/routes-manifest.json +6 -0
  109. package/web/.next/server/app/_global-error/page/build-manifest.json +2 -2
  110. package/web/.next/server/app/_global-error.html +2 -2
  111. package/web/.next/server/app/_global-error.rsc +1 -1
  112. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  113. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  114. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  115. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  116. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  117. package/web/.next/server/app/_not-found/page/build-manifest.json +2 -2
  118. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  119. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  120. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  121. package/web/.next/server/app/api/tools/[id]/install/route.js +1 -1
  122. package/web/.next/server/app/api/tools/[id]/install/route.js.nft.json +1 -1
  123. package/web/.next/server/app/page/build-manifest.json +2 -2
  124. package/web/.next/server/app/page/server-reference-manifest.json +14 -14
  125. package/web/.next/server/app/page.js +1 -1
  126. package/web/.next/server/app/page.js.nft.json +1 -1
  127. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  128. package/web/.next/server/app/skills/page/app-paths-manifest.json +3 -0
  129. package/web/.next/server/app/skills/page/build-manifest.json +17 -0
  130. package/web/.next/server/app/skills/page/next-font-manifest.json +6 -0
  131. package/web/.next/server/app/skills/page/react-loadable-manifest.json +1 -0
  132. package/web/.next/server/app/skills/page/server-reference-manifest.json +20 -0
  133. package/web/.next/server/app/skills/page.js +16 -0
  134. package/web/.next/server/app/skills/page.js.map +5 -0
  135. package/web/.next/server/app/skills/page.js.nft.json +1 -0
  136. package/web/.next/server/app/skills/page_client-reference-manifest.js +2 -0
  137. package/web/.next/server/app/tools/page/build-manifest.json +2 -2
  138. package/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
  139. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  140. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  141. package/web/.next/server/app/version/page/build-manifest.json +2 -2
  142. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  143. package/web/.next/server/app/version/page.js.nft.json +1 -1
  144. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  145. package/web/.next/server/app-paths-manifest.json +1 -0
  146. package/web/.next/server/chunks/{[root-of-the-server]__bb619083._.js → [root-of-the-server]__e926de65._.js} +2 -2
  147. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
  148. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js.map +1 -1
  149. package/web/.next/server/chunks/ssr/[root-of-the-server]__2395adc6._.js +3 -0
  150. package/web/.next/server/chunks/ssr/[root-of-the-server]__2395adc6._.js.map +1 -0
  151. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  152. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  153. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  154. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  155. package/web/.next/server/chunks/ssr/[root-of-the-server]__87fda958._.js +3 -0
  156. package/web/.next/server/chunks/ssr/[root-of-the-server]__87fda958._.js.map +1 -0
  157. package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +4 -4
  158. package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js.map +1 -1
  159. package/web/.next/server/chunks/ssr/{[root-of-the-server]__86c7bba5._.js → [root-of-the-server]__b6839c3f._.js} +3 -3
  160. package/web/.next/server/chunks/ssr/{[root-of-the-server]__86c7bba5._.js.map → [root-of-the-server]__b6839c3f._.js.map} +1 -1
  161. package/web/.next/server/chunks/ssr/[root-of-the-server]__da0ade1f._.js +4 -0
  162. package/web/.next/server/chunks/ssr/[root-of-the-server]__da0ade1f._.js.map +1 -0
  163. package/web/.next/server/chunks/ssr/[root-of-the-server]__edca9510._.js +3 -0
  164. package/web/.next/server/chunks/ssr/[root-of-the-server]__edca9510._.js.map +1 -0
  165. package/web/.next/server/chunks/ssr/[root-of-the-server]__ee7cffe1._.js +3 -0
  166. package/web/.next/server/chunks/ssr/[root-of-the-server]__ee7cffe1._.js.map +1 -0
  167. package/web/.next/server/chunks/ssr/[root-of-the-server]__fbc89707._.js +1 -1
  168. package/web/.next/server/chunks/ssr/_380c6567._.js +6 -0
  169. package/web/.next/server/chunks/ssr/_380c6567._.js.map +1 -0
  170. package/web/.next/server/chunks/ssr/_44cce4e0._.js +4 -0
  171. package/web/.next/server/chunks/ssr/_44cce4e0._.js.map +1 -0
  172. package/web/.next/server/chunks/ssr/_9915d2a7._.js +3 -0
  173. package/web/.next/server/chunks/ssr/_9915d2a7._.js.map +1 -0
  174. package/web/.next/server/chunks/ssr/_a64b7b24._.js +3 -0
  175. package/web/.next/server/chunks/ssr/{_e242b954._.js.map → _a64b7b24._.js.map} +1 -1
  176. package/web/.next/server/chunks/ssr/_d3711354._.js +6 -0
  177. package/web/.next/server/chunks/ssr/_d3711354._.js.map +1 -0
  178. package/web/.next/server/chunks/ssr/_e7a4b0e4._.js +3 -0
  179. package/web/.next/server/chunks/ssr/_e7a4b0e4._.js.map +1 -0
  180. 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
  181. package/web/.next/server/chunks/ssr/node_modules__pnpm_fe355030._.js.map +1 -0
  182. package/web/.next/server/chunks/ssr/src_presentation_web_components_0286756b._.js +3 -0
  183. package/web/.next/server/chunks/ssr/src_presentation_web_components_0286756b._.js.map +1 -0
  184. package/web/.next/server/middleware-build-manifest.js +2 -2
  185. package/web/.next/server/pages/500.html +2 -2
  186. package/web/.next/server/server-reference-manifest.js +1 -1
  187. package/web/.next/server/server-reference-manifest.json +22 -15
  188. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  189. package/web/.next/standalone/src/presentation/web/.next/app-path-routes-manifest.json +1 -0
  190. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +4 -4
  191. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  192. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  193. package/web/.next/standalone/src/presentation/web/.next/routes-manifest.json +6 -0
  194. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page/build-manifest.json +2 -2
  195. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  196. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  197. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  198. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  199. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  200. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  201. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  202. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/build-manifest.json +2 -2
  203. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  204. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  205. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  206. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/route.js +1 -1
  207. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/route.js.nft.json +1 -1
  208. package/web/.next/standalone/src/presentation/web/.next/server/app/page/build-manifest.json +2 -2
  209. package/web/.next/standalone/src/presentation/web/.next/server/app/page/server-reference-manifest.json +14 -14
  210. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js +1 -1
  211. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js.nft.json +1 -1
  212. package/web/.next/standalone/src/presentation/web/.next/server/app/page_client-reference-manifest.js +1 -1
  213. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/app-paths-manifest.json +3 -0
  214. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/build-manifest.json +17 -0
  215. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/next-font-manifest.json +6 -0
  216. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/react-loadable-manifest.json +1 -0
  217. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +20 -0
  218. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js +16 -0
  219. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.map +5 -0
  220. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -0
  221. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +2 -0
  222. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/build-manifest.json +2 -2
  223. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
  224. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
  225. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  226. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/build-manifest.json +2 -2
  227. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  228. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
  229. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  230. package/web/.next/standalone/src/presentation/web/.next/server/app-paths-manifest.json +1 -0
  231. package/web/.next/standalone/src/presentation/web/.next/server/chunks/{[root-of-the-server]__bb619083._.js → [root-of-the-server]__e926de65._.js} +2 -2
  232. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
  233. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__2395adc6._.js +3 -0
  234. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  235. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  236. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__87fda958._.js +3 -0
  237. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +4 -4
  238. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{[root-of-the-server]__86c7bba5._.js → [root-of-the-server]__b6839c3f._.js} +3 -3
  239. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__da0ade1f._.js +4 -0
  240. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__edca9510._.js +3 -0
  241. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__ee7cffe1._.js +3 -0
  242. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__fbc89707._.js +1 -1
  243. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_380c6567._.js +6 -0
  244. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_44cce4e0._.js +4 -0
  245. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9915d2a7._.js +3 -0
  246. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_a64b7b24._.js +3 -0
  247. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_d3711354._.js +6 -0
  248. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_e7a4b0e4._.js +3 -0
  249. 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
  250. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_0286756b._.js +3 -0
  251. package/web/.next/standalone/src/presentation/web/.next/server/middleware-build-manifest.js +2 -2
  252. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  253. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  254. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +22 -15
  255. package/web/.next/standalone/src/presentation/web/app/skills/page.tsx +12 -0
  256. package/web/.next/standalone/src/presentation/web/components/common/action-button/action-button.stories.tsx +1 -1
  257. package/web/.next/standalone/src/presentation/web/components/common/action-button/action-button.tsx +9 -1
  258. package/web/.next/standalone/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.stories.tsx +82 -0
  259. package/web/.next/standalone/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.tsx +16 -2
  260. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx +27 -3
  261. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer/feature-drawer.tsx +14 -2
  262. package/web/.next/standalone/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.tsx +1 -1
  263. package/web/.next/standalone/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.tsx +17 -4
  264. package/web/.next/standalone/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.stories.tsx +2 -0
  265. package/web/.next/standalone/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.tsx +14 -1
  266. package/web/.next/standalone/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.stories.tsx +1 -0
  267. package/web/.next/standalone/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.tsx +6 -1
  268. package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.tsx +1 -1
  269. package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.tsx +14 -1
  270. package/web/.next/standalone/src/presentation/web/components/common/theme-toggle/theme-toggle.stories.tsx +2 -0
  271. package/web/.next/standalone/src/presentation/web/components/common/theme-toggle/theme-toggle.tsx +14 -0
  272. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +2 -2
  273. package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +7 -12
  274. package/web/.next/standalone/src/presentation/web/components/features/skills/category-filter.stories.tsx +57 -0
  275. package/web/.next/standalone/src/presentation/web/components/features/skills/category-filter.tsx +36 -0
  276. package/web/.next/standalone/src/presentation/web/components/features/skills/index.ts +5 -0
  277. package/web/.next/standalone/src/presentation/web/components/features/skills/skill-card.stories.tsx +105 -0
  278. package/web/.next/standalone/src/presentation/web/components/features/skills/skill-card.tsx +48 -0
  279. package/web/.next/standalone/src/presentation/web/components/features/skills/skill-detail-drawer.stories.tsx +96 -0
  280. package/web/.next/standalone/src/presentation/web/components/features/skills/skill-detail-drawer.tsx +100 -0
  281. package/web/.next/standalone/src/presentation/web/components/features/skills/skill-list.stories.tsx +139 -0
  282. package/web/.next/standalone/src/presentation/web/components/features/skills/skill-list.tsx +48 -0
  283. package/web/.next/standalone/src/presentation/web/components/features/skills/skills-page-client.stories.tsx +199 -0
  284. package/web/.next/standalone/src/presentation/web/components/features/skills/skills-page-client.tsx +112 -0
  285. package/web/.next/standalone/src/presentation/web/components/layouts/app-sidebar/app-sidebar.tsx +10 -1
  286. package/web/.next/standalone/src/presentation/web/hooks/use-notifications.ts +20 -19
  287. package/web/.next/standalone/src/presentation/web/hooks/use-sound-action.stories.tsx +107 -0
  288. package/web/.next/standalone/src/presentation/web/hooks/use-sound-action.ts +53 -0
  289. package/web/.next/standalone/src/presentation/web/lib/feature-flags.ts +14 -0
  290. package/web/.next/standalone/src/presentation/web/lib/skills.ts +188 -0
  291. package/web/.next/standalone/src/presentation/web/package.json +2 -0
  292. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  293. package/web/.next/static/chunks/09d898be63c54f20.js +1 -0
  294. package/web/.next/static/chunks/13664c029245afc8.js +1 -0
  295. package/web/.next/static/chunks/25f42652257ff43d.js +1 -0
  296. package/web/.next/static/chunks/2934854f0378f815.js +1 -0
  297. package/web/.next/static/chunks/2960a70537e4fd12.js +10 -0
  298. package/web/.next/static/chunks/45f510f84c7c417d.css +2 -0
  299. package/web/.next/static/chunks/79718b1f5713fdc0.js +1 -0
  300. package/web/.next/static/chunks/acdb8af5a21f1ae9.js +1 -0
  301. package/web/.next/static/chunks/{3d4dcf0be654a331.js → cb1b27e4a21415d3.js} +2 -2
  302. package/web/.next/static/chunks/d4379644a6145352.js +1 -0
  303. package/web/.next/static/chunks/{turbopack-6a11f2f1634ff6e0.js → turbopack-eb24b869babb34b4.js} +2 -2
  304. package/web/.next/trace +1 -1
  305. package/web/.next/trace-build +1 -1
  306. package/web/.next/types/link.d.ts +1 -0
  307. package/web/.next/types/routes.d.ts +2 -1
  308. package/web/.next/types/validator.ts +9 -0
  309. package/web/package.json +2 -0
  310. package/web/.next/server/chunks/ssr/[root-of-the-server]__bced1185._.js +0 -3
  311. package/web/.next/server/chunks/ssr/[root-of-the-server]__bced1185._.js.map +0 -1
  312. package/web/.next/server/chunks/ssr/[root-of-the-server]__d21f0894._.js +0 -3
  313. package/web/.next/server/chunks/ssr/[root-of-the-server]__d21f0894._.js.map +0 -1
  314. package/web/.next/server/chunks/ssr/_027596cf._.js +0 -6
  315. package/web/.next/server/chunks/ssr/_027596cf._.js.map +0 -1
  316. package/web/.next/server/chunks/ssr/_e242b954._.js +0 -3
  317. package/web/.next/server/chunks/ssr/node_modules__pnpm_d26a7485._.js.map +0 -1
  318. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +0 -3
  319. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +0 -1
  320. package/web/.next/server/chunks/ssr/src_presentation_web_components_ec3b0a65._.js +0 -3
  321. package/web/.next/server/chunks/ssr/src_presentation_web_components_ec3b0a65._.js.map +0 -1
  322. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__bced1185._.js +0 -3
  323. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__d21f0894._.js +0 -3
  324. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_027596cf._.js +0 -6
  325. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_e242b954._.js +0 -3
  326. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +0 -3
  327. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_ec3b0a65._.js +0 -3
  328. package/web/.next/static/chunks/0cd7c513169faee3.js +0 -1
  329. package/web/.next/static/chunks/4f7d89c9e09aed99.js +0 -10
  330. package/web/.next/static/chunks/67459433cc866344.js +0 -1
  331. package/web/.next/static/chunks/6d33cb9af6245c98.js +0 -1
  332. package/web/.next/static/chunks/a9c2b889c8749a94.js +0 -1
  333. package/web/.next/static/chunks/b511c65023ec1889.css +0 -2
  334. package/web/.next/static/chunks/cda11a2491d519fc.js +0 -1
  335. package/web/.next/static/chunks/d85b95e893db08bc.js +0 -1
  336. /package/web/.next/server/chunks/{[root-of-the-server]__bb619083._.js.map → [root-of-the-server]__e926de65._.js.map} +0 -0
  337. /package/web/.next/static/{xjc1tfvwTdK1Xv5Id2oaO → _DBWexyU1QkK02q15qod2}/_buildManifest.js +0 -0
  338. /package/web/.next/static/{xjc1tfvwTdK1Xv5Id2oaO → _DBWexyU1QkK02q15qod2}/_clientMiddlewareManifest.json +0 -0
  339. /package/web/.next/static/{xjc1tfvwTdK1Xv5Id2oaO → _DBWexyU1QkK02q15qod2}/_ssgManifest.js +0 -0
@@ -0,0 +1,124 @@
1
+ import { fn } from '@storybook/test';
2
+ import { SkillList } from './skill-list.js';
3
+ const meta = {
4
+ title: 'Features/SkillList',
5
+ component: SkillList,
6
+ tags: ['autodocs'],
7
+ parameters: {
8
+ layout: 'padded',
9
+ },
10
+ args: {
11
+ onSkillSelect: fn(),
12
+ },
13
+ };
14
+ export default meta;
15
+ /* ---------------------------------------------------------------------------
16
+ * Data fixtures
17
+ * ------------------------------------------------------------------------- */
18
+ const workflowSkills = [
19
+ {
20
+ name: 'shep-kit:implement',
21
+ displayName: 'implement',
22
+ description: 'Validate specs and autonomously execute implementation tasks.',
23
+ category: 'Workflow',
24
+ source: 'project',
25
+ body: '',
26
+ resources: [],
27
+ },
28
+ {
29
+ name: 'shep-kit:plan',
30
+ displayName: 'plan',
31
+ description: 'Create implementation plan and task breakdown.',
32
+ category: 'Workflow',
33
+ source: 'project',
34
+ body: '',
35
+ resources: [],
36
+ },
37
+ {
38
+ name: 'shep-kit:research',
39
+ displayName: 'research',
40
+ description: 'Analyze technical approach, evaluate libraries, document decisions.',
41
+ category: 'Workflow',
42
+ source: 'project',
43
+ body: '',
44
+ resources: [],
45
+ },
46
+ ];
47
+ const codeGenSkills = [
48
+ {
49
+ name: 'shep:ui-component',
50
+ displayName: 'ui-component',
51
+ description: 'Use when creating, modifying, or reviewing web UI components.',
52
+ context: 'fork',
53
+ allowedTools: 'Read, Write, Bash, Edit, Glob',
54
+ category: 'Code Generation',
55
+ source: 'project',
56
+ body: '',
57
+ resources: [{ name: 'references', fileCount: 7 }],
58
+ },
59
+ ];
60
+ const analysisSkills = [
61
+ {
62
+ name: 'architecture-reviewer',
63
+ displayName: 'architecture-reviewer',
64
+ description: 'Use when making architectural decisions or reviewing PRs.',
65
+ context: 'fork',
66
+ category: 'Analysis',
67
+ source: 'project',
68
+ body: '',
69
+ resources: [],
70
+ },
71
+ {
72
+ name: 'cross-validate-artifacts',
73
+ displayName: 'cross-validate-artifacts',
74
+ description: 'Cross-validate documentation and artifacts for consistency.',
75
+ category: 'Analysis',
76
+ source: 'project',
77
+ body: '',
78
+ resources: [],
79
+ },
80
+ ];
81
+ const referenceSkills = [
82
+ {
83
+ name: 'shadcn-ui',
84
+ displayName: 'shadcn-ui',
85
+ description: 'Complete shadcn/ui component library patterns.',
86
+ category: 'Reference',
87
+ source: 'project',
88
+ body: '',
89
+ resources: [{ name: 'references', fileCount: 3 }],
90
+ },
91
+ {
92
+ name: 'vercel-react-best-practices',
93
+ displayName: 'vercel-react-best-practices',
94
+ description: 'React and Next.js performance optimization guidelines.',
95
+ category: 'Reference',
96
+ source: 'global',
97
+ body: '',
98
+ resources: [{ name: 'references', fileCount: 4 }],
99
+ },
100
+ ];
101
+ const allSkills = [
102
+ ...workflowSkills,
103
+ ...codeGenSkills,
104
+ ...analysisSkills,
105
+ ...referenceSkills,
106
+ ];
107
+ /* ---------------------------------------------------------------------------
108
+ * Stories
109
+ * ------------------------------------------------------------------------- */
110
+ export const Default = {
111
+ args: {
112
+ skills: allSkills,
113
+ },
114
+ };
115
+ export const SingleCategory = {
116
+ args: {
117
+ skills: workflowSkills,
118
+ },
119
+ };
120
+ export const Empty = {
121
+ args: {
122
+ skills: [],
123
+ },
124
+ };
@@ -0,0 +1,6 @@
1
+ import type { SkillData } from '../../../lib/skills.js';
2
+ export interface SkillsPageClientProps {
3
+ skills: SkillData[];
4
+ }
5
+ export declare function SkillsPageClient({ skills }: SkillsPageClientProps): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=skills-page-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-page-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/skills/skills-page-client.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAeD,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,qBAAqB,2CAiFjE"}
@@ -0,0 +1,52 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState, useMemo } from 'react';
4
+ import { Search, Puzzle } from 'lucide-react';
5
+ import { Input } from '../../ui/input.js';
6
+ import { Button } from '../../ui/button.js';
7
+ import { PageHeader } from '../../common/page-header/index.js';
8
+ import { EmptyState } from '../../common/empty-state/index.js';
9
+ import { SkillList } from './skill-list.js';
10
+ import { CategoryFilter } from './category-filter.js';
11
+ import { SkillDetailDrawer } from './skill-detail-drawer.js';
12
+ function computeCategoryCounts(skills) {
13
+ const counts = {
14
+ Workflow: 0,
15
+ 'Code Generation': 0,
16
+ Analysis: 0,
17
+ Reference: 0,
18
+ };
19
+ for (const skill of skills) {
20
+ counts[skill.category]++;
21
+ }
22
+ return counts;
23
+ }
24
+ export function SkillsPageClient({ skills }) {
25
+ const [searchQuery, setSearchQuery] = useState('');
26
+ const [activeCategory, setActiveCategory] = useState(null);
27
+ const [selectedSkill, setSelectedSkill] = useState(null);
28
+ const categoryCounts = useMemo(() => computeCategoryCounts(skills), [skills]);
29
+ const filteredSkills = useMemo(() => {
30
+ const query = searchQuery.toLowerCase();
31
+ return skills.filter((skill) => {
32
+ if (activeCategory && skill.category !== activeCategory)
33
+ return false;
34
+ if (query) {
35
+ const matchesName = skill.name.toLowerCase().includes(query);
36
+ const matchesDescription = skill.description.toLowerCase().includes(query);
37
+ if (!matchesName && !matchesDescription)
38
+ return false;
39
+ }
40
+ return true;
41
+ });
42
+ }, [skills, searchQuery, activeCategory]);
43
+ const clearFilters = () => {
44
+ setSearchQuery('');
45
+ setActiveCategory(null);
46
+ };
47
+ // No skills installed at all
48
+ if (skills.length === 0) {
49
+ return (_jsxs("div", { className: "flex flex-col gap-6 p-6", children: [_jsx(PageHeader, { title: "Skills", description: "Claude Code skills installed in this project" }), _jsx(EmptyState, { icon: _jsx(Puzzle, { className: "size-10" }), title: "No skills found", description: "No Claude Code skills are installed. Add skills to .claude/skills/ to get started." })] }));
50
+ }
51
+ return (_jsxs("div", { className: "flex flex-col gap-6 p-6", children: [_jsx(PageHeader, { title: "Skills", description: "Claude Code skills installed in this project" }), _jsxs("div", { className: "relative", children: [_jsx(Search, { className: "text-muted-foreground absolute top-1/2 left-3 size-4 -translate-y-1/2" }), _jsx(Input, { placeholder: "Search skills...", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), className: "pl-9" })] }), _jsx(CategoryFilter, { activeCategory: activeCategory, onCategoryChange: setActiveCategory, counts: categoryCounts }), filteredSkills.length > 0 ? (_jsx(SkillList, { skills: filteredSkills, onSkillSelect: setSelectedSkill })) : (_jsx(EmptyState, { icon: _jsx(Search, { className: "size-10" }), title: "No matching skills", description: "No skills match your current search and filter criteria.", action: _jsx(Button, { variant: "outline", onClick: clearFilters, children: "Clear filters" }) })), _jsx(SkillDetailDrawer, { skill: selectedSkill, onClose: () => setSelectedSkill(null) })] }));
52
+ }
@@ -0,0 +1,16 @@
1
+ import type { StoryObj } from '@storybook/react';
2
+ import { SkillsPageClient } from './skills-page-client.js';
3
+ declare const meta: {
4
+ title: string;
5
+ component: typeof SkillsPageClient;
6
+ tags: string[];
7
+ parameters: {
8
+ layout: string;
9
+ };
10
+ };
11
+ export default meta;
12
+ type Story = StoryObj<typeof meta>;
13
+ export declare const Default: Story;
14
+ export declare const Empty: Story;
15
+ export declare const ManySkills: Story;
16
+ //# sourceMappingURL=skills-page-client.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-page-client.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/skills/skills-page-client.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,QAAA,MAAM,IAAI;;;;;;;CAO+B,CAAC;AAE1C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAwKnC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAInB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAIxB,CAAC"}
@@ -0,0 +1,186 @@
1
+ import { SkillsPageClient } from './skills-page-client.js';
2
+ const meta = {
3
+ title: 'Features/SkillsPageClient',
4
+ component: SkillsPageClient,
5
+ tags: ['autodocs'],
6
+ parameters: {
7
+ layout: 'fullscreen',
8
+ },
9
+ };
10
+ export default meta;
11
+ /* ---------------------------------------------------------------------------
12
+ * Data fixtures
13
+ * ------------------------------------------------------------------------- */
14
+ const sampleSkills = [
15
+ {
16
+ name: 'shep-kit:implement',
17
+ displayName: 'implement',
18
+ description: 'Validate specs and autonomously execute implementation tasks with status tracking.',
19
+ category: 'Workflow',
20
+ source: 'project',
21
+ body: '## Usage\n\nRun /shep-kit:implement after planning is complete.',
22
+ resources: [],
23
+ },
24
+ {
25
+ name: 'shep-kit:plan',
26
+ displayName: 'plan',
27
+ description: 'Create implementation plan and task breakdown.',
28
+ category: 'Workflow',
29
+ source: 'project',
30
+ body: '',
31
+ resources: [],
32
+ },
33
+ {
34
+ name: 'shep-kit:research',
35
+ displayName: 'research',
36
+ description: 'Analyze technical approach, evaluate libraries, document decisions.',
37
+ category: 'Workflow',
38
+ source: 'project',
39
+ body: '',
40
+ resources: [],
41
+ },
42
+ {
43
+ name: 'shep:ui-component',
44
+ displayName: 'ui-component',
45
+ description: 'Use when creating, modifying, or reviewing web UI components.',
46
+ context: 'fork',
47
+ allowedTools: 'Read, Write, Bash, Edit, Glob',
48
+ category: 'Code Generation',
49
+ source: 'project',
50
+ body: '',
51
+ resources: [
52
+ { name: 'references', fileCount: 7 },
53
+ { name: 'templates', fileCount: 3 },
54
+ ],
55
+ },
56
+ {
57
+ name: 'architecture-reviewer',
58
+ displayName: 'architecture-reviewer',
59
+ description: 'Use when making architectural decisions, planning features, or reviewing PRs.',
60
+ context: 'fork',
61
+ category: 'Analysis',
62
+ source: 'project',
63
+ body: '',
64
+ resources: [],
65
+ },
66
+ {
67
+ name: 'cross-validate-artifacts',
68
+ displayName: 'cross-validate-artifacts',
69
+ description: 'Cross-validate documentation and artifacts for consistency.',
70
+ category: 'Analysis',
71
+ source: 'project',
72
+ body: '',
73
+ resources: [],
74
+ },
75
+ {
76
+ name: 'shadcn-ui',
77
+ displayName: 'shadcn-ui',
78
+ description: 'Complete shadcn/ui component library patterns and implementation.',
79
+ category: 'Reference',
80
+ source: 'project',
81
+ body: '',
82
+ resources: [{ name: 'references', fileCount: 3 }],
83
+ },
84
+ {
85
+ name: 'vercel-react-best-practices',
86
+ displayName: 'vercel-react-best-practices',
87
+ description: 'React and Next.js performance optimization guidelines from Vercel Engineering.',
88
+ category: 'Reference',
89
+ source: 'global',
90
+ body: '',
91
+ resources: [{ name: 'references', fileCount: 4 }],
92
+ },
93
+ ];
94
+ const manySkills = [
95
+ ...sampleSkills,
96
+ {
97
+ name: 'shep-kit:commit-pr',
98
+ displayName: 'commit-pr',
99
+ description: 'Use when ready to commit, push, and create a PR with CI verification.',
100
+ category: 'Workflow',
101
+ source: 'project',
102
+ body: '',
103
+ resources: [],
104
+ },
105
+ {
106
+ name: 'shep-kit:new-feature',
107
+ displayName: 'new-feature',
108
+ description: 'Use when starting any new feature, functionality, or enhancement.',
109
+ category: 'Workflow',
110
+ source: 'project',
111
+ body: '',
112
+ resources: [],
113
+ },
114
+ {
115
+ name: 'shep-kit:new-feature-fast',
116
+ displayName: 'new-feature-fast',
117
+ description: 'Fast-track feature creation that collapses new-feature, research, and planning.',
118
+ category: 'Workflow',
119
+ source: 'project',
120
+ body: '',
121
+ resources: [],
122
+ },
123
+ {
124
+ name: 'shep-kit:merged',
125
+ displayName: 'merged',
126
+ description: 'Use after a PR has been merged to clean up branches.',
127
+ category: 'Workflow',
128
+ source: 'project',
129
+ body: '',
130
+ resources: [],
131
+ },
132
+ {
133
+ name: 'mermaid-diagrams',
134
+ displayName: 'mermaid-diagrams',
135
+ description: 'Comprehensive guide for creating software diagrams using Mermaid syntax.',
136
+ category: 'Reference',
137
+ source: 'project',
138
+ body: '',
139
+ resources: [{ name: 'references', fileCount: 2 }],
140
+ },
141
+ {
142
+ name: 'react-flow',
143
+ displayName: 'react-flow',
144
+ description: 'React Flow for workflow visualization with custom nodes and edges.',
145
+ category: 'Reference',
146
+ source: 'project',
147
+ body: '',
148
+ resources: [],
149
+ },
150
+ {
151
+ name: 'tsp-model',
152
+ displayName: 'tsp-model',
153
+ description: 'Use when creating, modifying, or documenting TypeSpec domain models.',
154
+ category: 'Reference',
155
+ source: 'project',
156
+ body: '',
157
+ resources: [{ name: 'references', fileCount: 5 }],
158
+ },
159
+ {
160
+ name: 'find-skills',
161
+ displayName: 'find-skills',
162
+ description: 'Helps users discover and install agent skills.',
163
+ category: 'Reference',
164
+ source: 'global',
165
+ body: '',
166
+ resources: [],
167
+ },
168
+ ];
169
+ /* ---------------------------------------------------------------------------
170
+ * Stories
171
+ * ------------------------------------------------------------------------- */
172
+ export const Default = {
173
+ args: {
174
+ skills: sampleSkills,
175
+ },
176
+ };
177
+ export const Empty = {
178
+ args: {
179
+ skills: [],
180
+ },
181
+ };
182
+ export const ManySkills = {
183
+ args: {
184
+ skills: manySkills,
185
+ },
186
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"app-sidebar.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/app-sidebar/app-sidebar.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAG/E,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;CAClC;AAED,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,mBAAmB,GACpB,EAAE,eAAe,2CA+FjB"}
1
+ {"version":3,"file":"app-sidebar.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/app-sidebar/app-sidebar.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAI/E,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;CAClC;AAED,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,mBAAmB,GACpB,EAAE,eAAe,2CAuGjB"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { usePathname } from 'next/navigation';
4
- import { Home, Wrench, Plus } from 'lucide-react';
4
+ import { Home, Wrench, Puzzle, Plus } from 'lucide-react';
5
5
  import { Sidebar, SidebarHeader, SidebarContent, SidebarFooter, SidebarMenu, SidebarMenuItem, SidebarMenuButton, SidebarRail, useSidebar, } from '../../ui/sidebar.js';
6
6
  import { ScrollArea } from '../../ui/scroll-area.js';
7
7
  import { SidebarNavItem } from '../../common/sidebar-nav-item/index.js';
@@ -12,6 +12,7 @@ import { FeatureStatusGroup } from '../../common/feature-status-group/index.js';
12
12
  import { SidebarSectionHeader } from '../../common/sidebar-section-header/index.js';
13
13
  import { featureStatusConfig, featureStatusOrder } from '../../common/feature-status-config.js';
14
14
  import { useDeferredMount } from '../../../hooks/use-deferred-mount.js';
15
+ import { featureFlags } from '../../../lib/feature-flags.js';
15
16
  export function AppSidebar({ features, onNewFeature, onFeatureClick, onFeaturesFolderClick, onFeaturesMenuClick, }) {
16
17
  const pathname = usePathname();
17
18
  const { state } = useSidebar();
@@ -26,7 +27,7 @@ export function AppSidebar({ features, onNewFeature, onFeatureClick, onFeaturesF
26
27
  'flex min-w-0 flex-1 items-center gap-2 overflow-hidden px-2',
27
28
  'transition-opacity duration-200 ease-out',
28
29
  expandedVisible ? 'opacity-100' : 'opacity-0',
29
- ].join(' '), "aria-hidden": !expandedVisible, children: [_jsx(ShepLogo, { className: "shrink-0", size: 20 }), _jsx("span", { className: "truncate text-sm font-semibold tracking-tight", children: "Shep" })] })) : null, _jsx(SidebarCollapseToggle, { className: "shrink-0 transition-all duration-200" })] }) }), _jsx(SidebarNavItem, { icon: Home, label: "Control Center", href: "/", active: pathname === '/' }), _jsx(SidebarNavItem, { icon: Wrench, label: "Tools", href: "/tools", active: pathname === '/tools' })] }) }), _jsx(SidebarContent, { children: showExpanded ? (_jsxs("div", { className: [
30
+ ].join(' '), "aria-hidden": !expandedVisible, children: [_jsx(ShepLogo, { className: "shrink-0", size: 20 }), _jsx("span", { className: "truncate text-sm font-semibold tracking-tight", children: "Shep" })] })) : null, _jsx(SidebarCollapseToggle, { className: "shrink-0 transition-all duration-200" })] }) }), _jsx(SidebarNavItem, { icon: Home, label: "Control Center", href: "/", active: pathname === '/' }), _jsx(SidebarNavItem, { icon: Wrench, label: "Tools", href: "/tools", active: pathname === '/tools' }), featureFlags.skills ? (_jsx(SidebarNavItem, { icon: Puzzle, label: "Skills", href: "/skills", active: pathname === '/skills' })) : null] }) }), _jsx(SidebarContent, { children: showExpanded ? (_jsxs("div", { className: [
30
31
  'min-w-0 overflow-hidden transition-opacity duration-200 ease-out',
31
32
  '[&_[data-sidebar=group-label]]:!mt-0 [&_[data-sidebar=group-label]]:!opacity-100 [&_[data-sidebar=group-label]]:!transition-none',
32
33
  expandedVisible ? 'opacity-100' : 'opacity-0',
@@ -1 +1 @@
1
- {"version":3,"file":"use-notifications.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/hooks/use-notifications.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,sBAAsB;IACrC,wBAAwB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,sBAAsB,EAAE,sBAAsB,CAAC;CAChD;AA4CD,wBAAgB,gBAAgB,IAAI,sBAAsB,CAgEzD"}
1
+ {"version":3,"file":"use-notifications.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/hooks/use-notifications.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,sBAAsB;IACrC,wBAAwB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,sBAAsB,EAAE,sBAAsB,CAAC;CAChD;AA4CD,wBAAgB,gBAAgB,IAAI,sBAAsB,CAgEzD"}
@@ -3,7 +3,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
3
  import { toast } from 'sonner';
4
4
  import { NotificationEventType, NotificationSeverity } from '../../../../packages/core/src/domain/generated/output.js';
5
5
  import { useAgentEventsContext } from './agent-events-provider.js';
6
- import { useSound } from './use-sound.js';
6
+ import { useSoundAction } from './use-sound-action.js';
7
7
  const SEVERITY_TO_TOAST = {
8
8
  [NotificationSeverity.Success]: 'success',
9
9
  [NotificationSeverity.Error]: 'error',
@@ -34,23 +34,23 @@ function dispatchBrowserNotification(event) {
34
34
  icon: '/favicon-light.svg',
35
35
  });
36
36
  }
37
- const SEVERITY_TO_SOUND = {
38
- [NotificationSeverity.Success]: 'celebration',
39
- [NotificationSeverity.Error]: 'caution',
40
- [NotificationSeverity.Warning]: 'notification',
41
- [NotificationSeverity.Info]: 'button',
37
+ const SEVERITY_TO_ACTION = {
38
+ [NotificationSeverity.Success]: 'notification-success',
39
+ [NotificationSeverity.Error]: 'notification-error',
40
+ [NotificationSeverity.Warning]: 'notification-warning',
41
+ [NotificationSeverity.Info]: 'notification-info',
42
42
  };
43
43
  export function useNotifications() {
44
44
  const { events } = useAgentEventsContext();
45
- const successSound = useSound('celebration', { volume: 0.5 });
46
- const errorSound = useSound('caution', { volume: 0.5 });
47
- const warningSound = useSound('notification', { volume: 0.5 });
48
- const infoSound = useSound('button', { volume: 0.5 });
49
- const soundsByName = useMemo(() => ({
50
- celebration: successSound,
51
- caution: errorSound,
52
- notification: warningSound,
53
- button: infoSound,
45
+ const successSound = useSoundAction('notification-success');
46
+ const errorSound = useSoundAction('notification-error');
47
+ const warningSound = useSoundAction('notification-warning');
48
+ const infoSound = useSoundAction('notification-info');
49
+ const soundsByAction = useMemo(() => ({
50
+ 'notification-success': successSound,
51
+ 'notification-error': errorSound,
52
+ 'notification-warning': warningSound,
53
+ 'notification-info': infoSound,
54
54
  }), [successSound, errorSound, warningSound, infoSound]);
55
55
  const [browserPermissionState, setBrowserPermissionState] = useState(() => {
56
56
  if (typeof globalThis.Notification === 'undefined')
@@ -75,10 +75,10 @@ export function useNotifications() {
75
75
  }
76
76
  dispatchToast(event);
77
77
  dispatchBrowserNotification(event);
78
- const soundName = SEVERITY_TO_SOUND[event.severity];
79
- soundsByName[soundName]?.play();
78
+ const actionName = SEVERITY_TO_ACTION[event.severity];
79
+ soundsByAction[actionName]?.play();
80
80
  }
81
- }, [events, soundsByName]);
81
+ }, [events, soundsByAction]);
82
82
  const requestBrowserPermission = useCallback(async () => {
83
83
  if (typeof globalThis.Notification === 'undefined')
84
84
  return;
@@ -0,0 +1,100 @@
1
+ import type { UseSoundResult } from './use-sound.js';
2
+ /** Maps semantic UI actions to their sound name and volume. */
3
+ export declare const SOUND_ACTION_MAP: {
4
+ readonly navigate: {
5
+ readonly sound: "tap_01";
6
+ readonly volume: 0.2;
7
+ };
8
+ readonly 'menu-item': {
9
+ readonly sound: "tap_01";
10
+ readonly volume: 0.2;
11
+ };
12
+ readonly select: {
13
+ readonly sound: "select";
14
+ readonly volume: 0.3;
15
+ };
16
+ readonly 'toggle-on': {
17
+ readonly sound: "toggle_on";
18
+ readonly volume: 0.3;
19
+ };
20
+ readonly 'toggle-off': {
21
+ readonly sound: "toggle_off";
22
+ readonly volume: 0.3;
23
+ };
24
+ readonly click: {
25
+ readonly sound: "tap_01";
26
+ readonly volume: 0.3;
27
+ };
28
+ readonly cancel: {
29
+ readonly sound: "transition_down";
30
+ readonly volume: 0.3;
31
+ };
32
+ readonly expand: {
33
+ readonly sound: "swipe";
34
+ readonly volume: 0.3;
35
+ };
36
+ readonly collapse: {
37
+ readonly sound: "swipe";
38
+ readonly volume: 0.3;
39
+ };
40
+ readonly 'menu-open': {
41
+ readonly sound: "select";
42
+ readonly volume: 0.3;
43
+ };
44
+ readonly copy: {
45
+ readonly sound: "select";
46
+ readonly volume: 0.3;
47
+ };
48
+ readonly 'drawer-open': {
49
+ readonly sound: "transition_up";
50
+ readonly volume: 0.4;
51
+ };
52
+ readonly 'drawer-close': {
53
+ readonly sound: "transition_down";
54
+ readonly volume: 0.4;
55
+ };
56
+ readonly submit: {
57
+ readonly sound: "button";
58
+ readonly volume: 0.4;
59
+ };
60
+ readonly approve: {
61
+ readonly sound: "celebration";
62
+ readonly volume: 0.5;
63
+ };
64
+ readonly reject: {
65
+ readonly sound: "caution";
66
+ readonly volume: 0.5;
67
+ };
68
+ readonly create: {
69
+ readonly sound: "transition_up";
70
+ readonly volume: 0.5;
71
+ };
72
+ readonly delete: {
73
+ readonly sound: "transition_down";
74
+ readonly volume: 0.5;
75
+ };
76
+ readonly 'notification-success': {
77
+ readonly sound: "celebration";
78
+ readonly volume: 0.5;
79
+ };
80
+ readonly 'notification-error': {
81
+ readonly sound: "caution";
82
+ readonly volume: 0.5;
83
+ };
84
+ readonly 'notification-warning': {
85
+ readonly sound: "notification";
86
+ readonly volume: 0.5;
87
+ };
88
+ readonly 'notification-info': {
89
+ readonly sound: "button";
90
+ readonly volume: 0.5;
91
+ };
92
+ };
93
+ /** Union of all semantic action names available in the sound system. */
94
+ export type SoundAction = keyof typeof SOUND_ACTION_MAP;
95
+ /**
96
+ * Returns `{ play, stop, isPlaying }` for the given semantic action.
97
+ * Sound name and volume are resolved from `SOUND_ACTION_MAP`.
98
+ */
99
+ export declare function useSoundAction(action: SoundAction): UseSoundResult;
100
+ //# sourceMappingURL=use-sound-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-sound-action.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/hooks/use-sound-action.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMlD,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B4C,CAAC;AAE1E,wEAAwE;AACxE,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAExD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,cAAc,CAGlE"}
@@ -0,0 +1,42 @@
1
+ 'use client';
2
+ import { useSound } from './use-sound.js';
3
+ /* ------------------------------------------------------------------ */
4
+ /* Sound Action Map — single source of truth for action → sound */
5
+ /* ------------------------------------------------------------------ */
6
+ /** Maps semantic UI actions to their sound name and volume. */
7
+ export const SOUND_ACTION_MAP = {
8
+ // Navigation (volume 0.2) — subtle taps for frequent interactions
9
+ navigate: { sound: 'tap_01', volume: 0.2 },
10
+ 'menu-item': { sound: 'tap_01', volume: 0.2 },
11
+ // Toggles & selections (volume 0.3) — moderate feedback
12
+ select: { sound: 'select', volume: 0.3 },
13
+ 'toggle-on': { sound: 'toggle_on', volume: 0.3 },
14
+ 'toggle-off': { sound: 'toggle_off', volume: 0.3 },
15
+ click: { sound: 'tap_01', volume: 0.3 },
16
+ cancel: { sound: 'transition_down', volume: 0.3 },
17
+ expand: { sound: 'swipe', volume: 0.3 },
18
+ collapse: { sound: 'swipe', volume: 0.3 },
19
+ 'menu-open': { sound: 'select', volume: 0.3 },
20
+ copy: { sound: 'select', volume: 0.3 },
21
+ // Drawers & transitions (volume 0.4) — noticeable transitions
22
+ 'drawer-open': { sound: 'transition_up', volume: 0.4 },
23
+ 'drawer-close': { sound: 'transition_down', volume: 0.4 },
24
+ submit: { sound: 'button', volume: 0.4 },
25
+ // Significant actions (volume 0.5) — prominent feedback
26
+ approve: { sound: 'celebration', volume: 0.5 },
27
+ reject: { sound: 'caution', volume: 0.5 },
28
+ create: { sound: 'transition_up', volume: 0.5 },
29
+ delete: { sound: 'transition_down', volume: 0.5 },
30
+ 'notification-success': { sound: 'celebration', volume: 0.5 },
31
+ 'notification-error': { sound: 'caution', volume: 0.5 },
32
+ 'notification-warning': { sound: 'notification', volume: 0.5 },
33
+ 'notification-info': { sound: 'button', volume: 0.5 },
34
+ };
35
+ /**
36
+ * Returns `{ play, stop, isPlaying }` for the given semantic action.
37
+ * Sound name and volume are resolved from `SOUND_ACTION_MAP`.
38
+ */
39
+ export function useSoundAction(action) {
40
+ const { sound, volume } = SOUND_ACTION_MAP[action];
41
+ return useSound(sound, { volume });
42
+ }
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ declare const meta: Meta;
3
+ export default meta;
4
+ type Story = StoryObj;
5
+ export declare const Catalog: Story;
6
+ //# sourceMappingURL=use-sound-action.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-sound-action.stories.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/hooks/use-sound-action.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AA8FvD,QAAA,MAAM,IAAI,EAAE,IAIX,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC"}