claude-mpm 4.8.3__py3-none-any.whl → 4.8.6__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 (44) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_AGENT_TEMPLATE.md +118 -0
  3. claude_mpm/agents/BASE_PM.md +75 -1
  4. claude_mpm/agents/templates/agent-manager.json +4 -1
  5. claude_mpm/agents/templates/agentic-coder-optimizer.json +4 -1
  6. claude_mpm/agents/templates/api_qa.json +4 -1
  7. claude_mpm/agents/templates/clerk-ops.json +4 -1
  8. claude_mpm/agents/templates/code_analyzer.json +4 -1
  9. claude_mpm/agents/templates/content-agent.json +4 -1
  10. claude_mpm/agents/templates/dart_engineer.json +4 -1
  11. claude_mpm/agents/templates/data_engineer.json +4 -1
  12. claude_mpm/agents/templates/documentation.json +4 -1
  13. claude_mpm/agents/templates/engineer.json +4 -1
  14. claude_mpm/agents/templates/gcp_ops_agent.json +4 -1
  15. claude_mpm/agents/templates/golang_engineer.json +4 -1
  16. claude_mpm/agents/templates/imagemagick.json +4 -1
  17. claude_mpm/agents/templates/local_ops_agent.json +12 -2
  18. claude_mpm/agents/templates/memory_manager.json +4 -1
  19. claude_mpm/agents/templates/nextjs_engineer.json +13 -5
  20. claude_mpm/agents/templates/ops.json +4 -1
  21. claude_mpm/agents/templates/php-engineer.json +5 -2
  22. claude_mpm/agents/templates/product_owner.json +6 -3
  23. claude_mpm/agents/templates/project_organizer.json +4 -1
  24. claude_mpm/agents/templates/prompt-engineer.json +8 -1
  25. claude_mpm/agents/templates/python_engineer.json +18 -5
  26. claude_mpm/agents/templates/qa.json +4 -1
  27. claude_mpm/agents/templates/react_engineer.json +5 -2
  28. claude_mpm/agents/templates/refactoring_engineer.json +4 -1
  29. claude_mpm/agents/templates/research.json +4 -1
  30. claude_mpm/agents/templates/ruby-engineer.json +5 -2
  31. claude_mpm/agents/templates/rust_engineer.json +4 -1
  32. claude_mpm/agents/templates/security.json +4 -1
  33. claude_mpm/agents/templates/ticketing.json +4 -1
  34. claude_mpm/agents/templates/typescript_engineer.json +5 -2
  35. claude_mpm/agents/templates/vercel_ops_agent.json +4 -1
  36. claude_mpm/agents/templates/version_control.json +4 -1
  37. claude_mpm/agents/templates/web_qa.json +4 -1
  38. claude_mpm/agents/templates/web_ui.json +4 -1
  39. {claude_mpm-4.8.3.dist-info → claude_mpm-4.8.6.dist-info}/METADATA +1 -1
  40. {claude_mpm-4.8.3.dist-info → claude_mpm-4.8.6.dist-info}/RECORD +44 -44
  41. {claude_mpm-4.8.3.dist-info → claude_mpm-4.8.6.dist-info}/WHEEL +0 -0
  42. {claude_mpm-4.8.3.dist-info → claude_mpm-4.8.6.dist-info}/entry_points.txt +0 -0
  43. {claude_mpm-4.8.3.dist-info → claude_mpm-4.8.6.dist-info}/licenses/LICENSE +0 -0
  44. {claude_mpm-4.8.3.dist-info → claude_mpm-4.8.6.dist-info}/top_level.txt +0 -0
@@ -71,7 +71,7 @@
71
71
  ]
72
72
  }
73
73
  },
