cue-ai 0.9.0 → 0.9.2

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 (310) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +82 -33
  3. package/bin/cue-review-progress +107 -0
  4. package/bin/cue-review-watch +98 -0
  5. package/dist/cue.js +7352 -3744
  6. package/package.json +16 -5
  7. package/profiles/_types.ts +9 -0
  8. package/profiles/backend/profile.yaml +2 -0
  9. package/profiles/blog-writer/profile.yaml +10 -0
  10. package/profiles/browser/profile.yaml +9 -2
  11. package/profiles/builder/profile.yaml +3 -6
  12. package/profiles/career/profile.yaml +13 -2
  13. package/profiles/claude-api/profile.yaml +1 -1
  14. package/profiles/commerce/profile.yaml +27 -3
  15. package/profiles/core/logo.png +0 -0
  16. package/profiles/core/profile.yaml +62 -2
  17. package/profiles/dash-merge-test/profile.yaml +109 -0
  18. package/profiles/designer/profile.yaml +2 -0
  19. package/profiles/designer-medusa-next/profile.yaml +4 -1
  20. package/profiles/designer-medusa-vite/profile.yaml +4 -1
  21. package/profiles/docs-writer/profile.yaml +3 -1
  22. package/profiles/eu-tender-research/README.md +48 -0
  23. package/profiles/eu-tender-research/logo.png +0 -0
  24. package/profiles/eu-tender-research/profile.yaml +108 -0
  25. package/profiles/finance/logo.png +0 -0
  26. package/profiles/finance/profile.yaml +46 -0
  27. package/profiles/frontend/profile.yaml +5 -9
  28. package/profiles/growth/profile.yaml +2 -3
  29. package/profiles/gstack/profile.yaml +15 -0
  30. package/profiles/higgsfield/profile.yaml +3 -0
  31. package/profiles/hyperframes/logo.png +0 -0
  32. package/profiles/hyperframes/profile.yaml +59 -0
  33. package/profiles/improver/profile.yaml +88 -0
  34. package/profiles/marketing/profile.yaml +0 -3
  35. package/profiles/medusa-dev/profile.yaml +2 -0
  36. package/profiles/medusa-next/profile.yaml +2 -3
  37. package/profiles/medusa-vite/profile.yaml +2 -3
  38. package/profiles/n8n/logo.png +0 -0
  39. package/profiles/n8n/profile.yaml +50 -0
  40. package/profiles/nextjs/profile.yaml +2 -3
  41. package/profiles/ops/profile.yaml +2 -0
  42. package/profiles/postizz/profile.yaml +13 -3
  43. package/profiles/python/profile.yaml +3 -0
  44. package/profiles/research/profile.yaml +3 -1
  45. package/profiles/schema.json +10 -0
  46. package/profiles/secops/profile.yaml +2 -0
  47. package/profiles/seo/profile.yaml +56 -0
  48. package/profiles/skill-writer/profile.yaml +8 -0
  49. package/profiles/ssh/profile.yaml +32 -0
  50. package/profiles/strapi/logo.png +0 -0
  51. package/profiles/strapi/profile.yaml +45 -0
  52. package/profiles/stripe/logo.png +0 -0
  53. package/profiles/stripe/profile.yaml +1 -0
  54. package/profiles/supabase/logo.png +0 -0
  55. package/profiles/supabase/profile.yaml +85 -0
  56. package/profiles/vercel/logo.png +0 -0
  57. package/profiles/vercel/profile.yaml +25 -1
  58. package/profiles/vite/profile.yaml +4 -3
  59. package/profiles/web-frontend-base/profile.yaml +5 -4
  60. package/profiles/webshop/profile.yaml +23 -5
  61. package/profiles/x-growth-bot/profile.yaml +44 -0
  62. package/resources/icons/generate-icons.py +128 -2
  63. package/resources/mcps/configs/claude.sanitized.json +42 -0
  64. package/resources/mcps/configs/codex.sanitized.json +7 -0
  65. package/resources/skills/skills/career/resume-version-manager/SKILL.md +351 -0
  66. package/resources/skills/skills/career/salary-negotiation-prep/SKILL.md +378 -0
  67. package/resources/skills/skills/content/pdf/SKILL.md +2 -0
  68. package/resources/skills/skills/content/postiz-cards/SKILL.md +48 -0
  69. package/resources/skills/skills/content/postiz-cards/scripts/analytics.sh +38 -0
  70. package/resources/skills/skills/content/postiz-cards/scripts/card.sh +42 -0
  71. package/resources/skills/skills/content/postiz-cards/scripts/lint.py +38 -0
  72. package/resources/skills/skills/design/headless-gif-demo/SKILL.md +1 -1
  73. package/resources/skills/skills/design/readme-svg-design/SKILL.md +1 -1
  74. package/resources/skills/skills/eu-funding/grant-outreach/SKILL.md +70 -0
  75. package/resources/skills/skills/eu-funding/hu-grant-finder/SKILL.md +114 -0
  76. package/resources/skills/skills/eu-funding/hu-grant-finder/evals.md +26 -0
  77. package/resources/skills/skills/eu-funding/ted-tender-search/SKILL.md +80 -0
  78. package/resources/skills/skills/eu-funding/ted-tender-search/evals.md +26 -0
  79. package/resources/skills/skills/eu-funding/ted-tender-search/scripts/ted-search.sh +46 -0
  80. package/resources/skills/skills/event-design/wedding-invitations/SKILL.md +1 -1
  81. package/resources/skills/skills/github/gx-agents/SKILL.md +96 -0
  82. package/resources/skills/skills/gstack/design-shotgun/SKILL.md +1 -1
  83. package/resources/skills/skills/marketing/ab-test-analyzer/SKILL.md +1 -1
  84. package/resources/skills/skills/marketing/ab-test-setup-and-analysis/SKILL.md +1 -1
  85. package/resources/skills/skills/marketing/account-structure-review/SKILL.md +1 -1
  86. package/resources/skills/skills/marketing/ad-copy-variant-generator/SKILL.md +1 -1
  87. package/resources/skills/skills/marketing/ad-extension-audit/SKILL.md +1 -1
  88. package/resources/skills/skills/marketing/ad-spend-allocator/SKILL.md +1 -1
  89. package/resources/skills/skills/marketing/anomaly-detection/SKILL.md +1 -1
  90. package/resources/skills/skills/marketing/attribution-model-comparison/SKILL.md +1 -1
  91. package/resources/skills/skills/marketing/audience-overlap-analysis/SKILL.md +7 -1
  92. package/resources/skills/skills/marketing/bid-strategy-recommendations/SKILL.md +7 -1
  93. package/resources/skills/skills/marketing/budget-scenario-planner/SKILL.md +6 -1
  94. package/resources/skills/skills/marketing/campaign-naming-convention-builder/SKILL.md +7 -1
  95. package/resources/skills/skills/marketing/channel-mix-optimizer/SKILL.md +7 -1
  96. package/resources/skills/skills/marketing/client-report-narratives/SKILL.md +6 -1
  97. package/resources/skills/skills/marketing/competitor-creative-analysis/SKILL.md +1 -1
  98. package/resources/skills/skills/marketing/competitor-teardown/SKILL.md +1 -1
  99. package/resources/skills/skills/marketing/content-repurposer/SKILL.md +1 -1
  100. package/resources/skills/skills/marketing/conversion-path-analysis/SKILL.md +1 -1
  101. package/resources/skills/skills/marketing/cpa-diagnostics/SKILL.md +1 -1
  102. package/resources/skills/skills/marketing/creative-fatigue-detection/SKILL.md +1 -1
  103. package/resources/skills/skills/marketing/day-hour-performance-breakdown/SKILL.md +1 -1
  104. package/resources/skills/skills/marketing/device-performance-split/SKILL.md +1 -1
  105. package/resources/skills/skills/marketing/e2e-seo-assistant/SKILL.md +1 -1
  106. package/resources/skills/skills/marketing/email-sequence-writer/SKILL.md +1 -1
  107. package/resources/skills/skills/marketing/frequency-cap-recommendations/SKILL.md +1 -1
  108. package/resources/skills/skills/marketing/geo-performance-analysis/SKILL.md +1 -1
  109. package/resources/skills/skills/marketing/google-ads-audit/SKILL.md +1 -1
  110. package/resources/skills/skills/marketing/icp-research-assistant/SKILL.md +1 -1
  111. package/resources/skills/skills/marketing/keyword-cannibalization-check/SKILL.md +1 -1
  112. package/resources/skills/skills/marketing/landing-page-audit/SKILL.md +1 -1
  113. package/resources/skills/skills/marketing/landing-page-audit-quick/SKILL.md +1 -1
  114. package/resources/skills/skills/marketing/linkedin-ads-audit/SKILL.md +1 -1
  115. package/resources/skills/skills/marketing/meta-ads-audit/SKILL.md +1 -1
  116. package/resources/skills/skills/marketing/pacing-monitor/SKILL.md +1 -1
  117. package/resources/skills/skills/marketing/performance-benchmarking/SKILL.md +1 -1
  118. package/resources/skills/skills/marketing/programmatic-seo-builder/SKILL.md +1 -1
  119. package/resources/skills/skills/marketing/quality-score-breakdown/SKILL.md +1 -1
  120. package/resources/skills/skills/marketing/reddit-ads-audit/SKILL.md +1 -1
  121. package/resources/skills/skills/marketing/retargeting-window-analysis/SKILL.md +1 -1
  122. package/resources/skills/skills/marketing/roas-forecasting/SKILL.md +1 -1
  123. package/resources/skills/skills/marketing/search-term-mining/SKILL.md +1 -1
  124. package/resources/skills/skills/marketing/utm-tracking-generator/SKILL.md +1 -1
  125. package/resources/skills/skills/marketing/wasted-spend-finder/SKILL.md +1 -1
  126. package/resources/skills/skills/marketing/weekly-account-summary/SKILL.md +1 -1
  127. package/resources/skills/skills/meta/awesome-list-submit/SKILL.md +4 -4
  128. package/resources/skills/skills/meta/cue-dashboard/SKILL.md +109 -0
  129. package/resources/skills/skills/meta/cue-developer/SKILL.md +161 -0
  130. package/resources/skills/skills/meta/cue-developer/evals/evals.json +57 -0
  131. package/resources/skills/skills/meta/cue-developer/references/architecture.md +65 -0
  132. package/resources/skills/skills/meta/cue-developer/references/build_and_test.md +72 -0
  133. package/resources/skills/skills/meta/cue-developer/references/contributing.md +75 -0
  134. package/resources/skills/skills/meta/cue-developer/references/conventions.md +57 -0
  135. package/resources/skills/skills/meta/cue-developer/references/first_time_setup.md +51 -0
  136. package/resources/skills/skills/meta/cue-developer/references/skill_and_mcp_authoring.md +84 -0
  137. package/resources/skills/skills/meta/cue-developer/references/troubleshooting.md +42 -0
  138. package/resources/skills/skills/meta/delegation-check/SKILL.md +148 -0
  139. package/resources/skills/skills/meta/delegation-check/specs/scan-algorithm.md +125 -0
  140. package/resources/skills/skills/meta/delegation-check/specs/separation-rules.md +190 -0
  141. package/resources/skills/skills/meta/focus/SKILL.md +62 -0
  142. package/resources/skills/skills/meta/help/SKILL.md +1 -1
  143. package/resources/skills/skills/meta/integrity-tags/SKILL.md +2 -0
  144. package/resources/skills/skills/meta/next-steps/SKILL.md +124 -0
  145. package/resources/skills/skills/meta/next-steps/evals/eval-set.json +92 -0
  146. package/resources/skills/skills/meta/profile-from-docs/SKILL.md +141 -0
  147. package/resources/skills/skills/meta/ralph-loop/SKILL.md +83 -0
  148. package/resources/skills/skills/meta/ralph-loop/scripts/loop.sh +73 -0
  149. package/resources/skills/skills/meta/skill-simplify/SKILL.md +136 -0
  150. package/resources/skills/skills/meta/skill-simplify/phases/01-analysis.md +173 -0
  151. package/resources/skills/skills/meta/skill-simplify/phases/02-optimize.md +104 -0
  152. package/resources/skills/skills/meta/skill-simplify/phases/03-check.md +145 -0
  153. package/resources/skills/skills/meta/smart-loader/scripts/smart-lookup.sh +13 -4
  154. package/resources/skills/skills/meta/verify-council/SKILL.md +182 -0
  155. package/resources/skills/skills/meta/verify-council/references/lane-prompts.md +103 -0
  156. package/resources/skills/skills/meta/verify-council/references/workflow.js +217 -0
  157. package/resources/skills/skills/nvidia/aiq-research/SKILL.md +1 -1
  158. package/resources/skills/skills/nvidia/cuopt-developer/SKILL.md +16 -1
  159. package/resources/skills/skills/nvidia/cuopt-developer/resources/contributing.md +2 -2
  160. package/resources/skills/skills/nvidia/cuopt-developer/resources/numerical_debugging.md +128 -0
  161. package/resources/skills/skills/nvidia/cuopt-developer/resources/python_bindings.md +2 -9
  162. package/resources/skills/skills/nvidia/cuopt-developer/resources/vrp_skills.md +166 -0
  163. package/resources/skills/skills/nvidia/cuopt-install/SKILL.md +2 -10
  164. package/resources/skills/skills/nvidia/cuopt-numerical-optimization-api-c/SKILL.md +3 -23
  165. package/resources/skills/skills/nvidia/cuopt-numerical-optimization-api-c/resources/examples.md +40 -20
  166. package/resources/skills/skills/nvidia/cuopt-numerical-optimization-api-python/SKILL.md +5 -1
  167. package/resources/skills/skills/nvidia/skill-evolution/SKILL.md +4 -5
  168. package/resources/skills/skills/research/trendradar/SKILL.md +1 -1
  169. package/resources/skills/skills/ssh/ssh-config/SKILL.md +94 -0
  170. package/resources/skills/skills/ssh/ssh-copy/SKILL.md +92 -0
  171. package/resources/skills/skills/ssh/ssh-harden/SKILL.md +108 -0
  172. package/resources/skills/skills/ssh/ssh-keys/SKILL.md +82 -0
  173. package/resources/skills/skills/ssh/ssh-paste-image/LICENSE +28 -0
  174. package/resources/skills/skills/ssh/ssh-paste-image/SKILL.md +149 -0
  175. package/resources/skills/skills/ssh/ssh-paste-image/scripts/build.sh +29 -0
  176. package/resources/skills/skills/ssh/ssh-paste-image/scripts/client/go.mod +3 -0
  177. package/resources/skills/skills/ssh/ssh-paste-image/scripts/client/main.go +79 -0
  178. package/resources/skills/skills/ssh/ssh-paste-image/scripts/daemon/ccimgd.service +12 -0
  179. package/resources/skills/skills/ssh/ssh-paste-image/scripts/daemon/com.ccimgd.plist +20 -0
  180. package/resources/skills/skills/ssh/ssh-paste-image/scripts/daemon/go.mod +3 -0
  181. package/resources/skills/skills/ssh/ssh-paste-image/scripts/daemon/main.go +98 -0
  182. package/resources/skills/skills/ssh/ssh-tunnel/SKILL.md +96 -0
  183. package/resources/skills/skills/strapi/building-with-strapi/SKILL.md +112 -0
  184. package/resources/skills/skills/strapi/strapi-cli/SKILL.md +93 -0
  185. package/resources/skills/skills/strapi/strapi-content-api/SKILL.md +115 -0
  186. package/resources/skills/skills/strapi/strapi-deploy/SKILL.md +89 -0
  187. package/resources/skills/skills/strapi/strapi-mcp-setup/SKILL.md +101 -0
  188. package/resources/skills/skills/strapi/strapi-plugins/SKILL.md +97 -0
  189. package/resources/skills/skills/tools/context7/SKILL.md +101 -0
  190. package/resources/skills/skills/tools/opensrc/SKILL.md +1 -1
  191. package/resources/skills/skills/tools/portless/SKILL.md +186 -0
  192. package/resources/skills/skills/xbot/operate/SKILL.md +229 -0
  193. package/src/commands/_index.ts +8 -0
  194. package/src/commands/ai-score.e2e.test.ts +11 -4
  195. package/src/commands/ai.ts +3 -4
  196. package/src/commands/auto-detect.ts +1 -1
  197. package/src/commands/cli.test.ts +1 -2
  198. package/src/commands/cli.ts +1 -1
  199. package/src/commands/cloud.ts +1 -1
  200. package/src/commands/current.ts +1 -4
  201. package/src/commands/dash.test.ts +110 -0
  202. package/src/commands/dash.ts +194 -0
  203. package/src/commands/dashboard.ts +26 -0
  204. package/src/commands/diff.ts +1 -1
  205. package/src/commands/discover.test.ts +1 -1
  206. package/src/commands/discover.ts +90 -40
  207. package/src/commands/doctor.test.ts +58 -0
  208. package/src/commands/doctor.ts +79 -3
  209. package/src/commands/eval-behavior.ts +1 -1
  210. package/src/commands/eval.ts +2 -2
  211. package/src/commands/evolve.ts +4 -3
  212. package/src/commands/failures.test.ts +1 -1
  213. package/src/commands/features-batch1.test.ts +6 -1
  214. package/src/commands/icon.ts +1 -5
  215. package/src/commands/import-profile.ts +1 -1
  216. package/src/commands/init.ts +50 -7
  217. package/src/commands/install-sh.e2e.test.ts +65 -0
  218. package/src/commands/launch-handoff.e2e.test.ts +88 -0
  219. package/src/commands/launch.e2e.test.ts +8 -1
  220. package/src/commands/launch.test.ts +29 -0
  221. package/src/commands/launch.ts +185 -131
  222. package/src/commands/lock.ts +0 -1
  223. package/src/commands/marketplace.ts +0 -4
  224. package/src/commands/materialize.ts +1 -1
  225. package/src/commands/mem.ts +341 -0
  226. package/src/commands/optimizer.ts +0 -3
  227. package/src/commands/playground.ts +1 -2
  228. package/src/commands/profile-draft-skill.ts +1 -1
  229. package/src/commands/replay-whatif.ts +1 -6
  230. package/src/commands/score.ts +2 -2
  231. package/src/commands/security.test.ts +88 -0
  232. package/src/commands/security.ts +74 -28
  233. package/src/commands/shell.test.ts +65 -4
  234. package/src/commands/shell.ts +67 -7
  235. package/src/commands/skills-test.ts +0 -1
  236. package/src/commands/skills.ts +28 -2
  237. package/src/commands/sources.ts +1 -2
  238. package/src/commands/status.ts +2 -6
  239. package/src/commands/submit-profile.ts +1 -1
  240. package/src/commands/suggest.ts +35 -10
  241. package/src/commands/trigger-gaps.test.ts +50 -0
  242. package/src/commands/trigger-gaps.ts +63 -29
  243. package/src/commands/update.ts +1 -1
  244. package/src/commands/validate.ts +16 -4
  245. package/src/commands/watch-live.ts +1 -1
  246. package/src/commands/workspace.ts +1 -1
  247. package/src/index.ts +26 -10
  248. package/src/lib/active-sessions.ts +1 -1
  249. package/src/lib/agent-adapters.test.ts +100 -0
  250. package/src/lib/agent-adapters.ts +2 -2
  251. package/src/lib/analytics.test.ts +88 -0
  252. package/src/lib/analytics.ts +82 -1
  253. package/src/lib/auto-detect.test.ts +10 -4
  254. package/src/lib/auto-detect.ts +19 -23
  255. package/src/lib/brand-icons.ts +0 -1
  256. package/src/lib/cache.ts +2 -3
  257. package/src/lib/claude-mem-env.test.ts +148 -0
  258. package/src/lib/claude-mem-env.ts +172 -0
  259. package/src/lib/combo-history.test.ts +53 -0
  260. package/src/lib/combo-history.ts +83 -0
  261. package/src/lib/companion-detect.test.ts +108 -0
  262. package/src/lib/companion-detect.ts +140 -0
  263. package/src/lib/companion-fetch.ts +4 -6
  264. package/src/lib/conditional-skills.test.ts +1 -1
  265. package/src/lib/config-paths.test.ts +53 -0
  266. package/src/lib/config-paths.ts +33 -0
  267. package/src/lib/dashboard-server.test.ts +351 -0
  268. package/src/lib/dashboard-server.ts +1476 -27
  269. package/src/lib/debug-log.test.ts +66 -0
  270. package/src/lib/debug-log.ts +45 -0
  271. package/src/lib/mcp-catalog.test.ts +102 -0
  272. package/src/lib/mcp-catalog.ts +193 -0
  273. package/src/lib/pair-suggestions.test.ts +111 -0
  274. package/src/lib/pair-suggestions.ts +98 -5
  275. package/src/lib/permissions.test.ts +76 -0
  276. package/src/lib/permissions.ts +125 -0
  277. package/src/lib/picker.test.ts +1106 -1
  278. package/src/lib/picker.ts +1230 -142
  279. package/src/lib/plugin-discovery.ts +126 -0
  280. package/src/lib/pr-poster.ts +1 -1
  281. package/src/lib/pr-throttle.ts +2 -6
  282. package/src/lib/profile-linter.test.ts +67 -1
  283. package/src/lib/profile-linter.ts +59 -14
  284. package/src/lib/profile-loader.test.ts +21 -0
  285. package/src/lib/profile-loader.ts +22 -3
  286. package/src/lib/profile-metrics.ts +2 -6
  287. package/src/lib/profile-names.test.ts +58 -0
  288. package/src/lib/repos.test.ts +57 -0
  289. package/src/lib/repos.ts +167 -0
  290. package/src/lib/resolver-npx.ts +10 -1
  291. package/src/lib/runtime-materializer.test.ts +200 -3
  292. package/src/lib/runtime-materializer.ts +129 -20
  293. package/src/lib/shared-profiles.ts +2 -3
  294. package/src/lib/skill-clis.test.ts +113 -0
  295. package/src/lib/skill-clis.ts +232 -0
  296. package/src/lib/skill-dependencies.ts +9 -1
  297. package/src/lib/skill-deps.ts +1 -1
  298. package/src/lib/skill-linter.ts +1 -1
  299. package/src/lib/skill-quality.ts +0 -1
  300. package/src/lib/skill-sandbox.test.ts +1 -1
  301. package/src/lib/skills-lock.test.ts +1 -1
  302. package/src/lib/telemetry-consent.ts +3 -5
  303. package/src/lib/telemetry-report.test.ts +2 -2
  304. package/src/lib/token-budget.ts +111 -0
  305. package/src/lib/trigger-gaps.test.ts +70 -0
  306. package/src/lib/trigger-gaps.ts +48 -6
  307. package/src/lib/tui/data.ts +1 -5
  308. package/src/lib/workflow-store.ts +150 -0
  309. package/src/lib/workspace-secrets.ts +0 -4
  310. package/src/lib/workspaces.ts +1 -1
