mrvn-cli 0.4.1 → 0.4.4
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 +67 -23
- package/dist/index.js +1436 -323
- package/dist/index.js.map +1 -1
- package/dist/marvin-serve.js +1328 -215
- package/dist/marvin-serve.js.map +1 -1
- package/dist/marvin.js +1440 -327
- 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, meetings, and reports through an interactive CLI backed by Claude.
|
|
3
|
+
AI-powered product development assistant. Marvin provides three expert personas — **Product Owner**, **Delivery Manager**, and **Technical Lead** — that help teams manage features, epics, tasks, sprints, decisions, actions, questions, meetings, and reports through an interactive CLI backed by Claude.
|
|
4
4
|
|
|
5
5
|
## Quick Start
|
|
6
6
|
|
|
@@ -22,7 +22,7 @@ npx tsx bin/marvin.ts chat --as tl # Technical Lead
|
|
|
22
22
|
|
|
23
23
|
## How It Works
|
|
24
24
|
|
|
25
|
-
Marvin stores all project governance data as **Markdown files with YAML frontmatter** inside a `.marvin/` directory. Each artifact gets its own file with an auto-incrementing ID (`F-001`, `E-001`, `SP-001`, `D-001`, `A-002`, `Q-003`). This makes everything human-readable, Git-friendly, and Obsidian-compatible.
|
|
25
|
+
Marvin stores all project governance data as **Markdown files with YAML frontmatter** inside a `.marvin/` directory. Each artifact gets its own file with an auto-incrementing ID (`F-001`, `E-001`, `T-001`, `SP-001`, `D-001`, `A-002`, `Q-003`). This makes everything human-readable, Git-friendly, and Obsidian-compatible.
|
|
26
26
|
|
|
27
27
|
When you start a chat session, Marvin:
|
|
28
28
|
|
|
@@ -43,6 +43,7 @@ When you start a chat session, Marvin:
|
|
|
43
43
|
└── docs/
|
|
44
44
|
├── features/ # F-001.md, F-002.md, ...
|
|
45
45
|
├── epics/ # E-001.md, E-002.md, ...
|
|
46
|
+
├── tasks/ # T-001.md, T-002.md, ...
|
|
46
47
|
├── sprints/ # SP-001.md, SP-002.md, ...
|
|
47
48
|
├── decisions/ # D-001.md, D-002.md, ...
|
|
48
49
|
├── actions/ # A-001.md, A-002.md, ...
|
|
@@ -50,6 +51,7 @@ When you start a chat session, Marvin:
|
|
|
50
51
|
├── meetings/ # 2026-02-08-kickoff.md, ...
|
|
51
52
|
├── reports/ # R-001.md, R-002.md, ...
|
|
52
53
|
├── contributions/ # C-001.md, C-002.md, ...
|
|
54
|
+
├── prds/ # PRD-001.md, PRD-002.md, ... (PRD Generator skill)
|
|
53
55
|
├── jira-issues/ # JI-001.md, JI-002.md, ... (Jira skill)
|
|
54
56
|
├── use-cases/ # UC-001.md, UC-002.md, ... (SAP AEM)
|
|
55
57
|
├── tech-assessments/ # TA-001.md, TA-002.md, ... (SAP AEM)
|
|
@@ -100,35 +102,48 @@ When you start a chat session, Marvin:
|
|
|
100
102
|
|------------|-----------|-------|
|
|
101
103
|
| `po` | Product Owner | Product vision, feature definition and prioritization, stakeholder needs, acceptance criteria |
|
|
102
104
|
| `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 |
|
|
105
|
+
| `tl` | Technical Lead | Architecture, epic creation and scoping, task creation and breakdown, sprint scoping and technical execution, code quality, technical decisions, implementation guidance |
|
|
104
106
|
|
|
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.
|
|
107
|
+
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, tasks, sprints, decisions, actions, questions, meetings, and reports — plus methodology-specific tools when a plugin is active.
|
|
106
108
|
|
|
107
|
-
## Feature → Epic → Sprint Workflow
|
|
109
|
+
## Feature → Epic → Task → Sprint Workflow
|
|
108
110
|
|
|
109
111
|
Marvin enforces a structured product development workflow:
|
|
110
112
|
|
|
111
113
|
1. **Product Owner** defines features (`F-xxx`) as `draft`, then approves them when requirements are clear
|
|
112
114
|
2. **Tech Lead** breaks approved features into implementation epics (`E-xxx`) — the system **enforces** that epics can only be created against approved features. An epic can link to **one or more features** (e.g. a cross-cutting epic spanning auth and profiles)
|
|
113
|
-
3. **
|
|
115
|
+
3. **Tech Lead** breaks epics into implementation tasks (`T-xxx`) with acceptance criteria, complexity estimates, and technical notes — tasks use **soft validation** (warns if linked epic not found, but doesn't block creation)
|
|
116
|
+
4. **Delivery Manager** creates sprints (`SP-xxx`) with goals and date boundaries, assigns epics to sprints, and tracks progress
|
|
114
117
|
|
|
115
118
|
```
|
|
116
|
-
Feature (PO) Epic (TL)
|
|
117
|
-
┌──────────┐
|
|
118
|
-
│ F-001 │───▶│ E-001
|
|
119
|
-
│ approved │ │ linked: [F-001]
|
|
120
|
-
└──────────┘
|
|
121
|
-
│ E-002
|
|
122
|
-
┌──────────┐───▶│ linked: [F-001,
|
|
123
|
-
│ F-002 │
|
|
124
|
-
│ approved │
|
|
125
|
-
└──────────┘
|
|
126
|
-
│ D-003 (sprint:SP-001) │
|
|
127
|
-
└──────────────────────┘
|
|
119
|
+
Feature (PO) Epic (TL) Task (TL) Sprint (DM)
|
|
120
|
+
┌──────────┐ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────────┐
|
|
121
|
+
│ F-001 │───▶│ E-001 │───▶│ T-001 │ │ SP-001 │
|
|
122
|
+
│ approved │ │ linked: [F-001] │ │ linked: [E-001] │ │ linkedEpics: [E-001] │
|
|
123
|
+
└──────────┘ ├──────────────────┤ ├──────────────────┤ │ goal: "Deliver auth" │
|
|
124
|
+
│ E-002 │ │ T-002 │ │ 2026-03-01..03-14 │
|
|
125
|
+
┌──────────┐───▶│ linked: [F-001, │ │ linked: [E-001] │ └──────────────────────┘
|
|
126
|
+
│ F-002 │ │ F-002] │ └──────────────────┘
|
|
127
|
+
│ approved │ └──────────────────┘
|
|
128
|
+
└──────────┘
|
|
128
129
|
```
|
|
129
130
|
|
|
130
131
|
Epics store `linkedFeature` as an array (e.g. `["F-001", "F-002"]`). Legacy files with a single string value are normalized to an array on read for backwards compatibility. Multi-linked epics appear in progress reports under each linked feature, and feature tags (`feature:F-xxx`) are generated for all linked features.
|
|
131
132
|
|
|
133
|
+
### Tasks
|
|
134
|
+
|
|
135
|
+
Tasks (`T-xxx`) are concrete implementation items that break down an epic's scope:
|
|
136
|
+
|
|
137
|
+
- `linkedEpic` — one or more epic IDs (e.g. `["E-001"]`); auto-generates `epic:E-xxx` tags
|
|
138
|
+
- `status` — `backlog` → `ready` → `in-progress` → `review` → `done`
|
|
139
|
+
- `acceptanceCriteria` — what "done" looks like for this task
|
|
140
|
+
- `technicalNotes` — implementation details and technical context
|
|
141
|
+
- `complexity` — `trivial`, `simple`, `moderate`, `complex`, `very-complex`
|
|
142
|
+
- `estimatedPoints` — story point estimate
|
|
143
|
+
- `priority` — `critical`, `high`, `medium`, `low`
|
|
144
|
+
|
|
145
|
+
Tasks use **soft validation** for linked epics — if the epic doesn't exist or isn't the right type, the tool warns but still creates the task. This keeps tasks operational without blocking on governance state.
|
|
146
|
+
|
|
132
147
|
**Sprints** are time-boxed iterations with:
|
|
133
148
|
- `goal` — what the sprint aims to deliver
|
|
134
149
|
- `startDate` / `endDate` — sprint boundaries (ISO dates)
|
|
@@ -279,7 +294,7 @@ Marvin supports pluggable methodologies. Choose one during `marvin init`:
|
|
|
279
294
|
|
|
280
295
|
### Generic Agile (default)
|
|
281
296
|
|
|
282
|
-
Standard agile governance with features, epics, sprints, decisions, actions, questions, meetings, and reports.
|
|
297
|
+
Standard agile governance with features, epics, tasks, sprints, decisions, actions, questions, meetings, and reports.
|
|
283
298
|
|
|
284
299
|
### SAP Application Extension Methodology (SAP AEM)
|
|
285
300
|
|
|
@@ -296,7 +311,7 @@ A 3-phase methodology for building extensions on SAP BTP:
|
|
|
296
311
|
```
|
|
297
312
|
Layer 1 — Core: decisions, actions, questions (always available)
|
|
298
313
|
Layer 2 — Common: meetings, reports, features, epics, (shared across methodologies)
|
|
299
|
-
sprints, contributions
|
|
314
|
+
tasks, sprints, contributions
|
|
300
315
|
Layer 3 — Methodology: use-cases, tech-assessments, (sap-aem specific)
|
|
301
316
|
extension-designs, phase management
|
|
302
317
|
```
|
|
@@ -369,6 +384,34 @@ marvin skills migrate # Converts .yaml files to SKILL.md directories
|
|
|
369
384
|
|
|
370
385
|
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.
|
|
371
386
|
|
|
387
|
+
### PRD Generator
|
|
388
|
+
|
|
389
|
+
Generate Product Requirements Documents from governance artifacts for consumption by Claude TaskMaster or Claude Code.
|
|
390
|
+
|
|
391
|
+
**Enabling the skill:**
|
|
392
|
+
|
|
393
|
+
```yaml
|
|
394
|
+
skills:
|
|
395
|
+
tech-lead: [prd-generator]
|
|
396
|
+
delivery-manager: [prd-generator]
|
|
397
|
+
product-owner: [prd-generator]
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
**Tools:**
|
|
401
|
+
|
|
402
|
+
| Tool | Description |
|
|
403
|
+
|------|-------------|
|
|
404
|
+
| `gather_prd_context` | Aggregate features, epics, tasks, decisions, questions, and actions into structured JSON |
|
|
405
|
+
| `generate_prd` | Generate a formatted PRD and save it as `PRD-xxx`. Supports `taskmaster` and `claude-code` formats |
|
|
406
|
+
| `export_prd` | Export a PRD document to a file path for external use |
|
|
407
|
+
|
|
408
|
+
**Formats:**
|
|
409
|
+
|
|
410
|
+
- **TaskMaster** (`taskmaster`) — Structured PRD matching Claude TaskMaster's `parse_prd` expectations: project overview, goals, features with epics and tasks, technical considerations from decisions and open questions, and implementation priorities ordered by feature priority
|
|
411
|
+
- **Claude Code** (`claude-code`) — Implementation-oriented PRD with architecture decisions, phased implementation plan with task checklists (acceptance criteria, technical notes), and open questions
|
|
412
|
+
|
|
413
|
+
Both formats can be scoped to a single feature using the `focusFeature` parameter. After generating, use `export_prd` to write the content to a file (e.g. `.taskmaster/docs/prd.txt` for TaskMaster).
|
|
414
|
+
|
|
372
415
|
### Jira Integration
|
|
373
416
|
|
|
374
417
|
Bidirectional sync between Marvin artifacts and Jira issues. Imported issues are stored locally as `JI-xxx` documents in `.marvin/docs/jira-issues/`.
|
|
@@ -398,14 +441,14 @@ export JIRA_API_TOKEN=your-api-token # Generate at https://id.atlassian.com/m
|
|
|
398
441
|
| `get_jira_issue` | local read | Get a JI-xxx by local ID or Jira key |
|
|
399
442
|
| `pull_jira_issue` | Jira → local | Fetch one issue by key, create/update local JI-xxx |
|
|
400
443
|
| `pull_jira_issues_jql` | Jira → local | Bulk fetch via JQL query, create/update local JI-xxx |
|
|
401
|
-
| `push_artifact_to_jira` | local → Jira | Create a Jira issue from any Marvin artifact (D/A/Q/F/E) |
|
|
444
|
+
| `push_artifact_to_jira` | local → Jira | Create a Jira issue from any Marvin artifact (D/A/Q/F/E/T) |
|
|
402
445
|
| `sync_jira_issue` | bidirectional | Push local changes to Jira, pull latest status/assignee/labels back |
|
|
403
446
|
| `link_artifact_to_jira` | local only | Link a Marvin artifact to an existing JI-xxx |
|
|
404
447
|
|
|
405
448
|
**How each persona uses it:**
|
|
406
449
|
|
|
407
450
|
- **Product Owner** — Pull stakeholder-reported issues for triage, push approved features as Stories, link decisions to Jira issues for audit trail
|
|
408
|
-
- **Tech Lead** — Pull technical issues for sprint planning, push epics for cross-team visibility, bidirectional sync to keep governance aligned
|
|
451
|
+
- **Tech Lead** — Pull technical issues for sprint planning, push epics and tasks for cross-team visibility, bidirectional sync to keep governance aligned
|
|
409
452
|
- **Delivery Manager** — Pull sprint issues for progress tracking, push actions for stakeholder visibility, use JQL queries for reporting
|
|
410
453
|
|
|
411
454
|
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.
|
|
@@ -670,7 +713,8 @@ src/skills/ → Skill system (composable capabilities)
|
|
|
670
713
|
├── registry.ts → Skill loading, resolution, tool/prompt collection
|
|
671
714
|
└── builtin/
|
|
672
715
|
├── governance-review.ts → Governance review skill
|
|
673
|
-
|
|
716
|
+
├── jira/ → Jira integration skill (client, tools, definition)
|
|
717
|
+
└── prd-generator/ → PRD generation skill (tools, definition)
|
|
674
718
|
src/git/ → Git sync (simple-git wrapper for .marvin/)
|
|
675
719
|
```
|
|
676
720
|
|