Creates verifiable proof artifacts like screenshots and test reports for completed coding tasks.

Install

mkdir -p .claude/skills/proof-of-work && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/5116" && unzip -o skill.zip -d .claude/skills/proof-of-work && rm skill.zip

Installs to .claude/skills/proof-of-work

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Proof artifact generation patterns for task validation. Covers screenshots, test results, deployments, and confidence scoring.
126 charsno explicit “when” trigger
Intermediate

Key capabilities

  • Generate proof artifacts after task completion
  • Capture screenshots for UI verification
  • Parse and report test results
  • Calculate confidence scores for task validation
  • Determine if a task can be auto-approved

How it works

This skill generates artifacts like git diffs, test results, and screenshots, then calculates a confidence score based on these artifacts to validate task completion.

Inputs & outputs

You give it
Task completion data including git diffs, test results, build outputs, and UI states
You get back
Verifiable artifacts and a confidence score for task validation

When to use proof-of-work

  • Verify bug fixes with git diffs and regression tests
  • Generate feature verification screenshots across multiple resolutions
  • Calculate and report task confidence scores
  • Aggregate build outputs for successful feature deployments

About this skill

plugin: autopilot updated: 2026-01-20

Proof-of-Work

Version: 0.1.0 Purpose: Generate validation artifacts for autonomous task completion Status: Phase 1

When to Use

Use this skill when you need to:

  • Generate proof artifacts after task completion
  • Capture screenshots for UI verification
  • Parse and report test results
  • Calculate confidence scores for task validation
  • Determine if a task can be auto-approved

Overview

Proof-of-work is the mechanism that validates task completion. Every finished task must include verifiable artifacts that demonstrate the work was done correctly.

Proof Types by Task

Bug Fix Proof

ArtifactRequiredPurpose
Git diffYesShow minimal, focused changes
Test resultsYesAll tests passing
Regression testYesSpecific test for the bug
Error log (before/after)OptionalVisual evidence

Feature Proof

ArtifactRequiredPurpose
ScreenshotsYesVisual verification
Test resultsYesFunctionality works
Coverage reportYes>= 80% coverage
Build outputYesBuilds successfully
Deployment URLOptionalLive demo

UI Change Proof

ArtifactRequiredPurpose
Desktop screenshotYes1920x1080 view
Mobile screenshotYes375x667 view
Tablet screenshotYes768x1024 view
Accessibility scoreYes>= 80 Lighthouse
Visual regressionOptionalBackstopJS diff

Screenshot Capture

Playwright Pattern:

import { chromium } from 'playwright';

async function captureScreenshots(url: string, outputDir: string) {
  const browser = await chromium.launch({ headless: true });
  const context = await browser.newContext();
  const page = await context.newPage();

  // Desktop
  await page.setViewportSize({ width: 1920, height: 1080 });
  await page.goto(url);
  await page.waitForLoadState('networkidle');
  await page.screenshot({
    path: `${outputDir}/desktop.png`,
    fullPage: true,
  });

  // Mobile
  await page.setViewportSize({ width: 375, height: 667 });
  await page.goto(url);
  await page.waitForLoadState('networkidle');
  await page.screenshot({
    path: `${outputDir}/mobile.png`,
    fullPage: true,
  });

  // Tablet
  await page.setViewportSize({ width: 768, height: 1024 });
  await page.goto(url);
  await page.waitForLoadState('networkidle');
  await page.screenshot({
    path: `${outputDir}/tablet.png`,
    fullPage: true,
  });

  await browser.close();
}

Confidence Scoring

Algorithm:

interface ProofArtifacts {
  testResults?: { passed: number; total: number };
  buildSuccessful?: boolean;
  lintErrors?: number;
  screenshots?: string[];
  testCoverage?: number;
  performanceScore?: number;
}

function calculateConfidence(artifacts: ProofArtifacts): number {
  let score = 0;

  // Tests (40 points)
  if (artifacts.testResults) {
    if (artifacts.testResults.passed === artifacts.testResults.total) {
      score += 40;
    }
  }

  // Build (20 points)
  if (artifacts.buildSuccessful) {
    score += 20;
  }

  // Coverage (20 points)
  if (artifacts.testCoverage) {
    if (artifacts.testCoverage >= 80) score += 20;
    else if (artifacts.testCoverage >= 60) score += 15;
    else if (artifacts.testCoverage >= 40) score += 10;
    else score += 5;
  }

  // Screenshots (10 points)
  if (artifacts.screenshots) {
    if (artifacts.screenshots.length >= 3) score += 10;
    else if (artifacts.screenshots.length >= 1) score += 5;
  }

  // Lint (10 points)
  if (artifacts.lintErrors === 0) {
    score += 10;
  }

  return score;
}

Confidence Thresholds

ConfidenceAction
>= 95%Auto-approve (In Review -> Done)
80-94%Manual review required
< 80%Validation failed, iterate

Proof Summary Template

# Proof of Work

**Task**: {issue_id}
**Type**: {task_type}
**Confidence**: {score}%

