agentleFS
schuliganschuligan/claude-skills-collection/skills/tracker-qa/SKILL.md

tracker-qa

Skill0 starsChanged 5 months agoMITView on GitHub

Validates and optionally fixes spreadsheet/tracker files (CSV or Excel) against a rule set. Use when the user says: 'QA the tracker', 'validate the tracker', 'check the spreadsheet', 'audit this CSV', 'is the tracker correct', 'clean the tracker', 'find duplicates', 'check the data', 'validate the data', 'fix the tracker', or hands over a project/task/inventory/contact tracker and wants its integrity checked. Verifies required fields, allowed values, date sanity, duplicates, and status consistency; reports issues by severity; and can apply safe, reversible fixes in fix mode. Generic — works on any tabular tracker; no domain-specific assumptions.

The file

Show its rules and text

We split this skill into the rules it gives an agent

13 rules. About 0 are common, 13 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈13

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Trust nothing, verify everything: If a column should only hold certain values, read every row and check.

    line 12
  2. Distinctive:

    Severity-rank every finding: Not all issues are equal. A duplicate primary key is critical.

    line 13
  3. Distinctive:

    Read-only. Reports issues by severity.

    line 21
  4. Distinctive:

    All expected columns are present (and, for Excel, all expected sheets).

    line 55
  5. Distinctive:

    Every required field is non-empty in every data row.

    line 56
  6. Distinctive:

    No fully-blank phantom rows (a common Excel drag-fill artifact).

    line 57
  7. Distinctive:

    Every value in a categorical column is in its allowed set.

    line 60
  8. Distinctive:

    No impossible or implausible dates (far past/future, or a "completed" date in the future).

    line 66
  9. Distinctive:

    No duplicate values in any unique-key column (e.g., two rows with the same Task ID).

    line 69
  10. Distinctive:

    If you can't run the script in the environment, perform the same checks inline and report against the same severity scheme.

    line 97
  11. Distinctive:

    All processing is local to the file the user provides.

    line 159
  12. Distinctive:

    Use a synthetic, generic example (a project task tracker) in any documentation — never real personal, customer, or compliance data.

    line 160
  13. Distinctive:

    Don't surface secrets: if a column appears to contain credentials or tokens, flag it as a data-hygiene issue rather than echoing the value …

    line 161

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Tracker QA — Spreadsheet Validation & Repair

You are a ruthless data-quality gate for tabular trackers (CSV or Excel). Your job is to catch problems — missing required values, illegal values, impossible dates, duplicates, contradictory statuses — before anyone reports off the data or acts on it. You verify programmatically; you don't eyeball.

Core Philosophy

  1. Trust nothing, verify everything. If a column should only hold certain values, read every row and check. Don't assume the file is clean because it looks clean.
  2. Severity-rank every finding. Not all issues are equal. A duplicate primary key is critical; a trailing space is cosmetic. Rank so the user knows what to fix first.
  3. Fix what's safe, flag what isn't. Deterministic fixes (trim whitespace, normalize a known label, recompute a derived column) can be applied automatically. Anything needing human judgment (which of two conflicting rows is correct) is reported, never guessed.
  4. Never destroy the source. Validate mode is read-only. Fix mode always writes a timestamped backup copy first and operates on a copy.
  5. The rule set is explicit. Validation runs against a stated set of rules the user can see and edit — not hidden assumptions.

Two Modes

Validate Mode (default)

Read-only. Reports issues by severity. Modifies nothing.

Fix Mode

Applies safe, reversible fixes. Always backs up the original first. Use when the user says "fix", "clean", "repair", or "correct".

Fix mode CAN safely repair: leading/trailing whitespace, case normalization of known categorical values (e.g., done → Done), recomputing a derived/formula column from its inputs, removing fully-blank phantom rows, standardizing date formats to ISO (YYYY-MM-DD) when the source format is unambiguous.

Fix mode WILL NOT touch: which of two duplicate rows to keep, ambiguous values, anything where the "correct" value requires domain judgment. These are reported for a human to resolve.

The Rule Set

A tracker is validated against a rule set. Infer a sensible default from the file (or ask the user to confirm/edit it). A rule set looks like:

required_fields: [Task ID, Task Name, Owner, Status, Due Date]
unique_keys: [Task ID]
allowed_values:
  Status:   [Not Started, In Progress, Blocked, Done]
  Priority: [P0, P1, P2, P3]
date_fields: [Start Date, Due Date]
date_rules:
  - Due Date >= Start Date
  - Due Date not absurdly far in the past or future   # e.g., > 2 yrs ago / > 5 yrs out
status_consistency:
  - if Status == Done then % Complete == 100
  - if % Complete == 100 then Status == Done
  - if Status == Blocked then Blocker is non-empty

Adapt the rule set to the tracker's domain (a contact list, an inventory sheet, and a project plan each have different required fields and allowed values), but always confirm the rules before running so the user owns them.

Validation Checks (6 categories)

1. Schema & required fields

  • All expected columns are present (and, for Excel, all expected sheets).
  • Every required field is non-empty in every data row.
  • No fully-blank phantom rows (a common Excel drag-fill artifact).

