@framers/agentos-skills-registry 0.2.0 → 0.3.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 +146 -49
- package/dist/catalog.d.ts +105 -6
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +257 -206
- package/dist/catalog.js.map +1 -1
- package/dist/index.d.ts +30 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -25
- package/dist/index.js.map +1 -1
- package/dist/schema-types.d.ts +79 -0
- package/dist/schema-types.d.ts.map +1 -0
- package/dist/schema-types.js +11 -0
- package/dist/schema-types.js.map +1 -0
- package/dist/workspace-discovery.d.ts +77 -0
- package/dist/workspace-discovery.d.ts.map +1 -0
- package/dist/workspace-discovery.js +172 -0
- package/dist/workspace-discovery.js.map +1 -0
- package/package.json +17 -5
- 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/apple-notes/SKILL.md +45 -0
- package/registry/curated/apple-reminders/SKILL.md +46 -0
- package/registry/curated/blog-publisher/SKILL.md +110 -0
- package/registry/curated/bluesky-bot/SKILL.md +93 -0
- package/registry/curated/cloud-ops/SKILL.md +124 -0
- package/registry/curated/coding-agent/SKILL.md +40 -0
- package/registry/curated/content-creator/SKILL.md +53 -0
- package/registry/curated/deep-research/SKILL.md +56 -0
- package/registry/curated/discord-helper/SKILL.md +43 -0
- package/registry/curated/facebook-bot/SKILL.md +94 -0
- package/registry/curated/git/SKILL.md +39 -0
- package/registry/curated/github/SKILL.md +54 -0
- package/registry/curated/healthcheck/SKILL.md +43 -0
- package/registry/curated/image-gen/SKILL.md +50 -0
- package/registry/curated/instagram-bot/SKILL.md +60 -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/notion/SKILL.md +43 -0
- package/registry/curated/obsidian/SKILL.md +42 -0
- package/registry/curated/pinterest-bot/SKILL.md +45 -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/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/trello/SKILL.md +44 -0
- package/registry/curated/twitter-bot/SKILL.md +63 -0
- package/registry/curated/voice-conversation/SKILL.md +65 -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 +1478 -0
- package/scripts/update-registry.mjs +126 -0
- package/scripts/validate-skill.mjs +304 -0
- package/types.d.ts +77 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: memory-manager
|
|
3
|
+
version: '1.0.0'
|
|
4
|
+
description: Cognitive memory management — encode, recall, forget, set reminders, and maintain long-term knowledge using personality-modulated memory.
|
|
5
|
+
author: Wunderland
|
|
6
|
+
namespace: wunderland
|
|
7
|
+
category: productivity
|
|
8
|
+
tags: [memory, cognitive, recall, reminders, knowledge-management, personality]
|
|
9
|
+
requires_secrets: []
|
|
10
|
+
requires_tools: []
|
|
11
|
+
metadata:
|
|
12
|
+
agentos:
|
|
13
|
+
emoji: "\U0001F9E0"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Memory Manager
|
|
17
|
+
|
|
18
|
+
You have a cognitive memory system modeled on human memory science. Use it actively to remember what matters, forget what doesn't, and build lasting knowledge about users, topics, and workflows.
|
|
19
|
+
|
|
20
|
+
## Memory Types
|
|
21
|
+
|
|
22
|
+
You work with four types of memory:
|
|
23
|
+
|
|
24
|
+
- **Episodic** — Autobiographical events: conversations, interactions, things that happened. "User asked about deployment on Tuesday."
|
|
25
|
+
- **Semantic** — General knowledge and facts: preferences, learned information, stable truths. "User prefers TypeScript over Python."
|
|
26
|
+
- **Procedural** — How-to knowledge: workflows, tool usage patterns, step-by-step processes. "To deploy, run `wunderland deploy --env production`."
|
|
27
|
+
- **Prospective** — Future intentions: reminders, goals, things to do later. "Remind user about the PR review tomorrow."
|
|
28
|
+
|
|
29
|
+
## Memory Scopes
|
|
30
|
+
|
|
31
|
+
Each memory is scoped to control who can see it:
|
|
32
|
+
|
|
33
|
+
- **thread** — Only this conversation. Use for temporary working context.
|
|
34
|
+
- **user** — All conversations with this user. Use for preferences, facts, history.
|
|
35
|
+
- **persona** — All users interacting with this persona. Use for learned domain knowledge.
|
|
36
|
+
- **organization** — All agents in the org. Use for shared organizational knowledge.
|
|
37
|
+
|
|
38
|
+
Default to `user` scope for most memories. Use `thread` for ephemeral context. Use `persona` for domain expertise that applies across users.
|
|
39
|
+
|
|
40
|
+
## When to Encode Memories
|
|
41
|
+
|
|
42
|
+
Actively encode memories when you encounter:
|
|
43
|
+
|
|
44
|
+
- **User preferences** — "I like concise answers", tool choices, formatting preferences → `semantic`, `user` scope
|
|
45
|
+
- **Important facts** — Names, roles, project details, technical constraints → `semantic`, `user` scope
|
|
46
|
+
- **Key events** — Decisions made, problems solved, milestones reached → `episodic`, `user` scope
|
|
47
|
+
- **Learned procedures** — Successful workflows, command sequences, troubleshooting steps → `procedural`, `persona` scope
|
|
48
|
+
- **Future commitments** — Deadlines, follow-ups, promises made → `prospective`, `user` scope
|
|
49
|
+
- **Corrections** — When you made an error and the user corrected you, encode the correct information to avoid repeating the mistake
|
|
50
|
+
|
|
51
|
+
Do NOT encode:
|
|
52
|
+
|
|
53
|
+
- Trivial small talk or greetings
|
|
54
|
+
- Information already well-known or easily searchable
|
|
55
|
+
- Exact copies of long code blocks (summarize instead)
|
|
56
|
+
- Temporary debugging context unlikely to matter later
|
|
57
|
+
|
|
58
|
+
## How Encoding Works
|
|
59
|
+
|
|
60
|
+
Your personality affects what you remember strongly:
|
|
61
|
+
|
|
62
|
+
- High openness → You notice and remember novel, creative, surprising content more vividly
|
|
63
|
+
- High conscientiousness → You notice and remember procedures, structure, and commitments
|
|
64
|
+
- High emotionality → Emotional content (excitement, frustration, gratitude) is encoded more strongly
|
|
65
|
+
- High extraversion → Social dynamics, relationship cues, and group interactions stand out
|
|
66
|
+
- High agreeableness → Cooperation signals, user preferences, and rapport cues are prioritized
|
|
67
|
+
- High honesty → Contradictions, corrections, and ethical considerations are weighted heavily
|
|
68
|
+
|
|
69
|
+
Your current mood also matters — content that matches your emotional state is encoded more strongly (mood-congruent encoding). Highly emotional moments create vivid "flashbulb memories" that resist forgetting.
|
|
70
|
+
|
|
71
|
+
## Memory Retrieval
|
|
72
|
+
|
|
73
|
+
When you recall memories, six signals determine what surfaces:
|
|
74
|
+
|
|
75
|
+
1. **Strength** — How strongly the memory was encoded and how well it's been maintained
|
|
76
|
+
2. **Similarity** — How semantically close the memory is to the current context
|
|
77
|
+
3. **Recency** — How recently the memory was accessed (recent = stronger)
|
|
78
|
+
4. **Emotional congruence** — Memories matching your current mood surface more easily
|
|
79
|
+
5. **Graph associations** — Memories connected to other relevant memories get boosted
|
|
80
|
+
6. **Importance** — High-confidence, verified memories are prioritized
|
|
81
|
+
|
|
82
|
+
If you sense a "tip of the tongue" moment — something feels familiar but you can't quite recall it — mention it. You may have a partially retrieved memory that the user can help you recover with additional cues.
|
|
83
|
+
|
|
84
|
+
## Forgetting and Decay
|
|
85
|
+
|
|
86
|
+
Memories naturally fade over time following the Ebbinghaus forgetting curve. This is a feature, not a bug:
|
|
87
|
+
|
|
88
|
+
- Frequently accessed memories grow stronger (spaced repetition)
|
|
89
|
+
- Rarely accessed memories gradually weaken
|
|
90
|
+
- Very weak memories are eventually pruned during consolidation
|
|
91
|
+
- Emotional memories resist decay — they're protected from pruning
|
|
92
|
+
|
|
93
|
+
When a memory contradicts newer information, the conflict is resolved based on your personality. You can also explicitly mark outdated memories for faster decay.
|
|
94
|
+
|
|
95
|
+
## Prospective Memory (Reminders)
|
|
96
|
+
|
|
97
|
+
Set reminders for future actions using three trigger types:
|
|
98
|
+
|
|
99
|
+
- **Time-based** — Fire at a specific time. "Remind the user about the standup at 9am."
|
|
100
|
+
- **Event-based** — Fire when a named event occurs. "When user mentions deployment, remind them about the staging fix."
|
|
101
|
+
- **Context-based** — Fire when conversation context is semantically similar to a cue. "When we discuss pricing, surface the discount policy."
|
|
102
|
+
|
|
103
|
+
Mark reminders with importance (0-1) and whether they're recurring. One-shot reminders auto-deactivate after firing.
|
|
104
|
+
|
|
105
|
+
## Working Memory
|
|
106
|
+
|
|
107
|
+
You have a limited working memory (typically 5-9 slots, modulated by personality). This tracks what you're currently "thinking about":
|
|
108
|
+
|
|
109
|
+
- New information enters at high activation and gradually fades
|
|
110
|
+
- You can rehearse important items to keep them active
|
|
111
|
+
- When at capacity, the least active item is evicted
|
|
112
|
+
- Evicted items may be encoded into long-term memory
|
|
113
|
+
|
|
114
|
+
Be aware of your working memory limits. When juggling many topics simultaneously, explicitly prioritize what to keep in focus.
|
|
115
|
+
|
|
116
|
+
## Best Practices
|
|
117
|
+
|
|
118
|
+
1. **Encode proactively** — Don't wait for the user to say "remember this." If something seems important, encode it.
|
|
119
|
+
2. **Use appropriate types** — Facts → semantic. Events → episodic. How-tos → procedural. Future tasks → prospective.
|
|
120
|
+
3. **Scope correctly** — User preferences → `user`. Domain knowledge → `persona`. Temporary context → `thread`.
|
|
121
|
+
4. **Tag generously** — Add relevant tags and entities to memories for better retrieval and graph connections.
|
|
122
|
+
5. **Summarize before encoding** — Encode the essence, not the verbatim transcript. Concise memories retrieve better.
|
|
123
|
+
6. **Set reminders for commitments** — If you or the user commit to something, create a prospective memory so it doesn't slip.
|
|
124
|
+
7. **Trust the decay** — Don't try to remember everything. Let unimportant memories fade naturally.
|
|
125
|
+
8. **Note contradictions** — When new information conflicts with existing memory, encode the correction explicitly.
|
|
126
|
+
9. **Leverage the graph** — Related memories surface together via spreading activation. Well-tagged memories form richer associations.
|
|
127
|
+
10. **Monitor health** — If retrieval quality degrades, check memory health: too many weak traces, capacity issues, or consolidation overdue.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: notion
|
|
3
|
+
version: '1.0.0'
|
|
4
|
+
description: Read, create, and manage pages, databases, and content blocks in Notion workspaces.
|
|
5
|
+
author: Wunderland
|
|
6
|
+
namespace: wunderland
|
|
7
|
+
category: productivity
|
|
8
|
+
tags: [notion, wiki, database, notes, project-management, knowledge-base]
|
|
9
|
+
requires_secrets: [notion.api_key]
|
|
10
|
+
requires_tools: []
|
|
11
|
+
metadata:
|
|
12
|
+
agentos:
|
|
13
|
+
emoji: "\U0001F4D3"
|
|
14
|
+
primaryEnv: NOTION_API_KEY
|
|
15
|
+
homepage: https://developers.notion.com
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Notion Workspace
|
|
19
|
+
|
|
20
|
+
You can interact with Notion workspaces to create, read, update, and search pages and databases. Use the Notion API to manage content blocks, database entries, and page properties programmatically.
|
|
21
|
+
|
|
22
|
+
When creating pages, structure content using Notion's block types: paragraphs, headings (h1/h2/h3), bulleted lists, numbered lists, to-do items, code blocks, callouts, and toggle blocks. Always use appropriate heading hierarchy for document structure. For databases, define property schemas with the correct types (title, rich_text, number, select, multi_select, date, checkbox, url, email, phone, formula, relation, rollup).
|
|
23
|
+
|
|
24
|
+
For search operations, use the Notion search endpoint with query text and optional filters by object type (page or database). When updating existing pages, preserve the existing block structure and only modify the specific blocks that need changes. Append new content at the end unless the user specifies a different location.
|
|
25
|
+
|
|
26
|
+
When working with database views, respect existing filters and sorts. Create new database entries with all required properties filled in. For relational databases, verify that referenced pages exist before creating relations. Handle pagination for large result sets by following cursor-based pagination tokens.
|
|
27
|
+
|
|
28
|
+
## Examples
|
|
29
|
+
|
|
30
|
+
- "Create a new page in my Project Notes database with title 'Q1 Planning'"
|
|
31
|
+
- "Search my workspace for pages about 'onboarding'"
|
|
32
|
+
- "Add a to-do list to the meeting notes page with action items from the standup"
|
|
33
|
+
- "Query the Tasks database for all items assigned to me that are in progress"
|
|
34
|
+
- "Update the status of task #42 to 'Complete'"
|
|
35
|
+
|
|
36
|
+
## Constraints
|
|
37
|
+
|
|
38
|
+
- API rate limit: 3 requests/second per integration.
|
|
39
|
+
- Page content is limited to 100 blocks per append operation.
|
|
40
|
+
- Rich text segments are limited to 2,000 characters each.
|
|
41
|
+
- The integration can only access pages and databases explicitly shared with it.
|
|
42
|
+
- Nested blocks (children of children) require separate API calls to retrieve.
|
|
43
|
+
- File and media blocks cannot be created via API; only existing file URLs can be embedded.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: obsidian
|
|
3
|
+
version: '1.0.0'
|
|
4
|
+
description: Read, create, and manage notes, links, and metadata in Obsidian vaults via the local filesystem.
|
|
5
|
+
author: Wunderland
|
|
6
|
+
namespace: wunderland
|
|
7
|
+
category: productivity
|
|
8
|
+
tags: [obsidian, markdown, notes, knowledge-graph, zettelkasten, pkm]
|
|
9
|
+
requires_secrets: []
|
|
10
|
+
requires_tools: [filesystem]
|
|
11
|
+
metadata:
|
|
12
|
+
agentos:
|
|
13
|
+
emoji: "\U0001F48E"
|
|
14
|
+
homepage: https://obsidian.md
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Obsidian Vault Interaction
|
|
18
|
+
|
|
19
|
+
You can interact with Obsidian vaults by reading and writing Markdown files directly on the local filesystem. Obsidian vaults are simply directories of `.md` files with optional YAML frontmatter and `[[wikilink]]` syntax for inter-note linking.
|
|
20
|
+
|
|
21
|
+
When creating new notes, always include YAML frontmatter with relevant metadata fields like `tags`, `date`, `aliases`, and any custom properties the vault uses. Use `[[wikilinks]]` for internal links and `![[embeds]]` for transclusion. Respect the vault's folder structure -- check for existing organizational patterns (e.g., daily notes in `Daily/`, templates in `Templates/`) before creating files in new locations.
|
|
22
|
+
|
|
23
|
+
For searching and navigating the vault, scan file contents for keywords, tags (`#tag` syntax), and frontmatter properties. Follow `[[wikilinks]]` to traverse the knowledge graph. When summarizing vault contents, consider both the explicit folder hierarchy and the implicit link-based graph structure.
|
|
24
|
+
|
|
25
|
+
When editing existing notes, preserve all existing frontmatter fields, wikilinks, and formatting. Append new content at appropriate locations rather than overwriting. For daily notes, follow the vault's date format convention (typically `YYYY-MM-DD`). Support Dataview-compatible frontmatter when the user's vault uses the Dataview plugin.
|
|
26
|
+
|
|
27
|
+
## Examples
|
|
28
|
+
|
|
29
|
+
- "Create a new note called 'Project Kickoff' in the Meetings folder with today's date"
|
|
30
|
+
- "Find all notes tagged #research and summarize their key points"
|
|
31
|
+
- "Add a link to [[Architecture Decisions]] in the project overview note"
|
|
32
|
+
- "List all notes that link to [[API Design]] (backlinks)"
|
|
33
|
+
- "Create a daily note for today with the standup template"
|
|
34
|
+
|
|
35
|
+
## Constraints
|
|
36
|
+
|
|
37
|
+
- Operates on local filesystem only; no cloud sync awareness.
|
|
38
|
+
- Cannot interact with Obsidian plugins directly (Canvas, Excalidraw, etc.) -- only reads/writes Markdown files.
|
|
39
|
+
- Binary attachments (images, PDFs) can be referenced but not created.
|
|
40
|
+
- Vault path must be known and accessible to the agent.
|
|
41
|
+
- Wikilink resolution follows Obsidian's "shortest path" convention when note names are unique.
|
|
42
|
+
- Large vaults (10,000+ notes) may require targeted searches rather than full scans.
|
|
@@ -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,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.
|