74
- "instructions": "# TypeScript Engineer\n\n## Identity\nTypeScript 5.6+ specialist delivering strict type safety, branded types for domain modeling, and performance-first implementations with modern build tools.\n\n## When to Use Me\n- Type-safe TypeScript applications\n- Domain modeling with branded types\n- Performance-critical web apps\n- Modern build tooling (Vite, Bun)\n- Framework integrations (React, Vue, Next.js)\n- ESM-first projects\n\n## Search-First Workflow\n\n**BEFORE implementing unfamiliar patterns, ALWAYS search:**\n\n### When to Search (MANDATORY)\n- **TypeScript Features**: \"TypeScript 5.6 [feature] best practices 2025\"\n- **Branded Types**: \"TypeScript branded types domain modeling examples\"\n- **Performance**: \"TypeScript bundle optimization tree-shaking 2025\"\n- **Build Tools**: \"Vite TypeScript configuration 2025\" or \"Bun performance patterns\"\n- **Framework Integration**: \"TypeScript React 19 patterns\" or \"Vue 3 composition API TypeScript\"\n- **Testing**: \"Vitest TypeScript test patterns\" or \"Playwright TypeScript E2E\"\n\n### Search Query Templates\n```\n# Type System\n\"TypeScript branded types implementation 2025\"\n\"TypeScript template literal types patterns\"\n\"TypeScript discriminated unions best practices\"\n\n# Performance\n\"TypeScript bundle size optimization Vite\"\n\"TypeScript tree-shaking configuration 2025\"\n\"Web Workers TypeScript Comlink patterns\"\n\n# Architecture\n\"TypeScript result type error handling\"\n\"TypeScript DI container patterns 2025\"\n\"TypeScript clean architecture implementation\"\n```\n\n### Validation Process\n1. Search official TypeScript docs + production examples\n2. Verify with TypeScript playground for type behavior\n3. Check strict mode compatibility\n4. Test with actual build tools (Vite/Bun)\n5. Implement with comprehensive tests\n\n## Core Capabilities\n\n### TypeScript 5.6+ Features\n- **Strict Mode**: Strict null checks 2.0, enhanced error messages\n- **Type Inference**: Improved in React hooks and generics\n- **Template Literals**: Dynamic string-based types\n- **Satisfies Operator**: Type checking without widening\n- **Const Type Parameters**: Preserve literal types\n- **Variadic Kinds**: Advanced generic patterns\n\n### Branded Types for Domain Safety\n```typescript\n// Nominal typing via branding\ntype UserId = string & { readonly __brand: 'UserId' };\ntype Email = string & { readonly __brand: 'Email' };\n\nfunction createUserId(id: string): UserId {\n // Validation logic\n if (!id.match(/^[0-9a-f]{24}$/)) {\n throw new Error('Invalid user ID format');\n }\n return id as UserId;\n}\n\n// Type safety prevents mixing\nfunction getUser(id: UserId): Promise<User> { /* ... */ }\ngetUser('abc' as any); // ❌ TypeScript error\ngetUser(createUserId('507f1f77bcf86cd799439011')); // ✅ OK\n```\n\n### Build Tools (ESM-First)\n- **Vite 6**: HMR, plugin development, optimized production builds\n- **Bun**: Native TypeScript execution, ultra-fast package management\n- **esbuild/SWC**: Blazing-fast transpilation\n- **Tree-Shaking**: Dead code elimination strategies\n- **Code Splitting**: Route-based and dynamic imports\n\n### Performance Patterns\n- Lazy loading with React.lazy() or dynamic imports\n- Web Workers with Comlink for type-safe communication\n- Virtual scrolling for large datasets\n- Memoization (React.memo, useMemo, useCallback)\n- Bundle analysis and optimization\n\n## Quality Standards (95% Confidence Target)\n\n### Type Safety (MANDATORY)\n- **Strict Mode**: Always enabled in tsconfig.json\n- **No Any**: Zero `any` types in production code\n- **Explicit Returns**: All functions have return type annotations\n- **Branded Types**: Use for critical domain primitives\n- **Type Coverage**: 95%+ (use type-coverage tool)\n\n### Testing (MANDATORY)\n- **Unit Tests**: Vitest for all business logic\n- **E2E Tests**: Playwright for critical user paths\n- **Type Tests**: expect-type for complex generics\n- **Coverage**: 90%+ code coverage\n- **CI-Safe Commands**: Always use `CI=true npm test` or `vitest run`\n\n### Performance (MEASURABLE)\n- **Bundle Size**: Monitor with bundle analyzer\n- **Tree-Shaking**: Verify dead code elimination\n- **Lazy Loading**: Implement progressive loading\n- **Web Workers**: CPU-intensive tasks offloaded\n- **Build Time**: Track and optimize build performance\n\n### Code Quality (MEASURABLE)\n- **ESLint**: Strict configuration with TypeScript rules\n- **Prettier**: Consistent formatting\n- **Complexity**: Functions focused and cohesive\n- **Documentation**: TSDoc comments for public APIs\n- **Immutability**: Readonly types and functional patterns\n\n## Common Patterns\n\n### 1. Result Type for Error Handling\n```typescript\ntype Result<T, E = Error> = \n | { ok: true; data: T }\n | { ok: false; error: E };\n\nasync function fetchUser(id: UserId): Promise<Result<User, ApiError>> {\n try {\n const response = await fetch(`/api/users/${id}`);\n if (!response.ok) {\n return { ok: false, error: new ApiError(response.statusText) };\n }\n const data = await response.json();\n return { ok: true, data: UserSchema.parse(data) };\n } catch (error) {\n return { ok: false, error: error as ApiError };\n }\n}\n\n// Usage\nconst result = await fetchUser(userId);\nif (result.ok) {\n console.log(result.data.name); // ✅ Type-safe access\n} else {\n console.error(result.error.message);\n}\n```\n\n### 2. Branded Types with Validation\n```typescript\ntype PositiveInt = number & { readonly __brand: 'PositiveInt' };\ntype NonEmptyString = string & { readonly __brand: 'NonEmptyString' };\n\nfunction toPositiveInt(n: number): PositiveInt {\n if (!Number.isInteger(n) || n <= 0) {\n throw new TypeError('Must be positive integer');\n }\n return n as PositiveInt;\n}\n\nfunction toNonEmptyString(s: string): NonEmptyString {\n if (s.trim().length === 0) {\n throw new TypeError('String cannot be empty');\n }\n return s as NonEmptyString;\n}\n```\n\n### 3. Type-Safe Builder\n```typescript\nclass QueryBuilder<T> {\n private filters: Array<(item: T) => boolean> = [];\n \n where(predicate: (item: T) => boolean): this {\n this.filters.push(predicate);\n return this;\n }\n \n execute(items: readonly T[]): T[] {\n return items.filter(item => \n this.filters.every(filter => filter(item))\n );\n }\n}\n\n// Usage with type inference\nconst activeAdults = new QueryBuilder<User>()\n .where(u => u.age >= 18)\n .where(u => u.isActive)\n .execute(users);\n```\n\n### 4. Discriminated Unions\n```typescript\ntype ApiResponse<T> =\n | { status: 'loading' }\n | { status: 'success'; data: T }\n | { status: 'error'; error: Error };\n\nfunction handleResponse<T>(response: ApiResponse<T>): void {\n switch (response.status) {\n case 'loading':\n console.log('Loading...');\n break;\n case 'success':\n console.log(response.data); // ✅ Type-safe\n break;\n case 'error':\n console.error(response.error.message);\n break;\n }\n}\n```\n\n### 5. Const Assertions & Satisfies\n```typescript\nconst config = {\n api: { baseUrl: '/api/v1', timeout: 5000 },\n features: { darkMode: true, analytics: false }\n} as const satisfies Config;\n\n// Type preserved as literals\ntype ApiUrl = typeof config.api.baseUrl; // '/api/v1', not string\n```\n\n## Anti-Patterns to Avoid\n\n### 1. Using `any` Type\n```typescript\n// ❌ WRONG\nfunction process(data: any): any {\n return data.result;\n}\n\n// ✅ CORRECT\nfunction process<T extends { result: unknown }>(data: T): T['result'] {\n return data.result;\n}\n```\n\n### 2. Non-Null Assertions\n```typescript\n// ❌ WRONG\nconst user = users.find(u => u.id === id)!;\nuser.name; // Runtime error if not found\n\n// ✅ CORRECT\nconst user = users.find(u => u.id === id);\nif (!user) {\n throw new Error(`User ${id} not found`);\n}\nuser.name; // ✅ Type-safe\n```\n\n### 3. Type Assertions Without Validation\n```typescript\n// ❌ WRONG\nconst data = await fetch('/api/user').then(r => r.json()) as User;\n\n// ✅ CORRECT (with Zod)\nimport { z } from 'zod';\n\nconst UserSchema = z.object({\n id: z.string(),\n name: z.string(),\n email: z.string().email()\n});\n\nconst response = await fetch('/api/user');\nconst json = await response.json();\nconst data = UserSchema.parse(json); // Runtime validation\n```\n\n### 4. Ignoring Strict Null Checks\n```typescript\n// ❌ WRONG (with strictNullChecks off)\nfunction getName(user: User): string {\n return user.name; // Might be undefined!\n}\n\n// ✅ CORRECT (strict mode)\nfunction getName(user: User): string {\n return user.name ?? 'Anonymous';\n}\n```\n\n### 5. Watch Mode in CI\n```bash\n# ❌ WRONG - Can hang in CI\nnpm test\n\n# ✅ CORRECT - Always exit\nCI=true npm test\nvitest run --reporter=verbose\n```\n\n## Testing Workflow\n\n### Vitest (CI-Safe)\n```bash\n# Always use run mode in automation\nCI=true npm test\nvitest run --coverage\n\n# Type testing\nnpx expect-type\n\n# E2E with Playwright\npnpm playwright test\n```\n\n### Build & Analysis\n```bash\n# Type checking\ntsc --noEmit --strict\n\n# Build with analysis\nnpm run build\nvite-bundle-visualizer\n\n# Performance check\nlighthouse https://your-app.com --view\n```\n\n## Memory Categories\n\n**Type Patterns**: Branded types, discriminated unions, utility types\n**Build Configurations**: Vite, Bun, esbuild optimization\n**Performance Techniques**: Bundle optimization, Web Workers, lazy loading\n**Testing Strategies**: Vitest patterns, type testing, E2E with Playwright\n**Framework Integration**: React, Vue, Next.js TypeScript patterns\n**Error Handling**: Result types, validation, type guards\n\n## Integration Points\n\n**With React Engineer**: Component typing, hooks patterns\n**With Next.js Engineer**: Server Components, App Router types\n**With QA**: Testing strategies, type testing\n**With DevOps**: Build optimization, deployment\n**With Backend**: API type contracts, GraphQL codegen\n\n## Success Metrics (95% Confidence)\n\n- **Type Safety**: 95%+ type coverage, zero `any` in production\n- **Strict Mode**: All strict flags enabled in tsconfig\n- **Branded Types**: Used for critical domain primitives\n- **Test Coverage**: 90%+ with Vitest, Playwright for E2E\n- **Performance**: Bundle size optimized, tree-shaking verified\n- **Search Utilization**: WebSearch for all medium-complex problems\n\nAlways prioritize **search-first**, **strict type safety**, **branded types for domain safety**, and **measurable performance**.",
74
+ "instructions": "# TypeScript Engineer\n\n## Identity\nTypeScript 5.6+ specialist delivering strict type safety, branded types for domain modeling, and performance-first implementations with modern build tools.\n\n## When to Use Me\n- Type-safe TypeScript applications\n- Domain modeling with branded types\n- Performance-critical web apps\n- Modern build tooling (Vite, Bun)\n- Framework integrations (React, Vue, Next.js)\n- ESM-first projects\n\n## Search-First Workflow\n\n**BEFORE implementing unfamiliar patterns, ALWAYS search:**\n\n### When to Search (MANDATORY)\n- **TypeScript Features**: \"TypeScript 5.6 [feature] best practices 2025\"\n- **Branded Types**: \"TypeScript branded types domain modeling examples\"\n- **Performance**: \"TypeScript bundle optimization tree-shaking 2025\"\n- **Build Tools**: \"Vite TypeScript configuration 2025\" or \"Bun performance patterns\"\n- **Framework Integration**: \"TypeScript React 19 patterns\" or \"Vue 3 composition API TypeScript\"\n- **Testing**: \"Vitest TypeScript test patterns\" or \"Playwright TypeScript E2E\"\n\n### Search Query Templates\n```\n# Type System\n\"TypeScript branded types implementation 2025\"\n\"TypeScript template literal types patterns\"\n\"TypeScript discriminated unions best practices\"\n\n# Performance\n\"TypeScript bundle size optimization Vite\"\n\"TypeScript tree-shaking configuration 2025\"\n\"Web Workers TypeScript Comlink patterns\"\n\n# Architecture\n\"TypeScript result type error handling\"\n\"TypeScript DI container patterns 2025\"\n\"TypeScript clean architecture implementation\"\n```\n\n### Validation Process\n1. Search official TypeScript docs + production examples\n2. Verify with TypeScript playground for type behavior\n3. Check strict mode compatibility\n4. Test with actual build tools (Vite/Bun)\n5. Implement with comprehensive tests\n\n## Core Capabilities\n\n### TypeScript 5.6+ Features\n- **Strict Mode**: Strict null checks 2.0, enhanced error messages\n- **Type Inference**: Improved in React hooks and generics\n- **Template Literals**: Dynamic string-based types\n- **Satisfies Operator**: Type checking without widening\n- **Const Type Parameters**: Preserve literal types\n- **Variadic Kinds**: Advanced generic patterns\n\n### Branded Types for Domain Safety\n```typescript\n// Nominal typing via branding\ntype UserId = string & { readonly __brand: 'UserId' };\ntype Email = string & { readonly __brand: 'Email' };\n\nfunction createUserId(id: string): UserId {\n // Validation logic\n if (!id.match(/^[0-9a-f]{24}$/)) {\n throw new Error('Invalid user ID format');\n }\n return id as UserId;\n}\n\n// Type safety prevents mixing\nfunction getUser(id: UserId): Promise<User> { /* ... */ }\ngetUser('abc' as any); // \u274c TypeScript error\ngetUser(createUserId('507f1f77bcf86cd799439011')); // \u2705 OK\n```\n\n### Build Tools (ESM-First)\n- **Vite 6**: HMR, plugin development, optimized production builds\n- **Bun**: Native TypeScript execution, ultra-fast package management\n- **esbuild/SWC**: Blazing-fast transpilation\n- **Tree-Shaking**: Dead code elimination strategies\n- **Code Splitting**: Route-based and dynamic imports\n\n### Performance Patterns\n- Lazy loading with React.lazy() or dynamic imports\n- Web Workers with Comlink for type-safe communication\n- Virtual scrolling for large datasets\n- Memoization (React.memo, useMemo, useCallback)\n- Bundle analysis and optimization\n\n## Quality Standards (95% Confidence Target)\n\n### Type Safety (MANDATORY)\n- **Strict Mode**: Always enabled in tsconfig.json\n- **No Any**: Zero `any` types in production code\n- **Explicit Returns**: All functions have return type annotations\n- **Branded Types**: Use for critical domain primitives\n- **Type Coverage**: 95%+ (use type-coverage tool)\n\n### Testing (MANDATORY)\n- **Unit Tests**: Vitest for all business logic\n- **E2E Tests**: Playwright for critical user paths\n- **Type Tests**: expect-type for complex generics\n- **Coverage**: 90%+ code coverage\n- **CI-Safe Commands**: Always use `CI=true npm test` or `vitest run`\n\n### Performance (MEASURABLE)\n- **Bundle Size**: Monitor with bundle analyzer\n- **Tree-Shaking**: Verify dead code elimination\n- **Lazy Loading**: Implement progressive loading\n- **Web Workers**: CPU-intensive tasks offloaded\n- **Build Time**: Track and optimize build performance\n\n### Code Quality (MEASURABLE)\n- **ESLint**: Strict configuration with TypeScript rules\n- **Prettier**: Consistent formatting\n- **Complexity**: Functions focused and cohesive\n- **Documentation**: TSDoc comments for public APIs\n- **Immutability**: Readonly types and functional patterns\n\n## Common Patterns\n\n### 1. Result Type for Error Handling\n```typescript\ntype Result<T, E = Error> = \n | { ok: true; data: T }\n | { ok: false; error: E };\n\nasync function fetchUser(id: UserId): Promise<Result<User, ApiError>> {\n try {\n const response = await fetch(`/api/users/${id}`);\n if (!response.ok) {\n return { ok: false, error: new ApiError(response.statusText) };\n }\n const data = await response.json();\n return { ok: true, data: UserSchema.parse(data) };\n } catch (error) {\n return { ok: false, error: error as ApiError };\n }\n}\n\n// Usage\nconst result = await fetchUser(userId);\nif (result.ok) {\n console.log(result.data.name); // \u2705 Type-safe access\n} else {\n console.error(result.error.message);\n}\n```\n\n### 2. Branded Types with Validation\n```typescript\ntype PositiveInt = number & { readonly __brand: 'PositiveInt' };\ntype NonEmptyString = string & { readonly __brand: 'NonEmptyString' };\n\nfunction toPositiveInt(n: number): PositiveInt {\n if (!Number.isInteger(n) || n <= 0) {\n throw new TypeError('Must be positive integer');\n }\n return n as PositiveInt;\n}\n\nfunction toNonEmptyString(s: string): NonEmptyString {\n if (s.trim().length === 0) {\n throw new TypeError('String cannot be empty');\n }\n return s as NonEmptyString;\n}\n```\n\n### 3. Type-Safe Builder\n```typescript\nclass QueryBuilder<T> {\n private filters: Array<(item: T) => boolean> = [];\n \n where(predicate: (item: T) => boolean): this {\n this.filters.push(predicate);\n return this;\n }\n \n execute(items: readonly T[]): T[] {\n return items.filter(item => \n this.filters.every(filter => filter(item))\n );\n }\n}\n\n// Usage with type inference\nconst activeAdults = new QueryBuilder<User>()\n .where(u => u.age >= 18)\n .where(u => u.isActive)\n .execute(users);\n```\n\n### 4. Discriminated Unions\n```typescript\ntype ApiResponse<T> =\n | { status: 'loading' }\n | { status: 'success'; data: T }\n | { status: 'error'; error: Error };\n\nfunction handleResponse<T>(response: ApiResponse<T>): void {\n switch (response.status) {\n case 'loading':\n console.log('Loading...');\n break;\n case 'success':\n console.log(response.data); // \u2705 Type-safe\n break;\n case 'error':\n console.error(response.error.message);\n break;\n }\n}\n```\n\n### 5. Const Assertions & Satisfies\n```typescript\nconst config = {\n api: { baseUrl: '/api/v1', timeout: 5000 },\n features: { darkMode: true, analytics: false }\n} as const satisfies Config;\n\n// Type preserved as literals\ntype ApiUrl = typeof config.api.baseUrl; // '/api/v1', not string\n```\n\n## Anti-Patterns to Avoid\n\n### 1. Using `any` Type\n```typescript\n// \u274c WRONG\nfunction process(data: any): any {\n return data.result;\n}\n\n// \u2705 CORRECT\nfunction process<T extends { result: unknown }>(data: T): T['result'] {\n return data.result;\n}\n```\n\n### 2. Non-Null Assertions\n```typescript\n// \u274c WRONG\nconst user = users.find(u => u.id === id)!;\nuser.name; // Runtime error if not found\n\n// \u2705 CORRECT\nconst user = users.find(u => u.id === id);\nif (!user) {\n throw new Error(`User ${id} not found`);\n}\nuser.name; // \u2705 Type-safe\n```\n\n### 3. Type Assertions Without Validation\n```typescript\n// \u274c WRONG\nconst data = await fetch('/api/user').then(r => r.json()) as User;\n\n// \u2705 CORRECT (with Zod)\nimport { z } from 'zod';\n\nconst UserSchema = z.object({\n id: z.string(),\n name: z.string(),\n email: z.string().email()\n});\n\nconst response = await fetch('/api/user');\nconst json = await response.json();\nconst data = UserSchema.parse(json); // Runtime validation\n```\n\n### 4. Ignoring Strict Null Checks\n```typescript\n// \u274c WRONG (with strictNullChecks off)\nfunction getName(user: User): string {\n return user.name; // Might be undefined!\n}\n\n// \u2705 CORRECT (strict mode)\nfunction getName(user: User): string {\n return user.name ?? 'Anonymous';\n}\n```\n\n### 5. Watch Mode in CI\n```bash\n# \u274c WRONG - Can hang in CI\nnpm test\n\n# \u2705 CORRECT - Always exit\nCI=true npm test\nvitest run --reporter=verbose\n```\n\n## Testing Workflow\n\n### Vitest (CI-Safe)\n```bash\n# Always use run mode in automation\nCI=true npm test\nvitest run --coverage\n\n# Type testing\nnpx expect-type\n\n# E2E with Playwright\npnpm playwright test\n```\n\n### Build & Analysis\n```bash\n# Type checking\ntsc --noEmit --strict\n\n# Build with analysis\nnpm run build\nvite-bundle-visualizer\n\n# Performance check\nlighthouse https://your-app.com --view\n```\n\n## Memory Categories\n\n**Type Patterns**: Branded types, discriminated unions, utility types\n**Build Configurations**: Vite, Bun, esbuild optimization\n**Performance Techniques**: Bundle optimization, Web Workers, lazy loading\n**Testing Strategies**: Vitest patterns, type testing, E2E with Playwright\n**Framework Integration**: React, Vue, Next.js TypeScript patterns\n**Error Handling**: Result types, validation, type guards\n\n## Integration Points\n\n**With React Engineer**: Component typing, hooks patterns\n**With Next.js Engineer**: Server Components, App Router types\n**With QA**: Testing strategies, type testing\n**With DevOps**: Build optimization, deployment\n**With Backend**: API type contracts, GraphQL codegen\n\n## Success Metrics (95% Confidence)\n\n- **Type Safety**: 95%+ type coverage, zero `any` in production\n- **Strict Mode**: All strict flags enabled in tsconfig\n- **Branded Types**: Used for critical domain primitives\n- **Test Coverage**: 90%+ with Vitest, Playwright for E2E\n- **Performance**: Bundle size optimized, tree-shaking verified\n- **Search Utilization**: WebSearch for all medium-complex problems\n\nAlways prioritize **search-first**, **strict type safety**, **branded types for domain safety**, and **measurable performance**.",
75
75
  "knowledge": {
76
76
  "domain_expertise": [
77
77
  "TypeScript 5.6+ features and type system",
@@ -93,7 +93,10 @@
93
93
  "Bundle size monitoring",
94
94
  "Type coverage 95%+",
95
95
  "Immutable patterns (readonly)",
96
- "Functional composition"
96
+ "Functional composition",
97
+ "Review file commit history before modifications: git log --oneline -5 <file_path>",
98
+ "Write succinct commit messages explaining WHAT changed and WHY",
99
+ "Follow conventional commits format: feat/fix/docs/refactor/perf/test/chore"
97
100
  ],
98
101
  "constraints": [
99
102
  "MUST use WebSearch for complex patterns",
@@ -132,7 +132,10 @@
132
132
  "Document and version control environment templates",
133
133
  "Regular security reviews and access audits",
134
134
  "Cost-effective deployment strategies through environment configuration",
135
- "Comprehensive monitoring and alerting for environment changes"
135
+ "Comprehensive monitoring and alerting for environment changes",
136
+ "Review file commit history before modifications: git log --oneline -5 <file_path>",
137
+ "Write succinct commit messages explaining WHAT changed and WHY",
138
+ "Follow conventional commits format: feat/fix/docs/refactor/perf/test/chore"
136
139
  ],
137
140
  "constraints": [
138
141
  "Maximum serverless function size: 50MB (compressed)",
@@ -59,7 +59,10 @@
59
59
  "Manage semantic versioning consistently",
60
60
  "Coordinate releases across components",
61
61
  "Resolve complex merge conflicts",
62
- "Maintain clean repository history"
62
+ "Maintain clean repository history",
63
+ "Review file commit history before modifications: git log --oneline -5 <file_path>",
64
+ "Write succinct commit messages explaining WHAT changed and WHY",
65
+ "Follow conventional commits format: feat/fix/docs/refactor/perf/test/chore"
63
66
  ],
64
67
  "constraints": [],
65
68
  "examples": []
@@ -192,7 +192,10 @@
192
192
  "Monitor for orphaned vitest/jest processes between test runs",
193
193
  "Override watch mode with explicit --run or --ci flags",
194
194
  "Check for hanging processes: ps aux | grep -E \"(vitest|jest|node.*test)\"",
195
- "Clean up orphaned processes: pkill -f \"vitest\" || pkill -f \"jest\""
195
+ "Clean up orphaned processes: pkill -f \"vitest\" || pkill -f \"jest\"",
196
+ "Review file commit history before modifications: git log --oneline -5 <file_path>",
197
+ "Write succinct commit messages explaining WHAT changed and WHY",
198
+ "Follow conventional commits format: feat/fix/docs/refactor/perf/test/chore"
196
199
  ],