@@ -0,0 +1,378 @@
1
+ ---
2
+ name: salary-negotiation-prep
3
+ description: Research market comp bands, build a negotiation strategy, and write counter-offer scripts. Use when user says "negotiate my offer", "salary negotiation", "counter offer", "what should I ask for", "is this offer fair", "they lowballed me", or "how much should I counter".
4
+ ---
5
+
6
+ # Salary Negotiation Prep
7
+
8
+ ## When to Use This Skill
9
+
10
+ Use this skill when the user wants to:
11
+ - Negotiate a job offer or salary
12
+ - Research market rates for their role
13
+ - Create a counter-offer strategy
14
+ - Understand total compensation packages
15
+ - Mentions: "salary negotiation", "negotiate offer", "counter offer", "compensation", "how much should I ask for"
16
+
17
+ ## Core Capabilities
18
+
19
+ - Research and validate market compensation
20
+ - Build negotiation strategy and scripts
21
+ - Calculate total compensation (not just base salary)
22
+ - Prepare counter-offer responses
23
+ - Identify negotiation leverage points
24
+ - Navigate difficult salary conversations
25
+
26
+ ## The Negotiation Mindset
27
+
28
+ **Key Principles:**
29
+ 1. Negotiation is expected - companies budget for it
30
+ 2. 84% of employers expect candidates to negotiate
31
+ 3. Not negotiating leaves $500K-$1M on the table over a career
32
+ 4. The goal is win-win, not adversarial
33
+
34
+ **What You're Really Negotiating:**
35
+ - Base salary
36
+ - Signing bonus
37
+ - Annual bonus/commission
38
+ - Equity (stock options, RSUs)
39
+ - Benefits (401k match, insurance)
40
+ - Perks (vacation, remote work, professional development)
41
+ - Start date
42
+ - Title
43
+
44
+ ## Research Phase
45
+
46
+ ### Step 1: Determine Market Rate
47
+
48
+ **Sources to Check:**
49
+ - Levels.fyi (best for tech)
50
+ - Glassdoor (general, take with grain of salt)
51
+ - LinkedIn Salary
52
+ - Blind (anonymous reports)
53
+ - PayScale
54
+ - Salary.com
55
+ - H1B salary data (publicly available)
56
+
57
+ **Build a Range:**
58
+ ```
59
+ Low (25th percentile): $XXX,XXX
60
+ Target (50th percentile): $XXX,XXX
61
+ High (75th percentile): $XXX,XXX
62
+ Stretch (90th percentile): $XXX,XXX
63
+ ```
64
+
65
+ ### Step 2: Know Your Value
66
+
67
+ **Factors That Increase Your Worth:**
68
+ - Years of relevant experience
69
+ - Specialized/rare skills
70
+ - Track record of results
71
+ - In-demand certifications
72
+ - Current competing offers
73
+ - Referral from employee
74
+ - Market demand in your field
75
+
76
+ **Factors That May Limit:**
77
+ - Entry level or career change
78
+ - Less experience than ideal candidate
79
+ - Gaps in required skills
80
+ - Location arbitrage (lower cost of living)
81
+
82
+ ### Step 3: Calculate Total Compensation
83
+
84
+ **Total Comp = Base + Bonus + Equity + Benefits**
85
+
86
+ ```
87
+ EXAMPLE:
88
+ Base Salary: $150,000
89
+ Target Bonus (15%): $22,500
90
+ RSU Grant (4-year): $200,000 ($50,000/year)
91
+ 401k Match (4%): $6,000
92
+ Benefits Value: ~$15,000
93
+
94
+ Total Annual Comp: $243,500
95
+ ```
96
+
97
+ **Common Equity Terms:**
98
+ - **RSUs:** Restricted Stock Units (real shares, taxed when vesting)
99
+ - **Options:** Right to buy at strike price (value = current price - strike price)
100
+ - **Vesting:** Typically 4-year with 1-year cliff
101
+ - **Refresh grants:** Annual additional equity grants
102
+
103
+ ## Negotiation Strategy
104
+
105
+ ### When to Negotiate
106
+
107
+ **Best Time:** After you have a written offer, before you sign
108
+
109
+ **Timeline:**
110
+ 1. Receive verbal offer → Express enthusiasm, ask for written offer
111
+ 2. Receive written offer → Thank them, ask for time to review
112
+ 3. Research and prepare → 24-48 hours
113
+ 4. Counter with ask → Email or call
114
+ 5. Discussion/back and forth → May take several rounds
115
+ 6. Final agreement → Get in writing
116
+
117
+ ### The Counter-Offer Framework
118
+
119
+ **Structure:**
120
+ 1. Express enthusiasm
121
+ 2. Reinforce your value
122
+ 3. Make specific ask
123
+ 4. Provide justification
124
+ 5. Open discussion
125
+
126
+ ### Counter-Offer Email Template
127
+
128
+ ```
129
+ Subject: [Your Name] - Offer Discussion
130
+
131
+ Hi [Recruiter/Hiring Manager],
132
+
133
+ Thank you so much for the offer to join [Company] as [Title]. I'm very excited about the opportunity to [specific thing about the role]. After speaking with the team and learning more about [something specific], I'm confident this is the right fit.
134
+
135
+ I've had time to review the offer details and wanted to discuss the compensation. Based on my research of the market and my [X years of experience / specific valuable skill / competing offer], I was hoping we could discuss a base salary of $[Your Ask] rather than $[Their Offer].
136
+
137
+ [Optional: Add specific justification - e.g., "I've seen similar roles at [comparable companies] in this range" or "Given the scope of the role and my track record of [specific achievement], I believe this reflects my value."]
138
+
139
+ I'm flexible and open to discussing other elements of the package as well. Would you have time for a quick call to discuss?
140
+
141
+ Thank you again for this opportunity. I'm looking forward to finding a package that works for both of us.
142
+
143
+ Best,
144
+ [Your Name]
145
+ ```
146
+
147
+ ### Counter-Offer Call Script
148
+
149
+ ```
150
+ "Hi [Name], thanks for making time. I'm really excited about this opportunity - [genuine specific reason].
151
+
152
+ I've reviewed the offer and want to discuss compensation. Based on my market research and [X years experience / key accomplishment / competing offer], I was hoping for a base salary closer to $[Amount].
153
+
154
+ Is there flexibility there?"
155
+
156
+ [LISTEN - Let them respond]
157
+
158
+ [If they push back:]
159
+ "I understand there are constraints. I'm flexible - could we look at other elements like signing bonus, equity, or [other element] to bridge the gap?"
160
+
161
+ [If they say they'll need to check:]
162
+ "That's totally fair. When would be a good time to reconnect?"
163
+ ```
164
+
165
+ ## Common Negotiation Scenarios
166
+
167
+ ### Scenario 1: First Offer Is Low
168
+
169
+ **Approach:**
170
+ - Don't accept immediately
171
+ - Express enthusiasm for role
172
+ - Counter with research-backed number
173
+ - Be prepared to justify
174
+
175
+ **Script:**
176
+ ```
177
+ "I'm thrilled about the opportunity. The base salary is lower than I expected based on my research. For this role and market, I was expecting something in the $X-$Y range. Is there room to move closer to $X?"
178
+ ```
179
+
180
+ ### Scenario 2: They Ask Your Salary Expectations First
181
+
182
+ **Deflection Strategy:**
183
+ ```
184
+ "I'm flexible and focused on finding the right fit. What's the range you've budgeted for this role?"
185
+ ```
186
+
187
+ **If Pressed:**
188
+ ```
189
+ "Based on my research for this role and market, I'm looking at $X-$Y, but I'm open to discussing the full compensation picture."
190
+ ```
191
+
192
+ ### Scenario 3: They Won't Budge on Base
193
+
194
+ **Alternatives to Negotiate:**
195
+ - Signing bonus (one-time, easier to approve)
196
+ - Additional equity
197
+ - Earlier performance review (sooner raise)
198
+ - More vacation days
199
+ - Remote work flexibility
200
+ - Professional development budget
201
+ - Title upgrade
202
+ - Relocation assistance
203
+ - Start date
204
+
205
+ **Script:**
206
+ ```
207
+ "I understand the base salary is firm. Could we discuss a signing bonus to help bridge the gap? Something in the range of $X would make this work."
208
+ ```
209
+
210
+ ### Scenario 4: You Have Competing Offers
211
+
212
+ **Use Carefully:**
213
+ - Only mention if true
214
+ - Don't make it a threat
215
+ - Frame as problem-solving
216
+
217
+ **Script:**
218
+ ```
219
+ "I want to be transparent - I'm also in discussions with [another company/a few other companies]. They're offering $X. [Your Company] is my first choice because [genuine reason], but I want to make sure the compensation is competitive."
220
+ ```
221
+
222
+ ### Scenario 5: They Ask About Current Salary
223
+
224
+ **In Many States, This Question Is Illegal**
225
+
226
+ **If Asked (and legal):**
227
+ ```
228
+ "I'd prefer to focus on the value I'd bring to this role and what the market rate is. What's the range you've budgeted?"
229
+ ```
230
+
231
+ **Or Redirect:**
232
+ ```
233
+ "My current compensation isn't really comparable since [different location/role/structure]. Based on my research for this role, I'm targeting $X-$Y."
234
+ ```
235
+
236
+ ## Negotiation Tactics
237
+
238
+ ### Do's:
239
+ - ✅ Always negotiate (respectfully)
240
+ - ✅ Get the offer in writing before negotiating
241
+ - ✅ Research thoroughly
242
+ - ✅ Be specific with numbers
243
+ - ✅ Express genuine enthusiasm
244
+ - ✅ Give them a way to say yes
245
+ - ✅ Consider total compensation
246
+ - ✅ Be patient - process takes time
247
+ - ✅ Get final agreement in writing
248
+
249
+ ### Don'ts:
250
+ - ❌ Accept on the spot
251
+ - ❌ Give a salary history (if not required by law)
252
+ - ❌ Make ultimatums
253
+ - ❌ Lie about competing offers
254
+ - ❌ Be rude or aggressive
255
+ - ❌ Negotiate just for the sake of it
256
+ - ❌ Accept verbal promises without writing
257
+ - ❌ Burn bridges if it doesn't work out
258
+
259
+ ## Total Compensation Comparison
260
+
261
+ ### Side-by-Side Analysis
262
+
263
+ ```markdown
264
+ ## OFFER COMPARISON
265
+
266
+ | Component | Company A | Company B | Notes |
267
+ |-----------|-----------|-----------|-------|
268
+ | Base Salary | $150,000 | $140,000 | A wins |
269
+ | Target Bonus | 15% ($22,500) | 20% ($28,000) | B wins |
270
+ | Signing Bonus | $20,000 | $10,000 | A wins |
271
+ | Equity (annual) | $50,000 | $75,000 | B wins |
272
+ | 401k Match | 4% ($6,000) | 6% ($8,400) | B wins |
273
+ | Benefits | Standard | Premium | B wins |
274
+ | WFH | Hybrid (3 days) | Full remote | B wins |
275
+ | Vacation | 3 weeks | Unlimited | Depends |
276
+
277
+ **Year 1 Total Comp:**
278
+ Company A: $248,500
279
+ Company B: $261,400
280
+
281
+ **Analysis:** Company B is higher total comp, but Company A has higher base which affects future raises and mortgage qualification.
282
+ ```
283
+
284
+ ## Negotiation Timeline Template
285
+
286
+ ```
287
+ Day 1: Receive offer
288
+ - Thank them, express enthusiasm
289
+ - Ask for offer in writing
290
+ - Ask deadline for response
291
+
292
+ Day 1-3: Research
293
+ - Verify market rate
294
+ - Calculate total comp
295
+ - Identify priorities
296
+ - Prepare counter-offer
297
+
298
+ Day 3-5: Counter
299
+ - Send counter-offer email or schedule call
300
+ - Be specific about ask
301
+
302
+ Day 5-10: Discussion
303
+ - May require several rounds
304
+ - Be patient but responsive
305
+ - Stay professional and positive
306
+
307
+ Day 10+: Resolution
308
+ - Agree on terms
309
+ - Get everything in writing
310
+ - Sign and celebrate!
311
+ ```
312
+
313
+ ## Output Format
314
+
315
+ When preparing salary negotiation:
316
+
317
+ ```markdown
318
+ # SALARY NEGOTIATION STRATEGY
319
+
320
+ ## Market Research Summary
321
+ **Role:** [Title]
322
+ **Location:** [City/Remote]
323
+ **Experience Level:** [Years]
324
+
325
+ **Market Range:**
326
+ - 25th percentile: $XXX,XXX
327
+ - 50th percentile: $XXX,XXX (target)
328
+ - 75th percentile: $XXX,XXX
329
+ - 90th percentile: $XXX,XXX (stretch)
330
+
331
+ **Sources:** [List sources used]
332
+
333
+ ## Their Offer
334
+ | Component | Amount |
335
+ |-----------|--------|
336
+ | Base | $XXX,XXX |
337
+ | Bonus | X% |
338
+ | Equity | $XXX,XXX |
339
+ | Signing | $XXX |
340
+ | Total Year 1 | $XXX,XXX |
341
+
342
+ ## Your Counter
343
+ | Component | Ask | Justification |
344
+ |-----------|-----|---------------|
345
+ | Base | $XXX,XXX | [Why] |
346
+ | Signing | $XXX | [Why] |
347
+ | [Other] | | |
348
+
349
+ ## Counter-Offer Script
350
+ [Email template or call script customized for this situation]
351
+
352
+ ## If They Push Back
353
+ **Plan B:** [Alternative elements to negotiate]
354
+ **Walk-away Point:** [Your minimum]
355
+
356
+ ## Key Talking Points
357
+ 1. [Your experience/value point]
358
+ 2. [Market data point]
359
+ 3. [Specific achievement]
360
+
361
+ ## Questions to Clarify
362
+ - [Equity vesting schedule?]
363
+ - [Bonus guaranteed?]
364
+ - [Review cycle timeline?]
365
+ ```
366
+
367
+ ## Implementation Checklist
368
+
369
+ 1. ✅ Research market rate from 3+ sources
370
+ 2. ✅ Calculate total compensation (not just base)
371
+ 3. ✅ Identify your priorities
372
+ 4. ✅ Determine walk-away point
373
+ 5. ✅ Prepare counter-offer with justification
374
+ 6. ✅ Write or practice negotiation script
375
+ 7. ✅ Plan for pushback scenarios
376
+ 8. ✅ Get agreement in writing
377
+ 9. ✅ Review final offer letter carefully
378
+ 10. ✅ Sign and celebrate!
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: pdf
3
3
  description: >-
