@hasna/skills 0.1.62 → 0.1.64

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 (541) hide show
  1. package/README.md +38 -12
  2. package/bin/index.js +15743 -21709
  3. package/bin/mcp.js +3866 -11522
  4. package/bin/migrate.js +281 -35
  5. package/bin/server.js +5805 -2682
  6. package/bin/worker.js +5280 -2388
  7. package/dist/cli/commands/publish.d.ts +2 -0
  8. package/dist/cli/commands/registry-reconcile.d.ts +2 -0
  9. package/dist/cli/components/App.d.ts +2 -1
  10. package/dist/cli/components/CategorySelect.d.ts +2 -1
  11. package/dist/cli/components/Header.d.ts +2 -1
  12. package/dist/cli/components/InstallProgress.d.ts +2 -1
  13. package/dist/cli/components/SearchView.d.ts +2 -1
  14. package/dist/cli/components/SkillSelect.d.ts +2 -1
  15. package/dist/index.d.ts +5 -2
  16. package/dist/index.js +5386 -13739
  17. package/dist/lib/agent-sync.d.ts +61 -6
  18. package/dist/lib/auth-store.d.ts +37 -0
  19. package/dist/lib/config.d.ts +51 -0
  20. package/dist/lib/home-adoption.d.ts +91 -0
  21. package/dist/lib/home-census.d.ts +26 -0
  22. package/dist/lib/home-migration.d.ts +60 -0
  23. package/dist/lib/native-storage.d.ts +1 -1
  24. package/dist/lib/portable-skills-files.d.ts +21 -1
  25. package/dist/lib/portable-skills-types.d.ts +46 -0
  26. package/dist/lib/portable-skills.d.ts +35 -6
  27. package/dist/lib/pull.d.ts +97 -0
  28. package/dist/lib/registry-reconcile.d.ts +114 -0
  29. package/dist/lib/registry.d.ts +7 -4
  30. package/dist/lib/remote-client.d.ts +124 -1
  31. package/dist/lib/remote-registry.d.ts +26 -0
  32. package/dist/lib/revision.d.ts +29 -0
  33. package/dist/lib/run-state.d.ts +5 -0
  34. package/dist/lib/skill-bundles.d.ts +54 -0
  35. package/dist/lib/skill-contract.d.ts +35 -0
  36. package/dist/lib/skill-hash.d.ts +77 -0
  37. package/dist/sdk/cancel.d.ts +30 -0
  38. package/dist/sdk/dispatcher.d.ts +40 -0
  39. package/dist/sdk/event-sink.d.ts +2 -0
  40. package/dist/sdk/events.d.ts +79 -0
  41. package/dist/sdk/execution/admission.d.ts +44 -0
  42. package/dist/sdk/execution/dispatchers/e2b.d.ts +17 -0
  43. package/dist/sdk/execution/dispatchers/ecs.d.ts +151 -0
  44. package/dist/sdk/execution/image-profile.d.ts +73 -0
  45. package/dist/sdk/execution/index.d.ts +15 -0
  46. package/dist/sdk/execution/receipts.d.ts +44 -0
  47. package/dist/sdk/execution/state-machine.d.ts +38 -0
  48. package/dist/sdk/execution/storage.d.ts +158 -0
  49. package/dist/sdk/execution/types.d.ts +130 -0
  50. package/dist/sdk/executor.d.ts +17 -0
  51. package/dist/sdk/governance-store.d.ts +156 -0
  52. package/dist/sdk/governance.d.ts +92 -0
  53. package/dist/sdk/index.d.ts +26 -0
  54. package/dist/sdk/index.js +49728 -0
  55. package/dist/sdk/offline.d.ts +16 -0
  56. package/dist/sdk/outputs.d.ts +71 -0
  57. package/dist/sdk/registry.d.ts +28 -0
  58. package/dist/sdk/runs.d.ts +229 -0
  59. package/dist/sdk/server.d.ts +35 -0
  60. package/dist/sdk/spend.d.ts +36 -0
  61. package/dist/sdk/storage.d.ts +25 -0
  62. package/dist/server/app.d.ts +42 -0
  63. package/dist/server/artifact-storage.d.ts +102 -0
  64. package/dist/server/auth.d.ts +5 -0
  65. package/dist/server/config.d.ts +50 -0
  66. package/dist/server/database-url.d.ts +42 -0
  67. package/dist/server/handlers.d.ts +3 -0
  68. package/dist/server/index.d.ts +2 -0
  69. package/dist/server/migrate.d.ts +13 -0
  70. package/dist/server/migrations-dir.d.ts +18 -0
  71. package/dist/server/redaction.d.ts +1 -0
  72. package/dist/server/registry.d.ts +5 -0
  73. package/dist/server/rows.d.ts +24 -0
  74. package/dist/server/skills-api.d.ts +170 -0
  75. package/dist/server/sqlite-store.d.ts +131 -0
  76. package/dist/server/store-fixtures.d.ts +25 -0
  77. package/dist/server/store.d.ts +170 -0
  78. package/dist/server/types.d.ts +337 -0
  79. package/dist/server/worker.d.ts +4 -0
  80. package/dist/storage.js +39 -2
  81. package/docs/skill-standard.md +211 -39
  82. package/migrations/postgres/0003_run_outputs_governance.sql +83 -0
  83. package/migrations/postgres/0004_hosted_pins.sql +28 -0
  84. package/migrations/postgres/0005_revision_tombstone_registry.sql +37 -0
  85. package/migrations/postgres/0005_tag_projection.sql +36 -0
  86. package/migrations/sqlite/0003_run_outputs_governance.sql +58 -0
  87. package/migrations/sqlite/0004_hosted_pins.sql +21 -0
  88. package/migrations/sqlite/0005_revision_tombstone_registry.sql +18 -0
  89. package/migrations/sqlite/0005_tag_projection.sql +25 -0
  90. package/package.json +12 -8
  91. package/schemas/skill.schema.json +181 -0
  92. package/agent-skills/README.md +0 -41
  93. package/agent-skills/fleet-package-rollout/SKILL.md +0 -169
  94. package/agent-skills/inbox/SKILL.md +0 -25
  95. package/agent-skills/inbox/scripts/inbox +0 -109
  96. package/agent-skills/inbox/tests/test_registered_sender_id.sh +0 -92
  97. package/agent-skills/inbox-monitor/SKILL.md +0 -41
  98. package/agent-skills/inbox-monitor/scripts/inbox_monitor.sh +0 -91
  99. package/agent-skills/inbox-monitor/scripts/test_inbox_monitor.sh +0 -71
  100. package/agent-skills/merge-pr/SKILL.md +0 -85
  101. package/agent-skills/merge-pr/references/merge-safety.md +0 -82
  102. package/agent-skills/merge-pr/scripts/merge_pr_guard.py +0 -694
  103. package/agent-skills/merge-pr/scripts/test_merge_pr_guard.py +0 -647
  104. package/agent-skills/merge-pr/tests/fixtures/multi-commit-synthesized.json +0 -28
  105. package/agent-skills/merge-pr/tests/fixtures/trailer-free-provider.json +0 -28
  106. package/agent-skills/skill-goal-execute/SKILL.md +0 -115
  107. package/agent-skills/skill-login/SKILL.md +0 -109
  108. package/agent-skills/skill-project-create/SKILL.md +0 -91
  109. package/agent-skills/skill-publish/SKILL.md +0 -254
  110. package/agent-skills/skill-publish/scripts/capture_registry.js +0 -47
  111. package/agent-skills/skill-publish/scripts/publish_with_git_head.sh +0 -143
  112. package/agent-skills/skill-publish/scripts/test_publish_with_git_head.sh +0 -231
  113. package/skills/_common/auth.ts +0 -45
  114. package/skills/_common/http-client.ts +0 -143
  115. package/skills/_common/index.ts +0 -26
  116. package/skills/_common/install.sh +0 -7
  117. package/skills/_common/installer.ts +0 -72
  118. package/skills/_common/skill-install.ts +0 -37
  119. package/skills/_common/vision.ts +0 -374
  120. package/skills/ad-creative-pack/SKILL.md +0 -55
  121. package/skills/ad-creative-pack/package.json +0 -10
  122. package/skills/analyze-data/CLAUDE.md +0 -16
  123. package/skills/analyze-data/SKILL.md +0 -112
  124. package/skills/analyze-data/package.json +0 -23
  125. package/skills/analyze-data/src/analysis.ts +0 -401
  126. package/skills/analyze-data/src/cli.ts +0 -66
  127. package/skills/analyze-data/src/formatters.ts +0 -235
  128. package/skills/analyze-data/src/index.ts +0 -74
  129. package/skills/analyze-data/src/logger.ts +0 -36
  130. package/skills/analyze-data/src/parsers.ts +0 -57
  131. package/skills/analyze-data/src/stats.ts +0 -151
  132. package/skills/analyze-data/src/types.ts +0 -85
  133. package/skills/analyze-data/tsconfig.json +0 -19
  134. package/skills/api-docs-portal/SKILL.md +0 -84
  135. package/skills/api-docs-portal/package.json +0 -35
  136. package/skills/api-docs-portal/src/index.ts +0 -919
  137. package/skills/api-docs-portal/tsconfig.json +0 -17
  138. package/skills/api-test-suite/CLAUDE.md +0 -19
  139. package/skills/api-test-suite/package.json +0 -27
  140. package/skills/api-test-suite/src/index.ts +0 -381
  141. package/skills/api-test-suite/tsconfig.json +0 -10
  142. package/skills/audio-extract/CLAUDE.md +0 -9
  143. package/skills/audio-extract/SKILL.md +0 -73
  144. package/skills/audio-extract/package.json +0 -23
  145. package/skills/audio-extract/src/index.ts +0 -323
  146. package/skills/audio-extract/tsconfig.json +0 -11
  147. package/skills/bio-sequence-tool/CLAUDE.md +0 -19
  148. package/skills/bio-sequence-tool/package.json +0 -27
  149. package/skills/bio-sequence-tool/src/index.ts +0 -85
  150. package/skills/bio-sequence-tool/tsconfig.json +0 -10
  151. package/skills/blog-article/CLAUDE.md +0 -12
  152. package/skills/blog-article/SKILL.md +0 -55
  153. package/skills/blog-article/package.json +0 -10
  154. package/skills/blog-article/tsconfig.json +0 -10
  155. package/skills/brand-assets/SKILL.md +0 -118
  156. package/skills/brand-assets/package.json +0 -35
  157. package/skills/brand-assets/src/cli.ts +0 -155
  158. package/skills/brand-assets/src/constants.ts +0 -8
  159. package/skills/brand-assets/src/extract.ts +0 -236
  160. package/skills/brand-assets/src/index.ts +0 -668
  161. package/skills/brand-assets/src/types.ts +0 -59
  162. package/skills/brand-assets/tsconfig.json +0 -17
  163. package/skills/brand-kit/SKILL.md +0 -54
  164. package/skills/brand-kit/package.json +0 -10
  165. package/skills/businessactivity/CLAUDE.md +0 -176
  166. package/skills/businessactivity/LICENSE +0 -192
  167. package/skills/businessactivity/README.md +0 -287
  168. package/skills/businessactivity/package.json +0 -25
  169. package/skills/businessactivity/scripts/publish.ts +0 -210
  170. package/skills/businessactivity/src/commands/activity.ts +0 -211
  171. package/skills/businessactivity/src/commands/function.ts +0 -227
  172. package/skills/businessactivity/src/commands/owner.ts +0 -193
  173. package/skills/businessactivity/src/commands/profile.ts +0 -121
  174. package/skills/businessactivity/src/commands/responsibility.ts +0 -264
  175. package/skills/businessactivity/src/commands/team.ts +0 -244
  176. package/skills/businessactivity/src/commands/workflow.ts +0 -359
  177. package/skills/businessactivity/src/index.ts +0 -3
  178. package/skills/businessactivity/src/lib/config.ts +0 -167
  179. package/skills/businessactivity/src/lib/output.ts +0 -76
  180. package/skills/businessactivity/src/lib/paths.ts +0 -79
  181. package/skills/businessactivity/src/lib/storage.ts +0 -95
  182. package/skills/businessactivity/src/types/index.ts +0 -86
  183. package/skills/businessactivity/tsconfig.json +0 -29
  184. package/skills/codefix/LICENSE +0 -192
  185. package/skills/codefix/README.md +0 -232
  186. package/skills/codefix/SKILL.md +0 -94
  187. package/skills/codefix/package.json +0 -21
  188. package/skills/codefix/src/fixers/batch.ts +0 -213
  189. package/skills/codefix/src/fixers/detector.ts +0 -160
  190. package/skills/codefix/src/fixers/index.ts +0 -7
  191. package/skills/codefix/src/fixers/runner.ts +0 -522
  192. package/skills/codefix/src/index-local.ts +0 -431
  193. package/skills/codefix/src/index.ts +0 -4
  194. package/skills/codefix/src/types.ts +0 -211
  195. package/skills/codefix/tsconfig.json +0 -15
  196. package/skills/commitpush/SKILL.md +0 -57
  197. package/skills/commitpush/package.json +0 -33
  198. package/skills/commitpush/src/index.ts +0 -34
  199. package/skills/commitpush/tsconfig.json +0 -17
  200. package/skills/commitpushpr/SKILL.md +0 -55
  201. package/skills/commitpushpr/package.json +0 -33
  202. package/skills/commitpushpr/src/index.ts +0 -34
  203. package/skills/commitpushpr/tsconfig.json +0 -17
  204. package/skills/compress-video/CLAUDE.md +0 -9
  205. package/skills/compress-video/SKILL.md +0 -79
  206. package/skills/compress-video/package.json +0 -23
  207. package/skills/compress-video/src/index.ts +0 -473
  208. package/skills/compress-video/tsconfig.json +0 -11
  209. package/skills/contract-review-report/SKILL.md +0 -52
  210. package/skills/contract-review-report/package.json +0 -10
  211. package/skills/customer-feedback-report/SKILL.md +0 -52
  212. package/skills/customer-feedback-report/package.json +0 -10
  213. package/skills/dashboard-builder/CLAUDE.md +0 -19
  214. package/skills/dashboard-builder/package.json +0 -29
  215. package/skills/dashboard-builder/src/index.ts +0 -150
  216. package/skills/dashboard-builder/tsconfig.json +0 -10
  217. package/skills/data-anonymizer/CLAUDE.md +0 -19
  218. package/skills/data-anonymizer/package.json +0 -27
  219. package/skills/data-anonymizer/src/index.ts +0 -183
  220. package/skills/data-anonymizer/tsconfig.json +0 -10
  221. package/skills/database-explorer/CLAUDE.md +0 -19
  222. package/skills/database-explorer/package.json +0 -29
  223. package/skills/database-explorer/src/index.ts +0 -95
  224. package/skills/database-explorer/tsconfig.json +0 -10
  225. package/skills/diff-viewer/CLAUDE.md +0 -19
  226. package/skills/diff-viewer/package.json +0 -30
  227. package/skills/diff-viewer/src/index.ts +0 -164
  228. package/skills/diff-viewer/tsconfig.json +0 -10
  229. package/skills/doc-read/SKILL.md +0 -45
  230. package/skills/doc-read/package.json +0 -29
  231. package/skills/doc-read/src/index.ts +0 -324
  232. package/skills/doc-read/tsconfig.json +0 -8
  233. package/skills/domainpurchase/LICENSE +0 -192
  234. package/skills/domainpurchase/SKILL.md +0 -29
  235. package/skills/domainpurchase/package.json +0 -30
  236. package/skills/domainpurchase/src/index.ts +0 -3
  237. package/skills/domainpurchase/tsconfig.json +0 -21
  238. package/skills/email-sequence/SKILL.md +0 -53
  239. package/skills/email-sequence/package.json +0 -10
  240. package/skills/experiment-power-calculator/CLAUDE.md +0 -19
  241. package/skills/experiment-power-calculator/package.json +0 -29
  242. package/skills/experiment-power-calculator/src/index.ts +0 -86
  243. package/skills/experiment-power-calculator/tsconfig.json +0 -10
  244. package/skills/extract-frames/CLAUDE.md +0 -19
  245. package/skills/extract-frames/package.json +0 -27
  246. package/skills/extract-frames/src/index.ts +0 -616
  247. package/skills/extract-frames/tsconfig.json +0 -10
  248. package/skills/file-organizer/CLAUDE.md +0 -19
  249. package/skills/file-organizer/package.json +0 -27
  250. package/skills/file-organizer/src/index.ts +0 -91
  251. package/skills/file-organizer/tsconfig.json +0 -10
  252. package/skills/folder-tree/CLAUDE.md +0 -19
  253. package/skills/folder-tree/package.json +0 -29
  254. package/skills/folder-tree/src/index.ts +0 -568
  255. package/skills/folder-tree/tsconfig.json +0 -10
  256. package/skills/form-filler/CLAUDE.md +0 -19
  257. package/skills/form-filler/package.json +0 -29
  258. package/skills/form-filler/src/index.ts +0 -81
  259. package/skills/form-filler/tsconfig.json +0 -10
  260. package/skills/generate-api-client/CLAUDE.md +0 -19
  261. package/skills/generate-api-client/package.json +0 -29
  262. package/skills/generate-api-client/src/generator.ts +0 -47
  263. package/skills/generate-api-client/src/index.ts +0 -92
  264. package/skills/generate-api-client/src/logger.ts +0 -34
  265. package/skills/generate-api-client/src/python-generator.ts +0 -245
  266. package/skills/generate-api-client/src/spec-loader.ts +0 -48
  267. package/skills/generate-api-client/src/type-mappers.ts +0 -79
  268. package/skills/generate-api-client/src/types.ts +0 -76
  269. package/skills/generate-api-client/src/typescript-generator.ts +0 -247
  270. package/skills/generate-api-client/tsconfig.json +0 -10
  271. package/skills/generate-chart/CLAUDE.md +0 -19
  272. package/skills/generate-chart/package.json +0 -27
  273. package/skills/generate-chart/src/index.ts +0 -510
  274. package/skills/generate-chart/tsconfig.json +0 -10
  275. package/skills/generate-dockerfile/CLAUDE.md +0 -19
  276. package/skills/generate-dockerfile/package.json +0 -27
  277. package/skills/generate-dockerfile/src/cli.ts +0 -78
  278. package/skills/generate-dockerfile/src/dockerfile-templates.ts +0 -392
  279. package/skills/generate-dockerfile/src/index.ts +0 -81
  280. package/skills/generate-dockerfile/src/logger.ts +0 -30
  281. package/skills/generate-dockerfile/src/project-detection.ts +0 -68
  282. package/skills/generate-dockerfile/src/support-files.ts +0 -171
  283. package/skills/generate-dockerfile/src/types.ts +0 -29
  284. package/skills/generate-dockerfile/tsconfig.json +0 -10
  285. package/skills/generate-env/CLAUDE.md +0 -19
  286. package/skills/generate-env/package.json +0 -29
  287. package/skills/generate-env/src/cli.ts +0 -85
  288. package/skills/generate-env/src/detection.ts +0 -161
  289. package/skills/generate-env/src/env-data.ts +0 -66
  290. package/skills/generate-env/src/generators.ts +0 -240
  291. package/skills/generate-env/src/index.ts +0 -120
  292. package/skills/generate-env/src/runtime.ts +0 -30
  293. package/skills/generate-env/src/types.ts +0 -32
  294. package/skills/generate-env/tsconfig.json +0 -10
  295. package/skills/generate-favicon/CLAUDE.md +0 -19
  296. package/skills/generate-favicon/package.json +0 -29
  297. package/skills/generate-favicon/src/index.ts +0 -421
  298. package/skills/generate-favicon/tsconfig.json +0 -10
  299. package/skills/generate-qrcode/CLAUDE.md +0 -19
  300. package/skills/generate-qrcode/package.json +0 -30
  301. package/skills/generate-qrcode/src/index.ts +0 -584
  302. package/skills/generate-qrcode/tsconfig.json +0 -10
  303. package/skills/generate-resume/CLAUDE.md +0 -19
  304. package/skills/generate-resume/package.json +0 -27
  305. package/skills/generate-resume/src/cli.ts +0 -157
  306. package/skills/generate-resume/src/index.ts +0 -178
  307. package/skills/generate-resume/src/parsers.ts +0 -95
  308. package/skills/generate-resume/src/renderers.ts +0 -538
  309. package/skills/generate-resume/src/security.ts +0 -39
  310. package/skills/generate-resume/src/types.ts +0 -86
  311. package/skills/generate-resume/tsconfig.json +0 -10
  312. package/skills/generate-sitemap/CLAUDE.md +0 -19
  313. package/skills/generate-sitemap/package.json +0 -27
  314. package/skills/generate-sitemap/src/index.ts +0 -626
  315. package/skills/generate-sitemap/tsconfig.json +0 -10
  316. package/skills/gif-maker/CLAUDE.md +0 -19
  317. package/skills/gif-maker/package.json +0 -30
  318. package/skills/gif-maker/src/index.ts +0 -600
  319. package/skills/gif-maker/tsconfig.json +0 -10
  320. package/skills/hook/LICENSE +0 -192
  321. package/skills/hook/README.md +0 -74
  322. package/skills/hook/SKILL.md +0 -85
  323. package/skills/hook/bunfig.toml +0 -5
  324. package/skills/hook/package.json +0 -28
  325. package/skills/hook/src/commands/create.ts +0 -112
  326. package/skills/hook/src/commands/events.ts +0 -37
  327. package/skills/hook/src/commands/validate.ts +0 -117
  328. package/skills/hook/src/index.ts +0 -118
  329. package/skills/hook/src/templates/root.ts +0 -196
  330. package/skills/hook/src/templates/source.ts +0 -647
  331. package/skills/hook/tsconfig.json +0 -18
  332. package/skills/http-server/CLAUDE.md +0 -19
  333. package/skills/http-server/package.json +0 -29
  334. package/skills/http-server/src/index.ts +0 -51
  335. package/skills/http-server/tsconfig.json +0 -10
  336. package/skills/implementation/LICENSE +0 -192
  337. package/skills/implementation/README.md +0 -53
  338. package/skills/implementation/SKILL.md +0 -57
  339. package/skills/implementation/bunfig.toml +0 -5
  340. package/skills/implementation/package.json +0 -28
  341. package/skills/implementation/src/commands/create.ts +0 -187
  342. package/skills/implementation/src/index.ts +0 -62
  343. package/skills/implementation/tsconfig.json +0 -18
  344. package/skills/implementation-plan/CLAUDE.md +0 -19
  345. package/skills/implementation-plan/package.json +0 -29
  346. package/skills/implementation-plan/src/index.ts +0 -520
  347. package/skills/implementation-plan/tsconfig.json +0 -10
  348. package/skills/implementation-todo/CLAUDE.md +0 -19
  349. package/skills/implementation-todo/package.json +0 -29
  350. package/skills/implementation-todo/src/index.ts +0 -429
  351. package/skills/implementation-todo/tsconfig.json +0 -10
  352. package/skills/invoice/.env.example +0 -3
  353. package/skills/invoice/CLAUDE.md +0 -31
  354. package/skills/invoice/LICENSE +0 -192
  355. package/skills/invoice/README.md +0 -70
  356. package/skills/invoice/package.json +0 -26
  357. package/skills/invoice/src/commands/companies.ts +0 -202
  358. package/skills/invoice/src/commands/config.ts +0 -132
  359. package/skills/invoice/src/commands/generate.ts +0 -177
  360. package/skills/invoice/src/commands/invoices.ts +0 -218
  361. package/skills/invoice/src/index.ts +0 -3
  362. package/skills/invoice/src/lib/api.ts +0 -124
  363. package/skills/invoice/src/lib/storage.ts +0 -171
  364. package/skills/invoice/src/types/index.ts +0 -86
  365. package/skills/invoice/src/utils/logger.ts +0 -33
  366. package/skills/invoice/src/utils/paths.ts +0 -25
  367. package/skills/invoice/tsconfig.json +0 -23
  368. package/skills/invoice-reconciliation/SKILL.md +0 -98
  369. package/skills/invoice-reconciliation/package.json +0 -36
  370. package/skills/invoice-reconciliation/src/index.ts +0 -743
  371. package/skills/invoice-reconciliation/tsconfig.json +0 -17
  372. package/skills/landing-page-pack/SKILL.md +0 -55
  373. package/skills/landing-page-pack/package.json +0 -10
  374. package/skills/latex-table-generator/CLAUDE.md +0 -19
  375. package/skills/latex-table-generator/package.json +0 -29
  376. package/skills/latex-table-generator/src/index.ts +0 -113
  377. package/skills/latex-table-generator/tsconfig.json +0 -10
  378. package/skills/logo-design/SKILL.md +0 -94
  379. package/skills/logo-design/package.json +0 -35
  380. package/skills/logo-design/src/cli.ts +0 -132
  381. package/skills/logo-design/src/constants.ts +0 -5
  382. package/skills/logo-design/src/docs.ts +0 -102
  383. package/skills/logo-design/src/geometry.ts +0 -324
  384. package/skills/logo-design/src/index.ts +0 -212
  385. package/skills/logo-design/src/palette.ts +0 -258
  386. package/skills/logo-design/src/types.ts +0 -50
  387. package/skills/logo-design/tsconfig.json +0 -17
  388. package/skills/lorem-generator/CLAUDE.md +0 -19
  389. package/skills/lorem-generator/package.json +0 -29
  390. package/skills/lorem-generator/src/index.ts +0 -59
  391. package/skills/lorem-generator/tsconfig.json +0 -10
  392. package/skills/managemcp/CLAUDE.md +0 -14
  393. package/skills/managemcp/README.md +0 -24
  394. package/skills/managemcp/package.json +0 -16
  395. package/skills/managemcp/src/index.ts +0 -3
  396. package/skills/managemcp/tsconfig.json +0 -27
  397. package/skills/markdown-validator/CLAUDE.md +0 -19
  398. package/skills/markdown-validator/package.json +0 -29
  399. package/skills/markdown-validator/src/index.ts +0 -92
  400. package/skills/markdown-validator/tsconfig.json +0 -10
  401. package/skills/market-research-report/SKILL.md +0 -51
  402. package/skills/market-research-report/package.json +0 -10
  403. package/skills/meeting-pack/SKILL.md +0 -52
  404. package/skills/meeting-pack/package.json +0 -10
  405. package/skills/merge-pdfs/CLAUDE.md +0 -19
  406. package/skills/merge-pdfs/package.json +0 -31
  407. package/skills/merge-pdfs/src/index.ts +0 -427
  408. package/skills/merge-pdfs/tsconfig.json +0 -10
  409. package/skills/migration-plan-pack/SKILL.md +0 -56
  410. package/skills/migration-plan-pack/package.json +0 -10
  411. package/skills/monitor/SKILL.md +0 -69
  412. package/skills/monitor/package.json +0 -33
  413. package/skills/monitor/src/index.ts +0 -34
  414. package/skills/monitor/tsconfig.json +0 -17
  415. package/skills/one-page-website/SKILL.md +0 -128
  416. package/skills/one-page-website/package.json +0 -34
  417. package/skills/one-page-website/src/design.ts +0 -336
  418. package/skills/one-page-website/src/docs.ts +0 -159
  419. package/skills/one-page-website/src/index.ts +0 -357
  420. package/skills/one-page-website/src/page.ts +0 -340
  421. package/skills/one-page-website/src/styles.ts +0 -508
  422. package/skills/one-page-website/src/types.ts +0 -78
  423. package/skills/one-page-website/tsconfig.json +0 -17
  424. package/skills/pdf-generate/CLAUDE.md +0 -19
  425. package/skills/pdf-generate/SKILL.md +0 -86
  426. package/skills/pdf-generate/package.json +0 -21
  427. package/skills/pdf-generate/src/cli.ts +0 -162
  428. package/skills/pdf-generate/src/html.ts +0 -84
  429. package/skills/pdf-generate/src/index.ts +0 -62
  430. package/skills/pdf-generate/src/markdown.ts +0 -27
  431. package/skills/pdf-generate/src/pdf-writer.ts +0 -78
  432. package/skills/pdf-generate/src/runtime.ts +0 -34
  433. package/skills/pdf-generate/src/security.ts +0 -37
  434. package/skills/pdf-generate/src/templates.ts +0 -311
  435. package/skills/pdf-generate/src/types.ts +0 -28
  436. package/skills/pdf-generate/tsconfig.json +0 -16
  437. package/skills/pdf-to-dataset/SKILL.md +0 -88
  438. package/skills/pdf-to-dataset/package.json +0 -37
  439. package/skills/pdf-to-dataset/src/index.ts +0 -790
  440. package/skills/pdf-to-dataset/tsconfig.json +0 -17
  441. package/skills/pdf-to-markdown/SKILL.md +0 -81
  442. package/skills/pdf-to-markdown/package.json +0 -35
  443. package/skills/pdf-to-markdown/src/index.ts +0 -694
  444. package/skills/pdf-to-markdown/tsconfig.json +0 -17
  445. package/skills/performance-audit-report/SKILL.md +0 -49
  446. package/skills/performance-audit-report/package.json +0 -10
  447. package/skills/pitch-deck/SKILL.md +0 -51
  448. package/skills/pitch-deck/package.json +0 -10
  449. package/skills/product-mockup/SKILL.md +0 -107
  450. package/skills/product-mockup/package.json +0 -32
  451. package/skills/product-mockup/src/cli.ts +0 -150
  452. package/skills/product-mockup/src/design.ts +0 -151
  453. package/skills/product-mockup/src/docs.ts +0 -134
  454. package/skills/product-mockup/src/index.ts +0 -182
  455. package/skills/product-mockup/src/render.ts +0 -407
  456. package/skills/product-mockup/src/types.ts +0 -66
  457. package/skills/product-mockup/tsconfig.json +0 -17
  458. package/skills/proposal-pack/SKILL.md +0 -53
  459. package/skills/proposal-pack/package.json +0 -10
  460. package/skills/read-csv/SKILL.md +0 -62
  461. package/skills/read-csv/package.json +0 -37
  462. package/skills/read-csv/src/index.ts +0 -356
  463. package/skills/read-csv/tsconfig.json +0 -17
  464. package/skills/read-excel/SKILL.md +0 -64
  465. package/skills/read-excel/package.json +0 -36
  466. package/skills/read-excel/src/index.ts +0 -266
  467. package/skills/read-excel/tsconfig.json +0 -17
  468. package/skills/regex-tester/CLAUDE.md +0 -19
  469. package/skills/regex-tester/package.json +0 -27
  470. package/skills/regex-tester/src/index.ts +0 -183
  471. package/skills/regex-tester/tsconfig.json +0 -10
  472. package/skills/repo-onboarding-report/SKILL.md +0 -52
  473. package/skills/repo-onboarding-report/package.json +0 -10
  474. package/skills/scancommitpr/SKILL.md +0 -178
  475. package/skills/scancommitpr/package.json +0 -34
  476. package/skills/scancommitpr/src/index.ts +0 -44
  477. package/skills/scancommitpr/tsconfig.json +0 -13
  478. package/skills/scancommitpush/SKILL.md +0 -174
  479. package/skills/scancommitpush/package.json +0 -32
  480. package/skills/scancommitpush/src/index.ts +0 -44
  481. package/skills/scancommitpush/tsconfig.json +0 -13
  482. package/skills/scientific-figure-check/CLAUDE.md +0 -19
  483. package/skills/scientific-figure-check/package.json +0 -29
  484. package/skills/scientific-figure-check/src/index.ts +0 -83
  485. package/skills/scientific-figure-check/tsconfig.json +0 -10
  486. package/skills/security-audit/CLAUDE.md +0 -19
  487. package/skills/security-audit/package.json +0 -27
  488. package/skills/security-audit/src/index.ts +0 -145
  489. package/skills/security-audit/tsconfig.json +0 -10
  490. package/skills/security-audit-report/SKILL.md +0 -52
  491. package/skills/security-audit-report/package.json +0 -10
  492. package/skills/seo-content-pack/SKILL.md +0 -54
  493. package/skills/seo-content-pack/package.json +0 -10
  494. package/skills/siteanalyze/SKILL.md +0 -25
  495. package/skills/siteanalyze/package.json +0 -27
  496. package/skills/siteanalyze/src/index.ts +0 -592
  497. package/skills/slide-deck-generator/SKILL.md +0 -93
  498. package/skills/slide-deck-generator/package.json +0 -38
  499. package/skills/slide-deck-generator/src/cli.ts +0 -133
  500. package/skills/slide-deck-generator/src/index.ts +0 -148
  501. package/skills/slide-deck-generator/src/model.ts +0 -307
  502. package/skills/slide-deck-generator/src/pptx.ts +0 -143
  503. package/skills/slide-deck-generator/src/render.ts +0 -248
  504. package/skills/slide-deck-generator/src/types.ts +0 -114
  505. package/skills/slide-deck-generator/src/utils.ts +0 -53
  506. package/skills/slide-deck-generator/tsconfig.json +0 -17
  507. package/skills/social-content-calendar/SKILL.md +0 -54
  508. package/skills/social-content-calendar/package.json +0 -10
  509. package/skills/split-pdf/CLAUDE.md +0 -19
  510. package/skills/split-pdf/package.json +0 -30
  511. package/skills/split-pdf/src/index.ts +0 -301
  512. package/skills/split-pdf/tsconfig.json +0 -10
  513. package/skills/statistical-test-selector/CLAUDE.md +0 -19
  514. package/skills/statistical-test-selector/package.json +0 -27
  515. package/skills/statistical-test-selector/src/index.ts +0 -75
  516. package/skills/statistical-test-selector/tsconfig.json +0 -10
  517. package/skills/test-suite-generator/SKILL.md +0 -51
  518. package/skills/test-suite-generator/package.json +0 -10
  519. package/skills/tmux-session/SKILL.md +0 -109
  520. package/skills/tmux-session/package.json +0 -33
  521. package/skills/tmux-session/src/index.ts +0 -34
  522. package/skills/tmux-session/tsconfig.json +0 -17
  523. package/skills/todos-plan/SKILL.md +0 -363
  524. package/skills/todos-plan/agents/openai.yaml +0 -4
  525. package/skills/todos-plan/package.json +0 -9
  526. package/skills/todos-plan/src/index.ts +0 -68
  527. package/skills/tsconfig.base.json +0 -12
  528. package/skills/validate-config/CLAUDE.md +0 -19
  529. package/skills/validate-config/package.json +0 -29
  530. package/skills/validate-config/src/index.ts +0 -56
  531. package/skills/validate-config/tsconfig.json +0 -10
  532. package/skills/video-downloader/CLAUDE.md +0 -19
  533. package/skills/video-downloader/package.json +0 -29
  534. package/skills/video-downloader/src/index.ts +0 -561
  535. package/skills/video-downloader/tsconfig.json +0 -10
  536. package/skills/video-highlight-pack/SKILL.md +0 -54
  537. package/skills/video-highlight-pack/package.json +0 -10
  538. package/skills/watermark/CLAUDE.md +0 -19
  539. package/skills/watermark/package.json +0 -32
  540. package/skills/watermark/src/index.ts +0 -587
  541. package/skills/watermark/tsconfig.json +0 -10
