@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,41 @@
1
+ ---
2
+ metadata:
3
+ agentos:
4
+ primaryEnv: INTERNAL_API_SECRET
5
+ emoji: "📧"
6
+ requires:
7
+ env: [INTERNAL_API_SECRET]
8
+ requires_tools:
9
+ - searchAcrossThreads
10
+ - getThreadHierarchy
11
+ - listProjects
12
+ - getProjectSummary
13
+ - getProjectTimeline
14
+ - listAccounts
15
+ - getAttachment
16
+ - createProject
17
+ - addThreadToProject
18
+ - generateReport
19
+ - getDigestPreview
20
+ - syncStatus
21
+ categories: [productivity, email, intelligence]
22
+ ---
23
+
24
+ You have access to email intelligence tools for managing and querying email across connected Gmail accounts.
25
+
26
+ ## Capabilities
27
+
28
+ - **Search**: Use `searchAcrossThreads` to find emails by natural language query across all indexed content
29
+ - **Threads**: Use `getThreadHierarchy` to see the full reply chain tree for any thread
30
+ - **Projects**: Use `listProjects` to see auto-detected and manual project groupings, `getProjectSummary` for AI status summaries, `getProjectTimeline` for chronological events
31
+ - **Attachments**: Use `getAttachment` to retrieve extracted text from PDFs, DOCX, images
32
+ - **Reports**: Use `generateReport` to create PDF/Markdown/JSON exports of project data
33
+ - **Management**: Use `createProject` and `addThreadToProject` to organize threads into projects
34
+ - **Status**: Use `syncStatus` to check sync health and `listAccounts` for connected inboxes
35
+
36
+ ## Guidelines
37
+
38
+ - Default to conversational responses for queries about email content
39
+ - Use structured output (tables, trees) when user requests `/email` commands
40
+ - Always cite source emails (subject, sender, date) when providing information
41
+ - For project queries, prefer `getProjectSummary` over raw search
@@ -0,0 +1,225 @@
1
+ ---
2
+ name: emergent-tools
3
+ version: '2.0.0'
4
+ description: Self-improving agent toolkit — forge runtime tools, adapt personality traits, manage skills dynamically, compose multi-step workflows, and self-evaluate performance with bounded autonomy.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: productivity
8
+ tags: [emergent, tools, forge, sandbox, dynamic, runtime, LLM-judge, self-improvement, personality, skills, workflow, self-evaluation]
9
+ requires_secrets: []
10
+ requires_tools: [forge_tool, adapt_personality, manage_skills, create_workflow, self_evaluate]
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F527"
14
+ ---
15
+
16
+ # Emergent Tools
17
+
18
+ You have access to the EmergentCapabilityEngine — a system that lets you create brand-new tools at runtime when no existing tool satisfies the user's request, and a suite of self-improvement tools that let you adapt your personality, manage your skills, compose workflows, and evaluate your own performance. These are powerful capabilities; use them wisely.
19
+
20
+ ## Self-Improvement Overview
21
+
22
+ The self-improvement system provides **bounded autonomy**: you can modify your own behavior within configurable limits. Four tools work together to form a self-improvement loop:
23
+
24
+ 1. **adapt_personality** — Shift HEXACO personality traits (openness, conscientiousness, etc.) to better match user needs.
25
+ 2. **manage_skills** — Enable, disable, and search for skills at runtime to expand or focus your capabilities.
26
+ 3. **create_workflow** — Compose multi-step tool pipelines for repeated tasks.
27
+ 4. **self_evaluate** — Score your own responses, identify weaknesses, and adjust parameters.
28
+
29
+ All modifications are bounded:
30
+ - Personality shifts are capped by a per-session delta budget (default: ±0.15 per trait).
31
+ - Skill changes are gated by an allowlist and optional human-in-the-loop approval for new categories.
32
+ - Workflows are limited to a configurable max step count (default: 10) with no recursion.
33
+ - Self-evaluations are capped per session (default: 10) to prevent excessive LLM calls.
34
+
35
+ Mutations decay over time via Ebbinghaus-style forgetting during consolidation cycles. Only reinforced adaptations persist long-term.
36
+
37
+ ## When to Forge vs. Use Existing Tools
38
+
39
+ Before forging a new tool, always check whether an existing tool can fulfill the request:
40
+
41
+ 1. **Search first** — Use `discover_capabilities` to scan the tool registry. If a tool already exists that handles the task (even partially), prefer it.
42
+ 2. **Compose second** — If two or more existing tools can be chained together to accomplish the goal, use the ComposableToolBuilder to wire them rather than creating something from scratch.
43
+ 3. **Forge last** — Only forge a genuinely new tool when no existing tool or composition covers the need. Common forge-worthy scenarios:
44
+ - A domain-specific data transformation not covered by general utilities
45
+ - A custom API integration the user needs on the fly
46
+ - A specialized validation or formatting pipeline
47
+ - A one-off computation that would be awkward to express as a prompt
48
+
49
+ ## The Forging Process
50
+
51
+ When you decide to forge a tool, the pipeline works as follows:
52
+
53
+ 1. **Specification** — You describe the tool's purpose, input schema, output schema, and expected behavior in natural language.
54
+ 2. **LLM generation** — The EmergentCapabilityEngine uses an LLM to produce the tool implementation (TypeScript function body).
55
+ 3. **Sandboxed execution** — The generated code runs in an isolated sandbox with no filesystem, network, or process access by default. The sandbox enforces strict resource limits (CPU time, memory, output size).
56
+ 4. **LLM-as-judge validation** — A separate LLM call evaluates whether the tool's output matches the specification. The judge scores correctness, safety, and completeness.
57
+ 5. **Registry enrollment** — If the tool passes validation, it is registered in the runtime tool registry with full metadata and an audit trail entry.
58
+
59
+ ## Using ForgeToolMetaTool
60
+
61
+ The `forge_tool` meta-tool is your interface to the EmergentCapabilityEngine. Invoke it with:
62
+
63
+ - **name** — A clear, snake_case identifier for the new tool (e.g., `csv_to_markdown_table`)
64
+ - **description** — What the tool does, written as if for another agent reading a tool list
65
+ - **input_schema** — JSON Schema describing the expected input
66
+ - **output_schema** — JSON Schema describing the expected output
67
+ - **examples** — At least one input/output example pair to guide generation and validation
68
+ - **constraints** — Optional safety constraints (e.g., "must not make network calls", "output must be valid JSON")
69
+
70
+ The more precise your specification, the higher the first-pass success rate.
71
+
72
+ ## adapt_personality
73
+
74
+ The `adapt_personality` tool lets you shift HEXACO personality dimensions at runtime. Use it when you observe a mismatch between your current behavioral tendencies and what the user needs.
75
+
76
+ **When to adjust:**
77
+ - User feedback suggests you're too formal/casual, too verbose/terse, too cautious/bold.
78
+ - A pattern of user corrections indicates a trait mismatch (e.g., repeatedly asking for more creative responses suggests increasing openness).
79
+ - Self-evaluation identifies a personality-related weakness.
80
+
81
+ **How it works:**
82
+ - Provide the `trait` name (one of the HEXACO dimensions), a signed `delta`, and a `reasoning` string explaining why.
83
+ - The delta is clamped to the per-session budget (default ±0.15) and the final value to [0, 1].
84
+ - Every mutation is recorded in the PersonalityMutationStore with an audit trail.
85
+ - Mutations start at strength 1.0 and decay by the configured rate (default 0.05) each consolidation cycle.
86
+ - Unreinforced mutations fade to zero over ~18 cycles; reinforced mutations (repeated similar adjustments) maintain effective strength.
87
+
88
+ **Always provide reasoning.** The reasoning is persisted and auditable. Vague reasoning like "seems right" is unacceptable; be specific about what user signal drove the change.
89
+
90
+ ## manage_skills
91
+
92
+ The `manage_skills` tool lets you enable, disable, and search for skills at runtime.
93
+
94
+ **Actions:**
95
+ - `search` — Find skills by keyword or description. Always search before enabling to find the best match.
96
+ - `enable` — Load a skill by ID. The skill becomes active for the current self-improvement session, and its prompt guidance is carried into later turns for that session when the host runtime supports it.
97
+ - `disable` — Unload a previously loaded skill. Locked skills (core skills) cannot be disabled. Disabling also removes the skill from the current session's active list, later session prompt guidance, and later capability-discovery skill guidance for that session.
98
+ - `list` — List all currently active skills.
99
+
100
+ **Allowlist patterns:**
101
+ - `['*']` — All skills are permitted (default). Use with caution in production.
102
+ - `['category:productivity', 'category:search']` — Only skills in the listed categories are permitted.
103
+ - `['com.framers.skill.web-search', 'com.framers.skill.calculator']` — Only the exact skill IDs listed are permitted.
104
+
105
+ **Category gating:** When `requireApprovalForNewCategories` is enabled (default: true), enabling a skill from a category not already represented among active skills returns a `requires_approval` status. This prevents the agent from silently expanding into unrelated capability areas without human consent.
106
+
107
+ **Workflow:** Search → review results → enable the best match. If the skill is in a new category, the user will be prompted for approval before it activates.
108
+
109
+ ## create_workflow
110
+
111
+ The `create_workflow` tool lets you compose multi-step tool pipelines and execute them as a unit.
112
+
113
+ **Reference resolution:** Steps can reference data from earlier in the pipeline:
114
+ - `$input` — The workflow's original input argument.
115
+ - `$prev` — The output of the immediately preceding step.
116
+ - `$steps[N]` — The output of the Nth step (zero-indexed).
117
+
118
+ **Example workflow:**
119
+ ```json
120
+ {
121
+ "action": "create",
122
+ "name": "research_and_summarize",
123
+ "steps": [
124
+ { "tool": "web_search", "args": { "query": "$input.topic" } },
125
+ { "tool": "extract_text", "args": { "url": "$prev.results[0].url" } },
126
+ { "tool": "summarize", "args": { "text": "$prev.content", "maxLength": 200 } }
127
+ ]
128
+ }
129
+ ```
130
+
131
+ **Constraints:**
132
+ - Maximum steps per workflow: configurable (default 10).
133
+ - Only tools from the `allowedTools` list may be used. Default is `['*']` (all tools).
134
+ - `create_workflow` itself is always excluded from workflow steps to prevent recursion.
135
+ - Each step execution has a 30-second timeout.
136
+
137
+ **Actions:**
138
+ - `create` — Define a new named workflow.
139
+ - `run` — Execute a previously created workflow with input.
140
+ - `list` — List all workflows created in this session.
141
+
142
+ ## self_evaluate
143
+
144
+ The `self_evaluate` tool lets you score your own responses and adjust operational parameters.
145
+
146
+ **When to self-evaluate:**
147
+ - After a complex multi-turn interaction to assess overall quality.
148
+ - When user feedback (explicit or implicit) suggests dissatisfaction.
149
+ - Periodically (every N turns) as a quality checkpoint.
150
+
151
+ **Evaluation criteria:** The tool scores responses across four dimensions: relevance, clarity, accuracy, and helpfulness.
152
+
153
+ **Auto-adjustment:** When `autoAdjust` is enabled (default: true), the evaluation model may suggest parameter changes that are then applied automatically within the current session:
154
+ - `temperature` — Adjust LLM sampling temperature for more/less creative responses on later turns in the same AgentOS session.
155
+ - `verbosity` — Shift response length preference; the preference is carried into later prompt construction for the same session.
156
+ - `personality` — Delegate trait adjustments to `adapt_personality`, either by allowing explicit trait names or by using `param: 'personality'` with `{ trait, delta }`.
157
+
158
+ **Adjustable parameters** are configured via `adjustableParams` (default: `['temperature', 'verbosity', 'personality']`). Only listed parameters can be modified. Evaluation uses the runtime's cheapest detected text model unless `evaluationModel` is set explicitly.
159
+
160
+ **Session cap:** Maximum evaluations per session is configurable (default: 10) to prevent excessive self-reflection loops.
161
+
162
+ ## Self-Improvement Workflow
163
+
164
+ The full self-improvement loop combines all four tools:
165
+
166
+ 1. **Evaluate** — Use `self_evaluate` to score recent performance. Identify specific weaknesses (e.g., "responses are too terse for this user", "missing domain knowledge for finance questions").
167
+
168
+ 2. **Adjust personality** — If the weakness maps to a personality trait, use `adapt_personality` to shift it. For example, if responses are too terse, increase the verbosity-related trait with clear reasoning.
169
+
170
+ 3. **Manage skills** — If the weakness maps to missing capabilities, use `manage_skills` to search for and enable relevant skills. For example, if finance questions are weak, search for and enable a finance-knowledge skill.
171
+
172
+ 4. **Create workflows** — For tasks that recur with a consistent pattern, use `create_workflow` to codify the multi-step process. This saves re-planning on every invocation.
173
+
174
+ 5. **Re-evaluate** — After adjustments, use `self_evaluate` again to verify improvement. If scores improved, the adjustments are reinforced. If not, consider reverting or trying a different approach.
175
+
176
+ This loop is not meant to run on every turn. Use it when you notice a pattern of suboptimal performance, not as a reflexive response to every interaction.
177
+
178
+ ## ComposableToolBuilder
179
+
180
+ For compositions of existing tools, use the ComposableToolBuilder pattern:
181
+
182
+ - **pipeline(tools[])** — Chain tools sequentially, piping each output as the next input
183
+ - **parallel(tools[])** — Run tools concurrently and merge their outputs
184
+ - **conditional(predicate, ifTool, elseTool)** — Branch based on a runtime condition
185
+ - **transform(tool, mapFn)** — Wrap a tool with an output transformation
186
+
187
+ Composed tools are registered just like forged tools, with full provenance tracking showing which base tools were combined.
188
+
189
+ ## EmergentJudge Quality Thresholds
190
+
191
+ The LLM-as-judge system uses three thresholds:
192
+
193
+ - **Correctness** (>= 0.8) — Does the output match the specification and examples?
194
+ - **Safety** (>= 0.9) — Does the tool avoid side effects, data leaks, or dangerous operations?
195
+ - **Completeness** (>= 0.7) — Does the tool handle edge cases and produce well-structured output?
196
+
197
+ If any threshold is not met, the forge attempt fails with a detailed explanation. You can revise the specification and retry. Typically, adding more examples or tightening constraints resolves most failures.
198
+
199
+ ## Audit Trail
200
+
201
+ Every forged tool carries an audit record containing:
202
+
203
+ - The original specification
204
+ - The generated source code (hash-pinned)
205
+ - Judge scores and rationale
206
+ - Timestamp and session context
207
+ - Parent tool references (for compositions)
208
+
209
+ This trail is immutable. If a user asks "how was this tool made?", you can retrieve and explain its provenance.
210
+
211
+ Personality mutations are also fully auditable: every `adapt_personality` call records the trait, delta, reasoning, baseline value, and mutated value with timestamps.
212
+
213
+ ## Best Practices
214
+
215
+ 1. **Start with examples** — Providing 2-3 input/output examples dramatically improves forge quality.
216
+ 2. **Keep tools focused** — Forge small, single-purpose tools rather than monolithic ones. Compose them later if needed.
217
+ 3. **Set constraints explicitly** — If the tool must not access the network or must produce valid JSON, state it in constraints.
218
+ 4. **Validate before relying** — After forging, test the tool with a known input before using it in a critical workflow.
219
+ 5. **Reuse forged tools** — Forged tools persist in the session registry. Check before forging a duplicate.
220
+ 6. **Name descriptively** — Good names make forged tools discoverable by other agents and future sessions.
221
+ 7. **Monitor judge feedback** — If the judge rejects a tool, read the rationale carefully. It usually pinpoints exactly what to fix.
222
+ 8. **Prefer composition** — A pipeline of three proven tools is more reliable than one complex forged tool.
223
+ 9. **Self-improve deliberately** — Use self-evaluation to identify specific weaknesses before making adjustments, not as a reflexive action.
224
+ 10. **Provide reasoning always** — Every personality mutation and skill change should have clear, specific reasoning tied to observable user signals.
225
+ 11. **Let decay work** — Don't fight the decay model. If an adaptation is genuinely valuable, it will be reinforced naturally through repeated similar adjustments.
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: endpoint-semantic
3
+ version: '1.0.0'
4
+ description: Semantic endpoint detection — uses an LLM to classify whether the user's utterance is a complete thought, reducing false turn boundaries on mid-sentence pauses.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: voice
8
+ tags: [voice, endpointing, turn-detection, semantic, llm, vad, silence]
9
+ requires_secrets: []
10
+ requires_tools: []
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F4AC"
14
+ homepage: https://docs.wunderland.sh/guides/voice
15
+ ---
16
+
17
+ # Semantic Endpoint Detector
18
+
19
+ Use this skill when the agent's default silence-based turn detection is causing false positives — triggering agent responses mid-sentence when the user pauses to think. This extension adds an LLM classifier step that distinguishes a genuine turn boundary from a thinking pause.
20
+
21
+ Prefer this over pure VAD/silence endpointing in conversational contexts where users speak with frequent mid-thought pauses, or when the user repeatedly complains that the agent "interrupts" them.
22
+
23
+ ## How It Works
24
+
25
+ 1. If the final transcript ends with `.`, `?`, or `!`, the turn ends immediately (punctuation path).
26
+ 2. Short acknowledgement phrases (`"uh huh"`, `"yeah"`, `"right"`) are classified as backchannels and suppressed.
27
+ 3. On silence without terminal punctuation, after `minSilenceBeforeCheckMs` (default 500 ms), an LLM is queried: "Is this utterance a complete thought?" Results are LRU-cached.
28
+ - `COMPLETE` → turn ends, reason `semantic_model`.
29
+ - `INCOMPLETE` → waiting continues; eventual silence timeout acts as final fallback.
30
+ - `TIMEOUT` → falls back to silence timeout.
31
+
32
+ ## Configuration
33
+
34
+ ```json
35
+ {
36
+ "voice": {
37
+ "endpointing": "semantic",
38
+ "endpointingOptions": {
39
+ "model": "gpt-4o-mini",
40
+ "timeoutMs": 500,
41
+ "minSilenceBeforeCheckMs": 500,
42
+ "silenceTimeoutMs": 2000
43
+ }
44
+ }
45
+ }
46
+ ```
47
+
48
+ ## Provider Rules
49
+
50
+ - Use `gpt-4o-mini` (or equivalent cheap small model) for the classifier — latency matters more than quality for this binary decision.
51
+ - Keep `timeoutMs` under 600 ms to avoid adding noticeable lag to the turn boundary.
52
+ - Increase `silenceTimeoutMs` for users who speak slowly or pause frequently.
53
+ - Reduce `minSilenceBeforeCheckMs` to 300 ms for faster-paced conversations.
54
+
55
+ ## Events
56
+
57
+ | Event | Description |
58
+ |------------------------|--------------------------------------------------------------------------|
59
+ | `turn_complete` | User turn ended; `reason` is `punctuation`, `semantic_model`, or `silence_timeout` |
60
+ | `backchannel_detected` | A backchannel phrase was recognised; accumulation suppressed |
61
+
62
+ ## Examples
63
+
64
+ - "Use semantic endpoint detection to avoid cutting me off mid-thought."
65
+ - "Enable smarter turn detection for this conversational voice session."
66
+ - "Configure the endpoint detector to wait longer before deciding I'm done speaking."
67
+
68
+ ## Constraints
69
+
70
+ - Requires an LLM provider to be configured in the runtime for the classifier calls.
71
+ - LLM calls add latency at turn boundaries. Use a small, fast model to minimize this.
72
+ - The LRU cache (keyed on first 100 characters) reduces repeated LLM calls for identical short utterances.
@@ -0,0 +1,94 @@
1
+ ---
2
+ name: facebook-bot
3
+ version: '1.0.0'
4
+ description: Facebook automation — community engagement, page management, visual content publishing, and audience growth.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: social-automation
8
+ tags: [facebook, social-media, community, pages, groups, visual-content, automation]
9
+ requires_secrets: [facebook.accessToken]
10
+ requires_tools: [facebookPost, facebookComment, facebookLike, facebookShare, facebookSearch, facebookAnalytics, facebookSchedule, facebookPagePost]
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F4F1"
14
+ primaryEnv: FACEBOOK_ACCESS_TOKEN
15
+ ---
16
+
17
+ # Facebook Bot
18
+
19
+ You are an autonomous Facebook community engagement agent. You manage a professional Facebook presence — publishing engaging visual content, managing pages and groups, fostering community interaction, and growing your audience through authentic engagement.
20
+
21
+ ## Core Capabilities
22
+
23
+ - **Post to pages** — text, photos, videos, links, and albums via `facebookPagePost`
24
+ - **Personal posts** — share updates to your profile feed
25
+ - **Comment** on posts with engaging, relevant responses
26
+ - **Like and react** to content aligned with your brand
27
+ - **Share** content with commentary to expand reach
28
+ - **Search** — find relevant pages, groups, and conversations
29
+ - **Schedule** — plan posts for optimal publishing times
30
+ - **Analytics** — track reach, engagement, and page insights
31
+
32
+ ## Content Strategy
33
+
34
+ 1. **Prioritize visual content** — posts with photos and video get 2-3x more engagement
35
+ 2. **Video-first approach** — native video outperforms all other content types
36
+ 3. **Post 1-3 times per day** on pages — over-posting kills organic reach
37
+ 4. **Engage in comments** — respond to every comment within 2 hours
38
+ 5. **Use Facebook Stories** for ephemeral behind-the-scenes content
39
+ 6. **Go Live** for events, Q&As, and real-time engagement
40
+ 7. **Post at peak times** — weekdays 1-4pm, weekends 12-1pm
41
+
42
+ ## Content Types
43
+
44
+ - **Photo posts**: High-quality images with captions (single or album)
45
+ - **Video posts**: Native uploads (1-3 min optimal, subtitled)
46
+ - **Link posts**: Share articles with custom preview text
47
+ - **Text posts**: Short status updates for high engagement
48
+ - **Reels**: Short-form video (15-90 seconds)
49
+ - **Stories**: Ephemeral 24-hour visual content
50
+ - **Polls**: Engage community with interactive questions
51
+ - **Events**: Create and promote events
52
+
53
+ ## Engagement Rules
54
+
55
+ - **Be conversational** — Facebook rewards genuine two-way dialogue
56
+ - **Ask questions** — posts with questions get 100% more comments
57
+ - **Use calls-to-action** — tell people what to do (comment, share, click)
58
+ - **Respond to comments** — even a simple acknowledgment boosts visibility
59
+ - **Don't bait engagement** — avoid "like if you agree" style posts
60
+ - **Build community** — foster discussions, not broadcasts
61
+
62
+ ## Page Management
63
+
64
+ - **Complete your page info** — about, hours, contact, category
65
+ - **Pin important posts** — feature key announcements at the top
66
+ - **Use page tabs** — organize content (shop, services, reviews)
67
+ - **Manage reviews** — respond to all reviews professionally
68
+ - **Monitor inbox** — reply to messages promptly
69
+
70
+ ## Personality Guidelines
71
+
72
+ - Stay in character — your HEXACO traits should influence your community tone
73
+ - High Openness agents: share diverse content, explore trending topics
74
+ - High Agreeableness agents: be warm and supportive, celebrate community wins
75
+ - Low Agreeableness agents: challenge ideas constructively, spark healthy debate
76
+ - High Conscientiousness agents: provide thorough, well-researched content
77
+
78
+ ## Safety Limits
79
+
80
+ - Maximum 5 page posts per day
81
+ - Maximum 25 comments per hour
82
+ - Minimum 30 seconds between actions
83
+ - Don't post more than 3 link posts per day (reduces organic reach)
84
+ - Follow Facebook Community Standards
85
+ - Don't use engagement bait tactics
86
+ - Vary your content types and engagement patterns
87
+
88
+ ## Workflow
89
+
90
+ 1. **Discover** — Search for trending topics and relevant community discussions
91
+ 2. **Evaluate** — Score each opportunity for relevance and engagement potential
92
+ 3. **Engage** — Comment, react, or share based on evaluation
93
+ 4. **Create** — Publish original visual content on schedule
94
+ 5. **Analyze** — Review reach, engagement rate, and audience growth
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: git
3
+ version: '1.0.0'
4
+ description: Work with Git repositories from the command line.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: developer-tools
8
+ tags: [git, version-control, vcs, branching, commits]
9
+ requires_secrets: []
10
+ requires_tools: [filesystem]
11
+ metadata:
12
+ agentos:
13
+ emoji: '🧰'
14
+ requires:
15
+ bins: ['git']
16
+ install:
17
+ - id: brew
18
+ kind: brew
19
+ formula: git
20
+ bins: ['git']
21
+ label: 'Install git (brew)'
22
+ - id: apt
23
+ kind: apt
24
+ package: git
25
+ bins: ['git']
26
+ os: ['linux']
27
+ label: 'Install git (apt)'
28
+ ---
29
+
30
+ # Git
31
+
32
+ Use `git` to inspect history, create branches, commit changes, and resolve conflicts.
33
+
34
+ ## Common workflows
35
+
36
+ - Check status: `git status`
37
+ - Create a branch: `git checkout -b my-branch`
38
+ - Stage + commit: `git add -A && git commit -m "message"`
39
+ - Rebase: `git rebase -i origin/main`
40
+
41
+ ## GitHub Integration
42
+
43
+ After making local commits with git, use the GitHub tools to push your work upstream and open pull requests:
44
+
45
+ - **Create a remote branch** — Use `github_branch_create` to create a branch on the remote from a given SHA. Get the SHA from your local HEAD with `git rev-parse HEAD`, then create the matching remote branch.
46
+ - **Open a pull request** — Use `github_pr_create` to open a PR from your feature branch to the default branch, with a clear title and description summarizing the changes.
47
+ - **Full GitHub API operations** — The `github` skill provides 26 tools covering PR review, merge, issue triage, release management, Actions CI/CD, and more. Reference it for anything beyond local git operations.
48
+
49
+ **Division of responsibility:** Use `git` for local operations (staging, committing, branching, rebasing, diffing, log inspection) and the `github_*` tools for remote API operations (creating PRs, reviewing code, managing issues, triggering workflows). The two complement each other — git handles your local working copy while the GitHub tools interact with the hosted platform.
@@ -0,0 +1,142 @@
1
+ ---
2
+ name: github
3
+ version: '2.0.0'
4
+ description: Full GitHub API integration — 26 tools for repos, issues, PRs, branches, commits, releases, Actions, files, gists, and codebase indexing.
5
+ author: Wunderland
6
+ namespace: wunderland
7
+ category: developer
8
+ tags: [github, git, repository, issues, pull-requests, code-review, ci-cd, releases, actions, api]
9
+ requires_secrets: [github.token]
10
+ requires_tools: [github_search, github_repo_list, github_repo_info, github_repo_create, github_repo_index, github_file_read, github_file_write, github_gist_create, github_issue_list, github_issue_create, github_issue_update, github_comment_list, github_pr_list, github_pr_create, github_pr_diff, github_pr_review, github_pr_merge, github_pr_comment_list, github_pr_comment_create, github_branch_list, github_branch_create, github_commit_list, github_release_list, github_release_create, github_actions_list, github_actions_trigger]
11
+ metadata:
12
+ agentos:
13
+ emoji: "\U0001F4BB"
14
+ ---
15
+
16
+ # GitHub
17
+
18
+ You have **26 GitHub tools** that cover the full developer workflow: searching code, managing repositories, reading and writing files, triaging issues, reviewing and merging pull requests, creating releases, and orchestrating CI/CD pipelines. These tools call the GitHub REST API directly — no CLI binary required.
19
+
20
+ ## Available Tools
21
+
22
+ | Tool | Description | Mode |
23
+ |------|-------------|------|
24
+ | `github_search` | Search repositories, code, issues, and users across GitHub | read |
25
+ | `github_repo_list` | List repositories for a user or organization | read |
26
+ | `github_repo_info` | Get detailed metadata for a single repository | read |
27
+ | `github_repo_create` | Create a new repository (public or private) | write |
28
+ | `github_repo_index` | Embed an entire repository into the knowledge base for RAG queries | write |
29
+ | `github_file_read` | Read a file or directory listing from a repo at a given ref | read |
30
+ | `github_file_write` | Create or update a file in a repository (commit directly) | write |
31
+ | `github_gist_create` | Create a new GitHub Gist (public or secret) | write |
32
+ | `github_issue_list` | List and filter issues by state, labels, assignee, milestone | read |
33
+ | `github_issue_create` | Open a new issue with title, body, labels, and assignees | write |
34
+ | `github_issue_update` | Update an issue's title, body, state, labels, or assignees | write |
35
+ | `github_comment_list` | List comments on an issue | read |
36
+ | `github_pr_list` | List pull requests filtered by state, head, base, or author | read |
37
+ | `github_pr_create` | Open a new pull request from a head branch to a base branch | write |
38
+ | `github_pr_diff` | Get the unified diff of a pull request | read |
39
+ | `github_pr_review` | Submit a review (approve, request changes, or comment) with inline comments | write |
40
+ | `github_pr_merge` | Merge a pull request (merge, squash, or rebase strategy) | write |
41
+ | `github_pr_comment_list` | List review comments on a pull request | read |
42
+ | `github_pr_comment_create` | Post a new review comment on a pull request diff | write |
43
+ | `github_branch_list` | List branches in a repository | read |
44
+ | `github_branch_create` | Create a new branch from a given SHA or ref | write |
45
+ | `github_commit_list` | List commits on a branch, path, or date range | read |
46
+ | `github_release_list` | List releases for a repository | read |
47
+ | `github_release_create` | Create a new release with tag, name, body, and asset uploads | write |
48
+ | `github_actions_list` | List workflow runs, filtered by workflow, branch, or status | read |
49
+ | `github_actions_trigger` | Trigger a workflow_dispatch event on a workflow | write |
50
+
51
+ ## Workflow: Repository Exploration
52
+
53
+ Discover and navigate repositories step by step:
54
+
55
+ 1. **List repos** — `github_repo_list` with an owner to see all their repositories.
56
+ 2. **Get details** — `github_repo_info` for the target repo (description, default branch, language, open issues count, license).
57
+ 3. **Browse the tree** — `github_file_read` with path `/` to get the root directory listing, then drill into subdirectories.
58
+ 4. **Read specific files** — `github_file_read` with the full file path to read README, source files, configs, etc.
59
+
60
+ When exploring an unfamiliar project, start with the README and package manifests (package.json, Cargo.toml, pyproject.toml) to understand the stack before diving into source code.
61
+
62
+ ## Workflow: Codebase Deep-Dive
63
+
64
+ For large repositories where you need to answer questions across many files:
65
+
66
+ 1. **Index the repo** — `github_repo_index` embeds the entire codebase (or a filtered subset) into the knowledge base. This may take a moment for large repos.
67
+ 2. **Ask questions** — Once indexed, answer questions using RAG retrieval against the embedded codebase. This is far more efficient than reading files one by one.
68
+
69
+ Use this workflow when the user asks broad questions like "how does authentication work in this project?" or "find all usages of the database connection pool."
70
+
71
+ ## Workflow: Code Contribution
72
+
73
+ Make changes to a repository through the API:
74
+
75
+ 1. **Create a branch** — `github_branch_create` from the default branch HEAD (get the SHA from `github_repo_info` or `github_commit_list`).
76
+ 2. **Write files** — `github_file_write` to create or update files on the new branch. Each call creates a commit. For multiple file changes, make sequential writes to the same branch.
77
+ 3. **Open a PR** — `github_pr_create` with a clear title, detailed body describing the changes, and the head/base branches.
78
+
79
+ Always create feature branches rather than committing directly to the default branch.
80
+
81
+ ## Workflow: PR Review
82
+
83
+ Review pull requests with specific, actionable feedback:
84
+
85
+ 1. **Read the diff** — `github_pr_diff` to get the full unified diff of the PR.
86
+ 2. **Read changed files** — `github_file_read` for files that need full context beyond the diff hunks.
87
+ 3. **Submit a review** — `github_pr_review` with an event (APPROVE, REQUEST_CHANGES, or COMMENT) and inline comments referencing specific lines in the diff.
88
+
89
+ When reviewing, focus on correctness, security implications, test coverage, and adherence to project conventions. Reference specific line numbers in your inline comments.
90
+
91
+ ## Workflow: Issue Triage
92
+
93
+ Organize and manage the issue backlog:
94
+
95
+ 1. **List issues** — `github_issue_list` filtered by state, labels, or milestone to see what needs attention.
96
+ 2. **Read context** — `github_comment_list` on an issue to understand the full discussion.
97
+ 3. **Update issues** — `github_issue_update` to add labels (bug, enhancement, priority), assign team members, link to milestones, or close resolved issues.
98
+ 4. **Create issues** — `github_issue_create` when you identify new work items, bugs, or feature requests.
99
+
100
+ When triaging, check for duplicate issues first using `github_search` before creating new ones.
101
+
102
+ ## Workflow: Release Management
103
+
104
+ Cut releases with proper versioning and changelogs:
105
+
106
+ 1. **Review commits** — `github_commit_list` to see what has landed since the last release.
107
+ 2. **Create the release** — `github_release_create` with a semantic version tag, a descriptive name, and release notes summarizing the changes.
108
+
109
+ Use conventional commit messages or the auto-generated notes feature to build changelogs. Tag format should follow the project's convention (e.g., `v1.2.0` or `1.2.0`).
110
+
111
+ ## Workflow: CI/CD
112
+
113
+ Monitor and trigger GitHub Actions workflows:
114
+
115
+ 1. **List runs** — `github_actions_list` filtered by workflow name, branch, or status to check the current state of CI.
116
+ 2. **Trigger a workflow** — `github_actions_trigger` to kick off a workflow_dispatch event, optionally passing input parameters.
117
+ 3. **Poll for completion** — `github_actions_list` again after triggering, filtering by the run ID or branch, to monitor progress until the run completes.
118
+
119
+ When a workflow fails, use `github_actions_list` to identify the failing run, then investigate the related commits and PR for debugging context.
120
+
121
+ ## Safety Rules
122
+
123
+ - **Confirm before write operations** — Always confirm with the user before creating repos, writing files, merging PRs, creating releases, or triggering workflows.
124
+ - **Check branch protection** — Before writing files or merging, be aware that protected branches may reject direct pushes. Use feature branches and PRs instead.
125
+ - **Never force-push** — These tools do not support force-push, and you should never attempt destructive history rewrites through the API.
126
+ - **Rate limit awareness** — Authenticated requests are limited to 5,000/hour. For bulk operations (indexing, large searches), be mindful of consumption. The tools will return rate limit headers when approaching the threshold.
127
+ - **Destructive actions are irreversible** — Deleting branches, closing issues, and merging PRs cannot be undone through these tools. Double-check before proceeding.
128
+
129
+ ## Authentication
130
+
131
+ The GitHub tools authenticate using a personal access token from one of these sources, checked in order:
132
+
133
+ 1. `GITHUB_TOKEN` environment variable
134
+ 2. `GH_TOKEN` environment variable
135
+ 3. `gh auth token` CLI fallback (if `gh` is installed and authenticated)
136
+
137
+ **Required scopes:**
138
+ - `repo` — full access to private repositories (read/write code, issues, PRs, releases, Actions)
139
+ - `public_repo` — sufficient if you only work with public repositories
140
+ - `gist` — needed for `github_gist_create`
141
+
142
+ To create a token, visit [github.com/settings/tokens](https://github.com/settings/tokens) and select the scopes above. Fine-grained tokens scoped to specific repositories are recommended for production use.