mindforge-cc 10.0.2 → 10.7.0
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/.mindforge/config.json +73 -2
- package/.mindforge/engine/autonomous/cross-iteration-bridge.md +96 -0
- package/.mindforge/engine/cost-tracking/budget-enforcer.md +68 -0
- package/.mindforge/engine/cost-tracking/router.md +58 -0
- package/.mindforge/engine/cost-tracking/token-ledger.md +77 -0
- package/.mindforge/engine/council/council-protocol.md +96 -0
- package/.mindforge/engine/council/council-templates.md +85 -0
- package/.mindforge/engine/council/synthesis-engine.md +71 -0
- package/.mindforge/engine/cross-model-eval.md +74 -0
- package/.mindforge/engine/instincts/capture-engine.md +63 -0
- package/.mindforge/engine/instincts/instinct-schema.md +76 -0
- package/.mindforge/engine/instincts/promotion-engine.md +77 -0
- package/.mindforge/engine/proactive/signal-detector.md +60 -0
- package/.mindforge/engine/proactive/suggestion-engine.md +100 -0
- package/.mindforge/engine/skills/composition.md +83 -0
- package/.mindforge/engine/skills/loader.md +16 -0
- package/.mindforge/personas/agent-architect.md +57 -0
- package/.mindforge/personas/agent-evaluator.md +162 -0
- package/.mindforge/personas/agent-memory-designer.md +157 -0
- package/.mindforge/personas/agent-ops-engineer.md +120 -0
- package/.mindforge/personas/agent-orchestrator.md +112 -0
- package/.mindforge/personas/ai-economist.md +57 -0
- package/.mindforge/personas/ai-safety-engineer.md +57 -0
- package/.mindforge/personas/analytics-engineer.md +57 -0
- package/.mindforge/personas/anti-pattern-hunter.md +61 -0
- package/.mindforge/personas/api-gateway-designer.md +132 -0
- package/.mindforge/personas/auth-engineer.md +112 -0
- package/.mindforge/personas/build-engineer.md +57 -0
- package/.mindforge/personas/business-analyst.md +56 -0
- package/.mindforge/personas/cache-architect.md +100 -0
- package/.mindforge/personas/causal-scientist.md +57 -0
- package/.mindforge/personas/cdn-architect.md +118 -0
- package/.mindforge/personas/change-agent.md +104 -0
- package/.mindforge/personas/code-narrator.md +52 -0
- package/.mindforge/personas/codegen-specialist.md +68 -0
- package/.mindforge/personas/communication-architect.md +102 -0
- package/.mindforge/personas/compliance-engineer.md +96 -0
- package/.mindforge/personas/consensus-engineer.md +116 -0
- package/.mindforge/personas/contract-tester.md +60 -192
- package/.mindforge/personas/cost-optimizer.md +71 -0
- package/.mindforge/personas/council-architect.md +66 -0
- package/.mindforge/personas/council-critic.md +67 -0
- package/.mindforge/personas/council-pragmatist.md +71 -0
- package/.mindforge/personas/council-skeptic.md +73 -0
- package/.mindforge/personas/data-architect.md +108 -0
- package/.mindforge/personas/data-mesh-architect.md +57 -0
- package/.mindforge/personas/data-pipeline-architect.md +120 -0
- package/.mindforge/personas/de-sloppifier.md +60 -0
- package/.mindforge/personas/debt-manager.md +66 -0
- package/.mindforge/personas/decision-architect.md +82 -51
- package/.mindforge/personas/deployment-captain.md +74 -0
- package/.mindforge/personas/design-system-lead.md +112 -0
- package/.mindforge/personas/dmux-orchestrator.md +75 -0
- package/.mindforge/personas/doc-auditor.md +84 -0
- package/.mindforge/personas/dx-engineer.md +96 -0
- package/.mindforge/personas/ecommerce-engineer.md +57 -0
- package/.mindforge/personas/edge-engineer.md +94 -0
- package/.mindforge/personas/edtech-architect.md +106 -0
- package/.mindforge/personas/embedding-architect.md +57 -0
- package/.mindforge/personas/environment-engineer.md +57 -0
- package/.mindforge/personas/eval-judge.md +55 -0
- package/.mindforge/personas/event-architect.md +102 -0
- package/.mindforge/personas/experiment-designer.md +138 -0
- package/.mindforge/personas/feature-store-engineer.md +57 -0
- package/.mindforge/personas/finops-analyst.md +66 -0
- package/.mindforge/personas/fintech-architect.md +57 -0
- package/.mindforge/personas/flutter-engineer.md +104 -0
- package/.mindforge/personas/gaming-engineer.md +57 -0
- package/.mindforge/personas/graphql-designer.md +73 -0
- package/.mindforge/personas/healthcare-engineer.md +57 -0
- package/.mindforge/personas/hiring-strategist.md +105 -0
- package/.mindforge/personas/hitl-architect.md +165 -0
- package/.mindforge/personas/i18n-architect.md +69 -0
- package/.mindforge/personas/instinct-curator.md +83 -0
- package/.mindforge/personas/iot-architect.md +105 -0
- package/.mindforge/personas/knowledge-curator.md +139 -0
- package/.mindforge/personas/knowledge-engineer.md +57 -0
- package/.mindforge/personas/lakehouse-architect.md +57 -0
- package/.mindforge/personas/llm-orchestrator.md +57 -0
- package/.mindforge/personas/logistics-architect.md +106 -0
- package/.mindforge/personas/market-analyst.md +53 -0
- package/.mindforge/personas/marketplace-engineer.md +105 -0
- package/.mindforge/personas/mcp-designer.md +54 -0
- package/.mindforge/personas/meeting-designer.md +104 -0
- package/.mindforge/personas/mentorship-lead.md +106 -0
- package/.mindforge/personas/migration-architect.md +57 -0
- package/.mindforge/personas/ml-ops-engineer.md +101 -0
- package/.mindforge/personas/mobile-architect.md +105 -0
- package/.mindforge/personas/mobile-security-engineer.md +106 -0
- package/.mindforge/personas/multi-model-bridge.md +86 -0
- package/.mindforge/personas/multi-tenancy-architect.md +71 -0
- package/.mindforge/personas/multimodal-engineer.md +57 -0
- package/.mindforge/personas/offline-specialist.md +105 -0
- package/.mindforge/personas/onboarding-navigator.md +63 -0
- package/.mindforge/personas/payments-engineer.md +135 -0
- package/.mindforge/personas/pipeline-engineer.md +115 -0
- package/.mindforge/personas/platform-engineer.md +97 -0
- package/.mindforge/personas/platform-lead.md +57 -0
- package/.mindforge/personas/privacy-engineer.md +57 -0
- package/.mindforge/personas/product-owner.md +56 -0
- package/.mindforge/personas/productivity-analyst.md +57 -0
- package/.mindforge/personas/prompt-architect.md +101 -0
- package/.mindforge/personas/proofreader.md +53 -0
- package/.mindforge/personas/pwa-architect.md +105 -0
- package/.mindforge/personas/quality-scorer.md +63 -0
- package/.mindforge/personas/react-native-engineer.md +106 -0
- package/.mindforge/personas/resilience-engineer.md +69 -0
- package/.mindforge/personas/rfc-architect.md +64 -0
- package/.mindforge/personas/saga-orchestrator.md +80 -0
- package/.mindforge/personas/secrets-engineer.md +57 -0
- package/.mindforge/personas/skill-smith.md +79 -0
- package/.mindforge/personas/sre-lead.md +107 -0
- package/.mindforge/personas/stream-engineer.md +57 -0
- package/.mindforge/personas/streaming-engineer.md +64 -0
- package/.mindforge/personas/swarm-templates.json +695 -38
- package/.mindforge/personas/system-designer.md +57 -0
- package/.mindforge/personas/team-coach.md +120 -0
- package/.mindforge/personas/tech-lead-coach.md +103 -0
- package/.mindforge/personas/technical-writer-lead.md +111 -0
- package/.mindforge/personas/threat-modeler.md +82 -0
- package/.mindforge/personas/vibe-checker.md +75 -0
- package/.mindforge/personas/worktree-manager.md +56 -0
- package/.mindforge/personas/zero-trust-engineer.md +113 -0
- package/.mindforge/skills/a11y-testing/SKILL.md +143 -0
- package/.mindforge/skills/agent-evaluation-framework/SKILL.md +227 -0
- package/.mindforge/skills/agent-introspection-debugging/SKILL.md +88 -0
- package/.mindforge/skills/agent-loops/SKILL.md +84 -0
- package/.mindforge/skills/agent-memory-design/SKILL.md +199 -0
- package/.mindforge/skills/agent-orchestration-patterns/SKILL.md +129 -0
- package/.mindforge/skills/agent-tool-selection/SKILL.md +204 -0
- package/.mindforge/skills/ai-agent-deployment/SKILL.md +176 -0
- package/.mindforge/skills/ai-cost-management/SKILL.md +57 -0
- package/.mindforge/skills/ai-safety-alignment/SKILL.md +53 -0
- package/.mindforge/skills/analytics-instrumentation/SKILL.md +172 -0
- package/.mindforge/skills/api-gateway-patterns/SKILL.md +177 -0
- package/.mindforge/skills/api-marketplace/SKILL.md +56 -0
- package/.mindforge/skills/api-versioning/SKILL.md +100 -0
- package/.mindforge/skills/app-store-deployment/SKILL.md +44 -0
- package/.mindforge/skills/architecture-tradeoff-analysis/SKILL.md +97 -0
- package/.mindforge/skills/audit-logging/SKILL.md +140 -0
- package/.mindforge/skills/auth-patterns/SKILL.md +148 -0
- package/.mindforge/skills/autonomous-agent-harness/SKILL.md +218 -0
- package/.mindforge/skills/autonomous-agents/SKILL.md +59 -0
- package/.mindforge/skills/autonomous-loops/SKILL.md +105 -0
- package/.mindforge/skills/build-system-optimization/SKILL.md +54 -0
- package/.mindforge/skills/build-vs-buy/SKILL.md +80 -0
- package/.mindforge/skills/bundle-optimization/SKILL.md +174 -0
- package/.mindforge/skills/business-analyst/SKILL.md +82 -0
- package/.mindforge/skills/caching-strategies/SKILL.md +132 -0
- package/.mindforge/skills/capacity-planning/SKILL.md +96 -0
- package/.mindforge/skills/causal-inference/SKILL.md +42 -0
- package/.mindforge/skills/cdn-optimization/SKILL.md +212 -0
- package/.mindforge/skills/change-management/SKILL.md +106 -0
- package/.mindforge/skills/chaos-engineering/SKILL.md +99 -0
- package/.mindforge/skills/ci-cd-pipeline/SKILL.md +118 -0
- package/.mindforge/skills/cli-design/SKILL.md +118 -0
- package/.mindforge/skills/code-generation-patterns/SKILL.md +92 -0
- package/.mindforge/skills/code-review-methodology/SKILL.md +180 -0
- package/.mindforge/skills/code-tour/SKILL.md +145 -0
- package/.mindforge/skills/codebase-onboarding/SKILL.md +95 -0
- package/.mindforge/skills/compliance-as-code/SKILL.md +195 -0
- package/.mindforge/skills/conflict-resolution/SKILL.md +87 -0
- package/.mindforge/skills/connection-pooling/SKILL.md +151 -0
- package/.mindforge/skills/container-security/SKILL.md +151 -0
- package/.mindforge/skills/context-engineering/SKILL.md +114 -0
- package/.mindforge/skills/continuous-learning/SKILL.md +84 -0
- package/.mindforge/skills/contract-testing/SKILL.md +85 -0
- package/.mindforge/skills/cost-aware-routing/SKILL.md +83 -0
- package/.mindforge/skills/cost-estimation/SKILL.md +82 -0
- package/.mindforge/skills/council/SKILL.md +68 -0
- package/.mindforge/skills/cqrs-event-sourcing/SKILL.md +95 -0
- package/.mindforge/skills/cross-platform-testing/SKILL.md +43 -0
- package/.mindforge/skills/data-governance/SKILL.md +42 -0
- package/.mindforge/skills/data-lakehouse/SKILL.md +42 -0
- package/.mindforge/skills/data-mesh/SKILL.md +42 -0
- package/.mindforge/skills/data-modeling/SKILL.md +107 -0
- package/.mindforge/skills/data-pipeline-design/SKILL.md +171 -0
- package/.mindforge/skills/data-privacy-engineering/SKILL.md +42 -0
- package/.mindforge/skills/database-performance/SKILL.md +174 -0
- package/.mindforge/skills/database-sharding-advanced/SKILL.md +206 -0
- package/.mindforge/skills/de-sloppify/SKILL.md +120 -0
- package/.mindforge/skills/defense-in-depth/SKILL.md +84 -0
- package/.mindforge/skills/delegation-patterns/SKILL.md +123 -0
- package/.mindforge/skills/dependency-management/SKILL.md +94 -0
- package/.mindforge/skills/deployment-workflow/SKILL.md +135 -0
- package/.mindforge/skills/design-system/SKILL.md +113 -0
- package/.mindforge/skills/developer-onboarding/SKILL.md +99 -0
- package/.mindforge/skills/developer-productivity-metrics/SKILL.md +59 -0
- package/.mindforge/skills/distributed-consensus/SKILL.md +141 -0
- package/.mindforge/skills/dmux-workflows/SKILL.md +141 -0
- package/.mindforge/skills/dns-architecture/SKILL.md +167 -0
- package/.mindforge/skills/doc-health-audit/SKILL.md +102 -0
- package/.mindforge/skills/ecommerce-architecture/SKILL.md +41 -0
- package/.mindforge/skills/edge-computing/SKILL.md +91 -0
- package/.mindforge/skills/edtech-platform/SKILL.md +41 -0
- package/.mindforge/skills/email-deliverability/SKILL.md +177 -0
- package/.mindforge/skills/embedding-systems/SKILL.md +55 -0
- package/.mindforge/skills/environment-management/SKILL.md +54 -0
- package/.mindforge/skills/error-handling-architecture/SKILL.md +118 -0
- package/.mindforge/skills/estimation-techniques/SKILL.md +113 -0
- package/.mindforge/skills/eval-harness/SKILL.md +180 -0
- package/.mindforge/skills/event-driven-architecture/SKILL.md +162 -0
- package/.mindforge/skills/experiment-design/SKILL.md +139 -0
- package/.mindforge/skills/experiment-platform/SKILL.md +43 -0
- package/.mindforge/skills/feature-engineering/SKILL.md +42 -0
- package/.mindforge/skills/feature-flag-management/SKILL.md +183 -0
- package/.mindforge/skills/fine-tuning-workflow/SKILL.md +189 -0
- package/.mindforge/skills/fintech-patterns/SKILL.md +41 -0
- package/.mindforge/skills/flutter-architecture/SKILL.md +42 -0
- package/.mindforge/skills/gaming-backend/SKILL.md +41 -0
- package/.mindforge/skills/git-workflow-design/SKILL.md +129 -0
- package/.mindforge/skills/graceful-degradation/SKILL.md +95 -0
- package/.mindforge/skills/graphql-patterns/SKILL.md +243 -0
- package/.mindforge/skills/guardrails-and-safety/SKILL.md +137 -0
- package/.mindforge/skills/healthcare-systems/SKILL.md +40 -0
- package/.mindforge/skills/hiring-engineering/SKILL.md +119 -0
- package/.mindforge/skills/human-in-the-loop-design/SKILL.md +234 -0
- package/.mindforge/skills/i18n-architecture/SKILL.md +147 -0
- package/.mindforge/skills/idempotency-patterns/SKILL.md +84 -0
- package/.mindforge/skills/incident-communication/SKILL.md +96 -0
- package/.mindforge/skills/incident-management/SKILL.md +97 -0
- package/.mindforge/skills/infrastructure-as-code/SKILL.md +98 -0
- package/.mindforge/skills/instinct-clustering/SKILL.md +190 -0
- package/.mindforge/skills/internal-developer-platform/SKILL.md +51 -0
- package/.mindforge/skills/iot-platform/SKILL.md +41 -0
- package/.mindforge/skills/k8s-deployment/SKILL.md +358 -0
- package/.mindforge/skills/knowledge-graphs/SKILL.md +56 -0
- package/.mindforge/skills/knowledge-sharing-systems/SKILL.md +112 -0
- package/.mindforge/skills/llm-cost-optimization/SKILL.md +198 -0
- package/.mindforge/skills/llm-orchestration/SKILL.md +56 -0
- package/.mindforge/skills/load-testing/SKILL.md +84 -0
- package/.mindforge/skills/logistics-optimization/SKILL.md +40 -0
- package/.mindforge/skills/market-researcher/SKILL.md +99 -0
- package/.mindforge/skills/marketplace-trust/SKILL.md +40 -0
- package/.mindforge/skills/mcp-server-patterns/SKILL.md +264 -0
- package/.mindforge/skills/media-streaming/SKILL.md +41 -0
- package/.mindforge/skills/meeting-architecture/SKILL.md +146 -0
- package/.mindforge/skills/mentoring-patterns/SKILL.md +77 -0
- package/.mindforge/skills/microservices-patterns/SKILL.md +83 -0
- package/.mindforge/skills/migration-platform/SKILL.md +61 -0
- package/.mindforge/skills/migration-strategies/SKILL.md +129 -0
- package/.mindforge/skills/ml-feature-store/SKILL.md +56 -0
- package/.mindforge/skills/ml-monitoring/SKILL.md +42 -0
- package/.mindforge/skills/mobile-performance/SKILL.md +44 -0
- package/.mindforge/skills/mobile-security/SKILL.md +45 -0
- package/.mindforge/skills/model-evaluation/SKILL.md +53 -0
- package/.mindforge/skills/monorepo-management/SKILL.md +100 -0
- package/.mindforge/skills/multi-llm-consult/SKILL.md +75 -0
- package/.mindforge/skills/multi-tenancy-patterns/SKILL.md +145 -0
- package/.mindforge/skills/multi-turn-conversation-design/SKILL.md +206 -0
- package/.mindforge/skills/multimodal-ai/SKILL.md +51 -0
- package/.mindforge/skills/mutation-testing/SKILL.md +97 -0
- package/.mindforge/skills/notification-system-design/SKILL.md +168 -0
- package/.mindforge/skills/observability-stack/SKILL.md +136 -0
- package/.mindforge/skills/offline-first-design/SKILL.md +43 -0
- package/.mindforge/skills/on-call-design/SKILL.md +111 -0
- package/.mindforge/skills/pagination-patterns/SKILL.md +230 -0
- package/.mindforge/skills/payment-integration/SKILL.md +176 -0
- package/.mindforge/skills/performance-reviews/SKILL.md +140 -0
- package/.mindforge/skills/platform-observability/SKILL.md +58 -0
- package/.mindforge/skills/platform-reliability/SKILL.md +52 -0
- package/.mindforge/skills/post-incident-learning/SKILL.md +96 -0
- package/.mindforge/skills/product-manager/SKILL.md +104 -0
- package/.mindforge/skills/progressive-web-app/SKILL.md +44 -0
- package/.mindforge/skills/prompt-engineering/SKILL.md +94 -0
- package/.mindforge/skills/proofreader/SKILL.md +158 -0
- package/.mindforge/skills/push-notification-architecture/SKILL.md +45 -0
- package/.mindforge/skills/python-performance/SKILL.md +183 -0
- package/.mindforge/skills/quality-audit/SKILL.md +171 -0
- package/.mindforge/skills/queue-design/SKILL.md +85 -0
- package/.mindforge/skills/rag-architecture/SKILL.md +176 -0
- package/.mindforge/skills/rate-limiting-design/SKILL.md +94 -0
- package/.mindforge/skills/react-native-patterns/SKILL.md +42 -0
- package/.mindforge/skills/react-performance/SKILL.md +229 -0
- package/.mindforge/skills/real-time-analytics/SKILL.md +42 -0
- package/.mindforge/skills/real-time-sync/SKILL.md +83 -0
- package/.mindforge/skills/responsive-native/SKILL.md +44 -0
- package/.mindforge/skills/responsive-patterns/SKILL.md +141 -0
- package/.mindforge/skills/rfc-pipeline/SKILL.md +114 -0
- package/.mindforge/skills/saas-multi-tenant/SKILL.md +41 -0
- package/.mindforge/skills/santa-method/SKILL.md +134 -0
- package/.mindforge/skills/search-implementation/SKILL.md +98 -0
- package/.mindforge/skills/secrets-platform/SKILL.md +56 -0
- package/.mindforge/skills/secrets-rotation/SKILL.md +173 -0
- package/.mindforge/skills/self-serve-infrastructure/SKILL.md +51 -0
- package/.mindforge/skills/serverless-patterns/SKILL.md +119 -0
- package/.mindforge/skills/skill-creator-meta/SKILL.md +146 -0
- package/.mindforge/skills/sprint-retrospective-facilitation/SKILL.md +112 -0
- package/.mindforge/skills/stakeholder-communication/SKILL.md +85 -0
- package/.mindforge/skills/state-management/SKILL.md +104 -0
- package/.mindforge/skills/stream-processing/SKILL.md +43 -0
- package/.mindforge/skills/streaming-architecture/SKILL.md +81 -0
- package/.mindforge/skills/supply-chain-security/SKILL.md +145 -0
- package/.mindforge/skills/synthetic-data-generation/SKILL.md +52 -0
- package/.mindforge/skills/system-design/SKILL.md +88 -0
- package/.mindforge/skills/team-topology-design/SKILL.md +107 -0
- package/.mindforge/skills/technical-debt-management/SKILL.md +86 -0
- package/.mindforge/skills/technical-interview-design/SKILL.md +98 -0
- package/.mindforge/skills/technical-leadership/SKILL.md +75 -0
- package/.mindforge/skills/technical-writing/SKILL.md +237 -0
- package/.mindforge/skills/technology-radar/SKILL.md +88 -0
- package/.mindforge/skills/testing-anti-patterns/SKILL.md +288 -0
- package/.mindforge/skills/threat-modeling/SKILL.md +109 -0
- package/.mindforge/skills/tool-design/SKILL.md +138 -0
- package/.mindforge/skills/typescript-advanced/SKILL.md +198 -0
- package/.mindforge/skills/using-git-worktrees/SKILL.md +139 -0
- package/.mindforge/skills/verification-loop/SKILL.md +97 -0
- package/.mindforge/skills/vibe-security/SKILL.md +165 -0
- package/.mindforge/skills/visual-regression-testing/SKILL.md +97 -0
- package/.mindforge/skills/websocket-patterns/SKILL.md +203 -0
- package/.mindforge/skills/writing-plans/SKILL.md +170 -0
- package/.mindforge/skills/writing-skills/SKILL.md +216 -0
- package/.mindforge/skills/zero-trust-architecture/SKILL.md +166 -0
- package/CHANGELOG.md +195 -0
- package/MINDFORGE.md +4 -4
- package/README.md +2 -2
- package/RELEASENOTES.md +66 -0
- package/bin/installer-core.js +1 -1
- package/bin/wizard/theme.js +2 -2
- package/docs/commands-reference.md +18 -1
- package/package.json +2 -2
- package/.mindforge/personas/data-privacy-engineer.md +0 -187
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mcp-server-patterns
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
min_mindforge_version: 10.0.6
|
|
5
|
+
status: stable
|
|
6
|
+
triggers: mcp server, model context protocol, mcp tools, mcp resources, mcp prompts, stdio transport, streamable http, mcp registration, mcp handler, mcp schema, build mcp, mcp patterns
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Skill — MCP Server Patterns
|
|
10
|
+
|
|
11
|
+
## When this skill activates
|
|
12
|
+
|
|
13
|
+
When designing, building, or debugging Model Context Protocol (MCP) servers that
|
|
14
|
+
expose tools, resources, or prompts to AI agents. Use when implementing the server
|
|
15
|
+
side of MCP — registering capabilities, handling requests, managing transport, and
|
|
16
|
+
following protocol conventions.
|
|
17
|
+
|
|
18
|
+
MCP is the standard protocol for extending AI agents with external capabilities.
|
|
19
|
+
A well-built MCP server is the difference between an agent that can only talk and
|
|
20
|
+
one that can act.
|
|
21
|
+
|
|
22
|
+
## Mandatory actions when this skill is active
|
|
23
|
+
|
|
24
|
+
### Before building the MCP server
|
|
25
|
+
|
|
26
|
+
1. **Identify capability types needed:**
|
|
27
|
+
|
|
28
|
+
| Type | Purpose | Agent interaction | Example |
|
|
29
|
+
|------|---------|-------------------|---------|
|
|
30
|
+
| **Tools** | Actions agents invoke | Agent calls with args, gets result | `create-file`, `run-query`, `send-email` |
|
|
31
|
+
| **Resources** | Data agents read | Agent requests by URI, gets content | `file://`, `db://schema`, `config://env` |
|
|
32
|
+
| **Prompts** | Reusable templates | Agent fills arguments, gets formatted prompt | `code-review`, `summarize`, `translate` |
|
|
33
|
+
|
|
34
|
+
2. **Choose transport:**
|
|
35
|
+
|
|
36
|
+
| Transport | Use when | Characteristics |
|
|
37
|
+
|-----------|----------|-----------------|
|
|
38
|
+
| **stdio** | Local tools, CLI integration, dev/test | Process-based, simple, synchronous feel |
|
|
39
|
+
| **Streamable HTTP** | Remote servers, multi-client, production | Scalable, stateless, HTTP-based |
|
|
40
|
+
|
|
41
|
+
3. **Design the schema contract:**
|
|
42
|
+
- Every tool must have a typed input schema (Zod for TypeScript, Pydantic for Python)
|
|
43
|
+
- Every resource must have a URI pattern and content type
|
|
44
|
+
- Every prompt must declare its arguments with descriptions
|
|
45
|
+
- Write the schema FIRST, implement SECOND (contract-first design)
|
|
46
|
+
|
|
47
|
+
4. **Plan error handling strategy:**
|
|
48
|
+
- Tool errors: return structured error with code and message (never throw unhandled)
|
|
49
|
+
- Resource not found: return appropriate MCP error code
|
|
50
|
+
- Validation failures: return detailed field-level errors
|
|
51
|
+
- Never expose internal stack traces to the client
|
|
52
|
+
|
|
53
|
+
### During MCP server implementation
|
|
54
|
+
|
|
55
|
+
**Project structure (TypeScript/Node.js):**
|
|
56
|
+
```
|
|
57
|
+
mcp-server-[name]/
|
|
58
|
+
src/
|
|
59
|
+
index.ts # Server initialization and transport setup
|
|
60
|
+
tools/
|
|
61
|
+
index.ts # Tool registration aggregator
|
|
62
|
+
[tool-name].ts # One file per tool
|
|
63
|
+
resources/
|
|
64
|
+
index.ts # Resource registration aggregator
|
|
65
|
+
[resource-name].ts # One file per resource
|
|
66
|
+
prompts/
|
|
67
|
+
index.ts # Prompt registration aggregator
|
|
68
|
+
[prompt-name].ts # One file per prompt
|
|
69
|
+
lib/
|
|
70
|
+
errors.ts # Custom MCP error classes
|
|
71
|
+
schemas.ts # Shared Zod schemas
|
|
72
|
+
tests/
|
|
73
|
+
tools/
|
|
74
|
+
[tool-name].test.ts
|
|
75
|
+
integration/
|
|
76
|
+
stdio.test.ts # Full server integration via stdio
|
|
77
|
+
package.json
|
|
78
|
+
tsconfig.json
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Tool registration pattern:**
|
|
82
|
+
```typescript
|
|
83
|
+
import { z } from "zod";
|
|
84
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
85
|
+
|
|
86
|
+
const InputSchema = z.object({
|
|
87
|
+
filePath: z.string().describe("Absolute path to the target file"),
|
|
88
|
+
content: z.string().describe("Content to write to the file"),
|
|
89
|
+
overwrite: z.boolean().default(false).describe("Whether to overwrite existing files"),
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
export function registerCreateFileTool(server: McpServer) {
|
|
93
|
+
server.tool(
|
|
94
|
+
"create-file",
|
|
95
|
+
"Create a new file with the specified content at the given path",
|
|
96
|
+
InputSchema.shape,
|
|
97
|
+
async ({ filePath, content, overwrite }) => {
|
|
98
|
+
// Validate path is within allowed directories
|
|
99
|
+
validatePath(filePath);
|
|
100
|
+
|
|
101
|
+
// Check existing file
|
|
102
|
+
if (!overwrite && await fileExists(filePath)) {
|
|
103
|
+
return {
|
|
104
|
+
content: [{ type: "text", text: `Error: File already exists at ${filePath}. Use overwrite: true to replace.` }],
|
|
105
|
+
isError: true,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
await writeFile(filePath, content);
|
|
110
|
+
|
|
111
|
+
return {
|
|
112
|
+
content: [{ type: "text", text: `Successfully created file at ${filePath} (${content.length} bytes)` }],
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Resource registration pattern:**
|
|
120
|
+
```typescript
|
|
121
|
+
export function registerFileResource(server: McpServer) {
|
|
122
|
+
// Static resource
|
|
123
|
+
server.resource(
|
|
124
|
+
"project-config",
|
|
125
|
+
"config://project",
|
|
126
|
+
"The project's configuration file",
|
|
127
|
+
async (uri) => ({
|
|
128
|
+
contents: [{
|
|
129
|
+
uri: uri.href,
|
|
130
|
+
mimeType: "application/json",
|
|
131
|
+
text: await readFile("./config.json", "utf-8"),
|
|
132
|
+
}],
|
|
133
|
+
})
|
|
134
|
+
);
|
|
135
|
+
|
|
136
|
+
// Dynamic resource with URI template
|
|
137
|
+
server.resource(
|
|
138
|
+
"source-file",
|
|
139
|
+
new ResourceTemplate("file:///{path}", { list: undefined }),
|
|
140
|
+
"Read a source file by path",
|
|
141
|
+
async (uri, { path }) => ({
|
|
142
|
+
contents: [{
|
|
143
|
+
uri: uri.href,
|
|
144
|
+
mimeType: getMimeType(path),
|
|
145
|
+
text: await readFile(path, "utf-8"),
|
|
146
|
+
}],
|
|
147
|
+
})
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Prompt registration pattern:**
|
|
153
|
+
```typescript
|
|
154
|
+
export function registerCodeReviewPrompt(server: McpServer) {
|
|
155
|
+
server.prompt(
|
|
156
|
+
"code-review",
|
|
157
|
+
"Generate a structured code review for the given diff",
|
|
158
|
+
{
|
|
159
|
+
diff: z.string().describe("The git diff to review"),
|
|
160
|
+
severity: z.enum(["quick", "thorough", "security"]).default("thorough")
|
|
161
|
+
.describe("Review depth level"),
|
|
162
|
+
},
|
|
163
|
+
({ diff, severity }) => ({
|
|
164
|
+
messages: [{
|
|
165
|
+
role: "user",
|
|
166
|
+
content: {
|
|
167
|
+
type: "text",
|
|
168
|
+
text: `Review this code diff at ${severity} level:\n\n${diff}\n\nProvide findings as: [SEVERITY] file:line - description`,
|
|
169
|
+
},
|
|
170
|
+
}],
|
|
171
|
+
})
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**Transport setup:**
|
|
177
|
+
```typescript
|
|
178
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
179
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
180
|
+
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
181
|
+
|
|
182
|
+
const server = new McpServer({
|
|
183
|
+
name: "my-mcp-server",
|
|
184
|
+
version: "1.0.0",
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
// Register all capabilities
|
|
188
|
+
registerTools(server);
|
|
189
|
+
registerResources(server);
|
|
190
|
+
registerPrompts(server);
|
|
191
|
+
|
|
192
|
+
// stdio transport (local/CLI)
|
|
193
|
+
const transport = new StdioServerTransport();
|
|
194
|
+
await server.connect(transport);
|
|
195
|
+
|
|
196
|
+
// OR: Streamable HTTP transport (remote/production)
|
|
197
|
+
// const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined });
|
|
198
|
+
// app.post("/mcp", async (req, res) => { await transport.handleRequest(req, res); });
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**Error handling (mandatory):**
|
|
202
|
+
```typescript
|
|
203
|
+
import { McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js";
|
|
204
|
+
|
|
205
|
+
// In tool handlers:
|
|
206
|
+
if (!isValid(input)) {
|
|
207
|
+
throw new McpError(
|
|
208
|
+
ErrorCode.InvalidParams,
|
|
209
|
+
`Invalid input: ${validationErrors.join(", ")}`
|
|
210
|
+
);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// For "soft" errors (operation failed but not a protocol error):
|
|
214
|
+
return {
|
|
215
|
+
content: [{ type: "text", text: `Operation failed: ${reason}` }],
|
|
216
|
+
isError: true,
|
|
217
|
+
};
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**Security considerations:**
|
|
221
|
+
- Validate all file paths against an allowlist of directories
|
|
222
|
+
- Sanitize inputs that will be used in shell commands or SQL
|
|
223
|
+
- Rate limit tool invocations if exposed over HTTP
|
|
224
|
+
- Log all tool invocations for audit trail
|
|
225
|
+
- Never expose secrets through resource responses
|
|
226
|
+
- Use environment variables for sensitive configuration
|
|
227
|
+
|
|
228
|
+
### After MCP server implementation
|
|
229
|
+
|
|
230
|
+
1. **Testing protocol:**
|
|
231
|
+
- Unit test each tool handler with valid inputs, invalid inputs, and edge cases
|
|
232
|
+
- Integration test via stdio transport (spawn server, send requests, verify responses)
|
|
233
|
+
- Use MCP Inspector for interactive testing during development:
|
|
234
|
+
```bash
|
|
235
|
+
npx @modelcontextprotocol/inspector node dist/index.js
|
|
236
|
+
```
|
|
237
|
+
- Test error paths: malformed requests, missing required fields, timeout scenarios
|
|
238
|
+
- Verify resource URIs resolve correctly under all template patterns
|
|
239
|
+
|
|
240
|
+
2. **Documentation requirements:**
|
|
241
|
+
- README with: what the server does, prerequisites, installation, configuration
|
|
242
|
+
- Tool catalog: name, description, input schema, example usage, error cases
|
|
243
|
+
- Resource catalog: URI patterns, content types, access patterns
|
|
244
|
+
- Configuration: all environment variables with types and defaults
|
|
245
|
+
|
|
246
|
+
3. **Deployment checklist:**
|
|
247
|
+
- `package.json` has correct `bin` entry for stdio servers
|
|
248
|
+
- `"type": "module"` set if using ESM
|
|
249
|
+
- All dependencies are production dependencies (not devDependencies)
|
|
250
|
+
- Server starts cleanly with no warnings or unhandled rejections
|
|
251
|
+
- Graceful shutdown on SIGTERM/SIGINT
|
|
252
|
+
|
|
253
|
+
## Self-check before task completion
|
|
254
|
+
|
|
255
|
+
Before marking an MCP server task done:
|
|
256
|
+
|
|
257
|
+
- [ ] Did I define typed input schemas for every tool (Zod/Pydantic)?
|
|
258
|
+
- [ ] Did I implement proper error handling (McpError with codes, isError for soft failures)?
|
|
259
|
+
- [ ] Did I validate and sanitize all inputs (especially file paths and shell args)?
|
|
260
|
+
- [ ] Did I write integration tests using stdio transport?
|
|
261
|
+
- [ ] Did I test with MCP Inspector to verify the server works interactively?
|
|
262
|
+
- [ ] Did I document all tools, resources, and prompts with examples?
|
|
263
|
+
- [ ] Did I choose the appropriate transport for the deployment context?
|
|
264
|
+
- [ ] Does the server start cleanly and shut down gracefully?
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: media-streaming
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
min_mindforge_version: 10.2.0
|
|
5
|
+
status: stable
|
|
6
|
+
triggers: media streaming architecture, video transcoding pipeline, adaptive bitrate streaming, DRM implementation, live streaming system, audio streaming, media delivery network, HLS DASH streaming, media processing pipeline, content protection, video on demand, streaming infrastructure
|
|
7
|
+
compose: cdn-optimization
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Skill — Media Streaming
|
|
11
|
+
|
|
12
|
+
## When this skill activates
|
|
13
|
+
This skill activates when building video/audio streaming platforms, transcoding pipelines, adaptive bitrate delivery (HLS/DASH), DRM content protection, live streaming systems, CDN integration, or video-on-demand (VOD) architectures.
|
|
14
|
+
|
|
15
|
+
## Mandatory actions when this skill is active
|
|
16
|
+
|
|
17
|
+
### Before writing any code
|
|
18
|
+
1. Design transcoding pipeline: ingest source video (MP4, MOV, AVI) → extract metadata (resolution, bitrate, codec, duration) → transcode to multiple renditions (4K/1080p/720p/480p/360p), audio tracks (AAC 128kbps stereo), generate HLS/DASH manifests (.m3u8/.mpd), output to object storage (S3), with job queue (SQS) and status webhooks
|
|
19
|
+
2. Model adaptive bitrate delivery: client requests master playlist (m3u8) → server returns variant streams (bitrate ladder: 8 Mbps, 5 Mbps, 2.5 Mbps, 1 Mbps, 500 kbps) → client measures bandwidth → switches to appropriate quality → seamless transition without buffering
|
|
20
|
+
3. Map DRM content protection workflow: encrypt video segments (AES-128 or CBCS), generate license keys (Widevine, FairPlay, PlayReady), store keys in key server, client requests license → key server validates entitlement (subscription active, geo-restrictions) → returns decryption key → client decrypts and plays
|
|
21
|
+
|
|
22
|
+
### During implementation
|
|
23
|
+
- Implement transcoding with FFmpeg or cloud services (AWS MediaConvert, Azure Media Services): configure encoding ladder (GOP size 2s, H.264 High profile, AAC audio), generate thumbnails (every 10s), extract VTT subtitles, optimize for web (moov atom at start for MP4), enable hardware acceleration (GPU encoding for faster processing)
|
|
24
|
+
- Build HLS/DASH streaming with segmentation: split video into 6-second segments (TS for HLS, MP4 for DASH), generate manifest with variant streams (EXT-X-STREAM-INF for bitrate/resolution), enable discontinuity tags for ad insertion, support live DVR (sliding window of last 2 hours)
|
|
25
|
+
- Design CDN delivery with edge caching: upload to origin (S3 bucket), configure CloudFront distribution, set TTL policies (video segments: 7 days, manifests: 60s for VOD, 5s for live), enable signed URLs for protected content (expire after 2 hours), use geo-restriction for licensing compliance
|
|
26
|
+
- Implement DRM integration: encrypt video during transcoding (specify key ID), integrate with key server (AWS SPEKE, Axinom, BuyDRM), client-side DRM initialization (Shaka Player for DASH, hls.js with EME for HLS), handle license renewal (for long-form content >2 hours), support offline downloads with persistent licenses
|
|
27
|
+
- Build player analytics: track playback events (video_start, video_pause, video_complete, error, buffering), measure quality metrics (startup time, rebuffering ratio, bitrate distribution), aggregate by user/video/device, identify issues (high rebuffering on specific ISP, low bitrate selection on mobile)
|
|
28
|
+
|
|
29
|
+
### After implementation
|
|
30
|
+
- Validate streaming quality: measure startup latency (<2s for 90th percentile), rebuffering ratio (<1% of playback time), bitrate adaptation responsiveness (switch within 10s of bandwidth change), A/V sync (<200ms drift), and seek accuracy (land within 500ms of target time)
|
|
31
|
+
- Test DRM enforcement: attempt playback without valid license (should fail), expired license (should prompt re-authentication), screen recording detection (Widevine L1 blocks HDMI capture on Android), device limit enforcement (max 3 concurrent streams per account)
|
|
32
|
+
- Execute load testing for live streams: simulate 10K+ concurrent viewers, measure origin-to-edge latency (should be <3s for live), segment availability (all segments delivered before next segment starts), CDN cache hit ratio (>95% after warm-up), and origin load (offloaded to CDN)
|
|
33
|
+
|
|
34
|
+
## Self-check before task completion
|
|
35
|
+
- [ ] Transcoding pipeline functional: ingest source video, transcode to multiple renditions (4K to 360p), generate HLS/DASH manifests, output to object storage
|
|
36
|
+
- [ ] Adaptive bitrate streaming: bitrate ladder defined (8 Mbps to 500 kbps), client switches based on bandwidth, seamless quality transitions
|
|
37
|
+
- [ ] DRM content protection: video encrypted (AES-128/CBCS), license server integrated (Widevine/FairPlay/PlayReady), entitlement validation before key delivery
|
|
38
|
+
- [ ] CDN delivery optimized: edge caching configured, TTL policies set (long for segments, short for manifests), signed URLs for protected content
|
|
39
|
+
- [ ] Player analytics tracked: playback events (start, pause, complete, error), quality metrics (startup time, rebuffering, bitrate), aggregated reports
|
|
40
|
+
- [ ] Live streaming supported: real-time segmentation (6s segments), sliding window DVR (last 2 hours), low latency (<3s origin-to-edge)
|
|
41
|
+
- [ ] Quality targets met: startup <2s, rebuffering <1%, bitrate adaptation <10s, A/V sync <200ms, seek accuracy <500ms
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: meeting-architecture
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
min_mindforge_version: 10.3.0
|
|
5
|
+
status: stable
|
|
6
|
+
triggers: meeting architecture, meeting design pattern, decision documentation, async-first communication, standup optimization, meeting efficiency, RFC process, architecture decision record, async collaboration, meeting agenda design, meeting decision log, remote meeting facilitation
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Meeting Architecture
|
|
10
|
+
|
|
11
|
+
## When this skill activates
|
|
12
|
+
|
|
13
|
+
This skill activates when designing effective meetings, implementing async-first communication patterns, optimizing standups, documenting decisions, creating RFC processes, or facilitating remote meetings. It applies to tech leads, engineering managers, and senior engineers responsible for team communication effectiveness.
|
|
14
|
+
|
|
15
|
+
## Mandatory actions when this skill is active
|
|
16
|
+
|
|
17
|
+
### Before scheduling any meeting
|
|
18
|
+
|
|
19
|
+
1. **Apply the async-first test** — Can this be an email, Slack message, document, or recorded video? Only schedule a synchronous meeting if you need real-time discussion, debate, or decision-making.
|
|
20
|
+
2. **Define the meeting purpose** — Is it informational (status update), collaborative (brainstorming), or decisional (approve/reject proposal)? Different purposes require different formats.
|
|
21
|
+
3. **Identify required vs optional attendees** — Required: people who must participate for the meeting to succeed. Optional: people who benefit from being there but aren't essential. Respect people's time.
|
|
22
|
+
4. **Create a clear agenda** — No agenda = no meeting. Agenda should include: topics, time allocation, desired outcomes, and pre-reads. Send agenda 24 hours in advance.
|
|
23
|
+
|
|
24
|
+
### During meeting design
|
|
25
|
+
|
|
26
|
+
#### Meeting Type Catalog
|
|
27
|
+
|
|
28
|
+
**1. Daily Standup (15 minutes max)**
|
|
29
|
+
- **Purpose**: Synchronize team, surface blockers, maintain momentum.
|
|
30
|
+
- **Format**: Each person answers: (1) What did I accomplish yesterday? (2) What am I working on today? (3) Am I blocked?
|
|
31
|
+
- **Optimizations**:
|
|
32
|
+
- Keep it to 15 minutes. If you need more time, the team is too big or the updates are too detailed.
|
|
33
|
+
- Do it async if possible (Slack standup bot, Geekbot, GitHub comments on project board).
|
|
34
|
+
- Timebox each person to 1-2 minutes. Use a timer.
|
|
35
|
+
- Blockers get discussed after standup, not during. Don't derail everyone's focus.
|
|
36
|
+
- **Pitfall**: Standup becomes a status report to the manager. It should be peer-to-peer synchronization, not upward reporting.
|
|
37
|
+
|
|
38
|
+
**2. Sprint Planning (1-2 hours)**
|
|
39
|
+
- **Purpose**: Commit to work for the upcoming sprint.
|
|
40
|
+
- **Format**: Review backlog, prioritize, estimate, assign ownership, identify dependencies.
|
|
41
|
+
- **Pre-work**: Product or tech lead preps the backlog. Engineers review tickets ahead of time. Don't do backlog grooming during sprint planning.
|
|
42
|
+
- **Optimizations**:
|
|
43
|
+
- Timebox story estimation. Use t-shirt sizes (S/M/L) or Fibonacci (1/2/3/5/8) to avoid false precision.
|
|
44
|
+
- Identify blockers early. If a task depends on another team, escalate before the sprint starts.
|
|
45
|
+
- Set a realistic capacity. Don't overcommit. Leave 20% buffer for unplanned work (bugs, support, incidents).
|
|
46
|
+
- **Pitfall**: Spending 30 minutes debating whether a task is a 3 or a 5. Estimates are guesses. Move on.
|
|
47
|
+
|
|
48
|
+
**3. Retrospective (45-60 minutes)**
|
|
49
|
+
- **Purpose**: Reflect on what went well, what didn't, and how to improve.
|
|
50
|
+
- **Format**: What went well? What went poorly? What should we start/stop/continue doing?
|
|
51
|
+
- **Facilitation**:
|
|
52
|
+
- Everyone contributes. Silence from some people means they're not engaged or don't feel safe.
|
|
53
|
+
- Focus on systems, not individuals. "Code reviews are too slow" is better than "Alice didn't review my PR."
|
|
54
|
+
- Action items must have owners and deadlines. Otherwise they're wishes, not commitments.
|
|
55
|
+
- **Optimizations**:
|
|
56
|
+
- Rotate facilitator. Prevents one person from dominating.
|
|
57
|
+
- Use techniques like Start/Stop/Continue, 4Ls (Liked/Learned/Lacked/Longed For), or Rose/Bud/Thorn.
|
|
58
|
+
- Review action items from the previous retro. Did we follow through? If not, why?
|
|
59
|
+
- **Pitfall**: Retrospectives devolve into venting sessions. Keep it constructive.
|
|
60
|
+
|
|
61
|
+
**4. Design Review / Architecture Review (60-90 minutes)**
|
|
62
|
+
- **Purpose**: Vet technical designs before implementation. Catch issues early.
|
|
63
|
+
- **Format**: Presenter shares design doc (sent 24-48 hours in advance). Team probes assumptions, identifies edge cases, suggests alternatives.
|
|
64
|
+
- **Pre-work**: Attendees read the design doc before the meeting. Don't use meeting time for reading.
|
|
65
|
+
- **Optimizations**:
|
|
66
|
+
- Use a design doc template: problem statement, requirements, proposed solution, alternatives considered, tradeoffs, open questions.
|
|
67
|
+
- Assign a devil's advocate. Their job is to poke holes. Prevents groupthink.
|
|
68
|
+
- Document decisions in the design doc during the meeting. Don't rely on memory.
|
|
69
|
+
- **Pitfall**: Rubber-stamping designs that are already implemented. Design reviews should happen before code is written, not after.
|
|
70
|
+
|
|
71
|
+
**5. Incident Postmortem (60 minutes)**
|
|
72
|
+
- **Purpose**: Learn from incidents, identify systemic improvements.
|
|
73
|
+
- **Format**: Timeline, root cause analysis, what went well, what went poorly, action items.
|
|
74
|
+
- **Facilitation**:
|
|
75
|
+
- Blameless. Focus on systems, not individuals.
|
|
76
|
+
- Use the Five Whys to get to root cause.
|
|
77
|
+
- Every action item needs an owner and a deadline.
|
|
78
|
+
- **Optimizations**:
|
|
79
|
+
- Share postmortem document 24 hours before the meeting. Use meeting time for discussion, not writing.
|
|
80
|
+
- Invite all incident responders + relevant stakeholders.
|
|
81
|
+
- Timebox to 60 minutes. If you can't finish, schedule a follow-up.
|
|
82
|
+
- **Pitfall**: Postmortems that generate 15 action items but complete zero. Prioritize. Pick the top 3 and execute.
|
|
83
|
+
|
|
84
|
+
**6. 1:1s (30 minutes, weekly or bi-weekly)**
|
|
85
|
+
- **Purpose**: Manager-engineer relationship building, career development, feedback, unblocking.
|
|
86
|
+
- **Format**: Open agenda. Employee drives the conversation. Manager listens, coaches, provides context.
|
|
87
|
+
- **Optimizations**:
|
|
88
|
+
- Don't use 1:1s for status updates. That's what standups and project boards are for.
|
|
89
|
+
- Ask open-ended questions: "What's on your mind?" "What's frustrating you?" "What do you need from me?"
|
|
90
|
+
- Take notes. Reference previous 1:1s. Show that you remember and care.
|
|
91
|
+
- Cancel other meetings, not 1:1s. 1:1s are sacred.
|
|
92
|
+
- **Pitfall**: Manager dominates the conversation. The 1:1 is for the employee, not the manager.
|
|
93
|
+
|
|
94
|
+
**7. RFC (Request for Comments) Review (Async + Optional Sync Meeting)**
|
|
95
|
+
- **Purpose**: Propose architectural changes, gather feedback, build consensus.
|
|
96
|
+
- **Format**: Author writes RFC document (problem, proposal, alternatives, tradeoffs). Team comments asynchronously. Optional sync meeting to resolve open questions.
|
|
97
|
+
- **Optimizations**:
|
|
98
|
+
- Set a comment deadline (e.g., 5 business days). After deadline, author addresses feedback and makes a decision.
|
|
99
|
+
- Use a template. Consistency reduces cognitive load.
|
|
100
|
+
- Distinguish between blocking concerns (correctness, security) and non-blocking suggestions (style, minor optimizations).
|
|
101
|
+
- **Pitfall**: RFCs that linger for weeks with no decision. Set a decision deadline and stick to it.
|
|
102
|
+
|
|
103
|
+
#### Async-First Communication Patterns
|
|
104
|
+
|
|
105
|
+
- **Default to async** — Status updates, announcements, design proposals, and decisions should be written and shared asynchronously. Reserve sync meetings for real-time collaboration.
|
|
106
|
+
- **Use threads, not channels** — In Slack or Teams, use threads for discussions. Keeps channels scannable. Main channel is for announcements, threads are for details.
|
|
107
|
+
- **Document decisions publicly** — Every significant decision (architectural choice, roadmap change, policy update) gets written down in a shared doc or wiki. Don't let decisions live only in someone's head or in a Slack thread.
|
|
108
|
+
- **Record meetings** — For all-hands, demos, or important discussions, record the meeting and share the link. Accommodates different time zones and allows people to catch up asynchronously.
|
|
109
|
+
- **Set response time expectations** — Async doesn't mean "respond whenever." Set norms: Slack messages within 4 hours during work hours, emails within 24 hours, RFCs within 5 days.
|
|
110
|
+
|
|
111
|
+
#### Decision Documentation
|
|
112
|
+
|
|
113
|
+
- **Use Architecture Decision Records (ADRs)** — Every significant architectural decision gets a lightweight ADR:
|
|
114
|
+
- **Title**: Short description (e.g., "Use Postgres for primary datastore")
|
|
115
|
+
- **Context**: What's the situation?
|
|
116
|
+
- **Decision**: What did we decide?
|
|
117
|
+
- **Consequences**: What are the tradeoffs?
|
|
118
|
+
- **Alternatives Considered**: What else did we evaluate?
|
|
119
|
+
- **Maintain a decision log** — Store ADRs in the repo (`docs/adr/`) or wiki. Version control ensures decisions are traceable.
|
|
120
|
+
- **Link decisions to code** — In PRs, reference the ADR. Future engineers will thank you.
|
|
121
|
+
|
|
122
|
+
#### Remote Meeting Facilitation
|
|
123
|
+
|
|
124
|
+
- **Video on by default** — Encourages engagement. People are less likely to multitask when video is on.
|
|
125
|
+
- **Use collaborative tools** — Miro, Figma, Google Docs for real-time collaboration. Screen sharing alone is passive.
|
|
126
|
+
- **Timebox discussions** — Use a timer. When time's up, move on. Prevents bikeshedding.
|
|
127
|
+
- **Mute when not speaking** — Reduces background noise. Unmute to contribute.
|
|
128
|
+
- **Use breakout rooms for large meetings** — If you have >8 people, break into smaller groups for brainstorming. Reconvene to share findings.
|
|
129
|
+
|
|
130
|
+
### After meetings
|
|
131
|
+
|
|
132
|
+
- **Publish meeting notes within 2 hours** — Key decisions, action items, owners, deadlines. Share in the team channel or wiki.
|
|
133
|
+
- **Track action items to completion** — Review action items in the next meeting. If they're not getting done, either they weren't important or there's a resourcing issue.
|
|
134
|
+
- **Measure meeting effectiveness** — Periodically survey the team: "Are meetings productive? Too many? Too few?" Course-correct based on feedback.
|
|
135
|
+
- **Cancel recurring meetings that lost their purpose** — If a meeting becomes a status update or no one has updates, cancel it. Don't let zombie meetings linger.
|
|
136
|
+
|
|
137
|
+
## Self-check before task completion
|
|
138
|
+
|
|
139
|
+
- [ ] Meeting passes the async-first test (can't be an email or doc)
|
|
140
|
+
- [ ] Agenda is created and shared 24 hours in advance with topics, time allocation, and desired outcomes
|
|
141
|
+
- [ ] Required vs optional attendees are explicitly identified
|
|
142
|
+
- [ ] Meeting type is appropriate for the goal (standup, planning, retro, design review, 1:1)
|
|
143
|
+
- [ ] Design reviews and RFC reviews require pre-reading; meeting time is for discussion, not reading
|
|
144
|
+
- [ ] Decisions are documented using ADRs or decision logs and shared publicly
|
|
145
|
+
- [ ] Meeting notes with action items, owners, and deadlines are published within 2 hours
|
|
146
|
+
- [ ] Recurring meetings are reviewed quarterly and canceled if they've lost their purpose
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mentoring-patterns
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
min_mindforge_version: 10.3.0
|
|
5
|
+
status: stable
|
|
6
|
+
triggers: mentoring developer, pair programming pedagogy, code review teaching, career ladder design, junior developer growth, technical mentorship, developer onboarding mentoring, skill gap assessment, growth plan engineering, coaching engineers, feedback delivery, mentee progress tracking
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Mentoring Patterns
|
|
10
|
+
|
|
11
|
+
## When this skill activates
|
|
12
|
+
|
|
13
|
+
This skill activates when mentoring junior or mid-level developers, conducting pair programming sessions, giving pedagogical code reviews, designing career growth plans, assessing skill gaps, or coaching engineers through challenging technical problems. It applies to senior engineers, tech leads, and engineering managers responsible for developing others.
|
|
14
|
+
|
|
15
|
+
## Mandatory actions when this skill is active
|
|
16
|
+
|
|
17
|
+
### Before starting mentorship
|
|
18
|
+
|
|
19
|
+
1. **Assess current skill level** — Don't assume. Ask mentee to walk through a recent PR or design doc. Identify gaps in fundamentals (data structures, testing, debugging) vs advanced topics (distributed systems, performance optimization).
|
|
20
|
+
2. **Understand mentee's goals** — Are they aiming for senior engineer? Staff? Management? Different trajectories require different skill development. Don't project your own career path onto them.
|
|
21
|
+
3. **Establish mentorship contract** — Frequency (weekly 1:1s? ad-hoc?), topics (code review? architecture? career?), communication channels, and how to ask for help. Implicit expectations cause friction.
|
|
22
|
+
4. **Identify mentee's learning style** — Do they learn by reading (send docs), watching (pair program), or doing (give them a project)? Mismatch between teaching style and learning style wastes time.
|
|
23
|
+
|
|
24
|
+
### During mentorship activities
|
|
25
|
+
|
|
26
|
+
#### Pair Programming Pedagogy
|
|
27
|
+
|
|
28
|
+
- **Use driver-navigator pattern** — Junior is driver (typing), senior is navigator (guiding). Keeps mentee engaged and forces them to articulate their reasoning. Don't grab the keyboard.
|
|
29
|
+
- **Ask guiding questions, don't give answers** — Instead of "Use a hash map here," ask "How would you optimize this lookup?" Let them arrive at the solution. Spoon-feeding creates dependency.
|
|
30
|
+
- **Narrate your thought process** — When you're the driver, verbalize your reasoning: "I'm adding this null check because..." or "I'm writing the test first because...". Juniors can't see inside your head.
|
|
31
|
+
- **Timebox exploration** — Let mentee struggle for 10-15 minutes. If stuck, give a hint, not the solution. If still stuck after 30 minutes, show the approach and explain why.
|
|
32
|
+
- **Refactor together** — Take working but messy code and refactor it as a pair. Teaches that code quality is iterative, not achieved on the first pass.
|
|
33
|
+
|
|
34
|
+
#### Code Review Teaching
|
|
35
|
+
|
|
36
|
+
- **Classify feedback by severity** — Critical (security, correctness, data loss), Major (performance, maintainability, architectural misalignment), Minor (style, readability). Juniors often can't distinguish signal from noise.
|
|
37
|
+
- **Explain the "why," not just the "what"** — Don't say "Extract this into a function." Say "This block is duplicated in 3 places. Extracting it into a function ensures future bug fixes apply everywhere, not just one call site."
|
|
38
|
+
- **Use the "teach, don't tell" pattern** — First review: point out the issue and suggest a fix. Second occurrence: point out the issue, ask them to suggest a fix. Third occurrence: ask if they see the issue. Eventually they internalize the pattern.
|
|
39
|
+
- **Limit feedback to 3-5 key points per review** — Wall-of-text reviews overwhelm. Pick the most important lessons. Other issues can wait for the next PR.
|
|
40
|
+
- **Celebrate improvements** — When mentee applies feedback from a previous review, call it out: "Great null handling here, much cleaner than last time." Positive reinforcement accelerates learning.
|
|
41
|
+
|
|
42
|
+
#### Career Growth Plans
|
|
43
|
+
|
|
44
|
+
- **Use the skill matrix** — List skills required for the next level (e.g., to reach senior: owns 1-2 services end-to-end, writes design docs, mentors 1-2 juniors). Rate mentee as Beginner / Intermediate / Advanced / Expert on each skill.
|
|
45
|
+
- **Create 30-60-90 day goals** — 30 days: quick wins (improve test coverage on X service, ship Y feature). 60 days: medium scope (lead Z project, mentor junior on onboarding). 90 days: stretch goals (present at team meeting, write architecture proposal).
|
|
46
|
+
- **Identify growth projects** — Assign projects slightly above their current level. Too easy = no learning. Too hard = frustration and failure. The sweet spot is 20% beyond their comfort zone.
|
|
47
|
+
- **Track skill acquisition, not task completion** — The goal isn't "ship feature X." It's "learn how to design APIs" or "get comfortable with debugging production issues." Task completion is the vehicle, skill acquisition is the outcome.
|
|
48
|
+
|
|
49
|
+
#### Feedback Delivery
|
|
50
|
+
|
|
51
|
+
- **Use Situation-Behavior-Impact (SBI) framework** — "In yesterday's design review (situation), you interrupted Sarah twice (behavior), which made her hesitant to share more ideas (impact)." Specific, observable, non-judgmental.
|
|
52
|
+
- **Give feedback close to the event** — Real-time or within 24 hours. Waiting for quarterly reviews dilutes the learning and makes feedback feel like a performance audit, not coaching.
|
|
53
|
+
- **Balance positive and developmental feedback** — Ratio: 3-5 pieces of positive feedback for every 1 piece of developmental feedback. Overweighting critique creates defensiveness.
|
|
54
|
+
- **Focus on one behavior at a time** — Don't bundle 5 unrelated pieces of feedback. Pick the most impactful behavior to improve. Once they've made progress, address the next one.
|
|
55
|
+
|
|
56
|
+
#### Skill Gap Assessment
|
|
57
|
+
|
|
58
|
+
- **Distinguish between knowledge gaps and capability gaps** — Knowledge gaps (doesn't know how to use Redis) are fixed with learning. Capability gaps (struggles to break down ambiguous problems) require coaching and practice.
|
|
59
|
+
- **Use the Dreyfus model** — Novice (needs recipes), Advanced Beginner (starts recognizing patterns), Competent (can troubleshoot), Proficient (intuitive understanding), Expert (creates new patterns). Mentor at the appropriate level.
|
|
60
|
+
- **Create learning paths** — For knowledge gaps: reading list, courses, toy projects. For capability gaps: shadowing, pair programming, progressively harder assignments.
|
|
61
|
+
|
|
62
|
+
### After mentorship sessions
|
|
63
|
+
|
|
64
|
+
- **Document progress** — Keep notes on what you discussed, insights they shared, and commitments they made. Refer back in future sessions. Memory fades; notes compound.
|
|
65
|
+
- **Assign practice work** — After teaching a concept, give them a small task to apply it. "We talked about database indexing. Add indexes to the Users table and measure query performance before/after."
|
|
66
|
+
- **Check for understanding** — Ask mentee to summarize what they learned. If they can't explain it in their own words, they didn't internalize it.
|
|
67
|
+
- **Adjust mentorship approach based on feedback** — Periodically ask: "Is this mentorship helping? What should I do more/less of?" Course-correct before frustration builds.
|
|
68
|
+
|
|
69
|
+
## Self-check before task completion
|
|
70
|
+
|
|
71
|
+
- [ ] Mentee's current skill level and learning style are explicitly assessed
|
|
72
|
+
- [ ] Mentorship goals are aligned with mentee's career trajectory, not mentor's preferences
|
|
73
|
+
- [ ] Pair programming sessions use driver-navigator pattern with guiding questions, not answers
|
|
74
|
+
- [ ] Code review feedback is classified by severity and includes "why," not just "what"
|
|
75
|
+
- [ ] Career growth plan has 30-60-90 day goals tied to specific skill acquisition
|
|
76
|
+
- [ ] Feedback uses SBI framework, is delivered within 24 hours, and focuses on one behavior at a time
|
|
77
|
+
- [ ] Progress is documented and reviewed regularly to track skill development over time
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: microservices-patterns
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
min_mindforge_version: 10.0.6
|
|
5
|
+
status: stable
|
|
6
|
+
triggers: microservice, service boundary, bounded context, api contract, saga pattern, event-driven architecture, bulkhead, service mesh, service discovery, distributed system, inter-service communication, service decomposition
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Skill — Microservices Patterns
|
|
10
|
+
|
|
11
|
+
## When this skill activates
|
|
12
|
+
Any task involving microservice architecture, service decomposition, inter-service
|
|
13
|
+
communication, distributed system design, or API contract definition between services.
|
|
14
|
+
|
|
15
|
+
## Mandatory actions when this skill is active
|
|
16
|
+
|
|
17
|
+
### Before
|
|
18
|
+
|
|
19
|
+
1. **Identify bounded contexts** — Map business capabilities to service boundaries using DDD. Each service owns one bounded context, one database, one deployment unit.
|
|
20
|
+
2. **Define communication style** — Synchronous (REST/gRPC) for queries, asynchronous (events) for cross-domain state changes. Default to async.
|
|
21
|
+
3. **Assess data ownership** — Each service owns its data exclusively. No shared databases. Cross-service access via APIs or event propagation.
|
|
22
|
+
|
|
23
|
+
### During
|
|
24
|
+
|
|
25
|
+
#### Service boundary design (DDD)
|
|
26
|
+
```
|
|
27
|
+
Decomposition heuristics:
|
|
28
|
+
- Single Responsibility: one reason to change per service
|
|
29
|
+
- Team Ownership: one team owns one service (Conway's Law)
|
|
30
|
+
- Data Cohesion: entities that change together stay together
|
|
31
|
+
- Independent Deployability: releasing one never requires releasing another
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
#### API contracts
|
|
35
|
+
- Version all APIs (URL path or header-based)
|
|
36
|
+
- REST (OpenAPI 3.1) for external/public APIs
|
|
37
|
+
- gRPC (protobuf) for high-throughput internal calls
|
|
38
|
+
- Consumer-driven contract testing (Pact) between services
|
|
39
|
+
- Breaking changes require new major version + deprecation period
|
|
40
|
+
|
|
41
|
+
#### Saga orchestration
|
|
42
|
+
```
|
|
43
|
+
Choreography (2-3 services, simple flows):
|
|
44
|
+
Service A -> emits Event -> Service B reacts -> emits Event -> Service C reacts
|
|
45
|
+
Each service owns its compensating action
|
|
46
|
+
|
|
47
|
+
Orchestration (4+ services, complex flows):
|
|
48
|
+
SagaCoordinator defines steps + compensations:
|
|
49
|
+
Step 1: InventoryService.reserve() | compensate: release()
|
|
50
|
+
Step 2: PaymentService.charge() | compensate: refund()
|
|
51
|
+
Step 3: OrderService.confirm() | compensate: cancel()
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
#### Resilience patterns
|
|
55
|
+
```
|
|
56
|
+
Bulkhead: separate thread/connection pools per dependency
|
|
57
|
+
Circuit Breaker: Closed -> Open (5 failures/10s) -> Half-Open (probe after 30s)
|
|
58
|
+
Retry: exponential backoff + jitter, max 3 attempts, idempotent ops only
|
|
59
|
+
Timeout: every sync call has an explicit deadline (never infinite)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
#### Service mesh and discovery
|
|
63
|
+
- Kubernetes: use native Services (DNS-based, server-side discovery)
|
|
64
|
+
- Non-K8s: Consul or Eureka with client-side load balancing
|
|
65
|
+
- Service mesh (Istio/Linkerd) for: mTLS, traffic shaping, observability, retries
|
|
66
|
+
- Health checks: active (ping /health every 5s, 3 failures = remove from pool)
|
|
67
|
+
|
|
68
|
+
### After
|
|
69
|
+
|
|
70
|
+
1. **Validate data ownership** — No service reads another service's database directly.
|
|
71
|
+
2. **Verify fault tolerance** — Every sync call has timeout, retry policy, and circuit breaker.
|
|
72
|
+
3. **Check observability** — Distributed tracing (OpenTelemetry), structured logs with correlation IDs, health endpoints.
|
|
73
|
+
4. **Contract tests pass** — Consumer-driven contract tests verify API compatibility.
|
|
74
|
+
|
|
75
|
+
## Self-check before task completion
|
|
76
|
+
- [ ] Each service owns exactly one bounded context and one database
|
|
77
|
+
- [ ] API contracts versioned and published (OpenAPI or protobuf)
|
|
78
|
+
- [ ] Saga compensation defined for every step that can fail
|
|
79
|
+
- [ ] Bulkhead isolation prevents cascading failures
|
|
80
|
+
- [ ] Circuit breakers on all synchronous inter-service calls
|
|
81
|
+
- [ ] Distributed tracing propagates correlation IDs across boundaries
|
|
82
|
+
- [ ] No shared databases between services
|
|
83
|
+
- [ ] Service discovery mechanism documented and tested
|