@hasna/skills 0.1.21 → 0.1.23

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 (270) hide show
  1. package/bin/index.js +341 -287
  2. package/bin/mcp.js +297 -245
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.js +79 -24
  5. package/dist/lib/basic-skills.test.d.ts +1 -0
  6. package/dist/lib/registry.d.ts +5 -0
  7. package/dist/lib/search.d.ts +2 -2
  8. package/package.json +1 -1
  9. package/skills/skill-academic-journal-matcher/package.json +1 -7
  10. package/skills/skill-action-item-router/package.json +1 -7
  11. package/skills/skill-ad-creative-generator/package.json +1 -7
  12. package/skills/skill-advanced-math/package.json +1 -7
  13. package/skills/skill-anomaly-investigator/package.json +1 -7
  14. package/skills/skill-api-test-suite/package.json +1 -7
  15. package/skills/skill-apidocs/package.json +0 -6
  16. package/skills/skill-audio/SKILL.md +3 -1
  17. package/skills/skill-audio/package.json +0 -5
  18. package/skills/skill-audio/src/index-local.ts +4 -1
  19. package/skills/skill-audio/src/providers/minimax.ts +83 -0
  20. package/skills/skill-audio/src/types.ts +1 -1
  21. package/skills/skill-audio-cleanup-lab/package.json +1 -5
  22. package/skills/{skill-extract-audio → skill-audio-extract}/SKILL.md +3 -3
  23. package/skills/{skill-extract-audio → skill-audio-extract}/package.json +3 -7
  24. package/skills/skill-audiobook-chapter-proofer/package.json +1 -7
  25. package/skills/skill-banner-ad-suite/package.json +1 -7
  26. package/skills/skill-benchmark-finder/package.json +1 -7
  27. package/skills/skill-bio-sequence-tool/package.json +1 -7
  28. package/skills/skill-blog-topic-cluster/package.json +1 -7
  29. package/skills/skill-brand-voice-audit/package.json +1 -7
  30. package/skills/skill-browse/package.json +0 -5
  31. package/skills/skill-businessactivity/package.json +1 -3
  32. package/skills/skill-calendar-events/package.json +1 -7
  33. package/skills/skill-campaign-metric-brief/package.json +1 -7
  34. package/skills/skill-campaign-moodboard/package.json +1 -7
  35. package/skills/skill-caption-style-stylist/package.json +1 -7
  36. package/skills/skill-chemistry-calculator/package.json +1 -7
  37. package/skills/skill-churn-risk-notifier/package.json +1 -7
  38. package/skills/skill-citation-formatter/package.json +1 -7
  39. package/skills/skill-classroom-newsletter-kit/package.json +1 -7
  40. package/skills/skill-codefix/package.json +0 -4
  41. package/skills/skill-color-palette-harmonizer/package.json +1 -7
  42. package/skills/skill-colorextract/package.json +17 -5
  43. package/skills/skill-commitpush/package.json +0 -1
  44. package/skills/skill-commitpushpr/package.json +0 -1
  45. package/skills/skill-competitor-ad-analyzer/package.json +1 -7
  46. package/skills/skill-compliance-copy-check/package.json +1 -7
  47. package/skills/skill-compliance-report-pack/package.json +1 -7
  48. package/skills/skill-compress-video/package.json +1 -5
  49. package/skills/skill-consolelog/package.json +1 -7
  50. package/skills/skill-contract-plainlanguage/package.json +1 -7
  51. package/skills/skill-convert/SKILL.md +7 -0
  52. package/skills/skill-convert/package.json +0 -4
  53. package/skills/skill-copytone-translator/package.json +1 -7
  54. package/skills/skill-create-blog-article/package.json +1 -7
  55. package/skills/skill-create-ebook/package.json +1 -7
  56. package/skills/skill-crm-note-enhancer/package.json +1 -7
  57. package/skills/skill-customer-journey-mapper/package.json +1 -7
  58. package/skills/skill-dashboard-builder/package.json +1 -7
  59. package/skills/skill-dashboard-narrator/package.json +1 -7
  60. package/skills/skill-data-anonymizer/package.json +1 -7
  61. package/skills/skill-database-explorer/package.json +1 -7
  62. package/skills/skill-dataset-health-check/package.json +1 -7
  63. package/skills/skill-decision-journal/package.json +1 -7
  64. package/skills/skill-deepresearch/package.json +0 -5
  65. package/skills/skill-delegation-brief-writer/package.json +1 -7
  66. package/skills/skill-deploy/package.json +0 -4
  67. package/skills/skill-destination-briefing/package.json +1 -7
  68. package/skills/skill-diff-viewer/package.json +1 -7
  69. package/skills/{skill-generate-docx → skill-doc-generate}/SKILL.md +2 -2
  70. package/skills/{skill-generate-pdf → skill-doc-generate}/package.json +9 -4
  71. package/skills/{skill-generate-docx → skill-doc-generate}/src/index.ts +91 -28
  72. package/skills/skill-doc-read/SKILL.md +45 -0
  73. package/skills/skill-doc-read/package.json +29 -0
  74. package/skills/skill-doc-read/src/index.ts +324 -0
  75. package/skills/skill-doc-read/tsconfig.json +8 -0
  76. package/skills/skill-domainpurchase/package.json +1 -7
  77. package/skills/skill-domainsearch/package.json +1 -7
  78. package/skills/skill-e2bswarm/package.json +0 -6
  79. package/skills/skill-educational-resource-finder/package.json +1 -7
  80. package/skills/skill-email-campaign/package.json +1 -7
  81. package/skills/skill-emoji/package.json +0 -1
  82. package/skills/skill-exam-readiness-check/package.json +1 -7
  83. package/skills/skill-excel/SKILL.md +38 -0
  84. package/skills/skill-excel/package.json +30 -0
  85. package/skills/{skill-generate-excel → skill-excel}/src/index.ts +41 -14
  86. package/skills/skill-experiment-power-calculator/package.json +1 -7
  87. package/skills/skill-extract/package.json +0 -5
  88. package/skills/skill-extract-frames/package.json +1 -7
  89. package/skills/skill-extract-invoice/package.json +1 -7
  90. package/skills/skill-family-activity-curator/package.json +1 -7
  91. package/skills/skill-faq-packager/package.json +1 -7
  92. package/skills/skill-feedback-survey-designer/package.json +1 -7
  93. package/skills/skill-field-trip-planner/package.json +1 -7
  94. package/skills/skill-file-organizer/package.json +1 -7
  95. package/skills/skill-folder-tree/package.json +1 -7
  96. package/skills/skill-forecast-scenario-lab/package.json +1 -7
  97. package/skills/skill-form-filler/package.json +1 -7
  98. package/skills/skill-generate-api-client/package.json +1 -7
  99. package/skills/skill-generate-book-cover/package.json +1 -7
  100. package/skills/skill-generate-chart/package.json +1 -7
  101. package/skills/skill-generate-diagram/package.json +1 -7
  102. package/skills/skill-generate-dockerfile/package.json +1 -7
  103. package/skills/skill-generate-documentation/package.json +1 -7
  104. package/skills/skill-generate-env/package.json +1 -7
  105. package/skills/skill-generate-favicon/package.json +1 -7
  106. package/skills/skill-generate-mock-data/package.json +1 -7
  107. package/skills/skill-generate-pr-description/package.json +1 -7
  108. package/skills/skill-generate-presentation/package.json +1 -7
  109. package/skills/skill-generate-qrcode/package.json +1 -7
  110. package/skills/skill-generate-regex/package.json +1 -7
  111. package/skills/skill-generate-resume/package.json +1 -7
  112. package/skills/skill-generate-sitemap/package.json +1 -7
  113. package/skills/skill-generate-social-posts/package.json +1 -7
  114. package/skills/skill-generate-sql/package.json +1 -7
  115. package/skills/skill-gif-maker/package.json +1 -7
  116. package/skills/skill-github-manager/package.json +1 -7
  117. package/skills/skill-gmail/package.json +1 -7
  118. package/skills/skill-goal-quarterly-roadmap/package.json +1 -7
  119. package/skills/skill-grant-application-drafter/package.json +1 -7
  120. package/skills/skill-grocery-basket-optimizer/package.json +1 -7
  121. package/skills/skill-guest-communication-suite/package.json +1 -7
  122. package/skills/skill-habit-reflection-digest/package.json +1 -7
  123. package/skills/skill-highlight-reel-generator/package.json +1 -7
  124. package/skills/skill-homework-feedback-coach/package.json +1 -7
  125. package/skills/skill-hook/package.json +0 -6
  126. package/skills/skill-household-maintenance-mgr/package.json +1 -7
  127. package/skills/skill-http-server/package.json +1 -7
  128. package/skills/skill-image/SKILL.md +2 -0
  129. package/skills/skill-image/package.json +0 -5
  130. package/skills/skill-image/src/index-local.ts +5 -3
  131. package/skills/skill-image/src/providers/minimax.ts +94 -0
  132. package/skills/skill-image/src/types.ts +1 -1
  133. package/skills/skill-implementation/package.json +0 -6
  134. package/skills/skill-implementation-agent/package.json +1 -7
  135. package/skills/skill-implementation-plan/package.json +1 -7
  136. package/skills/skill-implementation-todo/package.json +1 -7
  137. package/skills/skill-inbox-priority-planner/package.json +1 -7
  138. package/skills/skill-invoice-dispute-helper/package.json +1 -7
  139. package/skills/skill-itinerary-architect/package.json +1 -7
  140. package/skills/skill-kpi-digest-generator/package.json +1 -7
  141. package/skills/skill-lab-notebook-formatter/package.json +1 -7
  142. package/skills/skill-landing-page-copy/package.json +1 -7
  143. package/skills/skill-latex-table-generator/package.json +1 -7
  144. package/skills/skill-learning-style-profiler/package.json +1 -7
  145. package/skills/skill-lesson-plan-customizer/package.json +1 -7
  146. package/skills/skill-livestream-runofshow/package.json +1 -7
  147. package/skills/skill-longform-structurer/package.json +1 -7
  148. package/skills/skill-lorem-generator/package.json +1 -7
  149. package/skills/skill-managehook/package.json +1 -3
  150. package/skills/skill-managemcp/package.json +1 -3
  151. package/skills/skill-manageskill/package.json +1 -3
  152. package/skills/skill-markdown-validator/package.json +1 -7
  153. package/skills/skill-mcp-builder/package.json +1 -7
  154. package/skills/skill-meal-plan-designer/package.json +1 -7
  155. package/skills/skill-meeting-insight-summarizer/package.json +1 -7
  156. package/skills/skill-merge-pdfs/package.json +1 -7
  157. package/skills/skill-microcopy-generator/package.json +1 -7
  158. package/skills/skill-mindfulness-prompt-cache/package.json +1 -7
  159. package/skills/skill-monitor/package.json +0 -1
  160. package/skills/skill-music/CLAUDE.md +9 -0
  161. package/skills/skill-music/SKILL.md +35 -0
  162. package/skills/{skill-generate-excel → skill-music}/package.json +4 -10
  163. package/skills/skill-music/src/index.ts +192 -0
  164. package/skills/skill-notion-manager/package.json +1 -7
  165. package/skills/skill-npmpublish/package.json +0 -5
  166. package/skills/skill-onboarding-sequence-builder/package.json +1 -7
  167. package/skills/skill-onsite-ops-checklist/package.json +1 -7
  168. package/skills/skill-outreach-cadence-designer/package.json +1 -7
  169. package/skills/skill-packaging-concept-studio/package.json +1 -7
  170. package/skills/skill-packing-plan-pro/package.json +1 -7
  171. package/skills/skill-parent-teacher-brief/package.json +1 -7
  172. package/skills/skill-partner-kit-assembler/package.json +1 -7
  173. package/skills/skill-payroll-change-prepper/package.json +1 -7
  174. package/skills/{skill-generate-pdf → skill-pdf-generate}/SKILL.md +2 -2
  175. package/skills/{skill-generate-docx → skill-pdf-generate}/package.json +6 -4
  176. package/skills/{skill-generate-pdf → skill-pdf-generate}/src/index.ts +109 -8
  177. package/skills/skill-pdf-read/SKILL.md +56 -0
  178. package/skills/skill-pdf-read/package.json +29 -0
  179. package/skills/skill-pdf-read/src/index.ts +320 -0
  180. package/skills/skill-pdf-read/tsconfig.json +8 -0
  181. package/skills/skill-persona-based-adwriter/package.json +1 -7
  182. package/skills/skill-persona-generator/package.json +1 -7
  183. package/skills/skill-personal-daily-ops/package.json +1 -7
  184. package/skills/skill-pet-care-scheduler/package.json +1 -7
  185. package/skills/skill-podcast-show-notes/package.json +1 -7
  186. package/skills/skill-presentation-theme-maker/package.json +1 -7
  187. package/skills/skill-press-release-drafter/package.json +1 -7
  188. package/skills/skill-print-collateral-designer/package.json +1 -7
  189. package/skills/skill-procurement-scorecard/package.json +1 -7
  190. package/skills/skill-product-demo-script/package.json +1 -7
  191. package/skills/skill-product-mockup/package.json +1 -7
  192. package/skills/skill-project-retro-companion/package.json +1 -7
  193. package/skills/skill-proposal-redline-advisor/package.json +1 -7
  194. package/skills/skill-read-csv/SKILL.md +1 -1
  195. package/skills/skill-read-csv/package.json +0 -1
  196. package/skills/skill-read-csv/src/index.ts +30 -5
  197. package/skills/skill-read-excel/SKILL.md +1 -1
  198. package/skills/skill-read-excel/package.json +0 -1
  199. package/skills/skill-read-excel/src/index.ts +21 -8
  200. package/skills/skill-read-image/SKILL.md +1 -1
  201. package/skills/skill-read-image/package.json +0 -1
  202. package/skills/skill-read-pdf/SKILL.md +1 -1
  203. package/skills/skill-read-pdf/package.json +0 -1
  204. package/skills/skill-read-pdf/src/index.ts +15 -3
  205. package/skills/skill-regex-tester/package.json +1 -7
  206. package/skills/skill-remove-background/package.json +1 -7
  207. package/skills/skill-risk-disclosure-kit/package.json +1 -7
  208. package/skills/skill-roi-comparison-tool/package.json +1 -7
  209. package/skills/skill-sales-call-recapper/package.json +1 -7
  210. package/skills/skill-scaffold-project/package.json +1 -7
  211. package/skills/skill-scancommitpr/package.json +0 -2
  212. package/skills/skill-scancommitpush/package.json +0 -2
  213. package/skills/skill-scholarship-tracker/package.json +1 -7
  214. package/skills/skill-scientific-figure-check/package.json +1 -7
  215. package/skills/skill-seating-chart-maker/package.json +1 -7
  216. package/skills/skill-security-audit/package.json +1 -7
  217. package/skills/skill-seo-brief-builder/package.json +1 -7
  218. package/skills/skill-siteanalyze/package.json +19 -5
  219. package/skills/skill-slack-assistant/package.json +1 -7
  220. package/skills/skill-sleep-routine-analyzer/package.json +1 -7
  221. package/skills/skill-sms/package.json +0 -1
  222. package/skills/skill-social-media-kit/package.json +1 -7
  223. package/skills/skill-sound-effects/SKILL.md +34 -0
  224. package/skills/{skill-jingle-composer → skill-sound-effects}/package.json +4 -10
  225. package/skills/skill-sound-effects/src/index.ts +172 -0
  226. package/skills/skill-sound-effects/tsconfig.json +8 -0
  227. package/skills/skill-split-pdf/package.json +1 -7
  228. package/skills/skill-sponsorship-proposal-lab/package.json +1 -7
  229. package/skills/skill-spreadsheet-cleanroom/package.json +1 -7
  230. package/skills/skill-statistical-test-selector/package.json +1 -7
  231. package/skills/skill-stress-relief-playbook/package.json +1 -7
  232. package/skills/skill-study-guide-builder/package.json +1 -7
  233. package/skills/skill-subscription-spend-watcher/package.json +1 -7
  234. package/skills/skill-subtitle/package.json +0 -6
  235. package/skills/skill-survey-insight-extractor/package.json +1 -7
  236. package/skills/skill-terraform-generator/package.json +1 -7
  237. package/skills/skill-testimonial-graphics/package.json +1 -7
  238. package/skills/skill-timesheet/package.json +0 -6
  239. package/skills/skill-tmux-session/package.json +0 -1
  240. package/skills/skill-transcript/SKILL.md +3 -1
  241. package/skills/skill-transcript/package.json +0 -5
  242. package/skills/skill-travel-budget-balancer/package.json +1 -7
  243. package/skills/skill-validate-config/package.json +1 -7
  244. package/skills/skill-video/SKILL.md +3 -1
  245. package/skills/skill-video/package.json +0 -5
  246. package/skills/skill-video/src/providers/index.ts +4 -1
  247. package/skills/skill-video/src/providers/minimax.ts +100 -0
  248. package/skills/skill-video/src/types.ts +1 -1
  249. package/skills/skill-video-cut-suggester/package.json +1 -7
  250. package/skills/skill-video-downloader/package.json +1 -7
  251. package/skills/skill-video-thumbnail/package.json +1 -7
  252. package/skills/skill-voiceover-casting-assistant/package.json +1 -7
  253. package/skills/skill-watermark/package.json +1 -7
  254. package/skills/skill-webcrawling/package.json +11 -8
  255. package/skills/skill-webinar-script-coach/package.json +1 -7
  256. package/skills/skill-wellness-progress-reporter/package.json +1 -7
  257. package/skills/skill-workout-cycle-planner/package.json +1 -7
  258. package/skills/skill-write/package.json +0 -5
  259. package/skills/skill-jingle-composer/CLAUDE.md +0 -19
  260. package/skills/skill-jingle-composer/src/index.ts +0 -250
  261. /package/skills/{skill-extract-audio → skill-audio-extract}/CLAUDE.md +0 -0
  262. /package/skills/{skill-extract-audio → skill-audio-extract}/src/index.ts +0 -0
  263. /package/skills/{skill-extract-audio → skill-audio-extract}/tsconfig.json +0 -0
  264. /package/skills/{skill-generate-docx → skill-doc-generate}/CLAUDE.md +0 -0
  265. /package/skills/{skill-generate-docx → skill-doc-generate}/tsconfig.json +0 -0
  266. /package/skills/{skill-generate-excel → skill-excel}/CLAUDE.md +0 -0
  267. /package/skills/{skill-generate-excel → skill-excel}/tsconfig.json +0 -0
  268. /package/skills/{skill-jingle-composer → skill-music}/tsconfig.json +0 -0
  269. /package/skills/{skill-generate-pdf → skill-pdf-generate}/CLAUDE.md +0 -0
  270. /package/skills/{skill-generate-pdf → skill-pdf-generate}/tsconfig.json +0 -0
