claude-mpm 4.16.0__py3-none-any.whl → 4.20.3__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.
Files changed (131) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_ENGINEER.md +286 -0
  3. claude_mpm/agents/BASE_PM.md +255 -23
  4. claude_mpm/agents/PM_INSTRUCTIONS.md +40 -0
  5. claude_mpm/agents/agent_loader.py +4 -4
  6. claude_mpm/agents/templates/engineer.json +5 -1
  7. claude_mpm/agents/templates/python_engineer.json +8 -3
  8. claude_mpm/agents/templates/rust_engineer.json +12 -7
  9. claude_mpm/agents/templates/svelte-engineer.json +225 -0
  10. claude_mpm/cli/commands/__init__.py +2 -0
  11. claude_mpm/cli/commands/mpm_init.py +109 -24
  12. claude_mpm/cli/commands/skills.py +434 -0
  13. claude_mpm/cli/executor.py +2 -0
  14. claude_mpm/cli/parsers/base_parser.py +7 -0
  15. claude_mpm/cli/parsers/skills_parser.py +137 -0
  16. claude_mpm/cli/startup.py +57 -0
  17. claude_mpm/commands/mpm-auto-configure.md +52 -0
  18. claude_mpm/commands/mpm-help.md +3 -0
  19. claude_mpm/commands/mpm-init.md +112 -6
  20. claude_mpm/commands/mpm-version.md +113 -0
  21. claude_mpm/commands/mpm.md +1 -0
  22. claude_mpm/config/agent_config.py +2 -2
  23. claude_mpm/constants.py +12 -0
  24. claude_mpm/core/config.py +42 -0
  25. claude_mpm/core/factories.py +1 -1
  26. claude_mpm/core/optimized_agent_loader.py +3 -3
  27. claude_mpm/hooks/__init__.py +8 -0
  28. claude_mpm/hooks/claude_hooks/response_tracking.py +35 -1
  29. claude_mpm/hooks/session_resume_hook.py +121 -0
  30. claude_mpm/models/resume_log.py +340 -0
  31. claude_mpm/services/agents/auto_config_manager.py +1 -1
  32. claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
  33. claude_mpm/services/agents/deployment/agent_record_service.py +1 -1
  34. claude_mpm/services/agents/deployment/agent_validator.py +17 -1
  35. claude_mpm/services/agents/deployment/async_agent_deployment.py +1 -1
  36. claude_mpm/services/agents/deployment/local_template_deployment.py +1 -1
  37. claude_mpm/services/agents/local_template_manager.py +1 -1
  38. claude_mpm/services/agents/recommender.py +47 -0
  39. claude_mpm/services/cli/resume_service.py +617 -0
  40. claude_mpm/services/cli/session_manager.py +87 -0
  41. claude_mpm/services/cli/session_resume_helper.py +352 -0
  42. claude_mpm/services/core/path_resolver.py +1 -1
  43. claude_mpm/services/infrastructure/resume_log_generator.py +439 -0
  44. claude_mpm/services/mcp_config_manager.py +7 -131
  45. claude_mpm/services/session_manager.py +205 -1
  46. claude_mpm/services/unified/deployment_strategies/local.py +1 -1
  47. claude_mpm/services/version_service.py +104 -1
  48. claude_mpm/skills/__init__.py +21 -0
  49. claude_mpm/skills/agent_skills_injector.py +331 -0
  50. claude_mpm/skills/bundled/LICENSE_ATTRIBUTIONS.md +79 -0
  51. claude_mpm/skills/bundled/api-documentation.md +393 -0
  52. claude_mpm/skills/bundled/async-testing.md +571 -0
  53. claude_mpm/skills/bundled/code-review.md +143 -0
  54. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +75 -0
  55. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +184 -0
  56. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +107 -0
  57. claude_mpm/skills/bundled/collaboration/requesting-code-review/code-reviewer.md +146 -0
  58. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +118 -0
  59. claude_mpm/skills/bundled/database-migration.md +199 -0
  60. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +177 -0
  61. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +119 -0
  62. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +148 -0
  63. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +483 -0
  64. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +452 -0
  65. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +449 -0
  66. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +411 -0
  67. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +14 -0
  68. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +58 -0
  69. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +68 -0
  70. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +69 -0
  71. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +175 -0
  72. claude_mpm/skills/bundled/debugging/verification-before-completion/references/common-failures.md +213 -0
  73. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +314 -0
  74. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +227 -0
  75. claude_mpm/skills/bundled/docker-containerization.md +194 -0
  76. claude_mpm/skills/bundled/express-local-dev.md +1429 -0
  77. claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
  78. claude_mpm/skills/bundled/git-workflow.md +414 -0
  79. claude_mpm/skills/bundled/imagemagick.md +204 -0
  80. claude_mpm/skills/bundled/json-data-handling.md +223 -0
  81. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +74 -0
  82. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +32 -0
  83. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +47 -0
  84. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +65 -0
  85. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +30 -0
  86. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +16 -0
  87. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +328 -0
  88. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +602 -0
  89. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +915 -0
  90. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +916 -0
  91. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +752 -0
  92. claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +150 -0
  93. claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +372 -0
  94. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +209 -0
  95. claude_mpm/skills/bundled/main/skill-creator/scripts/init_skill.py +302 -0
  96. claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +111 -0
  97. claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +65 -0
  98. claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
  99. claude_mpm/skills/bundled/pdf.md +141 -0
  100. claude_mpm/skills/bundled/performance-profiling.md +567 -0
  101. claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
  102. claude_mpm/skills/bundled/security-scanning.md +327 -0
  103. claude_mpm/skills/bundled/systematic-debugging.md +473 -0
  104. claude_mpm/skills/bundled/test-driven-development.md +378 -0
  105. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +123 -0
  106. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +145 -0
  107. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +543 -0
  108. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +741 -0
  109. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +470 -0
  110. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +458 -0
  111. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +639 -0
  112. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +304 -0
  113. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +96 -0
  114. claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +35 -0
  115. claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +40 -0
  116. claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +34 -0
  117. claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +107 -0
  118. claude_mpm/skills/bundled/vite-local-dev.md +1061 -0
  119. claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
  120. claude_mpm/skills/bundled/xlsx.md +157 -0
  121. claude_mpm/skills/registry.py +97 -9
  122. claude_mpm/skills/skills_registry.py +351 -0
  123. claude_mpm/skills/skills_service.py +730 -0
  124. claude_mpm/utils/agent_dependency_loader.py +2 -2
  125. {claude_mpm-4.16.0.dist-info → claude_mpm-4.20.3.dist-info}/METADATA +181 -32
  126. {claude_mpm-4.16.0.dist-info → claude_mpm-4.20.3.dist-info}/RECORD +130 -48
  127. claude_mpm/agents/INSTRUCTIONS_OLD_DEPRECATED.md +0 -602
  128. {claude_mpm-4.16.0.dist-info → claude_mpm-4.20.3.dist-info}/WHEEL +0 -0
  129. {claude_mpm-4.16.0.dist-info → claude_mpm-4.20.3.dist-info}/entry_points.txt +0 -0
  130. {claude_mpm-4.16.0.dist-info → claude_mpm-4.20.3.dist-info}/licenses/LICENSE +0 -0
  131. {claude_mpm-4.16.0.dist-info → claude_mpm-4.20.3.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,331 @@
1
+ """Agent Skills Injector - Dynamically inject skills into agent templates.
2
+
3
+ This module implements dynamic skill injection into agent templates and frontmatter.
4
+ It reads skill assignments from the registry and enhances agent definitions at runtime
5
+ without modifying template files on disk.
6
+
7
+ Design Principles:
8
+ - Dynamic injection (no template file modifications)
9
+ - Registry is source of truth (not templates)
10
+ - Return enhanced templates as dicts
11
+ - Generate clean YAML frontmatter
12
+ - Inject skills docs after frontmatter
13
+
14
+ References:
15
+ - Design: docs/design/claude-mpm-skills-integration-design.md (lines 632-711)
16
+ """
17
+
18
+ import json
19
+ from pathlib import Path
20
+ from typing import Any, Dict, List
21
+
22
+ import yaml
23
+
24
+ from claude_mpm.core.mixins import LoggerMixin
25
+
26
+ from .skills_service import SkillsService
27
+
28
+
29
+ class AgentSkillsInjector(LoggerMixin):
30
+ """Injects skill references into agent templates and frontmatter.
31
+
32
+ This class provides methods to:
33
+ - Enhance agent JSON templates with skills field
34
+ - Generate YAML frontmatter with skills included
35
+ - Inject skills documentation into agent markdown content
36
+
37
+ The injector reads from the skills registry (not template files) to determine
38
+ which skills should be assigned to each agent, then dynamically injects this
39
+ information when agents are loaded.
40
+
41
+ Example:
42
+ >>> service = SkillsService()
43
+ >>> injector = AgentSkillsInjector(service)
44
+ >>>
45
+ >>> # Enhance template
46
+ >>> template = injector.enhance_agent_template(Path('engineer.json'))
47
+ >>> print(template['skills']) # {'required': [...], 'optional': [...]}
48
+ >>>
49
+ >>> # Generate frontmatter
50
+ >>> frontmatter = injector.generate_frontmatter_with_skills(template)
51
+ >>> print(frontmatter) # ---\nname: engineer\nskills:\n - ...\n---
52
+ """
53
+
54
+ def __init__(self, skills_service: SkillsService) -> None:
55
+ """Initialize Agent Skills Injector.
56
+
57
+ Args:
58
+ skills_service: SkillsService instance for accessing registry
59
+ """
60
+ super().__init__()
61
+ self.skills_service: SkillsService = skills_service
62
+
63
+ def enhance_agent_template(self, template_path: Path) -> Dict[str, Any]:
64
+ """Add skills field to agent template JSON.
65
+
66
+ Reads an agent JSON template, determines which skills should be assigned
67
+ from the registry, and adds a 'skills' field to the template dict.
68
+
69
+ The skills field structure:
70
+ {
71
+ "required": [skill1, skill2], # First 2 skills
72
+ "optional": [skill3, skill4], # Remaining skills
73
+ "auto_load": true
74
+ }
75
+
76
+ Args:
77
+ template_path: Path to agent JSON template file
78
+
79
+ Returns:
80
+ Enhanced template dict with 'skills' field added
81
+
82
+ Example:
83
+ >>> template = injector.enhance_agent_template(
84
+ ... Path('src/claude_mpm/agents/templates/engineer.json')
85
+ ... )
86
+ >>> assert 'skills' in template
87
+ >>> assert 'required' in template['skills']
88
+ """
89
+ try:
90
+ with open(template_path, encoding='utf-8') as f:
91
+ template = json.load(f)
92
+ except (OSError, json.JSONDecodeError) as e:
93
+ self.logger.error(f"Failed to load template {template_path}: {e}")
94
+ raise ValueError(f"Cannot load template {template_path}") from e
95
+
96
+ agent_id = template.get('agent_id')
97
+ if not agent_id:
98
+ self.logger.error(f"Template missing agent_id: {template_path}")
99
+ return template
100
+
101
+ # Get skills for this agent from registry
102
+ skills = self.skills_service.get_skills_for_agent(agent_id)
103
+
104
+ if skills:
105
+ # Split into required (first 2) and optional (rest)
106
+ required = skills[:2] if len(skills) > 2 else skills
107
+ optional = skills[2:] if len(skills) > 2 else []
108
+
109
+ template['skills'] = {
110
+ 'required': required,
111
+ 'optional': optional,
112
+ 'auto_load': True
113
+ }
114
+
115
+ self.logger.info(f"Enhanced {agent_id} with {len(skills)} skills")
116
+ else:
117
+ self.logger.debug(f"No skills assigned to {agent_id}")
118
+
119
+ return template
120
+
121
+ def generate_frontmatter_with_skills(self, agent_config: Dict[str, Any]) -> str:
122
+ """Generate YAML frontmatter including skills field.
123
+
124
+ Creates clean YAML frontmatter for agent markdown files, including:
125
+ - name: Agent ID
126
+ - description: Agent description
127
+ - version: Agent version
128
+ - tools: List of tools
129
+ - skills: List of all skills (required + optional)
130
+
131
+ Args:
132
+ agent_config: Agent configuration dict (from JSON template)
133
+
134
+ Returns:
135
+ YAML frontmatter string with delimiters (---\n...yaml...\n---)
136
+
137
+ Example:
138
+ >>> config = {
139
+ ... 'agent_id': 'engineer',
140
+ ... 'metadata': {'description': 'Software development'},
141
+ ... 'version': '2.1.0',
142
+ ... 'capabilities': {'tools': ['Read', 'Write']},
143
+ ... 'skills': {
144
+ ... 'required': ['test-driven-development'],
145
+ ... 'optional': ['code-review']
146
+ ... }
147
+ ... }
148
+ >>> frontmatter = injector.generate_frontmatter_with_skills(config)
149
+ >>> assert 'skills:' in frontmatter
150
+ >>> assert 'test-driven-development' in frontmatter
151
+ """
152
+ # Build frontmatter dict
153
+ frontmatter = {
154
+ 'name': agent_config.get('agent_id'),
155
+ 'description': agent_config.get('metadata', {}).get('description'),
156
+ 'version': agent_config.get('version'),
157
+ 'tools': agent_config.get('capabilities', {}).get('tools', [])
158
+ }
159
+
160
+ # Add skills if present
161
+ if 'skills' in agent_config:
162
+ skills_config = agent_config['skills']
163
+ required = skills_config.get('required', [])
164
+ optional = skills_config.get('optional', [])
165
+ all_skills = required + optional
166
+
167
+ if all_skills:
168
+ frontmatter['skills'] = all_skills
169
+
170
+ # Convert to YAML with clean formatting
171
+ yaml_str = yaml.dump(
172
+ frontmatter,
173
+ default_flow_style=False,
174
+ sort_keys=False,
175
+ allow_unicode=True
176
+ )
177
+
178
+ return f"---\n{yaml_str}---\n"
179
+
180
+ def inject_skills_documentation(
181
+ self,
182
+ agent_content: str,
183
+ skills: List[str]
184
+ ) -> str:
185
+ """Inject skills documentation reference into agent instructions.
186
+
187
+ Adds a "## Available Skills" section after the YAML frontmatter that
188
+ lists all skills available to this agent. This section informs the agent
189
+ about its skills and explains that Claude will auto-load them when relevant.
190
+
191
+ Args:
192
+ agent_content: Original agent markdown content (with frontmatter)
193
+ skills: List of skill names to document
194
+
195
+ Returns:
196
+ Agent content with skills section injected after frontmatter
197
+
198
+ Example:
199
+ >>> content = '''---
200
+ ... name: engineer
201
+ ... ---
202
+ ...
203
+ ... # Software Engineer Agent
204
+ ...
205
+ ... You are a software development specialist...
206
+ ... '''
207
+ >>> skills = ['test-driven-development', 'systematic-debugging']
208
+ >>> enhanced = injector.inject_skills_documentation(content, skills)
209
+ >>> assert '## Available Skills' in enhanced
210
+ >>> assert 'test-driven-development' in enhanced
211
+ """
212
+ if not skills:
213
+ return agent_content
214
+
215
+ # Build skills section
216
+ skills_section = "\n\n## Available Skills\n\n"
217
+ skills_section += "You have access to the following skills that will be loaded when relevant:\n\n"
218
+
219
+ for skill in skills:
220
+ skills_section += f"- **{skill}**: Automatically activated when needed\n"
221
+
222
+ skills_section += "\nClaude will automatically read these skills when your task matches their descriptions.\n"
223
+
224
+ # Insert after frontmatter
225
+ if '---' in agent_content:
226
+ parts = agent_content.split('---', 2)
227
+ if len(parts) >= 3:
228
+ # Reconstruct: frontmatter + skills section + rest
229
+ return f"{parts[0]}---{parts[1]}---{skills_section}{parts[2]}"
230
+
231
+ # If no frontmatter, append at end
232
+ return agent_content + skills_section
233
+
234
+ def enhance_agent_with_skills(
235
+ self,
236
+ agent_id: str,
237
+ template_content: str
238
+ ) -> Dict[str, Any]:
239
+ """Convenience method to fully enhance an agent with skills.
240
+
241
+ Combines all enhancement steps:
242
+ 1. Gets skills from registry
243
+ 2. Generates enhanced frontmatter
244
+ 3. Injects skills documentation
245
+
246
+ Args:
247
+ agent_id: Agent identifier
248
+ template_content: Original agent template markdown content
249
+
250
+ Returns:
251
+ Dict containing:
252
+ - agent_id: Agent identifier
253
+ - skills: List of skill names
254
+ - frontmatter: YAML frontmatter with skills
255
+ - content: Full enhanced markdown content
256
+
257
+ Example:
258
+ >>> result = injector.enhance_agent_with_skills(
259
+ ... 'engineer',
260
+ ... '---\nname: engineer\n---\n\n# Engineer\n...'
261
+ ... )
262
+ >>> print(result['skills']) # ['test-driven-development', ...]
263
+ >>> print(result['content']) # Enhanced markdown with skills section
264
+ """
265
+ # Get skills for agent
266
+ skills = self.skills_service.get_skills_for_agent(agent_id)
267
+
268
+ if not skills:
269
+ return {
270
+ 'agent_id': agent_id,
271
+ 'skills': [],
272
+ 'frontmatter': '',
273
+ 'content': template_content
274
+ }
275
+
276
+ # Create config dict for frontmatter generation
277
+ agent_config = {
278
+ 'agent_id': agent_id,
279
+ 'skills': {
280
+ 'required': skills[:2] if len(skills) > 2 else skills,
281
+ 'optional': skills[2:] if len(skills) > 2 else []
282
+ }
283
+ }
284
+
285
+ # Generate frontmatter
286
+ frontmatter = self.generate_frontmatter_with_skills(agent_config)
287
+
288
+ # Inject skills documentation
289
+ enhanced_content = self.inject_skills_documentation(template_content, skills)
290
+
291
+ return {
292
+ 'agent_id': agent_id,
293
+ 'skills': skills,
294
+ 'frontmatter': frontmatter,
295
+ 'content': enhanced_content
296
+ }
297
+
298
+ def get_skills_references_for_agent(self, agent_id: str) -> List[Dict[str, str]]:
299
+ """Get skill references with metadata for an agent.
300
+
301
+ Returns detailed information about each skill assigned to an agent,
302
+ including name, category, and description from the registry.
303
+
304
+ Args:
305
+ agent_id: Agent identifier
306
+
307
+ Returns:
308
+ List of dicts containing skill reference information:
309
+ - name: Skill name
310
+ - category: Skill category (from metadata)
311
+ - description: Brief description
312
+
313
+ Example:
314
+ >>> refs = injector.get_skills_references_for_agent('engineer')
315
+ >>> for ref in refs:
316
+ ... print(f"{ref['name']}: {ref['description']}")
317
+ """
318
+ skills = self.skills_service.get_skills_for_agent(agent_id)
319
+ registry = self.skills_service.registry
320
+
321
+ skill_refs = []
322
+ for skill_name in skills:
323
+ metadata = registry.get('skills_metadata', {}).get(skill_name, {})
324
+
325
+ skill_refs.append({
326
+ 'name': skill_name,
327
+ 'category': metadata.get('category', 'unknown'),
328
+ 'description': metadata.get('description', '')
329
+ })
330
+
331
+ return skill_refs
@@ -0,0 +1,79 @@
1
+ # License Attributions for Bundled Skills
2
+
3
+ This document provides license information and attributions for all skills bundled with Claude MPM.
4
+
5
+ ---
6
+
7
+ ## Summary
8
+
9
+ - **Total Skills**: 15
10
+ - **Unique Licenses**: 3
11
+
12
+ - **UNKNOWN**: 8 skill(s)
13
+ - **Complete terms in LICENSE.txt**: 5 skill(s)
14
+ - **MIT**: 2 skill(s)
15
+
16
+ ---
17
+
18
+ ## Complete terms in LICENSE.txt Licensed Skills
19
+
20
+ | Skill Name | Author | Category | Description | Source |
21
+ |------------|--------|----------|-------------|--------|
22
+ | artifacts-builder | Unknown | main | Suite of tools for creating elaborate, multi-component claud... | N/A |
23
+ | internal-comms | Unknown | main | A set of resources to help me write all kinds of internal co... | N/A |
24
+ | mcp-builder | Unknown | main | Guide for creating high-quality MCP (Model Context Protocol)... | N/A |
25
+ | skill-creator | Unknown | main | Guide for creating effective skills. This skill should be us... | N/A |
26
+ | webapp-testing | Unknown | testing | Toolkit for interacting with and testing local web applicati... | N/A |
27
+
28
+ ---
29
+
30
+ ## MIT Licensed Skills
31
+
32
+ | Skill Name | Author | Category | Description | Source |
33
+ |------------|--------|----------|-------------|--------|
34
+ | systematic-debugging | Jesse Vincent | debugging | Methodical debugging instead of random changes | [Link](https://github.com/obra/superpowers-skills/tree/main/skills/debugging/systematic-debugging) |
35
+ | test-driven-development | Jesse Vincent | testing | Write the test first, watch it fail, write minimal code to p... | [Link](https://github.com/obra/superpowers-skills/tree/main/skills/testing/test-driven-development) |
36
+
37
+ ---
38
+
39
+ ## UNKNOWN Licensed Skills
40
+
41
+ | Skill Name | Author | Category | Description | Source |
42
+ |------------|--------|----------|-------------|--------|
43
+ | Brainstorming Ideas Into Designs | Unknown | collaboration | Interactive idea refinement using Socratic method to develop... | N/A |
44
+ | Condition-Based Waiting | Unknown | testing | Replace arbitrary timeouts with condition polling for reliab... | N/A |
45
+ | Dispatching Parallel Agents | Unknown | collaboration | Use multiple Claude agents to investigate and fix independen... | N/A |
46
+ | Requesting Code Review | Unknown | collaboration | Dispatch code-reviewer subagent to review implementation aga... | N/A |
47
+ | Root Cause Tracing | Unknown | debugging | Systematically trace bugs backward through call stack to fin... | N/A |
48
+ | Testing Anti-Patterns | Unknown | testing | Never test mock behavior. Never add test-only methods to pro... | N/A |
49
+ | Verification Before Completion | Unknown | debugging | Run verification commands and confirm output before claiming... | N/A |
50
+ | Writing Plans | Unknown | collaboration | Create detailed implementation plans with bite-sized tasks f... | N/A |
51
+
52
+ ---
53
+
54
+ ## ⚠️ Missing License Information
55
+
56
+ The following skills do not have license information in their SKILL.md:
57
+
58
+ - Brainstorming Ideas Into Designs
59
+ - Condition-Based Waiting
60
+ - Dispatching Parallel Agents
61
+ - Requesting Code Review
62
+ - Root Cause Tracing
63
+ - Testing Anti-Patterns
64
+ - Verification Before Completion
65
+ - Writing Plans
66
+
67
+ ---
68
+
69
+ ## How to Update
70
+
71
+ To update this file, run:
72
+
73
+ ```bash
74
+ python scripts/generate_license_attributions.py
75
+ ```
76
+
77
+ ---
78
+
79
+ *Generated automatically by Claude MPM*