mrvn-cli 0.5.28 → 0.6.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 +63 -708
- package/dist/index.d.ts +3 -2
- package/dist/index.js +2019 -3373
- package/dist/index.js.map +1 -1
- package/dist/marvin-serve.js +1514 -2823
- package/dist/marvin-serve.js.map +1 -1
- package/dist/marvin.js +1818 -3169
- package/dist/marvin.js.map +1 -1
- package/dist/web/static/styles.css +1782 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,756 +5,111 @@ AI-powered product development assistant. Marvin provides three expert personas
|
|
|
5
5
|
## Quick Start
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
# Install
|
|
9
|
-
npm install
|
|
8
|
+
# Install globally
|
|
9
|
+
npm install -g mrvn-cli
|
|
10
10
|
|
|
11
|
-
#
|
|
12
|
-
|
|
11
|
+
# Set your Anthropic API key
|
|
12
|
+
export ANTHROPIC_API_KEY=sk-ant-...
|
|
13
13
|
|
|
14
|
-
#
|
|
15
|
-
|
|
14
|
+
# Initialize a project
|
|
15
|
+
marvin init
|
|
16
16
|
|
|
17
17
|
# Start a chat session
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
marvin chat --as po # Product Owner
|
|
19
|
+
marvin chat --as dm # Delivery Manager
|
|
20
|
+
marvin chat --as tl # Technical Lead
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
## How It Works
|
|
24
24
|
|
|
25
|
-
Marvin stores
|
|
25
|
+
Marvin stores project governance data as **Markdown files with YAML frontmatter** inside a `.marvin/` directory — human-readable, Git-friendly, and Obsidian-compatible. Each artifact gets an auto-incrementing ID (`F-001`, `E-001`, `SP-001`, `D-001`, etc.).
|
|
26
26
|
|
|
27
|
-
When you start a chat session, Marvin
|
|
27
|
+
When you start a chat session, Marvin loads a persona-specific system prompt, exposes your project data as **MCP tools** that Claude can call, and starts an interactive conversation where the agent reads, creates, and updates artifacts on your behalf.
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
2. Exposes your project's governance data as **MCP tools** that Claude can call
|
|
31
|
-
3. Starts an interactive conversation where the agent can read, create, and update project artifacts
|
|
32
|
-
|
|
33
|
-
```
|
|
29
|
+
```text
|
|
34
30
|
.marvin/
|
|
35
|
-
├── config.yaml
|
|
36
|
-
├── sessions.yaml
|
|
37
|
-
├──
|
|
38
|
-
├──
|
|
39
|
-
├── sources/ # Source documents for ingestion
|
|
40
|
-
│ ├── .manifest.yaml # Tracks processing state
|
|
41
|
-
│ ├── Requirements.pdf # Source document
|
|
42
|
-
│ └── Architecture Notes.md # Source document
|
|
31
|
+
├── config.yaml # Project configuration
|
|
32
|
+
├── sessions.yaml # Saved chat sessions
|
|
33
|
+
├── skills/ # Custom skills
|
|
34
|
+
├── sources/ # Source documents for ingestion
|
|
43
35
|
└── docs/
|
|
44
|
-
├── features/
|
|
45
|
-
├── epics/
|
|
46
|
-
├── tasks/
|
|
47
|
-
├── sprints/
|
|
48
|
-
├── decisions/
|
|
49
|
-
├── actions/
|
|
50
|
-
├── questions/
|
|
51
|
-
├── meetings/
|
|
52
|
-
|
|
53
|
-
├── contributions/ # C-001.md, C-002.md, ...
|
|
54
|
-
├── prds/ # PRD-001.md, PRD-002.md, ... (PRD Generator skill)
|
|
55
|
-
├── jira-issues/ # JI-001.md, JI-002.md, ... (Jira skill)
|
|
56
|
-
├── use-cases/ # UC-001.md, UC-002.md, ... (SAP AEM)
|
|
57
|
-
├── tech-assessments/ # TA-001.md, TA-002.md, ... (SAP AEM)
|
|
58
|
-
└── extension-designs/ # XD-001.md, XD-002.md, ... (SAP AEM)
|
|
36
|
+
├── features/ # F-001.md, F-002.md, ...
|
|
37
|
+
├── epics/ # E-001.md, E-002.md, ...
|
|
38
|
+
├── tasks/ # T-001.md, T-002.md, ...
|
|
39
|
+
├── sprints/ # SP-001.md, SP-002.md, ...
|
|
40
|
+
├── decisions/ # D-001.md, D-002.md, ...
|
|
41
|
+
├── actions/ # A-001.md, A-002.md, ...
|
|
42
|
+
├── questions/ # Q-001.md, Q-002.md, ...
|
|
43
|
+
├── meetings/ # M-001.md, M-002.md, ...
|
|
44
|
+
└── ...
|
|
59
45
|
```
|
|
60
46
|
|
|
61
|
-
## Commands
|
|
62
|
-
|
|
63
|
-
| Command | Description |
|
|
64
|
-
|---------|-------------|
|
|
65
|
-
| `marvin init` | Create a `.marvin/` project (includes methodology picker) |
|
|
66
|
-
| `marvin chat --as <persona>` | Start an interactive session (`po`, `dm`, `tl`) |
|
|
67
|
-
| `marvin chat -p "<text>" --as <persona>` | Single-prompt (non-interactive) session |
|
|
68
|
-
| `marvin chat --resume` | Resume a past session (interactive picker) |
|
|
69
|
-
| `marvin chat --resume <name>` | Resume a specific session by name |
|
|
70
|
-
| `marvin status` | Show document counts and open items |
|
|
71
|
-
| `marvin config [key] [value]` | View or set configuration |
|
|
72
|
-
| `marvin config api-key` | Securely set your Anthropic API key |
|
|
73
|
-
| `marvin import <path>` | Import documents or sources from external paths |
|
|
74
|
-
| `marvin import <path> --dry-run` | Preview import plan without writing files |
|
|
75
|
-
| `marvin ingest [file]` | Process source documents into governance artifacts |
|
|
76
|
-
| `marvin ingest --all` | Process all unprocessed source files |
|
|
77
|
-
| `marvin analyze <meeting-id>` | Analyze a meeting to extract decisions, actions, questions |
|
|
78
|
-
| `marvin contribute` | Submit a structured contribution from a persona |
|
|
79
|
-
| `marvin report gar` | Generate a Green/Amber/Red status report (ASCII) |
|
|
80
|
-
| `marvin report gar --format confluence` | GAR report as Confluence-friendly markdown |
|
|
81
|
-
| `marvin report health` | Generate a governance health check report (ASCII) |
|
|
82
|
-
| `marvin report health --format confluence` | Health report as Confluence-friendly markdown |
|
|
83
|
-
| `marvin web` | Launch a local web dashboard for project data |
|
|
84
|
-
| `marvin web -p 8080` | Web dashboard on a custom port |
|
|
85
|
-
| `marvin serve` | Start standalone MCP server for Claude Desktop/Code |
|
|
86
|
-
| `marvin sync` | Stage, commit, pull, and push governance data |
|
|
87
|
-
| `marvin sync init [--remote <url>]` | Initialize a git repo inside `.marvin/` |
|
|
88
|
-
| `marvin sync status` | Show branch, remote, and changed files |
|
|
89
|
-
| `marvin sync remote <url>` | Set or update the remote repository URL |
|
|
90
|
-
| `marvin clone <url> [dir]` | Clone governance data from a remote repo |
|
|
91
|
-
| `marvin sessions` | List all saved chat sessions |
|
|
92
|
-
| `marvin sessions delete <name>` | Delete a saved session |
|
|
93
|
-
| `marvin skills` | List available skills and persona assignments |
|
|
94
|
-
| `marvin skills install <skill> --as <persona\|all>` | Enable a skill for a persona (or all) |
|
|
95
|
-
| `marvin skills remove <skill> --as <persona\|all>` | Disable a skill for a persona (or all) |
|
|
96
|
-
| `marvin skills create <name>` | Scaffold a new custom skill |
|
|
97
|
-
| `marvin skills migrate` | Migrate old YAML skills to SKILL.md format |
|
|
98
|
-
|
|
99
47
|
## Personas
|
|
100
48
|
|
|
101
|
-
| Short
|
|
102
|
-
|
|
103
|
-
| `po` | Product Owner | Product vision, feature
|
|
104
|
-
| `dm` | Delivery Manager |
|
|
105
|
-
| `tl` | Technical Lead | Architecture, epic
|
|
106
|
-
|
|
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.
|
|
108
|
-
|
|
109
|
-
## Feature → Epic → Task → Sprint Workflow
|
|
110
|
-
|
|
111
|
-
Marvin enforces a structured product development workflow:
|
|
112
|
-
|
|
113
|
-
1. **Product Owner** defines features (`F-xxx`) as `draft`, then approves them when requirements are clear
|
|
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)
|
|
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
|
|
117
|
-
|
|
118
|
-
```
|
|
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
|
-
└──────────┘
|
|
129
|
-
```
|
|
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.
|
|
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
|
-
|
|
147
|
-
**Sprints** are time-boxed iterations with:
|
|
148
|
-
- `goal` — what the sprint aims to deliver
|
|
149
|
-
- `startDate` / `endDate` — sprint boundaries (ISO dates)
|
|
150
|
-
- `status` — `planned` → `active` → `completed` (or `cancelled`)
|
|
151
|
-
- `linkedEpics` — soft-validated references to epic IDs (warns if not found but doesn't block creation)
|
|
152
|
-
|
|
153
|
-
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.
|
|
154
|
-
|
|
155
|
-
### Action Scheduling
|
|
156
|
-
|
|
157
|
-
Actions support a `dueDate` field (ISO date) and a `sprints` parameter for sprint assignment:
|
|
158
|
-
|
|
159
|
-
- **`create_action`** and **`update_action`** accept `dueDate` (e.g. `'2026-03-15'`) and `sprints` (e.g. `['SP-001']`)
|
|
160
|
-
- The `sprints` parameter translates to `sprint:SP-xxx` tags automatically
|
|
161
|
-
- When an action has a `dueDate` but no sprint assigned, the tool suggests matching sprints whose date range contains the due date
|
|
162
|
-
- **`suggest_sprints_for_action`** is a standalone read-only tool that returns matching sprints for any due date
|
|
163
|
-
- Open actions with a `dueDate` in the past are **automatically flagged as overdue** in GAR reports (merged with tag-based `overdue` items, deduplicated)
|
|
164
|
-
|
|
165
|
-
### Sprint Planning
|
|
166
|
-
|
|
167
|
-
Sprint planning is supported by the `gather_sprint_planning_context` tool, which aggregates all planning-relevant data in a single call:
|
|
168
|
-
|
|
169
|
-
| Section | Contents |
|
|
170
|
-
|---------|----------|
|
|
171
|
-
| `approvedFeatures` | Approved features sorted by priority, with epic counts by status |
|
|
172
|
-
| `backlog` | Unassigned non-done epics, sorted by parent feature priority, enriched with feature context and effort estimates |
|
|
173
|
-
| `activeSprint` | Current active sprint with linked epic statuses, work item counts, and completion % |
|
|
174
|
-
| `velocityReference` | Last 2 completed sprints with epic count, effort strings, and work item throughput |
|
|
175
|
-
| `blockers` | Open questions, open risk-finding and blocker-report contributions |
|
|
176
|
-
| `summary` | Total backlog size, approved features with no epics, epics at risk, planned sprint count |
|
|
177
|
-
|
|
178
|
-
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.
|
|
179
|
-
|
|
180
|
-
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.
|
|
181
|
-
|
|
182
|
-
## Web Dashboard
|
|
183
|
-
|
|
184
|
-
Marvin includes a local web dashboard for visualizing project data.
|
|
185
|
-
|
|
186
|
-
```bash
|
|
187
|
-
marvin web # Start on port 3000, auto-open browser
|
|
188
|
-
marvin web -p 8080 # Custom port
|
|
189
|
-
marvin web --no-open # Don't auto-open the browser
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
**Pages:**
|
|
193
|
-
|
|
194
|
-
| Page | URL | Description |
|
|
195
|
-
|------|-----|-------------|
|
|
196
|
-
| Overview | `/` | Document type counts and recent activity |
|
|
197
|
-
| GAR Report | `/gar` | Visual Green/Amber/Red status across scope, schedule, quality, resources |
|
|
198
|
-
| Health Check | `/health` | Governance health check covering artifact completeness and process metrics |
|
|
199
|
-
| Status Board | `/board` | Kanban-style board with documents grouped by status, filterable by type |
|
|
200
|
-
| Document List | `/docs/:type` | Filterable list by status and owner |
|
|
201
|
-
| Document Detail | `/docs/:type/:id` | Full document view with rendered markdown |
|
|
202
|
-
|
|
203
|
-
The sidebar groups navigation into Governance (decisions, actions, questions), Project (features, epics, sprints), and plugin/skill-specific sections.
|
|
204
|
-
|
|
205
|
-
**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`).
|
|
206
|
-
|
|
207
|
-
## Contributions
|
|
208
|
-
|
|
209
|
-
Contributions (C-xxx) are structured inputs from personas outside of meetings. Each persona has specific contribution types that generate governance effects when analyzed.
|
|
210
|
-
|
|
211
|
-
```bash
|
|
212
|
-
# Draft mode (default) — proposes effects without executing
|
|
213
|
-
marvin contribute --as tl --type action-result --prompt "Unit tests completed for auth module"
|
|
214
|
-
|
|
215
|
-
# Direct mode — creates/updates artifacts with source:C-xxx traceability
|
|
216
|
-
marvin contribute --as po --type stakeholder-feedback --prompt "CFO wants cost reporting" --no-draft
|
|
217
|
-
|
|
218
|
-
# Link to a related artifact
|
|
219
|
-
marvin contribute --as dm --type risk-finding --prompt "Third-party API rate limit risk" --about A-001
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
**Contribution types by persona:**
|
|
223
|
-
|
|
224
|
-
| Persona | Types |
|
|
225
|
-
|---------|-------|
|
|
226
|
-
| Product Owner | `stakeholder-feedback`, `acceptance-result`, `priority-change`, `market-insight` |
|
|
227
|
-
| Tech Lead | `action-result`, `spike-findings`, `technical-assessment`, `architecture-review` |
|
|
228
|
-
| Delivery Manager | `risk-finding`, `blocker-report`, `dependency-update`, `status-assessment` |
|
|
229
|
-
|
|
230
|
-
During chat sessions, the agent has access to `list_contributions`, `get_contribution`, `create_contribution`, and `update_contribution` tools.
|
|
231
|
-
|
|
232
|
-
## GAR Reports
|
|
233
|
-
|
|
234
|
-
The Green/Amber/Red report evaluates project health across four dimensions:
|
|
235
|
-
|
|
236
|
-
| Dimension | What it measures |
|
|
237
|
-
|-----------|-----------------|
|
|
238
|
-
| **Scope** | Completion percentage (done vs total actions) |
|
|
239
|
-
| **Schedule** | Blocked items + overdue items (tag-based and date-based, deduplicated) |
|
|
240
|
-
| **Quality** | Risk-tagged items + open questions |
|
|
241
|
-
| **Resources** | Unowned open actions |
|
|
242
|
-
|
|
243
|
-
Each dimension gets a Green/Amber/Red rating based on thresholds. The combined project status uses the worst individual rating.
|
|
244
|
-
|
|
245
|
-
```bash
|
|
246
|
-
marvin report gar # ASCII terminal output with color
|
|
247
|
-
marvin report gar --format confluence # Confluence-ready markdown
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
During chat sessions, the agent can generate GAR reports via the `generate_gar_report` tool and persist them with `save_report`.
|
|
251
|
-
|
|
252
|
-
## Health Check
|
|
253
|
-
|
|
254
|
-
The health check report provides a comprehensive view of **artifact data quality** and **governance process health** across two sections.
|
|
255
|
-
|
|
256
|
-
### Completeness
|
|
257
|
-
|
|
258
|
-
Checks open/active items for required fields:
|
|
259
|
-
|
|
260
|
-
| Type | Open statuses | Required fields |
|
|
261
|
-
|------|---------------|-----------------|
|
|
262
|
-
| Action | `open`, `in-progress` | owner, priority, dueDate, content |
|
|
263
|
-
| Decision | `open`, `proposed` | owner, content |
|
|
264
|
-
| Question | `open` | owner, content |
|
|
265
|
-
| Feature | `draft`, `approved` | owner, priority, content |
|
|
266
|
-
| Epic | `planned`, `in-progress` | owner, targetDate, estimatedEffort, content |
|
|
267
|
-
| Sprint | `planned`, `active` | goal, startDate, endDate, at least 1 linkedEpic |
|
|
268
|
-
|
|
269
|
-
Each category gets a completion percentage: 100% = green, 75%+ = amber, <75% = red.
|
|
49
|
+
| Short | Full Name | Focus |
|
|
50
|
+
|-------|-----------|-------|
|
|
51
|
+
| `po` | Product Owner | Product vision, feature prioritization, stakeholder needs, acceptance criteria |
|
|
52
|
+
| `dm` | Delivery Manager | Sprint planning, epic scheduling, risk management, governance, meeting facilitation |
|
|
53
|
+
| `tl` | Technical Lead | Architecture, epic/task scoping, code quality, technical decisions |
|
|
270
54
|
|
|
271
|
-
|
|
55
|
+
Each persona has a tuned system prompt and access to governance tools for managing artifacts — plus methodology-specific tools when a plugin is active.
|
|
272
56
|
|
|
273
|
-
|
|
57
|
+
## Key Features
|
|
274
58
|
|
|
275
|
-
|
|
276
|
-
|--------|-----------------|-------|-------|-----|
|
|
277
|
-
| Stale items | Open items not updated in 14+ days | 0 | 1-3 | 4+ |
|
|
278
|
-
| Aging actions | Open actions older than 30 days | 0 | 1-3 | 4+ |
|
|
279
|
-
| Decision velocity | Avg days to resolve decisions | ≤7d | ≤21d | >21d |
|
|
280
|
-
| Question resolution | Avg days to answer questions | ≤7d | ≤14d | >14d |
|
|
59
|
+
**Structured workflow** — Product Owner defines features, Tech Lead breaks them into epics and tasks, Delivery Manager plans sprints and tracks progress. Hard validation enforces that epics link to approved features.
|
|
281
60
|
|
|
282
|
-
|
|
61
|
+
**Two methodologies** — Generic Agile (default) for standard agile, and SAP Application Extension Methodology for SAP BTP projects with use cases, tech assessments, and extension designs.
|
|
283
62
|
|
|
284
|
-
|
|
285
|
-
marvin report health # ASCII terminal output with color
|
|
286
|
-
marvin report health --format confluence # Confluence-ready markdown
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
During chat sessions, the agent can generate health reports via the `generate_health_report` tool.
|
|
290
|
-
|
|
291
|
-
## Methodologies
|
|
63
|
+
**Skills** — Composable capabilities that extend any persona: Jira integration (bidirectional sync), PRD generation (for Claude TaskMaster or Claude Code), and governance review. Create custom skills with the SKILL.md format.
|
|
292
64
|
|
|
293
|
-
|
|
65
|
+
**Source ingestion** — Drop PDFs, markdown, or text files into `.marvin/sources/` and run `marvin ingest --all` to extract governance artifacts using AI analysis.
|
|
294
66
|
|
|
295
|
-
|
|
67
|
+
**Web dashboard** — `marvin web` launches a local dashboard with persona-specific views, sprint boards, GAR reports, and artifact detail pages.
|
|
296
68
|
|
|
297
|
-
|
|
69
|
+
**MCP server** — `marvin serve` starts a standalone MCP server for Claude Desktop or Claude Code, giving Claude direct access to all governance tools.
|
|
298
70
|
|
|
299
|
-
|
|
71
|
+
**Git sync** — Version and share governance data independently from your codebase with `marvin sync`.
|
|
300
72
|
|
|
301
|
-
|
|
73
|
+
**Reports** — GAR (Green/Amber/Red) status reports, health checks, and AI-powered sprint summaries.
|
|
302
74
|
|
|
303
|
-
|
|
304
|
-
|-------|------|-------|-----------|
|
|
305
|
-
| 1 | **Assess Extension Use Case** | Define and justify business scenarios | Use Cases (UC-xxx) |
|
|
306
|
-
| 2 | **Assess Extension Technology** | Evaluate BTP technologies and extension points | Tech Assessments (TA-xxx) |
|
|
307
|
-
| 3 | **Define Extension Target Solution** | Design the extension architecture | Extension Designs (XD-xxx) |
|
|
75
|
+
## Documentation
|
|
308
76
|
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
```
|
|
312
|
-
Layer 1 — Core: decisions, actions, questions (always available)
|
|
313
|
-
Layer 2 — Common: meetings, reports, features, epics, (shared across methodologies)
|
|
314
|
-
tasks, sprints, contributions
|
|
315
|
-
Layer 3 — Methodology: use-cases, tech-assessments, (sap-aem specific)
|
|
316
|
-
extension-designs, phase management
|
|
317
|
-
```
|
|
77
|
+
Full documentation is in the [`docs/`](docs/) directory:
|
|
318
78
|
|
|
319
|
-
**
|
|
79
|
+
**For users:**
|
|
320
80
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
81
|
+
- [Getting Started](docs/guides/getting-started.md) — install, initialize, first session
|
|
82
|
+
- [Personas](docs/guides/personas.md) — what each persona does and when to use it
|
|
83
|
+
- [CLI Reference](docs/reference/cli.md) — complete command reference
|
|
84
|
+
- [Configuration](docs/reference/configuration.md) — user and project config options
|
|
85
|
+
- [Document Types](docs/reference/document-types.md) — all artifact types and their fields
|
|
86
|
+
- [Skills](docs/guides/skills.md) — using and creating skills
|
|
87
|
+
- [Jira Integration](docs/guides/jira.md) — bidirectional Jira sync
|
|
88
|
+
- [Web Dashboard](docs/guides/web-dashboard.md) — local web UI
|
|
89
|
+
- [MCP Server](docs/guides/mcp-server.md) — use with Claude Desktop/Code
|
|
326
90
|
|
|
327
|
-
**
|
|
91
|
+
**For contributors:**
|
|
328
92
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
│ assessed │ │ linked: UC-001 │ │ linked: TA-001 │
|
|
334
|
-
└──────────┘ │ recommended │ │ architecture: │
|
|
335
|
-
└──────────────────┘ │ event-driven │
|
|
336
|
-
└──────────────────────┘
|
|
337
|
-
```
|
|
338
|
-
|
|
339
|
-
- Tech assessments require an **assessed or approved** use case
|
|
340
|
-
- Extension designs require a **recommended** tech assessment
|
|
341
|
-
- Phase advancement has **soft gates** — warnings, not blocks
|
|
342
|
-
|
|
343
|
-
**Switching methodologies:** Change `methodology` in `.marvin/config.yaml`. Existing files stay on disk. Common tools (meetings, features, epics, reports) remain available. Only methodology-specific CRUD tools are gained/lost.
|
|
344
|
-
|
|
345
|
-
## Skills
|
|
346
|
-
|
|
347
|
-
Skills are composable capabilities that work with any methodology. Unlike plugins (which define a methodology), skills add tools and behaviors that any persona can use.
|
|
348
|
-
|
|
349
|
-
### Managing skills
|
|
350
|
-
|
|
351
|
-
```bash
|
|
352
|
-
marvin skills # List available skills and assignments
|
|
353
|
-
marvin skills install jira --as all # Enable for all personas
|
|
354
|
-
marvin skills install jira --as po # Enable for one persona
|
|
355
|
-
marvin skills remove jira --as all # Disable for all personas
|
|
356
|
-
marvin skills remove jira --as po # Disable for one persona
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
### Creating custom skills
|
|
360
|
-
|
|
361
|
-
```bash
|
|
362
|
-
marvin skills create my-custom-skill
|
|
363
|
-
```
|
|
364
|
-
|
|
365
|
-
This scaffolds a new skill in `.marvin/skills/my-custom-skill/`:
|
|
366
|
-
|
|
367
|
-
```
|
|
368
|
-
.marvin/skills/my-custom-skill/
|
|
369
|
-
├── SKILL.md # Skill definition (YAML frontmatter + prompt body)
|
|
370
|
-
├── actions.yaml # Action definitions
|
|
371
|
-
└── personas/ # Persona-specific prompts (optional)
|
|
372
|
-
├── product-owner.md
|
|
373
|
-
├── tech-lead.md
|
|
374
|
-
└── delivery-manager.md
|
|
375
|
-
```
|
|
376
|
-
|
|
377
|
-
If you have skills in the older YAML format, migrate them:
|
|
378
|
-
|
|
379
|
-
```bash
|
|
380
|
-
marvin skills migrate # Converts .yaml files to SKILL.md directories
|
|
381
|
-
```
|
|
382
|
-
|
|
383
|
-
### Governance Review
|
|
384
|
-
|
|
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.
|
|
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
|
-
|
|
415
|
-
### Jira Integration
|
|
416
|
-
|
|
417
|
-
Bidirectional sync between Marvin artifacts and Jira issues. Imported issues are stored locally as `JI-xxx` documents in `.marvin/docs/jira-issues/`.
|
|
418
|
-
|
|
419
|
-
**Enabling the skill** — Jira is opt-in. Add it to the `skills` section of `.marvin/config.yaml` for the personas that need it:
|
|
420
|
-
|
|
421
|
-
```yaml
|
|
422
|
-
skills:
|
|
423
|
-
product-owner: [jira]
|
|
424
|
-
tech-lead: [jira]
|
|
425
|
-
delivery-manager: [jira]
|
|
426
|
-
```
|
|
427
|
-
|
|
428
|
-
**Authentication** — set three environment variables (no secrets in config files):
|
|
429
|
-
|
|
430
|
-
```bash
|
|
431
|
-
export JIRA_HOST=yourcompany.atlassian.net
|
|
432
|
-
export JIRA_EMAIL=you@company.com
|
|
433
|
-
export JIRA_API_TOKEN=your-api-token # Generate at https://id.atlassian.com/manage-profile/security/api-tokens
|
|
434
|
-
```
|
|
435
|
-
|
|
436
|
-
**Tools available to all personas:**
|
|
437
|
-
|
|
438
|
-
| Tool | Direction | Description |
|
|
439
|
-
|------|-----------|-------------|
|
|
440
|
-
| `list_jira_issues` | local read | List locally synced JI-xxx documents, filter by status or Jira key |
|
|
441
|
-
| `get_jira_issue` | local read | Get a JI-xxx by local ID or Jira key |
|
|
442
|
-
| `pull_jira_issue` | Jira → local | Fetch one issue by key, create/update local JI-xxx |
|
|
443
|
-
| `pull_jira_issues_jql` | Jira → local | Bulk fetch via JQL query, create/update local JI-xxx |
|
|
444
|
-
| `push_artifact_to_jira` | local → Jira | Create a Jira issue from any Marvin artifact (D/A/Q/F/E/T) |
|
|
445
|
-
| `sync_jira_issue` | bidirectional | Push local changes to Jira, pull latest status/assignee/labels back |
|
|
446
|
-
| `link_artifact_to_jira` | local only | Link a Marvin artifact to an existing JI-xxx |
|
|
447
|
-
|
|
448
|
-
**How each persona uses it:**
|
|
449
|
-
|
|
450
|
-
- **Product Owner** — Pull stakeholder-reported issues for triage, push approved features as Stories, link decisions to Jira issues for audit trail
|
|
451
|
-
- **Tech Lead** — Pull technical issues for sprint planning, push epics and tasks for cross-team visibility, bidirectional sync to keep governance aligned
|
|
452
|
-
- **Delivery Manager** — Pull sprint issues for progress tracking, push actions for stakeholder visibility, use JQL queries for reporting
|
|
453
|
-
|
|
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.
|
|
455
|
-
|
|
456
|
-
## Meeting Analysis
|
|
457
|
-
|
|
458
|
-
Analyze completed meetings to extract governance artifacts:
|
|
459
|
-
|
|
460
|
-
```bash
|
|
461
|
-
marvin analyze M-001 # Draft mode — proposes without creating
|
|
462
|
-
marvin analyze M-001 --no-draft # Create artifacts directly
|
|
463
|
-
marvin analyze M-001 --as tl # Use tech-lead persona (default: dm)
|
|
464
|
-
```
|
|
465
|
-
|
|
466
|
-
The `analyze_meeting` MCP tool is also available during chat sessions for the same workflow.
|
|
467
|
-
|
|
468
|
-
## Import
|
|
469
|
-
|
|
470
|
-
`marvin import` brings external data into your project. It auto-detects what you're pointing at and does the right thing:
|
|
471
|
-
|
|
472
|
-
| Input | What happens |
|
|
473
|
-
|-------|-------------|
|
|
474
|
-
| Another `.marvin/` project (or dir with `config.yaml`) | Imports all governance documents from its `docs/` subdirectories |
|
|
475
|
-
| Directory with `decisions/`, `actions/`, etc. | Imports markdown documents directly |
|
|
476
|
-
| A `.md` file with valid Marvin frontmatter (`id` + `type`) | Imports as a single governance artifact |
|
|
477
|
-
| Directory with PDFs, text files, or unstructured markdown | Copies to `.marvin/sources/` |
|
|
478
|
-
| A single PDF or TXT file | Copies to `.marvin/sources/` |
|
|
479
|
-
|
|
480
|
-
### Basic usage
|
|
481
|
-
|
|
482
|
-
```bash
|
|
483
|
-
# Preview what will happen (no files written)
|
|
484
|
-
marvin import ./proto-governance --dry-run
|
|
485
|
-
|
|
486
|
-
# Import governance documents from another directory
|
|
487
|
-
marvin import ./proto-governance
|
|
488
|
-
|
|
489
|
-
# Import a single Marvin-format document
|
|
490
|
-
marvin import ./exported/D-001.md
|
|
491
|
-
|
|
492
|
-
# Import from another Marvin project
|
|
493
|
-
marvin import ../other-project/.marvin
|
|
494
|
-
|
|
495
|
-
# Import raw source files (PDFs, text) into sources/
|
|
496
|
-
marvin import ./reference-docs
|
|
497
|
-
```
|
|
498
|
-
|
|
499
|
-
### Handling ID conflicts
|
|
500
|
-
|
|
501
|
-
When an imported document has the same ID as an existing one, the `--conflict` option controls behavior:
|
|
502
|
-
|
|
503
|
-
```bash
|
|
504
|
-
# Renumber conflicting IDs (default) — D-001 becomes D-004, etc.
|
|
505
|
-
marvin import ./docs --conflict renumber
|
|
506
|
-
|
|
507
|
-
# Skip documents that conflict
|
|
508
|
-
marvin import ./docs --conflict skip
|
|
509
|
-
|
|
510
|
-
# Overwrite existing documents
|
|
511
|
-
marvin import ./docs --conflict overwrite
|
|
512
|
-
```
|
|
513
|
-
|
|
514
|
-
When renumbering, cross-references within document content are updated automatically (e.g. "See D-001" becomes "See D-004").
|
|
515
|
-
|
|
516
|
-
### Tagging imports
|
|
517
|
-
|
|
518
|
-
Add a tag to all imported documents for traceability:
|
|
519
|
-
|
|
520
|
-
```bash
|
|
521
|
-
marvin import ./proto-governance --tag imported:proto
|
|
522
|
-
```
|
|
523
|
-
|
|
524
|
-
### Importing and ingesting in one step
|
|
525
|
-
|
|
526
|
-
When importing raw source files (PDFs, text), use `--ingest` to immediately process them with AI analysis:
|
|
527
|
-
|
|
528
|
-
```bash
|
|
529
|
-
# Copy files to sources/ and then run ingest on each
|
|
530
|
-
marvin import ./reference-docs --ingest
|
|
531
|
-
|
|
532
|
-
# Use a specific persona and create artifacts directly
|
|
533
|
-
marvin import ./reference-docs --ingest --as tl --no-draft
|
|
534
|
-
```
|
|
535
|
-
|
|
536
|
-
### Options reference
|
|
537
|
-
|
|
538
|
-
| Option | Description | Default |
|
|
539
|
-
|--------|-------------|---------|
|
|
540
|
-
| `--dry-run` | Preview the import plan without writing files | off |
|
|
541
|
-
| `--conflict <strategy>` | How to handle ID conflicts: `renumber`, `skip`, `overwrite` | `renumber` |
|
|
542
|
-
| `--tag <tag>` | Tag added to all imported documents | none |
|
|
543
|
-
| `--ingest` / `--no-ingest` | Trigger AI ingest after copying raw sources | off |
|
|
544
|
-
| `--as <persona>` | Persona for ingest (`po`, `dm`, `tl`) | `product-owner` |
|
|
545
|
-
| `--draft` / `--no-draft` | Draft mode for ingest (propose vs. create) | `--draft` |
|
|
546
|
-
|
|
547
|
-
## Sources & Ingest
|
|
548
|
-
|
|
549
|
-
Marvin supports a **source document intake** workflow. Drop reference documents (PDFs, Markdown, text files) into `.marvin/sources/` and use the `ingest` command to extract governance artifacts.
|
|
550
|
-
|
|
551
|
-
```bash
|
|
552
|
-
# Check what source files are available
|
|
553
|
-
marvin ingest
|
|
554
|
-
|
|
555
|
-
# Process a specific file (draft mode — proposes without creating)
|
|
556
|
-
marvin ingest Requirements.pdf
|
|
557
|
-
|
|
558
|
-
# Process and create artifacts directly
|
|
559
|
-
marvin ingest Requirements.pdf --no-draft
|
|
560
|
-
|
|
561
|
-
# Process all unprocessed files
|
|
562
|
-
marvin ingest --all
|
|
563
|
-
|
|
564
|
-
# Use a specific persona for analysis
|
|
565
|
-
marvin ingest --all --as tl
|
|
566
|
-
```
|
|
567
|
-
|
|
568
|
-
**Draft mode** (default): Claude analyzes the document and presents a structured proposal of decisions, actions, and questions — nothing is created. Review the proposal, then use `--no-draft` or `marvin chat` to refine and create.
|
|
569
|
-
|
|
570
|
-
**Direct mode** (`--no-draft`): Claude creates artifacts directly using MCP tools. Each artifact gets a `source` frontmatter field for traceability.
|
|
571
|
-
|
|
572
|
-
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.
|
|
573
|
-
|
|
574
|
-
## Session Persistence
|
|
575
|
-
|
|
576
|
-
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`).
|
|
577
|
-
|
|
578
|
-
```bash
|
|
579
|
-
# Start a new session — auto-saved on exit
|
|
580
|
-
marvin chat --as po
|
|
581
|
-
|
|
582
|
-
# → On exit: Session saved as "graphql-vs-rest-decision"
|
|
583
|
-
|
|
584
|
-
# List saved sessions
|
|
585
|
-
marvin sessions
|
|
586
|
-
|
|
587
|
-
# Resume via interactive picker
|
|
588
|
-
marvin chat --resume
|
|
589
|
-
|
|
590
|
-
# Resume a specific session by name
|
|
591
|
-
marvin chat --resume graphql-vs-rest-decision
|
|
592
|
-
|
|
593
|
-
# Delete a session
|
|
594
|
-
marvin sessions delete graphql-vs-rest-decision
|
|
595
|
-
```
|
|
596
|
-
|
|
597
|
-
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.
|
|
598
|
-
|
|
599
|
-
## Git Sync
|
|
600
|
-
|
|
601
|
-
Marvin's governance data lives in `.marvin/`, which can be its own **standalone git repository** — independent from your outer project's git. This lets teams share decisions, features, epics, and other artifacts across members.
|
|
602
|
-
|
|
603
|
-
```bash
|
|
604
|
-
# Initialize git tracking in .marvin/
|
|
605
|
-
marvin sync init
|
|
606
|
-
|
|
607
|
-
# Optionally set a remote
|
|
608
|
-
marvin sync init --remote git@github.com:team/governance.git
|
|
609
|
-
|
|
610
|
-
# Check what's changed
|
|
611
|
-
marvin sync status
|
|
612
|
-
|
|
613
|
-
# Sync everything (stage → commit → pull --rebase → push)
|
|
614
|
-
marvin sync
|
|
615
|
-
|
|
616
|
-
# On another machine, clone the governance data
|
|
617
|
-
marvin clone git@github.com:team/governance.git
|
|
618
|
-
```
|
|
619
|
-
|
|
620
|
-
Commit messages are auto-generated based on what changed (e.g. `Update 2 decisions, 1 action, 1 feature`). If a rebase encounters conflicts, Marvin reports the conflicted files and asks you to resolve them manually before re-running `marvin sync`.
|
|
621
|
-
|
|
622
|
-
> **Tip:** Add `.marvin/` to your outer project's `.gitignore` to avoid tracking it twice.
|
|
623
|
-
|
|
624
|
-
## MCP Server Mode
|
|
625
|
-
|
|
626
|
-
Marvin can run as a standalone **MCP server** so Claude Desktop and Claude Code can use governance tools directly — without going through `marvin chat`.
|
|
627
|
-
|
|
628
|
-
```bash
|
|
629
|
-
# Via the serve command (from within a Marvin project)
|
|
630
|
-
marvin serve
|
|
631
|
-
|
|
632
|
-
# Via the standalone binary (specify project dir)
|
|
633
|
-
marvin-serve --project-dir /path/to/project
|
|
634
|
-
```
|
|
635
|
-
|
|
636
|
-
**Claude Code** — add to `.mcp.json` in your project root:
|
|
637
|
-
|
|
638
|
-
```json
|
|
639
|
-
{
|
|
640
|
-
"mcpServers": {
|
|
641
|
-
"marvin": {
|
|
642
|
-
"command": "npx",
|
|
643
|
-
"args": ["marvin", "serve"]
|
|
644
|
-
}
|
|
645
|
-
}
|
|
646
|
-
}
|
|
647
|
-
```
|
|
648
|
-
|
|
649
|
-
**Claude Desktop** — add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
650
|
-
|
|
651
|
-
```json
|
|
652
|
-
{
|
|
653
|
-
"mcpServers": {
|
|
654
|
-
"marvin": {
|
|
655
|
-
"command": "npx",
|
|
656
|
-
"args": ["marvin-serve", "--project-dir", "/path/to/project"]
|
|
657
|
-
}
|
|
658
|
-
}
|
|
659
|
-
}
|
|
660
|
-
```
|
|
661
|
-
|
|
662
|
-
## Configuration
|
|
663
|
-
|
|
664
|
-
Marvin uses two configuration layers:
|
|
665
|
-
|
|
666
|
-
- **User config** (`~/.config/marvin/config.yaml`) — API key, default model, default persona
|
|
667
|
-
- **Project config** (`.marvin/config.yaml`) — Project name, methodology, persona overrides
|
|
668
|
-
|
|
669
|
-
The API key resolves in order: user config > `ANTHROPIC_API_KEY` environment variable.
|
|
670
|
-
|
|
671
|
-
**Example project config (SAP AEM):**
|
|
672
|
-
|
|
673
|
-
```yaml
|
|
674
|
-
name: my-btp-project
|
|
675
|
-
methodology: sap-aem
|
|
676
|
-
aem:
|
|
677
|
-
currentPhase: assess-use-case
|
|
678
|
-
personas:
|
|
679
|
-
product-owner:
|
|
680
|
-
enabled: true
|
|
681
|
-
delivery-manager:
|
|
682
|
-
enabled: true
|
|
683
|
-
tech-lead:
|
|
684
|
-
enabled: true
|
|
685
|
-
```
|
|
686
|
-
|
|
687
|
-
## Architecture
|
|
688
|
-
|
|
689
|
-
```
|
|
690
|
-
bin/marvin.ts → CLI entry point
|
|
691
|
-
bin/marvin-serve.ts → Standalone MCP server entry point
|
|
692
|
-
src/cli/program.ts → Commander command definitions
|
|
693
|
-
src/core/ → Project discovery, config, errors
|
|
694
|
-
src/storage/ → Extensible document store (Markdown + YAML frontmatter)
|
|
695
|
-
src/personas/ → Persona definitions, registry, prompt builder
|
|
696
|
-
src/agent/ → Claude Agent SDK integration, MCP tools
|
|
697
|
-
└── tools/ → Session, source, web dashboard, and document tools
|
|
698
|
-
src/mcp/ → Standalone MCP stdio server adapter
|
|
699
|
-
src/web/ → Web dashboard (server, router, templates)
|
|
700
|
-
src/plugins/ → Plugin system (methodology plugins)
|
|
701
|
-
├── types.ts → MarvinPlugin interface
|
|
702
|
-
├── common.ts → Shared registrations + tool factory
|
|
703
|
-
├── registry.ts → Plugin resolution
|
|
704
|
-
└── builtin/
|
|
705
|
-
├── generic-agile.ts → Default methodology
|
|
706
|
-
├── sap-aem.ts → SAP AEM methodology
|
|
707
|
-
└── tools/ → Tool implementations per artifact type
|
|
708
|
-
src/reports/ → Report generators (GAR, Health: collector, evaluator, renderers)
|
|
709
|
-
src/contributions/ → Contribution workflow (types, prompts, analysis)
|
|
710
|
-
src/import/ → Import engine (classifier, resolver, plan/execute)
|
|
711
|
-
src/skills/ → Skill system (composable capabilities)
|
|
712
|
-
├── types.ts → SkillDefinition interface
|
|
713
|
-
├── registry.ts → Skill loading, resolution, tool/prompt collection
|
|
714
|
-
└── builtin/
|
|
715
|
-
├── governance-review.ts → Governance review skill
|
|
716
|
-
├── jira/ → Jira integration skill (client, tools, definition)
|
|
717
|
-
└── prd-generator/ → PRD generation skill (tools, definition)
|
|
718
|
-
src/git/ → Git sync (simple-git wrapper for .marvin/)
|
|
719
|
-
```
|
|
720
|
-
|
|
721
|
-
Key design decisions:
|
|
722
|
-
|
|
723
|
-
- **One file per artifact** — Better for Git merges and human readability than a single register file
|
|
724
|
-
- **System prompt composition** — Personas are behavioral modes (different system prompts), not separate agents
|
|
725
|
-
- **MCP tools for data access** — The agent calls tools to read/write governance data, keeping AI reasoning separate from data operations
|
|
726
|
-
- **Extensible storage** — `DocumentStore` accepts plugin- and skill-registered types at construction time; `DocumentType` is `string`, not a fixed union
|
|
727
|
-
- **Layered capabilities** — Core governance is always available, common tools are shared across methodologies, methodology-specific tools layer on top, and skills (like Jira) compose with any methodology
|
|
93
|
+
- [Architecture Overview](docs/contributing/architecture.md) — codebase structure and design
|
|
94
|
+
- [Plugin Development](docs/contributing/plugins.md) — building methodology plugins
|
|
95
|
+
- [Skill Development](docs/contributing/skills.md) — creating skills with SKILL.md
|
|
96
|
+
- [Testing](docs/contributing/testing.md) — test conventions and patterns
|
|
728
97
|
|
|
729
98
|
## Development
|
|
730
99
|
|
|
731
100
|
```bash
|
|
732
101
|
npm run build # Build with tsup
|
|
733
102
|
npm run dev # Run via tsx (no build needed)
|
|
734
|
-
npm test # Run tests with
|
|
735
|
-
npm run
|
|
736
|
-
npm run
|
|
103
|
+
npm test # Run tests with Vitest
|
|
104
|
+
npm run typecheck # Type check
|
|
105
|
+
npm run lint # ESLint
|
|
106
|
+
npm run format # Prettier check
|
|
737
107
|
```
|
|
738
108
|
|
|
739
109
|
## Tech Stack
|
|
740
110
|
|
|
741
|
-
|
|
742
|
-
|-----------|--------|
|
|
743
|
-
| Language | TypeScript (ESM, Node 20+) |
|
|
744
|
-
| Agent SDK | `@anthropic-ai/claude-agent-sdk` |
|
|
745
|
-
| CLI | Commander.js v14 |
|
|
746
|
-
| Storage | Markdown + YAML frontmatter (`gray-matter`) |
|
|
747
|
-
| Config | YAML (`yaml` package) |
|
|
748
|
-
| Git sync | `simple-git` |
|
|
749
|
-
| Testing | Vitest |
|
|
750
|
-
| Build | tsup |
|
|
111
|
+
TypeScript (ESM, Node 20+), Claude Agent SDK, Commander.js, Markdown + YAML frontmatter storage, Vitest, tsup.
|
|
751
112
|
|
|
752
113
|
## License
|
|
753
114
|
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
- Use Marvin for personal and commercial projects
|
|
757
|
-
- Modify the source code to fit your needs
|
|
758
|
-
- Distribute copies of the software
|
|
759
|
-
- Contribute improvements back to the community
|
|
760
|
-
- The Commons Clause adds one important restriction: you cannot sell Marvin itself as a service or product, but you can use it in your own applications and services.
|
|
115
|
+
MIT License with Commons Clause. You can use, modify, and distribute Marvin freely — the Commons Clause restricts selling Marvin itself as a service or product.
|