mrvn-cli 0.2.6 → 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 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
@@ -425,8 +505,14 @@ src/plugins/ → Plugin system (methodology plugins)
425
505
  ├── generic-agile.ts → Default methodology
426
506
  ├── sap-aem.ts → SAP AEM methodology
427
507
  └── tools/ → Tool implementations per artifact type
508
+ src/reports/ → Report generators (GAR report: collector, evaluator, renderers)
428
509
  src/import/ → Import engine (classifier, resolver, plan/execute)
429
- src/skills/ → Custom skill definitions
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)
430
516
  src/git/ → Git sync (simple-git wrapper for .marvin/)
431
517
  ```
432
518
 
@@ -435,8 +521,8 @@ Key design decisions:
435
521
  - **One file per artifact** — Better for Git merges and human readability than a single register file
436
522
  - **System prompt composition** — Personas are behavioral modes (different system prompts), not separate agents
437
523
  - **MCP tools for data access** — The agent calls tools to read/write governance data, keeping AI reasoning separate from data operations
438
- - **Extensible storage** — `DocumentStore` accepts plugin-registered types at construction time; `DocumentType` is `string`, not a fixed union
439
- - **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
440
526
 
441
527
  ## Development
442
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[];