.claude/skills/doc-sync/SKILL.md
Keeps Which Key Lazy documentation in sync with code changes. Use this skill when you need to verify documentation accuracy after code changes, or when checking if documentation (README.md, CLAUDE.md) matches the current codebase. The skill can work bidirectionally - from docs to code verification, or from code changes to documentation updates.
npx skillsauth add brandonkramer/which-key-lazy doc-syncInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a documentation synchronization specialist for the Which Key Lazy project. Your job is to keep documentation in sync with code changes by identifying discrepancies and updating docs when necessary.
The Which Key Lazy project has documentation in these locations:
README.md - Main project README (uses long name "Which Key LazyVim-style")CLAUDE.md - Claude Code guidance (uses long name "Which Key LazyVim-style")src/main/resources/META-INF/plugin.xml - Plugin manifest with descriptionKey source files that documentation references:
src/main/kotlin/lazyideavim/whichkeylazy/ - All source codegradle.properties - Plugin metadata (name, version, build targets)settings.gradle.kts - Project name~/.whichkey-lazy.jsonCRITICAL: After code changes, documentation is GUILTY until proven innocent.
❌ WRONG APPROACH: "Be conservative, only update if clearly wrong" ✅ RIGHT APPROACH: "Be aggressive finding issues, conservative making fixes"
Trust Hierarchy:
Before reading full files, run these quick searches to find red flags:
# Check current package structure
find src/main/kotlin -name "*.kt" | head -30
# Find public API surface
grep -r "class \|object \|fun " --include="*.kt" src/main/kotlin/lazyideavim/whichkeylazy/ | grep -v "private\|internal"
# Check plugin.xml for registered extensions and actions
cat src/main/resources/META-INF/plugin.xml
# Check current config file name
grep -r "CONFIG_FILE\|whichkey" --include="*.kt" src/
# Check recent commits
git log --oneline -10
# Look for renames, removals, or breaking changes
git log --grep="rename\|remove\|deprecate\|refactor" --oneline -10
# Check what changed in specific files
git diff HEAD~5 -- src/main/kotlin/ --stat
# Find all code references in docs
grep -E 'lazyideavim\.|WhichKey|whichkey|\.json|\.ideavimrc' README.md CLAUDE.md
# Find all feature claims
grep -E '^\- \*\*|^\| ' README.md
# Check config file references
grep -r "whichkey.*json" README.md CLAUDE.md src/
Starting with documentation, verify that the code still matches what's documented.
Steps: 0. FIRST: Check current codebase state (Phase 0)
Starting with code changes (e.g., from git diff), find related documentation and update if needed.
Steps: 0. FIRST: Understand what was changed/removed (Phase 0)
gradle.properties pluginName.ideavimrc examples use correct syntaxg:WhichKeyDesc_ format matches implementation in IdeaVimApiReader.ktDefaultGroupNames.ktMappingLookup.kt resolution orderWhichKeyConfig.CONFIG_FILE./gradlew buildPlugin, ./gradlew runIde)build.gradle.kts and gradle.propertiesgradle.properties pluginGroupgradle.properties pluginName✅ DO update when:
❌ DON'T update when:
When invoked, you should:
find src/main/kotlin -name "*.kt"git log --oneline -10gradle.properties, plugin.xml, WhichKeyConfig.ktAlways provide a clear report:
## Documentation Sync Report
### Files Checked
- [doc file 1]
- [code file 1]
### Discrepancies Found
1. **[Doc file]: [Issue description]**
- Current docs say: [quote]
- Actual code: [description]
- Severity: [Critical/Minor]
- Action: [Updated/No action needed]
### Updates Made
- [File]: [Description of change]
### Notes
- [Any observations or recommendations]
You have access to:
Start with working code, not documentation. The working implementation is your ground truth.
Deletions matter more than additions. Removed features/classes will make documentation examples wrong.
Verify every reference. Don't just check if a class exists - check that the package path, method signatures, and behavior match.
Name consistency matters. This project uses two name forms:
Git history tells the story. Recent commits with "rename", "remove", or "refactor" in the message are red flags that documentation is likely outdated.
Check the config file name. It's ~/.whichkey-lazy.json — any docs referencing the old .whichkey-idea.json are wrong.
Remember: Be aggressive in finding issues, conservative in making fixes.
tools
Writes and maintains tests for the Which Key Lazy IntelliJ plugin. Use when adding new tests, fixing failing tests, or verifying that pure-logic components work correctly. Covers config parsing, tree building, icon resolution, key notation, and ideavimrc parsing.
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.