mrvn-cli 0.5.28 → 0.6.0

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
@@ -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 dependencies
9
- npm install
8
+ # Install globally
9
+ npm install -g mrvn-cli
10
10
 
11
- # Initialize a project
12
- npx tsx bin/marvin.ts init
11
+ # Set your Anthropic API key
12
+ export ANTHROPIC_API_KEY=sk-ant-...
13
13
 
14
- # Check project status
15
- npx tsx bin/marvin.ts status
14
+ # Initialize a project
15
+ marvin init
16
16
 
17
17
  # Start a chat session
18
- npx tsx bin/marvin.ts chat --as po # Product Owner
19
- npx tsx bin/marvin.ts chat --as dm # Delivery Manager
20
- npx tsx bin/marvin.ts chat --as tl # Technical Lead
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 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.
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
- 1. Loads a persona-specific system prompt (Product Owner focuses on value and stakeholders; Delivery Manager on risks and status; Tech Lead on architecture and quality)
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 # Project configuration
36
- ├── sessions.yaml # Saved chat sessions
37
- ├── templates/ # Document templates
38
- ├── skills/ # Custom skills (SKILL.md format)
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/ # F-001.md, F-002.md, ...
45
- ├── epics/ # E-001.md, E-002.md, ...
46
- ├── tasks/ # T-001.md, T-002.md, ...
47
- ├── sprints/ # SP-001.md, SP-002.md, ...
48
- ├── decisions/ # D-001.md, D-002.md, ...
49
- ├── actions/ # A-001.md, A-002.md, ...
50
- ├── questions/ # Q-001.md, Q-002.md, ...
51
- ├── meetings/ # 2026-02-08-kickoff.md, ...
52
- ├── reports/ # R-001.md, R-002.md, ...
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 Name | Full Name | Focus |
102
- |------------|-----------|-------|
103
- | `po` | Product Owner | Product vision, feature definition and prioritization, stakeholder needs, acceptance criteria |
104
- | `dm` | Delivery Manager | Project delivery, sprint planning and tracking, epic scheduling, risk management, governance, meeting facilitation |
105
- | `tl` | Technical Lead | Architecture, epic creation and scoping, task creation and breakdown, sprint scoping and technical execution, code quality, technical decisions, implementation guidance |
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
- ### Process
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
- Measures governance workflow health using timestamps:
57
+ ## Key Features
274
58
 
275
- | Metric | What it measures | Green | Amber | Red |
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
- The overall status uses the worst rating across all completeness and process categories.
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
- ```bash
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
- Marvin supports pluggable methodologies. Choose one during `marvin init`:
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
- ### Generic Agile (default)
67
+ **Web dashboard** `marvin web` launches a local dashboard with persona-specific views, sprint boards, GAR reports, and artifact detail pages.
296
68
 
297
- Standard agile governance with features, epics, tasks, sprints, decisions, actions, questions, meetings, and reports.
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
- ### SAP Application Extension Methodology (SAP AEM)
71
+ **Git sync** Version and share governance data independently from your codebase with `marvin sync`.
300
72
 
301
- A 3-phase methodology for building extensions on SAP BTP:
73
+ **Reports** GAR (Green/Amber/Red) status reports, health checks, and AI-powered sprint summaries.
302
74
 
303
- | Phase | Name | Focus | Artifacts |
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
- **How it layers with core capabilities:**
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
- **Persona roles in AEM:**
79
+ **For users:**
320
80
 
321
- | Persona | AEM Role | Owns | Phase Focus |
322
- |---------|----------|------|-------------|
323
- | Product Owner | Business Process Owner | Use Cases (UC-xxx) | Phase 1: define business need, classify extension type |
324
- | Tech Lead | Solution Architect | Tech Assessments (TA-xxx), Extension Designs (XD-xxx) | Phase 2-3: evaluate BTP services, design solution |
325
- | Delivery Manager | Project Manager | Phase gates, reports | All phases: track progression, gate readiness |
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
- **Artifact chain with hard validation:**
91
+ **For contributors:**
328
92
 
329
- ```
330
- Use Case (PO) Tech Assessment (TL) Extension Design (TL)
331
- ┌──────────┐ ┌──────────────────┐ ┌──────────────────────┐
332
- │ UC-001 │───▶│ TA-001 │───▶│ XD-001 │
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 vitest
735
- npm run test:watch # Watch mode
736
- npm run typecheck # TypeScript check without emitting
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
- | Component | Choice |
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
- Marvin CLI is open-source and released under the MIT License with Commons Clause. This means you can:
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.