agentleFS
AirMileAirMile/claude-config/skills/team-verify/SKILL.md

team-verify

Skill0 starsChanged 4 months agoMITView on GitHub

Verify teammate code delivery against task brief. Use with /team-verify.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

26 rules. About 0 are common, 14 are distinctive, and 12 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈14

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 12

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Verify teammate code delivery.

    line 36
  2. Very specific:

    After teammate delivers code on a feature (with or without /dev-ship (define phase))

    line 42
  3. Distinctive:

    When teammate pushes code for a backlog TODO item

    line 43
  4. Distinctive:

    When teammate branch code needs verification before merge

    line 44
  5. Very specific:

    Team-mode gate: Read TEAM_MODE via shared/PROJECT-MODE.md read pattern.

    line 88
  6. Distinctive:

    Use AskUserQuestion to confirm:

    line 150
  7. Very specific:

    Read CLAUDE.md ### Stack section

    line 168
  8. Very specific:

    Read .claude/research/stack-baseline.md (if available)

    line 169
  9. Very specific:

    Project context: Read .project/project.json (if it exists).

    line 172
  10. Very specific:

    Read .project/project-context.json (if it exists).

    line 177
  11. Very specific:

    If project.json/project-context.json or stack-baseline does not exist → continue without (backwards compatible).

    line 180
  12. Distinctive:

    Always start dev server + tunnel — needed for both AUTO and MANUAL items.

    line 275
  13. Very specific:

    If found, verify it's live: curl -s -o /dev/null -w "%{http_code}" {tunnel_url}.

    line 283
  14. Distinctive:

    Trigger: Always after PHASE 4b (regardless of whether everything is PASS or there are FAILs).

    line 346
  15. Distinctive:

    No fixes applied in PHASE 5c

    line 453
  16. Distinctive:

    No previously-PASS AUTO items in PHASE 4b

    line 454
  17. Distinctive:

    All fixes were MANUAL-only (config/styling — low chance of side effects)

    line 455
  18. Distinctive:

    Goal: Verify that fixes have not broken previously working functionality.

    line 457
  19. Distinctive:

    Regressions found: Add FAIL items to results.

    line 478
  20. Distinctive:

    After regression fix: Do NOT repeat PHASE 5d (max 1 regression pass to prevent loops).

    line 490
  21. Very specific:

    Add/update tests section with session results

    line 502
  22. Very specific:

    Update feature status if appropriate

    line 503
  23. Distinctive:

    Do NOT overwrite other sections

    line 504
  24. Very specific:

    All PASS + no MISSING → .status = "DONE", remove stage

    line 509
  25. Distinctive:

    Add new components if they were created during fixes

    line 522
  26. Distinctive:

    Read these Just-In-Time during specific phases — do not load upfront.

    line 545

≈ “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

Verify — Teammate Verification

Overview

Verify teammate code delivery. Detects available context (feature.json with requirements, backlog TODO with description, or just a branch diff), checks completeness where possible, generates and runs tests, and produces structured feedback.

Trigger: /team-verify or /team-verify {feature-name} or /team-verify {feature-name} {feedback}

When to Use

  • After teammate delivers code on a feature (with or without /dev-ship (define phase))
  • When teammate pushes code for a backlog TODO item
  • When teammate branch code needs verification before merge

NOT for:

  • Testing own code (use /dev-ship (verify phase))
  • Unit-level test writing during build (use /dev-ship (build phase))

Input Formats

# Auto-detect context (recommended)
/team-verify

# Specific feature
/team-verify user-registration

# Inline feedback (skips automation)
/team-verify user-registration
1:PASS
2:FAIL no validation error
3:PASS

Workflow

Phase tracking — first action of the skill: call TaskCreate with these 12 items (status pending), then use TaskUpdate to set each phase in_progress at the start and completed at the end. During context compaction the task list remains visible — no risk of skipping phases.

  1. PHASE 0: Context Detection
  2. PHASE 0.5: Completeness Check
  3. PHASE 1: Research + Scenario Generation
  4. PHASE 2: Test Plan + Classification
  5. PHASE 3: Automated Test Execution
  6. PHASE 4: Manual Test Execution
  7. PHASE 4b: Combined Results
  8. PHASE 4c: Coverage Adequacy Analysis
  9. PHASE 5: Results Report + Action Choice
  10. PHASE 5c: Fix Loop
  11. PHASE 5d: Regression Check
  12. PHASE 6: Update + Feedback

PHASE 0: Context Detection

