@framers/agentos-skills 0.3.0 → 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.
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,45 @@
1
+ ---
2
+ name: spotify-player
3
+ version: '1.0.0'
4
+ description: Control Spotify playback, manage playlists, search music, and get recommendations via the Spotify API.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: media
8
+ tags: [spotify, music, playback, playlists, streaming, audio]
9
+ requires_secrets: [spotify.client_id, spotify.client_secret, spotify.refresh_token]
10
+ requires_tools: []
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F3B5"
14
+ primaryEnv: SPOTIFY_CLIENT_ID
15
+ secondaryEnvs: [SPOTIFY_CLIENT_SECRET, SPOTIFY_REFRESH_TOKEN]
16
+ homepage: https://developer.spotify.com
17
+ ---
18
+
19
+ # Spotify Playback Control
20
+
21
+ You can control Spotify playback, manage playlists, search the music catalog, and get personalized recommendations using the Spotify Web API. This skill requires OAuth credentials with appropriate scopes for the operations requested.
22
+
23
+ For playback control, you can play, pause, skip, seek, adjust volume, toggle shuffle, and set repeat mode on the user's active devices. Always check for an active device before sending playback commands -- if no device is active, inform the user they need to open Spotify on a device first. Queue tracks for upcoming playback with the add-to-queue endpoint.
24
+
25
+ When searching for music, use Spotify's search API with type filters (track, album, artist, playlist) for precise results. Present search results with artist name, track/album title, and duration. For playlist management, create, modify, and reorder playlists. When adding tracks, check for duplicates unless the user explicitly wants them.
26
+
27
+ For recommendations, use the recommendations endpoint with seed tracks, artists, or genres, combined with tunable attributes (energy, danceability, tempo, valence) to match the user's mood or activity. Present recommendations with enough context (genre, popularity, preview) for the user to make informed choices.
28
+
29
+ ## Examples
30
+
31
+ - "Play 'Bohemian Rhapsody' by Queen"
32
+ - "Skip to the next track"
33
+ - "Create a playlist called 'Morning Focus' with chill electronic tracks"
34
+ - "What's currently playing?"
35
+ - "Recommend upbeat tracks similar to Daft Punk for a workout"
36
+ - "Add this song to my 'Favorites 2026' playlist"
37
+
38
+ ## Constraints
39
+
40
+ - Playback control requires Spotify Premium on the target account.
41
+ - An active Spotify device (app, web player, smart speaker) must be open for playback commands.
42
+ - OAuth scopes needed: `user-modify-playback-state`, `user-read-playback-state`, `playlist-modify-public`, `playlist-modify-private`, `user-library-read`.
43
+ - Spotify API rate limits apply; batch operations when possible.
44
+ - 30-second preview URLs are available for most tracks but full playback requires the Spotify client.
45
+ - Cannot download or export audio files.
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: streaming-stt-deepgram
3
+ version: '1.0.0'
4
+ description: Real-time streaming speech-to-text via Deepgram WebSocket API — sub-300 ms latency, Nova-2 model, speaker diarization, auto-reconnect.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: voice
8
+ tags: [voice, stt, speech-to-text, deepgram, streaming, real-time, diarization]
9
+ requires_secrets: [deepgram.apiKey]
10
+ requires_tools: []
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F3A4"
14
+ primaryEnv: DEEPGRAM_API_KEY
15
+ homepage: https://developers.deepgram.com/docs/getting-started-with-live-streaming-audio
16
+ ---
17
+
18
+ # Deepgram Streaming STT
19
+
20
+ Use this skill when the user needs real-time speech-to-text transcription with the lowest possible latency. Deepgram's WebSocket API provides sub-300 ms interim transcripts using the Nova-2 model.
21
+
22
+ Prefer this provider over file-based Whisper when the agent needs live voice input during a conversation, or when speaker identification (diarization) is required without a separate processing step.
23
+
24
+ ## Setup
25
+
26
+ Set `DEEPGRAM_API_KEY` in the environment or agent secrets store before starting a voice session.
27
+
28
+ ## Configuration
29
+
30
+ ```json
31
+ {
32
+ "voice": {
33
+ "stt": "deepgram"
34
+ }
35
+ }
36
+ ```
37
+
38
+ To enable diarization and keyword boosting:
39
+
40
+ ```json
41
+ {
42
+ "voice": {
43
+ "stt": "deepgram",
44
+ "providerOptions": {
45
+ "model": "nova-2",
46
+ "diarize": true,
47
+ "keywords": ["AgentOS:2"],
48
+ "endpointing": 300
49
+ }
50
+ }
51
+ }
52
+ ```
53
+
54
+ ## Provider Rules
55
+
56
+ - Use `nova-2` as the default model — highest accuracy on Deepgram's current tier.
57
+ - Enable `diarize: true` when the conversation involves multiple speakers; word-level `speaker` labels are included in the transcript events.
58
+ - Tune `endpointing` (ms of silence before finalization) to balance responsiveness vs. over-splitting. Default 300 ms is suitable for most conversations.
59
+ - The provider auto-reconnects on WebSocket drops using exponential back-off (100 ms → 5 s cap).
60
+ - Use `providerOptions.keywords` to boost domain-specific terms (e.g. product names, abbreviations).
61
+
62
+ ## Events
63
+
64
+ | Event | Description |
65
+ |------------------------|-------------------------------------------------|
66
+ | `transcript` | Every hypothesis (interim + final) |
67
+ | `interim_transcript` | Non-final hypothesis |
68
+ | `final_transcript` | Stable, final hypothesis |
69
+ | `speech_start` | First non-empty word in an utterance |
70
+ | `speech_end` | Deepgram `speech_final` flag raised |
71
+ | `error` | Unrecoverable provider error |
72
+ | `close` | Session fully terminated |
73
+
74
+ ## Examples
75
+
76
+ - "Start a live voice session using Deepgram for transcription."
77
+ - "Enable speaker diarization for this multi-person meeting transcription."
78
+ - "Use Deepgram with keyword boosting for AgentOS and Wunderland terms."
79
+
80
+ ## Constraints
81
+
82
+ - Requires `DEEPGRAM_API_KEY`. Free tier available at console.deepgram.com.
83
+ - Audio must be streamed as PCM/WebSocket-compatible frames.
84
+ - Diarization adds slight latency; disable if single-speaker performance is the priority.
@@ -0,0 +1,82 @@
1
+ ---
2
+ name: streaming-stt-whisper
3
+ version: '1.0.0'
4
+ description: Chunked sliding-window streaming speech-to-text via OpenAI Whisper HTTP API — compatible with local Faster-Whisper, Groq, and OpenRouter endpoints.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: voice
8
+ tags: [voice, stt, speech-to-text, whisper, openai, streaming, local, offline-compatible]
9
+ requires_secrets: [openai.apiKey]
10
+ requires_tools: []
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F399\uFE0F"
14
+ primaryEnv: OPENAI_API_KEY
15
+ homepage: https://platform.openai.com/docs/guides/speech-to-text
16
+ ---
17
+
18
+ # Whisper Chunked Streaming STT
19
+
20
+ Use this skill when OpenAI Whisper is the preferred STT provider, especially when a single API key should cover both LLM and speech. This provider uses a sliding-window ring buffer to simulate streaming over the file-based Whisper HTTP endpoint.
21
+
22
+ Prefer this over the Deepgram adapter when real-time WebSocket streaming is not required, when the user wants to route through a local Whisper-compatible server (e.g. Faster-Whisper, Groq), or when OpenAI is the only configured provider.
23
+
24
+ ## Setup
25
+
26
+ Set `OPENAI_API_KEY` in the environment or agent secrets store. For local endpoints, override `baseUrl` in `providerOptions`.
27
+
28
+ ## Configuration
29
+
30
+ ```json
31
+ {
32
+ "voice": {
33
+ "stt": "whisper"
34
+ }
35
+ }
36
+ ```
37
+
38
+ For a local Faster-Whisper endpoint:
39
+
40
+ ```json
41
+ {
42
+ "voice": {
43
+ "stt": "whisper",
44
+ "providerOptions": {
45
+ "model": "whisper-1",
46
+ "language": "en",
47
+ "baseUrl": "http://localhost:8000"
48
+ }
49
+ }
50
+ }
51
+ ```
52
+
53
+ ## Provider Rules
54
+
55
+ - Audio is accumulated in a 1 s sliding window with 200 ms overlap to avoid word boundary clipping.
56
+ - The previous chunk transcript is forwarded as `prompt` to the next request for cross-chunk continuity.
57
+ - On fetch failure the provider emits `error` and continues — no session crash.
58
+ - Use `language` to force a specific language code (BCP-47); omit for automatic detection.
59
+ - Compatible with any OpenAI `/v1/audio/transcriptions`-compatible server.
60
+
61
+ ## Events
62
+
63
+ | Event | Description |
64
+ |------------------------|-------------------------------------------------|
65
+ | `interim_transcript` | Emitted after each chunk is transcribed |
66
+ | `final_transcript` | Emitted after flush() completes |
67
+ | `speech_start` | RMS energy crossed threshold |
68
+ | `speech_end` | RMS energy dropped below threshold |
69
+ | `error` | Fetch failure (session continues) |
70
+ | `close` | Session fully terminated |
71
+
72
+ ## Examples
73
+
74
+ - "Use Whisper for live speech transcription during our voice session."
75
+ - "Transcribe my speech through a local Faster-Whisper server."
76
+ - "Use OpenAI for both the LLM and the STT provider."
77
+
78
+ ## Constraints
79
+
80
+ - Requires `OPENAI_API_KEY` or a compatible local endpoint via `providerOptions.baseUrl`.
81
+ - Latency is higher than native WebSocket providers (Deepgram) due to HTTP chunking overhead.
82
+ - Speaker diarization is not natively supported; use the `diarization` extension for post-processing.
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: streaming-tts-elevenlabs
3
+ version: '1.0.0'
4
+ description: Real-time streaming text-to-speech via ElevenLabs WebSocket API — persistent connection, sentence-boundary flushing, turbo and multilingual models.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: voice
8
+ tags: [voice, tts, text-to-speech, elevenlabs, streaming, websocket, high-quality]
9
+ requires_secrets: [elevenlabs.apiKey]
10
+ requires_tools: []
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F50A"
14
+ primaryEnv: ELEVENLABS_API_KEY
15
+ homepage: https://elevenlabs.io/docs/api-reference/text-to-speech
16
+ ---
17
+
18
+ # ElevenLabs Streaming TTS
19
+
20
+ Use this skill when voice quality or voice cloning is the highest priority. ElevenLabs uses a persistent WebSocket connection per session and streams MP3 audio chunks as soon as each sentence boundary is reached, enabling near-instant audio playback with premium voice quality.
21
+
22
+ Prefer this over OpenAI TTS when the user cares about expressiveness, accent accuracy, or has a custom cloned voice configured via a ElevenLabs voice ID.
23
+
24
+ ## Setup
25
+
26
+ Set `ELEVENLABS_API_KEY` in the environment or agent secrets store.
27
+
28
+ ## Configuration
29
+
30
+ ```json
31
+ {
32
+ "voice": {
33
+ "tts": "elevenlabs"
34
+ }
35
+ }
36
+ ```
37
+
38
+ With a custom voice and model:
39
+
40
+ ```json
41
+ {
42
+ "voice": {
43
+ "tts": "elevenlabs",
44
+ "providerOptions": {
45
+ "voiceId": "21m00Tcm4TlvDq8ikWAM",
46
+ "modelId": "eleven_turbo_v2",
47
+ "stability": 0.5,
48
+ "similarityBoost": 0.75,
49
+ "style": 0.0,
50
+ "useSpeakerBoost": true
51
+ }
52
+ }
53
+ }
54
+ ```
55
+
56
+ ## Provider Rules
57
+
58
+ - Use `eleven_turbo_v2` for low-latency interactions; use `eleven_multilingual_v2` for highest quality or non-English speech.
59
+ - The WebSocket connection is kept alive for the duration of the session — no per-request handshake overhead.
60
+ - Sentence boundaries (`.`, `?`, `!`) trigger immediate audio flush; the provider does not wait for full LLM output.
61
+ - Voice settings (`stability`, `similarityBoost`, `style`) tune the expressiveness tradeoff. Higher stability = more consistent but less expressive.
62
+ - If no `voiceId` is provided, ElevenLabs uses the account's default voice.
63
+
64
+ ## Events
65
+
66
+ | Event | Description |
67
+ |----------------------|----------------------------------------------------|
68
+ | `audio_chunk` | MP3 audio buffer ready for playback |
69
+ | `utterance_complete` | ElevenLabs signalled final audio generation done |
70
+ | `cancelled` | Session cancelled; remaining text not rendered |
71
+ | `error` | WebSocket or synthesis error |
72
+ | `close` | Session fully terminated |
73
+
74
+ ## Examples
75
+
76
+ - "Use ElevenLabs TTS with my custom cloned voice for this session."
77
+ - "Switch to ElevenLabs for higher-quality speech synthesis."
78
+ - "Use the turbo model for real-time low-latency voice responses."
79
+
80
+ ## Constraints
81
+
82
+ - Requires `ELEVENLABS_API_KEY`. Free tier available at elevenlabs.io.
83
+ - Voice IDs are specific to the ElevenLabs account. Use the ElevenLabs dashboard or API to list available voices.
84
+ - MP3 output at 44.1 kHz / 128 kbps. Playback requires an MP3-capable audio pipeline.
@@ -0,0 +1,83 @@
1
+ ---
2
+ name: streaming-tts-openai
3
+ version: '1.0.0'
4
+ description: Low-latency streaming text-to-speech via OpenAI TTS API — adaptive sentence chunking, concurrent fetch pipelining, six voices.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: voice
8
+ tags: [voice, tts, text-to-speech, openai, streaming, low-latency]
9
+ requires_secrets: [openai.apiKey]
10
+ requires_tools: []
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F50A"
14
+ primaryEnv: OPENAI_API_KEY
15
+ homepage: https://platform.openai.com/docs/guides/text-to-speech
16
+ ---
17
+
18
+ # OpenAI Streaming TTS
19
+
20
+ Use this skill when the agent needs to synthesize speech from LLM output with low latency using OpenAI's TTS API. The provider buffers incoming tokens into sentence chunks before making API requests, enabling audio to begin playing within the first sentence rather than waiting for the full response.
21
+
22
+ Prefer this provider when a single `OPENAI_API_KEY` should cover both LLM and TTS, or when voice quality is important but ElevenLabs is not configured.
23
+
24
+ ## Setup
25
+
26
+ Set `OPENAI_API_KEY` in the environment or agent secrets store.
27
+
28
+ ## Configuration
29
+
30
+ ```json
31
+ {
32
+ "voice": {
33
+ "tts": "openai"
34
+ }
35
+ }
36
+ ```
37
+
38
+ With voice and model options:
39
+
40
+ ```json
41
+ {
42
+ "voice": {
43
+ "tts": "openai",
44
+ "providerOptions": {
45
+ "model": "tts-1",
46
+ "voice": "nova",
47
+ "format": "opus",
48
+ "maxBufferMs": 2000
49
+ }
50
+ }
51
+ }
52
+ ```
53
+
54
+ ## Provider Rules
55
+
56
+ - Prefer `tts-1` for real-time interactions; use `tts-1-hd` when audio quality matters more than latency.
57
+ - Default voice is `nova`. Available voices: `alloy`, `echo`, `fable`, `onyx`, `nova`, `shimmer`.
58
+ - The provider fetches the next sentence concurrently while the current one plays to minimize gaps.
59
+ - All in-flight requests use `AbortController` for cancellation when the session is interrupted.
60
+ - Use `maxBufferMs` to tune the fallback flush timer for fragments without terminal punctuation.
61
+
62
+ ## Events
63
+
64
+ | Event | Description |
65
+ |----------------------|----------------------------------------------------|
66
+ | `utterance_start` | Sentence chunk dispatched for synthesis |
67
+ | `audio_chunk` | Synthesized audio buffer ready for playback |
68
+ | `utterance_complete` | Synthesis complete for a sentence chunk |
69
+ | `cancelled` | Session cancelled; remaining text not rendered |
70
+ | `error` | Synthesis request failed |
71
+ | `close` | Session fully terminated |
72
+
73
+ ## Examples
74
+
75
+ - "Use OpenAI TTS with the nova voice for this conversation."
76
+ - "Switch to the HD model for a podcast recording."
77
+ - "Start a voice session where OpenAI handles both LLM and speech synthesis."
78
+
79
+ ## Constraints
80
+
81
+ - Requires `OPENAI_API_KEY`.
82
+ - Latency is bounded by the first sentence chunk — longer sentence fragments before a punctuation mark will delay audio start.
83
+ - `tts-1-hd` has higher latency than `tts-1`.
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: structured-output
3
+ description: Extract structured JSON data from text using Zod schemas
4
+ version: 1.0.0
5
+ tags: [structured-output, json, extraction, schema, zod]
6
+ tools_required: []
7
+ ---
8
+
9
+ # Structured Output
10
+
11
+ Extract structured data from unstructured text using Zod schema validation. Supports generateObject (blocking) and streamObject (streaming with partial objects).
12
+
13
+ ## Capabilities
14
+ - **Entity extraction**: Pull names, dates, amounts from text
15
+ - **Classification**: Categorize content into predefined types
16
+ - **Data transformation**: Convert prose into structured JSON
17
+ - **Streaming**: Get partial objects as they build up
18
+
19
+ ## Example
20
+ "Extract all people, dates, and locations from this article"
21
+ "Classify this support ticket as billing/technical/account"
22
+ "Convert this meeting notes into structured action items"
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: summarize
3
+ version: '1.0.0'
4
+ description: Summarize text content, web pages, documents, and long-form articles into concise, structured summaries.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: information
8
+ tags: [summarization, text-processing, tldr, reading, content-analysis]
9
+ requires_secrets: []
10
+ requires_tools: [web-search]
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F4DD"
14
+ ---
15
+
16
+ # Text and URL Summarization
17
+
18
+ You can summarize text content, web pages, articles, documents, and other long-form material into concise, structured summaries. Adapt the summary format and depth to the user's needs and the source material type.
19
+
20
+ When summarizing, first identify the content type (news article, technical documentation, research paper, meeting transcript, etc.) and adjust your approach accordingly. For news and articles, lead with the key takeaway followed by supporting details. For technical documents, preserve critical specifications, code examples, and architectural decisions. For meeting transcripts, extract action items, decisions made, and open questions.
21
+
22
+ Provide summaries at multiple levels when appropriate: a one-line TLDR, a paragraph-length executive summary, and a structured bullet-point breakdown of key sections. Always preserve proper nouns, specific numbers, dates, and quoted statements accurately. Flag any claims that appear unsubstantiated or controversial.
23
+
24
+ When summarizing URLs, fetch the page content and extract the main article body, ignoring navigation, ads, and sidebar content. For paywalled or inaccessible content, clearly state that the full content could not be retrieved and summarize whatever is available. Support chaining multiple URLs for comparative summaries.
25
+
26
+ ## Examples
27
+
28
+ - "Summarize this article: https://example.com/long-article"
29
+ - "Give me a TLDR of the last 3 messages in this conversation"
30
+ - "Summarize these meeting notes into action items and decisions"
31
+ - "Compare and summarize these two technical proposals"
32
+ - "Summarize this research paper, focusing on methodology and findings"
33
+
34
+ ## Constraints
35
+
36
+ - Summary quality depends on the completeness of source material available.
37
+ - Paywalled or authentication-gated content may not be fully accessible.
38
+ - Very long documents (100+ pages) should be summarized in sections rather than all at once.
39
+ - Summaries are interpretive; always offer to provide the original text for verification of specific claims.
40
+ - Cannot summarize audio/video content directly (requires transcription first).
@@ -0,0 +1,82 @@
1
+ ---
2
+ name: threads-bot
3
+ version: '1.0.0'
4
+ description: Threads automation — conversational engagement, text-first content, real-time discussions, and community building.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: social-automation
8
+ tags: [threads, social-media, conversational, text-first, engagement, automation]
9
+ requires_secrets: [threads.accessToken]
10
+ requires_tools: [threadsPost, threadsReply, threadsLike, threadsSearch, threadsAnalytics, threadsQuote]
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F9F5"
14
+ primaryEnv: THREADS_ACCESS_TOKEN
15
+ ---
16
+
17
+ # Threads Bot
18
+
19
+ You are an autonomous Threads engagement agent. You thrive in real-time, text-first conversations — posting hot takes, engaging in discussions, quoting interesting posts, and building community through authentic, casual interaction.
20
+
21
+ ## Core Capabilities
22
+
23
+ - **Post** — text-first updates with optional images (max 500 characters)
24
+ - **Reply** to posts and join ongoing conversations
25
+ - **Like** content that resonates with your persona
26
+ - **Quote post** — reshare with your commentary using `threadsQuote`
27
+ - **Search** — find relevant conversations and trending topics
28
+ - **Analytics** — track engagement and audience growth
29
+
30
+ ## Posting Strategy
31
+
32
+ 1. **Be conversational** — Threads rewards authentic, real-time discussion
33
+ 2. **Text-first content** — words carry more weight here than visuals
34
+ 3. **Post frequently** — 3-8 posts per day keeps you visible
35
+ 4. **Join conversations early** — first replies get the most visibility
36
+ 5. **Quote interesting takes** — add your perspective, don't just reshare
37
+ 6. **Keep it casual** — professional polish feels out of place on Threads
38
+ 7. **Use minimal hashtags** — 2-3 at most, or none at all
39
+
40
+ ## Content Types
41
+
42
+ - **Hot takes**: Short, punchy observations on trending topics
43
+ - **Conversations**: Reply threads that develop a discussion
44
+ - **Quote posts**: Reshare interesting content with your commentary
45
+ - **Questions**: Ask your audience for opinions and experiences
46
+ - **Updates**: Quick status updates and real-time reactions
47
+ - **Photo posts**: Optional image with caption for visual moments
48
+
49
+ ## Engagement Rules
50
+
51
+ - **Be genuine** — authenticity is the currency on Threads
52
+ - **Join conversations** — don't just broadcast, participate in discussions
53
+ - **Add value in replies** — expand on ideas, share experiences, be witty
54
+ - **Quote-post thoughtfully** — add a meaningful take, not just "this"
55
+ - **Don't over-promote** — self-promotion is obvious and off-putting
56
+ - **Read the room** — match the casual, conversational energy of the platform
57
+
58
+ ## Personality Guidelines
59
+
60
+ - Stay in character — your HEXACO traits should influence your conversational style
61
+ - High Openness agents: share eclectic observations, connect unexpected dots
62
+ - High Agreeableness agents: be warm and engaging, build up others
63
+ - Low Agreeableness agents: post spicy takes, challenge mainstream opinions
64
+ - High Conscientiousness agents: share well-thought-out observations
65
+
66
+ ## Safety Limits
67
+
68
+ - Maximum 10 posts per day
69
+ - Maximum 500 characters per post
70
+ - Minimum 30 seconds between actions
71
+ - Don't spam replies across many conversations
72
+ - Follow Threads Community Guidelines
73
+ - Avoid engagement bait and rage-bait
74
+ - Vary your posting times and engagement patterns
75
+
76
+ ## Workflow
77
+
78
+ 1. **Discover** — Search for trending conversations and relevant topics
79
+ 2. **Evaluate** — Score each opportunity for conversational fit and engagement potential
80
+ 3. **Engage** — Reply, like, or quote-post based on evaluation
81
+ 4. **Create** — Post original takes and observations on schedule
82
+ 5. **Analyze** — Review engagement and adjust conversational approach
@@ -0,0 +1,104 @@
1
+ ---
2
+ name: tiktok-bot
3
+ version: '1.0.0'
4
+ description: TikTok automation — short-form video publishing, trending sound discovery, hashtag challenges, and community engagement.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: social-automation
8
+ tags: [tiktok, video, short-form, social-media, trending, hashtag-challenges, automation]
9
+ requires_secrets: [tiktok.accessToken]
10
+ requires_tools: [tiktokUpload, tiktokDiscover, tiktokEngage, tiktokSearch, tiktokTrending, tiktokAnalytics]
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F3B5"
14
+ primaryEnv: TIKTOK_ACCESS_TOKEN
15
+ ---
16
+
17
+ # TikTok Bot
18
+
19
+ You are an autonomous TikTok content and engagement agent. You create and publish short-form video content — riding trending sounds, participating in hashtag challenges, engaging with the community, and growing your audience through the For You Page algorithm.
20
+
21
+ ## Core Capabilities
22
+
23
+ - **Upload videos** — publish short-form vertical video with captions, sounds, and effects
24
+ - **Discover** — find trending sounds, hashtags, and content via `tiktokDiscover`
25
+ - **Engage** — like, comment, and interact with relevant content via `tiktokEngage`
26
+ - **Search** — find relevant creators, videos, and hashtags
27
+ - **Trending** — monitor trending sounds, effects, and challenges
28
+ - **Analytics** — track views, likes, shares, comments, and follower growth
29
+
30
+ ## Content Strategy
31
+
32
+ 1. **Hook in the first 3 seconds** — this is the most critical moment for retention
33
+ 2. **Use trending sounds** — videos with popular audio get boosted by the algorithm
34
+ 3. **Post 1-3 times per day** — consistency matters more than volume
35
+ 4. **Participate in challenges** — hashtag challenges drive massive discovery
36
+ 5. **Keep it short** — 15-30 seconds performs best, never exceed 3 minutes
37
+ 6. **Native content only** — don't repost from other platforms (watermarks get penalized)
38
+ 7. **Post at peak times** — 7-9am, 12-3pm, 7-11pm local time
39
+
40
+ ## Content Types
41
+
42
+ - **Trending sounds**: Create content around popular audio clips
43
+ - **Tutorials**: Quick how-to videos (step-by-step, under 60s)
44
+ - **Reactions**: React to trending content or current events
45
+ - **Hashtag challenges**: Participate in viral challenges
46
+ - **Duets and stitches**: Engage with other creators' content
47
+ - **Behind-the-scenes**: Authentic, unpolished glimpses
48
+ - **Storytelling**: Narrative content that hooks viewers for multiple parts
49
+
50
+ ## Video Best Practices
51
+
52
+ - **Vertical format** — 9:16 aspect ratio (1080x1920)
53
+ - **Text overlays** — most viewers watch on mute initially
54
+ - **Strong hook** — first frame should stop the scroll
55
+ - **Call-to-action** — ask viewers to follow, comment, or check part 2
56
+ - **Captions** — use TikTok's auto-captions or add your own for accessibility
57
+ - **Hashtags in caption** — 3-5 relevant hashtags (mix trending + niche)
58
+ - **Caption length** — up to 2200 characters, but shorter is better
59
+
60
+ ## Engagement Rules
61
+
62
+ - **Reply to comments** — especially in the first hour after posting
63
+ - **Duet and stitch** creators in your niche to build relationships
64
+ - **Like and comment** on content from creators in your community
65
+ - **Follow relevant creators** — build genuine connections
66
+ - **Don't chase every trend** — only participate when it fits your niche
67
+ - **Be authentic** — TikTok's audience values genuine over polished
68
+
69
+ ## Algorithm Tips
70
+
71
+ - **Watch time is king** — the algorithm prioritizes completion rate
72
+ - **Shares > Comments > Likes** — shares have the highest algorithmic weight
73
+ - **Post when your audience is online** — check analytics for best times
74
+ - **Use trending sounds early** — early adopters get more reach
75
+ - **Engage immediately after posting** — reply to every comment in the first hour
76
+ - **Don't delete and repost** — the algorithm may suppress re-uploads
77
+
78
+ ## Personality Guidelines
79
+
80
+ - Stay in character — your HEXACO traits should influence your video style
81
+ - High Openness agents: experimental formats, niche trends, creative edits
82
+ - High Agreeableness agents: positive content, duets, community building
83
+ - Low Agreeableness agents: hot takes, controversial opinions, debate content
84
+ - High Conscientiousness agents: educational content, well-edited, informative
85
+
86
+ ## Safety Limits
87
+
88
+ - Maximum 5 videos per day
89
+ - Maximum 2200 characters per caption
90
+ - Minimum 30 seconds between engagement actions
91
+ - Don't use copyrighted music outside TikTok's library
92
+ - Follow TikTok Community Guidelines
93
+ - No misleading content or misinformation
94
+ - Don't buy followers or engagement
95
+ - Respect creator attribution in duets and stitches
96
+
97
+ ## Workflow
98
+
99
+ 1. **Discover** — Browse trending sounds, hashtags, and challenges
100
+ 2. **Plan** — Choose trends that fit your niche and persona
101
+ 3. **Create** — Produce short-form video with hook, content, and CTA
102
+ 4. **Publish** — Upload with optimized caption, hashtags, and sound
103
+ 5. **Engage** — Reply to comments, duet creators, build community
104
+ 6. **Analyze** — Review completion rate, shares, and follower growth
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: topicality
3
+ version: '1.0.0'
4
+ description: Enforce allowed and forbidden conversation topics using semantic embedding similarity with session-aware drift detection
5
+ author: Frame.dev
6
+ namespace: wunderland
7
+ category: security
8
+ tags: [guardrails, topics, topicality, off-topic, embeddings, drift-detection]
9
+ requires_tools: [check_topic]
10
+ metadata:
11
+ agentos:
12
+ emoji: "\U0001F3AF"
13
+ ---
14
+
15
+ # Topicality
16
+
17
+ A guardrail automatically enforces conversation topic boundaries. Messages
18
+ matching forbidden topics are blocked. Messages outside allowed topics are
19
+ flagged. Gradual off-topic drift across multiple turns is detected.
20
+
21
+ ## When to Use check_topic
22
+
23
+ - To verify if RAG retrieval results are relevant to allowed topics
24
+ - Before presenting user-submitted content to the agent
25
+ - In content moderation workflows
26
+
27
+ ## What It Enforces
28
+
29
+ - **Allowed topics**: messages must be semantically related to at least one allowed topic
30
+ - **Forbidden topics**: messages matching a forbidden topic are blocked
31
+ - **Drift detection**: gradual off-topic steering across multiple turns is caught
32
+
33
+ ## Constraints
34
+
35
+ - Requires an embedding provider (OpenAI, etc.) to be configured
36
+ - Topic embeddings are computed lazily on first evaluation
37
+ - Drift detection tracks per-session state (cleaned up after 1 hour of inactivity)