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