@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.
Files changed (64) hide show
  1. package/CONTRIBUTING.md +231 -0
  2. package/README.md +146 -49
  3. package/dist/catalog.d.ts +105 -6
  4. package/dist/catalog.d.ts.map +1 -1
  5. package/dist/catalog.js +257 -206
  6. package/dist/catalog.js.map +1 -1
  7. package/dist/index.d.ts +30 -8
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +48 -25
  10. package/dist/index.js.map +1 -1
  11. package/dist/schema-types.d.ts +79 -0
  12. package/dist/schema-types.d.ts.map +1 -0
  13. package/dist/schema-types.js +11 -0
  14. package/dist/schema-types.js.map +1 -0
  15. package/dist/workspace-discovery.d.ts +77 -0
  16. package/dist/workspace-discovery.d.ts.map +1 -0
  17. package/dist/workspace-discovery.js +172 -0
  18. package/dist/workspace-discovery.js.map +1 -0
  19. package/package.json +17 -5
  20. package/registry/community/.gitkeep +0 -0
  21. package/registry/curated/1password/SKILL.md +53 -0
  22. package/registry/curated/account-manager/SKILL.md +60 -0
  23. package/registry/curated/apple-notes/SKILL.md +45 -0
  24. package/registry/curated/apple-reminders/SKILL.md +46 -0
  25. package/registry/curated/blog-publisher/SKILL.md +110 -0
  26. package/registry/curated/bluesky-bot/SKILL.md +93 -0
  27. package/registry/curated/cloud-ops/SKILL.md +124 -0
  28. package/registry/curated/coding-agent/SKILL.md +40 -0
  29. package/registry/curated/content-creator/SKILL.md +53 -0
  30. package/registry/curated/deep-research/SKILL.md +56 -0
  31. package/registry/curated/discord-helper/SKILL.md +43 -0
  32. package/registry/curated/facebook-bot/SKILL.md +94 -0
  33. package/registry/curated/git/SKILL.md +39 -0
  34. package/registry/curated/github/SKILL.md +54 -0
  35. package/registry/curated/healthcheck/SKILL.md +43 -0
  36. package/registry/curated/image-gen/SKILL.md +50 -0
  37. package/registry/curated/instagram-bot/SKILL.md +60 -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/notion/SKILL.md +43 -0
  42. package/registry/curated/obsidian/SKILL.md +42 -0
  43. package/registry/curated/pinterest-bot/SKILL.md +45 -0
  44. package/registry/curated/reddit-bot/SKILL.md +74 -0
  45. package/registry/curated/seo-campaign/SKILL.md +51 -0
  46. package/registry/curated/site-deploy/SKILL.md +119 -0
  47. package/registry/curated/slack-helper/SKILL.md +43 -0
  48. package/registry/curated/social-broadcast/SKILL.md +145 -0
  49. package/registry/curated/spotify-player/SKILL.md +45 -0
  50. package/registry/curated/summarize/SKILL.md +40 -0
  51. package/registry/curated/threads-bot/SKILL.md +82 -0
  52. package/registry/curated/tiktok-bot/SKILL.md +104 -0
  53. package/registry/curated/trello/SKILL.md +44 -0
  54. package/registry/curated/twitter-bot/SKILL.md +63 -0
  55. package/registry/curated/voice-conversation/SKILL.md +65 -0
  56. package/registry/curated/weather/SKILL.md +37 -0
  57. package/registry/curated/web-scraper/SKILL.md +60 -0
  58. package/registry/curated/web-search/SKILL.md +49 -0
  59. package/registry/curated/whisper-transcribe/SKILL.md +58 -0
  60. package/registry/curated/youtube-bot/SKILL.md +104 -0
  61. package/registry.json +1478 -0
  62. package/scripts/update-registry.mjs +126 -0
  63. package/scripts/validate-skill.mjs +304 -0
  64. 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.