devrel-swarm 0.2.4__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 (125) hide show
  1. devrel_swarm-0.2.4/LICENSE +21 -0
  2. devrel_swarm-0.2.4/PKG-INFO +308 -0
  3. devrel_swarm-0.2.4/README.md +255 -0
  4. devrel_swarm-0.2.4/pyproject.toml +157 -0
  5. devrel_swarm-0.2.4/setup.cfg +4 -0
  6. devrel_swarm-0.2.4/src/devrel_swarm/__init__.py +8 -0
  7. devrel_swarm-0.2.4/src/devrel_swarm/cli/__init__.py +82 -0
  8. devrel_swarm-0.2.4/src/devrel_swarm/cli/_common.py +62 -0
  9. devrel_swarm-0.2.4/src/devrel_swarm/cli/analytics.py +497 -0
  10. devrel_swarm-0.2.4/src/devrel_swarm/cli/config.py +108 -0
  11. devrel_swarm-0.2.4/src/devrel_swarm/cli/content.py +164 -0
  12. devrel_swarm-0.2.4/src/devrel_swarm/cli/cost.py +108 -0
  13. devrel_swarm-0.2.4/src/devrel_swarm/cli/deliverables.py +65 -0
  14. devrel_swarm-0.2.4/src/devrel_swarm/cli/docs.py +34 -0
  15. devrel_swarm-0.2.4/src/devrel_swarm/cli/doctor.py +167 -0
  16. devrel_swarm-0.2.4/src/devrel_swarm/cli/experiment.py +29 -0
  17. devrel_swarm-0.2.4/src/devrel_swarm/cli/init.py +72 -0
  18. devrel_swarm-0.2.4/src/devrel_swarm/cli/intel.py +27 -0
  19. devrel_swarm-0.2.4/src/devrel_swarm/cli/kb.py +96 -0
  20. devrel_swarm-0.2.4/src/devrel_swarm/cli/listen.py +31 -0
  21. devrel_swarm-0.2.4/src/devrel_swarm/cli/marketing.py +66 -0
  22. devrel_swarm-0.2.4/src/devrel_swarm/cli/run.py +46 -0
  23. devrel_swarm-0.2.4/src/devrel_swarm/cli/sales.py +57 -0
  24. devrel_swarm-0.2.4/src/devrel_swarm/cli/schedule.py +62 -0
  25. devrel_swarm-0.2.4/src/devrel_swarm/cli/synthesize.py +28 -0
  26. devrel_swarm-0.2.4/src/devrel_swarm/cli/triage.py +29 -0
  27. devrel_swarm-0.2.4/src/devrel_swarm/cli/video.py +35 -0
  28. devrel_swarm-0.2.4/src/devrel_swarm/core/__init__.py +46 -0
  29. devrel_swarm-0.2.4/src/devrel_swarm/core/agent_config.py +67 -0
  30. devrel_swarm-0.2.4/src/devrel_swarm/core/argus.py +961 -0
  31. devrel_swarm-0.2.4/src/devrel_swarm/core/atlas.py +1108 -0
  32. devrel_swarm-0.2.4/src/devrel_swarm/core/base.py +372 -0
  33. devrel_swarm-0.2.4/src/devrel_swarm/core/dex.py +708 -0
  34. devrel_swarm-0.2.4/src/devrel_swarm/core/echo.py +614 -0
  35. devrel_swarm-0.2.4/src/devrel_swarm/core/iris.py +513 -0
  36. devrel_swarm-0.2.4/src/devrel_swarm/core/kai.py +402 -0
  37. devrel_swarm-0.2.4/src/devrel_swarm/core/llm.py +437 -0
  38. devrel_swarm-0.2.4/src/devrel_swarm/core/mox.py +514 -0
  39. devrel_swarm-0.2.4/src/devrel_swarm/core/nova.py +349 -0
  40. devrel_swarm-0.2.4/src/devrel_swarm/core/pax.py +1205 -0
  41. devrel_swarm-0.2.4/src/devrel_swarm/core/rex.py +532 -0
  42. devrel_swarm-0.2.4/src/devrel_swarm/core/sage.py +486 -0
  43. devrel_swarm-0.2.4/src/devrel_swarm/core/sentinel.py +362 -0
  44. devrel_swarm-0.2.4/src/devrel_swarm/core/types.py +98 -0
  45. devrel_swarm-0.2.4/src/devrel_swarm/core/video/__init__.py +22 -0
  46. devrel_swarm-0.2.4/src/devrel_swarm/core/video/assembler.py +131 -0
  47. devrel_swarm-0.2.4/src/devrel_swarm/core/video/browser_recorder.py +118 -0
  48. devrel_swarm-0.2.4/src/devrel_swarm/core/video/desktop_recorder.py +254 -0
  49. devrel_swarm-0.2.4/src/devrel_swarm/core/video/overlay_renderer.py +143 -0
  50. devrel_swarm-0.2.4/src/devrel_swarm/core/video/script_parser.py +147 -0
  51. devrel_swarm-0.2.4/src/devrel_swarm/core/video/tts_engine.py +82 -0
  52. devrel_swarm-0.2.4/src/devrel_swarm/core/vox.py +268 -0
  53. devrel_swarm-0.2.4/src/devrel_swarm/core/watchdog.py +321 -0
  54. devrel_swarm-0.2.4/src/devrel_swarm/project/__init__.py +1 -0
  55. devrel_swarm-0.2.4/src/devrel_swarm/project/config.py +75 -0
  56. devrel_swarm-0.2.4/src/devrel_swarm/project/cost_sink.py +61 -0
  57. devrel_swarm-0.2.4/src/devrel_swarm/project/init.py +104 -0
  58. devrel_swarm-0.2.4/src/devrel_swarm/project/paths.py +75 -0
  59. devrel_swarm-0.2.4/src/devrel_swarm/project/state.py +142 -0
  60. devrel_swarm-0.2.4/src/devrel_swarm/project/templates/__init__.py +4 -0
  61. devrel_swarm-0.2.4/src/devrel_swarm/project/templates/config.toml +24 -0
  62. devrel_swarm-0.2.4/src/devrel_swarm/project/templates/devrel.gitignore +10 -0
  63. devrel_swarm-0.2.4/src/devrel_swarm/project/templates/slop-blocklist.md +45 -0
  64. devrel_swarm-0.2.4/src/devrel_swarm/project/templates/style.md +24 -0
  65. devrel_swarm-0.2.4/src/devrel_swarm/project/templates/voice.md +29 -0
  66. devrel_swarm-0.2.4/src/devrel_swarm/quality/__init__.py +66 -0
  67. devrel_swarm-0.2.4/src/devrel_swarm/quality/editorial.py +357 -0
  68. devrel_swarm-0.2.4/src/devrel_swarm/quality/persona.py +84 -0
  69. devrel_swarm-0.2.4/src/devrel_swarm/quality/readability.py +148 -0
  70. devrel_swarm-0.2.4/src/devrel_swarm/quality/slop.py +119 -0
  71. devrel_swarm-0.2.4/src/devrel_swarm/quality/style.py +110 -0
  72. devrel_swarm-0.2.4/src/devrel_swarm/quality/voice.py +15 -0
  73. devrel_swarm-0.2.4/src/devrel_swarm/tools/__init__.py +9 -0
  74. devrel_swarm-0.2.4/src/devrel_swarm/tools/analytics.py +304 -0
  75. devrel_swarm-0.2.4/src/devrel_swarm/tools/api_client.py +357 -0
  76. devrel_swarm-0.2.4/src/devrel_swarm/tools/apollo_client.py +305 -0
  77. devrel_swarm-0.2.4/src/devrel_swarm/tools/code_validator.py +328 -0
  78. devrel_swarm-0.2.4/src/devrel_swarm/tools/github_tools.py +292 -0
  79. devrel_swarm-0.2.4/src/devrel_swarm/tools/instantly_client.py +412 -0
  80. devrel_swarm-0.2.4/src/devrel_swarm/tools/kb_harvester.py +340 -0
  81. devrel_swarm-0.2.4/src/devrel_swarm/tools/mcp_server.py +578 -0
  82. devrel_swarm-0.2.4/src/devrel_swarm/tools/notifications.py +245 -0
  83. devrel_swarm-0.2.4/src/devrel_swarm/tools/run_report.py +193 -0
  84. devrel_swarm-0.2.4/src/devrel_swarm/tools/scheduler.py +231 -0
  85. devrel_swarm-0.2.4/src/devrel_swarm/tools/search_tools.py +321 -0
  86. devrel_swarm-0.2.4/src/devrel_swarm/tools/self_improve.py +168 -0
  87. devrel_swarm-0.2.4/src/devrel_swarm/tools/sheets.py +236 -0
  88. devrel_swarm-0.2.4/src/devrel_swarm.egg-info/PKG-INFO +308 -0
  89. devrel_swarm-0.2.4/src/devrel_swarm.egg-info/SOURCES.txt +123 -0
  90. devrel_swarm-0.2.4/src/devrel_swarm.egg-info/dependency_links.txt +1 -0
  91. devrel_swarm-0.2.4/src/devrel_swarm.egg-info/entry_points.txt +2 -0
  92. devrel_swarm-0.2.4/src/devrel_swarm.egg-info/requires.txt +26 -0
  93. devrel_swarm-0.2.4/src/devrel_swarm.egg-info/top_level.txt +1 -0
  94. devrel_swarm-0.2.4/tests/test_agent_edge_cases.py +256 -0
  95. devrel_swarm-0.2.4/tests/test_analytics_collectors.py +414 -0
  96. devrel_swarm-0.2.4/tests/test_api_client.py +69 -0
  97. devrel_swarm-0.2.4/tests/test_apollo_client.py +497 -0
  98. devrel_swarm-0.2.4/tests/test_argus.py +796 -0
  99. devrel_swarm-0.2.4/tests/test_atlas.py +420 -0
  100. devrel_swarm-0.2.4/tests/test_atlas_replies.py +292 -0
  101. devrel_swarm-0.2.4/tests/test_base_agent.py +104 -0
  102. devrel_swarm-0.2.4/tests/test_code_validator.py +445 -0
  103. devrel_swarm-0.2.4/tests/test_config.py +80 -0
  104. devrel_swarm-0.2.4/tests/test_dex.py +483 -0
  105. devrel_swarm-0.2.4/tests/test_echo.py +523 -0
  106. devrel_swarm-0.2.4/tests/test_github_tools.py +402 -0
  107. devrel_swarm-0.2.4/tests/test_instantly_client.py +364 -0
  108. devrel_swarm-0.2.4/tests/test_integration.py +364 -0
  109. devrel_swarm-0.2.4/tests/test_iris.py +377 -0
  110. devrel_swarm-0.2.4/tests/test_kai.py +183 -0
  111. devrel_swarm-0.2.4/tests/test_llm.py +210 -0
  112. devrel_swarm-0.2.4/tests/test_llm_cost_tracking.py +105 -0
  113. devrel_swarm-0.2.4/tests/test_mcp_server.py +381 -0
  114. devrel_swarm-0.2.4/tests/test_mox.py +254 -0
  115. devrel_swarm-0.2.4/tests/test_mox_instantly.py +150 -0
  116. devrel_swarm-0.2.4/tests/test_nova.py +240 -0
  117. devrel_swarm-0.2.4/tests/test_pax.py +891 -0
  118. devrel_swarm-0.2.4/tests/test_pax_apollo.py +313 -0
  119. devrel_swarm-0.2.4/tests/test_pax_instantly.py +174 -0
  120. devrel_swarm-0.2.4/tests/test_rex.py +427 -0
  121. devrel_swarm-0.2.4/tests/test_rex_apollo.py +136 -0
  122. devrel_swarm-0.2.4/tests/test_sage.py +211 -0
  123. devrel_swarm-0.2.4/tests/test_search_tools.py +619 -0
  124. devrel_swarm-0.2.4/tests/test_sentinel.py +108 -0
  125. devrel_swarm-0.2.4/tests/test_vox.py +564 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Daria Dovzhikova
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.
@@ -0,0 +1,308 @@
1
+ Metadata-Version: 2.4
2
+ Name: devrel-swarm
3
+ Version: 0.2.4
4
+ Summary: A 13-agent CLI that runs DevRel, sales, and marketing on your repo. BYO Anthropic key.
5
+ Author-email: Daria Dovzhikova <dovzhikova@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/dovzhikova/devrel-swarm
8
+ Project-URL: Repository, https://github.com/dovzhikova/devrel-swarm
9
+ Project-URL: Issues, https://github.com/dovzhikova/devrel-swarm/issues
10
+ Project-URL: Changelog, https://github.com/dovzhikova/devrel-swarm/blob/main/CHANGELOG.md
11
+ Project-URL: Documentation, https://github.com/dovzhikova/devrel-swarm/tree/main/docs
12
+ Keywords: devrel,developer-advocacy,ai-agents,anthropic,claude,marketing-automation,content-pipeline,competitive-intelligence,cli,pipx
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Software Development
21
+ Classifier: Topic :: Software Development :: Documentation
22
+ Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
23
+ Classifier: Topic :: Office/Business
24
+ Classifier: Typing :: Typed
25
+ Requires-Python: >=3.12
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Requires-Dist: httpx>=0.25.0
29
+ Requires-Dist: anthropic>=0.28.0
30
+ Requires-Dist: pyyaml>=6.0
31
+ Requires-Dist: scipy>=1.13.0
32
+ Requires-Dist: python-dotenv>=1.0.0
33
+ Requires-Dist: tenacity>=8.2.0
34
+ Requires-Dist: PyGithub>=2.1.1
35
+ Requires-Dist: typer>=0.12.0
36
+ Requires-Dist: rich>=13.7.0
37
+ Requires-Dist: tomli-w>=1.0.0
38
+ Provides-Extra: video
39
+ Requires-Dist: openai>=1.50.0; extra == "video"
40
+ Requires-Dist: playwright>=1.49.0; extra == "video"
41
+ Requires-Dist: pyautogui>=0.9.54; extra == "video"
42
+ Provides-Extra: dev
43
+ Requires-Dist: pytest>=7.4.0; extra == "dev"
44
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
45
+ Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
46
+ Requires-Dist: respx>=0.20.2; extra == "dev"
47
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
48
+ Requires-Dist: mypy>=1.5.0; extra == "dev"
49
+ Requires-Dist: build>=1.0.0; extra == "dev"
50
+ Requires-Dist: twine>=5.0.0; extra == "dev"
51
+ Requires-Dist: devrel-swarm[video]; extra == "dev"
52
+ Dynamic: license-file
53
+
54
+ # devrel-swarm
55
+
56
+ **A developer-first CLI for AI-powered DevRel, sales, and marketing.**
57
+
58
+ `devrel-swarm` is a `pipx`-installable command-line tool that runs a 13-agent system against any project — community triage, social listening, theme extraction, growth experiments, content production, video tutorials, documentation, competitive intel, sales outreach, brand-consistent campaigns, and post-publish content performance analysis. Operates on a project repo the way `git`, `npm`, and `cargo` do.
59
+
60
+ Every piece of content the system produces flows through an 8-stage editorial pipeline (developmental edit → line edit → copy edit → anti-slop → reader-persona test → readability check → brand audit) so output reads like senior-editor work, not generic AI prose.
61
+
62
+ > Every deliverable in this repository was produced by the agent system itself.
63
+
64
+ ---
65
+
66
+ ## Quick start
67
+
68
+ ```bash
69
+ pipx install devrel-swarm
70
+
71
+ cd /path/to/your/project
72
+ devrel init --name myproject --url https://myproject.dev --github-repo me/myproject
73
+
74
+ # edit .devrel/voice.md, .devrel/style.md, .devrel/slop-blocklist.md
75
+
76
+ export ANTHROPIC_API_KEY=sk-ant-...
77
+ devrel doctor # check env + scaffold
78
+ devrel content draft "tutorial on feature flags" --type tutorial
79
+ devrel run # full weekly pipeline
80
+ ```
81
+
82
+ After `devrel init`, your repo has a `.devrel/` directory with:
83
+
84
+ ```
85
+ .devrel/
86
+ config.toml # product identity, model selection, budget caps
87
+ voice.md # tone profile + sample passages (commit)
88
+ style.md # house style + per-content targets (commit)
89
+ slop-blocklist.md # banned phrases (commit)
90
+ kb/ # knowledge base, TF-IDF indexed
91
+ deliverables/ # generated outputs
92
+ state.db # SQLite: jobs, costs, checkpoints
93
+ ```
94
+
95
+ The four committed files (`config.toml`, `voice.md`, `style.md`, `slop-blocklist.md`) encode the editorial contract. Diff them like any other source.
96
+
97
+ ---
98
+
99
+ ## Commands
100
+
101
+ ```
102
+ # Bootstrap & health
103
+ devrel init bootstrap .devrel/ in cwd
104
+ devrel doctor [--json] check env, API keys, KB freshness
105
+ devrel cost [--month YYYY-MM] token + USD report from state.db
106
+
107
+ # Pipelines
108
+ devrel run full weekly cycle
109
+ devrel run --health health check only (Watchdog)
110
+ devrel run --agent NAME --task T run a single agent ad-hoc
111
+
112
+ # DevRel
113
+ devrel triage [--days N] GitHub issue triage (Sage)
114
+ devrel listen [--platforms ...] Reddit / HN / X (Echo)
115
+ devrel synthesize theme extraction (Iris)
116
+ devrel experiment HYPOTHESIS A/B + power analysis (Nova)
117
+
118
+ # Content
119
+ devrel content draft PROMPT revision-looped + 5-lever quality (Kai)
120
+ devrel content audit FILE run quality pipeline on existing draft
121
+ devrel content slop FILE run only the anti-slop pass
122
+ devrel docs build AST-based docs (Dex)
123
+ devrel video record SCRIPT screen-recorded tutorial (Vox)
124
+
125
+ # Sales
126
+ devrel intel COMPETITOR
127
+ devrel sales outreach COMPANY
128
+ devrel sales battlecard COMPETITOR
129
+ devrel sales sequence CAMPAIGN
130
+
131
+ # Marketing
132
+ devrel marketing blog TOPIC
133
+ devrel marketing landing TOPIC
134
+ devrel marketing social TOPIC
135
+ devrel marketing campaign BRIEF
136
+
137
+ # Knowledge base
138
+ devrel kb add URL [--category C]
139
+ devrel kb list
140
+ devrel kb refresh
141
+
142
+ # Config & schedule
143
+ devrel config get KEY
144
+ devrel config set KEY VALUE
145
+ devrel schedule install | list | remove
146
+
147
+ # Outputs
148
+ devrel deliverables list
149
+ devrel deliverables show NAME
150
+
151
+ # Analytics (Argus)
152
+ devrel analytics report [--since 7d] [--push] [--push-on-partial]
153
+ devrel analytics history CONTENT_ID
154
+ devrel analytics diff PERIOD_A PERIOD_B
155
+ devrel analytics calibration
156
+ devrel analytics summary [--root PATH]
157
+ ```
158
+
159
+ Global flags on most verbs: `--json` (machine-readable output) and `--quiet`.
160
+
161
+ ---
162
+
163
+ ## Editorial quality pipeline
164
+
165
+ Every content-producing run (`devrel content draft`, `devrel content audit`, plus internal calls from `marketing`, `sales`, `kb`-driven tutorials) flows through 8 stages:
166
+
167
+ ```
168
+ 1. Generate KB-grounded; voice.md + style.md in prompt
169
+ 2. Developmental critique+revise (structure, argument, hook)
170
+ 3. Line edit critique+revise (rhythm, voice fidelity)
171
+ 4. Copy edit critique+revise (grammar, code, consistency)
172
+ 5. Anti-slop regex blocklist + LLM lint; force-rewrite on hit;
173
+ second failure aborts loud with a phrase report
174
+ 6. Reader persona "skeptical senior backend dev" scores 1-10
175
+ 7. Readability Flesch + sentence variance + jargon density
176
+ checked against per-content-type targets
177
+ 8. Brand audit Sentinel (existing 6-dimension audit)
178
+
179
+ → deliverables/ + revision-trace.json (every stage's score + diff)
180
+ ```
181
+
182
+ Stages 5-7 use Haiku for cost; stages 2-4 use Sonnet. Total cost ≈ 2.5-4× a single revision loop, with prompt caching pulling toward the lower bound. BudgetGate guardrails (configurable in `.devrel/config.toml`) track spend; `devrel cost --month YYYY-MM` reports it.
183
+
184
+ ---
185
+
186
+ ## How it works internally
187
+
188
+ Hub-and-spoke with 13 agents. Atlas orchestrates; specialists execute across three pipelines.
189
+
190
+ ```
191
+ Atlas (Orchestrator)
192
+ ├── Health: Watchdog (pre-flight) + Sentinel (pre-publish brand audit) + Argus (post-publish performance analyst)
193
+ ├── DevRel: Sage, Echo, Iris, Nova, Kai, Vox, Dex
194
+ └── Sales: Rex, Pax, Mox
195
+ ```
196
+
197
+ The weekly cycle (driven by `devrel run`):
198
+
199
+ ```
200
+ Stage 0: Watchdog (health + budget check)
201
+ Stage 1: Sage + Echo + Dex parallel
202
+ Stage 2: Rex + Iris parallel
203
+ Stage 3: Nova + Kai parallel (Kai routes through quality pipeline)
204
+ Stage 4: Vox
205
+ Stage 5: Sentinel brand audit
206
+ Stage 5b: Argus post-publish content performance analysis
207
+ Stage 6: Instantly sync, OKR compilation, Sheets publish, digest
208
+ ```
209
+
210
+ Argus is config-gated by `[orchestration].analytics_in_run` (default `true`); set to `false` to skip the stage. Standalone use via `devrel analytics report` is unaffected.
211
+
212
+ The `Atlas.delegate()` API also dispatches single-agent tasks, which is what every non-`run` verb wraps. So `devrel triage` is `Atlas.delegate("sage", "Triage GitHub issues from the last 7 days")` — the agents never appear in the public CLI surface, only the verbs.
213
+
214
+ ---
215
+
216
+ ## Configuration
217
+
218
+ `.devrel/config.toml` example:
219
+
220
+ ```toml
221
+ [project]
222
+ name = "openclaw"
223
+ url = "https://openclaw.ai"
224
+ github_repo = "openclaw/openclaw"
225
+
226
+ [model]
227
+ default = "claude-sonnet-4-6"
228
+ cheap = "claude-haiku-4-5-20251001"
229
+ opus_opt_in = true
230
+
231
+ [budget]
232
+ monthly_usd = 100.0
233
+ warn_at_pct = 80
234
+ ```
235
+
236
+ Edit with `devrel config set <key> <value>` or directly in your editor.
237
+
238
+ ### Environment variables
239
+
240
+ | Variable | Required | Used by |
241
+ |----------|----------|---------|
242
+ | `ANTHROPIC_API_KEY` | yes | every LLM-using verb |
243
+ | `GITHUB_TOKEN` | for triage | Sage |
244
+ | `FIRECRAWL_API_KEY` | for KB harvest + intel | `kb add`, Echo, Rex |
245
+ | `BRAVE_API_KEY` | optional fallback | search |
246
+ | `INSTANTLY_API_KEY` | for cold-email sync | Pax, Mox |
247
+ | `APOLLO_API_KEY` | for lead enrichment | Rex, Pax |
248
+ | `TELEGRAM_BOT_TOKEN` | for digests | Atlas pipeline |
249
+ | `EMAIL_SENDER` / `EMAIL_PASSWORD` | for digests | Atlas pipeline |
250
+ | `OPENAI_API_KEY` | for video TTS | Vox |
251
+
252
+ `.env` files at the project root are loaded automatically. Cross-project shared keys can live at `~/.devrel/secrets.env`.
253
+
254
+ ---
255
+
256
+ ## Retargeting to another product
257
+
258
+ ```bash
259
+ cd /path/to/other-project
260
+ devrel init --name otherproduct --url https://otherproduct.dev --github-repo owner/otherproduct
261
+ devrel kb add https://otherproduct.dev/docs --category docs
262
+ # edit voice.md / style.md / slop-blocklist.md to match the other product's voice
263
+ devrel doctor
264
+ devrel run
265
+ ```
266
+
267
+ The agent system is product-agnostic. Per-project config + KB + voice files do all the targeting.
268
+
269
+ ---
270
+
271
+ ## Documentation
272
+
273
+ The user-facing docs live in [`docs/`](docs/):
274
+
275
+ - [`docs/quickstart.md`](docs/quickstart.md) — bootstrap a project and run your first weekly cycle in 5 minutes
276
+ - [`docs/agents/argus.md`](docs/agents/argus.md) — content performance analyst, the 13th agent
277
+ - [`docs/cli/analytics.md`](docs/cli/analytics.md) — full reference for the `devrel analytics` subgroup
278
+ - [`docs/cookbook.md`](docs/cookbook.md) — common recipes (calibration, weekly cron, multi-project rollups)
279
+
280
+ Internal docs (architecture specs, implementation plans) live in [`docs/superpowers/`](docs/superpowers/).
281
+
282
+ ---
283
+
284
+ ## Tech stack
285
+
286
+ | Component | Choice |
287
+ |---|---|
288
+ | Language | Python 3.12+ |
289
+ | CLI framework | Typer + Rich |
290
+ | Agent SDK | Claude Agent SDK |
291
+ | HTTP | httpx (async) |
292
+ | Default model | Claude Sonnet 4.6 (Haiku for cheap quality stages, Opus opt-in) |
293
+ | Stats | scipy (power analysis, Bayesian eval) |
294
+ | Video | Playwright + FFmpeg + OpenAI TTS |
295
+ | Storage | SQLite per project (.devrel/state.db) |
296
+ | Tests | pytest + pytest-asyncio + respx |
297
+
298
+ ---
299
+
300
+ ## Author
301
+
302
+ **Daria Dovzhikova** — DevTools Growth Strategist & AI Agent Builder
303
+ - 12+ years in DevTools (JetBrains, Huawei, Lightrun, Odigos)
304
+ - [dariadovzhikova.com](https://dariadovzhikova.com)
305
+
306
+ ---
307
+
308
+ MIT License
@@ -0,0 +1,255 @@
1
+ # devrel-swarm
2
+
3
+ **A developer-first CLI for AI-powered DevRel, sales, and marketing.**
4
+
5
+ `devrel-swarm` is a `pipx`-installable command-line tool that runs a 13-agent system against any project — community triage, social listening, theme extraction, growth experiments, content production, video tutorials, documentation, competitive intel, sales outreach, brand-consistent campaigns, and post-publish content performance analysis. Operates on a project repo the way `git`, `npm`, and `cargo` do.
6
+
7
+ Every piece of content the system produces flows through an 8-stage editorial pipeline (developmental edit → line edit → copy edit → anti-slop → reader-persona test → readability check → brand audit) so output reads like senior-editor work, not generic AI prose.
8
+
9
+ > Every deliverable in this repository was produced by the agent system itself.
10
+
11
+ ---
12
+
13
+ ## Quick start
14
+
15
+ ```bash
16
+ pipx install devrel-swarm
17
+
18
+ cd /path/to/your/project
19
+ devrel init --name myproject --url https://myproject.dev --github-repo me/myproject
20
+
21
+ # edit .devrel/voice.md, .devrel/style.md, .devrel/slop-blocklist.md
22
+
23
+ export ANTHROPIC_API_KEY=sk-ant-...
24
+ devrel doctor # check env + scaffold
25
+ devrel content draft "tutorial on feature flags" --type tutorial
26
+ devrel run # full weekly pipeline
27
+ ```
28
+
29
+ After `devrel init`, your repo has a `.devrel/` directory with:
30
+
31
+ ```
32
+ .devrel/
33
+ config.toml # product identity, model selection, budget caps
34
+ voice.md # tone profile + sample passages (commit)
35
+ style.md # house style + per-content targets (commit)
36
+ slop-blocklist.md # banned phrases (commit)
37
+ kb/ # knowledge base, TF-IDF indexed
38
+ deliverables/ # generated outputs
39
+ state.db # SQLite: jobs, costs, checkpoints
40
+ ```
41
+
42
+ The four committed files (`config.toml`, `voice.md`, `style.md`, `slop-blocklist.md`) encode the editorial contract. Diff them like any other source.
43
+
44
+ ---
45
+
46
+ ## Commands
47
+
48
+ ```
49
+ # Bootstrap & health
50
+ devrel init bootstrap .devrel/ in cwd
51
+ devrel doctor [--json] check env, API keys, KB freshness
52
+ devrel cost [--month YYYY-MM] token + USD report from state.db
53
+
54
+ # Pipelines
55
+ devrel run full weekly cycle
56
+ devrel run --health health check only (Watchdog)
57
+ devrel run --agent NAME --task T run a single agent ad-hoc
58
+
59
+ # DevRel
60
+ devrel triage [--days N] GitHub issue triage (Sage)
61
+ devrel listen [--platforms ...] Reddit / HN / X (Echo)
62
+ devrel synthesize theme extraction (Iris)
63
+ devrel experiment HYPOTHESIS A/B + power analysis (Nova)
64
+
65
+ # Content
66
+ devrel content draft PROMPT revision-looped + 5-lever quality (Kai)
67
+ devrel content audit FILE run quality pipeline on existing draft
68
+ devrel content slop FILE run only the anti-slop pass
69
+ devrel docs build AST-based docs (Dex)
70
+ devrel video record SCRIPT screen-recorded tutorial (Vox)
71
+
72
+ # Sales
73
+ devrel intel COMPETITOR
74
+ devrel sales outreach COMPANY
75
+ devrel sales battlecard COMPETITOR
76
+ devrel sales sequence CAMPAIGN
77
+
78
+ # Marketing
79
+ devrel marketing blog TOPIC
80
+ devrel marketing landing TOPIC
81
+ devrel marketing social TOPIC
82
+ devrel marketing campaign BRIEF
83
+
84
+ # Knowledge base
85
+ devrel kb add URL [--category C]
86
+ devrel kb list
87
+ devrel kb refresh
88
+
89
+ # Config & schedule
90
+ devrel config get KEY
91
+ devrel config set KEY VALUE
92
+ devrel schedule install | list | remove
93
+
94
+ # Outputs
95
+ devrel deliverables list
96
+ devrel deliverables show NAME
97
+
98
+ # Analytics (Argus)
99
+ devrel analytics report [--since 7d] [--push] [--push-on-partial]
100
+ devrel analytics history CONTENT_ID
101
+ devrel analytics diff PERIOD_A PERIOD_B
102
+ devrel analytics calibration
103
+ devrel analytics summary [--root PATH]
104
+ ```
105
+
106
+ Global flags on most verbs: `--json` (machine-readable output) and `--quiet`.
107
+
108
+ ---
109
+
110
+ ## Editorial quality pipeline
111
+
112
+ Every content-producing run (`devrel content draft`, `devrel content audit`, plus internal calls from `marketing`, `sales`, `kb`-driven tutorials) flows through 8 stages:
113
+
114
+ ```
115
+ 1. Generate KB-grounded; voice.md + style.md in prompt
116
+ 2. Developmental critique+revise (structure, argument, hook)
117
+ 3. Line edit critique+revise (rhythm, voice fidelity)
118
+ 4. Copy edit critique+revise (grammar, code, consistency)
119
+ 5. Anti-slop regex blocklist + LLM lint; force-rewrite on hit;
120
+ second failure aborts loud with a phrase report
121
+ 6. Reader persona "skeptical senior backend dev" scores 1-10
122
+ 7. Readability Flesch + sentence variance + jargon density
123
+ checked against per-content-type targets
124
+ 8. Brand audit Sentinel (existing 6-dimension audit)
125
+
126
+ → deliverables/ + revision-trace.json (every stage's score + diff)
127
+ ```
128
+
129
+ Stages 5-7 use Haiku for cost; stages 2-4 use Sonnet. Total cost ≈ 2.5-4× a single revision loop, with prompt caching pulling toward the lower bound. BudgetGate guardrails (configurable in `.devrel/config.toml`) track spend; `devrel cost --month YYYY-MM` reports it.
130
+
131
+ ---
132
+
133
+ ## How it works internally
134
+
135
+ Hub-and-spoke with 13 agents. Atlas orchestrates; specialists execute across three pipelines.
136
+
137
+ ```
138
+ Atlas (Orchestrator)
139
+ ├── Health: Watchdog (pre-flight) + Sentinel (pre-publish brand audit) + Argus (post-publish performance analyst)
140
+ ├── DevRel: Sage, Echo, Iris, Nova, Kai, Vox, Dex
141
+ └── Sales: Rex, Pax, Mox
142
+ ```
143
+
144
+ The weekly cycle (driven by `devrel run`):
145
+
146
+ ```
147
+ Stage 0: Watchdog (health + budget check)
148
+ Stage 1: Sage + Echo + Dex parallel
149
+ Stage 2: Rex + Iris parallel
150
+ Stage 3: Nova + Kai parallel (Kai routes through quality pipeline)
151
+ Stage 4: Vox
152
+ Stage 5: Sentinel brand audit
153
+ Stage 5b: Argus post-publish content performance analysis
154
+ Stage 6: Instantly sync, OKR compilation, Sheets publish, digest
155
+ ```
156
+
157
+ Argus is config-gated by `[orchestration].analytics_in_run` (default `true`); set to `false` to skip the stage. Standalone use via `devrel analytics report` is unaffected.
158
+
159
+ The `Atlas.delegate()` API also dispatches single-agent tasks, which is what every non-`run` verb wraps. So `devrel triage` is `Atlas.delegate("sage", "Triage GitHub issues from the last 7 days")` — the agents never appear in the public CLI surface, only the verbs.
160
+
161
+ ---
162
+
163
+ ## Configuration
164
+
165
+ `.devrel/config.toml` example:
166
+
167
+ ```toml
168
+ [project]
169
+ name = "openclaw"
170
+ url = "https://openclaw.ai"
171
+ github_repo = "openclaw/openclaw"
172
+
173
+ [model]
174
+ default = "claude-sonnet-4-6"
175
+ cheap = "claude-haiku-4-5-20251001"
176
+ opus_opt_in = true
177
+
178
+ [budget]
179
+ monthly_usd = 100.0
180
+ warn_at_pct = 80
181
+ ```
182
+
183
+ Edit with `devrel config set <key> <value>` or directly in your editor.
184
+
185
+ ### Environment variables
186
+
187
+ | Variable | Required | Used by |
188
+ |----------|----------|---------|
189
+ | `ANTHROPIC_API_KEY` | yes | every LLM-using verb |
190
+ | `GITHUB_TOKEN` | for triage | Sage |
191
+ | `FIRECRAWL_API_KEY` | for KB harvest + intel | `kb add`, Echo, Rex |
192
+ | `BRAVE_API_KEY` | optional fallback | search |
193
+ | `INSTANTLY_API_KEY` | for cold-email sync | Pax, Mox |
194
+ | `APOLLO_API_KEY` | for lead enrichment | Rex, Pax |
195
+ | `TELEGRAM_BOT_TOKEN` | for digests | Atlas pipeline |
196
+ | `EMAIL_SENDER` / `EMAIL_PASSWORD` | for digests | Atlas pipeline |
197
+ | `OPENAI_API_KEY` | for video TTS | Vox |
198
+
199
+ `.env` files at the project root are loaded automatically. Cross-project shared keys can live at `~/.devrel/secrets.env`.
200
+
201
+ ---
202
+
203
+ ## Retargeting to another product
204
+
205
+ ```bash
206
+ cd /path/to/other-project
207
+ devrel init --name otherproduct --url https://otherproduct.dev --github-repo owner/otherproduct
208
+ devrel kb add https://otherproduct.dev/docs --category docs
209
+ # edit voice.md / style.md / slop-blocklist.md to match the other product's voice
210
+ devrel doctor
211
+ devrel run
212
+ ```
213
+
214
+ The agent system is product-agnostic. Per-project config + KB + voice files do all the targeting.
215
+
216
+ ---
217
+
218
+ ## Documentation
219
+
220
+ The user-facing docs live in [`docs/`](docs/):
221
+
222
+ - [`docs/quickstart.md`](docs/quickstart.md) — bootstrap a project and run your first weekly cycle in 5 minutes
223
+ - [`docs/agents/argus.md`](docs/agents/argus.md) — content performance analyst, the 13th agent
224
+ - [`docs/cli/analytics.md`](docs/cli/analytics.md) — full reference for the `devrel analytics` subgroup
225
+ - [`docs/cookbook.md`](docs/cookbook.md) — common recipes (calibration, weekly cron, multi-project rollups)
226
+
227
+ Internal docs (architecture specs, implementation plans) live in [`docs/superpowers/`](docs/superpowers/).
228
+
229
+ ---
230
+
231
+ ## Tech stack
232
+
233
+ | Component | Choice |
234
+ |---|---|
235
+ | Language | Python 3.12+ |
236
+ | CLI framework | Typer + Rich |
237
+ | Agent SDK | Claude Agent SDK |
238
+ | HTTP | httpx (async) |
239
+ | Default model | Claude Sonnet 4.6 (Haiku for cheap quality stages, Opus opt-in) |
240
+ | Stats | scipy (power analysis, Bayesian eval) |
241
+ | Video | Playwright + FFmpeg + OpenAI TTS |
242
+ | Storage | SQLite per project (.devrel/state.db) |
243
+ | Tests | pytest + pytest-asyncio + respx |
244
+
245
+ ---
246
+
247
+ ## Author
248
+
249
+ **Daria Dovzhikova** — DevTools Growth Strategist & AI Agent Builder
250
+ - 12+ years in DevTools (JetBrains, Huawei, Lightrun, Odigos)
251
+ - [dariadovzhikova.com](https://dariadovzhikova.com)
252
+
253
+ ---
254
+
255
+ MIT License