X402 Metrics and Analytics

By X402 Team | Last Updated: February 2026

Direct Answer

X402 metrics track batch completion velocity, content quality indicators, team productivity, and repository health through Git-based analytics, completion counts in INDEX files, automated reporting scripts, and optional integration with project management tools for stakeholder visibility.

Detailed Explanation

Key Metrics for X402

Completion Metrics

Batch Completion Rate Track batches completed over time:

## Batch Completion - 2024

Q1

  • January: 3 batches
  • February: 4 batches
  • March: 5 batches
Total: 12 batches

Q2

  • April: 4 batches
  • May: 6 batches
  • June: 5 batches
Total: 15 batches

Year to Date

  • Total batches: 27
  • Average per month: 4.5
  • Trend: ↑ 25% vs 2023

Script to generate: scripts/completion-metrics.sh

#!/bin/bash

echo "Batch Completion Metrics" echo "=======================" echo

Count completed batches

total_batches=$(grep -c "\[x\].batch-" INDEX.md) in_progress=$(grep -c "\[ \].batch-" INDEX.md)

echo "Total Batches: $((total_batches + in_progress))" echo "Completed: $total_batches" echo "In Progress: $in_progress" echo "Completion Rate: $(( total_batches 100 / (total_batches + in_progress) ))%" echo

Completions by month

echo "Completions by Month:" for month in {01..12}; do count=$(git log --since="2024-$month-01" --until="2024-$month-31" \ --grep="Complete batch-" --oneline | wc -l)

if [ $count -gt 0 ]; then echo " 2024-$month: $count batches" fi done

Item Completion Rate Track individual content items:

## Item Completion Statistics

Overall

  • Total items across all batches: 156
  • Completed items: 142
  • Completion rate: 91%

By Batch

BatchItemsCompleteRate
00155100%
0028788%
003121083%

Script: scripts/item-metrics.sh

#!/bin/bash

echo "Item Completion Metrics" echo "======================" echo

for batch in batch-/; do if [ -f "$batch/INDEX.md" ]; then total=$(grep -c "^- \[" "$batch/INDEX.md") complete=$(grep -c "^- \[x\]" "$batch/INDEX.md") percent=$((complete 100 / total))

batch_name=$(basename "$batch") echo "$batch_name: $complete/$total ($percent%)" fi done

Velocity Metrics

Items per Week Track team throughput:

## Weekly Velocity - Last 12 Weeks

Week | Items Completed | Commits | Contributors -----|-----------------|---------|------------- W45 | 8 | 15 | 3 W44 | 6 | 12 | 2 W43 | 9 | 18 | 3 W42 | 7 | 14 | 3

Average: 7.5 items/week Trend: Stable

Script: scripts/velocity-metrics.sh

#!/bin/bash

echo "Velocity Metrics (Last 12 Weeks)" echo "=================================" echo

for i in {0..11}; do week_start=$(date -d "$((i 7)) days ago" +%Y-%m-%d) week_end=$(date -d "$(((i - 1) 7)) days ago" +%Y-%m-%d)

items=$(git log --since="$week_start" --until="$week_end" \ --grep="Complete:" --oneline | wc -l)

commits=$(git log --since="$week_start" --until="$week_end" \ --oneline | wc -l)

contributors=$(git log --since="$week_start" --until="$week_end" \ --format="%an" | sort -u | wc -l)

echo "Week of $week_start: $items items, $commits commits, $contributors contributors" done

Time to Complete Average time from batch start to completion:

## Time to Complete Metrics

By Batch Size

  • Small (1-5 items): 3.2 days average
  • Medium (6-10 items): 7.1 days average
  • Large (11+ items): 14.5 days average

Recent Batches

  • batch-027: 4 days (6 items)
  • batch-026: 3 days (4 items)
  • batch-025: 9 days (8 items)
  • batch-024: 12 days (12 items)

Trend

Completion time improving by 15% quarter over quarter

Quality Metrics

Review Iterations Track how many review rounds needed:

## Review Iteration Metrics

Q4 2024

  • 0 iterations (approved first time): 42%
  • 1 iteration: 38%
  • 2 iterations: 15%
  • 3+ iterations: 5%

