claude-mpm 4.16.2__py3-none-any.whl → 4.17.0__py3-none-any.whl

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.

Potentially problematic release.


This version of claude-mpm might be problematic. Click here for more details.

claude_mpm/VERSION CHANGED
@@ -1 +1 @@
1
- 4.16.2
1
+ 4.17.0
@@ -90,6 +90,9 @@ Available Commands:
90
90
  /mpm-monitor [start|stop|restart|status|port]
91
91
  Manage Socket.IO monitoring server and dashboard
92
92
 
93
+ /mpm-version
94
+ Display comprehensive version information including project version, all agents with versions, and all skills with versions
95
+
93
96
  Use '/mpm-help <command>' for detailed help on a specific command.
94
97
  ```
95
98
 
@@ -0,0 +1,113 @@
1
+ # Display Claude MPM Version Information
2
+
3
+ Show comprehensive version information for Claude MPM project, agents, and skills.
4
+
5
+ ## Usage
6
+
7
+ ```
8
+ /mpm-version
9
+ ```
10
+
11
+ ## Description
12
+
13
+ Display version information including:
14
+ - Project version and build number
15
+ - All deployed agents with their versions (grouped by tier: system/user/project)
16
+ - All available skills with their versions (grouped by source: bundled/user/project)
17
+ - Summary statistics
18
+
19
+ ## Implementation
20
+
21
+ When you run `/mpm-version`, the PM will:
22
+
23
+ 1. **Collect Version Information**
24
+ - Use VersionService to gather all version data
25
+ - Project version from pyproject.toml
26
+ - Build number from BUILD_NUMBER file
27
+ - Agent versions from AgentRegistry
28
+ - Skills versions from SkillRegistry
29
+
30
+ 2. **Format Output**
31
+ - Hierarchical display: Project → Agents → Skills
32
+ - Grouped by tier/source for clarity
33
+ - Sorted alphabetically within groups
34
+ - Summary statistics at the end
35
+
36
+ 3. **Display Results**
37
+ - Well-formatted tree structure
38
+ - Easy to scan and read
39
+ - Includes totals and counts
40
+
41
+ ## Example Output
42
+
43
+ ```
44
+ Claude MPM Version Information
45
+ ==============================
46
+
47
+ Project Version: 4.16.3
48
+ Build: 481
49
+
50
+ Agents (35 total)
51
+ -----------------
52
+
53
+ System Agents (30):
54
+ ├─ agent-manager (1.0.0)
55
+ ├─ engineer (3.9.1)
56
+ ├─ research-agent (4.5.1)
57
+ ├─ documentation (2.1.0)
58
+ ├─ qa (2.0.3)
59
+ └─ ... (25 more)
60
+
61
+ User Agents (3):
62
+ ├─ custom-agent (1.0.0)
63
+ ├─ testing-agent (0.5.0)
64
+ └─ prototype-agent (0.1.0)
65
+
66
+ Project Agents (2):
67
+ ├─ project-specific (2.0.0)
68
+ └─ domain-expert (1.1.0)
69
+
70
+ Skills (20 total)
71
+ -----------------
72
+
73
+ Bundled Skills (20):
74
+ ├─ test-driven-development (0.1.0)
75
+ ├─ systematic-debugging (0.1.0)
76
+ ├─ async-testing (0.1.0)
77
+ ├─ performance-profiling (0.1.0)
78
+ ├─ security-scanning (0.1.0)
79
+ └─ ... (15 more)
80
+
81
+ User Skills (0):
82
+ (none)
83
+
84
+ Project Skills (0):
85
+ (none)
86
+
87
+ Summary
88
+ -------
89
+ • Project: v4.16.3 (build 481)
90
+ • Agents: 35 total (30 system, 3 user, 2 project)
91
+ • Skills: 20 total (20 bundled, 0 user, 0 project)
92
+ ```
93
+
94
+ ## PM Implementation Instructions
95
+
96
+ To execute this command, PM should:
97
+
98
+ 1. Import and use VersionService:
99
+ ```python
100
+ from claude_mpm.services.version_service import VersionService
101
+
102
+ service = VersionService()
103
+ summary = service.get_version_summary()
104
+ ```
105
+
106
+ 2. Format output following the example structure above
107
+ 3. Handle missing data gracefully (show "unknown" for missing versions)
108
+ 4. Include all tiers/sources even if counts are zero
109
+
110
+ ## Related Commands
111
+
112
+ - `/mpm-help` - Show all available MPM commands
113
+ - `/mpm-status` - Show system status information
@@ -8,6 +8,7 @@ Available MPM commands:
8
8
  - /mpm-help - Show command help
9
9
  - /mpm-status - Show MPM status
10
10
  - /mpm-config - Manage configuration
11
+ - /mpm-version - Display version information for project, agents, and skills
11
12
 
12
13
  Claude MPM extends Claude Code with:
13
14
  - Multi-agent orchestration
@@ -9,7 +9,7 @@ Extracted from ClaudeRunner to follow Single Responsibility Principle.
9
9
  """
10
10
 
11
11
  from pathlib import Path
12
- from typing import Any, Dict, Optional
12
+ from typing import Any, Dict, List, Optional
13
13
 
14
14
  from claude_mpm.config.paths import paths
15
15
  from claude_mpm.core.base_service import BaseService
@@ -274,3 +274,106 @@ class VersionService(BaseService, VersionServiceInterface):
274
274
  "message": "Update checking not implemented",
275
275
  "checked_at": None,
276
276
  }
277
+
278
+ def get_agents_versions(self) -> Dict[str, List[Dict[str, str]]]:
279
+ """Get all agents grouped by tier with versions.
280
+
281
+ Returns:
282
+ Dict with keys: system, user, project
283
+ Each value is list of agent dicts with: name, version, id
284
+ """
285
+ from claude_mpm.core.unified_agent_registry import get_agent_registry
286
+
287
+ agents_by_tier = {"system": [], "user": [], "project": []}
288
+
289
+ try:
290
+ registry = get_agent_registry()
291
+ all_agents = registry.list_agents()
292
+
293
+ for agent in all_agents:
294
+ agent_info = {
295
+ "name": agent.name,
296
+ "version": agent.version,
297
+ "id": agent.name, # Use name as ID since agent_id doesn't exist
298
+ }
299
+ tier = (
300
+ agent.tier.value
301
+ if hasattr(agent.tier, "value")
302
+ else str(agent.tier)
303
+ )
304
+ if tier in agents_by_tier:
305
+ agents_by_tier[tier].append(agent_info)
306
+ else:
307
+ agents_by_tier["system"].append(agent_info)
308
+
309
+ # Sort each tier alphabetically by name
310
+ for tier, agents in agents_by_tier.items():
311
+ agents.sort(key=lambda x: x["name"])
312
+
313
+ except Exception as e:
314
+ self.logger.error(f"Failed to get agent versions: {e}")
315
+
316
+ return agents_by_tier
317
+
318
+ def get_skills_versions(self) -> Dict[str, List[Dict[str, str]]]:
319
+ """Get all skills grouped by source with versions.
320
+
321
+ Returns:
322
+ Dict with keys: bundled, user, project
323
+ Each value is list of skill dicts with: name, version, description
324
+ """
325
+ from claude_mpm.skills.registry import get_registry
326
+
327
+ skills_by_source = {"bundled": [], "user": [], "project": []}
328
+
329
+ try:
330
+ registry = get_registry()
331
+
332
+ for skill in registry.list_skills():
333
+ skill_info = {
334
+ "name": skill.name,
335
+ "version": skill.version,
336
+ "description": (
337
+ skill.description[:60] + "..."
338
+ if len(skill.description) > 60
339
+ else skill.description
340
+ ),
341
+ }
342
+ source = skill.source if skill.source in skills_by_source else "bundled"
343
+ skills_by_source[source].append(skill_info)
344
+
345
+ # Sort each source alphabetically by name
346
+ for source, skills in skills_by_source.items():
347
+ skills.sort(key=lambda x: x["name"])
348
+
349
+ except Exception as e:
350
+ self.logger.error(f"Failed to get skill versions: {e}")
351
+
352
+ return skills_by_source
353
+
354
+ def get_version_summary(self) -> Dict:
355
+ """Get complete version summary.
356
+
357
+ Returns:
358
+ Dict with project_version, build, agents, skills, and counts
359
+ """
360
+ agents = self.get_agents_versions()
361
+ skills = self.get_skills_versions()
362
+ build = self.get_build_number()
363
+
364
+ return {
365
+ "project_version": self.get_base_version(),
366
+ "build": build,
367
+ "agents": agents,
368
+ "skills": skills,
369
+ "counts": {
370
+ "agents_total": sum(len(v) for v in agents.values()),
371
+ "agents_system": len(agents.get("system", [])),
372
+ "agents_user": len(agents.get("user", [])),
373
+ "agents_project": len(agents.get("project", [])),
374
+ "skills_total": sum(len(v) for v in skills.values()),
375
+ "skills_bundled": len(skills.get("bundled", [])),
376
+ "skills_user": len(skills.get("user", [])),
377
+ "skills_project": len(skills.get("project", [])),
378
+ },
379
+ }
@@ -1,8 +1,11 @@
1
1
  """Skills registry - manages bundled and discovered skills."""
2
2
 
3
+ import re
3
4
  from dataclasses import dataclass
4
5
  from pathlib import Path
5
- from typing import Dict, List, Optional
6
+ from typing import Any, Dict, List, Optional
7
+
8
+ import yaml
6
9
 
7
10
  from claude_mpm.core.logging_utils import get_logger
8
11
 
@@ -17,13 +20,27 @@ class Skill:
17
20
  path: Path
18
21
  content: str
19
22
  source: str # 'bundled', 'user', or 'project'
23
+
24
+ # Version tracking fields
25
+ version: str = "0.1.0"
26
+ skill_id: str = "" # defaults to name if not provided
27
+
28
+ # Existing fields
20
29
  description: str = ""
21
30
  agent_types: List[str] = None # Which agent types can use this skill
22
31
 
32
+ # Optional metadata
33
+ updated_at: Optional[str] = None
34
+ tags: List[str] = None
35
+
23
36
  def __post_init__(self):
24
- """Initialize agent_types list if not provided."""
37
+ """Initialize default values if not provided."""
25
38
  if self.agent_types is None:
26
39
  self.agent_types = []
40
+ if self.tags is None:
41
+ self.tags = []
42
+ if not self.skill_id:
43
+ self.skill_id = self.name
27
44
 
28
45
 
29
46
  class SkillsRegistry:
@@ -36,6 +53,28 @@ class SkillsRegistry:
36
53
  self._load_user_skills()
37
54
  self._load_project_skills()
38
55
 
56
+ def _parse_skill_frontmatter(self, content: str) -> Dict[str, Any]:
57
+ """Parse YAML frontmatter from skill markdown file.
58
+
59
+ Returns:
60
+ Dict with frontmatter fields or empty dict if no frontmatter
61
+ """
62
+ # Check for YAML frontmatter
63
+ if not content.startswith("---"):
64
+ return {}
65
+
66
+ # Extract frontmatter (match: ---\n...yaml...\n---\nrest)
67
+ match = re.match(r"^---\n(.*?)\n---\n(.*)$", content, re.DOTALL)
68
+ if not match:
69
+ return {}
70
+
71
+ try:
72
+ frontmatter = yaml.safe_load(match.group(1))
73
+ return frontmatter or {}
74
+ except yaml.YAMLError as e:
75
+ logger.warning(f"Failed to parse skill frontmatter: {e}")
76
+ return {}
77
+
39
78
  def _load_bundled_skills(self):
40
79
  """Load skills bundled with MPM."""
41
80
  bundled_dir = Path(__file__).parent / "bundled"
@@ -49,21 +88,36 @@ class SkillsRegistry:
49
88
  skill_name = skill_file.stem
50
89
  content = skill_file.read_text(encoding="utf-8")
51
90
 
52
- # Extract description from first paragraph if available
53
- description = self._extract_description(content)
91
+ # Parse frontmatter
92
+ frontmatter = self._parse_skill_frontmatter(content)
93
+
94
+ # Extract version fields from frontmatter
95
+ version = frontmatter.get("skill_version", "0.1.0")
96
+ skill_id = frontmatter.get("skill_id", skill_name)
97
+ updated_at = frontmatter.get("updated_at")
98
+ tags = frontmatter.get("tags", [])
99
+
100
+ # Extract description (from frontmatter or fallback to content parsing)
101
+ description = frontmatter.get("description", "")
102
+ if not description:
103
+ description = self._extract_description(content)
54
104
 
55
105
  self.skills[skill_name] = Skill(
56
106
  name=skill_name,
57
107
  path=skill_file,
58
108
  content=content,
59
109
  source="bundled",
110
+ version=version,
111
+ skill_id=skill_id,
60
112
  description=description,
113
+ updated_at=updated_at,
114
+ tags=tags,
61
115
  )
62
116
  skill_count += 1
63
117
  except Exception as e:
64
118
  logger.error(f"Error loading bundled skill {skill_file}: {e}")
65
119
 
66
- logger.info(f"Loaded {skill_count} bundled skills")
120
+ logger.debug(f"Loaded {skill_count} bundled skills")
67
121
 
68
122
  def _load_user_skills(self):
69
123
  """Load user-installed skills from ~/.claude/skills/"""
@@ -78,14 +132,31 @@ class SkillsRegistry:
78
132
  skill_name = skill_file.stem
79
133
  # User skills override bundled skills
80
134
  content = skill_file.read_text(encoding="utf-8")
81
- description = self._extract_description(content)
135
+
136
+ # Parse frontmatter
137
+ frontmatter = self._parse_skill_frontmatter(content)
138
+
139
+ # Extract version fields from frontmatter
140
+ version = frontmatter.get("skill_version", "0.1.0")
141
+ skill_id = frontmatter.get("skill_id", skill_name)
142
+ updated_at = frontmatter.get("updated_at")
143
+ tags = frontmatter.get("tags", [])
144
+
145
+ # Extract description (from frontmatter or fallback to content parsing)
146
+ description = frontmatter.get("description", "")
147
+ if not description:
148
+ description = self._extract_description(content)
82
149
 
83
150
  self.skills[skill_name] = Skill(
84
151
  name=skill_name,
85
152
  path=skill_file,
86
153
  content=content,
87
154
  source="user",
155
+ version=version,
156
+ skill_id=skill_id,
88
157
  description=description,
158
+ updated_at=updated_at,
159
+ tags=tags,
89
160
  )
90
161
  skill_count += 1
91
162
  logger.debug(f"User skill '{skill_name}' overrides bundled version")
@@ -93,7 +164,7 @@ class SkillsRegistry:
93
164
  logger.error(f"Error loading user skill {skill_file}: {e}")
94
165
 
95
166
  if skill_count > 0:
96
- logger.info(f"Loaded {skill_count} user skills")
167
+ logger.debug(f"Loaded {skill_count} user skills")
97
168
 
98
169
  def _load_project_skills(self):
99
170
  """Load project-specific skills from .claude/skills/"""
@@ -108,14 +179,31 @@ class SkillsRegistry:
108
179
  skill_name = skill_file.stem
109
180
  # Project skills override both user and bundled skills
110
181
  content = skill_file.read_text(encoding="utf-8")
111
- description = self._extract_description(content)
182
+
183
+ # Parse frontmatter
184
+ frontmatter = self._parse_skill_frontmatter(content)
185
+
186
+ # Extract version fields from frontmatter
187
+ version = frontmatter.get("skill_version", "0.1.0")
188
+ skill_id = frontmatter.get("skill_id", skill_name)
189
+ updated_at = frontmatter.get("updated_at")
190
+ tags = frontmatter.get("tags", [])
191
+
192
+ # Extract description (from frontmatter or fallback to content parsing)
193
+ description = frontmatter.get("description", "")
194
+ if not description:
195
+ description = self._extract_description(content)
112
196
 
113
197
  self.skills[skill_name] = Skill(
114
198
  name=skill_name,
115
199
  path=skill_file,
116
200
  content=content,
117
201
  source="project",
202
+ version=version,
203
+ skill_id=skill_id,
118
204
  description=description,
205
+ updated_at=updated_at,
206
+ tags=tags,
119
207
  )
120
208
  skill_count += 1
121
209
  logger.debug(f"Project skill '{skill_name}' overrides other versions")
@@ -123,7 +211,7 @@ class SkillsRegistry:
123
211
  logger.error(f"Error loading project skill {skill_file}: {e}")
124
212
 
125
213
  if skill_count > 0:
126
- logger.info(f"Loaded {skill_count} project skills")
214
+ logger.debug(f"Loaded {skill_count} project skills")
127
215
 
128
216
  def _extract_description(self, content: str) -> str:
129
217
  """Extract description from skill content (first paragraph or summary)."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 4.16.2
3
+ Version: 4.17.0
4
4
  Summary: Claude Multi-Agent Project Manager - Orchestrate Claude with agent delegation and ticket tracking
5
5
  Author-email: Bob Matsuoka <bob@matsuoka.com>
6
6
  Maintainer: Claude MPM Team
@@ -157,7 +157,7 @@ A powerful orchestration framework for **Claude Code (CLI)** that enables multi-
157
157
  ## Features
158
158
 
159
159
  - 🤖 **Multi-Agent System**: 15 specialized agents for comprehensive project management
160
- - 🎯 **Skills System**: 19 bundled skills with auto-linking, three-tier organization (bundled/user/project), and interactive configuration
160
+ - 🎯 **Skills System**: 20 bundled skills with auto-linking, three-tier organization (bundled/user/project), and interactive configuration
161
161
  - 🧠 **Persistent Knowledge System**: Project-specific kuzu-memory integration for intelligent context retention
162
162
  - 🔄 **Session Management**: Resume previous sessions with `--resume`
163
163
  - 📊 **Real-Time Monitoring**: Live dashboard with `--monitor` flag
@@ -310,18 +310,24 @@ Agents learn project-specific patterns using a simple list format and can update
310
310
 
311
311
  Claude MPM includes a powerful skills system that eliminates redundant agent guidance through reusable skill modules:
312
312
 
313
- **19 Bundled Skills** covering essential development workflows:
313
+ **20 Bundled Skills** covering essential development workflows (all versioned starting at 0.1.0):
314
314
  - Git workflow, TDD, code review, systematic debugging
315
315
  - API documentation, refactoring patterns, performance profiling
316
316
  - Docker containerization, database migrations, security scanning
317
317
  - JSON/PDF/XLSX handling, async testing, ImageMagick operations
318
318
  - Local development servers: Next.js, FastAPI, Vite, Express
319
+ - Web performance: Lighthouse metrics, Core Web Vitals optimization
319
320
 
320
321
  **Three-Tier Organization:**
321
322
  - **Bundled**: Core skills included with Claude MPM (~15,000 lines of reusable guidance)
322
323
  - **User**: Custom skills in `~/.config/claude-mpm/skills/`
323
324
  - **Project**: Project-specific skills in `.claude-mpm/skills/`
324
325
 
326
+ **Version Tracking:**
327
+ - All skills support semantic versioning (MAJOR.MINOR.PATCH)
328
+ - Check versions with `/mpm-version` command in Claude Code
329
+ - See [Skills Versioning Guide](docs/user/skills-versioning.md) for details
330
+
325
331
  **Quick Access:**
326
332
  ```bash
