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

ShareableNot Shareable
SkillsConnections
Custom toolsMemories
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:

  1. Create their own connection: connection(action="create", name="github", ...)
  2. Enter their own credentials via secret_url
  3. 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

Previous
Use a Database in Code Tools