package/dist/index.d.ts CHANGED
@@ -7,7 +7,7 @@
7
7
  * Or use the interactive CLI:
8
8
  * skills
9
9
  */
10
- export { SKILLS, CATEGORIES, getSkill, getSkillsByCategory, searchSkills, getSkillsByTag, getAllTags, findSimilarSkills, loadRegistry, clearRegistryCache, type SkillMeta, type Category, } from "./lib/registry.js";
10
+ export { SKILLS, BASIC_SKILL_NAMES, CATEGORIES, getSkill, getSkillsByCategory, searchSkills, getSkillsByTag, getAllTags, findSimilarSkills, isBasicSkillName, loadRegistry, loadBasicRegistry, loadRegistryProfile, clearRegistryCache, type SkillMeta, type Category, type SkillRegistryProfile, } from "./lib/registry.js";
11
11
  export { installSkill, installSkills, installSkillForAgent, removeSkillForAgent, getInstalledSkills, removeSkill, skillExists, getSkillPath, getAgentSkillsDir, getAgentSkillPath, AGENT_TARGETS, type InstallResult, type InstallOptions, type AgentTarget, type AgentScope, type AgentInstallOptions, getInstallMeta, disableSkill, enableSkill, getDisabledSkills, } from "./lib/installer.js";