327
333
  # Interactive skills management
@@ -395,13 +401,17 @@ See [docs/MEMORY.md](docs/MEMORY.md) and [docs/developer/11-dashboard/README.md]
395
401
  - **Single Entry Point**: [docs/README.md](docs/README.md) is your navigation hub
396
402
  - **Clear User Paths**: Organized by user type and experience level
397
403
  - **Cross-Referenced**: Links between related topics and sections
398
- - **Up-to-Date**: Version 4.16.1 with local development skills and enhanced documentation
404
+ - **Up-to-Date**: Version 4.16.3 with web performance optimization skill
405
+
406
+ ## Recent Updates (v4.16.3)
407
+
408
+ **Web Performance Optimization**: New `web-performance-optimization` skill for Lighthouse metrics, Core Web Vitals (LCP, INP, CLS), and framework-specific optimization patterns.
399
409
 
400
- ## Recent Updates (v4.16.1)
410
+ ## Previous Updates (v4.16.1)
401
411
 
402
412
  **Local Development Skills**: Added 4 new toolchain-specific skills: `nextjs-local-dev`, `fastapi-local-dev`, `vite-local-dev`, and `express-local-dev` for professional local server management with PM2, HMR, and production-grade patterns.
403
413
 
404
- **Skills System Integration**: 19 bundled skills with auto-linking, three-tier organization, and interactive configuration. Eliminates 85% of redundant guidance across agent templates (~15,000 lines of reusable content).
414
+ **Skills System Integration**: 20 bundled skills with auto-linking, three-tier organization, and interactive configuration. Eliminates 85% of redundant guidance across agent templates (~15,000 lines of reusable content).
405
415
 
