devrel-origin 0.2.14__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 (138) hide show
  1. devrel_origin-0.2.14/LICENSE +21 -0
  2. devrel_origin-0.2.14/PKG-INFO +354 -0
  3. devrel_origin-0.2.14/README.md +291 -0
  4. devrel_origin-0.2.14/pyproject.toml +182 -0
  5. devrel_origin-0.2.14/setup.cfg +4 -0
  6. devrel_origin-0.2.14/src/devrel_origin/__init__.py +15 -0
  7. devrel_origin-0.2.14/src/devrel_origin/cli/__init__.py +92 -0
  8. devrel_origin-0.2.14/src/devrel_origin/cli/_common.py +243 -0
  9. devrel_origin-0.2.14/src/devrel_origin/cli/analytics.py +28 -0
  10. devrel_origin-0.2.14/src/devrel_origin/cli/argus.py +497 -0
  11. devrel_origin-0.2.14/src/devrel_origin/cli/auth.py +227 -0
  12. devrel_origin-0.2.14/src/devrel_origin/cli/config.py +108 -0
  13. devrel_origin-0.2.14/src/devrel_origin/cli/content.py +259 -0
  14. devrel_origin-0.2.14/src/devrel_origin/cli/cost.py +108 -0
  15. devrel_origin-0.2.14/src/devrel_origin/cli/cro.py +298 -0
  16. devrel_origin-0.2.14/src/devrel_origin/cli/deliverables.py +65 -0
  17. devrel_origin-0.2.14/src/devrel_origin/cli/docs.py +91 -0
  18. devrel_origin-0.2.14/src/devrel_origin/cli/doctor.py +178 -0
  19. devrel_origin-0.2.14/src/devrel_origin/cli/experiment.py +29 -0
  20. devrel_origin-0.2.14/src/devrel_origin/cli/growth.py +97 -0
  21. devrel_origin-0.2.14/src/devrel_origin/cli/init.py +472 -0
  22. devrel_origin-0.2.14/src/devrel_origin/cli/intel.py +27 -0
  23. devrel_origin-0.2.14/src/devrel_origin/cli/kb.py +96 -0
  24. devrel_origin-0.2.14/src/devrel_origin/cli/listen.py +31 -0
  25. devrel_origin-0.2.14/src/devrel_origin/cli/marketing.py +66 -0
  26. devrel_origin-0.2.14/src/devrel_origin/cli/migrate.py +45 -0
  27. devrel_origin-0.2.14/src/devrel_origin/cli/run.py +46 -0
  28. devrel_origin-0.2.14/src/devrel_origin/cli/sales.py +57 -0
  29. devrel_origin-0.2.14/src/devrel_origin/cli/schedule.py +62 -0
  30. devrel_origin-0.2.14/src/devrel_origin/cli/synthesize.py +28 -0
  31. devrel_origin-0.2.14/src/devrel_origin/cli/triage.py +29 -0
  32. devrel_origin-0.2.14/src/devrel_origin/cli/video.py +35 -0
  33. devrel_origin-0.2.14/src/devrel_origin/core/__init__.py +58 -0
  34. devrel_origin-0.2.14/src/devrel_origin/core/agent_config.py +75 -0
  35. devrel_origin-0.2.14/src/devrel_origin/core/argus.py +964 -0
  36. devrel_origin-0.2.14/src/devrel_origin/core/atlas.py +1450 -0
  37. devrel_origin-0.2.14/src/devrel_origin/core/base.py +372 -0
  38. devrel_origin-0.2.14/src/devrel_origin/core/cyra.py +563 -0
  39. devrel_origin-0.2.14/src/devrel_origin/core/dex.py +708 -0
  40. devrel_origin-0.2.14/src/devrel_origin/core/echo.py +614 -0
  41. devrel_origin-0.2.14/src/devrel_origin/core/growth/__init__.py +27 -0
  42. devrel_origin-0.2.14/src/devrel_origin/core/growth/recommendations.py +219 -0
  43. devrel_origin-0.2.14/src/devrel_origin/core/growth/target_kinds.py +51 -0
  44. devrel_origin-0.2.14/src/devrel_origin/core/iris.py +513 -0
  45. devrel_origin-0.2.14/src/devrel_origin/core/kai.py +1367 -0
  46. devrel_origin-0.2.14/src/devrel_origin/core/llm.py +542 -0
  47. devrel_origin-0.2.14/src/devrel_origin/core/llm_backends.py +274 -0
  48. devrel_origin-0.2.14/src/devrel_origin/core/mox.py +514 -0
  49. devrel_origin-0.2.14/src/devrel_origin/core/nova.py +349 -0
  50. devrel_origin-0.2.14/src/devrel_origin/core/pax.py +1205 -0
  51. devrel_origin-0.2.14/src/devrel_origin/core/rex.py +532 -0
  52. devrel_origin-0.2.14/src/devrel_origin/core/sage.py +486 -0
  53. devrel_origin-0.2.14/src/devrel_origin/core/sentinel.py +385 -0
  54. devrel_origin-0.2.14/src/devrel_origin/core/types.py +98 -0
  55. devrel_origin-0.2.14/src/devrel_origin/core/video/__init__.py +22 -0
  56. devrel_origin-0.2.14/src/devrel_origin/core/video/assembler.py +131 -0
  57. devrel_origin-0.2.14/src/devrel_origin/core/video/browser_recorder.py +118 -0
  58. devrel_origin-0.2.14/src/devrel_origin/core/video/desktop_recorder.py +254 -0
  59. devrel_origin-0.2.14/src/devrel_origin/core/video/overlay_renderer.py +143 -0
  60. devrel_origin-0.2.14/src/devrel_origin/core/video/script_parser.py +147 -0
  61. devrel_origin-0.2.14/src/devrel_origin/core/video/tts_engine.py +82 -0
  62. devrel_origin-0.2.14/src/devrel_origin/core/vox.py +268 -0
  63. devrel_origin-0.2.14/src/devrel_origin/core/watchdog.py +321 -0
  64. devrel_origin-0.2.14/src/devrel_origin/project/__init__.py +1 -0
  65. devrel_origin-0.2.14/src/devrel_origin/project/config.py +75 -0
  66. devrel_origin-0.2.14/src/devrel_origin/project/cost_sink.py +61 -0
  67. devrel_origin-0.2.14/src/devrel_origin/project/init.py +104 -0
  68. devrel_origin-0.2.14/src/devrel_origin/project/paths.py +75 -0
  69. devrel_origin-0.2.14/src/devrel_origin/project/state.py +241 -0
  70. devrel_origin-0.2.14/src/devrel_origin/project/templates/__init__.py +4 -0
  71. devrel_origin-0.2.14/src/devrel_origin/project/templates/config.toml +24 -0
  72. devrel_origin-0.2.14/src/devrel_origin/project/templates/devrel.gitignore +10 -0
  73. devrel_origin-0.2.14/src/devrel_origin/project/templates/slop-blocklist.md +45 -0
  74. devrel_origin-0.2.14/src/devrel_origin/project/templates/style.md +24 -0
  75. devrel_origin-0.2.14/src/devrel_origin/project/templates/voice.md +29 -0
  76. devrel_origin-0.2.14/src/devrel_origin/quality/__init__.py +66 -0
  77. devrel_origin-0.2.14/src/devrel_origin/quality/editorial.py +357 -0
  78. devrel_origin-0.2.14/src/devrel_origin/quality/persona.py +84 -0
  79. devrel_origin-0.2.14/src/devrel_origin/quality/readability.py +148 -0
  80. devrel_origin-0.2.14/src/devrel_origin/quality/slop.py +167 -0
  81. devrel_origin-0.2.14/src/devrel_origin/quality/style.py +110 -0
  82. devrel_origin-0.2.14/src/devrel_origin/quality/voice.py +15 -0
  83. devrel_origin-0.2.14/src/devrel_origin/tools/__init__.py +9 -0
  84. devrel_origin-0.2.14/src/devrel_origin/tools/analytics.py +304 -0
  85. devrel_origin-0.2.14/src/devrel_origin/tools/api_client.py +393 -0
  86. devrel_origin-0.2.14/src/devrel_origin/tools/apollo_client.py +305 -0
  87. devrel_origin-0.2.14/src/devrel_origin/tools/code_validator.py +428 -0
  88. devrel_origin-0.2.14/src/devrel_origin/tools/github_tools.py +297 -0
  89. devrel_origin-0.2.14/src/devrel_origin/tools/instantly_client.py +412 -0
  90. devrel_origin-0.2.14/src/devrel_origin/tools/kb_harvester.py +340 -0
  91. devrel_origin-0.2.14/src/devrel_origin/tools/mcp_server.py +578 -0
  92. devrel_origin-0.2.14/src/devrel_origin/tools/notifications.py +245 -0
  93. devrel_origin-0.2.14/src/devrel_origin/tools/run_report.py +193 -0
  94. devrel_origin-0.2.14/src/devrel_origin/tools/scheduler.py +231 -0
  95. devrel_origin-0.2.14/src/devrel_origin/tools/search_tools.py +321 -0
  96. devrel_origin-0.2.14/src/devrel_origin/tools/self_improve.py +168 -0
  97. devrel_origin-0.2.14/src/devrel_origin/tools/sheets.py +236 -0
  98. devrel_origin-0.2.14/src/devrel_origin.egg-info/PKG-INFO +354 -0
  99. devrel_origin-0.2.14/src/devrel_origin.egg-info/SOURCES.txt +136 -0
  100. devrel_origin-0.2.14/src/devrel_origin.egg-info/dependency_links.txt +1 -0
  101. devrel_origin-0.2.14/src/devrel_origin.egg-info/entry_points.txt +2 -0
  102. devrel_origin-0.2.14/src/devrel_origin.egg-info/requires.txt +39 -0
  103. devrel_origin-0.2.14/src/devrel_origin.egg-info/top_level.txt +1 -0
  104. devrel_origin-0.2.14/tests/test_agent_edge_cases.py +256 -0
  105. devrel_origin-0.2.14/tests/test_analytics_collectors.py +414 -0
  106. devrel_origin-0.2.14/tests/test_api_client.py +164 -0
  107. devrel_origin-0.2.14/tests/test_apollo_client.py +497 -0
  108. devrel_origin-0.2.14/tests/test_argus.py +846 -0
  109. devrel_origin-0.2.14/tests/test_atlas.py +764 -0
  110. devrel_origin-0.2.14/tests/test_atlas_replies.py +292 -0
  111. devrel_origin-0.2.14/tests/test_base_agent.py +104 -0
  112. devrel_origin-0.2.14/tests/test_code_validator.py +490 -0
  113. devrel_origin-0.2.14/tests/test_config.py +80 -0
  114. devrel_origin-0.2.14/tests/test_cyra.py +639 -0
  115. devrel_origin-0.2.14/tests/test_dex.py +483 -0
  116. devrel_origin-0.2.14/tests/test_echo.py +526 -0
  117. devrel_origin-0.2.14/tests/test_github_tools.py +409 -0
  118. devrel_origin-0.2.14/tests/test_instantly_client.py +371 -0
  119. devrel_origin-0.2.14/tests/test_integration.py +373 -0
  120. devrel_origin-0.2.14/tests/test_iris.py +377 -0
  121. devrel_origin-0.2.14/tests/test_kai.py +590 -0
  122. devrel_origin-0.2.14/tests/test_llm.py +213 -0
  123. devrel_origin-0.2.14/tests/test_llm_backends.py +280 -0
  124. devrel_origin-0.2.14/tests/test_llm_cost_sink.py +94 -0
  125. devrel_origin-0.2.14/tests/test_llm_cost_tracking.py +109 -0
  126. devrel_origin-0.2.14/tests/test_mcp_server.py +386 -0
  127. devrel_origin-0.2.14/tests/test_mox.py +254 -0
  128. devrel_origin-0.2.14/tests/test_mox_instantly.py +150 -0
  129. devrel_origin-0.2.14/tests/test_nova.py +240 -0
  130. devrel_origin-0.2.14/tests/test_pax.py +891 -0
  131. devrel_origin-0.2.14/tests/test_pax_apollo.py +313 -0
  132. devrel_origin-0.2.14/tests/test_pax_instantly.py +174 -0
  133. devrel_origin-0.2.14/tests/test_rex.py +427 -0
  134. devrel_origin-0.2.14/tests/test_rex_apollo.py +136 -0
  135. devrel_origin-0.2.14/tests/test_sage.py +217 -0
  136. devrel_origin-0.2.14/tests/test_search_tools.py +624 -0
  137. devrel_origin-0.2.14/tests/test_sentinel.py +108 -0
  138. devrel_origin-0.2.14/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,354 @@