12
12
  export { getSkillDocs, getSkillBestDoc, getSkillRequirements, runSkill, generateEnvExample, generateSkillMd, type SkillDocs, type SkillRequirements, } from "./lib/skillinfo.js";
13
13
  export { loadConfig, saveConfig, getConfigPath, type SkillsConfig, type ConfigScope, } from "./lib/config.js";
package/dist/index.js CHANGED
@@ -44,12 +44,12 @@ function fuzzyMatchScore(word, target) {
44
44
  }
45
45
  return 0;
46
46
  }
47
- function searchSkills(query) {
47
+ function searchSkills(query, registry = loadRegistry()) {
48
48
  const words = query.toLowerCase().split(/\s+/).filter(Boolean);
49
49
  if (words.length === 0)
50
50
  return [];
51
51
  const scored = [];
52
- for (const skill of loadRegistry()) {
52
+ for (const skill of registry) {
53
53
  const nameLower = skill.name.toLowerCase();
54
54
  const displayNameLower = skill.displayName.toLowerCase();
55
55
  const descriptionLower = skill.description.toLowerCase();
@@ -84,9 +84,9 @@ function searchSkills(query) {
84
84
  scored.sort((a, b) => b.score - a.score);
85
85
  return scored.map((s) => s.skill);
86
86
  }
87
- function findSimilarSkills(query, maxResults = 3) {
87
+ function findSimilarSkills(query, maxResults = 3, registry = loadRegistry()) {
88
88
  const q = query.toLowerCase();
89
- const scored = loadRegistry().map((s) => ({ name: s.name, dist: editDistance(q, s.name.toLowerCase()) })).filter((s) => s.dist <= Math.max(3, Math.floor(q.length / 2))).sort((a, b) => a.dist - b.dist);
89
+ const scored = registry.map((s) => ({ name: s.name, dist: editDistance(q, s.name.toLowerCase()) })).filter((s) => s.dist <= Math.max(3, Math.floor(q.length / 2))).sort((a, b) => a.dist - b.dist);
90
90
  return scored.slice(0, maxResults).map((s) => s.name);
91
91
  }
92
92
 
@@ -110,6 +110,28 @@ var CATEGORIES = [
110
110
  "Travel & Lifestyle",
111
111
  "Event Management"
112
112
  ];
113
+ var BASIC_SKILL_NAMES = [
114
+ "image",
115
+ "video",
116
+ "audio",
117
+ "music",
118
+ "sound-effects",
119
+ "transcript",
120
+ "audio-extract",
121
+ "read-image",
122
+ "read-pdf",
123
+ "pdf-read",
124
+ "doc-read",
125
+ "pdf-generate",
126
+ "doc-generate",
127
+ "read-csv",
128
+ "read-excel",
129
+ "excel",
130
+ "convert"
131
+ ];
132
+ function isBasicSkillName(name) {
133
+ return BASIC_SKILL_NAMES.includes(name.replace(/^skill-/, ""));
134
+ }
113
135
  var SKILLS = [
114
136
  {
115
137
  name: "api-test-suite",
@@ -697,9 +719,9 @@ var SKILLS = [
697
719
  {
698
720
  name: "audio",
699
721
  displayName: "Audio",
700
- description: "Generate audio, voiceovers, and speech using AI-powered TTS APIs (ElevenLabs, OpenAI)",
722
+ description: "Generate audio, voiceovers, and speech using AI-powered TTS APIs (Minimax, ElevenLabs, OpenAI)",
701
723
  category: "Content Generation",
702
- tags: ["audio", "tts", "speech", "ai"]
724
+ tags: ["audio", "tts", "speech", "ai", "minimax"]
703
725
  },
704
726
  {
705
727
  name: "audiobook-chapter-proofer",
@@ -723,22 +745,22 @@ var SKILLS = [
723
745
  tags: ["diagrams", "flowcharts", "visualization", "architecture"]
724
746
  },
725
747
  {
726
- name: "generate-docx",
727
- displayName: "Generate DOCX",
728
- description: "Generate DOCX documents with formatted content and styling",
748
+ name: "doc-generate",
749
+ displayName: "Doc Generate",
750
+ description: "Generate DOCX documents with rich formatting, templates, and AI content",
729
751
  category: "Content Generation",
730
752
  tags: ["docx", "document", "word", "generation"]
731
753
  },
732
754
  {
733
- name: "generate-excel",
734
- displayName: "Generate Excel",
735
- description: "Generate Excel spreadsheets with formatted data, formulas, and charts",
755
+ name: "excel",
756
+ displayName: "Excel",
757
+ description: "Generate Excel spreadsheets with data, formulas, and professional styling",
736
758
  category: "Content Generation",
737
759
  tags: ["excel", "spreadsheet", "generation", "data"]
738
760
  },
739
761
  {
740
- name: "generate-pdf",
741
- displayName: "Generate PDF",
762
+ name: "pdf-generate",
763
+ displayName: "PDF Generate",
742
764
  description: "Generate PDF documents with rich formatting and layouts",
743
765
  category: "Content Generation",
744
766
  tags: ["pdf", "document", "generation", "formatting"]
@@ -767,23 +789,23 @@ var SKILLS = [
767
789
  {
768
790
  name: "image",
769
791
  displayName: "Image",
770
- description: "Generate images using multiple AI providers: DALL-E 3, Imagen 3, and Aurora",
792
+ description: "Generate images using AI providers: Minimax, DALL-E 3, Imagen 3, and Aurora",
771
793
  category: "Content Generation",
772
- tags: ["image", "generation", "ai", "dalle"]
794
+ tags: ["image", "generation", "ai", "minimax", "dalle"]
773
795
  },
774
796
  {
775
- name: "jingle-composer",
776
- displayName: "Jingle Composer",
777
- description: "Compose advertising jingles and short musical pieces for brands",
797
+ name: "music",
798
+ displayName: "Music",
799
+ description: "Generate music tracks using AI models (Minimax Music-01)",
778
800
  category: "Content Generation",
779
- tags: ["jingle", "music", "composition", "advertising"]
801
+ tags: ["music", "generation", "ai", "minimax"]
780
802
  },
781
803
  {
782
804
  name: "video",
783
805
  displayName: "Video",
784
- description: "Generate videos using AI models from Google Veo, OpenAI Sora, and Runway",
806
+ description: "Generate videos using AI models: Minimax, Google Veo, OpenAI Sora, and Runway",
785
807
  category: "Content Generation",
786
- tags: ["video", "generation", "ai", "sora"]
808
+ tags: ["video", "generation", "ai", "minimax", "sora"]
787
809
  },
788
810
  {
789
811
  name: "voiceover-casting-assistant",
@@ -1002,6 +1024,20 @@ var SKILLS = [
1002
1024
  category: "Data & Analysis",
1003
1025
  tags: ["pdf", "documents", "extraction", "analysis"]
1004
1026
  },
1027
+ {
1028
+ name: "pdf-read",
1029
+ displayName: "PDF Read",
1030
+ description: "Read multiple PDFs with page-range selection, chunked reading, and parallel processing",
1031
+ category: "Data & Analysis",
1032
+ tags: ["pdf", "reader", "extraction", "parallel"]
1033
+ },
1034
+ {
1035
+ name: "doc-read",
1036
+ displayName: "Doc Read",
1037
+ description: "Read and extract text from DOCX files with section parsing and metadata extraction",
1038
+ category: "Data & Analysis",
1039
+ tags: ["docx", "reader", "extraction", "word"]
1040
+ },
1005
1041
  {
1006
1042
  name: "spreadsheet-cleanroom",
1007
1043
  displayName: "Spreadsheet Cleanroom",
@@ -1031,8 +1067,8 @@ var SKILLS = [
1031
1067
  tags: ["video", "compression", "ffmpeg", "optimization"]
1032
1068
  },
1033
1069
  {
1034
- name: "extract-audio",
1035
- displayName: "Extract Audio",
1070
+ name: "audio-extract",
1071
+ displayName: "Audio Extract",
1036
1072
  description: "Extract audio tracks from video files with multiple format support",
1037
1073
  category: "Media Processing",
1038
1074
  tags: ["audio", "extraction", "video", "conversion"]
@@ -1107,6 +1143,13 @@ var SKILLS = [
1107
1143
  category: "Media Processing",
1108
1144
  tags: ["watermark", "protection", "copyright", "images"]
1109
1145
  },
1146
+ {
1147
+ name: "sound-effects",
1148
+ displayName: "Sound Effects",
1149
+ description: "Generate realistic sound effects from text descriptions using AI (Minimax)",
1150
+ category: "Media Processing",
1151
+ tags: ["audio", "sound-effects", "sfx", "ai", "minimax"]
1152
+ },
1110
1153
  {
1111
1154
  name: "brand-style-guide",
1112
1155
  displayName: "Brand Style Guide",
@@ -1680,6 +1723,14 @@ function loadRegistry(cwd) {
1680
1723
  _registryCacheTime = now;
1681
1724
  return _registryCache;
1682
1725
  }
1726
+ function loadBasicRegistry(cwd) {
1727
+ const registry = loadRegistry(cwd);
1728
+ const byName = new Map(registry.map((skill) => [skill.name, skill]));
1729
+ return BASIC_SKILL_NAMES.map((name) => byName.get(name)).filter((skill) => skill !== undefined);
1730
+ }
1731
+ function loadRegistryProfile(profile = "basic", cwd) {
1732
+ return profile === "all" ? loadRegistry(cwd) : loadBasicRegistry(cwd);
1733
+ }
1683
1734
  function clearRegistryCache() {
1684
1735
  _registryCache = null;
1685
1736
  _registryCacheTime = 0;
@@ -2565,9 +2616,12 @@ export {
2565
2616
  removeSkill,
2566
2617
  removeSchedule,
2567
2618
  recordScheduleRun,
2619
+ loadRegistryProfile,
2568
2620
  loadRegistry,
2569
2621
  loadConfig,
2622
+ loadBasicRegistry,
2570
2623
  listSchedules,
2624
+ isBasicSkillName,
2571
2625
  installSkills,
2572
2626
  installSkillForAgent,
2573
2627
  installSkill,
@@ -2596,5 +2650,6 @@ export {
2596
2650
  addSchedule,
2597
2651
  SKILLS,
2598
2652
  CATEGORIES,
2653
+ BASIC_SKILL_NAMES,
2599
2654
  AGENT_TARGETS
2600
2655
  };
@@ -0,0 +1 @@
1
+ export {};
@@ -12,6 +12,9 @@ export interface SkillMeta {
12
12
  }
13
13
  export declare const CATEGORIES: readonly ["Development Tools", "Business & Marketing", "Productivity & Organization", "Project Management", "Content Generation", "Finance & Compliance", "Data & Analysis", "Media Processing", "Design & Branding", "Web & Browser", "Research & Writing", "Science & Academic", "Education & Learning", "Communication", "Health & Wellness", "Travel & Lifestyle", "Event Management"];
14
14
  export type Category = (typeof CATEGORIES)[number];
15
+ export declare const BASIC_SKILL_NAMES: readonly ["image", "video", "audio", "music", "sound-effects", "transcript", "audio-extract", "read-image", "read-pdf", "pdf-read", "doc-read", "pdf-generate", "doc-generate", "read-csv", "read-excel", "excel", "convert"];
16
+ export type SkillRegistryProfile = "basic" | "all";
17
+ export declare function isBasicSkillName(name: string): boolean;
15
18
  export declare const SKILLS: SkillMeta[];
16
19
  /**
17
20
  * Load the full registry: official skills merged with custom skills from:
@@ -23,6 +26,8 @@ export declare const SKILLS: SkillMeta[];
23
26
  * Results are cached for 5 seconds.
24
27
  */
25
28
  export declare function loadRegistry(cwd?: string): SkillMeta[];
29
+ export declare function loadBasicRegistry(cwd?: string): SkillMeta[];
30
+ export declare function loadRegistryProfile(profile?: SkillRegistryProfile, cwd?: string): SkillMeta[];
26
31
  /** Invalidate the registry cache (e.g. after installing a custom skill). */
27
32
  export declare function clearRegistryCache(): void;
28
33
  export declare function getSkillsByCategory(category: Category): SkillMeta[];
@@ -10,8 +10,8 @@ export declare function editDistance(a: string, b: string): number;
10
10
  /**
11
11
  * Search skills by name, description, and tags using fuzzy matching.
12
12
  */
13
- export declare function searchSkills(query: string): SkillMeta[];
13
+ export declare function searchSkills(query: string, registry?: SkillMeta[]): SkillMeta[];
14
14
  /**
15
15
  * Find skills with names similar to the given query (for "did you mean?" suggestions).
16
16
  */
17
- export declare function findSimilarSkills(query: string, maxResults?: number): string[];
17
+ export declare function findSimilarSkills(query: string, maxResults?: number, registry?: SkillMeta[]): string[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/skills",
3
- "version": "0.1.21",
3
+ "version": "0.1.23",
4
4
  "description": "Skills library for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -23,11 +23,5 @@
23
23
  "files": [
24
24
  "src",
25
25
  "tsconfig.json"
26
- ],
27
- "repository": {
28
- "type": "git",
29
- "url": "https://github.com/hasnaxyz/skill-academic-journal-matcher.git"
30
- },
31
- "author": "Hasna",
32
- "license": "Apache-2.0"
26
+ ]
33
27
  }
@@ -23,11 +23,5 @@
23
23
  "files": [
24
24
  "src",
25
25
  "tsconfig.json"
26
- ],
27
- "repository": {
28
- "type": "git",
29
- "url": "https://github.com/hasnaxyz/skill-action-item-router.git"
30
- },
31
- "author": "Hasna",
32
- "license": "Apache-2.0"
26
+ ]
33
27
  }
@@ -23,11 +23,5 @@
23
23
  "files": [
24
24
  "src",
25
25
  "tsconfig.json"
26
- ],
27
- "repository": {
28
- "type": "git",
29
- "url": "https://github.com/hasnaxyz/skill-ad-creative-generator.git"
30
- },
31
- "author": "Hasna",
32
- "license": "Apache-2.0"
26
+ ]
33
27
  }
@@ -23,11 +23,5 @@
23
23
  "files": [
24
24
  "src",
25
25
  "tsconfig.json"
26
- ],
27
- "repository": {
28
- "type": "git",
29
- "url": "https://github.com/hasnaxyz/skill-advanced-math.git"
30
- },
31
- "author": "Hasna",
32
- "license": "Apache-2.0"
26
+ ]
33
27
  }
@@ -23,11 +23,5 @@
23
23
  "files": [
24
24
  "src",
25
25
  "tsconfig.json"
26
- ],
27
- "repository": {
28
- "type": "git",
29
- "url": "https://github.com/hasnaxyz/skill-anomaly-investigator.git"
30
- },
31
- "author": "Hasna",
32
- "license": "Apache-2.0"
26
+ ]
33
27
  }
@@ -23,11 +23,5 @@
23
23
  "files": [
24
24
  "src",
25
25
  "tsconfig.json"
26
- ],
27
- "repository": {
28
- "type": "git",
29
- "url": "https://github.com/hasnaxyz/skill-api-test-suite.git"
30
- },
31
- "author": "Hasna",
32
- "license": "Apache-2.0"
26
+ ]
33
27
  }
@@ -11,12 +11,6 @@
11
11
  "build": "bun build bin/cli.ts --outdir dist --target node",
12
12
  "typecheck": "tsc --noEmit"
13
13
  },
14
- "repository": {
15
- "type": "git",
16
- "url": "https://github.com/hasnaxyz/skill-apidocs.git"
17
- },
18
- "author": "Hasna",
19
- "license": "Apache-2.0",
20
14
  "keywords": [
21
15
  "api",
22
16
  "documentation",
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: Audio Generation
2
+ name: audio
3
3
  description: Generate high-quality audio using ElevenLabs, OpenAI TTS, and Google Text-to-Speech APIs. Support for text-to-speech, voice cloning, multiple languages, and various voice options.
4
4
  ---
5
5
 
@@ -7,6 +7,8 @@ description: Generate high-quality audio using ElevenLabs, OpenAI TTS, and Googl
7
7
 
8
8
  This skill provides a unified interface for generating audio from text using multiple AI-powered text-to-speech providers.
9
9
 
10
+ This CLI is API-backed. Set `SKILL_API_KEY` when routing through the hosted skills/connectors runtime; provider-specific keys are managed by that runtime.
11
+
10
12
  ## Supported Providers
11
13
 
12
14
  ### ElevenLabs
@@ -21,15 +21,10 @@
21
21
  "ai"
22
22
  ],
23
23
  "author": "",
24
- "license": "Apache-2.0",
25
24
  "devDependencies": {
26
25
  "@types/bun": "latest"
27
26
  },
28
27
  "peerDependencies": {
29
28
  "typescript": "^5.0.0"
30
- },
31
- "repository": {
32
- "type": "git",
33
- "url": "git+https://github.com/hasnaxyz/skill-audio.git"
34
29
  }
35
30
  }
@@ -20,6 +20,7 @@ if (await handleInstallCommand(SKILL_META, process.argv.slice(2))) {
20
20
  process.exit(0);
21
21
  }
22
22
 
23
+ import { MinimaxProvider } from './providers/minimax';
23
24
  import { ElevenLabsProvider } from './providers/elevenlabs';
24
25
  import { OpenAIProvider } from './providers/openai';
25
26
  import { GoogleProvider } from './providers/google';
@@ -56,6 +57,8 @@ function parseArgs(): {
56
57
  // Get provider instance
57
58
  function getProvider(providerName: Provider): AudioProvider {
58
59
  switch (providerName) {
60
+ case 'minimax':
61
+ return new MinimaxProvider();
59
62
  case 'elevenlabs':
60
63
  return new ElevenLabsProvider();
61
64
  case 'openai':
@@ -64,7 +67,7 @@ function getProvider(providerName: Provider): AudioProvider {
64
67
  return new GoogleProvider();
65
68
  default:
66
69
  throw new Error(
67
- `Unknown provider: ${providerName}. Use: elevenlabs, openai, or google`
70
+ `Unknown provider: ${providerName}. Use: minimax, elevenlabs, openai, or google`
68
71
  );
69
72
  }
70
73
  }
@@ -0,0 +1,83 @@
1
+ import type { AudioProvider, GenerateOptions, Voice } from '../types';
2
+ import { writeFile } from 'fs/promises';
3
+
4
+ export class MinimaxProvider implements AudioProvider {
5
+ name = 'Minimax Speech-02-HD';
6
+ private apiKey: string;
7
+ private baseUrl = 'https://api.minimax.chat/v1';
8
+
9
+ constructor() {
10
+ this.apiKey = process.env.MINIMAX_API_KEY || '';
11
+ if (!this.apiKey) {
12
+ throw new Error('MINIMAX_API_KEY environment variable is required');
13
+ }
14
+ }
15
+
16
+ async generate(options: GenerateOptions): Promise<void> {
17
+ console.log(`Generating audio with ${this.name}...`);
18
+
19
+ const body: Record<string, unknown> = {
20
+ model: options.model || 'speech-02-hd',
21
+ text: options.text,
22
+ };
23
+
24
+ if (options.voice || options.speed) {
25
+ const voiceSetting: Record<string, unknown> = {};
26
+ if (options.voice) voiceSetting.voice_id = options.voice;
27
+ if (options.speed) voiceSetting.speed = options.speed;
28
+ body.voice_setting = voiceSetting;
29
+ }
30
+
31
+ const format = options.output.endsWith('.wav') ? 'wav' :
32
+ options.output.endsWith('.flac') ? 'flac' : 'mp3';
33
+ body.audio_setting = { format };
34
+
35
+ if (options.language) {
36
+ body.language_boost = options.language;
37
+ }
38
+
39
+ const response = await fetch(`${this.baseUrl}/t2a_v2`, {
40
+ method: 'POST',
41
+ headers: {
42
+ 'Content-Type': 'application/json',
43
+ 'Authorization': `Bearer ${this.apiKey}`,
44
+ },
45
+ body: JSON.stringify(body),
46
+ });
47
+
48
+ if (!response.ok) {
49
+ const err = await response.text();
50
+ throw new Error(`Minimax API error: ${response.status} - ${err}`);
51
+ }
52
+
53
+ const data = await response.json() as {
54
+ data?: { audio?: string };
55
+ base_resp?: { status_code: number; status_msg: string };
56
+ };
57
+
58
+ if (data.base_resp && data.base_resp.status_code !== 0) {
59
+ throw new Error(`Minimax TTS error: ${data.base_resp.status_msg}`);
60
+ }
61
+
62
+ if (!data.data?.audio) {
63
+ throw new Error('No audio data in response');
64
+ }
65
+
66
+ const audioBuffer = Buffer.from(data.data.audio, 'hex');
67
+ await writeFile(options.output, audioBuffer);
68
+ console.log(`Audio saved to: ${options.output}`);
69
+ }
70
+
71
+ async listVoices(): Promise<Voice[]> {
72
+ return [
73
+ { id: 'male-qn-qingse', name: 'Qingse (Male)', description: 'Young male, clear voice' },
74
+ { id: 'female-shaonv', name: 'Shaonv (Female)', description: 'Young female voice' },
75
+ { id: 'female-yujie', name: 'Yujie (Female)', description: 'Mature female voice' },
76
+ { id: 'male-qn-jingying', name: 'Jingying (Male)', description: 'Male elite voice' },
77
+ { id: 'presenter_male', name: 'Presenter Male', description: 'Professional male presenter' },
78
+ { id: 'presenter_female', name: 'Presenter Female', description: 'Professional female presenter' },
79
+ { id: 'audiobook_male_1', name: 'Audiobook Male', description: 'Audiobook narrator male' },
80
+ { id: 'audiobook_female_1', name: 'Audiobook Female', description: 'Audiobook narrator female' },
81
+ ];
82
+ }
83
+ }
@@ -2,7 +2,7 @@
2
2
  * Shared types and interfaces for audio generation providers
3
3
  */
4
4
 
5
- export type Provider = 'elevenlabs' | 'openai' | 'google';
5
+ export type Provider = 'minimax' | 'elevenlabs' | 'openai' | 'google';
6
6
 
7
7
  export interface GenerateOptions {
8
8
  text: string;
@@ -19,9 +19,5 @@
19
19
  "src",
20
20
  "dist",
21
21
  "SKILL.md"
22
- ],
23
- "repository": {
24
- "type": "git",
25
- "url": "git+https://github.com/hasnaxyz/skill-audio-cleanup-lab.git"
26
- }
22
+ ]
27
23
  }
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: Extract Audio
2
+ name: audio-extract
3
3
  version: 0.1.0
4
4
  description: Extract audio tracks from video files using FFmpeg with format conversion options
5
5
  author: skills.md
6
- category: Design & Creative
6
+ category: Media Processing
7
7
  tags:
8
8
  - audio
9
9
  - video
@@ -70,4 +70,4 @@ skills run extract-audio -- lecture_recording.mkv --format mp3 --quality low
70
70
  ## Requirements
71
71
 
72
72
  - FFmpeg installed and in PATH.
73
- - Bun runtime.
73
+ - Bun runtime.
@@ -1,9 +1,9 @@
1
1
  {
2
- "name": "@hasnaxyz/skill-extract-audio",
2
+ "name": "@hasnaxyz/skill-audio-extract",
3
3
  "version": "0.1.0",
4
4
  "type": "module",
5
5
  "bin": {
6
- "skill-extract-audio": "./src/index.ts"
6
+ "skill-audio-extract": "./src/index.ts"
7
7
  },
8
8
  "scripts": {
9
9
  "dev": "bun run src/index.ts",
@@ -19,9 +19,5 @@
19
19
  "src",
20
20
  "dist",
21
21
  "SKILL.md"
22
- ],
23
- "repository": {
24
- "type": "git",
25
- "url": "https://github.com/hasnaxyz/skill-extract-audio.git"
26
- }
22
+ ]
27
23
  }
@@ -23,11 +23,5 @@
23
23
  "files": [
24
24
  "src",
25
25
  "tsconfig.json"
26
- ],
27
- "repository": {
28
- "type": "git",
29
- "url": "https://github.com/hasnaxyz/skill-audiobook-chapter-proofer.git"
30
- },
31
- "author": "Hasna",
32
- "license": "Apache-2.0"
26
+ ]
33
27
  }
@@ -23,11 +23,5 @@
23
23
  "files": [
24
24
  "src",
25
25
  "tsconfig.json"
26
- ],
27
- "repository": {
28
- "type": "git",
29
- "url": "https://github.com/hasnaxyz/skill-banner-ad-suite.git"
30
- },
31
- "author": "Hasna",
32
- "license": "Apache-2.0"
26
+ ]
33
27
  }