406
416
  **Enhanced Documentation**: Complete documentation suite with PDF guides, reorganized structure, and comprehensive design documents for skills integration.
407
417
 
@@ -1,5 +1,5 @@
1
1
  claude_mpm/BUILD_NUMBER,sha256=9JfxhnDtr-8l3kCP2U5TVXSErptHoga8m7XA8zqgGOc,4
2
- claude_mpm/VERSION,sha256=xpjh-uYmEqclTSPhMUXZy0aH_Kx8h4Zfj-DztSUaYE8,7
2
+ claude_mpm/VERSION,sha256=gcqSJiDcvkT2MvHps7QUQIB-YbkjM5C4D4UbMZrAlLI,7
3
3
  claude_mpm/__init__.py,sha256=UCw6j9e_tZQ3kJtTqmdfNv7MHyw9nD1jkj80WurwM2g,2064
4
4
  claude_mpm/__main__.py,sha256=Ro5UBWBoQaSAIoSqWAr7zkbLyvi4sSy28WShqAhKJG0,723
5
5
  claude_mpm/constants.py,sha256=sLjJF6Kw7H4V9WWeaEYltM-77TgXqzEMX5vx4ukM5-0,5977
@@ -172,13 +172,14 @@ claude_mpm/commands/mpm-agents.md,sha256=Mq1BOVP6ejRLYZCHE-K1fZ2HaiND_BaYEfc9SO5
172
172
  claude_mpm/commands/mpm-auto-configure.md,sha256=vJtXiaEiujmozhKhqU8GsO95gHLs0QQAzkyYfqPkgzQ,5130