@@ -1,157 +0,0 @@
1
- import { parseArgs } from "node:util";
2
-
3
- export function parseArguments(): Record<string, any> {
4
- const { values } = parseArgs({
5
- args: process.argv.slice(2),
6
- options: {
7
- // Contact
8
- name: { type: "string" },
9
- email: { type: "string" },
10
- phone: { type: "string" },
11
- location: { type: "string" },
12
- website: { type: "string" },
13
- linkedin: { type: "string" },
14
- github: { type: "string" },
15
- portfolio: { type: "string" },
16
- twitter: { type: "string" },
17
- photo: { type: "string" },
18
-
19
- // Professional
20
- title: { type: "string" },
21
- summary: { type: "string" },
22
-
23
- // Sections (repeatable)
24
- experience: { type: "string", multiple: true },
25
- education: { type: "string", multiple: true },
26
- skill: { type: "string", multiple: true },
27
- project: { type: "string", multiple: true },
28
- certification: { type: "string", multiple: true },
29
- language: { type: "string", multiple: true },
30
-
31
- // Design
32
- template: { type: "string", default: "modern" },
33
- layout: { type: "string", default: "single-column" },
34
- color: { type: "string", default: "#2563eb" },
35
- font: { type: "string", default: "inter" },
36
- "font-size": { type: "string", default: "medium" },
37
- spacing: { type: "string", default: "normal" },
38
- "ats-friendly": { type: "boolean", default: false },
39
- "include-photo": { type: "boolean", default: false },
40
- "page-numbers": { type: "boolean", default: false },
41
-
42
- // Output
43
- output: { type: "string" },
44
- format: { type: "string", default: "pdf" },
45
- open: { type: "boolean", default: false },
46
-
47
- // Cover letter
48
- "cover-letter": { type: "boolean", default: false },
49
- company: { type: "string" },
50
- position: { type: "string" },
51
- "letter-content": { type: "string" },
52
- "letter-template": { type: "string", default: "standard" },
53
-
54
- // LinkedIn import
55
- "from-linkedin": { type: "string" },
56
-
57
- // Help
58
- help: { type: "boolean" },
59
- },
60
- allowPositionals: true,
61
- });
62
-
63
- return values;
64
- }
65
-
66
- // Show help
67
-
68
- export function showHelp() {
69
- console.log(`
70
- Generate Resume - Create professional resumes and CVs
71
-
72
- USAGE:
73
- skills run generate-resume -- [OPTIONS]
74
-
75
- REQUIRED:
76
- --name <name> Your full name
77
-
78
- CONTACT:
79
- --email <email> Email address
80
- --phone <phone> Phone number
81
- --location <location> City, State/Country
82
- --website <url> Personal website
83
- --linkedin <url> LinkedIn profile
84
- --github <url> GitHub profile
85
- --portfolio <url> Portfolio website
86
- --twitter <handle> Twitter/X handle
87
- --photo <path> Profile photo path
88
-
89
- PROFESSIONAL:
90
- --title <title> Professional title
91
- --summary <text> Professional summary
92
-
93
- EXPERIENCE (repeatable):
94
- --experience "Title|Company|Dates|Description"
95
-
96
- EDUCATION (repeatable):
97
- --education "Degree|School|Dates|Details"
98
-
99
- SKILLS (repeatable):
100
- --skill "SkillName|Level" Level: 1-5
101
-
102
- PROJECTS (repeatable):
103
- --project "Name|Description|URL"
104
-
105
- CERTIFICATIONS (repeatable):
106
- --certification "Name|Year|Issuer"
107
-
108
- LANGUAGES (repeatable):
109
- --language "Language|Proficiency"
110
-
111
- DESIGN:
112
- --template <type> modern|classic|minimal|creative|executive|technical
113
- --layout <type> single-column|two-column|sidebar
114
- --color <hex> Primary color (default: #2563eb)
115
- --font <name> inter|roboto|lato|open-sans|poppins
116
- --font-size <size> small|medium|large
117
- --spacing <size> compact|normal|spacious
118
- --ats-friendly Enable ATS optimization
119
- --include-photo Include profile photo
120
- --page-numbers Add page numbers
121
-
122
- OUTPUT:
123
- --output <path> Output file path
124
- --format <type> pdf|html|markdown
125
- --open Open after generation
126
-
127
- COVER LETTER:
128
- --cover-letter Generate cover letter
129
- --company <name> Company name
130
- --position <title> Position title
131
- --letter-content <text> Letter content
132
- --letter-template <type> standard|modern|executive
133
-
134
- LINKEDIN:
135
- --from-linkedin <path> Import from LinkedIn JSON
136
-
137
- EXAMPLES:
138
- # Basic resume
139
- skills run generate-resume -- \\
140
- --name "John Doe" \\
141
- --email "john@email.com" \\
142
- --title "Software Engineer"
143
-
144
- # Full resume
145
- skills run generate-resume -- \\
146
- --name "Jane Smith" \\
147
- --email "jane@email.com" \\
148
- --title "Senior Developer" \\
149
- --experience "Developer|Acme|2020-Present|Built features..." \\
150
- --education "BS CS|MIT|2016-2020|GPA: 3.8" \\
151
- --skill "JavaScript|5" \\
152
- --ats-friendly \\
153
- --output resume.pdf
154
- `);
155
- }
156
-
157
- // Parse repeatable fields
@@ -1,178 +0,0 @@
1
- #!/usr/bin/env bun
2
-
3
- /**
4
- * Generate Resume Skill
5
- *
6
- * Creates professional resumes and CVs with customizable templates,
7
- * multiple formats, and ATS-friendly designs.
8
- */
9
-
10
- import { writeFile, mkdir } from "node:fs/promises";
11
- import { join } from "node:path";
12
-
13
- import { parseArguments, showHelp } from "./cli";
14
- import {
15
- importFromLinkedIn,
16
- parseCertifications,
17
- parseEducation,
18
- parseExperience,
19
- parseLanguages,
20
- parseProjects,
21
- parseSkills,
22
- } from "./parsers";
23
- import { generateCoverLetterHTML, generateMarkdown, generateResumeHTML } from "./renderers";
24
- import type { CoverLetterData, ResumeData } from "./types";
25
-
26
- async function main() {
27
- const args = parseArguments();
28
-
29
- if (args.help) {
30
- showHelp();
31
- return;
32
- }
33
-
34
- // LinkedIn import
35
- if (args["from-linkedin"]) {
36
- const linkedinData = await importFromLinkedIn(args["from-linkedin"]);
37
- Object.assign(args, linkedinData);
38
- }
39
-
40
- // Cover letter mode
41
- if (args["cover-letter"]) {
42
- if (!args.name || !args.company || !args.position || !args["letter-content"]) {
43
- console.error("Error: Cover letter requires --name, --company, --position, and --letter-content");
44
- process.exit(1);
45
- }
46
-
47
- const letterData: CoverLetterData = {
48
- name: args.name,
49
- email: args.email,
50
- phone: args.phone,
51
- location: args.location,
52
- company: args.company,
53
- position: args.position,
54
- content: args["letter-content"],
55
- template: args["letter-template"] || "standard",
56
- date: new Date().toISOString().split("T")[0],
57
- };
58
-
59
- const html = generateCoverLetterHTML(letterData);
60
-
61
- const outputDir = process.env.SKILLS_OUTPUT_DIR || process.env.SKILLS_PROJECT_ROOT || process.cwd();
62
- const exportsDir = join(outputDir, ".skills", "exports", "generate-resume");
63
- await mkdir(exportsDir, { recursive: true });
64
-
65
- const outputPath = args.output
66
- ? args.output.startsWith("/") ? args.output : join(process.cwd(), args.output)
67
- : join(exportsDir, "cover-letter.html");
68
- await writeFile(outputPath, html);
69
-
70
- console.log(`\nCover letter generated successfully!`);
71
- console.log(`File: ${outputPath}`);
72
- console.log("\nTo convert to PDF: Open in browser and print to PDF");
73
-
74
- if (args.open) {
75
- const openCmd = process.platform === "darwin" ? "open" : process.platform === "win32" ? "start" : "xdg-open";
76
- Bun.spawn([openCmd, outputPath]);
77
- }
78
-
79
- return;
80
- }
81
-
82
- // Validate required fields
83
- if (!args.name) {
84
- console.error("Error: --name is required");
85
- console.log("\nRun with --help for usage information");
86
- process.exit(1);
87
- }
88
-
89
- // Build resume data
90
- const resumeData: ResumeData = {
91
- name: args.name,
92
- email: args.email,
93
- phone: args.phone,
94
- location: args.location,
95
- website: args.website,
96
- linkedin: args.linkedin,
97
- github: args.github,
98
- portfolio: args.portfolio,
99
- twitter: args.twitter,
100
- photo: args.photo,
101
- title: args.title,
102
- summary: args.summary,
103
- experience: args.experience ? parseExperience(args.experience as string[]) : [],
104
- education: args.education ? parseEducation(args.education as string[]) : [],
105
- skills: args.skill ? parseSkills(args.skill as string[]) : [],
106
- projects: args.project ? parseProjects(args.project as string[]) : [],
107
- certifications: args.certification ? parseCertifications(args.certification as string[]) : [],
108
- languages: args.language ? parseLanguages(args.language as string[]) : [],
109
- template: args.template || "modern",
110
- layout: args.layout || "single-column",
111
- color: args.color || "#2563eb",
112
- font: args.font || "inter",
113
- fontSize: args["font-size"] || "medium",
114
- spacing: args.spacing || "normal",
115
- atsFriendly: args["ats-friendly"] || false,
116
- includePhoto: args["include-photo"] || false,
117
- pageNumbers: args["page-numbers"] || false,
118
- };
119
-
120
- // Determine output
121
- const outputDir = process.env.SKILLS_OUTPUT_DIR || process.env.SKILLS_PROJECT_ROOT || process.cwd();
122
- const exportsDir = join(outputDir, ".skills", "exports", "generate-resume");
123
- await mkdir(exportsDir, { recursive: true });
124
-
125
- const format = args.format || "pdf";
126
- const ext = format === "markdown" ? "md" : format === "html" ? "html" : "html";
127
- const defaultFilename = `resume-${args.name.toLowerCase().replace(/\s+/g, "-")}.${ext}`;
128
-
129
- // Handle absolute vs relative paths
130
- let outputPath: string;
131
- if (args.output) {
132
- outputPath = args.output.startsWith("/") ? args.output : join(process.cwd(), args.output);
133
- } else {
134
- outputPath = join(exportsDir, defaultFilename);
135
- }
136
-
137
- // Generate output
138
- let content = "";
139
- if (format === "markdown") {
140
- content = generateMarkdown(resumeData);
141
- } else {
142
- content = generateResumeHTML(resumeData);
143
- }
144
-
145
- await writeFile(outputPath, content);
146
-
147
- // Save metadata
148
- const metadataPath = join(exportsDir, `metadata.json`);
149
- await writeFile(metadataPath, JSON.stringify(resumeData, null, 2));
150
-
151
- console.log(`\n✓ Resume generated successfully!`);
152
- console.log(`File: ${outputPath}`);
153
- console.log(`Metadata: ${metadataPath}`);
154
-
155
- if (format === "pdf" || (format === "html" && !args.output?.endsWith(".html"))) {
156
- console.log("\nTo convert to PDF:");
157
- console.log(` 1. Open in browser: file://${outputPath}`);
158
- console.log(` 2. Print to PDF using browser's print function`);
159
- }
160
-
161
- console.log("\n" + "=".repeat(50));
162
- console.log(`Resume: ${resumeData.name}`);
163
- console.log(`Template: ${resumeData.template}`);
164
- console.log(`Layout: ${resumeData.layout}`);
165
- console.log(`Format: ${format}`);
166
- console.log("=".repeat(50) + "\n");
167
-
168
- if (args.open) {
169
- const openCmd = process.platform === "darwin" ? "open" : process.platform === "win32" ? "start" : "xdg-open";
170
- Bun.spawn([openCmd, outputPath]);
171
- }
172
- }
173
-
174
- // Run
175
- main().catch((error) => {
176
- console.error("Error:", error.message);
177
- process.exit(1);
178
- });
@@ -1,95 +0,0 @@
1
- import { readFile } from "node:fs/promises";
2
-
3
- import type { Certification, Education, Experience, Language, Project, ResumeData, Skill } from "./types";
4
-
5
- export function parseExperience(data: string[]): Experience[] {
6
- return data.map((item) => {
7
- const [title, company, dates, description] = item.split("|");
8
- return { title, company, dates, description };
9
- });
10
- }
11
-
12
- export function parseEducation(data: string[]): Education[] {
13
- return data.map((item) => {
14
- const [degree, school, dates, details] = item.split("|");
15
- return { degree, school, dates, details };
16
- });
17
- }
18
-
19
- export function parseSkills(data: string[]): Skill[] {
20
- return data.map((item) => {
21
- const [name, levelStr] = item.split("|");
22
- const level = parseInt(levelStr) || 3;
23
- return { name, level };
24
- });
25
- }
26
-
27
- export function parseProjects(data: string[]): Project[] {
28
- return data.map((item) => {
29
- const [name, description, url] = item.split("|");
30
- return { name, description, url };
31
- });
32
- }
33
-
34
- export function parseCertifications(data: string[]): Certification[] {
35
- return data.map((item) => {
36
- const [name, year, issuer] = item.split("|");
37
- return { name, year, issuer };
38
- });
39
- }
40
-
41
- export function parseLanguages(data: string[]): Language[] {
42
- return data.map((item) => {
43
- const [name, proficiency] = item.split("|");
44
- return { name, proficiency };
45
- });
46
- }
47
-
48
- // Import from LinkedIn JSON
49
- export async function importFromLinkedIn(filePath: string): Promise<Partial<ResumeData>> {
50
- try {
51
- const content = await readFile(filePath, "utf-8");
52
- const data = JSON.parse(content);
53
-
54
- // Parse LinkedIn profile data
55
- // Note: LinkedIn export format may vary, this is a simplified parser
56
- return {
57
- name: data.firstName && data.lastName ? `${data.firstName} ${data.lastName}` : undefined,
58
- title: data.headline,
59
- location: data.location?.name,
60
- summary: data.summary,
61
- experience: data.positions?.values?.map((pos: any) => ({
62
- title: pos.title,
63
- company: pos.company?.name,
64
- dates: `${pos.startDate?.month || ""}/${pos.startDate?.year || ""}-${
65
- pos.isCurrent ? "Present" : `${pos.endDate?.month || ""}/${pos.endDate?.year || ""}`
66
- }`,
67
- description: pos.summary || "",
68
- })) || [],
69
- education: data.educations?.values?.map((edu: any) => ({
70
- degree: edu.degree || edu.fieldOfStudy,
71
- school: edu.schoolName,
72
- dates: `${edu.startDate?.year || ""}-${edu.endDate?.year || ""}`,
73
- details: edu.notes,
74
- })) || [],
75
- skills: data.skills?.values?.map((skill: any, index: number) => ({
76
- name: skill.name,
77
- level: Math.min(5, Math.max(1, Math.floor(skill.endorsementCount / 10) + 3)),
78
- })) || [],
79
- certifications: data.certifications?.values?.map((cert: any) => ({
80
- name: cert.name,
81
- year: cert.startDate?.year?.toString() || "",
82
- issuer: cert.authority,
83
- })) || [],
84
- languages: data.languages?.values?.map((lang: any) => ({
85
- name: lang.name,
86
- proficiency: lang.proficiency?.name || "Professional",
87
- })) || [],
88
- };
89
- } catch (error) {
90
- console.error("Error parsing LinkedIn data:", error);
91
- return {};
92
- }
93
- }
94
-
95
- // Generate HTML resume