@@ -23,11 +23,5 @@
23
23
  "files": [
24
24
  "src",
25
25
  "tsconfig.json"
26
- ],
27
- "repository": {
28
- "type": "git",
29
- "url": "https://github.com/hasnaxyz/skill-benchmark-finder.git"
30
- },
31
- "author": "Hasna",
32
- "license": "Apache-2.0"
26
+ ]
33
27
  }
@@ -23,11 +23,5 @@
23
23
  "files": [
24
24
  "src",
25
25
  "tsconfig.json"
26
- ],
27
- "repository": {
28
- "type": "git",
29
- "url": "https://github.com/hasnaxyz/skill-bio-sequence-tool.git"
30
- },
31
- "author": "Hasna",
32
- "license": "Apache-2.0"
26
+ ]
33
27
  }
@@ -23,11 +23,5 @@
23
23
  "files": [
24
24
  "src",
25
25
  "tsconfig.json"
26
- ],
27
- "repository": {
28
- "type": "git",
29
- "url": "https://github.com/hasnaxyz/skill-blog-topic-cluster.git"
30
- },
31
- "author": "Hasna",
32
- "license": "Apache-2.0"
26
+ ]
33
27
  }
@@ -23,11 +23,5 @@
23
23
  "files": [
24
24
  "src",
25
25
  "tsconfig.json"
26
- ],
27
- "repository": {
28
- "type": "git",
29
- "url": "https://github.com/hasnaxyz/skill-brand-voice-audit.git"
30
- },
31
- "author": "Hasna",
32
- "license": "Apache-2.0"
26
+ ]
33
27
  }