173
173
  claude_mpm/commands/mpm-config.md,sha256=79Eb-srRpEVV3HCHDHZc8SKec6_LVP6HbXDEVkZKLgw,2929
174
174
  claude_mpm/commands/mpm-doctor.md,sha256=ut5LhFKVRw-2ecjMSPsnaTiRuFXa6Q9t-Wgl3CCnQvk,590
175
- claude_mpm/commands/mpm-help.md,sha256=DGvnR5XLWJVygYCZis2Gh6RP1INj9DycO1FqAdwoegY,6751
175
+ claude_mpm/commands/mpm-help.md,sha256=8lo0mvhAjFI124hAGX4G8iwkz1k3xDv2QT2Jbyqeg_8,6891
176
176
  claude_mpm/commands/mpm-init.md,sha256=wwYHkToq8U5ALdhu8bDPygqAsKZ77aMaai7ZJC3oBqU,16054
177
177
  claude_mpm/commands/mpm-monitor.md,sha256=onTHf9Yac1KkdZdENtY2Q5jyw0A-vZLYgoKkPCtZLUY,12193
178
178
  claude_mpm/commands/mpm-organize.md,sha256=T-ysjhwgfW9irjUj02vuY_1jeMdabO_zxcShyjmqsiM,10153
179
179
  claude_mpm/commands/mpm-status.md,sha256=oaM4ybL4ffp55nkT9F0mp_5H4tF-wX9mbqK-LEKEqUU,1919
