swarm-agent 0.1.0__tar.gz

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 (174) hide show
  1. swarm_agent-0.1.0/.dockerignore +26 -0
  2. swarm_agent-0.1.0/.github/workflows/ci.yml +41 -0
  3. swarm_agent-0.1.0/.gitignore +50 -0
  4. swarm_agent-0.1.0/.pre-commit-config.yaml +7 -0
  5. swarm_agent-0.1.0/CHANGELOG.md +67 -0
  6. swarm_agent-0.1.0/CODE_OF_CONDUCT.md +49 -0
  7. swarm_agent-0.1.0/CONTRIBUTING.md +85 -0
  8. swarm_agent-0.1.0/LICENSE +21 -0
  9. swarm_agent-0.1.0/PKG-INFO +377 -0
  10. swarm_agent-0.1.0/README.md +338 -0
  11. swarm_agent-0.1.0/SECURITY.md +68 -0
  12. swarm_agent-0.1.0/agent/__init__.py +19 -0
  13. swarm_agent-0.1.0/agent/context.py +306 -0
  14. swarm_agent-0.1.0/agent/loop.py +1039 -0
  15. swarm_agent-0.1.0/agent/runner.py +394 -0
  16. swarm_agent-0.1.0/agent/subagent.py +190 -0
  17. swarm_agent-0.1.0/auth/__init__.py +5 -0
  18. swarm_agent-0.1.0/auth/callback_server.py +132 -0
  19. swarm_agent-0.1.0/auth/middleware.py +62 -0
  20. swarm_agent-0.1.0/auth/oauth.py +145 -0
  21. swarm_agent-0.1.0/auth/token_store.py +109 -0
  22. swarm_agent-0.1.0/bus/__init__.py +5 -0
  23. swarm_agent-0.1.0/bus/queue.py +85 -0
  24. swarm_agent-0.1.0/cli/__init__.py +1 -0
  25. swarm_agent-0.1.0/cli/chat.py +84 -0
  26. swarm_agent-0.1.0/cli/main.py +201 -0
  27. swarm_agent-0.1.0/cli/stream.py +35 -0
  28. swarm_agent-0.1.0/config/__init__.py +5 -0
  29. swarm_agent-0.1.0/config/loader.py +77 -0
  30. swarm_agent-0.1.0/config/paths.py +59 -0
  31. swarm_agent-0.1.0/config/schema.py +120 -0
  32. swarm_agent-0.1.0/config.yaml.example +130 -0
  33. swarm_agent-0.1.0/cron/__init__.py +6 -0
  34. swarm_agent-0.1.0/cron/jobs/__init__.py +1 -0
  35. swarm_agent-0.1.0/cron/parser.py +289 -0
  36. swarm_agent-0.1.0/cron/scheduler.py +103 -0
  37. swarm_agent-0.1.0/cron/store.py +72 -0
  38. swarm_agent-0.1.0/delivery/__init__.py +5 -0
  39. swarm_agent-0.1.0/delivery/delivery.py +150 -0
  40. swarm_agent-0.1.0/docker/Dockerfile +43 -0
  41. swarm_agent-0.1.0/docker/docker-compose.yml +30 -0
  42. swarm_agent-0.1.0/docker/entrypoint.sh +26 -0
  43. swarm_agent-0.1.0/docs/architecture.md +264 -0
  44. swarm_agent-0.1.0/docs/auth.md +118 -0
  45. swarm_agent-0.1.0/docs/configuration.md +266 -0
  46. swarm_agent-0.1.0/docs/deployment.md +226 -0
  47. swarm_agent-0.1.0/docs/feishu-setup.md +108 -0
  48. swarm_agent-0.1.0/docs/logging.md +171 -0
  49. swarm_agent-0.1.0/docs/plugins.md +166 -0
  50. swarm_agent-0.1.0/docs/quickstart.md +110 -0
  51. swarm_agent-0.1.0/docs/skills.md +138 -0
  52. swarm_agent-0.1.0/docs/superpowers/plans/2026-06-06-swarm-framework-plan.md +4947 -0
  53. swarm_agent-0.1.0/docs/superpowers/specs/2026-06-06-swarm-framework-design.md +999 -0
  54. swarm_agent-0.1.0/docs/tools.md +153 -0
  55. swarm_agent-0.1.0/events/__init__.py +5 -0
  56. swarm_agent-0.1.0/events/bus.py +139 -0
  57. swarm_agent-0.1.0/events/subscribers/__init__.py +6 -0
  58. swarm_agent-0.1.0/events/subscribers/logging.py +21 -0
  59. swarm_agent-0.1.0/events/subscribers/metrics.py +59 -0
  60. swarm_agent-0.1.0/examples/basic-bot/README.md +36 -0
  61. swarm_agent-0.1.0/examples/basic-bot/SOUL.md +14 -0
  62. swarm_agent-0.1.0/examples/custom-tool/README.md +38 -0
  63. swarm_agent-0.1.0/examples/custom-tool/my_tools.py +61 -0
  64. swarm_agent-0.1.0/gateway/__init__.py +1 -0
  65. swarm_agent-0.1.0/gateway/feishu_actions.py +139 -0
  66. swarm_agent-0.1.0/gateway/feishu_events.py +207 -0
  67. swarm_agent-0.1.0/gateway/feishu_media.py +92 -0
  68. swarm_agent-0.1.0/gateway/feishu_message.py +105 -0
  69. swarm_agent-0.1.0/gateway/feishu_reply.py +296 -0
  70. swarm_agent-0.1.0/gateway/feishu_streaming.py +186 -0
  71. swarm_agent-0.1.0/gateway/feishu_token.py +53 -0
  72. swarm_agent-0.1.0/gateway/feishu_ws.py +422 -0
  73. swarm_agent-0.1.0/logging_/__init__.py +12 -0
  74. swarm_agent-0.1.0/logging_/handlers.py +80 -0
  75. swarm_agent-0.1.0/logging_/setup.py +96 -0
  76. swarm_agent-0.1.0/logging_/trace.py +41 -0
  77. swarm_agent-0.1.0/mcp/__init__.py +6 -0
  78. swarm_agent-0.1.0/mcp/client.py +178 -0
  79. swarm_agent-0.1.0/mcp/server.py +36 -0
  80. swarm_agent-0.1.0/memory/__init__.py +15 -0
  81. swarm_agent-0.1.0/memory/compressor.py +148 -0
  82. swarm_agent-0.1.0/memory/dream.py +201 -0
  83. swarm_agent-0.1.0/memory/knowledge_graph.py +176 -0
  84. swarm_agent-0.1.0/memory/recall.py +43 -0
  85. swarm_agent-0.1.0/memory/short_term.py +99 -0
  86. swarm_agent-0.1.0/memory/store.py +100 -0
  87. swarm_agent-0.1.0/plugins/__init__.py +5 -0
  88. swarm_agent-0.1.0/plugins/loader.py +140 -0
  89. swarm_agent-0.1.0/plugins/protocol.py +53 -0
  90. swarm_agent-0.1.0/providers/__init__.py +13 -0
  91. swarm_agent-0.1.0/providers/anthropic.py +345 -0
  92. swarm_agent-0.1.0/providers/base.py +76 -0
  93. swarm_agent-0.1.0/providers/factory.py +51 -0
  94. swarm_agent-0.1.0/providers/fallback.py +58 -0
  95. swarm_agent-0.1.0/providers/openai_compat.py +291 -0
  96. swarm_agent-0.1.0/providers/retry.py +100 -0
  97. swarm_agent-0.1.0/providers/token_counter.py +44 -0
  98. swarm_agent-0.1.0/pyproject.toml +78 -0
  99. swarm_agent-0.1.0/session/__init__.py +5 -0
  100. swarm_agent-0.1.0/session/continuation.py +15 -0
  101. swarm_agent-0.1.0/session/goal_state.py +16 -0
  102. swarm_agent-0.1.0/session/manager.py +187 -0
  103. swarm_agent-0.1.0/skills/__init__.py +1 -0
  104. swarm_agent-0.1.0/skills/loader.py +175 -0
  105. swarm_agent-0.1.0/skills_builtin/base-assistant/SKILL.md +45 -0
  106. swarm_agent-0.1.0/skills_builtin/calendar/SKILL.md +42 -0
  107. swarm_agent-0.1.0/skills_builtin/code-review/SKILL.md +59 -0
  108. swarm_agent-0.1.0/skills_builtin/customer-support/SKILL.md +58 -0
  109. swarm_agent-0.1.0/skills_builtin/data-analysis/SKILL.md +66 -0
  110. swarm_agent-0.1.0/skills_builtin/feishu-docs/SKILL.md +65 -0
  111. swarm_agent-0.1.0/skills_builtin/meeting-notes/SKILL.md +78 -0
  112. swarm_agent-0.1.0/skills_builtin/reminder/SKILL.md +54 -0
  113. swarm_agent-0.1.0/skills_builtin/summary/SKILL.md +55 -0
  114. swarm_agent-0.1.0/skills_builtin/translator/SKILL.md +47 -0
  115. swarm_agent-0.1.0/state/__init__.py +1 -0
  116. swarm_agent-0.1.0/state/migration.py +45 -0
  117. swarm_agent-0.1.0/state/snapshot.py +66 -0
  118. swarm_agent-0.1.0/state/store.py +117 -0
  119. swarm_agent-0.1.0/tests/__init__.py +1 -0
  120. swarm_agent-0.1.0/tests/conftest.py +45 -0
  121. swarm_agent-0.1.0/tests/test_agent.py +128 -0
  122. swarm_agent-0.1.0/tests/test_auth.py +52 -0
  123. swarm_agent-0.1.0/tests/test_bus.py +52 -0
  124. swarm_agent-0.1.0/tests/test_cli_commands.py +115 -0
  125. swarm_agent-0.1.0/tests/test_compressor.py +71 -0
  126. swarm_agent-0.1.0/tests/test_concurrency.py +129 -0
  127. swarm_agent-0.1.0/tests/test_config.py +62 -0
  128. swarm_agent-0.1.0/tests/test_context.py +96 -0
  129. swarm_agent-0.1.0/tests/test_cron.py +169 -0
  130. swarm_agent-0.1.0/tests/test_delivery.py +87 -0
  131. swarm_agent-0.1.0/tests/test_discovery.py +47 -0
  132. swarm_agent-0.1.0/tests/test_dream.py +112 -0
  133. swarm_agent-0.1.0/tests/test_edge_cases.py +180 -0
  134. swarm_agent-0.1.0/tests/test_events.py +87 -0
  135. swarm_agent-0.1.0/tests/test_feishu_events.py +151 -0
  136. swarm_agent-0.1.0/tests/test_feishu_message.py +47 -0
  137. swarm_agent-0.1.0/tests/test_feishu_reply.py +163 -0
  138. swarm_agent-0.1.0/tests/test_feishu_streaming.py +90 -0
  139. swarm_agent-0.1.0/tests/test_integration.py +694 -0
  140. swarm_agent-0.1.0/tests/test_mcp.py +119 -0
  141. swarm_agent-0.1.0/tests/test_memory_advanced.py +91 -0
  142. swarm_agent-0.1.0/tests/test_memory_store.py +124 -0
  143. swarm_agent-0.1.0/tests/test_permissions.py +61 -0
  144. swarm_agent-0.1.0/tests/test_plugins.py +147 -0
  145. swarm_agent-0.1.0/tests/test_providers_deep.py +201 -0
  146. swarm_agent-0.1.0/tests/test_recall.py +105 -0
  147. swarm_agent-0.1.0/tests/test_schema_tools.py +98 -0
  148. swarm_agent-0.1.0/tests/test_serialization.py +169 -0
  149. swarm_agent-0.1.0/tests/test_session.py +77 -0
  150. swarm_agent-0.1.0/tests/test_skills.py +111 -0
  151. swarm_agent-0.1.0/tests/test_state.py +128 -0
  152. swarm_agent-0.1.0/tests/test_subagent.py +137 -0
  153. swarm_agent-0.1.0/tests/test_token_store.py +140 -0
  154. swarm_agent-0.1.0/tests/test_tools.py +75 -0
  155. swarm_agent-0.1.0/tools/__init__.py +7 -0
  156. swarm_agent-0.1.0/tools/base.py +46 -0
  157. swarm_agent-0.1.0/tools/builtin/__init__.py +1 -0
  158. swarm_agent-0.1.0/tools/builtin/cron.py +92 -0
  159. swarm_agent-0.1.0/tools/builtin/file.py +88 -0
  160. swarm_agent-0.1.0/tools/builtin/message.py +115 -0
  161. swarm_agent-0.1.0/tools/builtin/system.py +31 -0
  162. swarm_agent-0.1.0/tools/builtin/web_fetch.py +97 -0
  163. swarm_agent-0.1.0/tools/builtin/web_search.py +93 -0
  164. swarm_agent-0.1.0/tools/discovery.py +83 -0
  165. swarm_agent-0.1.0/tools/permission.py +60 -0
  166. swarm_agent-0.1.0/tools/registry.py +76 -0
  167. swarm_agent-0.1.0/tools/schema.py +70 -0
  168. swarm_agent-0.1.0/utils/__init__.py +16 -0
  169. swarm_agent-0.1.0/utils/helpers.py +13 -0
  170. swarm_agent-0.1.0/utils/media.py +25 -0
  171. swarm_agent-0.1.0/utils/template.py +13 -0
  172. swarm_agent-0.1.0/utils/text.py +28 -0
  173. swarm_agent-0.1.0/utils/tokens.py +74 -0
  174. swarm_agent-0.1.0/version.py +10 -0
