Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Progress Tracker

ASecurity

Track loop metrics, trends, improvements. Invoke: /progress-tracker.

2 stars
0 votes
0 copies
0 views
Added 9/22/2026
developmentgobashnodegit

Works with

cli

Security Analysis

A100/100

Scanned 9/22/2026

Install to Claude Code

$npx -y skills add mattbutlerengineering/mattbutlerengineering --skill progress-tracker --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Progress Tracker?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Progress Tracker
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mattbutlerengineering-progress-tracker/badge)](https://www.skillsdirectory.com/skills/mattbutlerengineering-progress-tracker)

More formats (shields.io, HTML) on the badges page.

Download with Pro
Files
SKILL.md
---
name: progress-tracker
description: Track loop metrics, trends, improvements. Invoke: /progress-tracker.
user-invocable: true
---

# Progress Tracker

Queries: metrics, patterns, actions. Daily.

## Queries (7d)

```bash
gh issue list --label "audit" --state all --json number,title,state,createdAt,closedAt,labels --limit 100
gh issue list --label "ci-fix" --state all --json number,title,state,createdAt,closedAt,labels --limit 50
gh issue list --label "ready" --state open --json number,title
gh issue list --label "in-progress" --state open --json number,title
gh issue list --label "has-pr" --state open --json number,title
gh issue list --label "agent-failed" --state open --json number,title
gh issue list --label "agent-skip" --state open --json number,title,createdAt
gh pr list --state merged --json number,title,mergedAt,headRefName --limit 50
gh run list --branch main --limit 20 --json conclusion,createdAt
gh issue list --label "meta-improvement" --state all --json number,title,state
cat .claude/agent-spend/sessions.jsonl 2>/dev/null | tail -100
```

Per-issue attribution: `.claude/agent-spend/sessions.jsonl` = `{date,timestamp,costUsd,model,adapter,status,issueNumber?,inputTokens?,outputTokens?,numTurns?}` (single spend sink owned by agent-core's recordSpend seam; NOT total Claude spend — use ccusage for ground-truth totals)

## Metrics

| Metric        | Formula                  | Target |
| ------------- | ------------------------ | ------ |
| Created (7d)  | audit+ci-fix             | -      |
| Closed (7d)   | audit+ci-fix             | -      |
| Closure Rate  | Closed/Created           | >80%   |
| Time-to-Close | mean(closedAt-createdAt) | <24h   |
| Agent Success | has-pr/(has-pr+failed)   | >70%   |
| CI Pass       | success/total main       | >95%   |
| Queue         | count ready              | <5     |
| Stale         | ready>7d                 | 0      |
| Blocked       | agent-failed             | 0      |
| Skipped       | agent-skip               | 0      |
| Daily Spend   | Σ costUsd (attributed)   | <$10   |
| 7d Spend      | Σ costUsd (attributed)   | <$50   |
| Cost/Issue    | 7d/closed (attributed)   | <$2    |

## Analysis

1. Recurring types → systemic?
2. Agent failures → pattern?
3. CI unstable → same job?
4. Queue bottleneck?
5. Cost efficiency?

## Log

Append `.claude/improvement-loop/log.md`:

```markdown
## YYYY-MM-DD

### Metrics

[Table with Closed/Created/Rate/Time/Success/Pass/Queue/Stale/Skip/Spend/Cost]

### Patterns

- [Findings]

### Recommendations

- [Actions]

### Skipped Issues

[Manual review]
```

Query skipped: `gh issue list --label "agent-skip" --state open --json number,title,createdAt --jq '.[] | "  #\(.number) \(.title)"'`

Summary: "N skipped after max retries"

**Append only.**

## Persist

The append above is worthless until it is committed — cloud routines run in
ephemeral checkouts, so an uncommitted `log.md` dies with the checkout:

```bash
node scripts/persist-metrics.mjs --routine progress-tracker
```

It stages every **durable** path with a diff (never `git add -A`), commits on
a branch, and opens a PR titled `chore(metrics): progress-tracker <YYYY-MM-DD>`
labeled `has-pr` — metrics-only diffs auto-merge via the low-risk fast path.
No diff, no commit, exit 0. `.claude/improvement-loop/log.md` is already
declared `durable: true` in `scripts/metrics-store.mjs`, so it is covered
without enumerating anything by hand.

Run this even when the day's findings are unremarkable. This step is why
#4378 happened: until it existed, this skill only ever appended, and its
entries reached `main` solely because `/optimize-implement-queue` ran later in
the same checkout and swept `log.md` up in _its_ persist. When that routine
stopped producing PRs on 2026-08-16, `log.md` froze on the same date — nine
days with no entry, while the queue kept merging PRs daily. A step that
depends on a different skill happening to run afterwards is not a step.

## Improvement Issues

Pattern 3+ days consistent?

```bash
gh issue create --title "[Meta] <improvement>" --label "meta-improvement" \
  --body "## Observation
<Data>

## Recommendation
<Change>

## Impact
<Outcome>

---
*Identified: $(date +%Y-%m-%d)*"
```

## Thresholds

| Metric  | Green | Yellow   | Red   |
| ------- | ----- | -------- | ----- |
| Closure | >80%  | 50-80%   | <50%  |
| Success | >70%  | 40-70%   | <40%  |
| CI      | >95%  | 85-95%   | <85%  |
| Queue   | <5    | 5-10     | >10   |
| Time    | <24h  | 24-72h   | >72h  |
| Daily   | <$10  | $10-$20  | >$20  |
| 7d      | <$50  | $50-$100 | >$100 |
| Cost    | <$2   | $2-$5    | >$5   |

## Actions

### Pause on Failure >50% (3d)

```bash
gh issue create --title "[Alert] Queue paused — failure >50%" \
  --label "meta-improvement" \
  --body "Success <50%. Pause loop.

$(gh issue list --label agent-failed --state open --json number,title -q '.[] | "- #\(.number): \(.title)"')

Fix, improve descriptions, re-enable."
```

### Auto-retry Stale (3+ days)

Re-queue issues that have been `agent-failed` for 3+ days (excludes `agent-skip`,
caps at 2/run). Tested logic lives in `scripts/auto-retry-stale.mjs`:

```bash
node scripts/auto-retry-stale.mjs           # re-queue via @mbe/gh-client's markReady + comment
node scripts/auto-retry-stale.mjs --dry-run # report selection, mutate nothing
```

The selection rule (`selectStaleForRetry`) is a pure, unit-tested function
(`scripts/__tests__/auto-retry-stale.test.mjs`); the GitHub mutations run via
`@mbe/gh-client`'s label machine (`markReady` + `label.apply`, #2933). Max 2/run.

### Queue Adjust

Queue >10 + success >70% → `/loop 15m /implement-queue`

Queue 0 for 3d → reduce audit or expand

### Features

```bash
gh issue list --label "feature" --state all --json number,title,state,labels --limit 100
gh issue list --label "tracking" --state open --json number,title,body
```

% = closed/total in body.

### Reverts

```bash
git log --oneline --grep="Revert" --since="7 days ago" | wc -l
```

> 3/week → broken code?

## Rules

- Read-only code
- Max 2 meta/run
- Max 2 retry/run
- Append-only log
- Persist before finishing: `node scripts/persist-metrics.mjs --routine progress-tracker` (an uncommitted append is lost with the checkout)
- Per-issue attribution: `.claude/agent-spend/sessions.jsonl` (single spend sink owned by agent-core's recordSpend seam; ccusage = ground-truth totals)
- Circuit: 50% over 3+ days

Attribution

mattbutlerengineeringmattbutlerengineering
View sourceMore from mattbutlerengineering →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Browser Extension Developer

Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.

284722 votes

Seo Optimizer

SEO optimization with keyword analysis, readability assessment, technical validation, content quality. Use for search rankings, blog posts, content audits, or encountering keyword density, readability scores, meta tags, schema markup errors.

2192 votes

Google Official Seo Guide

Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation

1862 votes

Tanstack Start

Build a full-stack TanStack Start app on Cloudflare Workers from scratch — SSR, file-based routing, server functions, D1+Drizzle, better-auth, Tailwind v4+shadcn/ui. Use whenever the user mentions TanStack Start, asks to scaffold a full-stack Cloudflare app with SSR, wants an SSR dashboard, or asks for a React 19 + Cloudflare Workers app with file-based routing and server functions — even if they don't name TanStack Start specifically. No template repo — Claude generates every file fresh per ...

9881 votes

Pentest

PTES-aligned adversarial security audit for backend, frontend, and mobile applications. Produces a CVSS-scored Hacker Report with verified PoCs and phased remediation.

5491 votes
View all in development →