180
180
  claude_mpm/commands/mpm-tickets.md,sha256=a2_mW56QDhw7-jMU92ycGaxvSSYpNoQFGhkWbr3MJ88,2356
181
- claude_mpm/commands/mpm.md,sha256=tv_Mr6p2olRKIltKui4ljfCNG69VokkyIg951CeMBas,559
181
+ claude_mpm/commands/mpm-version.md,sha256=lwI2QiRYKfA6L5y_FGL8Nkb-4GtO2Z4iuNBbMvfx6Hs,2648
182
+ claude_mpm/commands/mpm.md,sha256=_VwGAZPYruPW9Rdh0_xOZWDxVrE3KOT00G7FvPkq_T4,636
182
183
  claude_mpm/config/__init__.py,sha256=V2dyJQ8_gVCpNiCg8zYTQqE1RSeON5Zm8n5Ndkqhp1g,916
183
184
  claude_mpm/config/agent_config.py,sha256=sICpvJoOuJGRzdSIMWvC9ECzKTKF-3Psi-ATSaZQ9LU,14860
184
185
  claude_mpm/config/experimental_features.py,sha256=cH95HqMUEQL-_Hs833dAAC33GHMUE5e26qpOyiEtBWI,7546
@@ -469,7 +470,7 @@ claude_mpm/services/subprocess_launcher_service.py,sha256=lYSlg2G_oDAv1dHrOdHaOE
469
470
  claude_mpm/services/system_instructions_service.py,sha256=eub7WjM1g1hda-k6n6VvKnHehOAAPGDNtGEO7SNTZZ8,10016