4
+ Use when user says "extract text from pdf", "merge pdfs", "split a pdf", "fill out a pdf form",
5
+ "extract tables from pdf", or "create a pdf".
4
6
  Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs,
5
7
  merging/splitting documents, and handling forms. When Claude needs to fill in a PDF form or
6
8
  programmatically process, generate, or analyze PDF documents at scale.
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: postiz-cards
3
+ description: 'Use when user says "build a branded card", "make a postiz card", "schedule a branded post", "composite the logo on this card", "lint my post copy". Brand-aware card pipeline for Postiz. Lints post copy (cashtag/em-dash/stat gates), composites the brand logo band onto Higgsfield cards (with OCR text-check), and pulls analytics. For building or scheduling branded image-card posts for ANY postizz brand (volaria, etc.). Pairs with /post-as.'
4
+ allowed-tools:
5
+ - Bash
6
+ - Read
7
+ ---
8
+
9
+ # postiz-cards
10
+
11
+ The reusable toolkit behind `/post-as` — the card-building and pre-publish discipline, generalized so any brand under `profiles/postizz/brands/<brand>/` can use it. Volaria is the reference implementation.
12
+
13
+ ## Why this exists
14
+
15
+ Hand-rolling generate → composite → lint → upload → schedule for every card is slow and error-prone (cashtag-limit failures, em-dashes, garbled headline text, logo redraws). These scripts make each step one command.
16
+
17
+ ## Scripts (`scripts/`)
18
+
19
+ ### `lint.py` — pre-publish gate
20
+ ```
21
+ python3 scripts/lint.py <draftfile> # tweets separated by a line: ===
22
+ ```
23
+ Per tweet enforces **≤1 cashtag** (X rejects 2+ as nonRetryable), **0 em-dashes**, char count; warns on **uncited stats** (numbers with no source link). Exit 1 on FAIL. Run before every schedule.
24
+
25
+ ### `card.sh` — logo composite + OCR check + upload
26
+ ```
27
+ scripts/card.sh <raw.png> [out.png] [--brand <name>] [--check "HEADLINE WORDS"] [--upload]
28
+ ```
29
+ Composites the brand's logo band onto a raw Higgsfield card (defaults: 220px band, logo `-resize x180` at `north +0+20` — override via `BAND_H`/`LOGO_H`/`LOGO_OFF` env). `--check` OCRs the rendered card (tesseract) to catch text errors like a dropped word. `--upload` pushes to Postiz and prints the media URL.
30
+ **Never** pass the logo to image-gen as a reference — it redraws. Always composite post-gen.
31
+
32
+ ### `analytics.sh` — performance report
33
+ ```
34
+ scripts/analytics.sh [--brand <name>] [--int <integration_id>]
35
+ ```
36
+ Postiz platform + recent-post metrics. **Caveat:** Postiz analytics lag X by ~30× on fresh posts — use for trend, cross-check X-native (the account's per-post analytics or Premium export).
37
+
38
+ ## Standing pipeline (per post)
39
+ research/verify → draft copy → `lint.py` → generate card (EMPTY top band) → `card.sh --check --upload` → schedule via the `postiz` CLI with a first-reply CTA, at a peak slot → reply within 30 min.
40
+
41
+ ## Brand config (per brand, under `profiles/postizz/brands/<brand>/`)
42
+ - `logo.png` — composited onto every card (the band recipe; tune via env if a brand differs).
43
+ - `brand.md` — palette/voice/card templates + the content plan (pillars, cadence, levers).
44
+ - `accounts.yaml` — integration IDs (or pass `--int` / `POSTIZ_INT`).
45
+
46
+ ## Related
47
+ - Command: `/post-as <brand>` (wraps this end-to-end). `/trend-to-thread`, `/article-to-everywhere`.
48
+ - Rules: `rules/postiz/x-cashtag-limit.md`.
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env bash
2
+ # Postiz performance report for a brand's integration + recent posts. Brand-parameterized.
3
+ # Usage: analytics.sh [--brand <name>] [--int <integration_id>]
4
+ # WARNING: Postiz analytics LAG X by ~30x on fresh posts. Trend only; cross-check X-native.
5
+ set -uo pipefail
6
+ CUE_ROOT="${CUE_REPO_ROOT:-$HOME/Documents/cue}"
7
+ brand="${POSTIZ_BRAND:-volaria}"; INT="${POSTIZ_INT:-}"
8
+ while [ $# -gt 0 ]; do case "$1" in --brand) brand="$2"; shift 2;; --int) INT="$2"; shift 2;; *) shift;; esac; done
9
+ # fall back to the brand's accounts.yaml
10
+ [ -z "$INT" ] && INT="$(grep -oE 'cmp[a-z0-9]{20,}' "$CUE_ROOT/profiles/postizz/brands/$brand/accounts.yaml" 2>/dev/null | head -1)"
11
+ [ -n "$INT" ] || { echo "no integration id (pass --int or set POSTIZ_INT, or fill accounts.yaml for $brand)"; exit 1; }
12
+
13
+ echo "=== $brand platform analytics (Postiz - LAGS X ~30x) ==="
14
+ postiz analytics:platform "$INT" 2>&1 | python3 -c "
15
+ import sys,json
16
+ t=sys.stdin.read(); i=t.find('[')
17
+ try:
18
+ d=json.loads(t[i:])
19
+ for m in d:
20
+ vals=m.get('data',[]); tot=vals[-1].get('total') if vals else '?'
21
+ print(f' {m.get(\"label\",\"?\"):12} {tot}')
22
+ except Exception: print(' (parse failed)', t[:120])
23
+ "
24
+ echo
25
+ echo "=== recent published posts ==="
26
+ postiz posts:list 2>/dev/null > /tmp/postiz-pl.json
27
+ python3 - <<'PY'
28
+ import json
29
+ t=open('/tmp/postiz-pl.json').read(); i=t.find('{'); d=json.loads(t[i:])
30
+ pub=[p for p in (d.get('posts') or []) if p.get('state')=='PUBLISHED']
31
+ pub.sort(key=lambda p:p.get('publishDate') or '')
32
+ for p in pub[-8:]:
33
+ c=(p.get('content') or '').replace('\n',' ')[:38]
34
+ print(f" {(p.get('publishDate') or '')[:16]} {p['id']} {c}")
35
+ print(f" ({len(pub)} published total)")
36
+ PY
37
+ echo
38
+ echo "GOLD STANDARD (not Postiz): the account's X-native per-post analytics, or X Premium export."
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env bash
2
+ # Brand card finisher: composite the brand logo band onto a raw Higgsfield card,
3
+ # optional OCR headline check, optional Postiz upload. Brand-parameterized.
4
+ # Usage: card.sh <raw.png> [out.png] [--brand <name>] [--check "WORDS"] [--upload]
5
+ # Composite tunables via env: BAND_H (220), LOGO_H (180), LOGO_OFF (+0+20)
6
+ set -uo pipefail
7
+ CUE_ROOT="${CUE_REPO_ROOT:-$HOME/Documents/cue}"
8
+ brand="${POSTIZ_BRAND:-volaria}"
9
+ BAND="${BAND_H:-220}"; LH="${LOGO_H:-180}"; OFF="${LOGO_OFF:-+0+20}"
10
+ raw=""; out=""; check=""; do_upload=0
11
+ while [ $# -gt 0 ]; do
12
+ case "$1" in
13
+ --brand) brand="${2:-}"; shift 2;;
14
+ --check) check="${2:-}"; shift 2;;
15
+ --upload) do_upload=1; shift;;
16
+ -*) echo "unknown option: $1"; exit 2;;
17
+ *) if [ -z "$raw" ]; then raw="$1"; else out="$1"; fi; shift;;
18
+ esac
19
+ done
20
+ [ -f "$raw" ] || { echo "usage: card.sh <raw.png> [out.png] [--brand <name>] [--check \"WORDS\"] [--upload]"; exit 2; }
21
+ LOGO="$CUE_ROOT/profiles/postizz/brands/$brand/logo.png"
22
+ [ -f "$LOGO" ] || { echo "no logo for brand '$brand' at $LOGO"; exit 1; }
23
+ [ -z "$out" ] && out="${raw%.*}-card.png"
24
+
25
+ convert "$raw" -background black -gravity north -splice "0x${BAND}" \
26
+ \( "$LOGO" -resize "x${LH}" \) -gravity north -geometry "${OFF}" -composite "$out"
27
+ echo "composited -> $out ($(identify -format '%wx%h' "$out")) [brand=$brand band=${BAND} logo=x${LH}]"
28
+
29
+ if [ -n "$check" ]; then
30
+ if command -v tesseract >/dev/null 2>&1; then
31
+ txt="$(tesseract "$out" - 2>/dev/null | tr '[:lower:]' '[:upper:]' | tr -d '\n')"
32
+ miss=""
33
+ for w in $check; do
34
+ printf '%s' "$txt" | grep -q "$(printf '%s' "$w" | tr '[:lower:]' '[:upper:]')" || miss="$miss $w"
35
+ done
36
+ [ -n "$miss" ] && echo "WARN OCR: words not found ->$miss (re-roll the card)" || echo "OK OCR: all check words present"
37
+ else
38
+ echo "note: tesseract not installed; OCR headline check skipped"
39
+ fi
40
+ fi
41
+
42
+ [ "$do_upload" = 1 ] && { echo -n "uploaded: "; postiz upload "$out" 2>&1 | grep -oE 'https?://[^"]+/uploads/[^"]+\.png' | head -1; }
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env python3
2
+ """Pre-publish lint for Postiz brand posts (cashtag + em-dash + stat gate).
3
+
4
+ Usage: lint.py <postfile> # tweets separated by a line containing only ===
5
+ cat draft.txt | lint.py
6
+
7
+ Per tweet, enforces:
8
+ - <= 1 cashtag ($TICKER) -> X rejects 2+ as nonRetryable
9
+ - 0 em-dashes -> de-slop rule
10
+ - char count (note if >280; fine on Premium)
11
+ Post-level:
12
+ - WARN if numeric stats appear with no source link anywhere (finance EEAT gate)
13
+ Exit 1 if any tweet FAILs. Brand-agnostic.
14
+ """
15
+ import sys, re
16
+
17
+ data = open(sys.argv[1]).read() if len(sys.argv) > 1 else sys.stdin.read()
18
+ tweets = [t.strip() for t in re.split(r'(?m)^===\s*$', data) if t.strip()]
19
+ has_source = bool(re.search(r'https?://|[Ss]ource\s*:', data))
20
+ fails = 0
21
+
22
+ for i, tw in enumerate(tweets, 1):
23
+ cash = [c for c in re.findall(r'\$[A-Za-z]{1,6}\b', tw) if c[1:].isupper()] # $NVDA, not $5
24
+ em = tw.count('—')
25
+ chars = len(tw)
26
+ stats = re.findall(r'\b\d+(?:\.\d+)?%|\$\d[\d,.]*|\b\d{3,}\b', tw)
27
+ flags = []
28
+ if len(cash) > 1: flags.append(f"FAIL cashtags {cash} (max 1/tweet)")
29
+ if em: flags.append(f"FAIL em-dash x{em}")
30
+ if chars > 280: flags.append(f"note {chars} chars (>280; ok if Premium)")
31
+ if stats and not has_source: flags.append(f"WARN uncited stats {stats[:4]} (no source link in post)")
32
+ status = "FAIL" if any(f.startswith("FAIL") for f in flags) else ("WARN" if flags else "PASS")
33
+ if status == "FAIL": fails += 1
34
+ print(f"[{status}] tweet {i}: {len(cash)} cashtag, {em} em-dash, {chars} chars")
35
+ for f in flags: print(f" - {f}")
36
+
37
+ print(f"\n{'FAILED' if fails else 'clean'}: {len(tweets)} tweets, {fails} failing, source_present={has_source}")
38
+ sys.exit(1 if fails else 0)
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: "When user asks to record a high-quality CLI demo GIF that needs Kitty graphics protocol (real PNG icons inline) use this headless cage/Wayland + Kitty + tmux + ffmpeg pipeline instead of vhs/asciinema which don't speak the Kitty protocol. Includes auto-redaction of moving text via tesseract OCR."
2
+ description: 'Use when user says "record a CLI demo gif", "make a terminal demo", "capture a tmux session as a gif", "demo gif with brand logos", or "redact text in a screen recording". Headless cage/Wayland + Kitty + tmux + ffmpeg pipeline for high-quality CLI demo GIFs that need Kitty graphics protocol (real PNG icons inline) — instead of vhs/asciinema which don''t speak the Kitty protocol. Includes auto-redaction of moving text via tesseract OCR.'
3
3
  requires_mcps: [cue-tty-watch]
