@yemi33/minions 0.1.1886 → 0.1.1888

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/docs/index.html CHANGED
@@ -1,268 +1 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Minions — Multi-Agent AI Dev Team</title>
7
- <meta name="description" content="5 autonomous AI agents, one engine, one dashboard. Minions orchestrates Claude-powered agents to plan, implement, review, and ship code autonomously.">
8
- <style>
9
- :root { --bg: #0d1117; --surface: #161b22; --border: #30363d; --text: #c9d1d9; --muted: #8b949e; --blue: #58a6ff; --green: #3fb950; --yellow: #d29922; --red: #f85149; --purple: #bc8cff; }
10
- * { margin: 0; padding: 0; box-sizing: border-box; }
11
- body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: var(--bg); color: var(--text); line-height: 1.6; }
12
-
13
- /* Hero */
14
- .hero { text-align: center; padding: 80px 20px 60px; }
15
- .hero h1 { font-size: 3.5em; color: var(--blue); margin-bottom: 12px; letter-spacing: -1px; }
16
- .hero h1 span { color: var(--text); }
17
- .hero .tagline { font-size: 1.3em; color: var(--muted); max-width: 600px; margin: 0 auto 32px; }
18
- .hero-badges { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-bottom: 32px; }
19
- .hero-badge { display: inline-flex; align-items: center; gap: 6px; padding: 6px 14px; border-radius: 20px; font-size: 13px; font-weight: 600; border: 1px solid var(--border); background: var(--surface); }
20
- .hero-badge.green { color: var(--green); border-color: rgba(63,185,80,0.3); }
21
- .hero-badge.blue { color: var(--blue); border-color: rgba(88,166,255,0.3); }
22
- .hero-badge.yellow { color: var(--yellow); border-color: rgba(210,153,34,0.3); }
23
- .hero-badge.purple { color: var(--purple); border-color: rgba(188,140,255,0.3); }
24
- .cta { display: inline-flex; gap: 12px; flex-wrap: wrap; justify-content: center; }
25
- .cta a { padding: 12px 28px; border-radius: 8px; font-weight: 600; font-size: 15px; text-decoration: none; transition: all 0.2s; }
26
- .cta-primary { background: var(--blue); color: var(--bg); }
27
- .cta-primary:hover { background: #79c0ff; }
28
- .cta-secondary { background: var(--surface); color: var(--text); border: 1px solid var(--border); }
29
- .cta-secondary:hover { border-color: var(--blue); color: var(--blue); }
30
-
31
- /* Container */
32
- .container { max-width: 1100px; margin: 0 auto; padding: 0 20px; }
33
-
34
- /* Agents strip */
35
- .agents-strip { display: flex; justify-content: center; gap: 24px; padding: 40px 20px; flex-wrap: wrap; }
36
- .agent-pill { display: flex; align-items: center; gap: 8px; padding: 10px 18px; background: var(--surface); border: 1px solid var(--border); border-radius: 12px; }
37
- .agent-pill .emoji { font-size: 1.4em; }
38
- .agent-pill .name { font-weight: 700; color: var(--text); font-size: 14px; }
39
- .agent-pill .role { color: var(--muted); font-size: 12px; }
40
-
41
- /* Features grid */
42
- .features { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; padding: 40px 0; }
43
- .feature { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 24px; }
44
- .feature h3 { color: var(--blue); font-size: 1em; margin-bottom: 6px; }
45
- .feature p { color: var(--muted); font-size: 13px; line-height: 1.5; }
46
-
47
- /* Scenario sections */
48
- .scenario { margin: 60px 0; }
49
- .scenario-header { display: flex; align-items: center; gap: 14px; margin-bottom: 12px; }
50
- .scenario-num { background: var(--blue); color: var(--bg); font-weight: 700; width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 15px; flex-shrink: 0; }
51
- .scenario h2 { font-size: 1.5em; color: #f0f6fc; }
52
- .scenario > p { color: var(--muted); margin-bottom: 16px; max-width: 800px; font-size: 15px; }
53
- .demo-frame { border: 1px solid var(--border); border-radius: 10px; overflow: hidden; box-shadow: 0 8px 32px rgba(0,0,0,0.4); }
54
- .demo-frame img { width: 100%; display: block; }
55
- .demo-caption { background: var(--surface); padding: 10px 18px; font-size: 13px; color: var(--muted); border-top: 1px solid var(--border); }
56
-
57
- /* Inline badges */
58
- .badge { display: inline-block; padding: 2px 8px; border-radius: 4px; font-size: 11px; font-weight: 600; }
59
- .badge-green { background: rgba(63,185,80,0.15); color: var(--green); border: 1px solid rgba(63,185,80,0.3); }
60
- .badge-blue { background: rgba(88,166,255,0.15); color: var(--blue); border: 1px solid rgba(88,166,255,0.3); }
61
- .badge-yellow { background: rgba(210,153,34,0.15); color: var(--yellow); border: 1px solid rgba(210,153,34,0.3); }
62
- .badge-red { background: rgba(248,81,73,0.15); color: var(--red); border: 1px solid rgba(248,81,73,0.3); }
63
- .hl { color: var(--green); font-weight: 600; }
64
-
65
- /* Quick start */
66
- .quickstart { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 32px; margin: 60px 0; }
67
- .quickstart h2 { color: var(--blue); margin-bottom: 16px; }
68
- .quickstart pre { background: var(--bg); border: 1px solid var(--border); border-radius: 8px; padding: 16px 20px; overflow-x: auto; font-size: 14px; line-height: 1.8; color: var(--green); }
69
- .quickstart pre .comment { color: var(--muted); }
70
-
71
- /* Architecture */
72
- .arch { text-align: center; padding: 60px 0; }
73
- .arch h2 { color: var(--blue); margin-bottom: 20px; }
74
- .arch pre { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 24px; display: inline-block; text-align: left; font-size: 13px; color: var(--muted); line-height: 1.7; }
75
-
76
- /* Footer */
77
- footer { text-align: center; color: #484f58; padding: 40px 0; border-top: 1px solid #21262d; margin-top: 80px; font-size: 13px; }
78
- footer a { color: var(--blue); text-decoration: none; }
79
- </style>
80
- </head>
81
- <body>
82
-
83
- <!-- Hero -->
84
- <div class="hero">
85
- <h1>Minions <span>Mission Control</span></h1>
86
- <p class="tagline">5 autonomous AI agents, one engine, one dashboard. Plan, implement, review, and ship code &mdash; hands-free.</p>
87
- <div class="hero-badges">
88
- <span class="hero-badge green">Zero Dependencies</span>
89
- <span class="hero-badge blue">Claude-Powered</span>
90
- <span class="hero-badge yellow">Multi-Project</span>
91
- <span class="hero-badge purple">Self-Improving</span>
92
- </div>
93
- <div class="cta">
94
- <a href="https://github.com/yemi33/minions" class="cta-primary">View on GitHub</a>
95
- <a href="#quickstart" class="cta-secondary">Quick Start</a>
96
- </div>
97
- </div>
98
-
99
- <!-- Agent strip -->
100
- <div class="agents-strip">
101
- <div class="agent-pill"><span class="emoji">&#x1F3D7;&#xFE0F;</span><div><div class="name">Ripley</div><div class="role">Lead / Explorer</div></div></div>
102
- <div class="agent-pill"><span class="emoji">&#x1F527;</span><div><div class="name">Dallas</div><div class="role">Engineer</div></div></div>
103
- <div class="agent-pill"><span class="emoji">&#x1F4CA;</span><div><div class="name">Lambert</div><div class="role">Analyst</div></div></div>
104
- <div class="agent-pill"><span class="emoji">&#x1F9E0;</span><div><div class="name">Rebecca</div><div class="role">Architect</div></div></div>
105
- <div class="agent-pill"><span class="emoji">&#x2699;&#xFE0F;</span><div><div class="name">Ralph</div><div class="role">Engineer</div></div></div>
106
- </div>
107
-
108
- <!-- Features -->
109
- <div class="container">
110
- <div class="features">
111
- <div class="feature"><h3>Autonomous Dispatch</h3><p>Engine discovers work from plans, PRs, pipelines, and queues &mdash; routes to the right agent based on skills and availability.</p></div>
112
- <div class="feature"><h3>Plan Lifecycle</h3><p>Plan &rarr; Approve &rarr; PRD &rarr; Execute &rarr; Review &rarr; Verify. Human-in-the-loop at every gate.</p></div>
113
- <div class="feature"><h3>Team Meetings</h3><p>Multi-agent meetings with investigate, debate, and conclude rounds. Agents research, discuss, and produce actionable conclusions.</p></div>
114
- <div class="feature"><h3>Multi-Stage Pipelines</h3><p>Chain tasks, meetings, plans, and more into automated workflows. Cron triggers or manual. Artifacts flow between stages.</p></div>
115
- <div class="feature"><h3>Eval Loop</h3><p>After implementation, auto-dispatches review &rarr; fix cycles. Configurable iterations and cost ceiling per work item.</p></div>
116
- <div class="feature"><h3>Git Worktree Isolation</h3><p>Each agent works in its own worktree. No conflicts, no cross-contamination, safe parallel execution.</p></div>
117
- <div class="feature"><h3>Knowledge Consolidation</h3><p>Agent findings auto-consolidate into team notes and a searchable knowledge base. The team learns as it works.</p></div>
118
- <div class="feature"><h3>PR Integration</h3><p>Auto-syncs PRs from Azure DevOps and GitHub. Detects review feedback, build failures, and human comments.</p></div>
119
- <div class="feature"><h3>Scheduled Tasks</h3><p>Cron-style recurring work: nightly tests, weekly audits, daily standups. Visual cron builder in the dashboard.</p></div>
120
- <div class="feature"><h3>Command Center</h3><p>Natural language interface for delegating work to agents. CC orchestrates &mdash; agents implement.</p></div>
121
- <div class="feature"><h3>Live Dashboard</h3><p>Real-time mission control on port 7331. Paginated views, optimistic updates, and visibility-aware polling.</p></div>
122
- <div class="feature"><h3>One-Command Updates</h3><p><code>minions update</code> pulls latest from npm and applies. Config and charters preserved automatically.</p></div>
123
- </div>
124
-
125
- <!-- Demo scenarios -->
126
- <div class="scenario">
127
- <div class="scenario-header"><div class="scenario-num">1</div><h2>Dashboard Overview</h2></div>
128
- <p>Home page with agent status cards, project bar, and setup guidance. All agents visible at a glance.</p>
129
- <div class="demo-frame">
130
- <img src="demo/01-dashboard-overview.png" alt="Dashboard overview with agent cards">
131
- <div class="demo-caption">Home page showing Minions Members, project bar, and engine status badge</div>
132
- </div>
133
- </div>
134
-
135
- <div class="scenario">
136
- <div class="scenario-header"><div class="scenario-num">2</div><h2>Work Items</h2></div>
137
- <p>Paginated table with status, type, priority, agent, and linked PRs. <span class="badge badge-yellow">PENDING</span> <span class="badge badge-blue">DISPATCHED</span> <span class="badge badge-green">DONE</span> <span class="badge badge-red">FAILED</span>. Retry, delete, and archive with optimistic updates.</p>
138
- <div class="demo-frame">
139
- <img src="demo/02-work-items.png" alt="Work items table">
140
- <div class="demo-caption">Work items page &mdash; 20 per page with create, edit, retry, and delete actions</div>
141
- </div>
142
- </div>
143
-
144
- <div class="scenario">
145
- <div class="scenario-header"><div class="scenario-num">3</div><h2>Plans &amp; PRD</h2></div>
146
- <p>Plan cards with Approve / Discuss &amp; Revise / Reject. PRD dependency graph with per-item retry. Archive completed plans.</p>
147
- <div class="demo-frame">
148
- <img src="demo/03-plans-prd.png" alt="Plans and PRD progress">
149
- <div class="demo-caption">Plans page with status-colored cards, PRD dependency graph, and action buttons</div>
150
- </div>
151
- </div>
152
-
153
- <div class="scenario">
154
- <div class="scenario-header"><div class="scenario-num">4</div><h2>Pull Requests</h2></div>
155
- <p>PR tracker sorted by date, with review, build, and merge status. Linked to work items and PRD items. Manual PR linking supported.</p>
156
- <div class="demo-frame">
157
- <img src="demo/04-pull-requests.png" alt="Pull requests tracker">
158
- <div class="demo-caption">PRs sorted newest-first with build status, review status, and agent attribution</div>
159
- </div>
160
- </div>
161
-
162
- <div class="scenario">
163
- <div class="scenario-header"><div class="scenario-num">5</div><h2>Team Meetings</h2></div>
164
- <p>Multi-agent meetings with 3 rounds: investigate, debate, conclude. Live progress per participant. Create plans from conclusions.</p>
165
- <div class="demo-frame">
166
- <img src="demo/05-meetings.png" alt="Meetings page">
167
- <div class="demo-caption">Meetings with round status badges, participant progress, and archive/delete actions</div>
168
- </div>
169
- </div>
170
-
171
- <div class="scenario">
172
- <div class="scenario-header"><div class="scenario-num">6</div><h2>Pipelines</h2></div>
173
- <p>Multi-stage workflows chaining tasks, meetings, plans, and more. Cron triggers or manual. Artifact tracking between stages.</p>
174
- <div class="demo-frame">
175
- <img src="demo/06-pipelines.png" alt="Pipelines page">
176
- <div class="demo-caption">Pipeline cards with stage flow visualization, run history, and progress bars</div>
177
- </div>
178
- </div>
179
-
180
- <div class="scenario">
181
- <div class="scenario-header"><div class="scenario-num">7</div><h2>Notes &amp; Knowledge Base</h2></div>
182
- <p>Inbox for agent findings, consolidated team notes, and categorized knowledge base. Inline Q&amp;A on any document.</p>
183
- <div class="demo-frame">
184
- <img src="demo/07-notes-kb.png" alt="Notes and knowledge base">
185
- <div class="demo-caption">Notes inbox, team notes, and knowledge base with category tabs and pagination</div>
186
- </div>
187
- </div>
188
-
189
- <div class="scenario">
190
- <div class="scenario-header"><div class="scenario-num">8</div><h2>Scheduled Tasks</h2></div>
191
- <p>Cron-style recurring work with visual builder. Natural language parsing &mdash; type "every weekday at 9am" and it generates the cron.</p>
192
- <div class="demo-frame">
193
- <img src="demo/08-schedules.png" alt="Schedules page">
194
- <div class="demo-caption">Schedule list with cron expressions, last-run times, and enable/disable toggles</div>
195
- </div>
196
- </div>
197
-
198
- <div class="scenario">
199
- <div class="scenario-header"><div class="scenario-num">9</div><h2>Engine &amp; Metrics</h2></div>
200
- <p>Dispatch queue, engine log, agent metrics, token usage, and context pressure. All paginated.</p>
201
- <div class="demo-frame">
202
- <img src="demo/09-engine.png" alt="Engine page">
203
- <div class="demo-caption">Active/pending dispatches, completed history, engine log, and per-agent quality metrics</div>
204
- </div>
205
- </div>
206
-
207
- <div class="scenario">
208
- <div class="scenario-header"><div class="scenario-num">10</div><h2>Command Center</h2></div>
209
- <p>Natural language delegation. CC orchestrates &mdash; agents implement. Session persists across refreshes. Actions auto-execute.</p>
210
- <div class="demo-frame">
211
- <img src="demo/10-command-center.png" alt="Command Center panel">
212
- <div class="demo-caption">Command Center side panel with conversation history, action execution, and session indicator</div>
213
- </div>
214
- </div>
215
-
216
- <!-- Quick Start -->
217
- <div class="quickstart" id="quickstart">
218
- <h2>Quick Start</h2>
219
- <pre><span class="comment"># Install</span>
220
- npm install -g @yemi33/minions
221
-
222
- <span class="comment"># Initialize &mdash; prompts for project locations, starts engine + dashboard</span>
223
- minions init
224
-
225
- <span class="comment"># Give your first task</span>
226
- minions work "Explore the codebase and document the architecture"
227
-
228
- <span class="comment"># Open dashboard at http://localhost:7331</span>
229
- minions dash
230
-
231
- <span class="comment"># Update to latest</span>
232
- minions update</pre>
233
- </div>
234
-
235
- <!-- Architecture -->
236
- <div class="arch">
237
- <h2>Architecture</h2>
238
- <pre>
239
- ┌─────────────────────────────────────────────────────┐
240
- │ ~/.minions/ (central hub) │
241
- │ │
242
- │ engine.js ──── 60s tick loop ────┐ │
243
- │ │ │ │
244
- │ discover work spawn agents poll PRs │
245
- │ │ │ │ │
246
- │ ┌───┴───┐ ┌──────┴──────┐ ┌──┴───┐ │
247
- │ │ Plans │ │ Worktrees │ │ ADO │ │
248
- │ │ PRDs │ │ (isolated) │ │GitHub│ │
249
- │ │ Items │ │ per agent │ │ │ │
250
- │ └───────┘ └─────────────┘ └──────┘ │
251
- │ │
252
- │ dashboard.js ── port 7331 ── mission control │
253
- │ meetings/ ── multi-agent discussions │
254
- │ pipelines/ ── multi-stage workflows │
255
- │ notes.md ── consolidated team knowledge │
256
- │ knowledge/ ── searchable KB by category │
257
- └─────────────────────────────────────────────────────┘
258
- </pre>
259
- </div>
260
-
261
- </div>
262
-
263
- <footer>
264
- <p>Minions &mdash; built by <a href="https://github.com/yemi33">yemi33</a> &mdash; <a href="https://github.com/yemi33/minions">GitHub</a> &mdash; <a href="https://www.npmjs.com/package/@yemi33/minions">npm</a> &mdash; MIT License</p>
265
- </footer>
266
-
267
- </body>
268
- </html>
1
+ <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Minions &mdash; Multi-Agent AI Dev Team</title><meta name="description" content="Five autonomous coding agents, one engine, and one dashboard. Minions orchestrates Claude or GitHub Copilot agents to plan, implement, review, verify, and ship code."><style> :root { --bg: #0d1117; --surface: #161b22; --border: #30363d; --text: #c9d1d9; --muted: #8b949e; --blue: #58a6ff; --green: #3fb950; --yellow: #d29922; --red: #f85149; --purple: #bc8cff; } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: var(--bg); color: var(--text); line-height: 1.6; } /* Hero */ .hero { text-align: center; padding: 80px 20px 60px; } .hero h1 { font-size: 3.5em; color: var(--blue); margin-bottom: 12px; letter-spacing: -1px; } .hero h1 span { color: var(--text); } .hero .tagline { font-size: 1.3em; color: var(--muted); max-width: 600px; margin: 0 auto 32px; } .hero-badges { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-bottom: 32px; } .hero-badge { display: inline-flex; align-items: center; gap: 6px; padding: 6px 14px; border-radius: 20px; font-size: 13px; font-weight: 600; border: 1px solid var(--border); background: var(--surface); } .hero-badge.green { color: var(--green); border-color: rgba(63,185,80,0.3); } .hero-badge.blue { color: var(--blue); border-color: rgba(88,166,255,0.3); } .hero-badge.yellow { color: var(--yellow); border-color: rgba(210,153,34,0.3); } .hero-badge.purple { color: var(--purple); border-color: rgba(188,140,255,0.3); } .cta { display: inline-flex; gap: 12px; flex-wrap: wrap; justify-content: center; } .cta a { padding: 12px 28px; border-radius: 8px; font-weight: 600; font-size: 15px; text-decoration: none; transition: all 0.2s; } .cta-primary { background: var(--blue); color: var(--bg); } .cta-primary:hover { background: #79c0ff; } .cta-secondary { background: var(--surface); color: var(--text); border: 1px solid var(--border); } .cta-secondary:hover { border-color: var(--blue); color: var(--blue); } /* Container */ .container { max-width: 1100px; margin: 0 auto; padding: 0 20px; } /* Agents strip */ .agents-strip { display: flex; justify-content: center; gap: 24px; padding: 40px 20px; flex-wrap: wrap; } .agent-pill { display: flex; align-items: center; gap: 8px; padding: 10px 18px; background: var(--surface); border: 1px solid var(--border); border-radius: 12px; } .agent-pill .emoji { font-size: 1.4em; } .agent-pill .name { font-weight: 700; color: var(--text); font-size: 14px; } .agent-pill .role { color: var(--muted); font-size: 12px; } /* Features grid */ .features { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; padding: 40px 0; } .feature { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 24px; } .feature h3 { color: var(--blue); font-size: 1em; margin-bottom: 6px; } .feature p { color: var(--muted); font-size: 13px; line-height: 1.5; } /* Scenario sections */ .scenario { margin: 60px 0; } .scenario-header { display: flex; align-items: center; gap: 14px; margin-bottom: 12px; } .scenario-num { background: var(--blue); color: var(--bg); font-weight: 700; width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 15px; flex-shrink: 0; } .scenario h2 { font-size: 1.5em; color: #f0f6fc; } .scenario > p { color: var(--muted); margin-bottom: 16px; max-width: 800px; font-size: 15px; } .demo-frame { border: 1px solid var(--border); border-radius: 10px; overflow: hidden; box-shadow: 0 8px 32px rgba(0,0,0,0.4); } .demo-frame img { width: 100%; display: block; } .demo-caption { background: var(--surface); padding: 10px 18px; font-size: 13px; color: var(--muted); border-top: 1px solid var(--border); } /* Inline badges */ .badge { display: inline-block; padding: 2px 8px; border-radius: 4px; font-size: 11px; font-weight: 600; } .badge-green { background: rgba(63,185,80,0.15); color: var(--green); border: 1px solid rgba(63,185,80,0.3); } .badge-blue { background: rgba(88,166,255,0.15); color: var(--blue); border: 1px solid rgba(88,166,255,0.3); } .badge-yellow { background: rgba(210,153,34,0.15); color: var(--yellow); border: 1px solid rgba(210,153,34,0.3); } .badge-red { background: rgba(248,81,73,0.15); color: var(--red); border: 1px solid rgba(248,81,73,0.3); } .hl { color: var(--green); font-weight: 600; } /* Quick start */ .quickstart { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 32px; margin: 60px 0; } .quickstart h2 { color: var(--blue); margin-bottom: 16px; } .quickstart pre { background: var(--bg); border: 1px solid var(--border); border-radius: 8px; padding: 16px 20px; overflow-x: auto; font-size: 14px; line-height: 1.8; color: var(--green); } .quickstart pre .comment { color: var(--muted); } /* Architecture */ .arch { text-align: center; padding: 60px 0; } .arch h2 { color: var(--blue); margin-bottom: 20px; } .arch pre { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 24px; display: inline-block; text-align: left; font-size: 13px; color: var(--muted); line-height: 1.7; } /* Footer */ footer { text-align: center; color: #484f58; padding: 40px 0; border-top: 1px solid #21262d; margin-top: 80px; font-size: 13px; } footer a { color: var(--blue); text-decoration: none; }</style></head><body><!-- Hero --><div class="hero"> <h1>Minions <span>Mission Control</span></h1> <p class="tagline">Five autonomous coding agents, one engine, one dashboard. Plan, implement, review, verify, and ship code with human control at every gate.</p> <div class="hero-badges"> <span class="hero-badge green">Node.js 18+</span> <span class="hero-badge blue">Claude or Copilot</span> <span class="hero-badge yellow">Multi-Project</span> <span class="hero-badge purple">Dashboard + CLI</span> </div> <div class="cta"> <a href="https://www.npmjs.com/package/@yemi33/minions" class="cta-primary">Install from npm</a> <a href="#quickstart" class="cta-secondary">Quick Start</a> </div></div><!-- Agent strip --><div class="agents-strip"> <div class="agent-pill"><span class="emoji">&#x1F3D7;&#xFE0F;</span><div><div class="name">Ripley</div><div class="role">Lead / Explorer</div></div></div> <div class="agent-pill"><span class="emoji">&#x1F527;</span><div><div class="name">Dallas</div><div class="role">Engineer</div></div></div> <div class="agent-pill"><span class="emoji">&#x1F4CA;</span><div><div class="name">Lambert</div><div class="role">Analyst</div></div></div> <div class="agent-pill"><span class="emoji">&#x1F9E0;</span><div><div class="name">Rebecca</div><div class="role">Architect</div></div></div> <div class="agent-pill"><span class="emoji">&#x2699;&#xFE0F;</span><div><div class="name">Ralph</div><div class="role">Engineer</div></div></div></div><!-- Features --><div class="container"><div class="features"> <div class="feature"><h3>Autonomous Dispatch</h3><p>Engine discovers work from plans, PRs, schedules, pipelines, and queues &mdash; then routes to the right agent by role, skill, and availability.</p></div> <div class="feature"><h3>Plan Lifecycle</h3><p>Plan &rarr; Approve &rarr; PRD &rarr; Execute &rarr; Review &rarr; Verify. Completed plans stay available until you manually archive them.</p></div> <div class="feature"><h3>Team Meetings</h3><p>Multi-agent meetings with investigate, debate, and conclude rounds. Agents research, discuss, and produce actionable conclusions.</p></div> <div class="feature"><h3>Multi-Stage Pipelines</h3><p>Chain tasks, meetings, plans, and more into automated workflows. Cron triggers or manual. Artifacts flow between stages.</p></div> <div class="feature"><h3>Review / Fix Loop</h3><p>After implementation, Minions can dispatch reviews, react to human PR comments, and send fixes back to the original author agent.</p></div> <div class="feature"><h3>Git Worktree Isolation</h3><p>Each agent works in its own worktree. No conflicts, no cross-contamination, safe parallel execution.</p></div> <div class="feature"><h3>Knowledge Consolidation</h3><p>Agent findings, quick notes, pinned notes, and feedback consolidate into team notes and a categorized knowledge base.</p></div> <div class="feature"><h3>PR Integration</h3><p>Tracks Azure DevOps and GitHub PRs, including review votes, build status, merge status, human comments, and context-only links.</p></div> <div class="feature"><h3>Scheduled Tasks &amp; Watches</h3><p>Cron-style recurring work plus watches for PRs, work items, dispatches, meetings, pipelines, agents, and status changes.</p></div> <div class="feature"><h3>Command Center &amp; Doc Chat</h3><p>Natural language orchestration, persistent CC tabs, document Q&amp;A/editing, issue filing, routing updates, and local API actions.</p></div> <div class="feature"><h3>Pluggable Runtimes</h3><p>Run agents through Claude Code or GitHub Copilot CLI, with runtime-specific models, effort, session resume, and permission handling.</p></div> <div class="feature"><h3>Live Dashboard</h3><p>Real-time mission control on port 7331 with paginated views, optimistic updates, live streams, metrics, and settings.</p></div> <div class="feature"><h3>One-Command Updates</h3><p><code>minions update</code> pulls the latest npm package, reapplies files, and restarts while preserving config and customizations.</p></div></div><!-- Demo scenarios --><div class="scenario"> <div class="scenario-header"><div class="scenario-num">1</div><h2>Dashboard Overview</h2></div> <p>Home page with agent status cards, project bar, setup guidance, and engine state. All agents visible at a glance.</p> <div class="demo-frame"> <img src="demo/01-dashboard-overview.png" alt="Dashboard overview with agent cards"> <div class="demo-caption">Home page showing Minions Members, project bar, and engine status badge</div> </div></div><div class="scenario"> <div class="scenario-header"><div class="scenario-num">2</div><h2>Work Items</h2></div> <p>Paginated table with status, type, priority, agent, dependencies, artifacts, and linked PRs. <span class="badge badge-yellow">PENDING</span> <span class="badge badge-blue">DISPATCHED</span> <span class="badge badge-green">DONE</span> <span class="badge badge-red">FAILED</span>. Retry, delete, archive, and add feedback with optimistic updates.</p> <div class="demo-frame"> <img src="demo/02-work-items.png" alt="Work items table"> <div class="demo-caption">Work items page &mdash; 20 per page with create, edit, retry, and delete actions</div> </div></div><div class="scenario"> <div class="scenario-header"><div class="scenario-num">3</div><h2>Plans &amp; PRD</h2></div> <p>Plan cards with Approve / Discuss &amp; Revise / Reject. PRD dependency graph with per-item retry, reopening, verification, and manual archive.</p> <div class="demo-frame"> <img src="demo/03-plans-prd.png" alt="Plans and PRD progress"> <div class="demo-caption">Plans page with status-colored cards, PRD dependency graph, and action buttons</div> </div></div><div class="scenario"> <div class="scenario-header"><div class="scenario-num">4</div><h2>Pull Requests</h2></div> <p>PR tracker sorted by date, with review, build, merge, conflict, and human-comment status. Linked to work items and PRD items. Manual PR linking and context-only observation supported.</p> <div class="demo-frame"> <img src="demo/04-pull-requests.png" alt="Pull requests tracker"> <div class="demo-caption">PRs sorted newest-first with build status, review status, and agent attribution</div> </div></div><div class="scenario"> <div class="scenario-header"><div class="scenario-num">5</div><h2>Team Meetings</h2></div> <p>Multi-agent meetings with 3 rounds: investigate, debate, conclude. Live progress per participant. Create plans from conclusions.</p> <div class="demo-frame"> <img src="demo/05-meetings.png" alt="Meetings page"> <div class="demo-caption">Meetings with round status badges, participant progress, and archive/delete actions</div> </div></div><div class="scenario"> <div class="scenario-header"><div class="scenario-num">6</div><h2>Pipelines</h2></div> <p>Multi-stage workflows chaining tasks, meetings, plans, tests, docs, and more. Cron triggers or manual runs. Artifact tracking between stages.</p> <div class="demo-frame"> <img src="demo/06-pipelines.png" alt="Pipelines page"> <div class="demo-caption">Pipeline cards with stage flow visualization, run history, and progress bars</div> </div></div><div class="scenario"> <div class="scenario-header"><div class="scenario-num">7</div><h2>Notes &amp; Knowledge Base</h2></div> <p>Inbox for agent findings, quick notes, pinned notes, consolidated team notes, and categorized knowledge base. Inline Q&amp;A/editing on documents.</p> <div class="demo-frame"> <img src="demo/07-notes-kb.png" alt="Notes and knowledge base"> <div class="demo-caption">Notes inbox, team notes, and knowledge base with category tabs and pagination</div> </div></div><div class="scenario"> <div class="scenario-header"><div class="scenario-num">8</div><h2>Scheduled Tasks</h2></div> <p>Cron-style recurring work with a visual builder. Schedule work items, tests, docs, plans, asks, meetings, and recurring maintenance.</p> <div class="demo-frame"> <img src="demo/08-schedules.png" alt="Schedules page"> <div class="demo-caption">Schedule list with cron expressions, last-run times, and enable/disable toggles</div> </div></div><div class="scenario"> <div class="scenario-header"><div class="scenario-num">9</div><h2>Engine &amp; Metrics</h2></div> <p>Dispatch queue, engine log, agent metrics, token usage, runtime/model data, quality signals, and context pressure. All paginated.</p> <div class="demo-frame"> <img src="demo/09-engine.png" alt="Engine page"> <div class="demo-caption">Active/pending dispatches, completed history, engine log, and per-agent quality metrics</div> </div></div><div class="scenario"> <div class="scenario-header"><div class="scenario-num">10</div><h2>Command Center</h2></div> <p>Natural language delegation. CC orchestrates &mdash; agents implement. Sessions persist across refreshes and tabs; actions can create work, notes, plans, watches, PR links, and issues.</p> <div class="demo-frame"> <img src="demo/10-command-center.png" alt="Command Center panel"> <div class="demo-caption">Command Center side panel with conversation history, action execution, and session indicator</div> </div></div><!-- Quick Start --><div class="quickstart" id="quickstart"> <h2>Quick Start</h2> <pre><span class="comment"># Prerequisites: Node.js 18+, Git, and at least one agent runtime</span><span class="comment"># Install Claude Code or GitHub Copilot CLI separately, then install Minions</span>npm install -g @yemi33/minions<span class="comment"># Bootstrap ~/.minions/ and scan/link repositories</span>minions init<span class="comment"># Or add a specific project later</span>minions add ~/my-project<span class="comment"># Start engine + dashboard, then open http://localhost:7331</span>minions restart --openminions dash<span class="comment"># Give your first task</span>minions work "Explore the codebase and document the architecture"<span class="comment"># Useful operations</span>minions statusminions doctorminions config set-cli copilot --model gpt-5.4<span class="comment"># Update to latest</span>minions update</pre></div><!-- Architecture --><div class="arch"> <h2>Architecture</h2> <pre> ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé ~/.minions/ (central hub) Γöé Γöé Γöé Γöé engine.js ΓöÇΓöÇΓöÇΓöÇ 60s tick loop ΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé Γöé Γöé Γöé Γöé Γöé discover work spawn agents poll PRs/comments Γöé Γöé Γöé Γöé Γöé Γöé Γöé ΓöîΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÉ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ ΓöîΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÉ Γöé Γöé Γöé Plans Γöé Γöé Worktrees Γöé Γöé ADO Γöé Γöé Γöé Γöé PRDs Γöé Γöé (isolated) Γöé ΓöéGitHubΓöé Γöé Γöé Γöé Items Γöé Γöé per agent Γöé Γöé Γöé Γöé Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé Γöé Γöé Γöé dashboard.js ΓöÇΓöÇ port 7331 ΓöÇΓöÇ mission control Γöé Γöé runtimes/ ΓöÇΓöÇ Claude Code or GitHub Copilot CLI Γöé Γöé meetings/ ΓöÇΓöÇ multi-agent discussions Γöé Γöé pipelines/ ΓöÇΓöÇ multi-stage workflows Γöé Γöé schedules + watches ΓöÇΓöÇ recurring/conditional work Γöé Γöé notes.md + knowledge/ ΓöÇΓöÇ team memory and KB Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ </pre></div></div><footer> <p>Minions &mdash; built by <a href="https://github.com/yemi33">yemi33</a> &mdash; <a href="https://www.npmjs.com/package/@yemi33/minions">npm</a> &mdash; <a href="https://yemi33.github.io/minions/">Public site</a> &mdash; MIT License &mdash; Claude Code or GitHub Copilot CLI runtime</p></footer></body></html>
@@ -1624,8 +1624,22 @@ async function updatePrAfterReview(agentId, pr, project, config, resultSummary,
1624
1624
  if (!postReviewStatus) {
1625
1625
  const verdict = reviewVerdictFromCompletion(structuredCompletion) || parseReviewVerdict(resultSummary);
1626
1626
  if (verdict) {
1627
- postReviewStatus = verdict;
1628
- log('info', `Read review verdict from agent completion for ${reviewPr.id}: ${verdict}`);
1627
+ // P-e1c8a9d2 — Refuse self-review APPROVE: an agent approving their own PR
1628
+ // is meaningless self-promotion (PR #1867/#1868/#2253 all shipped this way).
1629
+ // Treat it like a bailout — don't apply the verdict (so reviewStatus stays
1630
+ // 'waiting' and the engine routes the next review to a different agent on
1631
+ // the next dispatch tick). The verdict-gate at runPostCompletionHooks sees
1632
+ // the verdict and skips the no-verdict retry path, so _retryCount stays
1633
+ // unchanged. REQUEST_CHANGES from a self-author is still accepted — a
1634
+ // self-author flagging issues on their own PR is harmless and useful.
1635
+ const reviewerLower = String(agentId || '').toLowerCase();
1636
+ const authorLower = String(reviewPr.agent || '').toLowerCase();
1637
+ if (verdict === 'approved' && reviewerLower && authorLower && reviewerLower === authorLower) {
1638
+ log('warn', `review verdict rejected: self-review (reviewer=${reviewerName}, author=${reviewPr.agent})`);
1639
+ } else {
1640
+ postReviewStatus = verdict;
1641
+ log('info', `Read review verdict from agent completion for ${reviewPr.id}: ${verdict}`);
1642
+ }
1629
1643
  }
1630
1644
  }
1631
1645
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.1886",
3
+ "version": "0.1.1888",
4
4
  "description": "Multi-agent AI dev team that runs from ~/.minions/ — five autonomous agents share a single engine, dashboard, and knowledge base",
5
5
  "bin": {
6
6
  "minions": "bin/minions.js"
@@ -37,7 +37,7 @@ After the requested exploration succeeds, write your findings to `{{team_root}}/
37
37
  - **Patterns**: conventions and patterns found
38
38
  - **Dependencies**: what depends on what
39
39
  - **Gaps**: anything missing, broken, or unclear
40
- - **Recommendations**: suggestions for the team
40
+ - **Recommended next dispatches**: one bullet per follow-up using the format `<work-type> <agent> — <one-line scope>` (e.g., `implement ralph — wire X helper into Y caller`, `fix lambert — guard Z against null project`). If you have nothing concrete to recommend, the section must read exactly `Recommended next dispatches: none — no follow-up needed`.
41
41
  - **Source References**: for EVERY finding, include the source — file paths, line numbers, PR URLs, API endpoints, config keys. Format: `(source: path/to/file.ts:42)` or `(source: PR-12345)`. This is critical — other agents and humans need to verify your findings.
42
42
 
43
43
  If exploration is blocked or fails before you can produce sourced findings, do **not** write an inbox note. Report the blocker in your final response instead.
@@ -31,11 +31,21 @@ Write a clear, **self-contained** meeting conclusion. Someone reading ONLY this
31
31
  - What the fix should be (concrete: "change X to Y", "add guard in Z")
32
32
  - Estimated complexity (small/medium/large)
33
33
 
34
- 2. **Deferred items** — what was discussed but explicitly deprioritized, and why
34
+ 2. **Overrules** — required section. Document every priority where you (the synthesizer) chose differently than a participant argued in debate. Each bullet must take this exact form:
35
35
 
36
- 3. **Unresolved disagreements** where positions still differ (if any)
36
+ - `Overruled <participant>'s claim that <X>; chose <Y> because <reason cited from debate or source file>`
37
37
 
38
- 4. **Open questions for human**what needs human input before proceeding (if any)
38
+ The cited reason must be a concrete pointer (debate quote, finding ID, or `path/to/file.ext:line`), not a paraphrase. If the synthesizer truly overruled nothing every priority above converged in debate the section must read exactly:
39
+
40
+ - `Overrules: none — every priority converged in debate`
41
+
42
+ Do NOT omit this section. An empty `Overrules:` (without the escape-hatch sentence) is not acceptable.
43
+
44
+ 3. **Deferred items** — what was discussed but explicitly deprioritized, and why
45
+
46
+ 4. **Unresolved disagreements** — where positions still differ (if any)
47
+
48
+ 5. **Open questions for human** — what needs human input before proceeding (if any)
39
49
 
40
50
  **Be concrete, not vague.** Do NOT write "fix 3 bugs" — write which 3 bugs, in which files, with what fix. The conclusion is used as input to create an implementation plan, so it must contain enough detail to act on without re-reading the entire meeting.
41
51
 
@@ -25,6 +25,10 @@ Investigate this topic from your unique perspective as {{agent_role}}.
25
25
 
26
26
  Focus on what YOU uniquely bring to this discussion. Be thorough but concise.
27
27
 
28
+ ### Evidence rule for code claims
29
+
30
+ Every claim about repository code — a bug, a regression, a missing guard, a test gap, a behavior assertion — must include a concrete citation: a `path/to/file.ext:line` reference (or range like `path:120-145`) for current code, or a `git show <sha>:<path>` hunk reference when the claim is about a specific commit or historical state. Claims you cannot back with such a reference must be tagged `[unverified]` inline (e.g., "the dispatch loop ignores `paused` items `[unverified]`") so debaters in the next round can call them out and either verify or discard them. Do not paraphrase code from memory and present it as fact; if you have not opened the file in this session, it is `[unverified]`.
31
+
28
32
  ## Output Format
29
33
 
30
34
  Write your findings as a clear markdown document. Start with your key conclusion, then supporting evidence.
package/playbooks/plan.md CHANGED
@@ -42,6 +42,7 @@ A user has described a feature they want built. Your job is to create a detailed
42
42
  - Order by dependency (foundations first)
43
43
  - Estimate complexity: `small` (1 file), `medium` (2-5 files), `large` (6+ files)
44
44
  - Each item should be independently testable
45
+ - Also list ideas you considered and chose **not** to include — these go in the required `## Rejected items` section so scope is declared explicitly
45
46
 
46
47
  ### 5. Write the Plan
47
48
 
@@ -65,19 +66,24 @@ What exists today, what needs to change, key files involved.
65
66
  ## Approach
66
67
  High-level design decisions and rationale.
67
68
 
68
- ## Work Breakdown
69
+ ## Work items
69
70
 
70
- ### Phase 1: Foundation
71
- 1. **Item name** (complexity: small/medium/large)
72
- - What to build
73
- - Files to create/modify
74
- - Acceptance criteria
71
+ Flat numbered list, ordered by dependency in prose (not by phase). Use phases only when items genuinely block each other across PR boundaries; otherwise the plan is a flat numbered list.
75
72
 
76
- ### Phase 2: Core Implementation
77
- 2. **Item name** ...
73
+ ### 1. <item name> (complexity: small/medium/large)
74
+ - What to build
75
+ - Files to create/modify
76
+ - Acceptance criteria
78
77
 
79
- ### Phase 3: Polish & Integration
80
- 3. **Item name** ...
78
+ ### 2. <item name> (complexity: small/medium/large)
79
+ - ...
80
+
81
+ ## Rejected items
82
+
83
+ Required section. Declare scope by listing ideas you considered and chose not to include, one line per rejected item with the reason.
84
+
85
+ - <rejected idea> — <one-line reason>
86
+ - <rejected idea> — <one-line reason>
81
87
 
82
88
  ## Risks & Open Questions
83
89
  - Risk or question that needs user input
@@ -54,7 +54,6 @@ Use subagents only for genuinely parallel, independent tasks (e.g., reviewing un
54
54
 
55
55
  8. If the code is genuinely ready:
56
56
  - Verdict: **APPROVE**
57
- - Note any minor non-blocking suggestions
58
57
  - Do not request changes for nits, speculative edge cases, or unrelated improvements
59
58
 
60
59
  ## Post Review — Submit your verdict
@@ -79,10 +78,14 @@ Automated checks:
79
78
  - `<command>`: pass/fail/skipped — short result or reason
80
79
 
81
80
  Blocking issues:
82
- - None, or `path:line`issue and required fix
81
+ - `path:line — failure mode required fix`
82
+ - (one bullet per blocking finding; the literal string `None` is the only allowed empty form)
83
83
 
84
- Non-blocking suggestions:
85
- - None, or `path:line` suggestion
84
+ Minimum diff to ship: <one-line description of the smallest change that would flip this verdict to APPROVE>
85
+ (REQUEST_CHANGES only omit this line on APPROVE verdicts)
86
+
87
+ Non-blocking observations: None
88
+ - (default to `None`; if you list any, each must be tied to an existing diff line in the form `path:line — observation`)
86
89
  ```
87
90
 
88
91
  After running the command, confirm it succeeded (check the command output for errors). If it fails, retry once.