mrvn-cli 0.2.5 → 0.2.8
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 +103 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.js +969 -92
- package/dist/index.js.map +1 -1
- package/dist/marvin-serve.js +836 -65
- package/dist/marvin-serve.js.map +1 -1
- package/dist/marvin.js +994 -117
- package/dist/marvin.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -48,6 +48,7 @@ When you start a chat session, Marvin:
|
|
|
48
48
|
├── questions/ # Q-001.md, Q-002.md, ...
|
|
49
49
|
├── meetings/ # 2026-02-08-kickoff.md, ...
|
|
50
50
|
├── reports/ # R-001.md, R-002.md, ...
|
|
51
|
+
├── jira-issues/ # JI-001.md, JI-002.md, ... (Jira skill)
|
|
51
52
|
├── use-cases/ # UC-001.md, UC-002.md, ... (SAP AEM)
|
|
52
53
|
├── tech-assessments/ # TA-001.md, TA-002.md, ... (SAP AEM)
|
|
53
54
|
└── extension-designs/ # XD-001.md, XD-002.md, ... (SAP AEM)
|
|
@@ -107,6 +108,79 @@ Use Case (PO) Tech Assessment (TL) Extension Design (TL)
|
|
|
107
108
|
|
|
108
109
|
**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.
|
|
109
110
|
|
|
111
|
+
## Skills
|
|
112
|
+
|
|
113
|
+
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.
|
|
114
|
+
|
|
115
|
+
### Managing skills
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
marvin skills # List available skills and assignments
|
|
119
|
+
marvin skills install jira --as all # Enable for all personas
|
|
120
|
+
marvin skills install jira --as po # Enable for one persona
|
|
121
|
+
marvin skills remove jira --as all # Disable for all personas
|
|
122
|
+
marvin skills remove jira --as po # Disable for one persona
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Jira Integration
|
|
126
|
+
|
|
127
|
+
Bidirectional sync between Marvin artifacts and Jira issues. Imported issues are stored locally as `JI-xxx` documents in `.marvin/docs/jira-issues/`.
|
|
128
|
+
|
|
129
|
+
**Enabling the skill** — Jira is opt-in. Add it to the `skills` section of `.marvin/config.yaml` for the personas that need it:
|
|
130
|
+
|
|
131
|
+
```yaml
|
|
132
|
+
skills:
|
|
133
|
+
product-owner: [jira]
|
|
134
|
+
tech-lead: [jira]
|
|
135
|
+
delivery-manager: [jira]
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Authentication** — set three environment variables (no secrets in config files):
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
export JIRA_HOST=yourcompany.atlassian.net
|
|
142
|
+
export JIRA_EMAIL=you@company.com
|
|
143
|
+
export JIRA_API_TOKEN=your-api-token # Generate at https://id.atlassian.com/manage-profile/security/api-tokens
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**Tools available to all personas:**
|
|
147
|
+
|
|
148
|
+
| Tool | Direction | Description |
|
|
149
|
+
|------|-----------|-------------|
|
|
150
|
+
| `list_jira_issues` | local read | List locally synced JI-xxx documents, filter by status or Jira key |
|
|
151
|
+
| `get_jira_issue` | local read | Get a JI-xxx by local ID or Jira key |
|
|
152
|
+
| `pull_jira_issue` | Jira → local | Fetch one issue by key, create/update local JI-xxx |
|
|
153
|
+
| `pull_jira_issues_jql` | Jira → local | Bulk fetch via JQL query, create/update local JI-xxx |
|
|
154
|
+
| `push_artifact_to_jira` | local → Jira | Create a Jira issue from any Marvin artifact (D/A/Q/F/E) |
|
|
155
|
+
| `sync_jira_issue` | bidirectional | Push local changes to Jira, pull latest status/assignee/labels back |
|
|
156
|
+
| `link_artifact_to_jira` | local only | Link a Marvin artifact to an existing JI-xxx |
|
|
157
|
+
|
|
158
|
+
**How each persona uses it:**
|
|
159
|
+
|
|
160
|
+
- **Product Owner** — Pull stakeholder-reported issues for triage, push approved features as Stories, link decisions to Jira issues for audit trail
|
|
161
|
+
- **Tech Lead** — Pull technical issues for sprint planning, push epics for cross-team visibility, bidirectional sync to keep governance aligned
|
|
162
|
+
- **Delivery Manager** — Pull sprint issues for progress tracking, push actions for stakeholder visibility, use JQL queries for reporting
|
|
163
|
+
|
|
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
|
+
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
|
+
|
|
110
184
|
## Commands
|
|
111
185
|
|
|
112
186
|
| Command | Description |
|
|
@@ -129,6 +203,12 @@ Use Case (PO) Tech Assessment (TL) Extension Design (TL)
|
|
|
129
203
|
| `marvin chat --resume <name>` | Resume a specific session by name |
|
|
130
204
|
| `marvin sessions` | List all saved chat sessions |
|
|
131
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 |
|
|
132
212
|
| `marvin serve` | Start standalone MCP server for Claude Desktop/Code |
|
|
133
213
|
|
|
134
214
|
## Personas
|
|
@@ -172,6 +252,19 @@ Feature (PO) Epic (TL) Sprint (DM)
|
|
|
172
252
|
|
|
173
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 %.
|
|
174
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
|
+
|
|
175
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.
|
|
176
269
|
|
|
177
270
|
## Configuration
|
|
@@ -406,14 +499,20 @@ src/agent/ → Claude Agent SDK integration, MCP tools
|
|
|
406
499
|
src/mcp/ → Standalone MCP stdio server adapter
|
|
407
500
|
src/plugins/ → Plugin system (methodology plugins)
|
|
408
501
|
├── types.ts → MarvinPlugin interface
|
|
409
|
-
├── common.ts → Shared registrations + tool factory (meetings, reports, features, epics, sprints)
|
|
502
|
+
├── common.ts → Shared registrations + tool factory (meetings, reports, features, epics, sprints, sprint planning)
|
|
410
503
|
├── registry.ts → Plugin resolution
|
|
411
504
|
└── builtin/
|
|
412
505
|
├── generic-agile.ts → Default methodology
|
|
413
506
|
├── sap-aem.ts → SAP AEM methodology
|
|
414
507
|
└── tools/ → Tool implementations per artifact type
|
|
508
|
+
src/reports/ → Report generators (GAR report: collector, evaluator, renderers)
|
|
415
509
|
src/import/ → Import engine (classifier, resolver, plan/execute)
|
|
416
|
-
src/skills/ →
|
|
510
|
+
src/skills/ → Skill system (composable capabilities)
|
|
511
|
+
├── types.ts → SkillDefinition interface
|
|
512
|
+
├── registry.ts → Skill loading, resolution, tool/prompt collection
|
|
513
|
+
└── builtin/
|
|
514
|
+
├── governance-review.ts → Governance review skill
|
|
515
|
+
└── jira/ → Jira integration skill (client, tools, definition)
|
|
417
516
|
src/git/ → Git sync (simple-git wrapper for .marvin/)
|
|
418
517
|
```
|
|
419
518
|
|
|
@@ -422,8 +521,8 @@ Key design decisions:
|
|
|
422
521
|
- **One file per artifact** — Better for Git merges and human readability than a single register file
|
|
423
522
|
- **System prompt composition** — Personas are behavioral modes (different system prompts), not separate agents
|
|
424
523
|
- **MCP tools for data access** — The agent calls tools to read/write governance data, keeping AI reasoning separate from data operations
|
|
425
|
-
- **Extensible storage** — `DocumentStore` accepts plugin-registered types at construction time; `DocumentType` is `string`, not a fixed union
|
|
426
|
-
- **Layered capabilities** — Core governance is always available, common tools are shared across methodologies, methodology-specific tools layer on top
|
|
524
|
+
- **Extensible storage** — `DocumentStore` accepts plugin- and skill-registered types at construction time; `DocumentType` is `string`, not a fixed union
|
|
525
|
+
- **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
|
|
427
526
|
|
|
428
527
|
## Development
|
|
429
528
|
|
package/dist/index.d.ts
CHANGED
|
@@ -247,6 +247,7 @@ interface SkillDefinition {
|
|
|
247
247
|
format: SkillFormat;
|
|
248
248
|
dirPath?: string;
|
|
249
249
|
personas?: string[];
|
|
250
|
+
documentTypeRegistrations?: DocumentTypeRegistration[];
|
|
250
251
|
tools?: (store: DocumentStore) => SdkMcpToolDefinition<any>[];
|
|
251
252
|
promptFragments?: Record<string, string>;
|
|
252
253
|
actions?: SkillAction[];
|