4
4
  allowed-tools: Bash(cage:*), Bash(weston:*), Bash(Xvfb:*), Bash(kitty:*), Bash(tmux:*), Bash(xdotool:*), Bash(wf-recorder:*), Bash(grim:*), Bash(ffmpeg:*), Bash(/usr/bin/ffmpeg:*), Bash(tesseract:*), Bash(convert:*), Read(*), Write(*), mcp__cue-tty-watch__*
5
5
  ---
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: "When user asks to design a README, create SVG diagrams, or make documentation visually beautiful generate publication-quality SVG assets and compose them into a well-structured README"
2
+ description: 'Use when user says "design a readme", "make my readme beautiful", "create an svg diagram", "architecture diagram for the readme", or "add a hero banner to the docs". Generates publication-quality SVG assets and composes them into a well-structured, GitHub-compatible README.'
3
3
  requires_mcps: []
4
4
  allowed-tools: Bash(python3:*), Bash(cairosvg:*), Read(*), Write(*)
5
5
  ---
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: grant-outreach
3
+ description: 'Use when user says "grant outreach", "propose grants to companies by email", "grant brokerage", or asks about HU/SK B2B cold-email rules. Matches a grant to a company, drafts a compliant pitch.'
4
+ tags: [eu-funding, outreach, email, grants, compliance, hungary, slovakia]
5
+ ---
6
+
7
+ # Grant outreach (HU / SK B2B)
8
+
9
+ Turn the funding-research capability into an outreach motion: find a live grant,
10
+ match it to companies that qualify, and email them a compliant proposal. This is a
11
+ brokerage / lead-gen service (not a product). Find the grants first with [[hu-grant-finder]].
12
+
13
+ ## Compliance first (one complaint can outweigh a deal)
14
+
15
+ HU and SK are **opt-in** countries for marketing email (SK: Act 351/2011 §62; HU: Grt.
16
+ + GDPR). Cold B2B email is defensible only on **GDPR legitimate interest** (Art 6(1)(f)),
17
+ and only done right:
18
+
19
+ - Email **generic company addresses** (`info@`, `obchod@`), never named persons.
20
+ - The pitch must be **genuinely relevant** (a grant the company actually qualifies for)
21
+ and tied to their professional role. That relevance *is* the legitimate interest.
22
+ - **Identify yourself** (company, address) and give a **one-click opt-out** in every mail.
23
+ - Keep a written **LIA** (legitimate interest assessment) and an opt-out / suppression log.
24
+ - Throttle, and never re-email an opt-out.
25
+ - Verify with the **Slovak DPA** (`dataprotection.gov.sk`) or **NAIH** (HU) or a lawyer
26
+ before scaling. This skill is not legal advice.
27
+
28
+ ## Workflow
29
+
30
+ 1. **Find a live grant** via [[hu-grant-finder]] (eligibility: sector, size, region, deadline).
31
+ 2. **Build a target list** of companies matching the eligibility, from public registers:
32
+ SK **ORSR** (`orsr.sk`) / **FinStat** (`finstat.sk`); HU **e-cégjegyzék** / Céginfo /
33
+ OPTEN. Keep only generic contact addresses.
34
+ 3. **Match + rank** each company to the grant: why they qualify, the amount, the deadline.
35
+ 4. **Draft** a short, personal email per company (use the `email-sequence-writer` skill for
36
+ the copy). Lead with their fit, not your service.
37
+ 5. **Send compliant** through an ESP with sender-ID + opt-out + throttle + suppression list.
38
+ 6. **Track** replies; price as success fee (% of grant won) or retainer.
39
+
40
+ ## Email skeleton (SK / HU, compliant)
41
+
42
+ ```
43
+ Subject: <Program> – <amount> for <their sector> (deadline <date>)
44
+
45
+ Dobrý deň / Tisztelt <Company>,
46
+
47
+ <Program X> is open and your company looks eligible: <1-line why: sector, size, region>.
48
+ It is <amount, %>, deadline <date>. Happy to send a 1-page fit check.
49
+
50
+ <Your name>, <Company>, <address> · <phone>
51
+ Unsubscribe: <link> (we will not email again)
52
+ ```
53
+
54
+ ## Rules
55
+
56
+ - Compliance is the gate, not an afterthought: generic address + real relevance +
57
+ sender-ID + opt-out + LIA, or do not send.
58
+ - Relevance is the legitimate-interest argument. A grant the company cannot win is spam;
59
+ match eligibility hard first via [[hu-grant-finder]].
60
+ - Never email a named individual or a scraped personal address; never re-email an opt-out.
61
+ - This is outreach, not legal counsel. Flag the Slovak DPA / NAIH check before scaling.
62
+
63
+ ## Example
64
+
65
+ User: "Let's offer Program Slovensko grants to other companies by email."
66
+
67
+ Pull the open grant + eligibility via [[hu-grant-finder]], build a target list from
68
+ ORSR / FinStat filtered to that eligibility, draft one relevant email per company to its
69
+ generic address with sender-ID + opt-out, log the LIA, and send throttled. Flag that B2B
70
+ cold email needs a legitimate-interest basis and a DPA check before scaling.