kiro-agent-team 1.0.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/.kiro/README.md +228 -0
- package/.kiro/agents/backend-engineer.json +6 -0
- package/.kiro/agents/backend-engineer.md +643 -0
- package/.kiro/agents/database-specialist.json +6 -0
- package/.kiro/agents/database-specialist.md +390 -0
- package/.kiro/agents/development-logger.json +6 -0
- package/.kiro/agents/development-logger.md +265 -0
- package/.kiro/agents/devops-engineer.json +6 -0
- package/.kiro/agents/devops-engineer.md +287 -0
- package/.kiro/agents/frontend-architect.json +6 -0
- package/.kiro/agents/frontend-architect.md +1032 -0
- package/.kiro/agents/hooks/backend-engineer-hooks.yaml +540 -0
- package/.kiro/agents/hooks/database-specialist-hooks.yaml +488 -0
- package/.kiro/agents/hooks/development-logger-hooks.yaml +361 -0
- package/.kiro/agents/hooks/devops-engineer-hooks.yaml +345 -0
- package/.kiro/agents/hooks/frontend-architect-hooks.yaml +521 -0
- package/.kiro/agents/hooks/project-manager-hooks.yaml +513 -0
- package/.kiro/agents/hooks/security-specialist-hooks.yaml +358 -0
- package/.kiro/agents/hooks/test-orchestrator-hooks.yaml +380 -0
- package/.kiro/agents/hooks/ui-ux-designer-hooks.yaml +353 -0
- package/.kiro/agents/project-manager.json +6 -0
- package/.kiro/agents/project-manager.md +344 -0
- package/.kiro/agents/prompts/backend-engineer-system.md +815 -0
- package/.kiro/agents/prompts/database-specialist-system.md +332 -0
- package/.kiro/agents/prompts/development-logger-system.md +232 -0
- package/.kiro/agents/prompts/devops-engineer-system.md +260 -0
- package/.kiro/agents/prompts/frontend-architect-system.md +305 -0
- package/.kiro/agents/prompts/project-manager-system.md +285 -0
- package/.kiro/agents/prompts/security-specialist-system.md +231 -0
- package/.kiro/agents/prompts/test-orchestrator-system.md +214 -0
- package/.kiro/agents/prompts/ui-ux-designer-system.md +270 -0
- package/.kiro/agents/security-specialist.json +6 -0
- package/.kiro/agents/security-specialist.md +277 -0
- package/.kiro/agents/test-orchestrator.json +6 -0
- package/.kiro/agents/test-orchestrator.md +266 -0
- package/.kiro/agents/ui-ux-designer.json +6 -0
- package/.kiro/agents/ui-ux-designer.md +284 -0
- package/.kiro/devlog/00-START-HERE.md +444 -0
- package/.kiro/devlog/COMPLETE-WORKFLOW.md +553 -0
- package/.kiro/devlog/DEVLOG-INTEGRATION.md +413 -0
- package/.kiro/devlog/DEVLOG-PROCESS-FLOWS.md +484 -0
- package/.kiro/devlog/DEVLOG-QUICK-REF.md +299 -0
- package/.kiro/devlog/DEVLOG.md +22 -0
- package/.kiro/devlog/IMPLEMENTATION-COMPLETE.txt +434 -0
- package/.kiro/devlog/IMPLEMENTATION-SUMMARY.md +358 -0
- package/.kiro/devlog/README.md +363 -0
- package/.kiro/devlog/devlog-update.bat +136 -0
- package/.kiro/devlog/devlog-update.sh +275 -0
- package/.kiro/devlog/feature-completion-hook.bat +78 -0
- package/.kiro/devlog/feature-completion-hook.sh +84 -0
- package/.kiro/documentation/cli.md +31 -0
- package/.kiro/documentation/docs_cli.md +41 -0
- package/.kiro/documentation/docs_cli_authentication.md +43 -0
- package/.kiro/documentation/docs_cli_autocomplete.md +132 -0
- package/.kiro/documentation/docs_cli_billing.md +31 -0
- package/.kiro/documentation/docs_cli_billing_contact-support.md +43 -0
- package/.kiro/documentation/docs_cli_billing_managing-taxes.md +67 -0
- package/.kiro/documentation/docs_cli_billing_related-questions.md +49 -0
- package/.kiro/documentation/docs_cli_billing_subscription-portal.md +31 -0
- package/.kiro/documentation/docs_cli_chat.md +84 -0
- package/.kiro/documentation/docs_cli_chat_configuration.md +40 -0
- package/.kiro/documentation/docs_cli_chat_context.md +258 -0
- package/.kiro/documentation/docs_cli_chat_git-aware-selection.md +41 -0
- package/.kiro/documentation/docs_cli_chat_images.md +53 -0
- package/.kiro/documentation/docs_cli_chat_manage-prompts.md +216 -0
- package/.kiro/documentation/docs_cli_chat_model-selection.md +153 -0
- package/.kiro/documentation/docs_cli_chat_permissions.md +68 -0
- package/.kiro/documentation/docs_cli_chat_planning-agent.md +230 -0
- package/.kiro/documentation/docs_cli_chat_responding.md +123 -0
- package/.kiro/documentation/docs_cli_chat_security.md +87 -0
- package/.kiro/documentation/docs_cli_chat_subagents.md +77 -0
- package/.kiro/documentation/docs_cli_code-intelligence.md +251 -0
- package/.kiro/documentation/docs_cli_custom-agents.md +37 -0
- package/.kiro/documentation/docs_cli_custom-agents_configuration-reference.md +941 -0
- package/.kiro/documentation/docs_cli_custom-agents_creating.md +93 -0
- package/.kiro/documentation/docs_cli_custom-agents_examples.md +360 -0
- package/.kiro/documentation/docs_cli_custom-agents_troubleshooting.md +180 -0
- package/.kiro/documentation/docs_cli_enterprise_billing.md +33 -0
- package/.kiro/documentation/docs_cli_enterprise_concepts.md +34 -0
- package/.kiro/documentation/docs_cli_enterprise_getting-started.md +19 -0
- package/.kiro/documentation/docs_cli_enterprise_iam.md +251 -0
- package/.kiro/documentation/docs_cli_enterprise_monitor-and-track.md +15 -0
- package/.kiro/documentation/docs_cli_enterprise_monitor-and-track_dashboard.md +62 -0
- package/.kiro/documentation/docs_cli_enterprise_monitor-and-track_prompt-logging.md +165 -0
- package/.kiro/documentation/docs_cli_enterprise_monitor-and-track_user-activity.md +123 -0
- package/.kiro/documentation/docs_cli_enterprise_settings.md +15 -0
- package/.kiro/documentation/docs_cli_enterprise_subscribe.md +36 -0
- package/.kiro/documentation/docs_cli_enterprise_subscription-management.md +55 -0
- package/.kiro/documentation/docs_cli_enterprise_supported-regions.md +39 -0
- package/.kiro/documentation/docs_cli_experimental.md +282 -0
- package/.kiro/documentation/docs_cli_experimental_checkpointing.md +439 -0
- package/.kiro/documentation/docs_cli_experimental_delegate.md +422 -0
- package/.kiro/documentation/docs_cli_experimental_knowledge-management.md +449 -0
- package/.kiro/documentation/docs_cli_experimental_tangent-mode.md +357 -0
- package/.kiro/documentation/docs_cli_experimental_thinking.md +331 -0
- package/.kiro/documentation/docs_cli_experimental_todo-lists.md +385 -0
- package/.kiro/documentation/docs_cli_hooks.md +207 -0
- package/.kiro/documentation/docs_cli_installation.md +235 -0
- package/.kiro/documentation/docs_cli_mcp.md +106 -0
- package/.kiro/documentation/docs_cli_mcp_configuration.md +294 -0
- package/.kiro/documentation/docs_cli_mcp_examples.md +273 -0
- package/.kiro/documentation/docs_cli_mcp_governance.md +436 -0
- package/.kiro/documentation/docs_cli_mcp_security.md +77 -0
- package/.kiro/documentation/docs_cli_migrating-from-q.md +129 -0
- package/.kiro/documentation/docs_cli_privacy-and-security.md +83 -0
- package/.kiro/documentation/docs_cli_privacy-and-security_compliance-validation.md +17 -0
- package/.kiro/documentation/docs_cli_privacy-and-security_data-protection.md +104 -0
- package/.kiro/documentation/docs_cli_privacy-and-security_firewalls.md +26 -0
- package/.kiro/documentation/docs_cli_privacy-and-security_infrastructure-security.md +10 -0
- package/.kiro/documentation/docs_cli_privacy-and-security_vpc-endpoints.md +41 -0
- package/.kiro/documentation/docs_cli_reference_built-in-tools.md +624 -0
- package/.kiro/documentation/docs_cli_reference_cli-commands.md +689 -0
- package/.kiro/documentation/docs_cli_reference_settings.md +294 -0
- package/.kiro/documentation/docs_cli_reference_slash-commands.md +559 -0
- package/.kiro/documentation/docs_cli_steering.md +84 -0
- package/.kiro/guides/AGENT_WORKFLOW_GUIDE.md +294 -0
- package/.kiro/guides/DEVLOG.md +882 -0
- package/.kiro/guides/IMPLEMENTATION_EXAMPLES.md +611 -0
- package/.kiro/guides/PIV Loop.md +122 -0
- package/.kiro/guides/PIV Loop.png +0 -0
- package/.kiro/guides/PIVLoop.png +0 -0
- package/.kiro/guides/QUICK_REFERENCE.md +202 -0
- package/.kiro/guides/README.md +149 -0
- package/.kiro/guides/advanced-patterns.md +514 -0
- package/.kiro/guides/agent-coordination.md +434 -0
- package/.kiro/guides/core-workflows.md +409 -0
- package/.kiro/guides/emergency-procedures.md +414 -0
- package/.kiro/guides/project-evaluation.md +534 -0
- package/.kiro/guides/quality-assurance.md +431 -0
- package/.kiro/guides/quick-start.md +235 -0
- package/.kiro/guides/troubleshooting.md +575 -0
- package/.kiro/guides/walkthroughs.md +711 -0
- package/.kiro/prompts/add-to-devlog.md +263 -0
- package/.kiro/prompts/code-review-fix.md +18 -0
- package/.kiro/prompts/code-review-hackathon.md +167 -0
- package/.kiro/prompts/code-review-security.md +454 -0
- package/.kiro/prompts/code-review.md +113 -0
- package/.kiro/prompts/create-prd.md +151 -0
- package/.kiro/prompts/execute-backend.md +257 -0
- package/.kiro/prompts/execute-frontend.md +438 -0
- package/.kiro/prompts/execute-logging.md +491 -0
- package/.kiro/prompts/execute-security.md +482 -0
- package/.kiro/prompts/execute-testing.md +528 -0
- package/.kiro/prompts/execute.md +101 -0
- package/.kiro/prompts/execution-report.md +72 -0
- package/.kiro/prompts/implement-fix.md +228 -0
- package/.kiro/prompts/plan-feature.md +433 -0
- package/.kiro/prompts/prime.md +73 -0
- package/.kiro/prompts/quality-metrics.md +622 -0
- package/.kiro/prompts/quickstart.md +318 -0
- package/.kiro/prompts/rca.md +220 -0
- package/.kiro/prompts/system-review.md +189 -0
- package/README.md +32 -0
- package/bin/cli.js +97 -0
- package/package.json +33 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Prime: Load Project Context
|
|
2
|
+
|
|
3
|
+
## Objective
|
|
4
|
+
Build comprehensive understanding of the codebase by analyzing structure, documentation, and key files.
|
|
5
|
+
|
|
6
|
+
## Process
|
|
7
|
+
|
|
8
|
+
### 1. Analyze Project Structure
|
|
9
|
+
If this is a git repository, list tracked files:
|
|
10
|
+
```bash
|
|
11
|
+
git ls-files
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Show directory structure:
|
|
15
|
+
```bash
|
|
16
|
+
tree -L 3 -I 'node_modules|__pycache__|.git|dist|build'
|
|
17
|
+
```
|
|
18
|
+
(or use `ls -la` and explore key directories if tree is not available)
|
|
19
|
+
|
|
20
|
+
### 2. Read Core Documentation
|
|
21
|
+
- Read README files at project root and major directories
|
|
22
|
+
- Read any architecture documentation
|
|
23
|
+
- Review steering documents for project context (already loaded in context)
|
|
24
|
+
- Avoid reading anything in examples or content_plan folders
|
|
25
|
+
|
|
26
|
+
### 3. Identify Key Files
|
|
27
|
+
Based on the structure, identify and read:
|
|
28
|
+
- Main entry points (main.py, index.ts, app.py, etc.)
|
|
29
|
+
- Core configuration files (pyproject.toml, package.json, tsconfig.json)
|
|
30
|
+
- Key model/schema definitions
|
|
31
|
+
- Important service or controller files
|
|
32
|
+
|
|
33
|
+
### 4. Understand Current State (if git repository)
|
|
34
|
+
Check recent activity:
|
|
35
|
+
```bash
|
|
36
|
+
git log -10 --oneline
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Check current branch and status:
|
|
40
|
+
```bash
|
|
41
|
+
git status
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Output Report
|
|
45
|
+
Provide a concise summary covering:
|
|
46
|
+
|
|
47
|
+
### Project Overview
|
|
48
|
+
- Purpose and type of application
|
|
49
|
+
- Primary technologies and frameworks
|
|
50
|
+
- Current version/state
|
|
51
|
+
|
|
52
|
+
### Architecture
|
|
53
|
+
- Overall structure and organization
|
|
54
|
+
- Key architectural patterns identified
|
|
55
|
+
- Important directories and their purposes
|
|
56
|
+
|
|
57
|
+
### Tech Stack
|
|
58
|
+
- Languages and versions
|
|
59
|
+
- Frameworks and major libraries
|
|
60
|
+
- Build tools and package managers
|
|
61
|
+
- Testing frameworks
|
|
62
|
+
|
|
63
|
+
### Core Principles
|
|
64
|
+
- Code style and conventions observed
|
|
65
|
+
- Documentation standards
|
|
66
|
+
- Testing approach
|
|
67
|
+
|
|
68
|
+
### Current State
|
|
69
|
+
- Active branch (if git repository)
|
|
70
|
+
- Recent changes or development focus (if git repository)
|
|
71
|
+
- Any immediate observations or concerns
|
|
72
|
+
|
|
73
|
+
**Make this summary easy to scan - use bullet points and clear headers.**
|
|
@@ -0,0 +1,622 @@
|
|
|
1
|
+
# Quality Metrics Collection and Analysis
|
|
2
|
+
|
|
3
|
+
## Automated Quality Metrics Framework
|
|
4
|
+
|
|
5
|
+
This framework provides systematic collection, analysis, and reporting of quality metrics across all development activities, enabling data-driven process improvement and quality assurance.
|
|
6
|
+
|
|
7
|
+
## Quality Metrics Categories
|
|
8
|
+
|
|
9
|
+
### 1. Code Quality Metrics
|
|
10
|
+
**Static Analysis Metrics:**
|
|
11
|
+
- Code complexity (cyclomatic complexity, cognitive complexity)
|
|
12
|
+
- Code duplication percentage and hotspots
|
|
13
|
+
- Technical debt ratio and accumulation trends
|
|
14
|
+
- Code coverage percentage and trend analysis
|
|
15
|
+
- Security vulnerability count and severity distribution
|
|
16
|
+
- Code style compliance and consistency scores
|
|
17
|
+
|
|
18
|
+
**Dynamic Analysis Metrics:**
|
|
19
|
+
- Runtime performance characteristics
|
|
20
|
+
- Memory usage patterns and leak detection
|
|
21
|
+
- Error rates and exception frequency
|
|
22
|
+
- API response times and throughput
|
|
23
|
+
- Database query performance and optimization opportunities
|
|
24
|
+
- Resource utilization efficiency
|
|
25
|
+
|
|
26
|
+
### 2. Development Process Metrics
|
|
27
|
+
**Velocity and Productivity:**
|
|
28
|
+
- Feature delivery velocity (story points per sprint)
|
|
29
|
+
- Code commit frequency and size distribution
|
|
30
|
+
- Pull request cycle time (creation to merge)
|
|
31
|
+
- Build success rate and failure analysis
|
|
32
|
+
- Deployment frequency and success rate
|
|
33
|
+
- Time to resolution for bugs and issues
|
|
34
|
+
|
|
35
|
+
**Collaboration and Communication:**
|
|
36
|
+
- Agent handoff efficiency and context preservation
|
|
37
|
+
- Code review participation and effectiveness
|
|
38
|
+
- Knowledge sharing frequency and quality
|
|
39
|
+
- Cross-functional collaboration patterns
|
|
40
|
+
- Communication clarity and completeness scores
|
|
41
|
+
- Conflict resolution time and effectiveness
|
|
42
|
+
|
|
43
|
+
### 3. Quality Assurance Metrics
|
|
44
|
+
**Testing Effectiveness:**
|
|
45
|
+
- Test coverage percentage by type (unit, integration, e2e)
|
|
46
|
+
- Test execution time and efficiency trends
|
|
47
|
+
- Test failure rate and root cause analysis
|
|
48
|
+
- Bug detection rate in different testing phases
|
|
49
|
+
- Regression test effectiveness and coverage
|
|
50
|
+
- Performance test results and benchmark compliance
|
|
51
|
+
|
|
52
|
+
**Defect Management:**
|
|
53
|
+
- Bug discovery rate by phase and severity
|
|
54
|
+
- Mean time to detection (MTTD) for issues
|
|
55
|
+
- Mean time to resolution (MTTR) for bugs
|
|
56
|
+
- Defect escape rate to production
|
|
57
|
+
- Customer-reported issue frequency and severity
|
|
58
|
+
- Quality gate compliance and bypass frequency
|
|
59
|
+
|
|
60
|
+
### 4. User Experience Metrics
|
|
61
|
+
**Performance and Accessibility:**
|
|
62
|
+
- Core Web Vitals (LCP, FID, CLS) compliance
|
|
63
|
+
- Page load times and performance budgets
|
|
64
|
+
- Accessibility compliance (WCAG 2.1 AA/AAA)
|
|
65
|
+
- Cross-browser compatibility scores
|
|
66
|
+
- Mobile responsiveness and usability
|
|
67
|
+
- User interface consistency and design system adherence
|
|
68
|
+
|
|
69
|
+
**Usability and Satisfaction:**
|
|
70
|
+
- User task completion rates and efficiency
|
|
71
|
+
- User error rates and recovery patterns
|
|
72
|
+
- Feature adoption rates and usage patterns
|
|
73
|
+
- User satisfaction scores and feedback sentiment
|
|
74
|
+
- Support ticket volume and resolution time
|
|
75
|
+
- User retention and engagement metrics
|
|
76
|
+
|
|
77
|
+
## Quality Metrics Collection Implementation
|
|
78
|
+
|
|
79
|
+
### Automated Metrics Collection System
|
|
80
|
+
```typescript
|
|
81
|
+
// Quality Metrics Collection Framework
|
|
82
|
+
interface QualityMetrics {
|
|
83
|
+
timestamp: Date;
|
|
84
|
+
sessionId: string;
|
|
85
|
+
category: MetricCategory;
|
|
86
|
+
metrics: Record<string, number | string | boolean>;
|
|
87
|
+
context: MetricContext;
|
|
88
|
+
trends: MetricTrend[];
|
|
89
|
+
alerts: QualityAlert[];
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
class QualityMetricsCollector {
|
|
93
|
+
private collectors: Map<MetricCategory, MetricCollector> = new Map();
|
|
94
|
+
private analyzers: Map<MetricCategory, MetricAnalyzer> = new Map();
|
|
95
|
+
private reporters: QualityReporter[] = [];
|
|
96
|
+
|
|
97
|
+
async collectAllMetrics(sessionId: string): Promise<QualityMetrics[]> {
|
|
98
|
+
const metrics: QualityMetrics[] = [];
|
|
99
|
+
|
|
100
|
+
// Collect code quality metrics
|
|
101
|
+
const codeMetrics = await this.collectCodeQualityMetrics(sessionId);
|
|
102
|
+
metrics.push(codeMetrics);
|
|
103
|
+
|
|
104
|
+
// Collect process metrics
|
|
105
|
+
const processMetrics = await this.collectProcessMetrics(sessionId);
|
|
106
|
+
metrics.push(processMetrics);
|
|
107
|
+
|
|
108
|
+
// Collect testing metrics
|
|
109
|
+
const testingMetrics = await this.collectTestingMetrics(sessionId);
|
|
110
|
+
metrics.push(testingMetrics);
|
|
111
|
+
|
|
112
|
+
// Collect performance metrics
|
|
113
|
+
const performanceMetrics = await this.collectPerformanceMetrics(sessionId);
|
|
114
|
+
metrics.push(performanceMetrics);
|
|
115
|
+
|
|
116
|
+
// Analyze trends and generate alerts
|
|
117
|
+
for (const metric of metrics) {
|
|
118
|
+
metric.trends = await this.analyzeTrends(metric);
|
|
119
|
+
metric.alerts = await this.generateAlerts(metric);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return metrics;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
async collectCodeQualityMetrics(sessionId: string): Promise<QualityMetrics> {
|
|
126
|
+
const startTime = Date.now();
|
|
127
|
+
|
|
128
|
+
// Run static analysis tools
|
|
129
|
+
const eslintResults = await this.runESLint();
|
|
130
|
+
const sonarResults = await this.runSonarAnalysis();
|
|
131
|
+
const coverageResults = await this.runCoverageAnalysis();
|
|
132
|
+
const securityResults = await this.runSecurityScan();
|
|
133
|
+
|
|
134
|
+
const metrics = {
|
|
135
|
+
// Complexity metrics
|
|
136
|
+
cyclomaticComplexity: sonarResults.complexity.cyclomatic,
|
|
137
|
+
cognitiveComplexity: sonarResults.complexity.cognitive,
|
|
138
|
+
|
|
139
|
+
// Quality metrics
|
|
140
|
+
codeSmells: sonarResults.issues.codeSmells,
|
|
141
|
+
technicalDebt: sonarResults.debt.total,
|
|
142
|
+
duplication: sonarResults.duplication.percentage,
|
|
143
|
+
|
|
144
|
+
// Coverage metrics
|
|
145
|
+
lineCoverage: coverageResults.lines.percentage,
|
|
146
|
+
branchCoverage: coverageResults.branches.percentage,
|
|
147
|
+
functionCoverage: coverageResults.functions.percentage,
|
|
148
|
+
|
|
149
|
+
// Security metrics
|
|
150
|
+
vulnerabilities: securityResults.vulnerabilities.length,
|
|
151
|
+
securityHotspots: securityResults.hotspots.length,
|
|
152
|
+
|
|
153
|
+
// Style and consistency
|
|
154
|
+
eslintErrors: eslintResults.errorCount,
|
|
155
|
+
eslintWarnings: eslintResults.warningCount,
|
|
156
|
+
|
|
157
|
+
// Collection metadata
|
|
158
|
+
collectionTime: Date.now() - startTime,
|
|
159
|
+
toolsUsed: ['eslint', 'sonar', 'jest', 'snyk']
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
return {
|
|
163
|
+
timestamp: new Date(),
|
|
164
|
+
sessionId,
|
|
165
|
+
category: 'code_quality',
|
|
166
|
+
metrics,
|
|
167
|
+
context: await this.getCodeContext(sessionId),
|
|
168
|
+
trends: [],
|
|
169
|
+
alerts: []
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
async collectProcessMetrics(sessionId: string): Promise<QualityMetrics> {
|
|
174
|
+
const session = await this.getSession(sessionId);
|
|
175
|
+
const gitMetrics = await this.collectGitMetrics(sessionId);
|
|
176
|
+
const buildMetrics = await this.collectBuildMetrics(sessionId);
|
|
177
|
+
const deploymentMetrics = await this.collectDeploymentMetrics(sessionId);
|
|
178
|
+
|
|
179
|
+
const metrics = {
|
|
180
|
+
// Development velocity
|
|
181
|
+
sessionDuration: session.duration,
|
|
182
|
+
linesOfCodeChanged: gitMetrics.linesChanged,
|
|
183
|
+
filesModified: gitMetrics.filesModified,
|
|
184
|
+
commitsCount: gitMetrics.commitsCount,
|
|
185
|
+
|
|
186
|
+
// Build and deployment
|
|
187
|
+
buildTime: buildMetrics.duration,
|
|
188
|
+
buildSuccess: buildMetrics.success,
|
|
189
|
+
deploymentTime: deploymentMetrics.duration,
|
|
190
|
+
deploymentSuccess: deploymentMetrics.success,
|
|
191
|
+
|
|
192
|
+
// Collaboration
|
|
193
|
+
agentHandoffs: session.collaboratingAgents.length,
|
|
194
|
+
communicationEffectiveness: session.communicationScore,
|
|
195
|
+
contextPreservation: session.contextScore,
|
|
196
|
+
|
|
197
|
+
// Quality gates
|
|
198
|
+
qualityGatesPassed: session.qualityGates.passed,
|
|
199
|
+
qualityGatesFailed: session.qualityGates.failed,
|
|
200
|
+
qualityGatesBypass: session.qualityGates.bypassed
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
return {
|
|
204
|
+
timestamp: new Date(),
|
|
205
|
+
sessionId,
|
|
206
|
+
category: 'process',
|
|
207
|
+
metrics,
|
|
208
|
+
context: await this.getProcessContext(sessionId),
|
|
209
|
+
trends: [],
|
|
210
|
+
alerts: []
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
async collectTestingMetrics(sessionId: string): Promise<QualityMetrics> {
|
|
215
|
+
const testResults = await this.runAllTests();
|
|
216
|
+
const performanceTests = await this.runPerformanceTests();
|
|
217
|
+
const accessibilityTests = await this.runAccessibilityTests();
|
|
218
|
+
|
|
219
|
+
const metrics = {
|
|
220
|
+
// Test execution
|
|
221
|
+
totalTests: testResults.total,
|
|
222
|
+
passedTests: testResults.passed,
|
|
223
|
+
failedTests: testResults.failed,
|
|
224
|
+
skippedTests: testResults.skipped,
|
|
225
|
+
testExecutionTime: testResults.duration,
|
|
226
|
+
|
|
227
|
+
// Test coverage
|
|
228
|
+
unitTestCoverage: testResults.coverage.unit,
|
|
229
|
+
integrationTestCoverage: testResults.coverage.integration,
|
|
230
|
+
e2eTestCoverage: testResults.coverage.e2e,
|
|
231
|
+
|
|
232
|
+
// Performance testing
|
|
233
|
+
averageResponseTime: performanceTests.averageResponseTime,
|
|
234
|
+
maxResponseTime: performanceTests.maxResponseTime,
|
|
235
|
+
throughput: performanceTests.throughput,
|
|
236
|
+
errorRate: performanceTests.errorRate,
|
|
237
|
+
|
|
238
|
+
// Accessibility testing
|
|
239
|
+
accessibilityScore: accessibilityTests.score,
|
|
240
|
+
wcagViolations: accessibilityTests.violations.length,
|
|
241
|
+
contrastIssues: accessibilityTests.contrastIssues,
|
|
242
|
+
keyboardNavigationIssues: accessibilityTests.keyboardIssues,
|
|
243
|
+
|
|
244
|
+
// Quality indicators
|
|
245
|
+
testReliability: this.calculateTestReliability(testResults),
|
|
246
|
+
testMaintainability: this.calculateTestMaintainability(testResults)
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
return {
|
|
250
|
+
timestamp: new Date(),
|
|
251
|
+
sessionId,
|
|
252
|
+
category: 'testing',
|
|
253
|
+
metrics,
|
|
254
|
+
context: await this.getTestingContext(sessionId),
|
|
255
|
+
trends: [],
|
|
256
|
+
alerts: []
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### Quality Trend Analysis
|
|
263
|
+
```typescript
|
|
264
|
+
// Quality Trend Analysis System
|
|
265
|
+
class QualityTrendAnalyzer {
|
|
266
|
+
async analyzeTrends(metrics: QualityMetrics[]): Promise<QualityTrendReport> {
|
|
267
|
+
const report: QualityTrendReport = {
|
|
268
|
+
timeframe: this.getTimeframe(metrics),
|
|
269
|
+
categories: {},
|
|
270
|
+
overallTrend: 'stable',
|
|
271
|
+
keyInsights: [],
|
|
272
|
+
recommendations: [],
|
|
273
|
+
alerts: []
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
// Analyze trends by category
|
|
277
|
+
for (const category of this.getCategories(metrics)) {
|
|
278
|
+
const categoryMetrics = metrics.filter(m => m.category === category);
|
|
279
|
+
report.categories[category] = await this.analyzeCategoryTrend(categoryMetrics);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
// Generate overall assessment
|
|
283
|
+
report.overallTrend = this.calculateOverallTrend(report.categories);
|
|
284
|
+
|
|
285
|
+
// Extract key insights
|
|
286
|
+
report.keyInsights = await this.extractKeyInsights(report.categories);
|
|
287
|
+
|
|
288
|
+
// Generate recommendations
|
|
289
|
+
report.recommendations = await this.generateRecommendations(report);
|
|
290
|
+
|
|
291
|
+
// Identify alerts
|
|
292
|
+
report.alerts = await this.identifyQualityAlerts(report);
|
|
293
|
+
|
|
294
|
+
return report;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
async analyzeCategoryTrend(metrics: QualityMetrics[]): Promise<CategoryTrend> {
|
|
298
|
+
const trend: CategoryTrend = {
|
|
299
|
+
direction: 'stable',
|
|
300
|
+
velocity: 0,
|
|
301
|
+
confidence: 0,
|
|
302
|
+
keyMetrics: {},
|
|
303
|
+
patterns: [],
|
|
304
|
+
anomalies: []
|
|
305
|
+
};
|
|
306
|
+
|
|
307
|
+
// Calculate trend direction and velocity
|
|
308
|
+
for (const metricName of this.getMetricNames(metrics)) {
|
|
309
|
+
const values = metrics.map(m => m.metrics[metricName] as number);
|
|
310
|
+
const trendAnalysis = this.calculateTrendDirection(values);
|
|
311
|
+
|
|
312
|
+
trend.keyMetrics[metricName] = {
|
|
313
|
+
current: values[values.length - 1],
|
|
314
|
+
previous: values[values.length - 2],
|
|
315
|
+
change: trendAnalysis.change,
|
|
316
|
+
direction: trendAnalysis.direction,
|
|
317
|
+
significance: trendAnalysis.significance
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
// Identify patterns
|
|
322
|
+
trend.patterns = await this.identifyPatterns(metrics);
|
|
323
|
+
|
|
324
|
+
// Detect anomalies
|
|
325
|
+
trend.anomalies = await this.detectAnomalies(metrics);
|
|
326
|
+
|
|
327
|
+
// Calculate overall trend
|
|
328
|
+
trend.direction = this.calculateCategoryDirection(trend.keyMetrics);
|
|
329
|
+
trend.velocity = this.calculateCategoryVelocity(trend.keyMetrics);
|
|
330
|
+
trend.confidence = this.calculateConfidence(trend.keyMetrics, trend.patterns);
|
|
331
|
+
|
|
332
|
+
return trend;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
async generateQualityInsights(trends: QualityTrendReport): Promise<QualityInsight[]> {
|
|
336
|
+
const insights: QualityInsight[] = [];
|
|
337
|
+
|
|
338
|
+
// Code quality insights
|
|
339
|
+
if (trends.categories.code_quality) {
|
|
340
|
+
const codeQuality = trends.categories.code_quality;
|
|
341
|
+
|
|
342
|
+
if (codeQuality.direction === 'improving') {
|
|
343
|
+
insights.push({
|
|
344
|
+
type: 'positive_trend',
|
|
345
|
+
category: 'code_quality',
|
|
346
|
+
title: 'Code Quality Improving',
|
|
347
|
+
description: 'Code quality metrics show consistent improvement',
|
|
348
|
+
impact: 'high',
|
|
349
|
+
confidence: codeQuality.confidence,
|
|
350
|
+
recommendations: [
|
|
351
|
+
'Continue current development practices',
|
|
352
|
+
'Document successful quality improvement strategies',
|
|
353
|
+
'Share best practices with team'
|
|
354
|
+
]
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
if (codeQuality.keyMetrics.technicalDebt?.direction === 'worsening') {
|
|
359
|
+
insights.push({
|
|
360
|
+
type: 'concern',
|
|
361
|
+
category: 'code_quality',
|
|
362
|
+
title: 'Technical Debt Accumulating',
|
|
363
|
+
description: 'Technical debt is increasing faster than resolution',
|
|
364
|
+
impact: 'medium',
|
|
365
|
+
confidence: codeQuality.confidence,
|
|
366
|
+
recommendations: [
|
|
367
|
+
'Allocate dedicated time for technical debt reduction',
|
|
368
|
+
'Implement stricter code review standards',
|
|
369
|
+
'Consider refactoring high-debt areas'
|
|
370
|
+
]
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
// Process efficiency insights
|
|
376
|
+
if (trends.categories.process) {
|
|
377
|
+
const process = trends.categories.process;
|
|
378
|
+
|
|
379
|
+
if (process.keyMetrics.buildTime?.direction === 'worsening') {
|
|
380
|
+
insights.push({
|
|
381
|
+
type: 'performance_concern',
|
|
382
|
+
category: 'process',
|
|
383
|
+
title: 'Build Times Increasing',
|
|
384
|
+
description: 'Build times are trending upward, impacting development velocity',
|
|
385
|
+
impact: 'medium',
|
|
386
|
+
confidence: process.confidence,
|
|
387
|
+
recommendations: [
|
|
388
|
+
'Analyze build performance bottlenecks',
|
|
389
|
+
'Implement build caching strategies',
|
|
390
|
+
'Consider build optimization tools'
|
|
391
|
+
]
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
// Testing effectiveness insights
|
|
397
|
+
if (trends.categories.testing) {
|
|
398
|
+
const testing = trends.categories.testing;
|
|
399
|
+
|
|
400
|
+
if (testing.keyMetrics.testCoverage?.direction === 'improving') {
|
|
401
|
+
insights.push({
|
|
402
|
+
type: 'positive_trend',
|
|
403
|
+
category: 'testing',
|
|
404
|
+
title: 'Test Coverage Improving',
|
|
405
|
+
description: 'Test coverage is consistently increasing',
|
|
406
|
+
impact: 'high',
|
|
407
|
+
confidence: testing.confidence,
|
|
408
|
+
recommendations: [
|
|
409
|
+
'Maintain current testing discipline',
|
|
410
|
+
'Focus on testing critical business logic',
|
|
411
|
+
'Consider adding more integration tests'
|
|
412
|
+
]
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
return insights;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
### Quality Alerts and Notifications
|
|
423
|
+
```typescript
|
|
424
|
+
// Quality Alert System
|
|
425
|
+
class QualityAlertSystem {
|
|
426
|
+
private alertRules: QualityAlertRule[] = [
|
|
427
|
+
{
|
|
428
|
+
name: 'Critical Security Vulnerability',
|
|
429
|
+
condition: (metrics) => metrics.vulnerabilities > 0 && metrics.severity === 'critical',
|
|
430
|
+
severity: 'critical',
|
|
431
|
+
action: 'immediate_notification'
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
name: 'Test Coverage Drop',
|
|
435
|
+
condition: (metrics) => metrics.testCoverage < 80 && metrics.coverageChange < -5,
|
|
436
|
+
severity: 'high',
|
|
437
|
+
action: 'quality_gate_block'
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
name: 'Build Time Regression',
|
|
441
|
+
condition: (metrics) => metrics.buildTime > 300 && metrics.buildTimeChange > 50,
|
|
442
|
+
severity: 'medium',
|
|
443
|
+
action: 'performance_investigation'
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
name: 'Technical Debt Threshold',
|
|
447
|
+
condition: (metrics) => metrics.technicalDebt > 100 && metrics.debtTrend === 'increasing',
|
|
448
|
+
severity: 'medium',
|
|
449
|
+
action: 'refactoring_recommendation'
|
|
450
|
+
}
|
|
451
|
+
];
|
|
452
|
+
|
|
453
|
+
async evaluateAlerts(metrics: QualityMetrics[]): Promise<QualityAlert[]> {
|
|
454
|
+
const alerts: QualityAlert[] = [];
|
|
455
|
+
|
|
456
|
+
for (const metric of metrics) {
|
|
457
|
+
for (const rule of this.alertRules) {
|
|
458
|
+
if (rule.condition(metric.metrics)) {
|
|
459
|
+
const alert: QualityAlert = {
|
|
460
|
+
id: generateAlertId(),
|
|
461
|
+
timestamp: new Date(),
|
|
462
|
+
rule: rule.name,
|
|
463
|
+
severity: rule.severity,
|
|
464
|
+
category: metric.category,
|
|
465
|
+
sessionId: metric.sessionId,
|
|
466
|
+
description: this.generateAlertDescription(rule, metric),
|
|
467
|
+
recommendations: this.generateAlertRecommendations(rule, metric),
|
|
468
|
+
action: rule.action,
|
|
469
|
+
status: 'active'
|
|
470
|
+
};
|
|
471
|
+
|
|
472
|
+
alerts.push(alert);
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
return alerts;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
async processAlerts(alerts: QualityAlert[]): Promise<void> {
|
|
481
|
+
for (const alert of alerts) {
|
|
482
|
+
switch (alert.action) {
|
|
483
|
+
case 'immediate_notification':
|
|
484
|
+
await this.sendImmediateNotification(alert);
|
|
485
|
+
break;
|
|
486
|
+
case 'quality_gate_block':
|
|
487
|
+
await this.blockQualityGate(alert);
|
|
488
|
+
break;
|
|
489
|
+
case 'performance_investigation':
|
|
490
|
+
await this.triggerPerformanceInvestigation(alert);
|
|
491
|
+
break;
|
|
492
|
+
case 'refactoring_recommendation':
|
|
493
|
+
await this.createRefactoringTask(alert);
|
|
494
|
+
break;
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
### Quality Reporting and Dashboards
|
|
502
|
+
```typescript
|
|
503
|
+
// Quality Reporting System
|
|
504
|
+
class QualityReporter {
|
|
505
|
+
async generateQualityReport(timeframe: TimeFrame): Promise<QualityReport> {
|
|
506
|
+
const metrics = await this.getMetricsForTimeframe(timeframe);
|
|
507
|
+
const trends = await this.analyzeTrends(metrics);
|
|
508
|
+
const insights = await this.generateInsights(trends);
|
|
509
|
+
const recommendations = await this.generateRecommendations(insights);
|
|
510
|
+
|
|
511
|
+
const report: QualityReport = {
|
|
512
|
+
timeframe,
|
|
513
|
+
executiveSummary: await this.generateExecutiveSummary(trends, insights),
|
|
514
|
+
qualityScore: this.calculateOverallQualityScore(metrics),
|
|
515
|
+
categoryScores: this.calculateCategoryScores(metrics),
|
|
516
|
+
trends,
|
|
517
|
+
insights,
|
|
518
|
+
recommendations,
|
|
519
|
+
actionItems: await this.generateActionItems(recommendations),
|
|
520
|
+
appendices: {
|
|
521
|
+
detailedMetrics: metrics,
|
|
522
|
+
methodologyNotes: this.getMethodologyNotes(),
|
|
523
|
+
dataQualityNotes: this.getDataQualityNotes()
|
|
524
|
+
}
|
|
525
|
+
};
|
|
526
|
+
|
|
527
|
+
return report;
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
async generateDashboard(timeframe: TimeFrame): Promise<QualityDashboard> {
|
|
531
|
+
const metrics = await this.getMetricsForTimeframe(timeframe);
|
|
532
|
+
|
|
533
|
+
return {
|
|
534
|
+
overview: {
|
|
535
|
+
qualityScore: this.calculateOverallQualityScore(metrics),
|
|
536
|
+
trendDirection: this.calculateOverallTrend(metrics),
|
|
537
|
+
activeAlerts: await this.getActiveAlerts(),
|
|
538
|
+
keyMetrics: this.getKeyMetrics(metrics)
|
|
539
|
+
},
|
|
540
|
+
charts: {
|
|
541
|
+
qualityTrend: this.generateQualityTrendChart(metrics),
|
|
542
|
+
categoryBreakdown: this.generateCategoryBreakdownChart(metrics),
|
|
543
|
+
alertsOverTime: this.generateAlertsChart(metrics),
|
|
544
|
+
performanceTrends: this.generatePerformanceTrendsChart(metrics)
|
|
545
|
+
},
|
|
546
|
+
insights: await this.generateDashboardInsights(metrics),
|
|
547
|
+
recommendations: await this.generateDashboardRecommendations(metrics)
|
|
548
|
+
};
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
## Quality Metrics Integration with Agent Hooks
|
|
554
|
+
|
|
555
|
+
### Automated Collection Triggers
|
|
556
|
+
```yaml
|
|
557
|
+
# Quality Metrics Collection Hooks
|
|
558
|
+
quality_metrics:
|
|
559
|
+
- name: "session_metrics_collection"
|
|
560
|
+
description: "Collect quality metrics at session completion"
|
|
561
|
+
trigger:
|
|
562
|
+
type: "session_end"
|
|
563
|
+
action:
|
|
564
|
+
type: "execute_prompt"
|
|
565
|
+
prompt: "quality-metrics.md"
|
|
566
|
+
message: "Collecting comprehensive quality metrics for session analysis..."
|
|
567
|
+
include_context:
|
|
568
|
+
- session_data: true
|
|
569
|
+
- performance_metrics: true
|
|
570
|
+
- quality_indicators: true
|
|
571
|
+
|
|
572
|
+
- name: "milestone_quality_assessment"
|
|
573
|
+
description: "Comprehensive quality assessment at milestones"
|
|
574
|
+
trigger:
|
|
575
|
+
type: "milestone_completion"
|
|
576
|
+
action:
|
|
577
|
+
type: "execute_prompt"
|
|
578
|
+
prompt: "quality-metrics.md"
|
|
579
|
+
message: "Conducting milestone quality assessment and trend analysis..."
|
|
580
|
+
include_context:
|
|
581
|
+
- milestone_scope: true
|
|
582
|
+
- quality_history: true
|
|
583
|
+
- trend_data: true
|
|
584
|
+
|
|
585
|
+
- name: "quality_alert_processing"
|
|
586
|
+
description: "Process quality alerts and recommendations"
|
|
587
|
+
trigger:
|
|
588
|
+
type: "quality_threshold_breach"
|
|
589
|
+
action:
|
|
590
|
+
type: "execute_prompt"
|
|
591
|
+
prompt: "quality-metrics.md"
|
|
592
|
+
message: "Processing quality alert and generating improvement recommendations..."
|
|
593
|
+
include_context:
|
|
594
|
+
- alert_details: true
|
|
595
|
+
- historical_context: true
|
|
596
|
+
- improvement_options: true
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
## Quality Metrics Success Criteria
|
|
600
|
+
|
|
601
|
+
### Comprehensive Coverage
|
|
602
|
+
- All aspects of development quality systematically measured
|
|
603
|
+
- Metrics collection automated and integrated into workflow
|
|
604
|
+
- Trend analysis provides actionable insights
|
|
605
|
+
- Alerts prevent quality degradation
|
|
606
|
+
- Reporting supports decision-making
|
|
607
|
+
|
|
608
|
+
### Actionable Insights
|
|
609
|
+
- Quality metrics drive concrete improvements
|
|
610
|
+
- Trends inform strategic quality decisions
|
|
611
|
+
- Alerts enable proactive quality management
|
|
612
|
+
- Recommendations are specific and implementable
|
|
613
|
+
- Process optimization measurably improves quality
|
|
614
|
+
|
|
615
|
+
### Continuous Improvement
|
|
616
|
+
- Quality standards continuously evolve and improve
|
|
617
|
+
- Team learning from quality metrics enhanced
|
|
618
|
+
- Quality processes systematically optimized
|
|
619
|
+
- Tool and practice adoption data-driven
|
|
620
|
+
- Quality culture strengthened through visibility
|
|
621
|
+
|
|
622
|
+
This quality metrics framework ensures systematic measurement, analysis, and improvement of all aspects of development quality, enabling data-driven excellence and continuous improvement.
|