1
+ Metadata-Version: 2.4
2
+ Name: devrel-origin
3
+ Version: 0.2.14
4
+ Summary: A 15-agent CLI that runs DevRel, sales, and marketing on your repo. BYO Anthropic or OpenRouter key.
5
+ Author-email: Daria Dovzhikova <dovzhikova@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/dovzhikova/devrel-origin
8
+ Project-URL: Repository, https://github.com/dovzhikova/devrel-origin
9
+ Project-URL: Issues, https://github.com/dovzhikova/devrel-origin/issues
10
+ Project-URL: Changelog, https://github.com/dovzhikova/devrel-origin/blob/main/CHANGELOG.md
11
+ Project-URL: Documentation, https://github.com/dovzhikova/devrel-origin/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
+ Requires-Dist: urllib3>=2.7.0
39
+ Provides-Extra: video
40
+ Requires-Dist: openai>=1.50.0; extra == "video"
41
+ Requires-Dist: playwright>=1.49.0; extra == "video"
42
+ Requires-Dist: pyautogui>=0.9.54; extra == "video"
43
+ Provides-Extra: seo
44
+ Requires-Dist: google-api-python-client>=2.150.0; extra == "seo"
45
+ Requires-Dist: google-auth-oauthlib>=1.2.0; extra == "seo"
46
+ Requires-Dist: google-auth-httplib2>=0.2.0; extra == "seo"
47
+ Requires-Dist: beautifulsoup4>=4.12.0; extra == "seo"
48
+ Provides-Extra: geo-google
49
+ Requires-Dist: google-search-results>=2.4.2; extra == "geo-google"
50
+ Provides-Extra: growth
51
+ Requires-Dist: devrel-origin[seo]; extra == "growth"
52
+ Provides-Extra: dev
53
+ Requires-Dist: pytest>=7.4.0; extra == "dev"
54
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
55
+ Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
56
+ Requires-Dist: respx>=0.20.2; extra == "dev"
57
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
58
+ Requires-Dist: mypy>=1.5.0; extra == "dev"
59
+ Requires-Dist: build>=1.0.0; extra == "dev"
60
+ Requires-Dist: twine>=5.0.0; extra == "dev"
61
+ Requires-Dist: devrel-origin[growth,video]; extra == "dev"
62
+ Dynamic: license-file
63
+
64
+ # devrel-origin
65
+
66
+ **A developer-first CLI for AI-powered DevRel, sales, and marketing.**
67
+
68
+ `devrel-origin` is a `pipx`-installable command-line tool that runs a 15-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.
69
+
70
+ 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.
71
+
72
+ > Every deliverable in this repository was produced by the agent system itself.
73
+
74
+ ---
75
+
76
+ ## Quick start
77
+
78
+ First content in five minutes. `devrel init` is now an interactive wizard
79
+ that walks you through scaffold → LLM key → health check → voice tuning →
80
+ first draft in one session.
81
+
82
+ ```bash
83
+ pipx install devrel-origin
84
+
85
+ cd /path/to/your/project
86
+ devrel init # interactive wizard, all the way to first draft
87
+ ```
88
+
89
+ The wizard:
90
+
91
+ 1. **Scaffolds `.devrel/`** with `config.toml`, `voice.md`, `style.md`,
92
+ `slop-blocklist.md`, `kb/`, `deliverables/`, `state.db`
93
+ 2. **Configures an LLM key** — pick Anthropic or OpenRouter (recommended:
94
+ free credits, no waitlist), validates with a one-token ping, writes to
95
+ `.devrel/.env` (chmod 600)
96
+ 3. **Runs a health check** — confirms env, scaffold, schema
97
+ 4. **Opens `voice.md` in `$EDITOR`** so you can drop in 3-5 sample passages
98
+ from your best published content
99
+ 5. **Generates your first content draft** — prompts for topic + type, calls
100
+ Kai through the full editorial pipeline, persists the draft +
101
+ grounding/code-validation trace
102
+
103
+ Skip flags for non-default flows:
104
+
105
+ ```bash
106
+ devrel init --skip-draft # wizard through voice edit, no LLM call
107
+ devrel init --skip-chain # scaffold only, you run auth/doctor/draft yourself
108
+ devrel init --non-interactive --name myproj --url ... --github-repo ...
109
+ # CI shape: scaffold only, no prompts
110
+ ```
111
+
112
+ After onboarding:
113
+
114
+ ```bash
115
+ devrel run # ad-hoc weekly pipeline (all 15 agents)
116
+ devrel schedule install # cron it (Mondays 09:00 UTC default)
117
+ ```
118
+
119
+ > **Why OpenRouter?** Lower onboarding barrier than Anthropic API access (no
120
+ > waitlist, free monthly credits) and supports per-agent model routing.
121
+ > The wizard recommends it.
122
+
123
+ Stuck? See [docs/troubleshooting.md](docs/troubleshooting.md) for the
124
+ common failures (OpenRouter 400, missing keys, ungrounded content,
125
+ quality-gate aborts) and their fixes.
126
+
127
+ After `devrel init`, your repo has a `.devrel/` directory with:
128
+
129
+ ```
130
+ .devrel/
131
+ config.toml # product identity, model selection, budget caps
132
+ voice.md # tone profile + sample passages (commit)
133
+ style.md # house style + per-content targets (commit)
134
+ slop-blocklist.md # banned phrases (commit)
135
+ kb/ # knowledge base, TF-IDF indexed
136
+ deliverables/ # generated outputs
137
+ state.db # SQLite: jobs, costs, checkpoints
138
+ ```
139
+
140
+ The four committed files (`config.toml`, `voice.md`, `style.md`, `slop-blocklist.md`) encode the editorial contract. Diff them like any other source.
141
+
142
+ ---
143
+
144
+ ## Commands
145
+
146
+ ```
147
+ # Bootstrap & health
148
+ devrel init bootstrap .devrel/ in cwd
149
+ devrel doctor [--json] check env, API keys, KB freshness
150
+ devrel cost [--month YYYY-MM] token + USD report from state.db
151
+
152
+ # Pipelines
153
+ devrel run full weekly cycle
154
+ devrel run --health health check only (Watchdog)
155
+ devrel run --agent NAME --task T run a single agent ad-hoc
156
+
157
+ # DevRel
158
+ devrel triage [--days N] GitHub issue triage (Sage)
159
+ devrel listen [--platforms ...] Reddit / HN / X (Echo)
160
+ devrel synthesize theme extraction (Iris)
161
+ devrel experiment HYPOTHESIS A/B + power analysis (Nova)
162
+
163
+ # Content
164
+ devrel content draft PROMPT revision-looped + 5-lever quality (Kai)
165
+ devrel content audit FILE run quality pipeline on existing draft
166
+ devrel content slop FILE run only the anti-slop pass
167
+ devrel docs build AST-based docs (Dex)
168
+ devrel video record SCRIPT screen-recorded tutorial (Vox)
169
+
170
+ # Sales
171
+ devrel intel COMPETITOR
172
+ devrel sales outreach COMPANY
173
+ devrel sales battlecard COMPETITOR
174
+ devrel sales sequence CAMPAIGN
175
+
176
+ # Marketing
177
+ devrel marketing blog TOPIC
178
+ devrel marketing landing TOPIC
179
+ devrel marketing social TOPIC
180
+ devrel marketing campaign BRIEF
181
+
182
+ # Knowledge base
183
+ devrel kb add URL [--category C]
184
+ devrel kb list
185
+ devrel kb refresh
186
+
187
+ # Config & schedule
188
+ devrel config get KEY
189
+ devrel config set KEY VALUE
190
+ devrel schedule install | list | remove
191
+
192
+ # Outputs
193
+ devrel deliverables list
194
+ devrel deliverables show NAME
195
+
196
+ # Analytics (Argus)
197
+ devrel analytics report [--since 7d] [--push] [--push-on-partial]
198
+ devrel analytics history CONTENT_ID
199
+ devrel analytics diff PERIOD_A PERIOD_B
200
+ devrel analytics calibration
201
+ devrel analytics summary [--root PATH]
202
+ ```
203
+
204
+ Global flags on most verbs: `--json` (machine-readable output) and `--quiet`.
205
+
206
+ ---
207
+
208
+ ## Editorial quality pipeline
209
+
210
+ Every content-producing run (`devrel content draft`, `devrel content audit`, plus internal calls from `marketing`, `sales`, `kb`-driven tutorials) flows through 8 stages:
211
+
212
+ ```
213
+ 1. Generate KB-grounded; voice.md + style.md in prompt
214
+ 2. Developmental critique+revise (structure, argument, hook)
215
+ 3. Line edit critique+revise (rhythm, voice fidelity)
216
+ 4. Copy edit critique+revise (grammar, code, consistency)
217
+ 5. Anti-slop regex blocklist + LLM lint; force-rewrite on hit;
218
+ second failure aborts loud with a phrase report
219
+ 6. Reader persona "skeptical senior backend dev" scores 1-10
220
+ 7. Readability Flesch + sentence variance + jargon density
221
+ checked against per-content-type targets
222
+ 8. Brand audit Sentinel (existing 6-dimension audit)
223
+
224
+ → deliverables/ + revision-trace.json (every stage's score + diff)
225
+ ```
226
+
227
+ 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.
228
+
229
+ ---
230
+
231
+ ## How it works internally
232
+
233
+ Hub-and-spoke with 15 agents. Atlas orchestrates; specialists execute across the pipelines.
234
+
235
+ ```
236
+ Atlas (Orchestrator)
237
+ ├── Health: Watchdog (pre-flight) + Sentinel (pre-publish brand audit) + Argus (post-publish performance analyst)
238
+ ├── DevRel: Sage, Echo, Iris, Nova, Kai, Vox, Dex
239
+ └── Sales: Rex, Pax, Mox
240
+ ```
241
+
242
+ The weekly cycle (driven by `devrel run`):
243
+
244
+ ```
245
+ Stage 0: Watchdog (health + budget check)
246
+ Stage 1: Sage + Echo + Dex parallel
247
+ Stage 2: Rex + Iris parallel
248
+ Stage 3: Nova + Kai parallel (Kai routes through quality pipeline)
249
+ Stage 4: Vox
250
+ Stage 5: Sentinel brand audit
251
+ Stage 5b: Argus post-publish content performance analysis
252
+ Stage 6: Instantly sync, OKR compilation, Sheets publish, digest
253
+ ```
254
+
255
+ 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.
256
+
257
+ 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.
258
+
259
+ ---
260
+
261
+ ## Configuration
262
+
263
+ `.devrel/config.toml` example:
264
+
265
+ ```toml
266
+ [project]
267
+ name = "openclaw"
268
+ url = "https://openclaw.ai"
269
+ github_repo = "openclaw/openclaw"
270
+
271
+ [model]
272
+ default = "claude-sonnet-4-6"
273
+ cheap = "claude-haiku-4-5-20251001"
274
+ opus_opt_in = true
275
+
276
+ [budget]
277
+ monthly_usd = 100.0
278
+ warn_at_pct = 80
279
+ ```
280
+
281
+ Edit with `devrel config set <key> <value>` or directly in your editor.
282
+
283
+ ### Environment variables
284
+
285
+ | Variable | Required | Used by |
286
+ |----------|----------|---------|
287
+ | `ANTHROPIC_API_KEY` | yes | every LLM-using verb |
288
+ | `GITHUB_TOKEN` | for triage | Sage |
289
+ | `FIRECRAWL_API_KEY` | for KB harvest + intel | `kb add`, Echo, Rex |
290
+ | `BRAVE_API_KEY` | optional fallback | search |
291
+ | `INSTANTLY_API_KEY` | for cold-email sync | Pax, Mox |
292
+ | `APOLLO_API_KEY` | for lead enrichment | Rex, Pax |
293
+ | `TELEGRAM_BOT_TOKEN` | for digests | Atlas pipeline |
294
+ | `EMAIL_SENDER` / `EMAIL_PASSWORD` | for digests | Atlas pipeline |
295
+ | `OPENAI_API_KEY` | for video TTS | Vox |
296
+
297
+ `.env` files at the project root are loaded automatically. Cross-project shared keys can live at `~/.devrel/secrets.env`.
298
+
299
+ ---
300
+
301
+ ## Retargeting to another product
302
+
303
+ ```bash
304
+ cd /path/to/other-project
305
+ devrel init --name otherproduct --url https://otherproduct.dev --github-repo owner/otherproduct
306
+ devrel kb add https://otherproduct.dev/docs --category docs
307
+ # edit voice.md / style.md / slop-blocklist.md to match the other product's voice
308
+ devrel doctor
309
+ devrel run
310
+ ```
311
+
312
+ The agent system is product-agnostic. Per-project config + KB + voice files do all the targeting.
313
+
314
+ ---
315
+
316
+ ## Documentation
317
+
318
+ The user-facing docs live in [`docs/`](docs/):
319
+
320
+ - [`docs/quickstart.md`](docs/quickstart.md) — install, configure an LLM key, ship your first grounded draft in 5 minutes
321
+ - [`docs/troubleshooting.md`](docs/troubleshooting.md) — common failures and fixes (OpenRouter 400, missing keys, ungrounded content, quality-gate aborts)
322
+ - [`docs/agents/argus.md`](docs/agents/argus.md) — content performance analyst, the 13th agent
323
+ - [`docs/cli/analytics.md`](docs/cli/analytics.md) — full reference for the `devrel analytics` subgroup
324
+ - [`docs/cookbook.md`](docs/cookbook.md) — common recipes (calibration, weekly cron, multi-project rollups)
325
+
326
+ Internal docs (architecture specs, implementation plans) live in [`docs/superpowers/`](docs/superpowers/).
327
+
328
+ ---
329
+
330
+ ## Tech stack
331
+
332
+ | Component | Choice |
333
+ |---|---|
334
+ | Language | Python 3.12+ |
335
+ | CLI framework | Typer + Rich |
336
+ | Agent SDK | Claude Agent SDK |
337
+ | HTTP | httpx (async) |
338
+ | Default model | Claude Sonnet 4.6 (Haiku for cheap quality stages, Opus opt-in) |
339
+ | Stats | scipy (power analysis, Bayesian eval) |
340
+ | Video | Playwright + FFmpeg + OpenAI TTS |
341
+ | Storage | SQLite per project (.devrel/state.db) |
342
+ | Tests | pytest + pytest-asyncio + respx |
343
+
344
+ ---
345
+
346
+ ## Author
347
+
348
+ **Daria Dovzhikova** — DevTools Growth Strategist & AI Agent Builder
349
+ - 12+ years in DevTools (JetBrains, Huawei, Lightrun, Odigos)
350
+ - [dariadovzhikova.com](https://dariadovzhikova.com)
351
+
352
+ ---
353
+
354
+ MIT License
@@ -0,0 +1,291 @@
1
+ # devrel-origin
2
+
3
+ **A developer-first CLI for AI-powered DevRel, sales, and marketing.**
4
+
5
+ `devrel-origin` is a `pipx`-installable command-line tool that runs a 15-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
+ First content in five minutes. `devrel init` is now an interactive wizard
16
+ that walks you through scaffold → LLM key → health check → voice tuning →
17
+ first draft in one session.
18
+
19
+ ```bash
20
+ pipx install devrel-origin
21
+
22
+ cd /path/to/your/project
23
+ devrel init # interactive wizard, all the way to first draft
24
+ ```
25
+
26
+ The wizard:
27
+
28
+ 1. **Scaffolds `.devrel/`** with `config.toml`, `voice.md`, `style.md`,
29
+ `slop-blocklist.md`, `kb/`, `deliverables/`, `state.db`
30
+ 2. **Configures an LLM key** — pick Anthropic or OpenRouter (recommended:
31
+ free credits, no waitlist), validates with a one-token ping, writes to
32
+ `.devrel/.env` (chmod 600)
33
+ 3. **Runs a health check** — confirms env, scaffold, schema
34
+ 4. **Opens `voice.md` in `$EDITOR`** so you can drop in 3-5 sample passages
35
+ from your best published content
36
+ 5. **Generates your first content draft** — prompts for topic + type, calls
37
+ Kai through the full editorial pipeline, persists the draft +
38
+ grounding/code-validation trace
39
+
40
+ Skip flags for non-default flows:
41
+
42
+ ```bash
43
+ devrel init --skip-draft # wizard through voice edit, no LLM call
44
+ devrel init --skip-chain # scaffold only, you run auth/doctor/draft yourself
45
+ devrel init --non-interactive --name myproj --url ... --github-repo ...
46
+ # CI shape: scaffold only, no prompts
47
+ ```
48
+
49
+ After onboarding:
50
+
51
+ ```bash
52
+ devrel run # ad-hoc weekly pipeline (all 15 agents)
53
+ devrel schedule install # cron it (Mondays 09:00 UTC default)
54
+ ```
55
+
56
+ > **Why OpenRouter?** Lower onboarding barrier than Anthropic API access (no
57
+ > waitlist, free monthly credits) and supports per-agent model routing.
58
+ > The wizard recommends it.
59
+
60
+ Stuck? See [docs/troubleshooting.md](docs/troubleshooting.md) for the
61
+ common failures (OpenRouter 400, missing keys, ungrounded content,
62
+ quality-gate aborts) and their fixes.
63
+
64
+ After `devrel init`, your repo has a `.devrel/` directory with:
65
+
66
+ ```
67
+ .devrel/
68
+ config.toml # product identity, model selection, budget caps
69
+ voice.md # tone profile + sample passages (commit)
70
+ style.md # house style + per-content targets (commit)
71
+ slop-blocklist.md # banned phrases (commit)
72
+ kb/ # knowledge base, TF-IDF indexed
73
+ deliverables/ # generated outputs
74
+ state.db # SQLite: jobs, costs, checkpoints
75
+ ```
76
+
77
+ The four committed files (`config.toml`, `voice.md`, `style.md`, `slop-blocklist.md`) encode the editorial contract. Diff them like any other source.
78
+
79
+ ---
80
+
81
+ ## Commands
82
+
83
+ ```
84
+ # Bootstrap & health
85
+ devrel init bootstrap .devrel/ in cwd
86
+ devrel doctor [--json] check env, API keys, KB freshness
87
+ devrel cost [--month YYYY-MM] token + USD report from state.db
88
+
89
+ # Pipelines
90
+ devrel run full weekly cycle
91
+ devrel run --health health check only (Watchdog)
92
+ devrel run --agent NAME --task T run a single agent ad-hoc
93
+
94
+ # DevRel
95
+ devrel triage [--days N] GitHub issue triage (Sage)
96
+ devrel listen [--platforms ...] Reddit / HN / X (Echo)
97
+ devrel synthesize theme extraction (Iris)
98
+ devrel experiment HYPOTHESIS A/B + power analysis (Nova)
99
+
100
+ # Content
101
+ devrel content draft PROMPT revision-looped + 5-lever quality (Kai)
102
+ devrel content audit FILE run quality pipeline on existing draft
103
+ devrel content slop FILE run only the anti-slop pass
104
+ devrel docs build AST-based docs (Dex)
105
+ devrel video record SCRIPT screen-recorded tutorial (Vox)
106
+
107
+ # Sales
108
+ devrel intel COMPETITOR
109
+ devrel sales outreach COMPANY
110
+ devrel sales battlecard COMPETITOR
111
+ devrel sales sequence CAMPAIGN
112
+
113
+ # Marketing
114
+ devrel marketing blog TOPIC
115
+ devrel marketing landing TOPIC
116
+ devrel marketing social TOPIC
117
+ devrel marketing campaign BRIEF
118
+
119
+ # Knowledge base
120
+ devrel kb add URL [--category C]
121
+ devrel kb list
122
+ devrel kb refresh
123
+
124
+ # Config & schedule
125
+ devrel config get KEY
126
+ devrel config set KEY VALUE
127
+ devrel schedule install | list | remove
128
+
129
+ # Outputs
130
+ devrel deliverables list
131
+ devrel deliverables show NAME
132
+
133
+ # Analytics (Argus)
134
+ devrel analytics report [--since 7d] [--push] [--push-on-partial]
135
+ devrel analytics history CONTENT_ID
136
+ devrel analytics diff PERIOD_A PERIOD_B
137
+ devrel analytics calibration
138
+ devrel analytics summary [--root PATH]
139
+ ```
140
+
141
+ Global flags on most verbs: `--json` (machine-readable output) and `--quiet`.
142
+
143
+ ---
144
+
145
+ ## Editorial quality pipeline
146
+
147
+ Every content-producing run (`devrel content draft`, `devrel content audit`, plus internal calls from `marketing`, `sales`, `kb`-driven tutorials) flows through 8 stages:
148
+
149
+ ```
150
+ 1. Generate KB-grounded; voice.md + style.md in prompt
151
+ 2. Developmental critique+revise (structure, argument, hook)
152
+ 3. Line edit critique+revise (rhythm, voice fidelity)
153
+ 4. Copy edit critique+revise (grammar, code, consistency)
154
+ 5. Anti-slop regex blocklist + LLM lint; force-rewrite on hit;
155
+ second failure aborts loud with a phrase report
156
+ 6. Reader persona "skeptical senior backend dev" scores 1-10
157
+ 7. Readability Flesch + sentence variance + jargon density
158
+ checked against per-content-type targets
159
+ 8. Brand audit Sentinel (existing 6-dimension audit)
160
+
161
+ → deliverables/ + revision-trace.json (every stage's score + diff)
162
+ ```
163
+
164
+ 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.
165
+
166
+ ---
167
+
168
+ ## How it works internally
169
+
170
+ Hub-and-spoke with 15 agents. Atlas orchestrates; specialists execute across the pipelines.
171
+
172
+ ```
173
+ Atlas (Orchestrator)
174
+ ├── Health: Watchdog (pre-flight) + Sentinel (pre-publish brand audit) + Argus (post-publish performance analyst)
175
+ ├── DevRel: Sage, Echo, Iris, Nova, Kai, Vox, Dex
176
+ └── Sales: Rex, Pax, Mox
177
+ ```
178
+
179
+ The weekly cycle (driven by `devrel run`):
180
+
181
+ ```
182
+ Stage 0: Watchdog (health + budget check)
183
+ Stage 1: Sage + Echo + Dex parallel
184
+ Stage 2: Rex + Iris parallel
185
+ Stage 3: Nova + Kai parallel (Kai routes through quality pipeline)
186
+ Stage 4: Vox
187
+ Stage 5: Sentinel brand audit
188
+ Stage 5b: Argus post-publish content performance analysis
189
+ Stage 6: Instantly sync, OKR compilation, Sheets publish, digest
190
+ ```
191
+
192
+ 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.
193
+
194
+ 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.
195
+
196
+ ---
197
+
198
+ ## Configuration
199
+
200
+ `.devrel/config.toml` example:
201
+
202
+ ```toml
203
+ [project]
204
+ name = "openclaw"
205
+ url = "https://openclaw.ai"
206
+ github_repo = "openclaw/openclaw"
207
+
208
+ [model]
209
+ default = "claude-sonnet-4-6"
210
+ cheap = "claude-haiku-4-5-20251001"
211
+ opus_opt_in = true
212
+
213
+ [budget]
214
+ monthly_usd = 100.0
215
+ warn_at_pct = 80
216
+ ```
217
+
218
+ Edit with `devrel config set <key> <value>` or directly in your editor.
219
+
220
+ ### Environment variables
221
+
222
+ | Variable | Required | Used by |
223
+ |----------|----------|---------|
224
+ | `ANTHROPIC_API_KEY` | yes | every LLM-using verb |
225
+ | `GITHUB_TOKEN` | for triage | Sage |
226
+ | `FIRECRAWL_API_KEY` | for KB harvest + intel | `kb add`, Echo, Rex |
227
+ | `BRAVE_API_KEY` | optional fallback | search |
228
+ | `INSTANTLY_API_KEY` | for cold-email sync | Pax, Mox |
229
+ | `APOLLO_API_KEY` | for lead enrichment | Rex, Pax |
230
+ | `TELEGRAM_BOT_TOKEN` | for digests | Atlas pipeline |
231
+ | `EMAIL_SENDER` / `EMAIL_PASSWORD` | for digests | Atlas pipeline |
232
+ | `OPENAI_API_KEY` | for video TTS | Vox |
233
+
234
+ `.env` files at the project root are loaded automatically. Cross-project shared keys can live at `~/.devrel/secrets.env`.
235
+
236
+ ---
237
+
238
+ ## Retargeting to another product
239
+
240
+ ```bash
241
+ cd /path/to/other-project
242
+ devrel init --name otherproduct --url https://otherproduct.dev --github-repo owner/otherproduct
243
+ devrel kb add https://otherproduct.dev/docs --category docs
244
+ # edit voice.md / style.md / slop-blocklist.md to match the other product's voice
245
+ devrel doctor
246
+ devrel run
247
+ ```
248
+
249
+ The agent system is product-agnostic. Per-project config + KB + voice files do all the targeting.
250
+
251
+ ---
252
+
253
+ ## Documentation
254
+
255
+ The user-facing docs live in [`docs/`](docs/):
256
+
257
+ - [`docs/quickstart.md`](docs/quickstart.md) — install, configure an LLM key, ship your first grounded draft in 5 minutes
258
+ - [`docs/troubleshooting.md`](docs/troubleshooting.md) — common failures and fixes (OpenRouter 400, missing keys, ungrounded content, quality-gate aborts)
259
+ - [`docs/agents/argus.md`](docs/agents/argus.md) — content performance analyst, the 13th agent
260
+ - [`docs/cli/analytics.md`](docs/cli/analytics.md) — full reference for the `devrel analytics` subgroup
261
+ - [`docs/cookbook.md`](docs/cookbook.md) — common recipes (calibration, weekly cron, multi-project rollups)
262
+
263
+ Internal docs (architecture specs, implementation plans) live in [`docs/superpowers/`](docs/superpowers/).
264
+
265
+ ---
266
+
267
+ ## Tech stack
268
+
269
+ | Component | Choice |
270
+ |---|---|
271
+ | Language | Python 3.12+ |
272
+ | CLI framework | Typer + Rich |
273
+ | Agent SDK | Claude Agent SDK |
274
+ | HTTP | httpx (async) |
275
+ | Default model | Claude Sonnet 4.6 (Haiku for cheap quality stages, Opus opt-in) |
276
+ | Stats | scipy (power analysis, Bayesian eval) |
277
+ | Video | Playwright + FFmpeg + OpenAI TTS |
278
+ | Storage | SQLite per project (.devrel/state.db) |
279
+ | Tests | pytest + pytest-asyncio + respx |
280
+
281
+ ---
282
+
283
+ ## Author
284
+
285
+ **Daria Dovzhikova** — DevTools Growth Strategist & AI Agent Builder
286
+ - 12+ years in DevTools (JetBrains, Huawei, Lightrun, Odigos)
287
+ - [dariadovzhikova.com](https://dariadovzhikova.com)
288
+
289
+ ---
290
+
291
+ MIT License