mindforge-cc 10.0.3 → 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 +25 -2
- package/.mindforge/engine/cross-model-eval.md +74 -0
- package/.mindforge/engine/proactive/signal-detector.md +60 -0
- package/.mindforge/engine/proactive/suggestion-engine.md +100 -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/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/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/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-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 +674 -44
- 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/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-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/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/contract-testing/SKILL.md +85 -0
- package/.mindforge/skills/cost-estimation/SKILL.md +82 -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/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-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/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 +13 -1
- 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 +176 -0
- package/MINDFORGE.md +4 -4
- package/package.json +2 -2
- package/.mindforge/personas/data-privacy-engineer.md +0 -187
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: k8s-deployment
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
min_mindforge_version: 10.0.6
|
|
5
|
+
status: stable
|
|
6
|
+
triggers: kubernetes deployment, helm chart, rolling update, HPA autoscaling, pod disruption budget, network policy, resource quota, liveness probe, readiness probe, ingress controller, k8s manifest, container orchestration
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Skill — Kubernetes Deployment
|
|
10
|
+
|
|
11
|
+
## When this skill activates
|
|
12
|
+
Any task involving Kubernetes deployments: writing or modifying manifests, Helm charts,
|
|
13
|
+
configuring autoscaling, probes, network policies, ingress, resource management,
|
|
14
|
+
or deployment strategies for containerized workloads.
|
|
15
|
+
|
|
16
|
+
## Mandatory actions when this skill is active
|
|
17
|
+
|
|
18
|
+
### Before writing any code
|
|
19
|
+
1. Identify the deployment requirements:
|
|
20
|
+
- Target environment (dev/staging/production)
|
|
21
|
+
- Availability requirements (SLA target, max acceptable downtime)
|
|
22
|
+
- Scale expectations (baseline replicas, peak load multiplier)
|
|
23
|
+
- Network exposure (internal only, public ingress, specific CIDR allowlists)
|
|
24
|
+
2. Check existing cluster state:
|
|
25
|
+
```bash
|
|
26
|
+
kubectl get nodes -o wide # Cluster capacity
|
|
27
|
+
kubectl top nodes # Current resource usage
|
|
28
|
+
kubectl get namespaces # Available namespaces
|
|
29
|
+
kubectl get resourcequotas -A # Existing quotas
|
|
30
|
+
```
|
|
31
|
+
3. Determine if Helm or raw manifests are appropriate:
|
|
32
|
+
- **Helm**: Multiple environments, parameterized configs, community chart availability.
|
|
33
|
+
- **Raw manifests + Kustomize**: Simpler apps, GitOps with ArgoCD/Flux, overlay-based config.
|
|
34
|
+
|
|
35
|
+
### During implementation
|
|
36
|
+
|
|
37
|
+
#### Deployment Strategies
|
|
38
|
+
- **RollingUpdate** (default, recommended for most services):
|
|
39
|
+
```yaml
|
|
40
|
+
apiVersion: apps/v1
|
|
41
|
+
kind: Deployment
|
|
42
|
+
metadata:
|
|
43
|
+
name: my-service
|
|
44
|
+
spec:
|
|
45
|
+
replicas: 3
|
|
46
|
+
strategy:
|
|
47
|
+
type: RollingUpdate
|
|
48
|
+
rollingUpdate:
|
|
49
|
+
maxSurge: 1 # Max extra pods during update
|
|
50
|
+
maxUnavailable: 0 # Zero downtime: never kill before new is ready
|
|
51
|
+
selector:
|
|
52
|
+
matchLabels:
|
|
53
|
+
app: my-service
|
|
54
|
+
template:
|
|
55
|
+
metadata:
|
|
56
|
+
labels:
|
|
57
|
+
app: my-service
|
|
58
|
+
spec:
|
|
59
|
+
containers:
|
|
60
|
+
- name: my-service
|
|
61
|
+
image: registry.example.com/my-service:v1.2.3
|
|
62
|
+
# ... rest of spec
|
|
63
|
+
```
|
|
64
|
+
- **Recreate** (only for stateful apps that cannot run two versions simultaneously):
|
|
65
|
+
```yaml
|
|
66
|
+
strategy:
|
|
67
|
+
type: Recreate
|
|
68
|
+
```
|
|
69
|
+
- **Blue/Green** (via service selector swap or Argo Rollouts):
|
|
70
|
+
Deploy new version as separate deployment, switch service selector when healthy.
|
|
71
|
+
- **Canary** (via Argo Rollouts or Istio traffic splitting):
|
|
72
|
+
Route percentage of traffic to new version, promote or rollback based on metrics.
|
|
73
|
+
|
|
74
|
+
#### Helm Chart Structure
|
|
75
|
+
```
|
|
76
|
+
my-chart/
|
|
77
|
+
Chart.yaml # Chart metadata (name, version, appVersion)
|
|
78
|
+
values.yaml # Default configuration values
|
|
79
|
+
values-staging.yaml # Environment-specific overrides
|
|
80
|
+
values-prod.yaml
|
|
81
|
+
templates/
|
|
82
|
+
_helpers.tpl # Template helpers and labels
|
|
83
|
+
deployment.yaml
|
|
84
|
+
service.yaml
|
|
85
|
+
hpa.yaml
|
|
86
|
+
ingress.yaml
|
|
87
|
+
configmap.yaml
|
|
88
|
+
secret.yaml # Reference to external secrets, not raw values
|
|
89
|
+
pdb.yaml
|
|
90
|
+
networkpolicy.yaml
|
|
91
|
+
serviceaccount.yaml
|
|
92
|
+
tests/
|
|
93
|
+
test-connection.yaml
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
- **Chart.yaml** must include:
|
|
97
|
+
```yaml
|
|
98
|
+
apiVersion: v2
|
|
99
|
+
name: my-service
|
|
100
|
+
version: 1.0.0 # Chart version (bump on chart changes)
|
|
101
|
+
appVersion: "1.2.3" # Application version (matches container tag)
|
|
102
|
+
```
|
|
103
|
+
- **values.yaml** conventions:
|
|
104
|
+
```yaml
|
|
105
|
+
replicaCount: 3
|
|
106
|
+
image:
|
|
107
|
+
repository: registry.example.com/my-service
|
|
108
|
+
tag: "" # Overridden per environment
|
|
109
|
+
pullPolicy: IfNotPresent
|
|
110
|
+
resources:
|
|
111
|
+
requests:
|
|
112
|
+
cpu: 100m
|
|
113
|
+
memory: 128Mi
|
|
114
|
+
limits:
|
|
115
|
+
cpu: 500m
|
|
116
|
+
memory: 512Mi
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
#### HPA (Horizontal Pod Autoscaler)
|
|
120
|
+
```yaml
|
|
121
|
+
apiVersion: autoscaling/v2
|
|
122
|
+
kind: HorizontalPodAutoscaler
|
|
123
|
+
metadata:
|
|
124
|
+
name: my-service
|
|
125
|
+
spec:
|
|
126
|
+
scaleTargetRef:
|
|
127
|
+
apiVersion: apps/v1
|
|
128
|
+
kind: Deployment
|
|
129
|
+
name: my-service
|
|
130
|
+
minReplicas: 3 # Never go below 3 for production
|
|
131
|
+
maxReplicas: 20 # Cap to prevent runaway scaling
|
|
132
|
+
metrics:
|
|
133
|
+
- type: Resource
|
|
134
|
+
resource:
|
|
135
|
+
name: cpu
|
|
136
|
+
target:
|
|
137
|
+
type: Utilization
|
|
138
|
+
averageUtilization: 70 # Scale up at 70% CPU
|
|
139
|
+
- type: Resource
|
|
140
|
+
resource:
|
|
141
|
+
name: memory
|
|
142
|
+
target:
|
|
143
|
+
type: Utilization
|
|
144
|
+
averageUtilization: 80
|
|
145
|
+
behavior:
|
|
146
|
+
scaleDown:
|
|
147
|
+
stabilizationWindowSeconds: 300 # Wait 5min before scaling down
|
|
148
|
+
policies:
|
|
149
|
+
- type: Percent
|
|
150
|
+
value: 25
|
|
151
|
+
periodSeconds: 60 # Max 25% reduction per minute
|
|
152
|
+
scaleUp:
|
|
153
|
+
stabilizationWindowSeconds: 30
|
|
154
|
+
policies:
|
|
155
|
+
- type: Percent
|
|
156
|
+
value: 100
|
|
157
|
+
periodSeconds: 30 # Can double pods in 30s
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
- Custom metrics (requests per second, queue depth) via Prometheus adapter:
|
|
161
|
+
```yaml
|
|
162
|
+
- type: Pods
|
|
163
|
+
pods:
|
|
164
|
+
metric:
|
|
165
|
+
name: http_requests_per_second
|
|
166
|
+
target:
|
|
167
|
+
type: AverageValue
|
|
168
|
+
averageValue: "1000"
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
#### Pod Disruption Budget (PDB)
|
|
172
|
+
```yaml
|
|
173
|
+
apiVersion: policy/v1
|
|
174
|
+
kind: PodDisruptionBudget
|
|
175
|
+
metadata:
|
|
176
|
+
name: my-service-pdb
|
|
177
|
+
spec:
|
|
178
|
+
minAvailable: 2 # Always keep at least 2 pods running
|
|
179
|
+
# OR: maxUnavailable: 1 # At most 1 pod can be down
|
|
180
|
+
selector:
|
|
181
|
+
matchLabels:
|
|
182
|
+
app: my-service
|
|
183
|
+
```
|
|
184
|
+
- **Always create a PDB for production workloads.** Without one, cluster upgrades and
|
|
185
|
+
node drains can take down all pods simultaneously.
|
|
186
|
+
- Rule of thumb: `minAvailable` = `replicas - 1` or use `maxUnavailable: 1`.
|
|
187
|
+
|
|
188
|
+
#### Probes (Health Checks)
|
|
189
|
+
```yaml
|
|
190
|
+
containers:
|
|
191
|
+
- name: my-service
|
|
192
|
+
livenessProbe: # Is the process alive? Restart if failing.
|
|
193
|
+
httpGet:
|
|
194
|
+
path: /healthz
|
|
195
|
+
port: 8080
|
|
196
|
+
initialDelaySeconds: 15
|
|
197
|
+
periodSeconds: 10
|
|
198
|
+
failureThreshold: 3 # 3 failures = restart
|
|
199
|
+
timeoutSeconds: 3
|
|
200
|
+
readinessProbe: # Is it ready for traffic? Remove from LB if failing.
|
|
201
|
+
httpGet:
|
|
202
|
+
path: /readyz
|
|
203
|
+
port: 8080
|
|
204
|
+
initialDelaySeconds: 5
|
|
205
|
+
periodSeconds: 5
|
|
206
|
+
failureThreshold: 2
|
|
207
|
+
timeoutSeconds: 3
|
|
208
|
+
startupProbe: # For slow starters. Disables liveness/readiness until passing.
|
|
209
|
+
httpGet:
|
|
210
|
+
path: /healthz
|
|
211
|
+
port: 8080
|
|
212
|
+
initialDelaySeconds: 0
|
|
213
|
+
periodSeconds: 5
|
|
214
|
+
failureThreshold: 30 # 30 * 5s = 150s max startup time
|
|
215
|
+
timeoutSeconds: 3
|
|
216
|
+
```
|
|
217
|
+
- **liveness**: "Is the process stuck?" Triggers container restart. Keep simple (not DB-dependent).
|
|
218
|
+
- **readiness**: "Can it serve requests?" Controls load balancer membership. Can check dependencies.
|
|
219
|
+
- **startup**: Use for apps that take > 30s to initialize (JVM warmup, large model loading).
|
|
220
|
+
|
|
221
|
+
#### Resource Requests and Limits
|
|
222
|
+
```yaml
|
|
223
|
+
resources:
|
|
224
|
+
requests: # Scheduling guarantee (must be available)
|
|
225
|
+
cpu: 100m # 0.1 CPU cores
|
|
226
|
+
memory: 256Mi # 256 MiB RAM
|
|
227
|
+
limits: # Hard ceiling (OOMKilled if exceeded for memory)
|
|
228
|
+
cpu: 1000m # 1 CPU core (throttled, not killed)
|
|
229
|
+
memory: 512Mi # OOMKilled if exceeded
|
|
230
|
+
```
|
|
231
|
+
- **Requests**: Set to observed p50 usage. Cluster scheduler uses this for placement.
|
|
232
|
+
- **Limits**: Set to observed p99 + 20% headroom. Too tight = OOMKills. Too loose = noisy neighbors.
|
|
233
|
+
- **CPU limits debate**: Some teams remove CPU limits (use only requests) to avoid throttling.
|
|
234
|
+
This is acceptable if the cluster has sufficient headroom and resource quotas protect namespaces.
|
|
235
|
+
- Always set memory limits (OOM without limits can crash the node).
|
|
236
|
+
|
|
237
|
+
#### Network Policies
|
|
238
|
+
```yaml
|
|
239
|
+
apiVersion: networking.k8s.io/v1
|
|
240
|
+
kind: NetworkPolicy
|
|
241
|
+
metadata:
|
|
242
|
+
name: default-deny-all
|
|
243
|
+
namespace: my-namespace
|
|
244
|
+
spec:
|
|
245
|
+
podSelector: {} # Applies to all pods in namespace
|
|
246
|
+
policyTypes:
|
|
247
|
+
- Ingress
|
|
248
|
+
- Egress
|
|
249
|
+
---
|
|
250
|
+
apiVersion: networking.k8s.io/v1
|
|
251
|
+
kind: NetworkPolicy
|
|
252
|
+
metadata:
|
|
253
|
+
name: allow-my-service-ingress
|
|
254
|
+
namespace: my-namespace
|
|
255
|
+
spec:
|
|
256
|
+
podSelector:
|
|
257
|
+
matchLabels:
|
|
258
|
+
app: my-service
|
|
259
|
+
policyTypes:
|
|
260
|
+
- Ingress
|
|
261
|
+
ingress:
|
|
262
|
+
- from:
|
|
263
|
+
- namespaceSelector:
|
|
264
|
+
matchLabels:
|
|
265
|
+
name: ingress-nginx
|
|
266
|
+
ports:
|
|
267
|
+
- protocol: TCP
|
|
268
|
+
port: 8080
|
|
269
|
+
```
|
|
270
|
+
- **Default deny first**, then allow specific traffic paths.
|
|
271
|
+
- Minimum for production: deny all ingress/egress, then whitelist:
|
|
272
|
+
1. Ingress controller to service pods.
|
|
273
|
+
2. Service pods to database pods.
|
|
274
|
+
3. Egress to external APIs (specific IPs/CIDRs if possible).
|
|
275
|
+
|
|
276
|
+
#### Ingress Configuration
|
|
277
|
+
```yaml
|
|
278
|
+
apiVersion: networking.k8s.io/v1
|
|
279
|
+
kind: Ingress
|
|
280
|
+
metadata:
|
|
281
|
+
name: my-service-ingress
|
|
282
|
+
annotations:
|
|
283
|
+
cert-manager.io/cluster-issuer: letsencrypt-prod
|
|
284
|
+
nginx.ingress.kubernetes.io/rate-limit: "100"
|
|
285
|
+
nginx.ingress.kubernetes.io/rate-limit-window: "1m"
|
|
286
|
+
spec:
|
|
287
|
+
ingressClassName: nginx
|
|
288
|
+
tls:
|
|
289
|
+
- hosts:
|
|
290
|
+
- api.example.com
|
|
291
|
+
secretName: api-tls-cert
|
|
292
|
+
rules:
|
|
293
|
+
- host: api.example.com
|
|
294
|
+
http:
|
|
295
|
+
paths:
|
|
296
|
+
- path: /
|
|
297
|
+
pathType: Prefix
|
|
298
|
+
backend:
|
|
299
|
+
service:
|
|
300
|
+
name: my-service
|
|
301
|
+
port:
|
|
302
|
+
number: 80
|
|
303
|
+
```
|
|
304
|
+
- Always configure TLS termination (use cert-manager for automatic certificate management).
|
|
305
|
+
- Add rate limiting annotations to prevent abuse.
|
|
306
|
+
- Use path-based routing to split traffic to different services under one domain.
|
|
307
|
+
|
|
308
|
+
### After implementation
|
|
309
|
+
1. Validate manifests before applying:
|
|
310
|
+
```bash
|
|
311
|
+
helm template my-chart ./chart -f values-prod.yaml | kubectl apply --dry-run=client -f -
|
|
312
|
+
kubectl diff -f manifest.yaml # Show what would change
|
|
313
|
+
```
|
|
314
|
+
2. Verify rollout health:
|
|
315
|
+
```bash
|
|
316
|
+
kubectl rollout status deployment/my-service --timeout=300s
|
|
317
|
+
kubectl get pods -l app=my-service -o wide
|
|
318
|
+
kubectl top pods -l app=my-service
|
|
319
|
+
```
|
|
320
|
+
3. Test probes manually:
|
|
321
|
+
```bash
|
|
322
|
+
kubectl exec -it <pod> -- curl -s localhost:8080/healthz
|
|
323
|
+
kubectl exec -it <pod> -- curl -s localhost:8080/readyz
|
|
324
|
+
```
|
|
325
|
+
4. Verify network policies:
|
|
326
|
+
```bash
|
|
327
|
+
# From a test pod, confirm blocked traffic is actually blocked
|
|
328
|
+
kubectl run test --rm -it --image=busybox -- wget -qO- --timeout=3 http://my-service:8080
|
|
329
|
+
```
|
|
330
|
+
5. Test PDB during a drain:
|
|
331
|
+
```bash
|
|
332
|
+
kubectl drain <node> --ignore-daemonsets --dry-run=client
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
## Common mistakes to flag
|
|
336
|
+
|
|
337
|
+
- No PDB on production deployments (cluster upgrades will cause downtime).
|
|
338
|
+
- Liveness probe checks database connectivity (cascading restarts on DB issues).
|
|
339
|
+
- No resource limits (one pod can starve the entire node).
|
|
340
|
+
- `latest` tag in production (non-reproducible deployments).
|
|
341
|
+
- Secrets in ConfigMaps or values.yaml (use sealed-secrets, external-secrets, or vault).
|
|
342
|
+
- No network policies (all pods can communicate with all other pods by default).
|
|
343
|
+
- HPA and VPA both active on the same resource (they conflict).
|
|
344
|
+
|
|
345
|
+
## Self-check before task completion
|
|
346
|
+
|
|
347
|
+
Before marking a task done when this skill was active:
|
|
348
|
+
|
|
349
|
+
- [ ] All manifests pass `kubectl apply --dry-run=client`.
|
|
350
|
+
- [ ] Deployment has both readiness and liveness probes configured.
|
|
351
|
+
- [ ] Resource requests and memory limits are set on all containers.
|
|
352
|
+
- [ ] PDB exists for production deployments (minAvailable or maxUnavailable).
|
|
353
|
+
- [ ] Network policies enforce least-privilege communication.
|
|
354
|
+
- [ ] No secrets stored in plain text in manifests or values files.
|
|
355
|
+
- [ ] Image tags are pinned to specific versions (not `latest`).
|
|
356
|
+
- [ ] HPA configured with appropriate min/max and scale-down stabilization.
|
|
357
|
+
- [ ] Ingress has TLS termination configured.
|
|
358
|
+
- [ ] Rollout tested with `kubectl rollout status`.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: knowledge-graphs
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
min_mindforge_version: 10.5.0
|
|
5
|
+
status: stable
|
|
6
|
+
triggers: knowledge graph design, ontology architecture, graph database modeling, entity resolution system, knowledge extraction pipeline, graph schema design, triple store, semantic relationship, knowledge base construction, graph traversal pattern, entity linking, knowledge graph embedding
|
|
7
|
+
compose:
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Knowledge Graphs & Ontology Design
|
|
11
|
+
|
|
12
|
+
## When this skill activates
|
|
13
|
+
|
|
14
|
+
This skill activates when building knowledge graphs, designing ontologies, implementing entity resolution systems, extracting structured knowledge from unstructured text, or querying graph databases. It applies to any system that represents complex relationships between entities for reasoning, search, or recommendation.
|
|
15
|
+
|
|
16
|
+
## Mandatory actions when this skill is active
|
|
17
|
+
|
|
18
|
+
### Before writing any code
|
|
19
|
+
|
|
20
|
+
1. **Define ontology structure** — Identify entity types (Person, Organization, Product, Event), relationship types (works_for, located_in, purchased, happened_at), and attributes (name, date, value). Document cardinality: one-to-one, one-to-many, many-to-many. Ontology is the schema for your knowledge graph.
|
|
21
|
+
2. **Select graph database** — Choose based on scale (thousands vs. billions of nodes), query patterns (simple lookups vs. multi-hop traversals), and ecosystem: Neo4j (property graph, Cypher), Amazon Neptune (supports RDF and property graphs), RDFox (reasoning and inference), or embedded graphs (NetworkX for prototypes). Benchmark query performance on your schema.
|
|
22
|
+
3. **Design entity resolution strategy** — Entities from multiple sources must be deduplicated (same person with different names, same product with different IDs). Define resolution rules: exact name match, fuzzy string matching (Levenshtein distance), embedding similarity, or human-in-the-loop confirmation. Test resolution accuracy on labeled data.
|
|
23
|
+
4. **Establish schema versioning** — Ontologies evolve as domain understanding improves. Version the schema with semantic versioning (v1.0, v1.1). Define migration paths for schema changes (add new relationship types, rename attributes). Ensure backward compatibility or provide migration scripts.
|
|
24
|
+
|
|
25
|
+
### During implementation
|
|
26
|
+
|
|
27
|
+
- **Extract entities and relationships from text** — Use named entity recognition (NER) for entity extraction and relation extraction models for relationships. Validate that extraction recall is high (>80% of entities are found) and precision is acceptable (>70% of extracted entities are correct). Fine-tune models on domain-specific data.
|
|
28
|
+
- **Implement entity linking** — Link extracted entities to canonical entities in the graph. Use fuzzy matching, embedding similarity, or knowledge base APIs (Wikidata, DBpedia). Handle ambiguity: "Apple" could be a fruit, a company, or a person's nickname. Disambiguate using context (surrounding words, known relationships).
|
|
29
|
+
- **Design relationship inference rules** — Add implicit relationships via rules: if A works_for B and B is_part_of C, then A works_for C (transitive closure). Use graph query languages (Cypher, SPARQL) or inference engines (RDFox, Pellet). Validate that inferred relationships are logically correct.
|
|
30
|
+
- **Normalize entity attributes** — Canonicalize names (lowercase, remove punctuation), dates (ISO 8601), and values (currency conversion). Inconsistent attributes break queries: "Microsoft" vs. "microsoft" vs. "Microsoft Corp." should resolve to the same entity.
|
|
31
|
+
- **Implement graph traversal optimizations** — Avoid Cartesian product explosions in multi-hop queries. Use query hints (index usage, join order), limit traversal depth (max 3 hops for most use cases), and cache frequent subgraph patterns. Measure query latency and optimize slow queries.
|
|
32
|
+
- **Version entities and relationships** — Track temporal validity: relationships have start and end dates (person worked at company from 2020 to 2023). Implement bitemporal modeling if you need to track both valid time (when the fact was true in the real world) and transaction time (when the fact was recorded in the database).
|
|
33
|
+
|
|
34
|
+
### After implementation
|
|
35
|
+
|
|
36
|
+
- **Validate graph completeness** — Measure coverage: % of entities from source data that are present in the graph, % of relationships that are captured. Incomplete graphs produce incorrect query results. Identify missing entities and relationships, then backfill.
|
|
37
|
+
- **Test query correctness** — Create a test suite of queries with known ground-truth answers. Validate that queries return expected results. Common failure modes: missing relationships, incorrect cardinality, transitive closure errors.
|
|
38
|
+
- **Measure query performance** — Benchmark query latency under realistic load. Target: simple lookups <10ms, multi-hop traversals <100ms. If slower, optimize indexes, limit traversal depth, or denormalize hot paths (precompute frequent traversals).
|
|
39
|
+
- **Audit for duplicate entities** — Run entity resolution on the entire graph post-construction. Identify entities that should be merged (similar names, same attributes). Merge duplicates and redirect relationships to canonical entities.
|
|
40
|
+
|
|
41
|
+
## Self-check before task completion
|
|
42
|
+
|
|
43
|
+
- [ ] Ontology defines entity types, relationship types, attributes, and cardinality constraints
|
|
44
|
+
- [ ] Graph database is selected and benchmarked on schema-specific query patterns
|
|
45
|
+
- [ ] Entity resolution strategy is defined and tested on labeled data (precision/recall metrics)
|
|
46
|
+
- [ ] Schema versioning is implemented with migration paths for schema changes
|
|
47
|
+
- [ ] Entity extraction achieves >80% recall and >70% precision on domain data
|
|
48
|
+
- [ ] Entity linking disambiguates entities using context and canonical knowledge bases
|
|
49
|
+
- [ ] Relationship inference rules are implemented and validated for logical correctness
|
|
50
|
+
- [ ] Entity attributes are normalized (names, dates, values) for consistent queries
|
|
51
|
+
- [ ] Graph traversal queries are optimized with indexes, depth limits, and subgraph caching
|
|
52
|
+
- [ ] Temporal validity is tracked with start/end dates for time-sensitive relationships
|
|
53
|
+
- [ ] Graph completeness is measured (% entities and relationships captured from source data)
|
|
54
|
+
- [ ] Query correctness is validated with ground-truth test suite
|
|
55
|
+
- [ ] Query latency is benchmarked (simple lookups <10ms, multi-hop <100ms)
|
|
56
|
+
- [ ] Duplicate entities are audited and merged with canonical entity resolution
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: knowledge-sharing-systems
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
min_mindforge_version: 10.1.0
|
|
5
|
+
status: stable
|
|
6
|
+
triggers: knowledge sharing, documentation culture, brown bag session, tech talk, decision log, tribal knowledge, bus factor, knowledge base design, knowledge transfer system, institutional memory, expertise sharing, learning organization
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Knowledge Sharing Systems
|
|
10
|
+
|
|
11
|
+
## When this skill activates
|
|
12
|
+
|
|
13
|
+
This skill activates when designing, evaluating, or improving how knowledge flows
|
|
14
|
+
within an engineering organization. It addresses bus factor reduction, documentation
|
|
15
|
+
culture, decision logging, and systematic approaches to converting tribal knowledge
|
|
16
|
+
into institutional memory.
|
|
17
|
+
|
|
18
|
+
## Mandatory actions when this skill is active
|
|
19
|
+
|
|
20
|
+
### Before
|
|
21
|
+
|
|
22
|
+
1. **Assess current state** — Where does knowledge currently live? (People's heads,
|
|
23
|
+
Slack threads, outdated wikis, code comments, nowhere?) Map the gaps.
|
|
24
|
+
2. **Identify bus factor risks** — Which components/systems have only 1-2 people who
|
|
25
|
+
understand them? These are critical vulnerabilities.
|
|
26
|
+
3. **Understand failure modes** — What happens when the knowledge holder is unavailable?
|
|
27
|
+
How long does it take a new person to become productive in each area?
|
|
28
|
+
|
|
29
|
+
### During
|
|
30
|
+
|
|
31
|
+
4. **Categorize knowledge types and appropriate capture methods:**
|
|
32
|
+
|
|
33
|
+
- **Explicit knowledge** (can be written down):
|
|
34
|
+
- Architecture Decision Records (ADRs) for non-obvious choices
|
|
35
|
+
- API documentation generated from code
|
|
36
|
+
- Runbooks for operational procedures
|
|
37
|
+
- README files for project context and setup
|
|
38
|
+
- Design documents for complex features
|
|
39
|
+
|
|
40
|
+
- **Tacit knowledge** (hard to articulate, best transferred person-to-person):
|
|
41
|
+
- Pair programming sessions (regular rotation)
|
|
42
|
+
- Shadowing on-call rotations
|
|
43
|
+
- Code review as teaching (explain the WHY in review comments)
|
|
44
|
+
- Mob programming for complex problems
|
|
45
|
+
- Recorded debugging sessions showing thought process
|
|
46
|
+
|
|
47
|
+
- **Tribal knowledge** (exists only in collective memory, needs active capture):
|
|
48
|
+
- "Why does this system do X?" interviews with long-tenured engineers
|
|
49
|
+
- Archaeological code tours (walk through old systems, document context)
|
|
50
|
+
- Decision archaeology (reconstruct rationale for old choices)
|
|
51
|
+
- Oral history capture before people leave
|
|
52
|
+
|
|
53
|
+
5. **Implement knowledge sharing systems:**
|
|
54
|
+
|
|
55
|
+
- **Decision logs** — Lightweight ADRs for all non-obvious choices. Template:
|
|
56
|
+
Context, Decision, Consequences, Status. Write at decision time, not after.
|
|
57
|
+
Low ceremony, high value.
|
|
58
|
+
|
|
59
|
+
- **Tech talks** — Bi-weekly internal presentations (30 min max). Rotate presenters.
|
|
60
|
+
Record all sessions. Topics: recent incidents, new technologies, deep dives
|
|
61
|
+
into system internals, lessons learned.
|
|
62
|
+
|
|
63
|
+
- **Onboarding paths** — Curated reading lists per domain/team. Progressive
|
|
64
|
+
complexity (week 1: overview, week 2: deep dive, week 3: contribute). Include
|
|
65
|
+
"who to ask" for each topic.
|
|
66
|
+
|
|
67
|
+
- **Brown bag sessions** — Informal lunch-and-learn. Low pressure, high exploration.
|
|
68
|
+
Can be external topics, book discussions, or show-and-tell of side projects.
|
|
69
|
+
|
|
70
|
+
- **Documentation sprints** — Dedicate one sprint per quarter to documentation
|
|
71
|
+
catch-up. Treat docs as first-class deliverables, not afterthoughts.
|
|
72
|
+
|
|
73
|
+
6. **Bus factor reduction strategies:**
|
|
74
|
+
- Pair programming rotation — No one works alone on critical systems for >2 weeks.
|
|
75
|
+
- Cross-team shadowing — Engineers spend time embedded in other teams quarterly.
|
|
76
|
+
- Documented decisions — If only one person knows WHY a decision was made, it is
|
|
77
|
+
organizational debt.
|
|
78
|
+
- Recorded walkthroughs — Screen-record explanations of complex systems. 10-minute
|
|
79
|
+
videos are more accessible than 50-page docs.
|
|
80
|
+
- Code ownership rotation — Periodically reassign code review duties to spread
|
|
81
|
+
understanding.
|
|
82
|
+
|
|
83
|
+
7. **Metrics to track:**
|
|
84
|
+
- **Bus factor per component** — Number of people who can independently maintain
|
|
85
|
+
each critical system. Target: minimum 3.
|
|
86
|
+
- **Time-to-productive** — How long until a new joiner can ship independently?
|
|
87
|
+
Track trend over time.
|
|
88
|
+
- **Documentation freshness** — When was each critical doc last updated? Flag
|
|
89
|
+
anything >6 months stale.
|
|
90
|
+
- **Knowledge sharing participation** — Who presents tech talks, who reviews across
|
|
91
|
+
teams, who pairs with new joiners?
|
|
92
|
+
|
|
93
|
+
### After
|
|
94
|
+
|
|
95
|
+
8. **Establish cadence** — Knowledge sharing is not a one-time project. Set recurring
|
|
96
|
+
schedules for tech talks, documentation reviews, and bus factor assessments.
|
|
97
|
+
9. **Reward sharing** — Include knowledge sharing in performance reviews. Recognize
|
|
98
|
+
people who write great docs, mentor others, or reduce bus factor.
|
|
99
|
+
10. **Audit quarterly** — Review bus factor scores, onboarding feedback, and
|
|
100
|
+
documentation freshness. Invest where gaps persist.
|
|
101
|
+
|
|
102
|
+
## Self-check before task completion
|
|
103
|
+
|
|
104
|
+
- [ ] Bus factor assessed for all critical systems (target: minimum 3 per component)
|
|
105
|
+
- [ ] Knowledge types categorized with appropriate capture methods
|
|
106
|
+
- [ ] Decision log system implemented (lightweight ADRs at minimum)
|
|
107
|
+
- [ ] Onboarding path documented for each team/domain
|
|
108
|
+
- [ ] Regular cadence established for tech talks or equivalent
|
|
109
|
+
- [ ] Documentation freshness tracked with staleness alerts
|
|
110
|
+
- [ ] Time-to-productive measured and trending downward
|
|
111
|
+
- [ ] Knowledge sharing recognized in performance evaluation
|
|
112
|
+
- [ ] Tribal knowledge capture plan for single-points-of-knowledge
|