@@ -0,0 +1,26 @@
1
+ # Python
2
+ __pycache__/
3
+ *.pyc
4
+ .venv/
5
+ *.egg-info/
6
+
7
+ # Git
8
+ .git/
9
+
10
+ # IDE
11
+ .vscode/
12
+ .idea/
13
+
14
+ # Reference projects (large)
15
+ _ref/
16
+
17
+ # Test/output artifacts
18
+ .pytest_cache/
19
+ htmlcov/
20
+ *.zip
21
+
22
+ # Config (mounted at runtime)
23
+ config.yaml
24
+
25
+ # Data directories
26
+ data/
@@ -0,0 +1,41 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - uses: actions/setup-python@v5
19
+ with:
20
+ python-version: ${{ matrix.python-version }}
21
+
22
+ - name: Install dependencies
23
+ run: |
24
+ python -m pip install --upgrade pip
25
+ pip install -e ".[dev]"
26
+
27
+ - name: Lint
28
+ run: ruff check .
29
+
30
+ - name: Format check
31
+ run: ruff format --check .
32
+
33
+ - name: Test
34
+ run: pytest tests/ -v --cov=. --cov-report=term --cov-report=xml
35
+
36
+ - name: Upload coverage
37
+ uses: codecov/codecov-action@v4
38
+ with:
39
+ file: ./coverage.xml
40
+ flags: unittests
41
+ name: codecov-${{ matrix.python-version }}
@@ -0,0 +1,50 @@
1
+ # Bytecode
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+
6
+ # Build
7
+ dist/
8
+ build/
9
+
10
+ # Virtual environments
11
+ .venv/
12
+ venv/
13
+ .env
14
+
15
+ # IDE
16
+ .vscode/
17
+ .idea/
18
+
19
+ # OS
20
+ .DS_Store
21
+ Thumbs.db
22
+
23
+ # Configuration (contains secrets)
24
+ config.yaml
25
+
26
+ # Data directories
27
+ data/
28
+ *.db
29
+ *.db-journal
30
+ *.db-wal
31
+
32
+ # Logs
33
+ *.log
34
+ *.log.gz
35
+
36
+ # Test artifacts
37
+ .pytest_cache/
38
+ .coverage
39
+ htmlcov/
40
+ .ruff_cache/
41
+
42
+ # Misc
43
+ *.swp
44
+ *.swo
45
+ *~
46
+ # Claude Code / IDE session data
47
+ .claude/
48
+ .opencode/
49
+ .superpowers/
50
+ .agents/
@@ -0,0 +1,7 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ rev: v0.5.0
4
+ hooks:
5
+ - id: ruff
6
+ args: [--fix]
7
+ - id: ruff-format
@@ -0,0 +1,67 @@
1
+ # Changelog
2
+
3
+ All notable changes to Swarm will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.1.0] — 2026-06-07
9
+
10
+ ### Added
11
+ - Initial release of Swarm framework
12
+ - 5-state AgentLoop (RESTORE → BUILD → RUN → SAVE → RESPOND)
13
+ - Immutable RequestContext for concurrency-safe multi-tenant isolation
14
+ - Per-chat_id asyncio.Lock for serial session processing
15
+ - ChromaDB vector memory with per-chat_id collections
16
+ - SQLite short-term message store
17
+ - Dream two-phase memory consolidation (LLM extraction + vector storage)
18
+ - Context compressor with trajectory-preserving truncation
19
+ - Knowledge graph for cross-session entity relationships
20
+ - Hybrid memory recall (vector similarity + time decay + importance)
21
+ - Feishu WebSocket long connection support
22
+ - Full Feishu message type parser (text, post, image, audio, file, sticker, interactive, share_chat, merge_forward)
23
+ - CardKit streaming output engine
24
+ - Interactive card action handling
25
+ - Feishu OAuth 2.0 user authorization flow
26
+ - AES-256-GCM encrypted token storage with auto-refresh
27
+ - User identity injection for tool operations
28
+ - Async message bus (asyncio.Queue)
29
+ - OpenAI-compatible provider (supports vLLM, Ollama, custom endpoints)
30
+ - Anthropic provider (supports DeepSeek Anthropic-compatible API)
31
+ - Provider fallback chain with automatic failover
32
+ - Exponential backoff retry with jitter
33
+ - Token counting (tiktoken-based + heuristic fallback)
34
+ - Tool registry with auto-discovery
35
+ - Tool permission system with declarative access control
36
+ - Web search tool (DuckDuckGo)
37
+ - Web fetch tool (URL content extraction)
38
+ - Feishu message operations tool (send, react)
39
+ - Feishu file operations tool (list, info)
40
+ - Cron management tool (create, list, delete)
41
+ - System command tool (help, status)
42
+ - Subagent system with concurrency limiting and timeout
43
+ - Markdown Skills loader with frontmatter support
44
+ - 10 built-in skills (base-assistant, calendar, summary, translator, code-review, reminder, customer-support, data-analysis, meeting-notes, feishu-docs)
45
+ - MCP client for connecting to external MCP servers
46
+ - MCP server for exposing Swarm tools
47
+ - Plugin manifest protocol with lifecycle management
48
+ - Plugin loader (filesystem + setuptools entry points)
49
+ - Publish/subscribe event bus for runtime observability
50
+ - Metrics collector for monitoring (latency, throughput, errors)
51
+ - APScheduler-based cron with SQLite persistence
52
+ - Natural language → cron expression parser
53
+ - Persistent state store with snapshots and migration
54
+ - Outbound message delivery layer (per-chat queues, rate limiting, retry)
55
+ - Interactive CLI with Rich and prompt_toolkit
56
+ - Commands: `swarm chat`, `swarm ws`, `swarm init`, `swarm validate`, `swarm version`
57
+ - structlog-based structured JSON logging
58
+ - Log rotation with gzip compression
59
+ - Separate audit log and error log
60
+ - Configurable log retention
61
+ - Pydantic v2 configuration schema with YAML loader
62
+ - ${ENV_VAR} substitution in config files
63
+ - Graceful shutdown with checkpoint preservation
64
+ - Docker deployment with docker-compose
65
+ - Systemd and supervisor service templates
66
+ - 220+ unit and integration tests
67
+ - Comprehensive documentation
@@ -0,0 +1,49 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our
6
+ community a harassment-free experience for everyone, regardless of age, body
7
+ size, visible or invisible disability, ethnicity, sex characteristics, gender
8
+ identity and expression, level of experience, education, socio-economic status,
9
+ nationality, personal appearance, race, religion, or sexual identity
10
+ and orientation.
11
+
12
+ We pledge to act and interact in ways that contribute to an open, welcoming,
13
+ diverse, inclusive, and healthy community.
14
+
15
+ ## Our Standards
16
+
17
+ Examples of behavior that contributes to a positive environment:
18
+
19
+ * Demonstrating empathy and kindness toward other people
20
+ * Being respectful of differing opinions, viewpoints, and experiences
21
+ * Giving and gracefully accepting constructive feedback
22
+ * Accepting responsibility and apologizing to those affected by our mistakes
23
+ * Focusing on what is best for the overall community
24
+
25
+ Examples of unacceptable behavior:
26
+
27
+ * The use of sexualized language or imagery, and sexual attention of any kind
28
+ * Trolling, insulting or derogatory comments, and personal or political attacks
29
+ * Public or private harassment
30
+ * Publishing others' private information without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate
32
+
33
+ ## Enforcement
34
+
35
+ Community leaders are responsible for clarifying and enforcing our standards of
36
+ acceptable behavior and will take appropriate and fair corrective action in
37
+ response to any behavior that they deem inappropriate, threatening, offensive,
38
+ or harmful.
39
+
40
+ ## Scope
41
+
42
+ This Code of Conduct applies within all community spaces, and also applies when
43
+ an individual is officially representing the community in public spaces.
44
+
45
+ ## Attribution
46
+
47
+ This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org),
48
+ version 2.0, available at
49
+ https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
@@ -0,0 +1,85 @@
1
+ # Contributing to Swarm
2
+
3
+ Thank you for your interest in contributing! This document outlines the process and guidelines.
4
+
5
+ ## Development Setup
6
+
7
+ ```bash
8
+ git clone https://github.com/your-org/swarm.git
9
+ cd swarm
10
+ python -m venv venv
11
+ source venv/bin/activate
12
+ pip install -e ".[dev]"
13
+ ```
14
+
15
+ ## Code Style
16
+
17
+ - Python 3.10+ with type hints
18
+ - Line length: 100 characters
19
+ - Follow existing patterns in the codebase
20
+ - Lint with ruff: `ruff check swarm/`
21
+
22
+ ## Testing
23
+
24
+ ```bash
25
+ # Run all tests
26
+ pytest tests/ -v
27
+
28
+ # With coverage
29
+ pytest tests/ -v --cov=swarm --cov-report=term
30
+
31
+ # Run specific test file
32
+ pytest tests/test_agent.py -v
33
+ ```
34
+
35
+ Aim for 80%+ test coverage on new code.
36
+
37
+ ## Commit Convention
38
+
39
+ We use conventional commits:
40
+
41
+ ```
42
+ feat: add new feature
43
+ fix: fix bug description
44
+ docs: update documentation
45
+ test: add tests for X
46
+ refactor: restructure Y module
47
+ chore: update dependencies
48
+ ```
49
+
50
+ ## Pull Request Process
51
+
52
+ 1. Fork the repository
53
+ 2. Create a feature branch (`git checkout -b feat/amazing-feature`)
54
+ 3. Write tests for your changes
55
+ 4. Ensure all tests pass (`pytest tests/ -v`)
56
+ 5. Lint your code (`ruff check swarm/`)
57
+ 6. Commit with conventional commit messages
58
+ 7. Push and create a Pull Request
59
+
60
+ ## Project Structure
61
+
62
+ See the [Architecture Guide](docs/architecture.md) for a detailed walkthrough.
63
+
64
+ ## Adding a New Tool
65
+
66
+ 1. Create tool class in `swarm/tools/builtin/` or your plugin
67
+ 2. Extend `ToolBase` with `name`, `description`, `parameters`
68
+ 3. Implement `async def execute(self, args, ctx) -> str`
69
+ 4. Register in `ToolRegistry`
70
+ 5. Write tests
71
+
72
+ ## Adding a New Skill
73
+
74
+ 1. Create directory: `skills_builtin/skill-name/`
75
+ 2. Create `SKILL.md` with YAML frontmatter
76
+ 3. Write clear instructions and examples
77
+ 4. Test by loading with `SkillsLoader`
78
+
79
+ ## Code of Conduct
80
+
81
+ See [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).
82
+
83
+ ## Questions?
84
+
85
+ Open an issue or discussion on GitHub.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Swarm Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.