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.
- devrel_swarm-0.2.4/LICENSE +21 -0
- devrel_swarm-0.2.4/PKG-INFO +308 -0
- devrel_swarm-0.2.4/README.md +255 -0
- devrel_swarm-0.2.4/pyproject.toml +157 -0
- devrel_swarm-0.2.4/setup.cfg +4 -0
- devrel_swarm-0.2.4/src/devrel_swarm/__init__.py +8 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/__init__.py +82 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/_common.py +62 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/analytics.py +497 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/config.py +108 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/content.py +164 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/cost.py +108 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/deliverables.py +65 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/docs.py +34 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/doctor.py +167 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/experiment.py +29 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/init.py +72 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/intel.py +27 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/kb.py +96 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/listen.py +31 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/marketing.py +66 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/run.py +46 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/sales.py +57 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/schedule.py +62 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/synthesize.py +28 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/triage.py +29 -0
- devrel_swarm-0.2.4/src/devrel_swarm/cli/video.py +35 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/__init__.py +46 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/agent_config.py +67 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/argus.py +961 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/atlas.py +1108 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/base.py +372 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/dex.py +708 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/echo.py +614 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/iris.py +513 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/kai.py +402 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/llm.py +437 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/mox.py +514 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/nova.py +349 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/pax.py +1205 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/rex.py +532 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/sage.py +486 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/sentinel.py +362 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/types.py +98 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/video/__init__.py +22 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/video/assembler.py +131 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/video/browser_recorder.py +118 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/video/desktop_recorder.py +254 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/video/overlay_renderer.py +143 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/video/script_parser.py +147 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/video/tts_engine.py +82 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/vox.py +268 -0
- devrel_swarm-0.2.4/src/devrel_swarm/core/watchdog.py +321 -0
- devrel_swarm-0.2.4/src/devrel_swarm/project/__init__.py +1 -0
- devrel_swarm-0.2.4/src/devrel_swarm/project/config.py +75 -0
- devrel_swarm-0.2.4/src/devrel_swarm/project/cost_sink.py +61 -0
- devrel_swarm-0.2.4/src/devrel_swarm/project/init.py +104 -0
- devrel_swarm-0.2.4/src/devrel_swarm/project/paths.py +75 -0
- devrel_swarm-0.2.4/src/devrel_swarm/project/state.py +142 -0
- devrel_swarm-0.2.4/src/devrel_swarm/project/templates/__init__.py +4 -0
- devrel_swarm-0.2.4/src/devrel_swarm/project/templates/config.toml +24 -0
- devrel_swarm-0.2.4/src/devrel_swarm/project/templates/devrel.gitignore +10 -0
- devrel_swarm-0.2.4/src/devrel_swarm/project/templates/slop-blocklist.md +45 -0
- devrel_swarm-0.2.4/src/devrel_swarm/project/templates/style.md +24 -0
- devrel_swarm-0.2.4/src/devrel_swarm/project/templates/voice.md +29 -0
- devrel_swarm-0.2.4/src/devrel_swarm/quality/__init__.py +66 -0
- devrel_swarm-0.2.4/src/devrel_swarm/quality/editorial.py +357 -0
- devrel_swarm-0.2.4/src/devrel_swarm/quality/persona.py +84 -0
- devrel_swarm-0.2.4/src/devrel_swarm/quality/readability.py +148 -0
- devrel_swarm-0.2.4/src/devrel_swarm/quality/slop.py +119 -0
- devrel_swarm-0.2.4/src/devrel_swarm/quality/style.py +110 -0
- devrel_swarm-0.2.4/src/devrel_swarm/quality/voice.py +15 -0
- devrel_swarm-0.2.4/src/devrel_swarm/tools/__init__.py +9 -0
- devrel_swarm-0.2.4/src/devrel_swarm/tools/analytics.py +304 -0
- devrel_swarm-0.2.4/src/devrel_swarm/tools/api_client.py +357 -0
- devrel_swarm-0.2.4/src/devrel_swarm/tools/apollo_client.py +305 -0
- devrel_swarm-0.2.4/src/devrel_swarm/tools/code_validator.py +328 -0
- devrel_swarm-0.2.4/src/devrel_swarm/tools/github_tools.py +292 -0
- devrel_swarm-0.2.4/src/devrel_swarm/tools/instantly_client.py +412 -0
- devrel_swarm-0.2.4/src/devrel_swarm/tools/kb_harvester.py +340 -0
- devrel_swarm-0.2.4/src/devrel_swarm/tools/mcp_server.py +578 -0
- devrel_swarm-0.2.4/src/devrel_swarm/tools/notifications.py +245 -0
- devrel_swarm-0.2.4/src/devrel_swarm/tools/run_report.py +193 -0
- devrel_swarm-0.2.4/src/devrel_swarm/tools/scheduler.py +231 -0
- devrel_swarm-0.2.4/src/devrel_swarm/tools/search_tools.py +321 -0
- devrel_swarm-0.2.4/src/devrel_swarm/tools/self_improve.py +168 -0
- devrel_swarm-0.2.4/src/devrel_swarm/tools/sheets.py +236 -0
- devrel_swarm-0.2.4/src/devrel_swarm.egg-info/PKG-INFO +308 -0
- devrel_swarm-0.2.4/src/devrel_swarm.egg-info/SOURCES.txt +123 -0
- devrel_swarm-0.2.4/src/devrel_swarm.egg-info/dependency_links.txt +1 -0
- devrel_swarm-0.2.4/src/devrel_swarm.egg-info/entry_points.txt +2 -0
- devrel_swarm-0.2.4/src/devrel_swarm.egg-info/requires.txt +26 -0
- devrel_swarm-0.2.4/src/devrel_swarm.egg-info/top_level.txt +1 -0
- devrel_swarm-0.2.4/tests/test_agent_edge_cases.py +256 -0
- devrel_swarm-0.2.4/tests/test_analytics_collectors.py +414 -0
- devrel_swarm-0.2.4/tests/test_api_client.py +69 -0
- devrel_swarm-0.2.4/tests/test_apollo_client.py +497 -0
- devrel_swarm-0.2.4/tests/test_argus.py +796 -0
- devrel_swarm-0.2.4/tests/test_atlas.py +420 -0
- devrel_swarm-0.2.4/tests/test_atlas_replies.py +292 -0
- devrel_swarm-0.2.4/tests/test_base_agent.py +104 -0
- devrel_swarm-0.2.4/tests/test_code_validator.py +445 -0
- devrel_swarm-0.2.4/tests/test_config.py +80 -0
- devrel_swarm-0.2.4/tests/test_dex.py +483 -0
- devrel_swarm-0.2.4/tests/test_echo.py +523 -0
- devrel_swarm-0.2.4/tests/test_github_tools.py +402 -0
- devrel_swarm-0.2.4/tests/test_instantly_client.py +364 -0
- devrel_swarm-0.2.4/tests/test_integration.py +364 -0
- devrel_swarm-0.2.4/tests/test_iris.py +377 -0
- devrel_swarm-0.2.4/tests/test_kai.py +183 -0
- devrel_swarm-0.2.4/tests/test_llm.py +210 -0
- devrel_swarm-0.2.4/tests/test_llm_cost_tracking.py +105 -0
- devrel_swarm-0.2.4/tests/test_mcp_server.py +381 -0
- devrel_swarm-0.2.4/tests/test_mox.py +254 -0
- devrel_swarm-0.2.4/tests/test_mox_instantly.py +150 -0
- devrel_swarm-0.2.4/tests/test_nova.py +240 -0
- devrel_swarm-0.2.4/tests/test_pax.py +891 -0
- devrel_swarm-0.2.4/tests/test_pax_apollo.py +313 -0
- devrel_swarm-0.2.4/tests/test_pax_instantly.py +174 -0
- devrel_swarm-0.2.4/tests/test_rex.py +427 -0
- devrel_swarm-0.2.4/tests/test_rex_apollo.py +136 -0
- devrel_swarm-0.2.4/tests/test_sage.py +211 -0
- devrel_swarm-0.2.4/tests/test_search_tools.py +619 -0
- devrel_swarm-0.2.4/tests/test_sentinel.py +108 -0
- 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
|