Loading skill
Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Manage multilingual docstrings and comments. Trigger with "update docstrings", "manage comments", "add documentation comments", "update JSDoc".
.claude/skills/wasabeef-manage-multilingual-docstrings-and-comments/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 284% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 75% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 127% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 86% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 89% | 0% |
Systematically manage multilingual docstrings/comments and maintain high-quality documentation.
bash# Run with automatic language detection "Please add docstrings to classes and functions without them, and update comments that don't meet standards" # Run with specified language /update-doc-string --lang python "Please update docstrings in Python files to comply with PEP 257" # Maintain documentation for specific directories "Please add JSDoc to functions under src/components/"
--lang <language> : Documentation language (default: en)--style <style> : Specify documentation style (has language-specific defaults)--marker <true|false> : Whether to add Claude markers (default: true)bash# 1. Analyze target files (programming language is auto-detected) find . -type f \( -name "*.py" -o -name "*.js" -o -name "*.ts" -o -name "*.dart" -o -name "*.go" -o -name "*.rs" \) | grep -v test "Please identify elements with insufficient docstrings (0 comment lines or fewer than 30 characters)" # 2. Add documentation (uses English by default) "Please add docstrings containing language-specific required elements to the identified elements" # → Uses English for all documentation # 3. Add documentation (explicitly specify English) /update-doc-string --lang en "Add docstrings with required elements to the identified elements" # 4. Check markers "Please confirm that all added/updated docstrings have Claude markers"
Target Elements (Common Across Languages):
Python (PEP 257):
python# English version (default) def calculate_total(items: List[Item]) -> float: """Calculate the total amount for a list of items. (30-60 characters) Multiplies the price and quantity of each item and returns the total with tax. Returns 0.0 for empty lists. (50-200 characters) Args: items: List of items to calculate Returns: Total amount with tax Generated by Claude 🤖 """ # English version (--lang en) def calculate_total(items: List[Item]) -> float: """Calculate the total amount for a list of items. (30-60 chars) Multiplies the price and quantity of each item and returns the total with tax. Returns 0.0 for empty lists. (50-200 chars) Args: items: List of items to calculate Returns: Total amount with tax Generated by Claude 🤖 """
JavaScript/TypeScript (JSDoc):
javascript/** * Component that displays a user profile. (30-60 characters) * * Displays avatar image, username, and status information, * and navigates to the profile detail screen when clicked. (50-200 characters) * * @param {Object} props - Component properties * @param {string} props.userId - User ID * @param {boolean} [props.showStatus=true] - Status display flag * @returns {JSX.Element} Rendered component * * @generated by Claude 🤖 */ const UserProfile = ({ userId, showStatus = true }) => {
Go:
go// CalculateTotal calculates the total amount for a list of items. (30-60 characters) // // Multiplies the price and quantity of each item and returns // the total with tax. Returns 0.0 for empty slices. (50-200 characters) // // Generated by Claude 🤖 func CalculateTotal(items []Item) float64 {
Rust:
rust/// Calculate the total amount for a list of items. (30-60 characters) /// /// Multiplies the price and quantity of each item and returns /// the total with tax. Returns 0.0 for empty vectors. (50-200 characters) /// /// Generated by Claude 🤖 pub fn calculate_total(items: &[Item]) -> f64 {
Dart (DartDoc):
dart/// Widget that displays a user profile. (30-60 characters) /// /// Vertically arranges avatar image, username, and status information, /// and navigates to the profile detail screen when tapped. (50-200 characters) /// /// Generated by Claude 🤖 class UserProfileWidget extends StatelessWidget {
Important Information to Retain:
See also:, @see, References: etc.TODO:, FIXME:, XXX: formatNote:, Warning:, Important: etc.Example:, Usage:, # Examples etc.yaml# Language-specific default settings languages: python: style: "google" # google, numpy, sphinx indent: 4 quotes: '""" javascript: style: "jsdoc" indent: 2 prefix: "/**" suffix: "*/" typescript: style: "tsdoc" indent: 2 prefix: "/**" suffix: "*/" go: style: "godoc" indent: 0 prefix: "//" rust: style: "rustdoc" indent: 0 prefix: "///" dart: style: "dartdoc" indent: 0 prefix: "///"
🔴 Strict Prohibitions:
Execution and Verification:
bash# Record execution results ADDED_COMMENTS=0 UPDATED_COMMENTS=0 ERRORS=0 # Auto-detect language from existing comments # If Japanese characters (hiragana, katakana, kanji) are detected, use ja; otherwise, use en DOC_LANGUAGE="en" # Default if grep -E -r '[\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FAF]' --include="*.py" --include="*.js" --include="*.ts" --include="*.dart" --include="*.go" --include="*.rs" . 2>/dev/null | head -n 1; then DOC_LANGUAGE="ja" fi # Auto-detect programming language and perform static analysis if [ -f "*.py" ]; then pylint --disable=all --enable=missing-docstring . elif [ -f "*.js" ] || [ -f "*.ts" ]; then eslint . --rule 'jsdoc/require-jsdoc: error' elif [ -f "*.go" ]; then golint ./... elif [ -f "*.rs" ]; then cargo doc --no-deps elif [ -f "*.dart" ]; then melos analyze fi if [ $? -ne 0 ]; then echo "🔴 Error: Static analysis failed" exit 1 fi # Output execution summary echo "📊 Execution Results:" echo "- Documentation Language: $DOC_LANGUAGE" echo "- Added Comments: $ADDED_COMMENTS" echo "- Updated Comments: $UPDATED_COMMENTS" echo "- Errors: $ERRORS"
bash# Analyze entire project (auto language detection) find . -type f \( -name "*.py" -o -name "*.js" -o -name "*.ts" \) /update-doc-string "Update this project's docstrings following language-specific best practices" # → If existing comments contain Japanese, run with ja; otherwise, run with en # Explicitly run with English documentation /update-doc-string --lang en "Update docstrings following language-specific best practices" # Explicitly run with Japanese documentation /update-doc-string --lang ja "Update this project's docstrings following language-specific best practices" # Run without markers (auto language detection) /update-doc-string --marker false "Improve existing docstrings without adding Claude markers" # English documentation, no markers /update-doc-string --lang en --marker false "Improve existing docstrings without adding Claude markers"
Other measured skills in the registry, with their headline benchmark lift.