agentleFS
GitHubKnown publishergithub/squad/packages/squad-cli/templates/skills/retro-enforcement/SKILL.md

retro-enforcement

Skill3.4k starsChanged 2 months agoMITView on GitHub

Ensure retrospectives happen on schedule and that their action items are tracked in GitHub Issues — not markdown checklists. This skill addresses a specific, measured failure mode: 0% completion rate on markdown retro action items across 6 consecutive retrospectives. GitHub Issues have an 85%+ completion rate in the same squad. The format was the problem, not the people. The function checks .squad/log/ for any file matching *retrospective* dated within the last $WindowDays days (default: 7). If none is found, the…

2 other projects use a version of this, 2 of them edited.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

5 rules. About 0 are common, 3 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Ensure retrospectives happen on schedule and that their action items are tracked in GitHub Issues — not markdown checklists.

    line 5
  2. Very specific:

    Call Test-RetroOverdue at the start of every round, before building the work queue.

    line 42
  3. Very specific:

    When Test-RetroOverdue returns $true:

    line 62
  4. Distinctive:

    Resume normal round: after retro log confirmed

    line 68
  5. Distinctive:

    Every retro action item MUST become a GitHub Issue.

    line 72

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

Skill: Retro Enforcement

Purpose

Ensure retrospectives happen on schedule and that their action items are tracked in GitHub Issues — not markdown checklists.

This skill addresses a specific, measured failure mode: 0% completion rate on markdown retro action items across 6 consecutive retrospectives. GitHub Issues have an 85%+ completion rate in the same squad. The format was the problem, not the people.

Core Function: Test-RetroOverdue

function Test-RetroOverdue {
    param(
        [string]$LogDir    = ".squad/log",
        [int]$WindowDays   = 7,
        [string]$Pattern   = "*retrospective*"
    )

    $cutoff = (Get-Date).AddDays(-$WindowDays)

    $retroLogs = Get-ChildItem -Path $LogDir -Filter $Pattern -ErrorAction SilentlyContinue |
                 Where-Object { $_.LastWriteTime -ge $cutoff }

    return ($retroLogs.Count -eq 0)
}

Returns

  • $true — No retro log found within the window. Retro is overdue. Block other work.
  • $false — At least one retro log found within the window. Proceed normally.

Detection Logic

The function checks .squad/log/ for any file matching *retrospective* dated within the last $WindowDays days (default: 7). If none is found, the retro is overdue.

File naming convention: .squad/log/{ISO8601-timestamp}-retrospective.md

Example: .squad/log/2026-03-24T14-45-00Z-retrospective.md

Coordinator Integration

Call Test-RetroOverdue at the start of every round, before building the work queue.

# At round start — before any work queue construction
if (Test-RetroOverdue -LogDir ".squad/log" -WindowDays 7) {
    Write-Host "[RETROSPECTIVE] Retrospective overdue. Running before other work."

    # Spawn retro facilitator
    Invoke-RetroSession -Mode "catch-up"

    # Wait for retro log to be written
    # Then resume normal round
}

# Proceed with normal work queue
$workQueue = Get-PendingIssues | Sort-Object -Property Priority

Blocking Semantics

When Test-RetroOverdue returns $true:

  1. Do not start any other work until the retro completes
  2. Spawn the facilitator agent (Scribe or designated) with retro mode
  3. Wait for the log file to be written to .squad/log/
  4. Verify action items were created as GitHub Issues (not markdown)
  5. Resume normal round after retro log confirmed

Action Item Enforcement

Every retro action item MUST become a GitHub Issue. The facilitator agent is responsible for this. The coordinator verifies.

Verification Check

function Test-RetroActionItemsCreated {
    param([string]$RetroLogPath)

    $content = Get-Content $RetroLogPath -Raw

    # Check for Issue references (e.g., #1478, https://github.com/.../issues/1478)
    $issueRefs = [regex]::Matches($content, '(?:#\d{3,}|issues/\d{3,})')

    # Check for unclosed markdown checkboxes (bad pattern)
    $openCheckboxes = [regex]::Matches($content, '- \[ \]')

    if ($openCheckboxes.Count -gt 0) {
        Write-Warning "[RETROSPECTIVE] Found $($openCheckboxes.Count) markdown checkboxes — convert to Issues"
        return $false
    }

    return ($issueRefs.Count -gt 0)
}

Why Not Markdown Checklists

From production data in tamirdresher/tamresearch1:

RetroAction Items FormatCompletion
2025-12-05Markdown - [ ]0/4 = 0%
2025-12-19Markdown - [ ]0/3 = 0%
2026-01-09Markdown - [ ]0/5 = 0%
2026-01-23Markdown - [ ]0/4 = 0%
2026-02-07Markdown - [ ]0/3 = 0%
2026-02-21Markdown - [ ]0/4 = 0%
2026-03-24GitHub Issues4/4 = 100% (after enforcement)

Root cause: Markdown checklists have no assignee, no notifications, no close event, and no query surface. They are invisible to every workflow that drives completion.

Cadence Enforcement

Recommended schedule

  • Weekly squads: window = 7 days
  • Bi-weekly squads: window = 14 days

Ralph integration example

# ralph-watch.ps1 — round start hook
function Invoke-RoundStart {
    # 1. Always check retro first
    if (Test-RetroOverdue -LogDir "$RepoRoot/.squad/log" -WindowDays 7) {
        Write-Host "[RALPH] Retro overdue — enforcing before work queue"
        Invoke-RetroSession
        return  # Re-enter round after retro completes
    }

    # 2. Normal work queue
    $issues = Get-ReadyIssues
    foreach ($issue in $issues) {
        Invoke-WorkItem -Issue $issue
    }
}

Skill Metadata

FieldValue
Skill IDretro-enforcement
CategoryCeremonies / Process
TriggerCoordinator round start
Dependencies.squad/log/ directory, GitHub Issues API
Tested intamirdresher/tamresearch1 (production, March 2026)
OutcomeRetro cadence restored; action item completion 0% → 100%

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.