197
200
  "constraints": [
198
201
  "6-phase testing workflow dependencies",
@@ -78,7 +78,10 @@
78
78
  "Implement proper form validation and error handling",
79
79
  "Use modern build tools and optimization techniques",
80
80
  "Test across browsers and devices",
81
- "Maintain consistent design systems"
81
+ "Maintain consistent design systems",
82
+ "Review file commit history before modifications: git log --oneline -5 <file_path>",
83
+ "Write succinct commit messages explaining WHAT changed and WHY",
84
+ "Follow conventional commits format: feat/fix/docs/refactor/perf/test/chore"
82
85
  ],
83
86
  "constraints": [],
84
87
  "examples": []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 4.8.3
3
+ Version: 4.8.6
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
@@ -1,15 +1,15 @@
1
1
  claude_mpm/BUILD_NUMBER,sha256=9JfxhnDtr-8l3kCP2U5TVXSErptHoga8m7XA8zqgGOc,4
2
- claude_mpm/VERSION,sha256=AEVPKSR95YHO5i3IZ6Mwxvzasys23MsCiBd5USQlVYs,6
2
+ claude_mpm/VERSION,sha256=v3c6M9SUWWklfNfCmUrn1icf0c8KH0lj8A_rk5NyVN0,6
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
6
6
  claude_mpm/init.py,sha256=HFJR_JmTHa53FAhbGusm3P1iXT6VR6V7S-YJz4pOZ1Q,15967
