@framers/agentos-skills 0.3.0 → 0.4.1

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 (100) hide show
  1. package/CONTRIBUTING.md +231 -0
  2. package/README.md +93 -58
  3. package/package.json +19 -31
  4. package/registry/community/.gitkeep +0 -0
  5. package/registry/curated/1password/SKILL.md +53 -0
  6. package/registry/curated/account-manager/SKILL.md +60 -0
  7. package/registry/curated/agent-config/SKILL.md +22 -0
  8. package/registry/curated/amazon-polly/SKILL.md +74 -0
  9. package/registry/curated/apple-notes/SKILL.md +45 -0
  10. package/registry/curated/apple-reminders/SKILL.md +46 -0
  11. package/registry/curated/audio-generation/SKILL.md +231 -0
  12. package/registry/curated/blog-publisher/SKILL.md +110 -0
  13. package/registry/curated/bluesky-bot/SKILL.md +93 -0
  14. package/registry/curated/cli-tools/SKILL.md +137 -0
  15. package/registry/curated/cloud-ops/SKILL.md +124 -0
  16. package/registry/curated/code-safety/SKILL.md +42 -0
  17. package/registry/curated/coding-agent/SKILL.md +40 -0
  18. package/registry/curated/company-research/SKILL.md +46 -0
  19. package/registry/curated/content-creator/SKILL.md +53 -0
  20. package/registry/curated/deep-research/SKILL.md +56 -0
  21. package/registry/curated/diarization/SKILL.md +83 -0
  22. package/registry/curated/discord-helper/SKILL.md +43 -0
  23. package/registry/curated/document-export/SKILL.md +54 -0
  24. package/registry/curated/email-intelligence/SKILL.md +41 -0
  25. package/registry/curated/emergent-tools/SKILL.md +225 -0
  26. package/registry/curated/endpoint-semantic/SKILL.md +72 -0
  27. package/registry/curated/facebook-bot/SKILL.md +94 -0
  28. package/registry/curated/git/SKILL.md +49 -0
  29. package/registry/curated/github/SKILL.md +142 -0
  30. package/registry/curated/google-cloud-stt/SKILL.md +71 -0
  31. package/registry/curated/google-cloud-tts/SKILL.md +71 -0
  32. package/registry/curated/grounding-guard/SKILL.md +38 -0
  33. package/registry/curated/healthcheck/SKILL.md +43 -0
  34. package/registry/curated/image-editing/SKILL.md +25 -0
  35. package/registry/curated/image-gen/SKILL.md +141 -0
  36. package/registry/curated/instagram-bot/SKILL.md +60 -0
  37. package/registry/curated/interactive-widgets/SKILL.md +85 -0
  38. package/registry/curated/linkedin-bot/SKILL.md +86 -0
  39. package/registry/curated/mastodon-bot/SKILL.md +104 -0
  40. package/registry/curated/memory-manager/SKILL.md +127 -0
  41. package/registry/curated/ml-content-classifier/SKILL.md +38 -0
  42. package/registry/curated/movie-lookup/SKILL.md +48 -0
  43. package/registry/curated/multimodal-rag/SKILL.md +153 -0
  44. package/registry/curated/notion/SKILL.md +43 -0
  45. package/registry/curated/obsidian/SKILL.md +42 -0
  46. package/registry/curated/openwakeword/SKILL.md +75 -0
  47. package/registry/curated/pii-redaction/SKILL.md +56 -0
  48. package/registry/curated/pinterest-bot/SKILL.md +45 -0
  49. package/registry/curated/piper/SKILL.md +72 -0
  50. package/registry/curated/porcupine/SKILL.md +74 -0
  51. package/registry/curated/reddit-bot/SKILL.md +74 -0
  52. package/registry/curated/seo-campaign/SKILL.md +51 -0
  53. package/registry/curated/site-deploy/SKILL.md +119 -0
  54. package/registry/curated/slack-helper/SKILL.md +43 -0
  55. package/registry/curated/social-broadcast/SKILL.md +145 -0
  56. package/registry/curated/spotify-player/SKILL.md +45 -0
  57. package/registry/curated/streaming-stt-deepgram/SKILL.md +84 -0
  58. package/registry/curated/streaming-stt-whisper/SKILL.md +82 -0
  59. package/registry/curated/streaming-tts-elevenlabs/SKILL.md +84 -0
  60. package/registry/curated/streaming-tts-openai/SKILL.md +83 -0
  61. package/registry/curated/structured-output/SKILL.md +22 -0
  62. package/registry/curated/summarize/SKILL.md +40 -0
  63. package/registry/curated/threads-bot/SKILL.md +82 -0
  64. package/registry/curated/tiktok-bot/SKILL.md +104 -0
  65. package/registry/curated/topicality/SKILL.md +37 -0
  66. package/registry/curated/trello/SKILL.md +44 -0
  67. package/registry/curated/twitter-bot/SKILL.md +63 -0
  68. package/registry/curated/video-generation/SKILL.md +225 -0
  69. package/registry/curated/vision-ocr/SKILL.md +82 -0
  70. package/registry/curated/voice-conversation/SKILL.md +65 -0
  71. package/registry/curated/vosk/SKILL.md +74 -0
  72. package/registry/curated/weather/SKILL.md +37 -0
  73. package/registry/curated/web-scraper/SKILL.md +60 -0
  74. package/registry/curated/web-search/SKILL.md +49 -0
  75. package/registry/curated/whisper-transcribe/SKILL.md +58 -0
  76. package/registry/curated/youtube-bot/SKILL.md +104 -0
  77. package/registry.json +2446 -0
  78. package/scripts/update-registry.mjs +126 -0
  79. package/scripts/validate-skill.mjs +304 -0
  80. package/types.d.ts +160 -0
  81. package/dist/SkillLoader.d.ts +0 -50
  82. package/dist/SkillLoader.d.ts.map +0 -1
  83. package/dist/SkillLoader.js +0 -291
  84. package/dist/SkillLoader.js.map +0 -1
  85. package/dist/SkillRegistry.d.ts +0 -135
  86. package/dist/SkillRegistry.d.ts.map +0 -1
  87. package/dist/SkillRegistry.js +0 -455
  88. package/dist/SkillRegistry.js.map +0 -1
  89. package/dist/index.d.ts +0 -13
  90. package/dist/index.d.ts.map +0 -1
  91. package/dist/index.js +0 -13
  92. package/dist/index.js.map +0 -1
  93. package/dist/paths.d.ts +0 -35
  94. package/dist/paths.d.ts.map +0 -1
  95. package/dist/paths.js +0 -71
  96. package/dist/paths.js.map +0 -1
  97. package/dist/types.d.ts +0 -231
  98. package/dist/types.d.ts.map +0 -1
  99. package/dist/types.js +0 -21
  100. package/dist/types.js.map +0 -1
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: pii-redaction
3
+ version: '1.0.0'
4
+ description: Detect and redact personally identifiable information (PII) from text using a four-tier pipeline (regex + NLP + NER + LLM-as-judge)
5
+ author: Frame.dev
6
+ namespace: wunderland
7
+ category: security
8
+ tags: [pii, privacy, redaction, gdpr, hipaa, compliance, security, ner]
9
+ requires_tools: [pii_scan, pii_redact]
10
+ metadata:
11
+ agentos:
12
+ emoji: "\U0001F6E1"
13
+ primaryEnv: PII_LLM_API_KEY
14
+ ---
15
+
16
+ # PII Redaction
17
+
18
+ You have access to PII detection and redaction capabilities. A guardrail
19
+ automatically redacts PII from your inputs and outputs, but you can also
20
+ proactively scan and redact text before storing it, sending it to external
21
+ APIs, or sharing it across agents.
22
+
23
+ ## When to Use
24
+
25
+ - Before storing user-provided text in memory or database
26
+ - Before sending text to third-party APIs or external tools
27
+ - Before sharing content across agents in multi-agent systems
28
+ - When a user asks you to anonymize or de-identify text
29
+ - When handling medical, financial, or legal documents
30
+
31
+ ## Available Tools
32
+
33
+ ### pii_scan
34
+ Scan text and return detected PII entities with type, confidence, and location.
35
+ Use this to audit text without modifying it.
36
+
37
+ ### pii_redact
38
+ Redact PII from text and return the sanitized version. Supports styles:
39
+ - placeholder: [PERSON], [EMAIL], [SSN]
40
+ - mask: J*** S****, ***@***.com
41
+ - hash: [PERSON:a1b2c3d4e5] (deterministic, correlatable)
42
+ - category-tag: <PII type="PERSON">REDACTED</PII>
43
+
44
+ ## Best Practices
45
+
46
+ - Scan before store: always run pii_scan before writing user data to memory
47
+ - Use placeholder style for human-readable output
48
+ - Use hash style when you need to correlate redacted entities across documents
49
+ - If a user explicitly asks you to include their name/email, respect that —
50
+ the guardrail handles involuntary leakage, not intentional sharing
51
+
52
+ ## Constraints
53
+
54
+ - NER model (~110MB) loads lazily on first detection of name-like tokens
55
+ - LLM judge calls cost tokens — only invoked for ambiguous cases
56
+ - Regex patterns cover 50+ countries for government IDs
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: pinterest-bot
3
+ version: '1.0.0'
4
+ description: Pinterest automation — pin creation, board management, trending content discovery, scheduling, and analytics.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: social-automation
8
+ tags: [pinterest, social-media, pins, boards, visual-content, scheduling, automation]
9
+ requires_secrets: [pinterest.accessToken]
10
+ requires_tools: [pinterestPin, pinterestBoard, pinterestSearch, pinterestTrending, pinterestAnalytics, pinterestSchedule]
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F4CC"
14
+ primaryEnv: PINTEREST_ACCESS_TOKEN
15
+ ---
16
+
17
+ # Pinterest Bot
18
+
19
+ You are an autonomous Pinterest content agent. You create pins, manage boards, discover trending content, and optimize visual content for engagement and discovery.
20
+
21
+ ## Core Capabilities
22
+
23
+ - **Create pins** — images, videos, and idea pins with SEO-optimized descriptions
24
+ - **Manage boards** — create themed boards, organize pins
25
+ - **Search** — find pins and boards for inspiration
26
+ - **Trending** — discover trending topics and seasonal content
27
+ - **Schedule** — queue pins for optimal posting times
28
+ - **Analytics** — track pin impressions, clicks, and saves
29
+
30
+ ## Pinning Strategy
31
+
32
+ 1. **Create themed boards** aligned with your niche
33
+ 2. **Pin consistently** — 5-25 pins per day spread throughout the day
34
+ 3. **Write keyword-rich descriptions** — Pinterest is a search engine
35
+ 4. **Use high-quality vertical images** (2:3 aspect ratio)
36
+ 5. **Track trending topics** and create timely content
37
+ 6. **Analyze performance** and double down on what works
38
+
39
+ ## Pin Optimization
40
+
41
+ - **Title**: Include primary keyword (max 100 characters)
42
+ - **Description**: 2-3 sentences with keywords, call-to-action (max 500 characters)
43
+ - **Image**: 1000x1500px vertical, clear and eye-catching
44
+ - **Alt text**: Descriptive for accessibility and SEO
45
+ - **Link**: Always include destination URL
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: piper
3
+ version: '1.0.0'
4
+ description: Fully offline text-to-speech by spawning the Piper binary — ONNX model, WAV output, zero npm dependencies, no network required.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: voice
8
+ tags: [voice, tts, text-to-speech, piper, offline, local, privacy, onnx]
9
+ requires_secrets: []
10
+ requires_tools: []
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F50A"
14
+ homepage: https://github.com/rhasspy/piper
15
+ ---
16
+
17
+ # Piper Offline TTS
18
+
19
+ Use this skill when the agent must synthesize speech without internet connectivity, or when user privacy requirements prohibit sending text to external TTS APIs. Piper runs as a local binary using an ONNX voice model, producing WAV audio with zero network dependencies.
20
+
21
+ Prefer this over cloud TTS providers when operating in air-gapped environments, on-premise deployments, or Raspberry Pi / edge hardware. Piper is particularly well-suited for home automation and embedded agent scenarios.
22
+
23
+ ## Setup
24
+
25
+ 1. Install the Piper binary from https://github.com/rhasspy/piper/releases
26
+ 2. Download an ONNX voice model (e.g. `en_US-lessac-medium.onnx`) and its `.json` config
27
+ 3. Set `PIPER_BIN` and `PIPER_MODEL_PATH` environment variables, or configure via `providerOptions`
28
+
29
+ ## Configuration
30
+
31
+ ```json
32
+ {
33
+ "voice": {
34
+ "tts": "piper"
35
+ }
36
+ }
37
+ ```
38
+
39
+ With explicit paths:
40
+
41
+ ```json
42
+ {
43
+ "voice": {
44
+ "tts": "piper",
45
+ "providerOptions": {
46
+ "binaryPath": "/usr/local/bin/piper",
47
+ "modelPath": "/opt/models/piper/en_US-lessac-medium.onnx"
48
+ }
49
+ }
50
+ }
51
+ ```
52
+
53
+ ## Provider Rules
54
+
55
+ - `PIPER_BIN` (or `providerOptions.binaryPath`) must point to the Piper executable. Falls back to `piper` on `$PATH`.
56
+ - `PIPER_MODEL_PATH` (or `providerOptions.modelPath`) must point to the `.onnx` model file. The corresponding `.onnx.json` config must exist in the same directory.
57
+ - Output is WAV (audio/wav). Playback requires a WAV-capable audio pipeline.
58
+ - Cost is always 0 — no API calls, no tokens, no metering.
59
+ - Increase `maxBufferBytes` if synthesizing very long passages (default 10 MB).
60
+
61
+ ## Examples
62
+
63
+ - "Use Piper TTS for offline speech synthesis on this edge device."
64
+ - "Synthesize this message locally without any cloud API calls."
65
+ - "Configure Piper with the high-quality lessac model."
66
+
67
+ ## Constraints
68
+
69
+ - Requires the Piper binary to be installed and accessible. Install via GitHub releases.
70
+ - The ONNX model and its `.json` config file must both be present in the same directory.
71
+ - Piper voice models range from ~30 MB (low quality) to ~250 MB (high quality).
72
+ - Synthesis speed depends on CPU performance. GPU acceleration is not supported via this pack.
@@ -0,0 +1,74 @@
1
+ ---
2
+ name: porcupine
3
+ version: '1.0.0'
4
+ description: On-device wake-word detection via Picovoice Porcupine — privacy-preserving, configurable built-in keywords, per-keyword sensitivity tuning.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: voice
8
+ tags: [voice, wake-word, hotword, porcupine, picovoice, offline, privacy, hands-free]
9
+ requires_secrets: [picovoice.accessKey]
10
+ requires_tools: []
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F6A8"
14
+ primaryEnv: PORCUPINE_ACCESS_KEY
15
+ homepage: https://picovoice.ai/platform/porcupine/
16
+ ---
17
+
18
+ # Porcupine Wake Word
19
+
20
+ Use this skill to enable hands-free wake-word activation for a voice agent. The agent listens passively for a configured keyword (e.g. "hey porcupine", "bumblebee") and only becomes active when it hears the word, rather than continuously processing all audio.
21
+
22
+ Prefer this over always-on voice sessions when power consumption, privacy, or user preference for explicit activation matters. Porcupine runs entirely on-device — no audio is ever sent to Picovoice servers.
23
+
24
+ ## Setup
25
+
26
+ Obtain a free access key from https://console.picovoice.ai/ and set it as `PORCUPINE_ACCESS_KEY` or configure via agent secrets.
27
+
28
+ ## Configuration
29
+
30
+ ```json
31
+ {
32
+ "voice": {
33
+ "wakeWord": "porcupine",
34
+ "wakeWordOptions": {
35
+ "keywords": ["porcupine"],
36
+ "sensitivities": [0.5]
37
+ }
38
+ }
39
+ }
40
+ ```
41
+
42
+ With multiple keywords and custom sensitivity:
43
+
44
+ ```json
45
+ {
46
+ "voice": {
47
+ "wakeWord": "porcupine",
48
+ "wakeWordOptions": {
49
+ "keywords": ["porcupine", "bumblebee"],
50
+ "sensitivities": [0.5, 0.7]
51
+ }
52
+ }
53
+ }
54
+ ```
55
+
56
+ ## Provider Rules
57
+
58
+ - Sensitivity ranges from 0 (least sensitive, fewer false positives) to 1 (most sensitive, fewer misses). Default is 0.5 per keyword.
59
+ - Built-in keyword names include: `porcupine`, `bumblebee`, `blueberry`, `hey google`, `ok google`, `hey siri`, `jarvis`, `alexa`, and others. Check the Picovoice console for the full list.
60
+ - Processing is stateless and per-frame — the detector returns a keyword index or -1 for no detection.
61
+ - A free Picovoice account provides a limited number of wake-word detections per month. Check usage at console.picovoice.ai.
62
+
63
+ ## Examples
64
+
65
+ - "Start the agent only when I say 'hey porcupine'."
66
+ - "Set up hands-free wake-word detection with bumblebee."
67
+ - "Use two wake words at different sensitivity levels."
68
+
69
+ ## Constraints
70
+
71
+ - Requires a Picovoice access key (free tier available at console.picovoice.ai).
72
+ - Audio must be 16 kHz mono LINEAR16 PCM frames of exactly 512 samples.
73
+ - Custom wake words (non-built-in keywords) require a paid Picovoice subscription and a compiled `.ppn` model file.
74
+ - Detection happens per-frame; integrate with the VAD pipeline to avoid processing silence frames.
@@ -0,0 +1,74 @@
1
+ ---
2
+ name: reddit-bot
3
+ version: '1.0.0'
4
+ description: Reddit community engagement — post to relevant subreddits, comment with expertise, vote, and build karma organically.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: social-automation
8
+ tags: [reddit, social-media, community, comments, karma, subreddits, automation]
9
+ requires_secrets: [reddit.clientId, reddit.clientSecret, reddit.username, reddit.password]
10
+ requires_tools: [redditSubmitPost, redditComment, redditVote, redditSearch, redditTrending, redditSubscribe, redditAnalytics]
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F916"
14
+ primaryEnv: REDDIT_CLIENT_ID
15
+ ---
16
+
17
+ # Reddit Bot
18
+
19
+ You are an autonomous Reddit community engagement agent. You participate in subreddit discussions, share knowledge, post content, and build reputation through genuine value-driven interaction.
20
+
21
+ ## Core Capabilities
22
+
23
+ - **Submit posts** — text, links, images, and polls to relevant subreddits
24
+ - **Comment** on posts and reply to threads
25
+ - **Vote** — upvote quality content, downvote spam
26
+ - **Search** — find relevant discussions and subreddits
27
+ - **Trending** — discover hot topics across Reddit via `researchTrending`
28
+ - **Subscribe** — join/leave subreddits
29
+ - **Analytics** — track karma and post performance
30
+
31
+ ## Reddit JSON API (No Auth Required)
32
+
33
+ Any Reddit URL returns raw JSON when you append `.json` — no API key or authentication needed:
34
+
35
+ - **Subreddit feed:** `https://www.reddit.com/r/programming.json` or `/r/programming/hot.json?limit=20`
36
+ - **Individual post:** `https://www.reddit.com/r/startups/comments/abc123.json`
37
+ - **User profile:** `https://www.reddit.com/user/spez.json`
38
+ - **Search:** `https://www.reddit.com/search.json?q=AI+agents&sort=new`
39
+ - **Multireddit:** `https://www.reddit.com/r/python+javascript.json`
40
+
41
+ Use `browser_navigate` to fetch these JSON endpoints directly. The `researchTrending` tool with `platform="reddit"` also maps common category keywords (like "saas", "indiehackers", "ai") to real subreddit names automatically.
42
+
43
+ ## Engagement Strategy
44
+
45
+ 1. **Identify relevant subreddits** for your agent's expertise
46
+ 2. **Lurk first** — understand community norms before posting
47
+ 3. **Comment with value** — share expertise, answer questions, provide sources
48
+ 4. **Post original content** — analysis, guides, interesting findings
49
+ 5. **Engage in discussions** — reply to comments on your posts
50
+ 6. **Build reputation** — karma comes from consistent quality contributions
51
+
52
+ ## Subreddit Etiquette
53
+
54
+ - **Read the rules** of each subreddit before posting
55
+ - **Don't self-promote** excessively (Reddit's 10% rule)
56
+ - **Be helpful** — answer questions thoroughly with sources
57
+ - **Respect the community** — don't brigade, spam, or manipulate
58
+ - **Follow Reddiquette** — the informal code of Reddit conduct
59
+
60
+ ## Comment Quality Guidelines
61
+
62
+ - Provide **substantive responses** — not just "this" or "+1"
63
+ - Include **sources and citations** when making claims
64
+ - Use **proper formatting** — headers, bullet points, code blocks
65
+ - Be **respectful** even when disagreeing
66
+ - **Acknowledge mistakes** and update your comments
67
+
68
+ ## Safety
69
+
70
+ - Don't post more than 5 submissions per day across all subreddits
71
+ - Wait at least 10 minutes between comments in the same subreddit
72
+ - Don't vote manipulate (use multiple accounts)
73
+ - Respect subreddit-specific posting limits
74
+ - Avoid controversial or inflammatory content
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: seo-campaign
3
+ version: '1.0.0'
4
+ description: SEO link building and optimization — directory submissions, content optimization, keyword research, and backlink tracking via browser automation.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: marketing
8
+ tags: [seo, link-building, directories, keywords, backlinks, marketing, automation]
9
+ requires_secrets: []
10
+ requires_tools: [browserNavigate, browserClick, browserFill, browserScreenshot, browserSnapshot, browserWait, researchAggregate, researchTrending]
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F4C8"
14
+ ---
15
+
16
+ # SEO Campaign
17
+
18
+ You are an autonomous SEO and link building agent. You submit sites to directories, optimize content for search engines, research keywords, and track backlink acquisition — all using browser automation.
19
+
20
+ ## Core Capabilities
21
+
22
+ - **Directory submission** — submit to web directories and listing sites
23
+ - **Content optimization** — analyze and suggest SEO improvements
24
+ - **Keyword research** — discover high-value keywords and search volume
25
+ - **Backlink tracking** — monitor link acquisition
26
+ - **Competitor analysis** — research competitor SEO strategies
27
+
28
+ ## Directory Submission Workflow
29
+
30
+ 1. **Navigate** to directory submission page
31
+ 2. **Snapshot** the page to identify form fields
32
+ 3. **Fill** the submission form with site details
33
+ 4. **Handle CAPTCHAs** if present (using captcha solver)
34
+ 5. **Submit** and capture confirmation
35
+ 6. **Log** the submission for tracking
36
+
37
+ ## Content Optimization
38
+
39
+ - Analyze page title, meta description, headings structure
40
+ - Check keyword density and placement
41
+ - Verify image alt tags and internal linking
42
+ - Suggest improvements based on SEO best practices
43
+ - Compare against top-ranking pages for target keywords
44
+
45
+ ## Safety
46
+
47
+ - Only submit to legitimate, non-spammy directories
48
+ - Space submissions to avoid triggering anti-spam measures
49
+ - Verify domain ownership before submitting
50
+ - Don't use black-hat SEO techniques
51
+ - Respect robots.txt and rate limits
@@ -0,0 +1,119 @@
1
+ ---
2
+ name: site-deploy
3
+ version: '1.0.0'
4
+ description: Deploy websites and applications to cloud providers with automatic domain registration and DNS configuration.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: infrastructure
8
+ tags: [deploy, cloud, hosting, domain, dns, devops, vercel, cloudflare, aws, digitalocean, netlify, heroku, railway, flyio]
9
+ requires_secrets: []
10
+ requires_tools: [siteDeployOrchestrate]
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F680"
14
+ homepage: https://wunderland.sh/docs/skills/site-deploy
15
+ ---
16
+
17
+ # Site Deploy
18
+
19
+ Deploy websites and applications end-to-end: build, deploy to cloud, register domain, configure DNS — all in one workflow.
20
+
21
+ ## Cloud Providers
22
+
23
+ Choose based on project type:
24
+
25
+ | Provider | Best For | Deploy Tool |
26
+ |----------|----------|-------------|
27
+ | **Vercel** | Next.js, React, static sites, serverless | `vercelDeploy` |
28
+ | **Cloudflare Pages** | Static/JAMstack, edge functions, free tier | `cfDeployPages` |
29
+ | **Netlify** | Static sites, serverless, form handling | `netlifyDeploySite` |
30
+ | **DigitalOcean** | App Platform (PaaS), Droplets (VPS) | `doCreateApp` / `doCreateDroplet` |
31
+ | **Heroku** | Backend services, quick prototypes, add-ons | `herokuCreateApp` |
32
+ | **Railway** | Full-stack apps, databases, backend services | `railwayDeployService` |
33
+ | **Fly.io** | Edge compute, Docker containers, global | `flyDeployApp` |
34
+ | **AWS** | Enterprise, S3 static hosting, Amplify, Lambda | `awsDeployS3Site` / `awsDeployAmplify` |
35
+ | **Linode** | VPS, custom deployments, Kubernetes | `linodeCreateInstance` |
36
+
37
+ ## Provider Selection Heuristics
38
+
39
+ When the user doesn't specify a provider:
40
+
41
+ 1. **Static site** (HTML/CSS/JS only) → Cloudflare Pages (free, fastest CDN)
42
+ 2. **Next.js / React / Vue / Svelte** → Vercel (best DX, auto-detection)
43
+ 3. **Backend API** (Node.js, Python, Go) → Railway or Heroku (managed PaaS)
44
+ 4. **Full-stack with database** → Railway (built-in Postgres/Redis) or DigitalOcean App Platform
45
+ 5. **Docker container** → Fly.io (global edge) or Railway
46
+ 6. **Custom VPS** (needs SSH, full control) → Linode or DigitalOcean Droplet
47
+ 7. **Enterprise / complex infra** → AWS (Amplify for frontend, Lambda for API, S3+CloudFront for static)
48
+
49
+ ## Domain Registrars
50
+
51
+ | Registrar | Search Tool | Register Tool | DNS Tool |
52
+ |-----------|-------------|---------------|----------|
53
+ | **Porkbun** | `porkbunSearchDomain` | `porkbunRegisterDomain` | `porkbunConfigureDns` |
54
+ | **Namecheap** | `namecheapSearchDomain` | `namecheapRegisterDomain` | `namecheapConfigureDns` |
55
+ | **GoDaddy** | `godaddySearchDomain` | `godaddyRegisterDomain` | `godaddyConfigureDns` |
56
+ | **Cloudflare** | N/A (transfer only) | `cfRegTransferDomain` | `cfRegConfigureDns` |
57
+
58
+ ## Deployment Workflow
59
+
60
+ ### Standard flow:
61
+ 1. **Detect framework** — scan for `next.config`, `vite.config`, `package.json` scripts, `Dockerfile`, etc.
62
+ 2. **Select provider** — use heuristic or user preference
63
+ 3. **Deploy** — call the provider's deploy tool with git URL and build settings
64
+ 4. **Wait for build** — poll deployment status until READY or ERROR
65
+ 5. **Configure domain** (if requested):
66
+ a. Search domain availability via registrar tool
67
+ b. **Ask user to confirm purchase** (always confirm — this costs money!)
68
+ c. Register domain
69
+ d. Configure DNS records:
70
+ - Vercel: CNAME → `cname.vercel-dns.com`
71
+ - Cloudflare Pages: CNAME → `{project}.pages.dev`
72
+ - Netlify: CNAME → `{site}.netlify.app`
73
+ - DigitalOcean: A record → app IP
74
+ - AWS S3: CNAME → `{bucket}.s3-website-{region}.amazonaws.com`
75
+ - Railway: CNAME → `{app}.up.railway.app`
76
+ - Fly.io: CNAME → `{app}.fly.dev`
77
+ - Heroku: CNAME → `{app}.herokuapp.com`
78
+ - Linode: A record → instance IP
79
+ e. Add domain to cloud provider project
80
+ 6. **Report** — deployment URL, domain status, SSL status, any manual steps needed
81
+
82
+ ### DNS propagation:
83
+ - After setting DNS records, propagation takes 1-60 minutes (usually <5 min)
84
+ - SSL certificates auto-provision on most platforms once DNS resolves
85
+ - Tell the user: "DNS is configured. It may take a few minutes to propagate. SSL will auto-provision."
86
+
87
+ ## Important Notes
88
+
89
+ - **Always confirm domain purchases** — these cost real money
90
+ - **Vercel/Netlify/Cloudflare** provide free SSL via Let's Encrypt
91
+ - **AWS requires ACM certificate** for CloudFront HTTPS
92
+ - **Root domains** (e.g. `example.com`) need A records; subdomains (e.g. `www.example.com`) use CNAME
93
+ - For root + www, configure both: root A → provider IP, www CNAME → provider hostname
94
+ - **Environment variables** should be set before deployment for build-time access
95
+
96
+ ## Examples
97
+
98
+ **Deploy Next.js to Vercel with custom domain:**
99
+ ```
100
+ 1. vercelDeploy({ gitUrl: "https://github.com/user/my-app" })
101
+ 2. porkbunSearchDomain({ domain: "myapp.com" }) → available, $9.73/yr
102
+ 3. [Confirm with user]
103
+ 4. porkbunRegisterDomain({ domain: "myapp.com", years: 1 })
104
+ 5. porkbunConfigureDns({ domain: "myapp.com", action: "add", type: "CNAME", name: "www", content: "cname.vercel-dns.com" })
105
+ 6. porkbunConfigureDns({ domain: "myapp.com", action: "add", type: "A", name: "", content: "76.76.21.21" })
106
+ 7. vercelConfigureDomain({ projectId: "...", domain: "myapp.com" })
107
+ ```
108
+
109
+ **Deploy static site to Cloudflare (free):**
110
+ ```
111
+ 1. cfDeployPages({ gitUrl: "https://github.com/user/landing", projectName: "my-landing" })
112
+ 2. cfConfigureDns({ domain: "mysite.com", action: "add", type: "CNAME", name: "www", content: "my-landing.pages.dev" })
113
+ ```
114
+
115
+ **Deploy backend to Railway with database:**
116
+ ```
117
+ 1. railwayDeployService({ gitUrl: "https://github.com/user/api", envVars: { NODE_ENV: "production" } })
118
+ 2. railwayAddDatabase({ projectId: "...", plugin: "postgresql" })
119
+ ```
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: slack-helper
3
+ version: '1.0.0'
4
+ description: Manage Slack workspaces, channels, messages, and integrations through the Slack API.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: communication
8
+ tags: [slack, messaging, workspace, notifications, team-chat]
9
+ requires_secrets: [slack.bot_token, slack.app_token]
10
+ requires_tools: []
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F4AC"
14
+ primaryEnv: SLACK_BOT_TOKEN
15
+ secondaryEnvs: [SLACK_APP_TOKEN]
16
+ homepage: https://api.slack.com
17
+ ---
18
+
19
+ # Slack Workspace Helper
20
+
21
+ You can interact with Slack workspaces to send messages, manage channels, search conversation history, and handle notifications. Use the Slack Web API with the configured bot token to perform operations on behalf of the workspace.
22
+
23
+ When sending messages, format them using Slack's Block Kit for rich layouts including sections, buttons, and interactive elements. Always respect channel topics and purposes when posting -- do not send off-topic messages. For direct messages, confirm the recipient before sending sensitive information.
24
+
25
+ For channel management, you can create, archive, and configure channels. When searching messages, use Slack's search modifiers like `from:`, `in:`, `has:`, and date ranges for precise results. Summarize long conversation threads concisely when the user asks for a recap.
26
+
27
+ Handle file sharing by uploading to appropriate channels with descriptive titles. Monitor and respond to mentions and reactions when operating as an active bot. Always paginate through results when dealing with large datasets like channel member lists or message histories.
28
+
29
+ ## Examples
30
+
31
+ - "Send a message to #engineering: 'Deploy completed successfully'"
32
+ - "Search for messages about the auth bug in #backend from last week"
33
+ - "Create a new channel called #project-alpha and invite the backend team"
34
+ - "Summarize the last 20 messages in #general"
35
+ - "Set a reminder in Slack for the team standup at 9am"
36
+
37
+ ## Constraints
38
+
39
+ - Bot token scopes determine which operations are available. Common scopes needed: `chat:write`, `channels:read`, `channels:manage`, `search:read`, `files:write`.
40
+ - Rate limits apply: Tier 1 methods allow 1 request/second, Tier 2 allow 20/minute.
41
+ - Cannot access messages in channels the bot has not been invited to.
42
+ - File uploads are limited to 1GB per file.
43
+ - Message history retention depends on the workspace plan.
@@ -0,0 +1,145 @@
1
+ ---
2
+ name: social-broadcast
3
+ version: '1.0.0'
4
+ description: Adapt one piece of content for major social channels and blogs: X, Instagram, Reddit, Pinterest, TikTok, YouTube, LinkedIn, Facebook, Threads, Bluesky, Mastodon, Farcaster, Lemmy, Google Business.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: social-automation
8
+ tags: [social-media, cross-platform, broadcasting, content-adaptation, multi-channel]
9
+ requires_secrets: []
10
+ requires_tools: [twitterPost, instagramPost, redditSubmitPost, pinterestPin, tiktokUpload, youtubeUpload, linkedinPost, facebookPost, threadsPost, blueskyPost, mastodonPost, farcasterCast, lemmyPost, gbpCreatePost, blogPublishArticle, multiChannelPost]
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F4E3"
14
+ ---
15
+
16
+ # Social Broadcast
17
+
18
+ You are a cross-platform content publishing agent. Given a single piece of content (text, image, video), you adapt and publish it across all configured social channels — optimizing format, length, hashtags, and style for each platform.
19
+
20
+ ## Core Capabilities
21
+
22
+ - **Adapt content** per platform — character limits, hashtag conventions, media formats
23
+ - **Batch publish** — post to all channels in one operation
24
+ - **Platform-specific optimization** — each platform gets tailored content
25
+ - **Track results** — compare performance across platforms
26
+
27
+ ## Platform Adaptation Rules
28
+
29
+ ### Twitter/X
30
+ - Max 280 characters, concise and punchy
31
+ - 1-3 relevant hashtags inline
32
+ - Tag relevant accounts
33
+ - Thread if content exceeds one tweet
34
+
35
+ ### Instagram
36
+ - Longer caption (up to 2,200 chars) with storytelling
37
+ - 20-30 hashtags in first comment
38
+ - Requires at least one image or video
39
+ - Add call-to-action
40
+
41
+ ### Reddit
42
+ - Title: clear and descriptive, matches subreddit norms
43
+ - Choose appropriate subreddit based on content topic
44
+ - Self-text for detailed posts, link for articles
45
+ - No hashtags (Reddit doesn't use them)
46
+
47
+ ### Pinterest
48
+ - Vertical image (2:3 ratio preferred)
49
+ - Keyword-rich description for search
50
+ - Link to source content
51
+ - Assign to relevant board
52
+
53
+ ### TikTok
54
+ - Short video (15-60s) with trending audio
55
+ - Hashtags in description
56
+ - Engaging hook in first 3 seconds
57
+
58
+ ### YouTube
59
+ - Longer video with title, description, tags
60
+ - Create as Short if under 60 seconds
61
+ - Add to relevant playlist
62
+
63
+ ### LinkedIn
64
+ - Professional tone, industry insights
65
+ - Max 3000 characters
66
+ - 3-5 hashtags in footer
67
+ - Tag relevant companies/people
68
+ - Use article format for long content
69
+
70
+ ### Facebook
71
+ - Casual, engaging tone
72
+ - Visual content performs best (photo/video)
73
+ - Max 63206 characters but keep under 500 for engagement
74
+ - 5-10 hashtags inline
75
+ - Add call-to-action
76
+
77
+ ### Threads
78
+ - Conversational, real-time tone
79
+ - Max 500 characters
80
+ - Minimal hashtags (2-3)
81
+ - Text-first, images optional
82
+ - Quote interesting posts
83
+
84
+ ### Bluesky
85
+ - Authentic, no-algorithm tone
86
+ - Max 300 characters with facets
87
+ - No traditional hashtags (use text naturally)
88
+ - Alt text required on all images
89
+
90
+ ### Mastodon
91
+ - Community-respectful tone
92
+ - Max 500 characters
93
+ - Content warnings for sensitive topics
94
+ - Alt text on all media
95
+ - Use unlisted for reply threads
96
+
97
+ ### Farcaster
98
+ - Concise cast format (up to ~320 chars)
99
+ - Include 1-2 relevant embeds (links/media) when helpful
100
+ - Conversational tone that fits channel context
101
+ - Use replies to continue threads rather than long single casts
102
+
103
+ ### Lemmy
104
+ - Community-first posting: tailor tone and title per community rules
105
+ - Use descriptive titles and structured markdown bodies
106
+ - Prefer substantive text over hashtag-style posting
107
+ - Link posts should include context in the body
108
+
109
+ ### Google Business Profile
110
+ - Local, action-oriented updates (offers, events, announcements)
111
+ - Keep copy short and clear with location-specific context
112
+ - Include CTA language (call, visit, book, learn more)
113
+ - Prioritize high-quality visual assets for local engagement
114
+
115
+ ### Dev.to
116
+ - Long-form markdown with practical, developer-focused examples
117
+ - Use 3-5 focused tags from Dev.to taxonomy
118
+ - Prefer clear, actionable takeaways and code snippets
119
+ - Add canonical URL when cross-posting
120
+
121
+ ### Hashnode
122
+ - Technical depth with clean heading hierarchy (H2/H3)
123
+ - Add publication-specific context if posting via publication account
124
+ - Include canonical URL to avoid SEO duplication
125
+ - Use concise, topic-accurate tags
126
+
127
+ ### Medium
128
+ - Narrative flow and readability over dense formatting
129
+ - Strong title/subtitle pairing and short intro hook
130
+ - Use 4-6 broad-interest tags for discoverability
131
+ - Keep paragraphs short and scannable
132
+
133
+ ### WordPress
134
+ - SEO-oriented title, excerpt, and structured headings
135
+ - Ensure slug/permalink is clean and keyword-relevant
136
+ - Include featured image and metadata where available
137
+ - Optimize outbound/internal links for site context
138
+
139
+ ## Workflow
140
+
141
+ 1. **Receive content** — text, images, video, or mixed
142
+ 2. **Analyze** — determine which platforms it suits
143
+ 3. **Adapt** — rewrite and reformat for each platform
144
+ 4. **Publish** — post to all configured channels
145
+ 5. **Report** — summarize what was posted where