## Test Results
- Total: {total}
- Passed: {passed}
- Failed: {failed}
- Coverage: {coverage}%

## Build
- Status: {status}
- Duration: {duration}

## Screenshots
- Desktop: proof/desktop.png
- Mobile: proof/mobile.png
- Tablet: proof/tablet.png

## Artifacts
- test-results.txt
- coverage.json
- build-output.txt

Examples

Example 1: Feature Proof Generation

const proof = {
  testResults: { passed: 15, total: 15 },
  buildSuccessful: true,
  lintErrors: 0,
  screenshots: ['desktop.png', 'mobile.png', 'tablet.png'],
  testCoverage: 85,
};

const confidence = calculateConfidence(proof);
// 40 (tests) + 20 (build) + 20 (coverage) + 10 (screenshots) + 10 (lint) = 100%

Example 2: Partial Proof

const proof = {
  testResults: { passed: 12, total: 15 },  // Some failing
  buildSuccessful: true,
  lintErrors: 2,
  screenshots: ['desktop.png'],
  testCoverage: 65,
};

const confidence = calculateConfidence(proof);
// 0 (tests fail) + 20 (build) + 15 (coverage) + 5 (1 screenshot) + 0 (lint errors) = 40%
// Result: Validation failed, must iterate

Best Practices

  • Always capture screenshots for UI work
  • Run full test suite, not just affected tests
  • Include coverage report for features
  • Build must pass before any proof is valid
  • Store proofs in session directory for debugging
  • Generate proof summary in markdown for Linear comments

How it compares

This skill automates the generation and scoring of validation evidence, unlike manual review processes.

Compared to similar skills

proof-of-work side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
proof-of-work (this skill)16moNo flagsIntermediate
workflow-patterns12moNo flagsIntermediate
spec-driven-workflow01moNo flagsAdvanced
triage-issue16moReviewIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

More by MadAppGang

View all by MadAppGang

claudish-usage

MadAppGang

CRITICAL - Guide for using Claudish CLI ONLY through sub-agents to run Claude Code with any AI model (OpenRouter, Gemini, OpenAI, local models). NEVER run Claudish directly in main context unless user explicitly requests it. Use when user mentions external AI models, Claudish, OpenRouter, Gemini, OpenAI, Ollama, or alternative models. Includes mandatory sub-agent delegation patterns, agent selection guide, file-based instructions, and strict rules to prevent context window pollution.

442

golang-performance

MadAppGang

Use when profiling Go applications (pprof), running benchmarks, optimizing memory/CPU usage, or debugging performance bottlenecks in production Go code.

47

golang

MadAppGang

Use when building Go backend services, implementing goroutines/channels, handling errors idiomatically, writing tests with testify, or following Go best practices for APIs/CLI tools.

313

schemas

MadAppGang

YAML frontmatter schemas for Claude Code agents and commands. Use when creating or validating agent/command files.

34

external-model-selection

MadAppGang

Choose optimal external AI models for code analysis, bug investigation, and architectural decisions. Use when consulting multiple LLMs via claudish, comparing model perspectives, or investigating complex Go/LSP/transpiler issues. Provides empirically validated model rankings (91/100 for MiniMax M2, 83/100 for Grok Code Fast) and proven consultation strategies based on real-world testing.

218

adr-documentation

MadAppGang

Architecture Decision Records (ADR) documentation practice. Use when documenting architectural decisions, recording technical trade-offs, creating decision logs, or establishing architectural patterns. Trigger keywords - "ADR", "architecture decision", "decision record", "trade-offs", "architectural decision", "decision log".

12

You might also like

workflow-patterns

wshobson

Use this skill when implementing tasks according to Conductor's TDD workflow, handling phase checkpoints, managing git commits for tasks, or understanding the verification protocol.

14

spec-driven-workflow

CafeSemCafeina

The build workflow for avaliador-tech-recruiter — risk-ordered tiers with a protected mock-mode floor, a Ready spec required before any unit is implemented, eval gates (L0 contract / L1 policy / L2 fixtures) as the merge filter, package partitioning for parallel agents, atomic Conventional Commits,

00

triage-issue

mysticaltech

Use when triaging a GitHub issue - analyzes issue, checks for duplicates, categorizes, and drafts response

12

release

mantaskazlauskas

Release workflow for ChattyLittleNpc addon. Bumps the .toc version, commits and pushes to GitHub, then runs release.py to create a GitHub release. Activates for: release, bump version, publish, ship, tag, new version, deploy addon, push release.

00

github-triage

OutlineDriven

Triage GitHub issues through a configurable label-based state machine. Use when user wants to triage incoming issues, prepare issues for an autonomous agent, or move an issue between workflow states. Repo inferred from `git remote`; all GitHub calls go through `gh`.

00

manage-skills

junnv93

Analyzes session changes to detect missing verification skills. Dynamically discovers existing skills, creates new skills or updates existing ones, and manages CLAUDE.md skill references. Use when adding new patterns/modules that may need verification coverage, or when maintaining skill consistency.

00

Search skills

Search the agent skills registry