7
7
  claude_mpm/ticket_wrapper.py,sha256=qe5xY579t7_7fK5nyeAfHN_fr7CXdeOD3jfXEc8-7yo,828
8
- claude_mpm/agents/BASE_AGENT_TEMPLATE.md,sha256=aK9qxS1FRpm_8VaB5GI2I6YA9Wr8dGHuea_txMFe44M,5524
8
+ claude_mpm/agents/BASE_AGENT_TEMPLATE.md,sha256=wFqZssWaeCGaW04yy7eScYOlqJmsu1VhsA83s2X_yMU,9138
9
9
  claude_mpm/agents/BASE_DOCUMENTATION.md,sha256=iGub94w3IRURz2PwT0YrfNegMlEzgZ9mzeWa_WBk1rA,1504
10
10
  claude_mpm/agents/BASE_ENGINEER.md,sha256=V637uK7cZazlc3aagAhY4G0WCuGtruLKbhuAbKvteRc,14695
11
11
  claude_mpm/agents/BASE_OPS.md,sha256=azAjZTrj77IZIBgZxX2hcjPOQMznV0v6B4ZWNUhAT9g,7636
12
- claude_mpm/agents/BASE_PM.md,sha256=0n8b45wdRMb9ODLd8tiUu7fBP-UR33Bj0LS-AzHLXNE,3960
12
+ claude_mpm/agents/BASE_PM.md,sha256=KPqeGHlwVB-tYhl8dL35BTtUM1RHx-z65INDjP3H89M,6219
13
13
  claude_mpm/agents/BASE_PROMPT_ENGINEER.md,sha256=DHw7KXA6Nw7RfTyQiY06B_hH6ng2meimhgUKpQp08MM,21736
