@framers/agentos-skills 0.2.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +231 -0
- package/README.md +99 -58
- package/package.json +22 -34
- package/registry/community/.gitkeep +0 -0
- package/registry/curated/1password/SKILL.md +53 -0
- package/registry/curated/account-manager/SKILL.md +60 -0
- package/registry/curated/agent-config/SKILL.md +22 -0
- package/registry/curated/amazon-polly/SKILL.md +74 -0
- package/registry/curated/apple-notes/SKILL.md +45 -0
- package/registry/curated/apple-reminders/SKILL.md +46 -0
- package/registry/curated/audio-generation/SKILL.md +231 -0
- package/registry/curated/blog-publisher/SKILL.md +110 -0
- package/registry/curated/bluesky-bot/SKILL.md +93 -0
- package/registry/curated/cli-tools/SKILL.md +137 -0
- package/registry/curated/cloud-ops/SKILL.md +124 -0
- package/registry/curated/code-safety/SKILL.md +42 -0
- package/registry/curated/coding-agent/SKILL.md +40 -0
- package/registry/curated/company-research/SKILL.md +46 -0
- package/registry/curated/content-creator/SKILL.md +53 -0
- package/registry/curated/deep-research/SKILL.md +56 -0
- package/registry/curated/diarization/SKILL.md +83 -0
- package/registry/curated/discord-helper/SKILL.md +43 -0
- package/registry/curated/document-export/SKILL.md +54 -0
- package/registry/curated/email-intelligence/SKILL.md +41 -0
- package/registry/curated/emergent-tools/SKILL.md +225 -0
- package/registry/curated/endpoint-semantic/SKILL.md +72 -0
- package/registry/curated/facebook-bot/SKILL.md +94 -0
- package/registry/curated/git/SKILL.md +49 -0
- package/registry/curated/github/SKILL.md +142 -0
- package/registry/curated/google-cloud-stt/SKILL.md +71 -0
- package/registry/curated/google-cloud-tts/SKILL.md +71 -0
- package/registry/curated/grounding-guard/SKILL.md +38 -0
- package/registry/curated/healthcheck/SKILL.md +43 -0
- package/registry/curated/image-editing/SKILL.md +25 -0
- package/registry/curated/image-gen/SKILL.md +141 -0
- package/registry/curated/instagram-bot/SKILL.md +60 -0
- package/registry/curated/interactive-widgets/SKILL.md +85 -0
- package/registry/curated/linkedin-bot/SKILL.md +86 -0
- package/registry/curated/mastodon-bot/SKILL.md +104 -0
- package/registry/curated/memory-manager/SKILL.md +127 -0
- package/registry/curated/ml-content-classifier/SKILL.md +38 -0
- package/registry/curated/movie-lookup/SKILL.md +48 -0
- package/registry/curated/multimodal-rag/SKILL.md +153 -0
- package/registry/curated/notion/SKILL.md +43 -0
- package/registry/curated/obsidian/SKILL.md +42 -0
- package/registry/curated/openwakeword/SKILL.md +75 -0
- package/registry/curated/pii-redaction/SKILL.md +56 -0
- package/registry/curated/pinterest-bot/SKILL.md +45 -0
- package/registry/curated/piper/SKILL.md +72 -0
- package/registry/curated/porcupine/SKILL.md +74 -0
- package/registry/curated/reddit-bot/SKILL.md +74 -0
- package/registry/curated/seo-campaign/SKILL.md +51 -0
- package/registry/curated/site-deploy/SKILL.md +119 -0
- package/registry/curated/slack-helper/SKILL.md +43 -0
- package/registry/curated/social-broadcast/SKILL.md +145 -0
- package/registry/curated/spotify-player/SKILL.md +45 -0
- package/registry/curated/streaming-stt-deepgram/SKILL.md +84 -0
- package/registry/curated/streaming-stt-whisper/SKILL.md +82 -0
- package/registry/curated/streaming-tts-elevenlabs/SKILL.md +84 -0
- package/registry/curated/streaming-tts-openai/SKILL.md +83 -0
- package/registry/curated/structured-output/SKILL.md +22 -0
- package/registry/curated/summarize/SKILL.md +40 -0
- package/registry/curated/threads-bot/SKILL.md +82 -0
- package/registry/curated/tiktok-bot/SKILL.md +104 -0
- package/registry/curated/topicality/SKILL.md +37 -0
- package/registry/curated/trello/SKILL.md +44 -0
- package/registry/curated/twitter-bot/SKILL.md +63 -0
- package/registry/curated/video-generation/SKILL.md +225 -0
- package/registry/curated/vision-ocr/SKILL.md +82 -0
- package/registry/curated/voice-conversation/SKILL.md +65 -0
- package/registry/curated/vosk/SKILL.md +74 -0
- package/registry/curated/weather/SKILL.md +37 -0
- package/registry/curated/web-scraper/SKILL.md +60 -0
- package/registry/curated/web-search/SKILL.md +49 -0
- package/registry/curated/whisper-transcribe/SKILL.md +58 -0
- package/registry/curated/youtube-bot/SKILL.md +104 -0
- package/registry.json +2446 -0
- package/scripts/update-registry.mjs +126 -0
- package/scripts/validate-skill.mjs +304 -0
- package/types.d.ts +160 -0
- package/dist/SkillLoader.d.ts +0 -50
- package/dist/SkillLoader.d.ts.map +0 -1
- package/dist/SkillLoader.js +0 -291
- package/dist/SkillLoader.js.map +0 -1
- package/dist/SkillRegistry.d.ts +0 -135
- package/dist/SkillRegistry.d.ts.map +0 -1
- package/dist/SkillRegistry.js +0 -455
- package/dist/SkillRegistry.js.map +0 -1
- package/dist/index.d.ts +0 -13
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -13
- package/dist/index.js.map +0 -1
- package/dist/paths.d.ts +0 -35
- package/dist/paths.d.ts.map +0 -1
- package/dist/paths.js +0 -71
- package/dist/paths.js.map +0 -1
- package/dist/types.d.ts +0 -231
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -21
- 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
|