CtrlK
BlogDocsLog inGet started
Tessl Logo

matthew-a-carr/sync-docs

Diff-driven doc-staleness sweep. Maps every changed path against the "Doc review — keeping docs true" table in AGENTS.md, runs the load-bearing generated-artifact checks (OpenAPI, AGENTS.md/CLAUDE.md symlinks, ADR index), and patches stale prose docs in the same change. Use when called by `implement-spec` / `review-implementation` at close-out, or when a human says "sync the docs" / "make sure the docs are still true after this change".

90

1.32x
Quality

90%

Does it follow best practices?

Impact

93%

1.32x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-1/

{
  "context": "Tests whether the agent detects a newly added AGENTS.md file in the diff, verifies whether a sibling CLAUDE.md symlink exists, creates one if missing using `ln -s AGENTS.md CLAUDE.md`, and reports this action in the structured summary.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Git diff used",
      "description": "Evidence that git diff --staged (and/or --name-only) was run to identify changed paths, not manual file listing",
      "max_score": 8
    },
    {
      "name": "New AGENTS.md detected",
      "description": "The agent identified that packages/payments/AGENTS.md is a newly added file in the diff",
      "max_score": 10
    },
    {
      "name": "CLAUDE.md symlink check performed",
      "description": "The agent verified whether a CLAUDE.md symlink exists alongside packages/payments/AGENTS.md (e.g. ran ls -la packages/payments/CLAUDE.md or equivalent)",
      "max_score": 12
    },
    {
      "name": "CLAUDE.md symlink created",
      "description": "A CLAUDE.md symlink exists in packages/payments/ pointing to AGENTS.md after the task completes",
      "max_score": 20
    },
    {
      "name": "Symlink target is AGENTS.md",
      "description": "The CLAUDE.md in packages/payments/ is a symlink to AGENTS.md (not a copy, not a hardlink)",
      "max_score": 10
    },
    {
      "name": "No code files modified",
      "description": "Source code files (*.ts, package.json, etc.) were not edited — only documentation/structural files",
      "max_score": 10
    },
    {
      "name": "Report produced",
      "description": "A doc-sync-report.md file exists in the working directory",
      "max_score": 5
    },
    {
      "name": "Report format — heading",
      "description": "Report contains a heading with the number of changed paths (e.g. '## Doc sync — N paths changed')",
      "max_score": 7
    },
    {
      "name": "Report symlink action recorded",
      "description": "Report explicitly states the CLAUDE.md symlink was created (not just that AGENTS.md was found)",
      "max_score": 10
    },
    {
      "name": "Prose docs section present",
      "description": "Report contains a 'Prose docs' or equivalent section listing docs that were checked",
      "max_score": 8
    }
  ]
}

SKILL.md

tile.json