Guides
Share Skills and Tools
Share skills and custom tools with other Kyew users. The recipient gets a copy they can accept, and shared tools remain portable across different connections.
What Can Be Shared
| Shareable | Not Shareable |
|---|---|
| Skills | Connections |
| Custom tools | Memories |
| Sessions |
Connections are intentionally excluded. Each user creates their own connections with their own credentials. This keeps secrets isolated while still allowing tools to be portable (see How Connections Work with Shared Tools below).
Sharing a Skill
Share a skill with another Kyew user by email. Include setup instructions so the recipient knows what to expect:
system(action="share",
skill_id="skill_abc123",
shared_with="[email protected]",
setup_instructions="This skill generates weekly status reports. It works best when you have memories about your team's processes.")
The recipient gets notified and can review the skill before accepting.
Sharing a Tool
Share a custom tool the same way:
system(action="share",
tool_id="tool_def456",
shared_with="[email protected]",
setup_instructions="This tool creates GitHub issues from a template. Create a connection named 'github' with a bearer token before using it.")
Include connection setup in instructions
If your tool depends on connections, tell the recipient which connections to create and what to name them. The connection name determines the environment variable, so the name must match for the tool to work.
Accepting a Share
When someone shares something with you, accept it to add it to your account:
system(action="accept_share", share_id="share_xyz789")
The skill or tool is copied to your account. You own your copy and can modify it independently.
Declining a Share
If you don't want what's being shared:
system(action="decline_share", share_id="share_xyz789")
Managing Your Shares
See What You've Shared
system(action="list_shares", direction="shared_by_me")
Shows every skill and tool you've shared, who you shared it with, and whether they've accepted.
See What's Been Shared With You
system(action="list_shares", direction="shared_with_me")
Shows pending shares waiting for your response, plus previously accepted or declined shares.
Revoke a Share
Take back a share you've sent (before or after acceptance):
system(action="revoke_share", share_id="share_xyz789")
How Connections Work with Shared Tools
When you share a tool that uses connections, the recipient needs to create their own connections with matching names. Here's why this works:
Code tools read connection credentials through environment variables like KYEW_CONN_GITHUB_AUTH_HEADER. The variable name is derived from the connection name, not the connection ID. So if your tool uses a connection named github, the recipient just needs to:
- Create their own connection:
connection(action="create", name="github", ...) - Enter their own credentials via
secret_url - The shared tool works with their credentials
This means tools are portable. The same tool works for different users with different GitHub accounts, different API keys, etc.
Example Workflow
You (the sharer):
# Your connection
connection(action="create", name="github", provider="github", auth_type="bearer")
# Your tool that uses it
tool(action="create",
name="pr_reviewer",
tool_type="code",
code_config={ connection_ids: ["conn_yours"], code: "..." })
# Share the tool
system(action="share",
tool_id="tool_pr_reviewer",
shared_with="[email protected]",
setup_instructions="Create a 'github' bearer connection with repo access.")
Teammate (the recipient):
# Accept the share
system(action="accept_share", share_id="share_abc123")
# Create their own github connection
connection(action="create", name="github", provider="github", auth_type="bearer")
connection(action="secret_url", connection_id="conn_theirs")
# The tool now works with their GitHub token
Next Steps
- system Reference — Complete parameter reference for share actions
- Connect a Service — Set up connections for shared tools