mrvn-cli 0.3.3 → 0.3.5
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 +303 -147
- package/dist/index.d.ts +1 -0
- package/dist/index.js +956 -85
- package/dist/index.js.map +1 -1
- package/dist/marvin-serve.js +835 -83
- package/dist/marvin-serve.js.map +1 -1
- package/dist/marvin.js +956 -85
- package/dist/marvin.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Marvin CLI
|
|
2
2
|
|
|
3
|
-
AI-powered product development assistant. Marvin provides three expert personas — **Product Owner**, **Delivery Manager**, and **Technical Lead** — that help teams manage features, epics, sprints, decisions, actions, questions, and
|
|
3
|
+
AI-powered product development assistant. Marvin provides three expert personas — **Product Owner**, **Delivery Manager**, and **Technical Lead** — that help teams manage features, epics, sprints, decisions, actions, questions, meetings, and reports through an interactive CLI backed by Claude.
|
|
4
4
|
|
|
5
5
|
## Quick Start
|
|
6
6
|
|
|
@@ -35,6 +35,7 @@ When you start a chat session, Marvin:
|
|
|
35
35
|
├── config.yaml # Project configuration
|
|
36
36
|
├── sessions.yaml # Saved chat sessions
|
|
37
37
|
├── templates/ # Document templates
|
|
38
|
+
├── skills/ # Custom skills (SKILL.md format)
|
|
38
39
|
├── sources/ # Source documents for ingestion
|
|
39
40
|
│ ├── .manifest.yaml # Tracks processing state
|
|
40
41
|
│ ├── Requirements.pdf # Source document
|
|
@@ -48,12 +49,228 @@ When you start a chat session, Marvin:
|
|
|
48
49
|
├── questions/ # Q-001.md, Q-002.md, ...
|
|
49
50
|
├── meetings/ # 2026-02-08-kickoff.md, ...
|
|
50
51
|
├── reports/ # R-001.md, R-002.md, ...
|
|
52
|
+
├── contributions/ # C-001.md, C-002.md, ...
|
|
51
53
|
├── jira-issues/ # JI-001.md, JI-002.md, ... (Jira skill)
|
|
52
54
|
├── use-cases/ # UC-001.md, UC-002.md, ... (SAP AEM)
|
|
53
55
|
├── tech-assessments/ # TA-001.md, TA-002.md, ... (SAP AEM)
|
|
54
56
|
└── extension-designs/ # XD-001.md, XD-002.md, ... (SAP AEM)
|
|
55
57
|
```
|
|
56
58
|
|
|
59
|
+
## Commands
|
|
60
|
+
|
|
61
|
+
| Command | Description |
|
|
62
|
+
|---------|-------------|
|
|
63
|
+
| `marvin init` | Create a `.marvin/` project (includes methodology picker) |
|
|
64
|
+
| `marvin chat --as <persona>` | Start an interactive session (`po`, `dm`, `tl`) |
|
|
65
|
+
| `marvin chat -p "<text>" --as <persona>` | Single-prompt (non-interactive) session |
|
|
66
|
+
| `marvin chat --resume` | Resume a past session (interactive picker) |
|
|
67
|
+
| `marvin chat --resume <name>` | Resume a specific session by name |
|
|
68
|
+
| `marvin status` | Show document counts and open items |
|
|
69
|
+
| `marvin config [key] [value]` | View or set configuration |
|
|
70
|
+
| `marvin config api-key` | Securely set your Anthropic API key |
|
|
71
|
+
| `marvin import <path>` | Import documents or sources from external paths |
|
|
72
|
+
| `marvin import <path> --dry-run` | Preview import plan without writing files |
|
|
73
|
+
| `marvin ingest [file]` | Process source documents into governance artifacts |
|
|
74
|
+
| `marvin ingest --all` | Process all unprocessed source files |
|
|
75
|
+
| `marvin analyze <meeting-id>` | Analyze a meeting to extract decisions, actions, questions |
|
|
76
|
+
| `marvin contribute` | Submit a structured contribution from a persona |
|
|
77
|
+
| `marvin report gar` | Generate a Green/Amber/Red status report (ASCII) |
|
|
78
|
+
| `marvin report gar --format confluence` | GAR report as Confluence-friendly markdown |
|
|
79
|
+
| `marvin report health` | Generate a governance health check report (ASCII) |
|
|
80
|
+
| `marvin report health --format confluence` | Health report as Confluence-friendly markdown |
|
|
81
|
+
| `marvin web` | Launch a local web dashboard for project data |
|
|
82
|
+
| `marvin web -p 8080` | Web dashboard on a custom port |
|
|
83
|
+
| `marvin serve` | Start standalone MCP server for Claude Desktop/Code |
|
|
84
|
+
| `marvin sync` | Stage, commit, pull, and push governance data |
|
|
85
|
+
| `marvin sync init [--remote <url>]` | Initialize a git repo inside `.marvin/` |
|
|
86
|
+
| `marvin sync status` | Show branch, remote, and changed files |
|
|
87
|
+
| `marvin sync remote <url>` | Set or update the remote repository URL |
|
|
88
|
+
| `marvin clone <url> [dir]` | Clone governance data from a remote repo |
|
|
89
|
+
| `marvin sessions` | List all saved chat sessions |
|
|
90
|
+
| `marvin sessions delete <name>` | Delete a saved session |
|
|
91
|
+
| `marvin skills` | List available skills and persona assignments |
|
|
92
|
+
| `marvin skills install <skill> --as <persona\|all>` | Enable a skill for a persona (or all) |
|
|
93
|
+
| `marvin skills remove <skill> --as <persona\|all>` | Disable a skill for a persona (or all) |
|
|
94
|
+
| `marvin skills create <name>` | Scaffold a new custom skill |
|
|
95
|
+
| `marvin skills migrate` | Migrate old YAML skills to SKILL.md format |
|
|
96
|
+
|
|
97
|
+
## Personas
|
|
98
|
+
|
|
99
|
+
| Short Name | Full Name | Focus |
|
|
100
|
+
|------------|-----------|-------|
|
|
101
|
+
| `po` | Product Owner | Product vision, feature definition and prioritization, stakeholder needs, acceptance criteria |
|
|
102
|
+
| `dm` | Delivery Manager | Project delivery, sprint planning and tracking, epic scheduling, risk management, governance, meeting facilitation |
|
|
103
|
+
| `tl` | Technical Lead | Architecture, epic creation and scoping, sprint scoping and technical execution, code quality, technical decisions, implementation guidance |
|
|
104
|
+
|
|
105
|
+
Each persona has a tuned system prompt that shapes how Claude approaches your project. The agent has access to governance tools for managing features, epics, sprints, decisions, actions, questions, meetings, and reports — plus methodology-specific tools when a plugin is active.
|
|
106
|
+
|
|
107
|
+
## Feature → Epic → Sprint Workflow
|
|
108
|
+
|
|
109
|
+
Marvin enforces a structured product development workflow:
|
|
110
|
+
|
|
111
|
+
1. **Product Owner** defines features (`F-xxx`) as `draft`, then approves them when requirements are clear
|
|
112
|
+
2. **Tech Lead** breaks approved features into implementation epics (`E-xxx`) — the system **enforces** that epics can only be created against approved features
|
|
113
|
+
3. **Delivery Manager** creates sprints (`SP-xxx`) with goals and date boundaries, assigns epics to sprints, and tracks progress
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
Feature (PO) Epic (TL) Sprint (DM)
|
|
117
|
+
┌──────────┐ ┌──────────────┐ ┌──────────────────────┐
|
|
118
|
+
│ F-001 │───▶│ E-001 │───▶│ SP-001 │
|
|
119
|
+
│ approved │ │ linked: F-001│ │ linkedEpics: [E-001] │
|
|
120
|
+
└──────────┘ ├──────────────┤ │ goal: "Deliver auth" │
|
|
121
|
+
│ E-002 │ │ 2026-03-01..03-14 │
|
|
122
|
+
│ linked: F-001│ └──────────────────────┘
|
|
123
|
+
└──────────────┘ │
|
|
124
|
+
┌────────┴─────────────┐
|
|
125
|
+
│ A-001 (sprint:SP-001) │
|
|
126
|
+
│ D-003 (sprint:SP-001) │
|
|
127
|
+
└──────────────────────┘
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Sprints** are time-boxed iterations with:
|
|
131
|
+
- `goal` — what the sprint aims to deliver
|
|
132
|
+
- `startDate` / `endDate` — sprint boundaries (ISO dates)
|
|
133
|
+
- `status` — `planned` → `active` → `completed` (or `cancelled`)
|
|
134
|
+
- `linkedEpics` — soft-validated references to epic IDs (warns if not found but doesn't block creation)
|
|
135
|
+
|
|
136
|
+
When a sprint links to epics, those epics are auto-tagged with `sprint:SP-xxx`. Work items (actions, decisions, questions) are associated with sprints via the same `sprint:SP-xxx` tag convention.
|
|
137
|
+
|
|
138
|
+
### Action Scheduling
|
|
139
|
+
|
|
140
|
+
Actions support a `dueDate` field (ISO date) and a `sprints` parameter for sprint assignment:
|
|
141
|
+
|
|
142
|
+
- **`create_action`** and **`update_action`** accept `dueDate` (e.g. `'2026-03-15'`) and `sprints` (e.g. `['SP-001']`)
|
|
143
|
+
- The `sprints` parameter translates to `sprint:SP-xxx` tags automatically
|
|
144
|
+
- When an action has a `dueDate` but no sprint assigned, the tool suggests matching sprints whose date range contains the due date
|
|
145
|
+
- **`suggest_sprints_for_action`** is a standalone read-only tool that returns matching sprints for any due date
|
|
146
|
+
- Open actions with a `dueDate` in the past are **automatically flagged as overdue** in GAR reports (merged with tag-based `overdue` items, deduplicated)
|
|
147
|
+
|
|
148
|
+
### Sprint Planning
|
|
149
|
+
|
|
150
|
+
Sprint planning is supported by the `gather_sprint_planning_context` tool, which aggregates all planning-relevant data in a single call:
|
|
151
|
+
|
|
152
|
+
| Section | Contents |
|
|
153
|
+
|---------|----------|
|
|
154
|
+
| `approvedFeatures` | Approved features sorted by priority, with epic counts by status |
|
|
155
|
+
| `backlog` | Unassigned non-done epics, sorted by parent feature priority, enriched with feature context and effort estimates |
|
|
156
|
+
| `activeSprint` | Current active sprint with linked epic statuses, work item counts, and completion % |
|
|
157
|
+
| `velocityReference` | Last 2 completed sprints with epic count, effort strings, and work item throughput |
|
|
158
|
+
| `blockers` | Open questions, open risk-finding and blocker-report contributions |
|
|
159
|
+
| `summary` | Total backlog size, approved features with no epics, epics at risk, planned sprint count |
|
|
160
|
+
|
|
161
|
+
When asked to propose a sprint, the DM reasons through priority, capacity, dependencies, and risk to present a structured proposal. The TL focuses on technical readiness, effort balance, and feature coverage. Both personas call this tool automatically before proposing a sprint plan.
|
|
162
|
+
|
|
163
|
+
This provides **hard enforcement** (epics must link to approved features) combined with **soft guidance** (persona prompts steer each role toward their responsibilities) and **sprint-level tracking** for time-boxed delivery.
|
|
164
|
+
|
|
165
|
+
## Web Dashboard
|
|
166
|
+
|
|
167
|
+
Marvin includes a local web dashboard for visualizing project data.
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
marvin web # Start on port 3000, auto-open browser
|
|
171
|
+
marvin web -p 8080 # Custom port
|
|
172
|
+
marvin web --no-open # Don't auto-open the browser
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Pages:**
|
|
176
|
+
|
|
177
|
+
| Page | URL | Description |
|
|
178
|
+
|------|-----|-------------|
|
|
179
|
+
| Overview | `/` | Document type counts and recent activity |
|
|
180
|
+
| GAR Report | `/gar` | Visual Green/Amber/Red status across scope, schedule, quality, resources |
|
|
181
|
+
| Health Check | `/health` | Governance health check covering artifact completeness and process metrics |
|
|
182
|
+
| Status Board | `/board` | Kanban-style board with documents grouped by status, filterable by type |
|
|
183
|
+
| Document List | `/docs/:type` | Filterable list by status and owner |
|
|
184
|
+
| Document Detail | `/docs/:type/:id` | Full document view with rendered markdown |
|
|
185
|
+
|
|
186
|
+
The sidebar groups navigation into Governance (decisions, actions, questions), Project (features, epics, sprints), and plugin/skill-specific sections.
|
|
187
|
+
|
|
188
|
+
**Agent access:** During chat sessions, the agent can start the dashboard and query dashboard data via MCP tools (`start_web_dashboard`, `stop_web_dashboard`, `get_dashboard_overview`, `get_dashboard_gar`, `get_dashboard_board`).
|
|
189
|
+
|
|
190
|
+
## Contributions
|
|
191
|
+
|
|
192
|
+
Contributions (C-xxx) are structured inputs from personas outside of meetings. Each persona has specific contribution types that generate governance effects when analyzed.
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
# Draft mode (default) — proposes effects without executing
|
|
196
|
+
marvin contribute --as tl --type action-result --prompt "Unit tests completed for auth module"
|
|
197
|
+
|
|
198
|
+
# Direct mode — creates/updates artifacts with source:C-xxx traceability
|
|
199
|
+
marvin contribute --as po --type stakeholder-feedback --prompt "CFO wants cost reporting" --no-draft
|
|
200
|
+
|
|
201
|
+
# Link to a related artifact
|
|
202
|
+
marvin contribute --as dm --type risk-finding --prompt "Third-party API rate limit risk" --about A-001
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Contribution types by persona:**
|
|
206
|
+
|
|
207
|
+
| Persona | Types |
|
|
208
|
+
|---------|-------|
|
|
209
|
+
| Product Owner | `stakeholder-feedback`, `acceptance-result`, `priority-change`, `market-insight` |
|
|
210
|
+
| Tech Lead | `action-result`, `spike-findings`, `technical-assessment`, `architecture-review` |
|
|
211
|
+
| Delivery Manager | `risk-finding`, `blocker-report`, `dependency-update`, `status-assessment` |
|
|
212
|
+
|
|
213
|
+
During chat sessions, the agent has access to `list_contributions`, `get_contribution`, `create_contribution`, and `update_contribution` tools.
|
|
214
|
+
|
|
215
|
+
## GAR Reports
|
|
216
|
+
|
|
217
|
+
The Green/Amber/Red report evaluates project health across four dimensions:
|
|
218
|
+
|
|
219
|
+
| Dimension | What it measures |
|
|
220
|
+
|-----------|-----------------|
|
|
221
|
+
| **Scope** | Completion percentage (done vs total actions) |
|
|
222
|
+
| **Schedule** | Blocked items + overdue items (tag-based and date-based, deduplicated) |
|
|
223
|
+
| **Quality** | Risk-tagged items + open questions |
|
|
224
|
+
| **Resources** | Unowned open actions |
|
|
225
|
+
|
|
226
|
+
Each dimension gets a Green/Amber/Red rating based on thresholds. The combined project status uses the worst individual rating.
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
marvin report gar # ASCII terminal output with color
|
|
230
|
+
marvin report gar --format confluence # Confluence-ready markdown
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
During chat sessions, the agent can generate GAR reports via the `generate_gar_report` tool and persist them with `save_report`.
|
|
234
|
+
|
|
235
|
+
## Health Check
|
|
236
|
+
|
|
237
|
+
The health check report provides a comprehensive view of **artifact data quality** and **governance process health** across two sections.
|
|
238
|
+
|
|
239
|
+
### Completeness
|
|
240
|
+
|
|
241
|
+
Checks open/active items for required fields:
|
|
242
|
+
|
|
243
|
+
| Type | Open statuses | Required fields |
|
|
244
|
+
|------|---------------|-----------------|
|
|
245
|
+
| Action | `open`, `in-progress` | owner, priority, dueDate, content |
|
|
246
|
+
| Decision | `open`, `proposed` | owner, content |
|
|
247
|
+
| Question | `open` | owner, content |
|
|
248
|
+
| Feature | `draft`, `approved` | owner, priority, content |
|
|
249
|
+
| Epic | `planned`, `in-progress` | owner, targetDate, estimatedEffort, content |
|
|
250
|
+
| Sprint | `planned`, `active` | goal, startDate, endDate, at least 1 linkedEpic |
|
|
251
|
+
|
|
252
|
+
Each category gets a completion percentage: 100% = green, 75%+ = amber, <75% = red.
|
|
253
|
+
|
|
254
|
+
### Process
|
|
255
|
+
|
|
256
|
+
Measures governance workflow health using timestamps:
|
|
257
|
+
|
|
258
|
+
| Metric | What it measures | Green | Amber | Red |
|
|
259
|
+
|--------|-----------------|-------|-------|-----|
|
|
260
|
+
| Stale items | Open items not updated in 14+ days | 0 | 1-3 | 4+ |
|
|
261
|
+
| Aging actions | Open actions older than 30 days | 0 | 1-3 | 4+ |
|
|
262
|
+
| Decision velocity | Avg days to resolve decisions | ≤7d | ≤21d | >21d |
|
|
263
|
+
| Question resolution | Avg days to answer questions | ≤7d | ≤14d | >14d |
|
|
264
|
+
|
|
265
|
+
The overall status uses the worst rating across all completeness and process categories.
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
marvin report health # ASCII terminal output with color
|
|
269
|
+
marvin report health --format confluence # Confluence-ready markdown
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
During chat sessions, the agent can generate health reports via the `generate_health_report` tool.
|
|
273
|
+
|
|
57
274
|
## Methodologies
|
|
58
275
|
|
|
59
276
|
Marvin supports pluggable methodologies. Choose one during `marvin init`:
|
|
@@ -77,7 +294,7 @@ A 3-phase methodology for building extensions on SAP BTP:
|
|
|
77
294
|
```
|
|
78
295
|
Layer 1 — Core: decisions, actions, questions (always available)
|
|
79
296
|
Layer 2 — Common: meetings, reports, features, epics, (shared across methodologies)
|
|
80
|
-
sprints
|
|
297
|
+
sprints, contributions
|
|
81
298
|
Layer 3 — Methodology: use-cases, tech-assessments, (sap-aem specific)
|
|
82
299
|
extension-designs, phase management
|
|
83
300
|
```
|
|
@@ -122,6 +339,34 @@ marvin skills remove jira --as all # Disable for all personas
|
|
|
122
339
|
marvin skills remove jira --as po # Disable for one persona
|
|
123
340
|
```
|
|
124
341
|
|
|
342
|
+
### Creating custom skills
|
|
343
|
+
|
|
344
|
+
```bash
|
|
345
|
+
marvin skills create my-custom-skill
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
This scaffolds a new skill in `.marvin/skills/my-custom-skill/`:
|
|
349
|
+
|
|
350
|
+
```
|
|
351
|
+
.marvin/skills/my-custom-skill/
|
|
352
|
+
├── SKILL.md # Skill definition (YAML frontmatter + prompt body)
|
|
353
|
+
├── actions.yaml # Action definitions
|
|
354
|
+
└── personas/ # Persona-specific prompts (optional)
|
|
355
|
+
├── product-owner.md
|
|
356
|
+
├── tech-lead.md
|
|
357
|
+
└── delivery-manager.md
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
If you have skills in the older YAML format, migrate them:
|
|
361
|
+
|
|
362
|
+
```bash
|
|
363
|
+
marvin skills migrate # Converts .yaml files to SKILL.md directories
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### Governance Review
|
|
367
|
+
|
|
368
|
+
Built-in skill that enables DM and PO personas to review all open governance items and produce structured summaries with recommendations. Reviews open decisions, actions, and questions for age, ownership, priority, and blockers.
|
|
369
|
+
|
|
125
370
|
### Jira Integration
|
|
126
371
|
|
|
127
372
|
Bidirectional sync between Marvin artifacts and Jira issues. Imported issues are stored locally as `JI-xxx` documents in `.marvin/docs/jira-issues/`.
|
|
@@ -161,136 +406,19 @@ export JIRA_API_TOKEN=your-api-token # Generate at https://id.atlassian.com/m
|
|
|
161
406
|
- **Tech Lead** — Pull technical issues for sprint planning, push epics for cross-team visibility, bidirectional sync to keep governance aligned
|
|
162
407
|
- **Delivery Manager** — Pull sprint issues for progress tracking, push actions for stakeholder visibility, use JQL queries for reporting
|
|
163
408
|
|
|
164
|
-
**JI document frontmatter:**
|
|
165
|
-
|
|
166
|
-
```yaml
|
|
167
|
-
id: JI-001
|
|
168
|
-
title: "Implement user authentication"
|
|
169
|
-
type: jira-issue
|
|
170
|
-
status: open # mapped from Jira status
|
|
171
|
-
jiraKey: PROJ-123
|
|
172
|
-
jiraUrl: https://yourcompany.atlassian.net/browse/PROJ-123
|
|
173
|
-
issueType: Story
|
|
174
|
-
priority: Medium
|
|
175
|
-
assignee: Jane Doe
|
|
176
|
-
labels: [backend, auth]
|
|
177
|
-
linkedArtifacts: [F-001, D-003]
|
|
178
|
-
tags: [jira:PROJ-123]
|
|
179
|
-
lastSyncedAt: "2026-02-20T10:30:00.000Z"
|
|
180
|
-
```
|
|
181
|
-
|
|
182
409
|
Tools gracefully handle missing Jira credentials — local read tools (`list_jira_issues`, `get_jira_issue`, `link_artifact_to_jira`) always work, while API-calling tools return a helpful error message asking you to set the environment variables.
|
|
183
410
|
|
|
184
|
-
##
|
|
411
|
+
## Meeting Analysis
|
|
185
412
|
|
|
186
|
-
|
|
187
|
-
|---------|-------------|
|
|
188
|
-
| `marvin init` | Create a `.marvin/` project (includes methodology picker) |
|
|
189
|
-
| `marvin chat --as <persona>` | Start an interactive session (`po`, `dm`, `tl`) |
|
|
190
|
-
| `marvin status` | Show document counts and open items |
|
|
191
|
-
| `marvin config [key] [value]` | View or set configuration |
|
|
192
|
-
| `marvin import <path>` | Import documents or sources from external paths |
|
|
193
|
-
| `marvin import <path> --dry-run` | Preview import plan without writing files |
|
|
194
|
-
| `marvin ingest [file]` | Process source documents into governance artifacts |
|
|
195
|
-
| `marvin ingest --all` | Process all unprocessed source files |
|
|
196
|
-
| `marvin config api-key` | Securely set your Anthropic API key |
|
|
197
|
-
| `marvin sync` | Stage, commit, pull, and push governance data |
|
|
198
|
-
| `marvin sync init [--remote <url>]` | Initialize a git repo inside `.marvin/` |
|
|
199
|
-
| `marvin sync status` | Show branch, remote, and changed files |
|
|
200
|
-
| `marvin sync remote <url>` | Set or update the remote repository URL |
|
|
201
|
-
| `marvin clone <url> [dir]` | Clone governance data from a remote repo |
|
|
202
|
-
| `marvin chat --resume` | Resume a past session (interactive picker) |
|
|
203
|
-
| `marvin chat --resume <name>` | Resume a specific session by name |
|
|
204
|
-
| `marvin sessions` | List all saved chat sessions |
|
|
205
|
-
| `marvin sessions delete <name>` | Delete a saved session |
|
|
206
|
-
| `marvin skills` | List available skills and persona assignments |
|
|
207
|
-
| `marvin skills install <skill> --as <persona\|all>` | Enable a skill for a persona (or all) |
|
|
208
|
-
| `marvin skills remove <skill> --as <persona\|all>` | Disable a skill for a persona (or all) |
|
|
209
|
-
| `marvin skills create <name>` | Scaffold a new custom skill |
|
|
210
|
-
| `marvin report gar` | Generate a Green/Amber/Red status report (ASCII) |
|
|
211
|
-
| `marvin report gar --format confluence` | GAR report as Confluence-friendly markdown |
|
|
212
|
-
| `marvin serve` | Start standalone MCP server for Claude Desktop/Code |
|
|
413
|
+
Analyze completed meetings to extract governance artifacts:
|
|
213
414
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
| `po` | Product Owner | Product vision, feature definition and prioritization, stakeholder needs, acceptance criteria |
|
|
219
|
-
| `dm` | Delivery Manager | Project delivery, sprint planning and tracking, epic scheduling, risk management, governance, meeting facilitation |
|
|
220
|
-
| `tl` | Technical Lead | Architecture, epic creation and scoping, sprint scoping and technical execution, code quality, technical decisions, implementation guidance |
|
|
221
|
-
|
|
222
|
-
Each persona has a tuned system prompt that shapes how Claude approaches your project. The agent has access to governance tools for managing features, epics, sprints, decisions, actions, questions, meetings, and reports — plus methodology-specific tools when a plugin is active.
|
|
223
|
-
|
|
224
|
-
## Feature → Epic → Sprint Workflow
|
|
225
|
-
|
|
226
|
-
Marvin enforces a structured product development workflow:
|
|
227
|
-
|
|
228
|
-
1. **Product Owner** defines features (`F-xxx`) as `draft`, then approves them when requirements are clear
|
|
229
|
-
2. **Tech Lead** breaks approved features into implementation epics (`E-xxx`) — the system **enforces** that epics can only be created against approved features
|
|
230
|
-
3. **Delivery Manager** creates sprints (`SP-xxx`) with goals and date boundaries, assigns epics to sprints, and tracks progress
|
|
231
|
-
|
|
232
|
-
```
|
|
233
|
-
Feature (PO) Epic (TL) Sprint (DM)
|
|
234
|
-
┌──────────┐ ┌──────────────┐ ┌──────────────────────┐
|
|
235
|
-
│ F-001 │───▶│ E-001 │───▶│ SP-001 │
|
|
236
|
-
│ approved │ │ linked: F-001│ │ linkedEpics: [E-001] │
|
|
237
|
-
└──────────┘ ├──────────────┤ │ goal: "Deliver auth" │
|
|
238
|
-
│ E-002 │ │ 2026-03-01..03-14 │
|
|
239
|
-
│ linked: F-001│ └──────────────────────┘
|
|
240
|
-
└──────────────┘ │
|
|
241
|
-
┌────────┴─────────────┐
|
|
242
|
-
│ A-001 (sprint:SP-001) │
|
|
243
|
-
│ D-003 (sprint:SP-001) │
|
|
244
|
-
└──────────────────────┘
|
|
415
|
+
```bash
|
|
416
|
+
marvin analyze M-001 # Draft mode — proposes without creating
|
|
417
|
+
marvin analyze M-001 --no-draft # Create artifacts directly
|
|
418
|
+
marvin analyze M-001 --as tl # Use tech-lead persona (default: dm)
|
|
245
419
|
```
|
|
246
420
|
|
|
247
|
-
|
|
248
|
-
- `goal` — what the sprint aims to deliver
|
|
249
|
-
- `startDate` / `endDate` — sprint boundaries (ISO dates)
|
|
250
|
-
- `status` — `planned` → `active` → `completed` (or `cancelled`)
|
|
251
|
-
- `linkedEpics` — soft-validated references to epic IDs (warns if not found but doesn't block creation)
|
|
252
|
-
|
|
253
|
-
When a sprint links to epics, those epics are auto-tagged with `sprint:SP-xxx`. Work items (actions, decisions, questions) are associated with sprints via the same `sprint:SP-xxx` tag convention. The `generate_sprint_progress` report shows linked epics with statuses, tagged work items grouped by status, and done/total completion %.
|
|
254
|
-
|
|
255
|
-
**Sprint planning** is supported by the `gather_sprint_planning_context` tool, which aggregates all planning-relevant data in a single call:
|
|
256
|
-
|
|
257
|
-
| Section | Contents |
|
|
258
|
-
|---------|----------|
|
|
259
|
-
| `approvedFeatures` | Approved features sorted by priority, with epic counts by status |
|
|
260
|
-
| `backlog` | Unassigned non-done epics, sorted by parent feature priority, enriched with feature context and effort estimates |
|
|
261
|
-
| `activeSprint` | Current active sprint with linked epic statuses, work item counts, and completion % |
|
|
262
|
-
| `velocityReference` | Last 2 completed sprints with epic count, effort strings, and work item throughput |
|
|
263
|
-
| `blockers` | Open questions, open risk-finding and blocker-report contributions |
|
|
264
|
-
| `summary` | Total backlog size, approved features with no epics, epics at risk, planned sprint count |
|
|
265
|
-
|
|
266
|
-
When asked to propose a sprint, the DM reasons through priority, capacity, dependencies, and risk to present a structured proposal. The TL focuses on technical readiness, effort balance, and feature coverage. Both personas call this tool automatically before proposing a sprint plan.
|
|
267
|
-
|
|
268
|
-
This provides **hard enforcement** (epics must link to approved features) combined with **soft guidance** (persona prompts steer each role toward their responsibilities) and **sprint-level tracking** for time-boxed delivery.
|
|
269
|
-
|
|
270
|
-
## Configuration
|
|
271
|
-
|
|
272
|
-
Marvin uses two configuration layers:
|
|
273
|
-
|
|
274
|
-
- **User config** (`~/.config/marvin/config.yaml`) — API key, default model, default persona
|
|
275
|
-
- **Project config** (`.marvin/config.yaml`) — Project name, methodology, persona overrides
|
|
276
|
-
|
|
277
|
-
The API key resolves in order: user config > `ANTHROPIC_API_KEY` environment variable.
|
|
278
|
-
|
|
279
|
-
**Example project config (SAP AEM):**
|
|
280
|
-
|
|
281
|
-
```yaml
|
|
282
|
-
name: my-btp-project
|
|
283
|
-
methodology: sap-aem
|
|
284
|
-
aem:
|
|
285
|
-
currentPhase: assess-use-case
|
|
286
|
-
personas:
|
|
287
|
-
product-owner:
|
|
288
|
-
enabled: true
|
|
289
|
-
delivery-manager:
|
|
290
|
-
enabled: true
|
|
291
|
-
tech-lead:
|
|
292
|
-
enabled: true
|
|
293
|
-
```
|
|
421
|
+
The `analyze_meeting` MCP tool is also available during chat sessions for the same workflow.
|
|
294
422
|
|
|
295
423
|
## Import
|
|
296
424
|
|
|
@@ -396,7 +524,32 @@ marvin ingest --all --as tl
|
|
|
396
524
|
|
|
397
525
|
**Direct mode** (`--no-draft`): Claude creates artifacts directly using MCP tools. Each artifact gets a `source` frontmatter field for traceability.
|
|
398
526
|
|
|
399
|
-
The `.manifest.yaml` file in `sources/` tracks processing state — which files have been processed, which artifacts were created, and any errors.
|
|
527
|
+
The `.manifest.yaml` file in `sources/` tracks processing state — which files have been processed, which artifacts were created, and any errors. During chat sessions, the agent can query source status via `list_sources` and `get_source_info` tools.
|
|
528
|
+
|
|
529
|
+
## Session Persistence
|
|
530
|
+
|
|
531
|
+
Every chat session is **automatically saved** when you exit. Marvin uses the Claude Agent SDK's built-in session persistence and generates an AI-powered name for each session (e.g. `jwt-auth-decision`, `sprint-3-planning`).
|
|
532
|
+
|
|
533
|
+
```bash
|
|
534
|
+
# Start a new session — auto-saved on exit
|
|
535
|
+
marvin chat --as po
|
|
536
|
+
|
|
537
|
+
# → On exit: Session saved as "graphql-vs-rest-decision"
|
|
538
|
+
|
|
539
|
+
# List saved sessions
|
|
540
|
+
marvin sessions
|
|
541
|
+
|
|
542
|
+
# Resume via interactive picker
|
|
543
|
+
marvin chat --resume
|
|
544
|
+
|
|
545
|
+
# Resume a specific session by name
|
|
546
|
+
marvin chat --resume graphql-vs-rest-decision
|
|
547
|
+
|
|
548
|
+
# Delete a session
|
|
549
|
+
marvin sessions delete graphql-vs-rest-decision
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
Session metadata (name, persona, timestamps, turn count) is stored in `.marvin/sessions.yaml`. The agent also has read-only MCP access to session history (`list_sessions`, `get_session`) — it can reference what was discussed in previous sessions for continuity.
|
|
400
553
|
|
|
401
554
|
## Git Sync
|
|
402
555
|
|
|
@@ -461,31 +614,31 @@ marvin-serve --project-dir /path/to/project
|
|
|
461
614
|
}
|
|
462
615
|
```
|
|
463
616
|
|
|
464
|
-
##
|
|
465
|
-
|
|
466
|
-
Every chat session is **automatically saved** when you exit. Marvin uses the Claude Agent SDK's built-in session persistence and generates an AI-powered name for each session (e.g. `jwt-auth-decision`, `sprint-3-planning`).
|
|
467
|
-
|
|
468
|
-
```bash
|
|
469
|
-
# Start a new session — auto-saved on exit
|
|
470
|
-
marvin chat --as po
|
|
617
|
+
## Configuration
|
|
471
618
|
|
|
472
|
-
|
|
619
|
+
Marvin uses two configuration layers:
|
|
473
620
|
|
|
474
|
-
|
|
475
|
-
marvin
|
|
621
|
+
- **User config** (`~/.config/marvin/config.yaml`) — API key, default model, default persona
|
|
622
|
+
- **Project config** (`.marvin/config.yaml`) — Project name, methodology, persona overrides
|
|
476
623
|
|
|
477
|
-
|
|
478
|
-
marvin chat --resume
|
|
624
|
+
The API key resolves in order: user config > `ANTHROPIC_API_KEY` environment variable.
|
|
479
625
|
|
|
480
|
-
|
|
481
|
-
marvin chat --resume graphql-vs-rest-decision
|
|
626
|
+
**Example project config (SAP AEM):**
|
|
482
627
|
|
|
483
|
-
|
|
484
|
-
|
|
628
|
+
```yaml
|
|
629
|
+
name: my-btp-project
|
|
630
|
+
methodology: sap-aem
|
|
631
|
+
aem:
|
|
632
|
+
currentPhase: assess-use-case
|
|
633
|
+
personas:
|
|
634
|
+
product-owner:
|
|
635
|
+
enabled: true
|
|
636
|
+
delivery-manager:
|
|
637
|
+
enabled: true
|
|
638
|
+
tech-lead:
|
|
639
|
+
enabled: true
|
|
485
640
|
```
|
|
486
641
|
|
|
487
|
-
Session metadata (name, persona, timestamps, turn count) is stored in `.marvin/sessions.yaml`. The agent also has read-only MCP access to session history — it can reference what was discussed in previous sessions for continuity.
|
|
488
|
-
|
|
489
642
|
## Architecture
|
|
490
643
|
|
|
491
644
|
```
|
|
@@ -496,16 +649,19 @@ src/core/ → Project discovery, config, errors
|
|
|
496
649
|
src/storage/ → Extensible document store (Markdown + YAML frontmatter)
|
|
497
650
|
src/personas/ → Persona definitions, registry, prompt builder
|
|
498
651
|
src/agent/ → Claude Agent SDK integration, MCP tools
|
|
652
|
+
└── tools/ → Session, source, web dashboard, and document tools
|
|
499
653
|
src/mcp/ → Standalone MCP stdio server adapter
|
|
654
|
+
src/web/ → Web dashboard (server, router, templates)
|
|
500
655
|
src/plugins/ → Plugin system (methodology plugins)
|
|
501
656
|
├── types.ts → MarvinPlugin interface
|
|
502
|
-
├── common.ts → Shared registrations + tool factory
|
|
657
|
+
├── common.ts → Shared registrations + tool factory
|
|
503
658
|
├── registry.ts → Plugin resolution
|
|
504
659
|
└── builtin/
|
|
505
660
|
├── generic-agile.ts → Default methodology
|
|
506
661
|
├── sap-aem.ts → SAP AEM methodology
|
|
507
662
|
└── tools/ → Tool implementations per artifact type
|
|
508
|
-
src/reports/ → Report generators (GAR
|
|
663
|
+
src/reports/ → Report generators (GAR, Health: collector, evaluator, renderers)
|
|
664
|
+
src/contributions/ → Contribution workflow (types, prompts, analysis)
|
|
509
665
|
src/import/ → Import engine (classifier, resolver, plan/execute)
|
|
510
666
|
src/skills/ → Skill system (composable capabilities)
|
|
511
667
|
├── types.ts → SkillDefinition interface
|