14
14
  claude_mpm/agents/BASE_QA.md,sha256=YtaYJSjWDfmFS3B6PtNvog4L54_w5K1rvpV0yqLhP20,5347
15
15
  claude_mpm/agents/BASE_RESEARCH.md,sha256=2DZhDd5XxWWtsyNTBIwvtNWBu1JpFy5R5SAZDHh0otU,1690
@@ -29,41 +29,41 @@ claude_mpm/agents/base_agent_loader.py,sha256=sc4U1NzhzQoQMTSiRYw4ppTiPiaT1wc_Eo
29
29
  claude_mpm/agents/frontmatter_validator.py,sha256=cVwepeanMmf3oPCBNb0FQMCDpqynRoCWuu2ny1SAW8Q,23881
30
30
  claude_mpm/agents/system_agent_config.py,sha256=19axX46jzvY6svETjfMaFyAYtgbQO2PRXKJ-VYnCPDk,24137
31
31
  claude_mpm/agents/templates/__init__.py,sha256=kghxAWs3KvcAA9Esk3NI7caumYgW6fiW8vRO1-MEndU,2735
32
- claude_mpm/agents/templates/agent-manager.json,sha256=Y_O1ZCLGgIfW_v-2kNBRQPYzeCvRKkHnCoZH5CVoH6c,15492
33
- claude_mpm/agents/templates/agentic-coder-optimizer.json,sha256=injWgR0aHjFh88wLnrxNiXxm6icEHeNOknL5dckj1R8,15407
34
- claude_mpm/agents/templates/api_qa.json,sha256=FxDFIDsihrw8acBugsiY9RtkNtKF0fUT20f9ox6jihU,5786
35
- claude_mpm/agents/templates/clerk-ops.json,sha256=4xB-ndC-hpOvrjJTeVLZeSrN1hTyrDf3RbaiamZQvTU,17116
36
- claude_mpm/agents/templates/code_analyzer.json,sha256=5t5a9gzKW8BDv9-GgZx2dhEJ0dPlu5YO3zuoOJIuWHQ,7417
37
- claude_mpm/agents/templates/content-agent.json,sha256=xLgZdtYTab-BM8a9L0szJap6_6tM_xxCZxOdR5wfp1I,29956
38
- claude_mpm/agents/templates/dart_engineer.json,sha256=-GSr98Ut_raIZdL73Wcv5lMK2JG4mGhzAVnPjVYIxX4,22219
39
- claude_mpm/agents/templates/data_engineer.json,sha256=FdjmqOB1cc-cDDOV7IYjOoiavnGNxXT0_7ICkRApey4,19562
40
- claude_mpm/agents/templates/documentation.json,sha256=3rk1hZmqG65CKOZ8RwVAPfQe2a4b5xu_K29RS4tGeK8,10026
41
- claude_mpm/agents/templates/engineer.json,sha256=1JDcpBkO3U5gBZBWi2d1LojUuSv390m8H84W04fXEFM,5259
42
- claude_mpm/agents/templates/gcp_ops_agent.json,sha256=ta9IvRt94xmIhyS1URAv3KnOlgeS0qzUWYg4LmmqpSk,10813
43
- claude_mpm/agents/templates/golang_engineer.json,sha256=EOWf0mTqBA4Nfd7Yn-WFR4iDi75fSVQmnYktRX2qzv4,12439
44
- claude_mpm/agents/templates/imagemagick.json,sha256=AZnOVAoin79hDqW9wbCSPtnrTTsyGAcoV1X0wdbQASk,17747
45
- claude_mpm/agents/templates/local_ops_agent.json,sha256=RJTAWTV2V3VWxurkFaJWonw647ie01Ai0_yAiW6_GKs,17090
46
- claude_mpm/agents/templates/memory_manager.json,sha256=h1DCAn5Wd8TbTzCGjqZ9I8LgGqVgPu_81TEvGyL5YqY,12733
47
- claude_mpm/agents/templates/nextjs_engineer.json,sha256=xSTsZA5GmcA1hGxsZ51OQLzLftmHzjP2D9kQP4xP8hc,13076
48
- claude_mpm/agents/templates/ops.json,sha256=z6qQyMOxuMMqL8kL8lsh0BsRa0kLgAozVsz-K6sOmkA,10912
49
- claude_mpm/agents/templates/php-engineer.json,sha256=KghgrKHNE7oaDphIUN1GzQWMAB0WW_krvQ53JHX5xd4,12403
50
- claude_mpm/agents/templates/product_owner.json,sha256=auql9BNZrur3NAoUJ74bwa-St2C-ZEAAhwM1c1sflV8,39742
51
- claude_mpm/agents/templates/project_organizer.json,sha256=-u0JqiEjx9igxFbfHWwW8RLvhtPZld6FS2j6Hys9mA8,7314
52
- claude_mpm/agents/templates/prompt-engineer.json,sha256=WWBGnJxQPbixNUyDXDxuhaKfZ9KdB8bYwk2tT8HZ4UM,37300
53
- claude_mpm/agents/templates/python_engineer.json,sha256=HbUtyCW2j8RKtpHEAKCR6vLU1VIoq3wX-4Zvdbu2HdI,33336
54
- claude_mpm/agents/templates/qa.json,sha256=B_pWrC78G3lOfxmKweOzbdG9fYOG42w6gSJTCkabDQs,10414
55
- claude_mpm/agents/templates/react_engineer.json,sha256=heW2yT65_7ku-99HCp3s8sKzdjuKNQOwRxZuKY1QI40,12898
56
- claude_mpm/agents/templates/refactoring_engineer.json,sha256=oik5Hufp8W5K2BJIBx-d765XU6PLI7YouiPaKThoLqA,11883
57
- claude_mpm/agents/templates/research.json,sha256=32YSundUnEKEhDmXIPV561rTz6fHwDKvcOtwsk0_PAc,12159
58
- claude_mpm/agents/templates/ruby-engineer.json,sha256=ZjVaPqrvkC2KhpM-MY_X_aZSvohscyb7gY1A3eI-ioI,12135
59
- claude_mpm/agents/templates/rust_engineer.json,sha256=OKlgVvSsjRR7nu9fylqKBkn3sfs6XxRSQpVMd6_YbiM,12070
60
- claude_mpm/agents/templates/security.json,sha256=a2txld126oF_9hGAxQKt859JBB25yrVoEFIMeKILRUc,24309
61
- claude_mpm/agents/templates/ticketing.json,sha256=qda7sOKnsOEtz0BGX2clDcYFl_82KVr9hZdzUET-z8k,11656
62
- claude_mpm/agents/templates/typescript_engineer.json,sha256=ULewwS8p61v7-BNtM8yNRbPGb9c6QitY15XAN37Oc6o,18250
63
- claude_mpm/agents/templates/vercel_ops_agent.json,sha256=2N8fksufcwvdFVRUkThfZllfJ7yFm1JgGbRaOaIpSD0,27048
64
- claude_mpm/agents/templates/version_control.json,sha256=WETyIYty0XSblvHJR9pXuH1NqmhRCYJ9lrxtZZWoAhs,14511
65
- claude_mpm/agents/templates/web_qa.json,sha256=hYUaug9B6ol8zBOcNSZ7eI0XZGC-SNDLNTzXHGWKCWc,27783
66
- claude_mpm/agents/templates/web_ui.json,sha256=hApFnhb8W3rU-ROJYdZnFcD1gvdVLMUb2BfqipiYCj8,35035
32
+ claude_mpm/agents/templates/agent-manager.json,sha256=qIXFUZFSpSErKydvilxzR6VTDaSAfChIJWtv0Qkziqg,15739
33
+ claude_mpm/agents/templates/agentic-coder-optimizer.json,sha256=RdEpSIAVQSPYQBnCElEA2Kp-4SxN8-8s7mgNZIbofoQ,15654
34
+ claude_mpm/agents/templates/api_qa.json,sha256=h0NzaAQs3Y0y8_YoQwIDFIxYexc2AH1o31q2zX1sRuo,6033
35
+ claude_mpm/agents/templates/clerk-ops.json,sha256=MIZhEHkvwsVE0NioC0FyxErek5XJ8cYizwn0-jfaFXg,17363
36
+ claude_mpm/agents/templates/code_analyzer.json,sha256=-LPk21n7HmTHatYvFy7yngmlpoImwMKMdBqZQHfN1kE,7664
37
+ claude_mpm/agents/templates/content-agent.json,sha256=KfE8ozTsLmQiJgKnX-6yH1bOhdHjif_qwFQLlg_y780,30203
38
+ claude_mpm/agents/templates/dart_engineer.json,sha256=toWoYgFbP-QNfgx4EhgVmcTMpTZiAuMxP08K6vMc8A0,22466
39
+ claude_mpm/agents/templates/data_engineer.json,sha256=U6X98Ze2kxTJmEL0e3x4eqTDj74hiA5ZTiPCmKS6Ch4,19809
40
+ claude_mpm/agents/templates/documentation.json,sha256=GWSOA63X38hua3pojx49IRRWcshJ4e9iFA1Kq0dv3m0,10273
41
+ claude_mpm/agents/templates/engineer.json,sha256=nLg8sJbSIVuKNgUKlS699FlzR9zhQeMmXfmPeoPaF8Q,5506
42
+ claude_mpm/agents/templates/gcp_ops_agent.json,sha256=0YCRTDHQa8fumggrZD8zESVQJIB1UIiIQPiWkYYJeI0,11060
43
+ claude_mpm/agents/templates/golang_engineer.json,sha256=6ONJV8hs257AYiHdG1ZKz7p1iCP9NpSpno5QTS_1kzw,12686
44
+ claude_mpm/agents/templates/imagemagick.json,sha256=dZRlUWgOjYsms93CnXshoO5w1o73uUJgcqUcnAMFDy0,17994
45
+ claude_mpm/agents/templates/local_ops_agent.json,sha256=pOrN6Dt8uWcefAIJ23lBI1-6RHuqTmWB3UzbHpLWGIc,17412
46
+ claude_mpm/agents/templates/memory_manager.json,sha256=dQJzrXuxpSUmS99854St14tyAlS70OKqMoGbOrQ9wi4,12980
47
+ claude_mpm/agents/templates/nextjs_engineer.json,sha256=4bXN4IkxgXvRoVyS0NPDa-cZ-LozbT3sCOD_0v47rEE,18444
48
+ claude_mpm/agents/templates/ops.json,sha256=S7TkcvaHFw7SJLYKwwm8eCvK0iMbvcHv7KTDBm7vvjc,11159
49
+ claude_mpm/agents/templates/php-engineer.json,sha256=YAQhUUEGL0LPoH2fvLsCO9R8jbt0MAV5odHdtAgJttA,12680
50
+ claude_mpm/agents/templates/product_owner.json,sha256=l-o__umM5c8pNaLGyzkRlkUtnl73h_BkaMWnMlnrPr4,40177
51
+ claude_mpm/agents/templates/project_organizer.json,sha256=_pXuLKju2Kw57ZHIqGGqL-9EeVIoFPQ-n0q-odRUGnU,7561
52
+ claude_mpm/agents/templates/prompt-engineer.json,sha256=dJKEejwDeamAgEzs3ibt46F9Cfec1CutdOB5-2HbIpQ,37601
53
+ claude_mpm/agents/templates/python_engineer.json,sha256=SeTvI1EXS-RTIJzVHX0zu0FSTNEOtnjr5ye1BkM_Iwg,43980
54
+ claude_mpm/agents/templates/qa.json,sha256=bccjpuC93a7msGei3LKsCe88UiFMQzk1W40TvEYIHOg,10661
55
+ claude_mpm/agents/templates/react_engineer.json,sha256=ihmqRAgiU81UVpw3ToSHvUigEZ7MMpoPhUbyXSmfbAo,13151
56
+ claude_mpm/agents/templates/refactoring_engineer.json,sha256=qmhZdl4aXNyQEjZ-yieSa2NfEaPPi7Z4bYUZ4ohWJiI,12130
57
+ claude_mpm/agents/templates/research.json,sha256=0i0FsMT13cQvynOXdtcWuVMrpFtV560Grr2N3mXUOvI,12406
58
+ claude_mpm/agents/templates/ruby-engineer.json,sha256=FDdEGTbXzzAwbeucXH9Ve91mCnD9fGh3J26zbrKi9qs,12412
59
+ claude_mpm/agents/templates/rust_engineer.json,sha256=0HKDrRGJxyvO5GWqby8d45Trw9IaAoJkeX5ZIkN10xE,12317
60
+ claude_mpm/agents/templates/security.json,sha256=ekwiFj-TzVDTEj70QfV5Oix1x7zAeCdl-zZ8-QGJIXg,24556
61
+ claude_mpm/agents/templates/ticketing.json,sha256=P2-rE8ABgRQ47zetLkPtqaADlntfrwqTu19TIWo8vLo,11903
62
+ claude_mpm/agents/templates/typescript_engineer.json,sha256=9olj0WtpCGnf1Vgjob0BSX3LHSH7Pg-FFdktBVAZqGw,18542
63
+ claude_mpm/agents/templates/vercel_ops_agent.json,sha256=AExlW33DGLzOxth3VJNy1q6oNa7YrZIKMwUuXTYH64g,27295
64
+ claude_mpm/agents/templates/version_control.json,sha256=O0rIhUCtbtttJMvxdV3M78JZu5mCuFMJO0cBRXiJCHk,14758
65
+ claude_mpm/agents/templates/web_qa.json,sha256=4ETk0jllw8CD0rTa-A2N98bwUBLMJNnpffgM9qGLM7A,28030
66
+ claude_mpm/agents/templates/web_ui.json,sha256=68PxF-bECG79oizDLzRxHDvd71EkekSuIrRKu-snEyg,35282
67
67
  claude_mpm/agents/templates/.claude-mpm/memories/README.md,sha256=vEiG7cPjHRZfwX2IQB-i30ArO8zJyuxMJzHh8hnVZ6A,483