470
471
  claude_mpm/services/ticket_manager.py,sha256=LpmbUFo7OkG48leZscHIvNoHY_thLWh2wquFxSfDg-o,785
471
472
  claude_mpm/services/utility_service.py,sha256=bFxDiQTisdAL3dOU9lucHdDW9T8sW1_9u6o7wKp0n1o,8435
472
- claude_mpm/services/version_service.py,sha256=Ql2HKB9OoHGdqkfWyFFLSSVBwShap0dFIjbmTXrf6dE,10163
473
+ claude_mpm/services/version_service.py,sha256=QSCEVZ1yrbT2OrqjiFaGhT0oPJSMCX9Z84KMwwt6dNs,13986
473
474
  claude_mpm/services/agents/__init__.py,sha256=ZkES34SfCrTzWjdoCZExRccPHXXWEBzech6dNEb3T9g,2547
474
475
  claude_mpm/services/agents/agent_builder.py,sha256=vXXz7GbCoBidNs7VfyQVwB4fTslD_joAw5HP6Ac8_kM,14950
475
476
  claude_mpm/services/agents/auto_config_manager.py,sha256=Eq3u0Zvc8nqDgp-aHYpVFv44UrEG-gPKQSr6hrM5GHA,30705
@@ -826,7 +827,7 @@ claude_mpm/services/version_control/version_parser.py,sha256=DbNncYZKKy9--ZUCO9g
826
827
  claude_mpm/services/visualization/__init__.py,sha256=cTtWxRi07rSLXQKVZa7SKZsYfj6nRouw7HVO85Towfg,401
