@arvoretech/hub 0.1.0 → 0.1.1
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.
- package/README.md +343 -0
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
# Repo Hub
|
|
2
|
+
|
|
3
|
+
**You describe a feature. Your AI codes it, reviews it, tests it, and opens a pull request.**
|
|
4
|
+
|
|
5
|
+
Repo Hub is a configuration file (`hub.yaml`) that teaches your AI coding assistant how your company builds software. You declare your repositories, your tools, and your development workflow. The AI follows it — from understanding requirements to delivering a tested PR.
|
|
6
|
+
|
|
7
|
+
Think of it like a **docker-compose for AI-powered development**. Instead of defining containers, you define how your AI should work.
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
You: "Add profile editing to user settings"
|
|
11
|
+
↓
|
|
12
|
+
AI refines requirements → writes backend + frontend → reviews code → runs tests → opens PR → notifies Slack
|
|
13
|
+
↓
|
|
14
|
+
You: review the PR
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Built and battle-tested by [Arvore](https://arvore.com.br), where 10 engineers use this every day to ship real software.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## The 30-second version
|
|
22
|
+
|
|
23
|
+
**Without Repo Hub**, your AI coding assistant:
|
|
24
|
+
- Sees one repo at a time (doesn't know the API changed when editing the frontend)
|
|
25
|
+
- Does one thing at a time (you manually orchestrate every step)
|
|
26
|
+
- Can't use your tools (can't check logs, query databases, or run browser tests)
|
|
27
|
+
|
|
28
|
+
**With Repo Hub**, you write a config file that tells the AI:
|
|
29
|
+
- **Which repos** to work on (and it sees all of them at once)
|
|
30
|
+
- **Which tools** it can use (databases, monitoring, browser testing, etc.)
|
|
31
|
+
- **What workflow** to follow (refine → code → review → test → deliver)
|
|
32
|
+
|
|
33
|
+
One CLI command generates the config your editor needs. Done.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## What is this, actually?
|
|
38
|
+
|
|
39
|
+
### It's a YAML file
|
|
40
|
+
|
|
41
|
+
Everything starts with `hub.yaml`. Here's a minimal example:
|
|
42
|
+
|
|
43
|
+
```yaml
|
|
44
|
+
name: my-company
|
|
45
|
+
|
|
46
|
+
repos:
|
|
47
|
+
- name: api
|
|
48
|
+
url: git@github.com:company/api.git
|
|
49
|
+
tech: nestjs
|
|
50
|
+
- name: frontend
|
|
51
|
+
url: git@github.com:company/frontend.git
|
|
52
|
+
tech: nextjs
|
|
53
|
+
|
|
54
|
+
mcps:
|
|
55
|
+
- name: postgresql
|
|
56
|
+
- name: playwright
|
|
57
|
+
|
|
58
|
+
workflow:
|
|
59
|
+
pipeline:
|
|
60
|
+
- step: refinement
|
|
61
|
+
- step: coding
|
|
62
|
+
- step: review
|
|
63
|
+
- step: qa
|
|
64
|
+
- step: deliver
|
|
65
|
+
actions: [create-pr, notify-slack]
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### It becomes editor instructions
|
|
69
|
+
|
|
70
|
+
When you run `hub generate --editor <editor>`, the CLI reads your YAML and produces config files your editor understands:
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
hub generate --editor cursor
|
|
74
|
+
→ .cursor/rules/orchestrator.mdc (the AI's playbook)
|
|
75
|
+
→ .cursor/agents/*.md (specialized AI roles)
|
|
76
|
+
→ .cursor/skills/*.md (coding patterns and conventions)
|
|
77
|
+
→ .cursor/mcp.json (tool connections)
|
|
78
|
+
|
|
79
|
+
hub generate --editor kiro
|
|
80
|
+
→ .kiro/steering/orchestrator.md (the AI's playbook)
|
|
81
|
+
→ .kiro/steering/agent-*.md (specialized AI roles)
|
|
82
|
+
→ .kiro/skills/*.md (coding patterns and conventions)
|
|
83
|
+
→ .kiro/settings/mcp.json (tool connections)
|
|
84
|
+
→ AGENTS.md (standard agents.md)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Your editor is the runtime
|
|
88
|
+
|
|
89
|
+
There's no server. No daemon. No separate process. Your AI editor (Cursor, Claude Code, Kiro) reads the generated config and follows the workflow automatically when you ask it to build something.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Key concepts (the jargon, explained)
|
|
94
|
+
|
|
95
|
+
| Concept | What it means | Analogy |
|
|
96
|
+
|---------|--------------|---------|
|
|
97
|
+
| **Agents** | Specialized AI roles — one refines, one codes, one reviews, one tests | Team members with specific jobs |
|
|
98
|
+
| **MCPs** | Plugins that connect AI to your tools (databases, monitoring, etc.) | Browser extensions, but for AI |
|
|
99
|
+
| **Skills** | Written docs that teach AI your coding patterns and conventions | Onboarding docs for a new hire |
|
|
100
|
+
| **Pipeline** | The step-by-step workflow the AI follows for every feature | A CI/CD pipeline, but for the entire dev process |
|
|
101
|
+
| **Hub Workspace** | A folder containing all your repos (each keeps its own git) | A VS Code workspace, but for AI |
|
|
102
|
+
|
|
103
|
+
### What are MCPs?
|
|
104
|
+
|
|
105
|
+
MCP stands for **Model Context Protocol**. In practice, it's a standard way to give AI access to external tools. Instead of you copy-pasting database schemas or log outputs, the AI queries them directly.
|
|
106
|
+
|
|
107
|
+
Examples:
|
|
108
|
+
- **Database MCP**: AI queries your PostgreSQL schema to write correct migrations
|
|
109
|
+
- **Datadog MCP**: AI reads error logs to debug a production issue
|
|
110
|
+
- **Playwright MCP**: AI opens a browser and clicks through your app to test it
|
|
111
|
+
- **AWS Secrets MCP**: AI reads environment config without you sharing credentials
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Quick Start
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
npx @arvoretech/hub init my-hub
|
|
119
|
+
cd my-hub
|
|
120
|
+
|
|
121
|
+
npx @arvoretech/hub add-repo git@github.com:company/api.git --tech nestjs
|
|
122
|
+
npx @arvoretech/hub add-repo git@github.com:company/frontend.git --tech nextjs
|
|
123
|
+
|
|
124
|
+
npx @arvoretech/hub setup
|
|
125
|
+
|
|
126
|
+
npx @arvoretech/hub generate --editor cursor
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Open in your editor (Cursor, Kiro, etc.). Describe a feature. Watch it happen.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## What does the AI actually do?
|
|
134
|
+
|
|
135
|
+
Here's a concrete example of what happens when you say _"Add profile editing to the user settings page"_:
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
1. REFINEMENT
|
|
139
|
+
The AI asks: "Should users be able to change their email?
|
|
140
|
+
Should there be an avatar upload? What fields are editable?"
|
|
141
|
+
→ Writes a requirements doc
|
|
142
|
+
|
|
143
|
+
2. CODING (parallel)
|
|
144
|
+
Backend agent: Creates PATCH /users/profile endpoint
|
|
145
|
+
Frontend agent: Builds the settings form with validation
|
|
146
|
+
→ Each writes in the correct repo, following your patterns
|
|
147
|
+
|
|
148
|
+
3. REVIEW
|
|
149
|
+
Review agent: Checks code against the requirements doc
|
|
150
|
+
"The frontend doesn't handle the avatar upload error case"
|
|
151
|
+
→ Coding agent fixes it
|
|
152
|
+
|
|
153
|
+
4. QA
|
|
154
|
+
QA agent: Opens a browser, fills in the form, submits, verifies
|
|
155
|
+
→ Reports pass/fail with screenshots
|
|
156
|
+
|
|
157
|
+
5. DELIVERY
|
|
158
|
+
Creates PRs in each repo
|
|
159
|
+
Posts summary in #eng-prs on Slack
|
|
160
|
+
Updates the task in Linear
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**You review the PRs. That's your job now.**
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Not a monorepo
|
|
168
|
+
|
|
169
|
+
This is important: **your repos stay completely independent**. Their own git history, their own branches, their own PRs. Repo Hub doesn't merge anything.
|
|
170
|
+
|
|
171
|
+
It's a **workspace layer** — a folder that contains your repos side by side so the AI can see them all at once. Like opening multiple projects in VS Code, but with shared context.
|
|
172
|
+
|
|
173
|
+
- No migration needed
|
|
174
|
+
- No shared build system
|
|
175
|
+
- No lock-in
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## The full hub.yaml
|
|
180
|
+
|
|
181
|
+
Here's what a production config looks like:
|
|
182
|
+
|
|
183
|
+
```yaml
|
|
184
|
+
name: my-company
|
|
185
|
+
|
|
186
|
+
repos:
|
|
187
|
+
- name: api
|
|
188
|
+
path: ./api
|
|
189
|
+
url: git@github.com:company/api.git
|
|
190
|
+
tech: nestjs
|
|
191
|
+
env_file: .env
|
|
192
|
+
commands:
|
|
193
|
+
install: pnpm install
|
|
194
|
+
dev: pnpm dev
|
|
195
|
+
build: pnpm build
|
|
196
|
+
lint: pnpm lint
|
|
197
|
+
test: pnpm test
|
|
198
|
+
skills: [backend-nestjs]
|
|
199
|
+
|
|
200
|
+
- name: frontend
|
|
201
|
+
path: ./frontend
|
|
202
|
+
url: git@github.com:company/frontend.git
|
|
203
|
+
tech: nextjs
|
|
204
|
+
env_file: .env.local
|
|
205
|
+
commands:
|
|
206
|
+
install: pnpm install
|
|
207
|
+
dev: pnpm dev
|
|
208
|
+
build: pnpm build
|
|
209
|
+
|
|
210
|
+
services:
|
|
211
|
+
- name: postgres
|
|
212
|
+
image: postgres:16
|
|
213
|
+
port: 5432
|
|
214
|
+
- name: redis
|
|
215
|
+
image: redis:7-alpine
|
|
216
|
+
port: 6379
|
|
217
|
+
|
|
218
|
+
env:
|
|
219
|
+
profiles:
|
|
220
|
+
local:
|
|
221
|
+
description: "Local development"
|
|
222
|
+
staging:
|
|
223
|
+
aws_profile: my-company-stg
|
|
224
|
+
secrets:
|
|
225
|
+
api: api-staging-secret
|
|
226
|
+
prod:
|
|
227
|
+
aws_profile: my-company-prd
|
|
228
|
+
secrets:
|
|
229
|
+
api: api-prod-secret
|
|
230
|
+
|
|
231
|
+
mcps:
|
|
232
|
+
- name: postgresql
|
|
233
|
+
package: "@arvoretech/postgresql-mcp"
|
|
234
|
+
- name: playwright
|
|
235
|
+
package: "@playwright/mcp"
|
|
236
|
+
- name: datadog
|
|
237
|
+
package: "@arvoretech/datadog-mcp"
|
|
238
|
+
|
|
239
|
+
integrations:
|
|
240
|
+
github:
|
|
241
|
+
pr_branch_pattern: "{linear_id}-{slug}"
|
|
242
|
+
slack:
|
|
243
|
+
channels:
|
|
244
|
+
prs: "#eng-prs"
|
|
245
|
+
linear:
|
|
246
|
+
team: Engineering
|
|
247
|
+
|
|
248
|
+
workflow:
|
|
249
|
+
pipeline:
|
|
250
|
+
- step: refinement
|
|
251
|
+
agent: refinement
|
|
252
|
+
output: refinement.md
|
|
253
|
+
- step: coding
|
|
254
|
+
agents: [coding-backend, coding-frontend]
|
|
255
|
+
parallel: true
|
|
256
|
+
- step: review
|
|
257
|
+
agent: code-reviewer
|
|
258
|
+
output: code-review.md
|
|
259
|
+
- step: qa
|
|
260
|
+
agents: [qa-backend, qa-frontend]
|
|
261
|
+
parallel: true
|
|
262
|
+
tools: [playwright]
|
|
263
|
+
- step: deliver
|
|
264
|
+
actions: [create-pr, notify-slack]
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Available MCPs
|
|
270
|
+
|
|
271
|
+
| MCP | What AI can do with it |
|
|
272
|
+
|-----|----------------------|
|
|
273
|
+
| `@arvoretech/postgresql-mcp` | Query your database schema and data (read-only) |
|
|
274
|
+
| `@arvoretech/mysql-mcp` | Query MySQL databases (read-only) |
|
|
275
|
+
| `@arvoretech/aws-secrets-manager-mcp` | Read environment configuration and secrets |
|
|
276
|
+
| `@arvoretech/datadog-mcp` | Read metrics, logs, and traces for debugging |
|
|
277
|
+
| `@arvoretech/npm-registry-mcp` | Check package security and versions |
|
|
278
|
+
| `@arvoretech/tempmail-mcp` | Create temporary emails for E2E test flows |
|
|
279
|
+
| `@playwright/mcp` | Control a browser to test your app |
|
|
280
|
+
|
|
281
|
+
MCPs are maintained at [arvore-mcp-servers](https://github.com/arvoreeducacao/arvore-mcp-servers).
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## Supported Editors
|
|
286
|
+
|
|
287
|
+
| Editor | Status | Command |
|
|
288
|
+
|--------|--------|---------|
|
|
289
|
+
| Cursor | Supported | `hub generate --editor cursor` |
|
|
290
|
+
| Claude Code | Supported | `hub generate --editor claude-code` |
|
|
291
|
+
| Kiro | Supported | `hub generate --editor kiro` |
|
|
292
|
+
| Windsurf | Planned | — |
|
|
293
|
+
| Copilot Workspace | Planned | — |
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## Real Results
|
|
298
|
+
|
|
299
|
+
At Arvore, Repo Hub powers our entire development workflow:
|
|
300
|
+
|
|
301
|
+
- **10x productivity** with a team 3x smaller
|
|
302
|
+
- **9 repositories** managed as a single AI-aware workspace
|
|
303
|
+
- **11 specialized AI roles** collaborating in structured pipelines
|
|
304
|
+
- **19 tool connections** giving AI access to databases, monitoring, secrets, and testing
|
|
305
|
+
|
|
306
|
+
This is not a demo. We ship production software with this every week.
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## Project Structure
|
|
311
|
+
|
|
312
|
+
```
|
|
313
|
+
repo-hub-manifest/
|
|
314
|
+
├── packages/cli/ # @arvoretech/hub CLI
|
|
315
|
+
├── agents/ # Agent templates
|
|
316
|
+
├── skills/ # Built-in coding pattern libraries
|
|
317
|
+
├── docs/ # Reference documentation
|
|
318
|
+
└── examples/ # Example configurations
|
|
319
|
+
├── arvore/ # Real-world: 9 repos, full pipeline
|
|
320
|
+
└── nestjs-nextjs/ # Minimal: 2 repos
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
## Contributing
|
|
326
|
+
|
|
327
|
+
We welcome contributions. Areas where help is needed:
|
|
328
|
+
|
|
329
|
+
- **Editor adapters** — Windsurf, Copilot Workspace
|
|
330
|
+
- **Skills** — More frameworks (Go, Python/Django, Java/Spring, Vue, Svelte)
|
|
331
|
+
- **Agent patterns** — New roles, better prompts, workflow variations
|
|
332
|
+
- **MCPs** — New tool integrations
|
|
333
|
+
- **Documentation** — Guides, tutorials, videos
|
|
334
|
+
|
|
335
|
+
## License
|
|
336
|
+
|
|
337
|
+
MIT
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
<p align="center">
|
|
342
|
+
Built with AI, for AI, by <a href="https://arvore.com.br">Arvore</a>
|
|
343
|
+
</p>
|