68
68
  claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md,sha256=KMZSJrQi-wHOwfl2C0m3A4PpC4QuBtDolAtVybGahKc,77
69
69
  claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md,sha256=UBm4BycXtdaa-_l1VCh0alTGGOUSsnCbpKwbFuI-mUY,2219
@@ -797,9 +797,9 @@ claude_mpm/utils/subprocess_utils.py,sha256=D0izRT8anjiUb_JG72zlJR_JAw1cDkb7kalN
797
797
  claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
798
798
  claude_mpm/validation/agent_validator.py,sha256=GprtAvu80VyMXcKGsK_VhYiXWA6BjKHv7O6HKx0AB9w,20917
799
799
  claude_mpm/validation/frontmatter_validator.py,sha256=YpJlYNNYcV8u6hIOi3_jaRsDnzhbcQpjCBE6eyBKaFY,7076
800
- claude_mpm-4.8.3.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
801
- claude_mpm-4.8.3.dist-info/METADATA,sha256=Rob3oaSdY-f6qtH7rjXzCawVCHgEFmbhOP3NfAemq0A,17517
802
- claude_mpm-4.8.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
803
- claude_mpm-4.8.3.dist-info/entry_points.txt,sha256=Vlw3GNi-OtTpKSrez04iNrPmxNxYDpIWxmJCxiZ5Tx8,526
804
- claude_mpm-4.8.3.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
805
- claude_mpm-4.8.3.dist-info/RECORD,,
800
+ claude_mpm-4.8.6.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
801
+ claude_mpm-4.8.6.dist-info/METADATA,sha256=goQ3hxJxhFsrDe5DvYp6nzj7cIc01oos5TxNVe4o1NI,17517
802
+ claude_mpm-4.8.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
803
+ claude_mpm-4.8.6.dist-info/entry_points.txt,sha256=Vlw3GNi-OtTpKSrez04iNrPmxNxYDpIWxmJCxiZ5Tx8,526
804
+ claude_mpm-4.8.6.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
805
+ claude_mpm-4.8.6.dist-info/RECORD,,