Common Issues

  1. Incomplete quality standards (18%)
  2. Broken links (15%)
  3. Technical inaccuracy (12%)
  4. Missing sections (10%)
  5. Spelling/grammar (8%)

Defect Tracking Issues found in production content:

## Content Defects - Q4 2024

Total defects reported: 12 Defects per 100 items: 0.8

Severity

  • Critical (incorrect information): 1
  • Major (broken functionality): 3
  • Minor (formatting/typos): 8

Resolution Time

  • Average: 1.2 days
  • Fastest: 2 hours
  • Slowest: 4 days

Link Health Monitor broken links over time:

# Script: scripts/link-health.sh
#!/bin/bash

echo "Link Health Metrics" echo "===================" echo

total_links=0 broken_links=0

for file in batch-/.md; do links=$(grep -o '\.\' "$file" | wc -l) total_links=$((total_links + links))

# Check each link grep -o '\.\)' "$file" | while read link; do path=$(echo "$link" | sed 's/.](\(.\))/\1/') dir=$(dirname "$file")

if [ ! -f "$dir/$path" ]; then broken_links=$((broken_links + 1)) fi done done

echo "Total links: $total_links" echo "Broken links: $broken_links" echo "Link health: $(( (total_links - broken_links) 100 / total_links ))%"

Productivity Metrics

Individual Contributions

Items per Contributor

## Contributor Statistics - Q4 2024

Items Completed

ContributorItemsBatchesAvg Items/Batch
Alice2454.8
Bob1944.8
Charlie1635.3

Lines of Content

ContributorLines WrittenAvg per Item
Alice3,420142
Bob2,850150
Charlie2,240140

Script: scripts/contributor-metrics.sh

#!/bin/bash

echo "Contributor Metrics" echo "===================" echo

Get unique contributors

contributors=$(git log --format="%an" | sort -u)

for contributor in $contributors; do echo "Contributor: $contributor"

# Count commits commits=$(git log --author="$contributor" --oneline | wc -l) echo " Commits: $commits"

# Count completed items items=$(git log --author="$contributor" --grep="Complete:" --oneline | wc -l) echo " Items completed: $items"

# Lines added lines=$(git log --author="$contributor" --pretty=tformat: --numstat \ | awk '{add+=$1} END {print add}') echo " Lines added: $lines"

echo done

Team Efficiency

Review Turnaround Time

## Review Metrics

Time from PR to First Review

  • Average: 1.8 days
  • Median: 1 day
  • 90th percentile: 3 days

Time from PR to Merge

  • Average: 2.4 days
  • Median: 2 days
  • 90th percentile: 5 days

Reviews per PR

  • Average: 1.3 reviews
  • Most: 4 reviews
  • Single review approval: 68%

Repository Health Metrics

Repository Size

## Repository Statistics

Size

  • Total size: 45 MB
  • Batch folders: 30
  • Total files: 156 markdown files
  • Images: 89 files (12 MB)

Growth

  • Files added this quarter: 42
  • Growth rate: 37% QoQ
  • Projected year-end: 200 files

Script: scripts/repo-stats.sh

#!/bin/bash

echo "Repository Statistics" echo "====================" echo

Count batches

batches=$(ls -d batch- 2>/dev/null | wc -l) echo "Total batches: $batches"

Count files

md_files=$(find batch-
-name ".md" 2>/dev/null | wc -l) echo "Markdown files: $md_files"

Repository size

repo_size=$(du -sh . | awk '{print $1}') echo "Repository size: $repo_size"

File count by batch

echo echo "Files per batch:" for batch in batch-
/; do count=$(ls "$batch"/.md 2>/dev/null | wc -l) echo " $(basename $batch): $count files" done

Commit Activity

## Commit Activity

Last 30 Days

  • Total commits: 87
  • Average per day: 2.9
  • Busiest day: 8 commits (Nov 15)
  • Contributors active: 4

Commit Types

  • Content creation: 52 (60%)
  • Updates/fixes: 23 (26%)
  • Template changes: 8 (9%)
  • Structure changes: 4 (5%)

Dashboard and Reporting

HTML Dashboard

Script: scripts/generate-dashboard.sh

#!/bin/bash

cat > dashboard.html <<'EOF' <!DOCTYPE html> <html> <head> <title>X402 Metrics Dashboard</title> <style> body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; margin: 40px; background: #f5f5f5; } .container { max-width: 1200px; margin: 0 auto; background: white; padding: 30px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); } .metric-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin: 30px 0; } .metric-card { padding: 20px; background: #f8f9fa; border-radius: 6px; border-left: 4px solid #007bff; } .metric-value { font-size: 32px; font-weight: bold; color: #007bff; margin: 10px 0; } .metric-label { font-size: 14px; color: #666; text-transform: uppercase; letter-spacing: 0.5px; } .progress-bar { height: 24px; background: #e9ecef; border-radius: 4px; overflow: hidden; margin: 10px 0; } .progress-fill { height: 100%; background: linear-gradient(90deg, #28a745, #20c997); display: flex; align-items: center; justify-content: center; color: white; font-weight: bold; font-size: 12px; } .batch-list { margin: 20px 0; } .batch-item { padding: 15px; margin: 10px 0; background: #f8f9fa; border-radius: 6px; display: flex; justify-content: space-between; align-items: center; } .batch-complete { border-left: 4px solid #28a745; } .batch-progress { border-left: 4px solid #ffc107; } h1 { color: #333; margin-bottom: 10px; } h2 { color: #555; margin-top: 40px; border-bottom: 2px solid #007bff; padding-bottom: 10px; } .timestamp { color: #999; font-size: 14px; } </style> </head> <body> <div class="container"> <h1>X402 Content Metrics Dashboard</h1> <p class="timestamp">Generated: $(date)</p> EOF

Calculate metrics

total_batches=$(ls -d batch-
2>/dev/null | wc -l) completed_batches=$(grep -c "\[x\].batch-" INDEX.md) total_items=0 completed_items=0

for batch in batch-/; do if [ -f "$batch/INDEX.md" ]; then batch_total=$(grep -c "^- \[" "$batch/INDEX.md") batch_complete=$(grep -c "^- \[x\]" "$batch/INDEX.md") total_items=$((total_items + batch_total)) completed_items=$((completed_items + batch_complete)) fi done

completion_rate=$((completed_items 100 / total_items))

cat >> dashboard.html <<EOF <div class="metric-grid"> <div class="metric-card"> <div class="metric-label">Total Batches</div> <div class="metric-value">$total_batches</div> </div> <div class="metric-card"> <div class="metric-label">Completed Batches</div> <div class="metric-value">$completed_batches</div> </div> <div class="metric-card"> <div class="metric-label">Total Items</div> <div class="metric-value">$total_items</div> </div> <div class="metric-card"> <div class="metric-label">Completion Rate</div> <div class="metric-value">$completion_rate%</div> </div> </div>

<h2>Batch Progress</h2> <div class="batch-list"> EOF

for batch in batch-/; do if [ -f "$batch/INDEX.md" ]; then batch_name=$(basename "$batch") total=$(grep -c "^- \[" "$batch/INDEX.md") complete=$(grep -c "^- \[x\]" "$batch/INDEX.md") percent=$((complete 100 / total)) status=$(grep "Status:" "$batch/INDEX.md" | sed 's/.Status: //')

class="batch-progress" [ "$status" = "Complete" ] && class="batch-complete"

cat >> dashboard.html <<EOF <div class="batch-item $class"> <div> <strong>$batch_name</strong> <div style="font-size: 12px; color: #666;">$status</div> </div> <div style="min-width: 200px;"> <div class="progress-bar"> <div class="progress-fill" style="width: ${percent}%"> $complete/$total items </div> </div> </div> </div> EOF fi done

cat >> dashboard.html <<'EOF' </div> </div> </body> </html> EOF

echo "✓ Dashboard generated: dashboard.html"

JSON Metrics Export

For integration with external tools:

#!/bin/bash

scripts/export-metrics-json.sh

cat > metrics.json <<EOF { "generated": "$(date -Iseconds)", "repository": { "total_batches": $(ls -d batch- 2>/dev/null | wc -l), "completed_batches": $(grep -c "\[x\].batch-" INDEX.md), "total_commits": $(git rev-list --count HEAD), "contributors": $(git log --format="%an" | sort -u | wc -l) }, "batches": [ EOF

first=true for batch in batch-/; do if [ -f "$batch/INDEX.md" ]; then [ "$first" = false ] && echo "," >> metrics.json first=false

batch_name=$(basename "$batch") total=$(grep -c "^- \[" "$batch/INDEX.md") complete=$(grep -c "^- \[x\]" "$batch/INDEX.md") status=$(grep "Status:" "$batch/INDEX.md" | sed 's/.Status: //')

cat >> metrics.json <<EOF { "name": "$batch_name", "status": "$status", "total_items": $total, "completed_items": $complete, "completion_rate": $((complete 100 / total)) } EOF fi done

cat >> metrics.json <<EOF

] } EOF

echo "✓ Metrics exported: metrics.json"

Integration with External Tools

GitHub Issues Integration

Create issues from batch items:

#!/bin/bash

scripts/create-github-issues.sh

batch=$1

if [ -z "$batch" ]; then echo "Usage: $0 <batch-name>" exit 1 fi

Read unchecked items from batch INDEX

grep "^- \[ \]" "$batch/INDEX.md" | sed 's/^- \[ \] //' | while read item; do # Create GitHub issue gh issue create \ --title "Content: $item" \ --body "Create content for: $item\n\nBatch: $batch" \ --label "documentation,content-creation"

echo "Created issue for: $item" done

Slack Notifications

Post updates to Slack:

#!/bin/bash

scripts/notify-slack.sh

WEBHOOK_URL="$SLACK_WEBHOOK_URL"

message=$1

curl -X POST "$WEBHOOK_URL" \ -H 'Content-Type: application/json' \ -d "{ \"text\": \"$message\", \"username\": \"X402 Bot\", \"icon_emoji\": \":memo:\" }"

Use in post-commit hook:

#!/bin/bash

.git/hooks/post-commit

commit_msg=$(git log -1 --pretty=%B)

if echo "$commit_msg" | grep -q "Complete batch"; then ./scripts/notify-slack.sh "🎉 $commit_msg" elif echo "$commit_msg" | grep -q "Complete:"; then item=$(echo "$commit_msg" | sed 's/Complete: //') ./scripts/notify-slack.sh "✅ Completed: $item" fi

Project Management Integration

Export to CSV for project management:

#!/bin/bash

scripts/export-pm-csv.sh

echo "Batch,Item,Status,Assigned,Due Date" > items.csv

for batch in batch-/; do batch_name=$(basename "$batch")

grep "^- \[" "$batch/INDEX.md" | while read line; do if echo "$line" | grep -q "\[x\]"; then status="Complete" else status="In Progress" fi

item=$(echo "$line" | sed 's/^- \[.\] //') echo "$batch_name,$item,$status,," >> items.csv done done

echo "✓ Exported to items.csv"

Success Metrics

Content Impact Metrics

Usage analytics (if publishing to web):

## Content Usage - November 2024

Top Viewed Pages

  1. Getting Started Guide - 2,450 views
  2. API Authentication - 1,820 views
  3. Installation Tutorial - 1,630 views
  4. Troubleshooting Guide - 1,210 views
  5. Configuration Reference - 980 views

Search Terms

  • "how to install" - 340 searches
  • "api authentication" - 280 searches
  • "troubleshooting" - 190 searches

User Feedback

  • Helpful votes: 89%
  • "Was this page useful?": 4.3/5.0

Related Questions

  • What is X402?
  • X402 automation and tooling
  • X402 best practices
  • X402 for documentation teams

Quality Standards

  • [x] Meets brand voice requirements
  • [x] Follows formatting standards
  • [x] Includes all required elements
  • [x] Ready for production

Start Building with X402

Get our free X402 Implementation Starter Kit with ready-to-use templates, code examples, and best practices.

What is included:

  • Quick-start implementation templates
  • API integration examples
  • Configuration best practices guide

Get the Free Starter Kit