agentic-qe 1.9.4 → 2.1.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/.claude/agents/qe-api-contract-validator.md +95 -1336
- package/.claude/agents/qe-chaos-engineer.md +152 -1211
- package/.claude/agents/qe-code-complexity.md +144 -707
- package/.claude/agents/qe-coverage-analyzer.md +147 -743
- package/.claude/agents/qe-deployment-readiness.md +143 -1496
- package/.claude/agents/qe-flaky-test-hunter.md +132 -1529
- package/.claude/agents/qe-fleet-commander.md +12 -12
- package/.claude/agents/qe-performance-tester.md +150 -886
- package/.claude/agents/qe-production-intelligence.md +155 -1396
- package/.claude/agents/qe-quality-analyzer.md +6 -6
- package/.claude/agents/qe-quality-gate.md +151 -648
- package/.claude/agents/qe-regression-risk-analyzer.md +132 -1150
- package/.claude/agents/qe-requirements-validator.md +149 -932
- package/.claude/agents/qe-security-scanner.md +157 -797
- package/.claude/agents/qe-test-data-architect.md +96 -1365
- package/.claude/agents/qe-test-executor.md +8 -8
- package/.claude/agents/qe-test-generator.md +145 -1540
- package/.claude/agents/qe-visual-tester.md +153 -1257
- package/.claude/agents/qx-partner.md +248 -0
- package/.claude/agents/subagents/qe-code-reviewer.md +40 -136
- package/.claude/agents/subagents/qe-coverage-gap-analyzer.md +40 -480
- package/.claude/agents/subagents/qe-data-generator.md +41 -125
- package/.claude/agents/subagents/qe-flaky-investigator.md +55 -411
- package/.claude/agents/subagents/qe-integration-tester.md +53 -141
- package/.claude/agents/subagents/qe-performance-validator.md +54 -130
- package/.claude/agents/subagents/qe-security-auditor.md +56 -114
- package/.claude/agents/subagents/qe-test-data-architect-sub.md +57 -548
- package/.claude/agents/subagents/qe-test-implementer.md +58 -551
- package/.claude/agents/subagents/qe-test-refactorer.md +65 -722
- package/.claude/agents/subagents/qe-test-writer.md +63 -726
- package/.claude/skills/accessibility-testing/SKILL.md +144 -692
- package/.claude/skills/agentic-quality-engineering/SKILL.md +176 -529
- package/.claude/skills/api-testing-patterns/SKILL.md +180 -560
- package/.claude/skills/brutal-honesty-review/SKILL.md +113 -603
- package/.claude/skills/bug-reporting-excellence/SKILL.md +116 -517
- package/.claude/skills/chaos-engineering-resilience/SKILL.md +127 -72
- package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +209 -404
- package/.claude/skills/code-review-quality/SKILL.md +158 -608
- package/.claude/skills/compatibility-testing/SKILL.md +148 -38
- package/.claude/skills/compliance-testing/SKILL.md +132 -63
- package/.claude/skills/consultancy-practices/SKILL.md +114 -446
- package/.claude/skills/context-driven-testing/SKILL.md +117 -381
- package/.claude/skills/contract-testing/SKILL.md +176 -141
- package/.claude/skills/database-testing/SKILL.md +137 -130
- package/.claude/skills/exploratory-testing-advanced/SKILL.md +160 -629
- package/.claude/skills/holistic-testing-pact/SKILL.md +140 -188
- package/.claude/skills/localization-testing/SKILL.md +145 -33
- package/.claude/skills/mobile-testing/SKILL.md +132 -448
- package/.claude/skills/mutation-testing/SKILL.md +147 -41
- package/.claude/skills/performance-testing/SKILL.md +200 -546
- package/.claude/skills/quality-metrics/SKILL.md +164 -519
- package/.claude/skills/refactoring-patterns/SKILL.md +132 -699
- package/.claude/skills/regression-testing/SKILL.md +120 -926
- package/.claude/skills/risk-based-testing/SKILL.md +157 -660
- package/.claude/skills/security-testing/SKILL.md +199 -538
- package/.claude/skills/sherlock-review/SKILL.md +163 -699
- package/.claude/skills/shift-left-testing/SKILL.md +161 -465
- package/.claude/skills/shift-right-testing/SKILL.md +161 -519
- package/.claude/skills/six-thinking-hats/SKILL.md +175 -1110
- package/.claude/skills/skills-manifest.json +683 -0
- package/.claude/skills/tdd-london-chicago/SKILL.md +131 -448
- package/.claude/skills/technical-writing/SKILL.md +103 -154
- package/.claude/skills/test-automation-strategy/SKILL.md +166 -772
- package/.claude/skills/test-data-management/SKILL.md +126 -910
- package/.claude/skills/test-design-techniques/SKILL.md +179 -89
- package/.claude/skills/test-environment-management/SKILL.md +136 -91
- package/.claude/skills/test-reporting-analytics/SKILL.md +169 -92
- package/.claude/skills/testability-scoring/README.md +71 -0
- package/.claude/skills/testability-scoring/SKILL.md +245 -0
- package/.claude/skills/testability-scoring/resources/templates/config.template.js +84 -0
- package/.claude/skills/testability-scoring/resources/templates/testability-scoring.spec.template.js +532 -0
- package/.claude/skills/testability-scoring/scripts/generate-html-report.js +1007 -0
- package/.claude/skills/testability-scoring/scripts/run-assessment.sh +70 -0
- package/.claude/skills/visual-testing-advanced/SKILL.md +155 -78
- package/.claude/skills/xp-practices/SKILL.md +151 -587
- package/CHANGELOG.md +110 -0
- package/README.md +55 -21
- package/dist/agents/QXPartnerAgent.d.ts +146 -0
- package/dist/agents/QXPartnerAgent.d.ts.map +1 -0
- package/dist/agents/QXPartnerAgent.js +1831 -0
- package/dist/agents/QXPartnerAgent.js.map +1 -0
- package/dist/agents/index.d.ts +1 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +82 -2
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.js +34 -31
- package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
- package/dist/cli/commands/debug/agent.d.ts.map +1 -1
- package/dist/cli/commands/debug/agent.js +19 -6
- package/dist/cli/commands/debug/agent.js.map +1 -1
- package/dist/cli/commands/debug/health-check.js +20 -7
- package/dist/cli/commands/debug/health-check.js.map +1 -1
- package/dist/cli/commands/init-claude-md-template.d.ts +1 -0
- package/dist/cli/commands/init-claude-md-template.d.ts.map +1 -1
- package/dist/cli/commands/init-claude-md-template.js +18 -3
- package/dist/cli/commands/init-claude-md-template.js.map +1 -1
- package/dist/cli/commands/workflow/cancel.d.ts.map +1 -1
- package/dist/cli/commands/workflow/cancel.js +4 -3
- package/dist/cli/commands/workflow/cancel.js.map +1 -1
- package/dist/cli/commands/workflow/list.d.ts.map +1 -1
- package/dist/cli/commands/workflow/list.js +4 -3
- package/dist/cli/commands/workflow/list.js.map +1 -1
- package/dist/cli/commands/workflow/pause.d.ts.map +1 -1
- package/dist/cli/commands/workflow/pause.js +4 -3
- package/dist/cli/commands/workflow/pause.js.map +1 -1
- package/dist/cli/init/claude-config.d.ts.map +1 -1
- package/dist/cli/init/claude-config.js +3 -8
- package/dist/cli/init/claude-config.js.map +1 -1
- package/dist/cli/init/claude-md.d.ts.map +1 -1
- package/dist/cli/init/claude-md.js +44 -2
- package/dist/cli/init/claude-md.js.map +1 -1
- package/dist/cli/init/database-init.js +1 -1
- package/dist/cli/init/index.d.ts.map +1 -1
- package/dist/cli/init/index.js +13 -6
- package/dist/cli/init/index.js.map +1 -1
- package/dist/cli/init/skills.d.ts.map +1 -1
- package/dist/cli/init/skills.js +2 -1
- package/dist/cli/init/skills.js.map +1 -1
- package/dist/core/SwarmCoordinator.d.ts +180 -0
- package/dist/core/SwarmCoordinator.d.ts.map +1 -0
- package/dist/core/SwarmCoordinator.js +473 -0
- package/dist/core/SwarmCoordinator.js.map +1 -0
- package/dist/core/memory/AgentDBIntegration.d.ts +24 -6
- package/dist/core/memory/AgentDBIntegration.d.ts.map +1 -1
- package/dist/core/memory/AgentDBIntegration.js +66 -10
- package/dist/core/memory/AgentDBIntegration.js.map +1 -1
- package/dist/core/memory/UnifiedMemoryCoordinator.d.ts +341 -0
- package/dist/core/memory/UnifiedMemoryCoordinator.d.ts.map +1 -0
- package/dist/core/memory/UnifiedMemoryCoordinator.js +986 -0
- package/dist/core/memory/UnifiedMemoryCoordinator.js.map +1 -0
- package/dist/core/memory/index.d.ts +5 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +23 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/core/metrics/MetricsAggregator.d.ts +228 -0
- package/dist/core/metrics/MetricsAggregator.d.ts.map +1 -0
- package/dist/core/metrics/MetricsAggregator.js +482 -0
- package/dist/core/metrics/MetricsAggregator.js.map +1 -0
- package/dist/core/metrics/index.d.ts +5 -0
- package/dist/core/metrics/index.d.ts.map +1 -0
- package/dist/core/metrics/index.js +11 -0
- package/dist/core/metrics/index.js.map +1 -0
- package/dist/core/optimization/SwarmOptimizer.d.ts +190 -0
- package/dist/core/optimization/SwarmOptimizer.d.ts.map +1 -0
- package/dist/core/optimization/SwarmOptimizer.js +648 -0
- package/dist/core/optimization/SwarmOptimizer.js.map +1 -0
- package/dist/core/optimization/index.d.ts +9 -0
- package/dist/core/optimization/index.d.ts.map +1 -0
- package/dist/core/optimization/index.js +25 -0
- package/dist/core/optimization/index.js.map +1 -0
- package/dist/core/optimization/types.d.ts +53 -0
- package/dist/core/optimization/types.d.ts.map +1 -0
- package/dist/core/optimization/types.js +6 -0
- package/dist/core/optimization/types.js.map +1 -0
- package/dist/core/orchestration/AdaptiveScheduler.d.ts +190 -0
- package/dist/core/orchestration/AdaptiveScheduler.d.ts.map +1 -0
- package/dist/core/orchestration/AdaptiveScheduler.js +460 -0
- package/dist/core/orchestration/AdaptiveScheduler.js.map +1 -0
- package/dist/core/orchestration/PriorityQueue.d.ts +54 -0
- package/dist/core/orchestration/PriorityQueue.d.ts.map +1 -0
- package/dist/core/orchestration/PriorityQueue.js +122 -0
- package/dist/core/orchestration/PriorityQueue.js.map +1 -0
- package/dist/core/orchestration/WorkflowOrchestrator.d.ts +189 -0
- package/dist/core/orchestration/WorkflowOrchestrator.d.ts.map +1 -0
- package/dist/core/orchestration/WorkflowOrchestrator.js +845 -0
- package/dist/core/orchestration/WorkflowOrchestrator.js.map +1 -0
- package/dist/core/orchestration/index.d.ts +7 -0
- package/dist/core/orchestration/index.d.ts.map +1 -0
- package/dist/core/orchestration/index.js +11 -0
- package/dist/core/orchestration/index.js.map +1 -0
- package/dist/core/orchestration/types.d.ts +96 -0
- package/dist/core/orchestration/types.d.ts.map +1 -0
- package/dist/core/orchestration/types.js +6 -0
- package/dist/core/orchestration/types.js.map +1 -0
- package/dist/core/recovery/CircuitBreaker.d.ts +176 -0
- package/dist/core/recovery/CircuitBreaker.d.ts.map +1 -0
- package/dist/core/recovery/CircuitBreaker.js +382 -0
- package/dist/core/recovery/CircuitBreaker.js.map +1 -0
- package/dist/core/recovery/RecoveryOrchestrator.d.ts +186 -0
- package/dist/core/recovery/RecoveryOrchestrator.d.ts.map +1 -0
- package/dist/core/recovery/RecoveryOrchestrator.js +476 -0
- package/dist/core/recovery/RecoveryOrchestrator.js.map +1 -0
- package/dist/core/recovery/RetryStrategy.d.ts +127 -0
- package/dist/core/recovery/RetryStrategy.d.ts.map +1 -0
- package/dist/core/recovery/RetryStrategy.js +314 -0
- package/dist/core/recovery/RetryStrategy.js.map +1 -0
- package/dist/core/recovery/index.d.ts +8 -0
- package/dist/core/recovery/index.d.ts.map +1 -0
- package/dist/core/recovery/index.js +27 -0
- package/dist/core/recovery/index.js.map +1 -0
- package/dist/core/skills/DependencyResolver.d.ts +99 -0
- package/dist/core/skills/DependencyResolver.d.ts.map +1 -0
- package/dist/core/skills/DependencyResolver.js +260 -0
- package/dist/core/skills/DependencyResolver.js.map +1 -0
- package/dist/core/skills/DynamicSkillLoader.d.ts +96 -0
- package/dist/core/skills/DynamicSkillLoader.d.ts.map +1 -0
- package/dist/core/skills/DynamicSkillLoader.js +353 -0
- package/dist/core/skills/DynamicSkillLoader.js.map +1 -0
- package/dist/core/skills/ManifestGenerator.d.ts +114 -0
- package/dist/core/skills/ManifestGenerator.d.ts.map +1 -0
- package/dist/core/skills/ManifestGenerator.js +449 -0
- package/dist/core/skills/ManifestGenerator.js.map +1 -0
- package/dist/core/skills/index.d.ts +9 -0
- package/dist/core/skills/index.d.ts.map +1 -0
- package/dist/core/skills/index.js +24 -0
- package/dist/core/skills/index.js.map +1 -0
- package/dist/core/skills/types.d.ts +118 -0
- package/dist/core/skills/types.d.ts.map +1 -0
- package/dist/core/skills/types.js +7 -0
- package/dist/core/skills/types.js.map +1 -0
- package/dist/core/transport/QUICTransport.d.ts +320 -0
- package/dist/core/transport/QUICTransport.d.ts.map +1 -0
- package/dist/core/transport/QUICTransport.js +711 -0
- package/dist/core/transport/QUICTransport.js.map +1 -0
- package/dist/core/transport/index.d.ts +40 -0
- package/dist/core/transport/index.d.ts.map +1 -0
- package/dist/core/transport/index.js +46 -0
- package/dist/core/transport/index.js.map +1 -0
- package/dist/core/transport/quic-loader.d.ts +123 -0
- package/dist/core/transport/quic-loader.d.ts.map +1 -0
- package/dist/core/transport/quic-loader.js +293 -0
- package/dist/core/transport/quic-loader.js.map +1 -0
- package/dist/core/transport/quic.d.ts +154 -0
- package/dist/core/transport/quic.d.ts.map +1 -0
- package/dist/core/transport/quic.js +214 -0
- package/dist/core/transport/quic.js.map +1 -0
- package/dist/mcp/server.d.ts +9 -9
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +1 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
- package/dist/mcp/services/AgentRegistry.js +4 -1
- package/dist/mcp/services/AgentRegistry.js.map +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/qx.d.ts +429 -0
- package/dist/types/qx.d.ts.map +1 -0
- package/dist/types/qx.js +71 -0
- package/dist/types/qx.js.map +1 -0
- package/dist/visualization/api/RestEndpoints.js +2 -2
- package/dist/visualization/api/RestEndpoints.js.map +1 -1
- package/dist/visualization/api/WebSocketServer.d.ts +44 -0
- package/dist/visualization/api/WebSocketServer.d.ts.map +1 -1
- package/dist/visualization/api/WebSocketServer.js +144 -23
- package/dist/visualization/api/WebSocketServer.js.map +1 -1
- package/dist/visualization/core/DataTransformer.d.ts +10 -0
- package/dist/visualization/core/DataTransformer.d.ts.map +1 -1
- package/dist/visualization/core/DataTransformer.js +60 -5
- package/dist/visualization/core/DataTransformer.js.map +1 -1
- package/dist/visualization/emit-event.d.ts +75 -0
- package/dist/visualization/emit-event.d.ts.map +1 -0
- package/dist/visualization/emit-event.js +213 -0
- package/dist/visualization/emit-event.js.map +1 -0
- package/dist/visualization/index.d.ts +1 -0
- package/dist/visualization/index.d.ts.map +1 -1
- package/dist/visualization/index.js +7 -1
- package/dist/visualization/index.js.map +1 -1
- package/docs/reference/skills.md +63 -1
- package/package.json +16 -58
|
@@ -1,665 +1,229 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: xp-practices
|
|
3
|
-
description: Apply XP practices including pair programming, ensemble programming, continuous integration, and sustainable pace. Use when implementing agile development practices, improving team collaboration, or adopting technical excellence practices.
|
|
3
|
+
description: "Apply XP practices including pair programming, ensemble programming, continuous integration, and sustainable pace. Use when implementing agile development practices, improving team collaboration, or adopting technical excellence practices."
|
|
4
|
+
category: methodology
|
|
5
|
+
priority: medium
|
|
6
|
+
tokenEstimate: 1000
|
|
7
|
+
agents: [qe-quality-analyzer, qe-test-executor, qe-code-reviewer]
|
|
8
|
+
implementation_status: optimized
|
|
9
|
+
optimization_version: 1.0
|
|
10
|
+
last_optimized: 2025-12-03
|
|
11
|
+
dependencies: []
|
|
12
|
+
quick_reference_card: true
|
|
13
|
+
tags: [xp, agile, pair-programming, tdd, continuous-integration, collaboration]
|
|
4
14
|
---
|
|
5
15
|
|
|
6
16
|
# Extreme Programming (XP) Practices
|
|
7
17
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
<default_to_action>
|
|
19
|
+
When applying XP practices:
|
|
20
|
+
1. START with practices that give immediate value
|
|
21
|
+
2. BUILD supporting practices gradually
|
|
22
|
+
3. ADAPT to your context
|
|
23
|
+
4. MEASURE results
|
|
24
|
+
|
|
25
|
+
**Core XP Practices (Prioritized):**
|
|
26
|
+
| Practice | Start Here | Why First |
|
|
27
|
+
|----------|------------|-----------|
|
|
28
|
+
| TDD | ✅ Yes | Foundation for everything |
|
|
29
|
+
| Continuous Integration | ✅ Yes | Fast feedback |
|
|
30
|
+
| Pair Programming | ✅ Yes | Knowledge sharing |
|
|
31
|
+
| Collective Ownership | After CI+TDD | Needs safety net |
|
|
32
|
+
| Small Releases | After CI | Infrastructure dependent |
|
|
33
|
+
|
|
34
|
+
**Pairing Quick Start:**
|
|
35
|
+
```
|
|
36
|
+
Driver-Navigator (Classic):
|
|
37
|
+
- Driver: Writes code
|
|
38
|
+
- Navigator: Reviews, thinks ahead
|
|
39
|
+
- Rotate every 20-30 min
|
|
21
40
|
|
|
22
|
-
|
|
41
|
+
Ping-Pong (with TDD):
|
|
42
|
+
A: Write failing test
|
|
43
|
+
B: Make test pass + refactor
|
|
44
|
+
B: Write next failing test
|
|
45
|
+
A: Make test pass + refactor
|
|
46
|
+
```
|
|
47
|
+
</default_to_action>
|
|
23
48
|
|
|
24
|
-
|
|
49
|
+
## Quick Reference Card
|
|
25
50
|
|
|
26
|
-
|
|
51
|
+
### The Five XP Values
|
|
27
52
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
53
|
+
| Value | Meaning | Practice |
|
|
54
|
+
|-------|---------|----------|
|
|
55
|
+
| **Communication** | Everyone knows what everyone does | Daily standups, pairing |
|
|
56
|
+
| **Simplicity** | Simplest thing that works | YAGNI, small design |
|
|
57
|
+
| **Feedback** | Get feedback early and often | TDD, CI, short iterations |
|
|
58
|
+
| **Courage** | Tell truth, adapt | Refactor, admit mistakes |
|
|
59
|
+
| **Respect** | Everyone contributes value | Sustainable pace, pairing |
|
|
32
60
|
|
|
33
|
-
|
|
34
|
-
```
|
|
35
|
-
Person A: Writes failing test
|
|
36
|
-
Person B: Makes test pass
|
|
37
|
-
Person B: Refactors
|
|
38
|
-
Person B: Writes next failing test
|
|
39
|
-
Person A: Makes test pass
|
|
40
|
-
[Continue...]
|
|
41
|
-
```
|
|
61
|
+
### Core Practices
|
|
42
62
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
63
|
+
| Practice | Description | Benefit |
|
|
64
|
+
|----------|-------------|---------|
|
|
65
|
+
| **Pair Programming** | Two devs, one workstation | Quality + knowledge sharing |
|
|
66
|
+
| **TDD** | Red-Green-Refactor | Confidence + design |
|
|
67
|
+
| **CI** | Integrate multiple times/day | Fast feedback |
|
|
68
|
+
| **Collective Ownership** | Anyone can change anything | No bottlenecks |
|
|
69
|
+
| **Sustainable Pace** | 40-hour weeks | Long-term productivity |
|
|
70
|
+
| **Small Releases** | Ship frequently | Risk reduction |
|
|
46
71
|
|
|
47
|
-
|
|
72
|
+
---
|
|
48
73
|
|
|
49
|
-
|
|
50
|
-
- Complex or risky code
|
|
51
|
-
- Learning new technology
|
|
52
|
-
- Onboarding new team members
|
|
53
|
-
- Critical bug fixes
|
|
54
|
-
- Architectural decisions
|
|
74
|
+
## Pair Programming
|
|
55
75
|
|
|
56
|
-
|
|
57
|
-
- Regular feature development
|
|
58
|
-
- Refactoring sessions
|
|
59
|
-
- Code reviews (live pairing review)
|
|
76
|
+
### When to Pair
|
|
60
77
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
78
|
+
| Context | Pair? | Why |
|
|
79
|
+
|---------|-------|-----|
|
|
80
|
+
| Complex/risky code | ✅ Always | Needs multiple perspectives |
|
|
81
|
+
| New technology | ✅ Always | Learning accelerator |
|
|
82
|
+
| Onboarding | ✅ Always | Knowledge transfer |
|
|
83
|
+
| Critical bugs | ✅ Always | Two heads better |
|
|
84
|
+
| Simple tasks | ❌ Skip | Not worth overhead |
|
|
85
|
+
| Research spikes | ❌ Skip | Pair to discuss findings |
|
|
66
86
|
|
|
67
|
-
|
|
87
|
+
### Pairing Dos and Don'ts
|
|
68
88
|
|
|
69
89
|
**Do:**
|
|
70
|
-
- ✅ Switch roles
|
|
90
|
+
- ✅ Switch roles every 20-30 min
|
|
71
91
|
- ✅ Take breaks together
|
|
72
|
-
- ✅
|
|
92
|
+
- ✅ Think out loud
|
|
73
93
|
- ✅ Ask questions
|
|
74
|
-
- ✅ Challenge ideas respectfully
|
|
75
94
|
- ✅ Keep sessions 2-4 hours max
|
|
76
95
|
|
|
77
96
|
**Don't:**
|
|
78
97
|
- ❌ Grab keyboard without asking
|
|
79
|
-
- ❌ Check phone
|
|
80
|
-
- ❌ Dominate
|
|
81
|
-
- ❌ Pair all day
|
|
82
|
-
- ❌ Pair with same person exclusively
|
|
83
|
-
|
|
84
|
-
#### Remote Pairing Tools
|
|
98
|
+
- ❌ Check phone while pairing
|
|
99
|
+
- ❌ Dominate conversation
|
|
100
|
+
- ❌ Pair all day (exhausting)
|
|
85
101
|
|
|
86
|
-
|
|
87
|
-
- **Tuple** - Low-latency screen sharing for pairing
|
|
88
|
-
- **Zoom/Meet** - Standard video with screen share
|
|
89
|
-
- **tmux/screen** - Terminal sharing for CLI work
|
|
90
|
-
|
|
91
|
-
### 2. Ensemble Programming (Mob Programming)
|
|
102
|
+
---
|
|
92
103
|
|
|
93
|
-
|
|
104
|
+
## Ensemble (Mob) Programming
|
|
94
105
|
|
|
95
|
-
|
|
106
|
+
**Setup:** 3+ developers, one screen, rotating driver
|
|
96
107
|
|
|
97
108
|
```
|
|
98
|
-
[
|
|
99
|
-
|
|
100
|
-
[
|
|
101
|
-
|
|
102
|
-
[Driver]
|
|
103
|
-
← ← ←
|
|
109
|
+
[Screen]
|
|
110
|
+
↓
|
|
111
|
+
[Driver] ← Directions from navigators
|
|
112
|
+
↑
|
|
104
113
|
[Navigator 1] [Navigator 2] [Navigator 3]
|
|
105
114
|
```
|
|
106
115
|
|
|
107
|
-
**Rotation:** Driver switches every 5-10
|
|
108
|
-
|
|
109
|
-
#### Ensemble Patterns
|
|
110
|
-
|
|
111
|
-
**Strong-Style Mob**
|
|
112
|
-
- Navigators direct, driver types
|
|
113
|
-
- Driver doesn't add own ideas while driving
|
|
114
|
-
- Forces clear communication
|
|
115
|
-
|
|
116
|
-
**Rotating Facilitator**
|
|
117
|
-
- One person manages time/rotation
|
|
118
|
-
- Keeps discussion focused
|
|
119
|
-
- Rotates like driver position
|
|
120
|
-
|
|
121
|
-
**Expert Learning**
|
|
122
|
-
- Expert explains while driving
|
|
123
|
-
- Others learn and ask questions
|
|
124
|
-
- Useful for knowledge transfer
|
|
116
|
+
**Rotation:** Driver switches every 5-10 min
|
|
125
117
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
**Great for:**
|
|
118
|
+
**Best for:**
|
|
129
119
|
- Complex problem solving
|
|
130
|
-
- Architectural decisions
|
|
120
|
+
- Architectural decisions
|
|
131
121
|
- Learning new frameworks
|
|
132
|
-
- Kickstarting difficult features
|
|
133
122
|
- Resolving blockers
|
|
134
123
|
|
|
135
|
-
|
|
136
|
-
- Simple, well-understood tasks
|
|
137
|
-
- When people need deep focus
|
|
138
|
-
- Long-term (unsustainable)
|
|
139
|
-
|
|
140
|
-
### 3. Continuous Integration
|
|
141
|
-
|
|
142
|
-
**Definition:** Integrate code into shared repository frequently (multiple times per day), with automated build and tests.
|
|
124
|
+
---
|
|
143
125
|
|
|
144
|
-
|
|
126
|
+
## Continuous Integration
|
|
145
127
|
|
|
128
|
+
**CI Workflow:**
|
|
146
129
|
```
|
|
147
|
-
Developer:
|
|
148
130
|
1. Pull latest from main
|
|
149
|
-
2. Make small change (<2
|
|
131
|
+
2. Make small change (<2 hrs work)
|
|
150
132
|
3. Run tests locally (all pass)
|
|
151
|
-
4. Commit and push
|
|
133
|
+
4. Commit and push
|
|
152
134
|
5. CI runs tests automatically
|
|
153
|
-
6. If
|
|
154
|
-
|
|
155
|
-
Pipeline:
|
|
156
|
-
main ← commit
|
|
157
|
-
↓
|
|
158
|
-
[Run Tests]
|
|
159
|
-
↓
|
|
160
|
-
[Build]
|
|
161
|
-
↓
|
|
162
|
-
[Deploy to Staging]
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
#### CI Best Practices
|
|
166
|
-
|
|
167
|
-
**Commit frequently:**
|
|
168
|
-
- Small commits (< 2 hours of work)
|
|
169
|
-
- Each commit should pass all tests
|
|
170
|
-
- Commit to main/trunk (no long-lived branches)
|
|
171
|
-
|
|
172
|
-
**Keep build fast:**
|
|
173
|
-
- Full build + tests < 10 minutes
|
|
174
|
-
- Faster feedback = more valuable
|
|
175
|
-
- Parallelize slow tests
|
|
176
|
-
|
|
177
|
-
**Fix broken builds immediately:**
|
|
178
|
-
- Broken build = top priority
|
|
179
|
-
- Don't commit more code until fixed
|
|
180
|
-
- Revert commit if fix takes too long
|
|
181
|
-
|
|
182
|
-
**Automate everything:**
|
|
183
|
-
- Tests run automatically
|
|
184
|
-
- Build happens automatically
|
|
185
|
-
- Deploy to staging automatically
|
|
186
|
-
|
|
187
|
-
### 4. Test-Driven Development (TDD)
|
|
188
|
-
|
|
189
|
-
(See `tdd-london-chicago` skill for deep dive)
|
|
190
|
-
|
|
191
|
-
**Red-Green-Refactor cycle:**
|
|
192
|
-
1. Write failing test (Red)
|
|
193
|
-
2. Write minimal code to pass (Green)
|
|
194
|
-
3. Refactor while keeping tests green
|
|
195
|
-
|
|
196
|
-
**XP emphasis:** Tests as executable specifications, safety net for refactoring.
|
|
197
|
-
|
|
198
|
-
### 5. Simple Design
|
|
199
|
-
|
|
200
|
-
**Four Rules of Simple Design** (Kent Beck):
|
|
201
|
-
1. Passes all tests
|
|
202
|
-
2. Reveals intention (clear, expressive)
|
|
203
|
-
3. No duplication (DRY principle)
|
|
204
|
-
4. Fewest elements (no speculative code)
|
|
205
|
-
|
|
206
|
-
**Apply in order - tests first!**
|
|
207
|
-
|
|
208
|
-
#### Examples
|
|
209
|
-
|
|
210
|
-
**Not simple:**
|
|
211
|
-
```javascript
|
|
212
|
-
// Speculative generalization
|
|
213
|
-
class PaymentProcessor {
|
|
214
|
-
process(payment, options = {}) {
|
|
215
|
-
// Supports 15 payment types we might need someday
|
|
216
|
-
// Has configuration for every possible scenario
|
|
217
|
-
// 500 lines of "just in case" code
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
**Simple:**
|
|
223
|
-
```javascript
|
|
224
|
-
// Just what we need today
|
|
225
|
-
class PaymentProcessor {
|
|
226
|
-
processCreditCard(cardInfo) {
|
|
227
|
-
// Does one thing well
|
|
228
|
-
// 30 lines of clear code
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
// Add complexity only when needed
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
### 6. Refactoring
|
|
236
|
-
|
|
237
|
-
**Definition:** Improving code structure without changing behavior.
|
|
238
|
-
|
|
239
|
-
#### When to Refactor
|
|
240
|
-
|
|
241
|
-
**The Rule of Three:**
|
|
242
|
-
1. First time: Just do it
|
|
243
|
-
2. Second time: Wince and duplicate
|
|
244
|
-
3. Third time: Refactor
|
|
245
|
-
|
|
246
|
-
**Refactor when:**
|
|
247
|
-
- Tests are green
|
|
248
|
-
- You see duplication
|
|
249
|
-
- Code is hard to understand
|
|
250
|
-
- Adding feature reveals poor design
|
|
251
|
-
- During green phase of TDD
|
|
252
|
-
|
|
253
|
-
**Don't refactor when:**
|
|
254
|
-
- Tests are failing
|
|
255
|
-
- Under deadline pressure (address later)
|
|
256
|
-
- Code works and rarely changes
|
|
257
|
-
|
|
258
|
-
#### Safe Refactoring
|
|
259
|
-
|
|
260
|
-
**Always:**
|
|
261
|
-
1. Have tests that pass
|
|
262
|
-
2. Refactor in small steps
|
|
263
|
-
3. Run tests after each step
|
|
264
|
-
4. Commit working code frequently
|
|
265
|
-
|
|
266
|
-
**Common Refactorings:**
|
|
267
|
-
- Extract method
|
|
268
|
-
- Rename for clarity
|
|
269
|
-
- Remove duplication
|
|
270
|
-
- Introduce parameter object
|
|
271
|
-
- Replace conditional with polymorphism
|
|
272
|
-
|
|
273
|
-
### 7. Collective Code Ownership
|
|
274
|
-
|
|
275
|
-
**Principle:** Anyone can improve any part of the codebase.
|
|
276
|
-
|
|
277
|
-
**Benefits:**
|
|
278
|
-
- No bottlenecks (no waiting for "that one person")
|
|
279
|
-
- Knowledge spreads across team
|
|
280
|
-
- Code quality improves (more eyes)
|
|
281
|
-
- Bus factor > 1
|
|
282
|
-
|
|
283
|
-
**Requirements:**
|
|
284
|
-
- Comprehensive test suite (safety net)
|
|
285
|
-
- Coding standards (consistency)
|
|
286
|
-
- Continuous integration (catch issues fast)
|
|
287
|
-
- Code reviews or pairing (maintain quality)
|
|
288
|
-
|
|
289
|
-
**In practice:**
|
|
290
|
-
```
|
|
291
|
-
❌ "That's Alice's module, only she can change it"
|
|
292
|
-
✅ "I see an issue in this module, I'll pair with Alice to fix it"
|
|
293
|
-
✅ "I need to change this module, I'll write tests first"
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
### 8. Coding Standards
|
|
297
|
-
|
|
298
|
-
**Purpose:** Consistency makes collaboration easier.
|
|
299
|
-
|
|
300
|
-
**What to standardize:**
|
|
301
|
-
- Formatting (use auto-formatter: Prettier, Black)
|
|
302
|
-
- Naming conventions
|
|
303
|
-
- File structure
|
|
304
|
-
- Testing patterns
|
|
305
|
-
- Documentation style
|
|
306
|
-
|
|
307
|
-
**How to maintain:**
|
|
308
|
-
- Automated linting (ESLint, Pylint)
|
|
309
|
-
- Pre-commit hooks
|
|
310
|
-
- CI enforcement
|
|
311
|
-
- Pair/ensemble programming (natural alignment)
|
|
312
|
-
|
|
313
|
-
**Don't:**
|
|
314
|
-
- Have 50-page style guides no one reads
|
|
315
|
-
- Enforce arbitrary preferences
|
|
316
|
-
- Spend hours debating tabs vs spaces (use formatter)
|
|
317
|
-
|
|
318
|
-
### 9. Sustainable Pace
|
|
319
|
-
|
|
320
|
-
**Principle:** Team should work at a pace they can sustain indefinitely.
|
|
321
|
-
|
|
322
|
-
**40-hour work week:**
|
|
323
|
-
- No routine overtime
|
|
324
|
-
- Regular hours = sustainable productivity
|
|
325
|
-
- Tired developers write bugs
|
|
326
|
-
|
|
327
|
-
**Warning signs of unsustainable pace:**
|
|
328
|
-
- Regular late nights/weekends
|
|
329
|
-
- Increasing bug rate
|
|
330
|
-
- Declining code quality
|
|
331
|
-
- Team burnout/turnover
|
|
332
|
-
- Decreased morale
|
|
333
|
-
|
|
334
|
-
**How to maintain:**
|
|
335
|
-
- Realistic estimates
|
|
336
|
-
- Buffer time in plans
|
|
337
|
-
- Say no to unrealistic deadlines
|
|
338
|
-
- Measure velocity, plan accordingly
|
|
339
|
-
- Take vacations
|
|
340
|
-
|
|
341
|
-
### 10. Small Releases
|
|
342
|
-
|
|
343
|
-
**Principle:** Release working software frequently.
|
|
344
|
-
|
|
345
|
-
**Benefits:**
|
|
346
|
-
- Fast feedback from users
|
|
347
|
-
- Reduced risk (small changes)
|
|
348
|
-
- Easier to debug (what changed?)
|
|
349
|
-
- Business value delivered sooner
|
|
350
|
-
|
|
351
|
-
**How small?**
|
|
352
|
-
- Deploy to production: daily or weekly
|
|
353
|
-
- Internal release: multiple times per day
|
|
354
|
-
- Feature flags for incomplete work
|
|
355
|
-
|
|
356
|
-
**Continuous Deployment:**
|
|
357
|
-
```
|
|
358
|
-
Commit → CI Tests → Deploy Staging → Automated Tests → Deploy Production
|
|
359
|
-
[All automated, happens multiple times per day]
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
### 11. On-Site Customer
|
|
363
|
-
|
|
364
|
-
**Modern interpretation:** Product Owner embedded with team.
|
|
365
|
-
|
|
366
|
-
**Customer responsibilities:**
|
|
367
|
-
- Writes user stories
|
|
368
|
-
- Prioritizes backlog
|
|
369
|
-
- Answers questions immediately
|
|
370
|
-
- Accepts completed work
|
|
371
|
-
- Makes scope decisions
|
|
372
|
-
|
|
373
|
-
**Not realistic:** Customer physically present 40hrs/week
|
|
374
|
-
|
|
375
|
-
**Practical compromise:**
|
|
376
|
-
- Daily standup attendance
|
|
377
|
-
- Available for questions (Slack/quick calls)
|
|
378
|
-
- Sprint planning and review
|
|
379
|
-
- Regular demo sessions
|
|
380
|
-
|
|
381
|
-
### 12. Metaphor / Ubiquitous Language
|
|
382
|
-
|
|
383
|
-
**Principle:** Shared vocabulary between technical and non-technical team members.
|
|
384
|
-
|
|
385
|
-
**Example - E-commerce System:**
|
|
386
|
-
```
|
|
387
|
-
Shared language:
|
|
388
|
-
- "Cart" (not "session shopping container")
|
|
389
|
-
- "Checkout" (not "payment initialization workflow")
|
|
390
|
-
- "Order" (not "purchase transaction record")
|
|
391
|
-
|
|
392
|
-
Everyone uses same terms:
|
|
393
|
-
- Product owner writes stories using these words
|
|
394
|
-
- Developers name classes/methods using these words
|
|
395
|
-
- Tests use these words
|
|
396
|
-
- Documentation uses these words
|
|
397
|
-
```
|
|
398
|
-
|
|
399
|
-
**Benefits:**
|
|
400
|
-
- Clearer communication
|
|
401
|
-
- Code reflects business domain
|
|
402
|
-
- Less translation needed
|
|
403
|
-
- Easier onboarding
|
|
404
|
-
|
|
405
|
-
## Combining XP Practices
|
|
406
|
-
|
|
407
|
-
### Practice Synergies
|
|
408
|
-
|
|
409
|
-
**TDD + Pair Programming**
|
|
135
|
+
6. If fail → fix immediately
|
|
410
136
|
```
|
|
411
|
-
Ping-pong pairing with TDD:
|
|
412
|
-
Person A writes test → Person B makes it pass
|
|
413
|
-
High quality code, fast feedback, knowledge sharing
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
**Collective Ownership + CI + Tests**
|
|
417
|
-
```
|
|
418
|
-
Anyone can change anything because:
|
|
419
|
-
- Tests catch regressions immediately
|
|
420
|
-
- CI runs tests on every commit
|
|
421
|
-
- Broken builds fixed immediately
|
|
422
|
-
No fear of stepping on toes
|
|
423
|
-
```
|
|
424
|
-
|
|
425
|
-
**Simple Design + Refactoring**
|
|
426
|
-
```
|
|
427
|
-
Start with simplest design
|
|
428
|
-
When requirements change → refactor
|
|
429
|
-
Tests give confidence to refactor
|
|
430
|
-
Never build more than needed
|
|
431
|
-
```
|
|
432
|
-
|
|
433
|
-
## Adapting XP for Your Context
|
|
434
|
-
|
|
435
|
-
### Startup Context
|
|
436
|
-
- **Keep:** TDD, CI, Simple Design, Small Releases
|
|
437
|
-
- **Adapt:** Pair occasionally (not always), lighter standards
|
|
438
|
-
- **Skip:** Might not need dedicated on-site customer
|
|
439
|
-
|
|
440
|
-
### Enterprise Context
|
|
441
|
-
- **Keep:** All practices, especially sustainable pace
|
|
442
|
-
- **Adapt:** More formal standards, documentation requirements
|
|
443
|
-
- **Add:** Architecture reviews, security scans
|
|
444
|
-
|
|
445
|
-
### Remote Team
|
|
446
|
-
- **Keep:** All core practices
|
|
447
|
-
- **Adapt:** Remote pairing tools, async communication
|
|
448
|
-
- **Add:** Over-communicate, document decisions
|
|
449
|
-
|
|
450
|
-
### Legacy Codebase
|
|
451
|
-
- **Start with:** Tests for changes, CI, Refactoring
|
|
452
|
-
- **Build towards:** TDD for new code, Collective ownership
|
|
453
|
-
- **Be patient:** Can't adopt everything at once
|
|
454
|
-
|
|
455
|
-
## Common Objections (and Responses)
|
|
456
|
-
|
|
457
|
-
**"Pair programming is twice as slow"**
|
|
458
|
-
→ Studies show 15% slower to write, 15% fewer bugs, better design. Net positive.
|
|
459
|
-
|
|
460
|
-
**"We don't have time for TDD"**
|
|
461
|
-
→ You don't have time NOT to. Debugging takes longer than writing tests.
|
|
462
|
-
|
|
463
|
-
**"Continuous integration is too hard to set up"**
|
|
464
|
-
→ Start simple: GitHub Actions with one test. Build from there.
|
|
465
|
-
|
|
466
|
-
**"Collective ownership will create chaos"**
|
|
467
|
-
→ Only with poor tests and no CI. Fix those first.
|
|
468
|
-
|
|
469
|
-
**"40-hour weeks won't work for our deadlines"**
|
|
470
|
-
→ Your deadlines are based on unsustainable pace. Adjust estimates.
|
|
471
137
|
|
|
472
|
-
|
|
138
|
+
**Best Practices:**
|
|
139
|
+
- Commit frequently (small changes)
|
|
140
|
+
- Keep build fast (<10 min)
|
|
141
|
+
- Fix broken builds immediately
|
|
142
|
+
- Never commit to broken build
|
|
473
143
|
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
**Ensemble Testing Sessions**
|
|
477
|
-
- 3-5 people exploring together
|
|
478
|
-
- Share testing heuristics in real-time
|
|
479
|
-
- Rapid bug discovery and investigation
|
|
480
|
-
|
|
481
|
-
**Test Code Pairing**
|
|
482
|
-
- Pair on test automation
|
|
483
|
-
- Share testing patterns
|
|
484
|
-
- Improve test quality
|
|
485
|
-
|
|
486
|
-
**Quality as Team Responsibility**
|
|
487
|
-
- Developers write tests
|
|
488
|
-
- QE does exploratory testing
|
|
489
|
-
- Everyone owns quality
|
|
490
|
-
|
|
491
|
-
**Continuous Testing**
|
|
492
|
-
- Tests run on every commit
|
|
493
|
-
- Fast feedback on quality
|
|
494
|
-
- No separate QE phase
|
|
495
|
-
|
|
496
|
-
## Measuring XP Success
|
|
497
|
-
|
|
498
|
-
**Code Quality Metrics:**
|
|
499
|
-
- Test coverage trend
|
|
500
|
-
- Defect density
|
|
501
|
-
- Code churn
|
|
502
|
-
|
|
503
|
-
**Team Health Metrics:**
|
|
504
|
-
- Velocity consistency
|
|
505
|
-
- Team satisfaction surveys
|
|
506
|
-
- Turnover rate
|
|
507
|
-
|
|
508
|
-
**Delivery Metrics:**
|
|
509
|
-
- Deployment frequency
|
|
510
|
-
- Lead time for changes
|
|
511
|
-
- Mean time to recovery
|
|
512
|
-
|
|
513
|
-
**Don't measure:**
|
|
514
|
-
- Lines of code written
|
|
515
|
-
- Hours worked
|
|
516
|
-
- Number of commits
|
|
517
|
-
|
|
518
|
-
## Resources
|
|
144
|
+
---
|
|
519
145
|
|
|
520
|
-
|
|
521
|
-
- **Extreme Programming Explained** by Kent Beck
|
|
522
|
-
- **Extreme Programming Installed** by Jeffries, Anderson, Hendrickson
|
|
523
|
-
- **Pair Programming Illuminated** by Williams & Kessler
|
|
146
|
+
## Four Rules of Simple Design
|
|
524
147
|
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
-
|
|
528
|
-
-
|
|
148
|
+
(In priority order)
|
|
149
|
+
1. **Passes all tests** - Works correctly
|
|
150
|
+
2. **Reveals intention** - Clear, expressive code
|
|
151
|
+
3. **No duplication** - DRY principle
|
|
152
|
+
4. **Fewest elements** - No speculative code
|
|
529
153
|
|
|
530
|
-
|
|
154
|
+
---
|
|
531
155
|
|
|
532
|
-
|
|
156
|
+
## Agent Integration
|
|
533
157
|
|
|
534
|
-
**qe-test-generator** + Human QE:
|
|
535
158
|
```typescript
|
|
536
|
-
//
|
|
537
|
-
|
|
538
|
-
const
|
|
159
|
+
// Agent-human pair testing
|
|
160
|
+
const charter = "Test payment edge cases";
|
|
161
|
+
const tests = await Task("Generate Tests", { charter }, "qe-test-generator");
|
|
162
|
+
const reviewed = await human.review(tests);
|
|
163
|
+
await Task("Implement", { tests: reviewed }, "qe-test-generator");
|
|
539
164
|
|
|
540
|
-
//
|
|
541
|
-
|
|
165
|
+
// Continuous integration with agents
|
|
166
|
+
await Task("Risk Analysis", { prDiff }, "qe-regression-risk-analyzer");
|
|
167
|
+
await Task("Generate Tests", { changes: prDiff }, "qe-test-generator");
|
|
168
|
+
await Task("Execute Tests", { scope: 'affected' }, "qe-test-executor");
|
|
542
169
|
|
|
543
|
-
//
|
|
544
|
-
const
|
|
545
|
-
|
|
546
|
-
// Agent implements refinements
|
|
547
|
-
await qe-test-generator.implement(refinedTest);
|
|
170
|
+
// Sustainable pace: agents handle grunt work
|
|
171
|
+
const agentWork = ['regression', 'data-generation', 'coverage-analysis'];
|
|
172
|
+
const humanWork = ['exploratory', 'risk-assessment', 'strategy'];
|
|
548
173
|
```
|
|
549
174
|
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
```typescript
|
|
553
|
-
// Mob testing: Multiple agents + human coordinator
|
|
554
|
-
const ensemble = await FleetManager.startEnsemble({
|
|
555
|
-
facilitator: 'human',
|
|
556
|
-
participants: [
|
|
557
|
-
'qe-test-generator',
|
|
558
|
-
'qe-coverage-analyzer',
|
|
559
|
-
'qe-security-scanner'
|
|
560
|
-
],
|
|
561
|
-
rotation: '10min',
|
|
562
|
-
charter: 'Design test strategy for new payment API'
|
|
563
|
-
});
|
|
564
|
-
|
|
565
|
-
// Human directs, agents execute and suggest
|
|
566
|
-
// Rotate which agent is "driving" every 10 minutes
|
|
567
|
-
```
|
|
568
|
-
|
|
569
|
-
### Continuous Integration with Agents
|
|
570
|
-
|
|
571
|
-
```yaml
|
|
572
|
-
# AI agents in CI pipeline
|
|
573
|
-
name: XP CI with Agents
|
|
574
|
-
|
|
575
|
-
on: [push]
|
|
576
|
-
|
|
577
|
-
jobs:
|
|
578
|
-
test:
|
|
579
|
-
steps:
|
|
580
|
-
# Agent runs risk analysis
|
|
581
|
-
- name: Risk Analysis
|
|
582
|
-
run: aqe agent run qe-regression-risk-analyzer
|
|
583
|
-
|
|
584
|
-
# Agent generates tests for changes
|
|
585
|
-
- name: Generate Tests
|
|
586
|
-
run: aqe agent run qe-test-generator
|
|
175
|
+
---
|
|
587
176
|
|
|
588
|
-
|
|
589
|
-
- name: Execute Tests
|
|
590
|
-
run: aqe agent run qe-test-executor
|
|
177
|
+
## Agent Coordination Hints
|
|
591
178
|
|
|
592
|
-
|
|
593
|
-
- name: Coverage Check
|
|
594
|
-
run: aqe agent run qe-coverage-analyzer
|
|
179
|
+
### Memory Namespace
|
|
595
180
|
```
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
// Any team member can improve any test
|
|
602
|
-
// Agents ensure consistency
|
|
603
|
-
|
|
604
|
-
await qe-quality-analyzer.enforceStandards({
|
|
605
|
-
scope: 'all-tests',
|
|
606
|
-
standards: ['naming-conventions', 'test-structure', 'assertions'],
|
|
607
|
-
autoFix: true // Agent fixes simple violations
|
|
608
|
-
});
|
|
181
|
+
aqe/xp-practices/
|
|
182
|
+
├── pairing-sessions/* - Pair/ensemble session logs
|
|
183
|
+
├── ci-metrics/* - CI health metrics
|
|
184
|
+
├── velocity/* - Team velocity data
|
|
185
|
+
└── retrospectives/* - XP retrospective notes
|
|
609
186
|
```
|
|
610
187
|
|
|
611
|
-
###
|
|
612
|
-
|
|
188
|
+
### Fleet Coordination
|
|
613
189
|
```typescript
|
|
614
|
-
|
|
615
|
-
|
|
190
|
+
const xpFleet = await FleetManager.coordinate({
|
|
191
|
+
strategy: 'xp-workflow',
|
|
616
192
|
agents: [
|
|
617
|
-
'
|
|
618
|
-
'
|
|
619
|
-
'
|
|
620
|
-
'Coverage gap analysis',
|
|
621
|
-
'Performance monitoring'
|
|
193
|
+
'qe-test-generator', // TDD support
|
|
194
|
+
'qe-test-executor', // CI integration
|
|
195
|
+
'qe-code-reviewer' // Collective ownership
|
|
622
196
|
],
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
'Risk assessment',
|
|
626
|
-
'Test strategy decisions',
|
|
627
|
-
'Domain-specific edge cases',
|
|
628
|
-
'Stakeholder communication'
|
|
629
|
-
]
|
|
630
|
-
};
|
|
631
|
-
|
|
632
|
-
// Result: 40-hour work week, sustainable, high productivity
|
|
197
|
+
topology: 'parallel'
|
|
198
|
+
});
|
|
633
199
|
```
|
|
634
200
|
|
|
635
201
|
---
|
|
636
202
|
|
|
637
|
-
##
|
|
203
|
+
## Common Objections
|
|
638
204
|
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
205
|
+
| Objection | Response |
|
|
206
|
+
|-----------|----------|
|
|
207
|
+
| "Pairing is 2x slower" | 15% slower writing, 15% fewer bugs, net positive |
|
|
208
|
+
| "No time for TDD" | Debugging takes longer than testing |
|
|
209
|
+
| "CI is hard to setup" | Start simple: one action, one test |
|
|
210
|
+
| "Collective ownership = chaos" | Only without tests + CI |
|
|
643
211
|
|
|
644
|
-
|
|
645
|
-
- [tdd-london-chicago](../tdd-london-chicago/) - TDD within XP workflow
|
|
646
|
-
- [refactoring-patterns](../refactoring-patterns/) - Safe refactoring techniques
|
|
647
|
-
- [code-review-quality](../code-review-quality/) - Review as pairing alternative
|
|
212
|
+
---
|
|
648
213
|
|
|
649
|
-
|
|
650
|
-
- [
|
|
651
|
-
- [
|
|
214
|
+
## Related Skills
|
|
215
|
+
- [tdd-london-chicago](../tdd-london-chicago/) - TDD deep dive
|
|
216
|
+
- [refactoring-patterns](../refactoring-patterns/) - Safe refactoring
|
|
217
|
+
- [pair-programming](../pair-programming/) - AI-assisted pairing
|
|
652
218
|
|
|
653
219
|
---
|
|
654
220
|
|
|
655
221
|
## Remember
|
|
656
222
|
|
|
657
|
-
XP practices work
|
|
658
|
-
-
|
|
659
|
-
-
|
|
660
|
-
-
|
|
661
|
-
-
|
|
662
|
-
|
|
663
|
-
**The goal:** Sustainable delivery of high-quality software through technical excellence and teamwork.
|
|
223
|
+
**XP practices work as a system.** Don't cherry-pick randomly:
|
|
224
|
+
- TDD enables collective ownership
|
|
225
|
+
- CI enables small releases
|
|
226
|
+
- Pairing enables collective ownership
|
|
227
|
+
- Sustainable pace enables everything
|
|
664
228
|
|
|
665
|
-
**With Agents
|
|
229
|
+
**With Agents:** Agents amplify XP. Pair humans with agents. Agents handle repetitive work, humans provide judgment and creativity.
|