2. Allowed values

  • Every value in a categorical column is in its allowed set.
  • Catch near-misses caused by case or whitespace (in progress vs In Progress) — these are usually auto-fixable.

3. Date sanity

  • Date fields parse as real dates.
  • Ordering rules hold (e.g., Due Date ≥ Start Date).
  • No impossible or implausible dates (far past/future, or a "completed" date in the future).

4. Duplicates

  • No duplicate values in any unique-key column (e.g., two rows with the same Task ID).
  • Flag near-duplicates (same name, different ID) as warnings — they often indicate accidental re-entry.

5. Status consistency

  • Status and progress agree (Done ⇔ 100%; Blocked ⇒ has a blocker; In Progress ⇒ has an owner).
  • Cross-field rules from the rule set hold.

6. Data quality (softer — warnings, not failures)

  • Owner is a single value, not a comma-separated list (shared ownership = no ownership).
  • Numeric fields are numeric; percentage fields are within 0–100.
  • Trailing/leading whitespace, inconsistent capitalization, stray characters.

Implementation

Use the reference script as a starting point: references/validate_tracker.py (read it on demand). It loads the rule set, runs the six check categories with pandas/openpyxl, ranks findings by severity, and supports --fix --execute with an automatic backup. The script is generic — point it at any CSV/XLSX and rule set.

Validate (read-only):

python3 references/validate_tracker.py tracker.csv --rules rules.yaml
python3 references/validate_tracker.py tracker.xlsx --rules rules.yaml --json

Fix (writes a backup first):

python3 references/validate_tracker.py tracker.xlsx --rules rules.yaml --fix            # dry-run: show the plan
python3 references/validate_tracker.py tracker.xlsx --rules rules.yaml --fix --execute   # apply, after backing up

If you can't run the script in the environment, perform the same checks inline and report against the same severity scheme.

Output Format

Tracker QA Report — [date]
────────────────────────────────────────
File: project-tasks.xlsx   Rows: 128 (126 data + 2 blank)   Rule set: project-task (default)

CHECKS
  [PASS]      Schema & required fields
  [FAIL]      Allowed values        — 3 issues
  [WARN]      Date sanity           — 1 issue
  [FAIL]      Duplicates            — 1 issue
  [PASS]      Status consistency
  [WARN]      Data quality          — 4 issues

FINDINGS
  CRITICAL  Row 44 & 91: duplicate Task ID "T-017"
  HIGH      Row 12: Status "in-progress" not in allowed set (did you mean "In Progress"?) [auto-fixable]
  HIGH      Row 58: Status "Done" but % Complete = 80
  MEDIUM    Row 73: Due Date 2019-03-01 precedes Start Date 2026-05-01
  LOW       Rows 5,9,30,77: trailing whitespace in Owner [auto-fixable]

SUMMARY
  4/6 checks passed. 2 critical/high blockers, 5 auto-fixable.
  Next: resolve the duplicate Task ID (needs a human), then run --fix to clear the 5 auto-fixable items.

Severity Scale

LevelMeaningExamples
CRITICALData is wrong in a way that breaks reporting or downstream actionDuplicate primary key, required field empty
HIGHContradictory or out-of-range value that misleadsStatus/progress mismatch, value outside allowed set
MEDIUMLogically suspect but not immediately breakingDate ordering violation, implausible date
LOWCosmetic / hygieneWhitespace, casing, stray characters

Worked Example (generic)

A small team keeps a project task tracker, project-tasks.csv, with columns Task ID, Task Name, Owner, Status, Priority, Start Date, Due Date, % Complete, Blocker.

Running validate finds:

  • CRITICAL: T-017 appears twice (rows 44 and 91) — a duplicate primary key. Reported, not auto-fixed (a human must decide which row survives).
  • HIGH: row 12 has Status = "in-progress"; the allowed set is In Progress. Auto-fixable (case/format normalization).
  • HIGH: row 58 has Status = Done but % Complete = 80 — contradictory. Reported (which field is right is a judgment call).
  • MEDIUM: row 73's Due Date precedes its Start Date.
  • LOW: four Owner cells have trailing spaces. Auto-fixable.

--fix --execute backs up to project-tasks.backup-[timestamp].csv, normalizes the status label and trims the whitespace, and leaves the duplicate and the status/progress contradiction for the user — reporting exactly what it changed and what it deliberately left alone.

Quality Checklist (before reporting)

  • The rule set was stated and confirmed before running
  • All six check categories ran (or inline equivalents)
  • Findings are ranked by severity, with row references
  • Auto-fixable items are marked as such; judgment-call items are flagged as needing a human
  • In fix mode, a backup was written before any change, and the report lists every change made
  • No source row was deleted or overwritten on a guess

Privacy & Safety

  • All processing is local to the file the user provides. No tracker data is sent anywhere.
  • Use a synthetic, generic example (a project task tracker) in any documentation — never real personal, customer, or compliance data.
  • Don't surface secrets: if a column appears to contain credentials or tokens, flag it as a data-hygiene issue rather than echoing the value in the report.
  • Excel output stays macro-free (.xlsx, never .xlsm); the script never executes formulas from the input file.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.