proof-of-work
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.zipInstalls 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.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
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
| Artifact | Required | Purpose |
|---|---|---|
| Git diff | Yes | Show minimal, focused changes |
| Test results | Yes | All tests passing |
| Regression test | Yes | Specific test for the bug |
| Error log (before/after) | Optional | Visual evidence |
Feature Proof
| Artifact | Required | Purpose |
|---|---|---|
| Screenshots | Yes | Visual verification |
| Test results | Yes | Functionality works |
| Coverage report | Yes | >= 80% coverage |
| Build output | Yes | Builds successfully |
| Deployment URL | Optional | Live demo |
UI Change Proof
| Artifact | Required | Purpose |
|---|---|---|
| Desktop screenshot | Yes | 1920x1080 view |
| Mobile screenshot | Yes | 375x667 view |
| Tablet screenshot | Yes | 768x1024 view |
| Accessibility score | Yes | >= 80 Lighthouse |
| Visual regression | Optional | BackstopJS 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
| Confidence | Action |
|---|---|
| >= 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.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| proof-of-work (this skill) | 1 | 6mo | No flags | Intermediate |
| workflow-patterns | 1 | 2mo | No flags | Intermediate |
| spec-driven-workflow | 0 | 1mo | No flags | Advanced |
| triage-issue | 1 | 6mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by MadAppGang
View all by MadAppGang →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.
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,
triage-issue
mysticaltech
Use when triaging a GitHub issue - analyzes issue, checks for duplicates, categorizes, and drafts response
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.
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`.
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.