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 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 meetings 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, 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
- ## Commands
411
+ ## Meeting Analysis
185
412
 
186
- | Command | Description |
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
- ## Personas
215
-
216
- | Short Name | Full Name | Focus |
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
- **Sprints** are time-boxed iterations with:
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
- ## Session Persistence
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
- # On exit: Session saved as "graphql-vs-rest-decision"
619
+ Marvin uses two configuration layers:
473
620
 
474
- # List saved sessions
475
- marvin sessions
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
- # Resume via interactive picker
478
- marvin chat --resume
624
+ The API key resolves in order: user config > `ANTHROPIC_API_KEY` environment variable.
479
625
 
480
- # Resume a specific session by name
481
- marvin chat --resume graphql-vs-rest-decision
626
+ **Example project config (SAP AEM):**
482
627
 
483
- # Delete a session
484
- marvin sessions delete graphql-vs-rest-decision
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 (meetings, reports, features, epics, sprints, sprint planning)
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 report: collector, evaluator, renderers)
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
package/dist/index.d.ts CHANGED
@@ -77,6 +77,7 @@ interface DocumentFrontmatter {
77
77
  owner?: string;
78
78
  priority?: string;
79
79
  tags?: string[];
80
+ dueDate?: string;
80
81
  source?: string;
81
82
  [key: string]: unknown;
82
83
  }