827
828
  claude_mpm/services/visualization/mermaid_generator.py,sha256=6QGgXtMg_N9rKeRn8wYs3IxuWGKdDVAwFMFWKfIw9s4,34277
828
829
  claude_mpm/skills/__init__.py,sha256=Z_QNFaW2t_Um5q4icqs9xSgoNKhAPbs5Ny7rMKizBsM,497
829
- claude_mpm/skills/registry.py,sha256=Ooc2leMunyb52uNaCKK4MB60QhP8ErWFO1oJe0YlBQc,6904
830
+ claude_mpm/skills/registry.py,sha256=P4CsN7FylbxIrxuMD8LKVjOv6SLrMJunwvDHPvYqS7U,10233
830
831
  claude_mpm/skills/skill_manager.py,sha256=6QaC0B3e8hVVj7FWV6fCr8-SGbnguoXmErUujnXGWCo,10445
831
832
  claude_mpm/skills/bundled/__init__.py,sha256=rGZR4FYam6sN_fCzP7l1OpEn4pIJI8UYI_89ErnwSRU,152
832
833
  claude_mpm/storage/__init__.py,sha256=DXnmee6iGqC6ctFLW7_Ty1cVCjYDFuCMkwO4EV0i25k,274
@@ -862,9 +863,9 @@ claude_mpm/utils/subprocess_utils.py,sha256=D0izRT8anjiUb_JG72zlJR_JAw1cDkb7kalN
862
863
  claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
863
864
  claude_mpm/validation/agent_validator.py,sha256=GprtAvu80VyMXcKGsK_VhYiXWA6BjKHv7O6HKx0AB9w,20917
864
865
  claude_mpm/validation/frontmatter_validator.py,sha256=YpJlYNNYcV8u6hIOi3_jaRsDnzhbcQpjCBE6eyBKaFY,7076
865
- claude_mpm-4.16.2.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
866
- claude_mpm-4.16.2.dist-info/METADATA,sha256=jDWWU7ZqYMVD_TK8kU-RMdTJ7uIEYwGoLWv3JjLb2LY,19703
867
- claude_mpm-4.16.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
868
- claude_mpm-4.16.2.dist-info/entry_points.txt,sha256=Vlw3GNi-OtTpKSrez04iNrPmxNxYDpIWxmJCxiZ5Tx8,526
869
- claude_mpm-4.16.2.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
870
- claude_mpm-4.16.2.dist-info/RECORD,,
866
+ claude_mpm-4.17.0.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
867
+ claude_mpm-4.17.0.dist-info/METADATA,sha256=EsV5rm9VJK_49wDIiq7QuZ4PCayhqI7rzc1yZZeFc6U,20218
868
+ claude_mpm-4.17.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
869
+ claude_mpm-4.17.0.dist-info/entry_points.txt,sha256=Vlw3GNi-OtTpKSrez04iNrPmxNxYDpIWxmJCxiZ5Tx8,526
870
+ claude_mpm-4.17.0.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
871
+ claude_mpm-4.17.0.dist-info/RECORD,,