CtrlK
BlogDocsLog inGet started
Tessl Logo

akshay-babbar/doc-sync

Auto-syncs stale docstrings and README when function signatures change. Detects documentation drift after refactors, parameter additions, or return type changes. Dry-run by default — proposes before writing.

87

1.59x
Quality

100%

Does it follow best practices?

Impact

86%

1.59x

Average score across 17 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

doc-sync

doc-sync

Auto-syncs docstrings when code changes. Proposes README updates — never auto-writes.

The Mental Model

CODE CHANGE ──► doc-sync ──► Docstring: auto-write (after you confirm)
                              │
                              └─► README: propose only (you decide)

One rule: If documentation already exists for a symbol, keep it in sync. If not, report missing coverage — don't create from scratch.

Quick Start

# Install
npx tessl install akshay-babbar/doc-sync

# Preview what would change
/doc-sync --dry-run

# Apply changes (asks for confirmation first)
/doc-sync --apply

# Check last 3 commits
/doc-sync --dry-run HEAD~3..HEAD

What Gets Updated

TargetBehavior
DocstringsAuto-written after you confirm the report
README mentionsProposed only — never auto-applied
CHANGELOG / ADRsNever touched

The Trust Model

┌─────────────────────────────────────────────────┐
│            YOUR DOCUMENTATION                    │
├─────────────────────────────────────────────────┤
│  DOCSTRINGS          │  README / MARKDOWN       │
│  ───────────          │  ─────────────────       │
│  Auto-write           │  Propose only            │
│  (after confirm)      │  (you approve)           │
├─────────────────────────────────────────────────┤
│  PROTECTED: CHANGELOG, ADRs, LICENSE, SECURITY  │
│  ─────────────────────────────────────────────  │
│  Never modified. Period.                         │
└─────────────────────────────────────────────────┘

Example

Code change:

- def fetch_user(user_id: int) -> User:
+ def fetch_user(user_id: int, include_profile: bool = False) -> User:

What doc-sync does:

  1. Detects the new parameter
  2. Finds the docstring for fetch_user
  3. Shows you: "Will add include_profile to docstring"
  4. After you confirm, adds:
    Args:
          user_id: The user's unique identifier.
    +     include_profile: Whether to include profile data. Defaults to False.

Supported Languages

Python, TypeScript/JavaScript, Go, Rust, Ruby, Java, Kotlin

Philosophy

We doWe don't
Update existing docsCreate new docs from scratch
Flag ambiguityGuess and silently fix
Ask before writingAuto-commit changes
Minimal surgical edits"Improve" surrounding content

Platforms

PlatformStatus
Claude Code
Windsurf
Cursor
OpenCode

Why trust this tool? See TRUST.md for what we protect and why.

Workspace
akshay-babbar
Visibility
Public
Created
Last updated
Publish Source
CLI
Badge
akshay-babbar/doc-sync badge