Todo: call TaskCreate with the 12 phase items (see above). Mark PHASE 0 → in_progress via TaskUpdate.

  1. Team-mode gate. Read TEAM_MODE via shared/PROJECT-MODE.md read pattern. If "solo" or absent → show AskUserQuestion (warn-only):

    header: "Solo project"
    question: "This project is marked solo (team.mode). /team-verify is meant for verifying teammate deliveries. Continue anyway?"
    options:
      - label: "Cancel (Recommended)"
        description: "Exit. Toggle to team via the ⚙ button in the backlog or run /core-setup to mark this as a team project."
      - label: "Yes, continue once"
        description: "Proceed with verification for this single invocation."
    multiSelect: false

    Cancel → exit. Continue → proceed with step 1.

  2. Get branch and project info:

    git branch --show-current
  3. Capture git baseline (for scoped commit in PHASE 6):

    mkdir -p .project/session
    git status --porcelain | sort > .project/session/pre-skill-status.txt
  4. Find context (in order of richness):

    a. feature.json — if feature name given → .project/features/{name}/feature.json. Otherwise → scan .project/features/*/feature.json for features with status DOING + stage built, or with externalRef.assignees set.

    b. Backlog TODO — if no feature.json found, check .project/backlog.json for a TODO/DOING item matching the feature name or branch name. Extract the item's description/title.

    c. Nothing — no feature.json, no backlog match.

  5. Determine mode:

    ConditionModeDescription
    feature.json exists with requirements[]BRIEF_REVIEWFull brief available — completeness check + test
    No feature.json, but backlog TODO with descriptionTODO_REVIEWBacklog description as test basis
    No feature.json, no backlog matchBRANCH_ONLYGit diff only — test what's visible
  6. Parse user input:
    • Feature name only → proceed to PHASE 0.5
    • Feature name + inline feedback → parse into structured results (item number, PASS/FAIL, notes); map to requirements where possible; show summary; skip directly to PHASE 5
    • Feature name + free text → same as inline feedback above
  7. Output:

    CONTEXT DETECTION
    
    Mode:      {BRIEF_REVIEW | TODO_REVIEW | BRANCH_ONLY}
    Feature:   {name or branch name}
    Assignee:  {name or "none"}
    Branch:    {branch}
    Context:   {feature.json | backlog TODO | git diff only}
    Status:    {backlog status: DOING/DONE/etc or "unknown"}

    Use AskUserQuestion to confirm:

    • header: "Test Mode"
    • question: "Continue with {mode} for {feature}?"
    • options:
      • label: "Yes, continue (Recommended)", description: "{mode description}"
      • label: "Different feature", description: "I want to test a different feature"
      • label: "Cancel", description: "Stop"
    • multiSelect: false
  8. Signal active feature (after feature name is determined):

    echo '{"skill":"team-verify"}' | node ~/.claude/scripts/ship-checkpoint.js signal {feature-name}
  9. Load stack & project context (for agent prompts):

    Stack detection:

    • Read CLAUDE.md ### Stack section
    • Read .claude/research/stack-baseline.md (if available)
    • Fallback: detect from package.json / go.mod / etc.

    Project context: Read .project/project.json (if it exists). Extract only:

    • stack (framework, language, testing, packages)
    • endpoints (method, path, auth)
    • data.entities (names, fields, relations)

    Read .project/project-context.json (if it exists). Extract:

    • context (structure, routing, patterns)

    If project.json/project-context.json or stack-baseline does not exist → continue without (backwards compatible).

    Assemble STACK_CONTEXT (passed to all agents in this skill):

    STACK CONTEXT:
    Framework: {stack.framework} ({stack.language})
    Testing: {stack testing info or stack-baseline testing conventions}
    Packages: {relevant packages}
    
    PROJECT CONTEXT:
    Structure: {context.structure or "not available"}
    Routing: {context.routing or "not available"}
    Patterns: {context.patterns or "not available"}
    Endpoints: {endpoints or "not available"}
    Entities: {data.entities or "not available"}

PHASE 0.5: Completeness Check

Todo: mark PHASE 0 → completed, PHASE 0.5 → in_progress. Skip if BRANCH_ONLY mode. Otherwise read .claude/skills/team-verify/references/phase-0-5-completeness.md and follow the agent prompts for the detected mode.


PHASE 1: Research + Scenario Generation (Explore agent)

Todo: mark PHASE 0.5 → completed, PHASE 1 → in_progress. Read .claude/skills/team-verify/references/phase-1-scenario-agent.md and spawn the Explore agent with the prompt template.

Goal: Research test strategies and generate scenarios. Runs in a single Explore agent to keep Context7 results and scenario details out of the main context.


PHASE 2: Test Plan + Classification

Todo: mark PHASE 1 → completed, PHASE 2 → in_progress.

Goal: Classify scenarios into AUTO/MANUAL, generate test data, set up dev server.

Classification criteria: See ../shared/test-classification.md for AUTO/BROWSER, AUTO/CLI, and MANUAL criteria with pattern tables.

  1. Generate test data (via Explore agent — zero source file reads in main context):

    Feature: {feature-name}
    Scenarios from PHASE 1: {list of scenarios with requirement mapping}
    
    {STACK_CONTEXT}
    
    Read the source code and look for:
    - Form fields, validation rules, API endpoints relevant to the test items
    - Existing test files that can be reused
    - Test patterns matching the stack (e.g. Vitest for React, PHPUnit for Laravel)
    
    Return as structured overview:
    FEATURE_CONTEXT_START
    Existing tests: {path to test files, or "none"}
    Per scenario:
    - Item {N}: {title}
      Test data: {concrete values}
      Expected: {expected outcome}
      Recommended method: BROWSER | CLI | MANUAL
      Reason: {why this method}
    FEATURE_CONTEXT_END
  2. Classify each scenario using test-classification.md criteria:

    TEST CLASSIFICATION: {feature-name}
    
    | # | Test                     | Type         | Requirement | Reason                                  |
    |---|--------------------------|--------------|-------------|-----------------------------------------|
    | 1 | Register with valid data | AUTO/BROWSER | REQ-001     | DOM: redirect + welcome message visible |
    | 2 | Without email            | AUTO/BROWSER | REQ-002     | DOM: error message visible              |
    | 3 | Welcome mail sent        | MANUAL       | REQ-004     | Email verification not via DOM          |
    
    AUTO: {n} (BROWSER: {n}, CLI: {n})  MANUAL: {n}
  3. User override:

    Use AskUserQuestion:

    • header: "Test Plan"
    • question: "Continue with test execution?"
    • options:
      • label: "Yes, run tests (Recommended)", description: "Start automated tests, then manual"
      • label: "Automated only", description: "Skip manual tests"
      • label: "All manual", description: "Skip automated tests"
      • label: "Cancel", description: "Stop"
    • multiSelect: false
  4. Dev server + Cloudflare Tunnel:

    Always start dev server + tunnel — needed for both AUTO and MANUAL items.

    a) Check for existing tunnel:

    grep -oE 'https://[a-z0-9-]+\.trycloudflare\.com' /tmp/cloudflared.log 2>/dev/null | head -1

    If found, verify it's live: curl -s -o /dev/null -w "%{http_code}" {tunnel_url}. If HTTP 200 and serves correct project → use it.

    b) No tunnel running — start dev server + tunnel (same process as /project-tunnel):

    # Detect framework from package.json and start
    # Wait for server ready
    for i in $(seq 1 15); do curl -s http://localhost:3000 > /dev/null 2>&1 && break || sleep 1; done
    
    # Start Cloudflare Tunnel
    cloudflared tunnel --url http://localhost:3000 > /tmp/cloudflared.log 2>&1 &
    sleep 8
    grep -oE 'https://[a-z0-9-]+\.trycloudflare\.com' /tmp/cloudflared.log | head -1

    c) If server or tunnel fails:

    ⚠ Dev server + tunnel not started. All items will be MANUAL.

    Graceful fallback: reclassify ALL items as MANUAL, skip PHASE 3.


PHASE 3: Automated Test Execution (Task Agent)

Todo: mark PHASE 2 → completed, PHASE 3 → in_progress. Skip if no AUTO items or dev server unavailable. Otherwise read .claude/skills/team-verify/references/phase-3-task-agent.md and spawn the Task agent.


PHASE 4: Manual Test Execution (interactive)

Todo: mark PHASE 3 → completed, PHASE 4 → in_progress. Skip if no MANUAL items. Otherwise read .claude/skills/team-verify/references/phase-4-manual.md and follow the interactive loop.


PHASE 4b: Combined Results

Todo: mark PHASE 4 → completed, PHASE 4b → in_progress.

Merge automated (PHASE 3) and manual (PHASE 4) results:

COMBINED RESULTS: {feature-name}

| # | Test                  | Type   | Requirement | Result              |
|---|-----------------------|--------|-------------|------------------------|
| 1 | Valid registration    | AUTO   | REQ-001     | ✓ PASS                |
| 2 | Without email         | AUTO   | REQ-002     | ✗ FAIL: no error      |
| 3 | Welcome mail          | MANUAL | REQ-004     | ✗ FAIL: no mail       |

AUTO PASS: {n}  AUTO FAIL: {n}
MANUAL PASS: {n}  MANUAL FAIL: {n}  SKIP: {n}
TOTAL PASS: {n}  TOTAL FAIL: {n}

PHASE 4c: Coverage Adequacy Analysis

Todo: mark PHASE 4b → completed, PHASE 4c → in_progress.

Trigger: Always after PHASE 4b (regardless of whether everything is PASS or there are FAILs).

Goal: Analyze whether the generated test scenarios cover the code sufficiently, or whether there are blind spots.

Spawn Explore agent (subagent_type="Explore", model: "sonnet", thoroughness: "very thorough"):

Analyze whether the test scenarios fully cover the code.

{STACK_CONTEXT}

Feature: {feature-name}
Code diff: {diff summary}

Executed test scenarios:
{list of all scenarios with results from PHASE 4b}

ANALYZE:
1. Which code paths in the diff are NOT covered by the current scenarios?
2. Which error handling / edge cases have not been tested?
3. Are there security-relevant paths (auth, input validation, permissions) without a test?
4. Are there integration points with other components that have not been tested?

RETURN FORMAT:
ADEQUACY_START
Coverage: SUFFICIENT | INSUFFICIENT
Gaps: {list of missing scenarios, or "none"}
Suggested: {0-3 extra scenario proposals if gaps found}
ADEQUACY_END

If SUFFICIENT + no gaps:

COVERAGE ANALYSIS: ✓ Scenarios adequately cover the code

Continue to PHASE 5.

If INSUFFICIENT or gaps found:

COVERAGE ANALYSIS: {feature-name}

Gaps found:
1. {gap description}
2. {gap description}

Extra scenarios will be added and tested automatically...

Classify the proposed scenarios (PHASE 2 logic), execute them (PHASE 3/4 logic), and merge results back into the PHASE 4b table. No user interaction — Claude adds gaps automatically and tests them. Max 1 iteration (no repeat of PHASE 4c after the extra scenarios).


PHASE 5: Results Report + Action Choice

Todo: mark PHASE 4c → completed, PHASE 5 → in_progress.

Goal: Combined report with requirement coverage, then choose: feedback or fix.

TEST RESULTS: {feature-name}

REQUIREMENT COVERAGE
| REQ     | Description         | In Code | Tested | Result  |
|---------|---------------------|---------|--------|---------|
| REQ-001 | User can log in     | ✓       | ✓      | PASS    |
| REQ-002 | Email validation    | ✓       | ✓      | FAIL    |
| REQ-003 | Rate limiting       | ✗       | —      | MISSING |
| REQ-004 | Welcome mail        | ✓       | ✓      | PASS    |

Total: {pass}/{total} PASS | {fail} FAIL | {missing} MISSING

If all PASS + no MISSING → skip action choice, proceed to PHASE 6 (feedback = positive message).

If any FAIL or MISSING:

Use AskUserQuestion:

  • header: "Action"
  • question: "There are {fail} failed and {missing} missing items. What do you want to do?"
  • options:
    • label: "Send feedback (Recommended)", description: "Generate feedback for teammate — they fix it themselves"
    • label: "Fix myself", description: "Fix the issues in their code and send back as working"
    • label: "Both", description: "Fix what can be fixed, send back the rest as feedback"
  • multiSelect: false

If "Send feedback" → proceed to PHASE 6 (feedback). If "Fix myself" → proceed to PHASE 5c (fix loop for ALL failed items). If "Both" → proceed to PHASE 5c (fix loop). After fixes, PHASE 6 generates feedback for remaining MISSING/unfixed items.


PHASE 5c: Fix Loop

Todo: mark PHASE 5 → completed, PHASE 5c → in_progress. Skip if user chose "Send feedback". Read .claude/skills/team-verify/references/phase-5c-fix-loop.md and follow the fix-iterate-retest flow.


PHASE 5d: Regression Check

Todo: mark PHASE 5c → completed, PHASE 5d → in_progress.

Skip when:

  • No fixes applied in PHASE 5c
  • No previously-PASS AUTO items in PHASE 4b
  • All fixes were MANUAL-only (config/styling — low chance of side effects)

Goal: Verify that fixes have not broken previously working functionality.

Collect all items from PHASE 4b that were PASS and had AUTO classification. Re-run these via Task agent (same approach as PHASE 3).

Display:

REGRESSION CHECK: {feature-name}

{n} previously-PASS AUTO items re-tested...

| # | Test               | Was    | Now    |
|---|--------------------|--------|--------|
| 1 | Valid registration | ✓ PASS | ✓ PASS |
| 4 | Email format       | ✓ PASS | ✗ FAIL |

Regressions: {n} | Stable: {n}

No regressions: Continue to PHASE 6.

Regressions found: Add FAIL items to results. Offer the same fix/feedback choice as PHASE 5:

Use AskUserQuestion:

  • header: "Regression"
  • question: "{n} previously working items are now failing. What do you want to do?"
  • options:
    • label: "Fix (Recommended)", description: "Fix the regressions (back to PHASE 5c for these items)"
    • label: "Send feedback", description: "Report regressions in feedback to teammate"
    • label: "Accept", description: "Mark as known issue"
  • multiSelect: false

After regression fix: Do NOT repeat PHASE 5d (max 1 regression pass to prevent loops).


PHASE 6: Update + Feedback

Todo: mark PHASE 5d → completed, PHASE 6 → in_progress.

Step 1: Parallel Sync (feature.json + backlog + dashboard) — follow shared/SYNC.md 3-File Sync Pattern

  1. Update feature.json (BRIEF_REVIEW mode only, skip if it does not exist):
    • requirements[].status → "pass" / "fail" / "missing" per requirement
    • Add/update tests section with session results
    • Update feature status if appropriate
    • Do NOT overwrite other sections
  2. Update backlog (if .project/backlog.json exists, BRIEF_REVIEW or TODO_REVIEW mode): (see shared/BACKLOG.md for parse/write pattern)
    • Find feature in data.features[] by name
    • All PASS + no MISSING → .status = "DONE", remove stage
    • Otherwise → .status stays "DOING", .stage stays "built"
    • data.updated → current date
    • Edit .project/backlog.json
  3. Update project.json (if .project/project.json exists, BRIEF_REVIEW or TODO_REVIEW mode): (see shared/DASHBOARD.md)
    • features array: find feature by name, set status to "DONE" (all pass) or "DOING" + stage "built" (fails remaining)
    • stack.packages: merge if packages were installed during fix loop
    • endpoints: merge if changed during fixes
    • data.entities: merge if changed during fixes
    • architecture.components in .project/project-context.json — follow component-first model from shared/DASHBOARD.md:
      • Confirm component status → "done", merge test files from PHASE 3 into component test[], merge source fixes from PHASE 5c into src[]
      • Add new components if they were created during fixes
      • Skip if no architecture.components exists in project-context.json
  4. Scoped auto-commit — follow shared/SCOPED-COMMIT.md. team-verify deltas:
    • Baseline: status form — .project/session/pre-skill-status.txt.
    • OVERLAP policy: interactive.
    • Fallback: stage known codebase skill-output files only (acceptance test files, source files modified during verification). .project/ is local-only — never stage it.
    • Commit: git commit -m "test({feature}): {pass}/{total} requirements verified"
    • Cleanup: rm -f .project/session/pre-skill-status.txt /tmp/current-status.txt plus node ~/.claude/scripts/ship-checkpoint.js signal-clear {feature-name}

Step 2: Teammate Feedback

Todo: if not BRANCH_ONLY mode → read .claude/skills/team-verify/references/phase-6-feedback.md and generate feedback using the appropriate template.


Mode Comparison

See PHASE 0 step 4 for the mode definition table (BRIEF_REVIEW / TODO_REVIEW / BRANCH_ONLY). The behavioral differences per phase are documented inline at each phase that specifies a Skip if: or mode requirement.

References

Read these Just-In-Time during specific phases — do not load upfront.

FileWhen to load
references/phase-0-5-completeness.mdPHASE 0.5 — completeness agent prompts for BRIEF_REVIEW and TODO_REVIEW
references/phase-1-scenario-agent.mdPHASE 1 — Explore agent prompt for scenario research
references/phase-3-task-agent.mdPHASE 3 — Task agent prompt + result parsing for AUTO test execution
references/phase-4-manual.mdPHASE 4 — interactive manual test loop
references/phase-5c-fix-loop.mdPHASE 5c — fix-iterate-retest flow (only when user chose Fix myself/Both)
references/phase-6-feedback.mdPHASE 6 Step 2 — feedback templates for BRIEF_REVIEW and TODO_REVIEW
references/completeness-patterns.mdPHASE 0.5 — matching patterns for Explore agent (load alongside phase-0-5)

Todo: mark PHASE 6 → completed.

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.