[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EM79QC9NWRGVCFCGF7CHE9":3,"skill-same:01M6EM79QC9NWRGVCFCGF7CHE9":71},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":47,"ownerHtmlUrl":48,"ownerBlogUrl":6,"ownerDescription":49,"updatedAt":50,"install":51,"resources":64},"01M6EM79QC9NWRGVCFCGF7CHE9","quality-fixer",null,"Automatically apply safe quality fixes including formatting (Black, isort), linting (Ruff auto-fixes), and resolve formatter conflicts. Use when quality checks fail or before committing code.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fatyantik\u002Fquality-fixer\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36],"quality","fixer","quality fixer","safe","code","use","auto","ruff","conflicts","formatting","black","isort","linting","2026-11-10 10:12:30",false,"---\nname: quality-fixer\ndescription: Automatically apply safe quality fixes including formatting (Black, isort), linting (Ruff auto-fixes), and resolve formatter conflicts. Use when quality checks fail or before committing code.\n---\n\n# Quality Fix Applier\n\n## ⚠️ MANDATORY: Read Project Documentation First\n\n**BEFORE applying quality fixes, you MUST read and understand the following project documentation:**\n\n### Core Project Documentation\n\n1. **README.md** - Project overview, features, and getting started\n2. **AI_DOCS\u002Fproject-context.md** - Tech stack, architecture, development workflow\n3. **AI_DOCS\u002Fcode-conventions.md** - Code style, formatting, best practices\n4. **AI_DOCS\u002Ftdd-workflow.md** - TDD process, testing standards, coverage requirements\n\n### Session Context (if available)\n\n5. **.ai-context\u002FACTIVE_TASKS.md** - Current tasks and priorities\n6. **.ai-context\u002FCONVENTIONS.md** - Project-specific conventions\n7. **.ai-context\u002FRECENT_DECISIONS.md** - Recent architectural decisions\n8. **.ai-context\u002FLAST_SESSION_SUMMARY.md** - Previous session summary\n\n### Additional AI Documentation\n\n9. **AI_DOCS\u002Fai-tools.md** - Session management workflow\n10. **AI_DOCS\u002Fai-skills.md** - Other specialized skills\u002Fagents available\n\n### Why This Matters\n\n- **Tool Configuration**: Understand which formatters and linters are configured\n- **Code Standards**: Apply fixes that align with project conventions\n- **Safety Rules**: Know which auto-fixes are safe vs. require manual review\n- **Integration**: Coordinate with other quality tools (Black, Ruff, isort)\n\n**After reading these files, proceed with your quality fixing task below.**\n\n---\n\n## Overview\n\nAutomatically apply safe quality fixes to Python code, resolving formatting issues, linting problems, and formatter conflicts.\n\n## When to Use\n\n- After writing code, before running `make check`\n- When `make lint` or `make format` reports fixable issues\n- To resolve Black vs Ruff formatter conflicts\n- Before committing code to ensure quality gates pass\n- When you want to apply all safe, automatic fixes\n\n## What This Skill Fixes\n\n✅ **Formatting Issues**\n- Black code formatting\n- isort import sorting\n- Line length adjustments\n- Whitespace normalization\n\n✅ **Linting Issues (Safe Auto-Fixes)**\n- Unused imports removal\n- Unused variables (when safe)\n- F-string conversion\n- Simplifiable if statements\n- List\u002Fdict comprehension improvements\n\n✅ **Type Hint Issues (Safe Cases)**\n- Add `-> None` to functions without return\n- Add obvious type hints (str, int, bool literals)\n- Fix Ellipsis in stub signatures\n\n✅ **Formatter Conflicts**\n- Black vs Ruff disagreements\n- Message variable extraction for long strings\n- Line break adjustments\n\n## Usage Examples\n\n### Fix All Issues in Project\n\n```bash\n# Run comprehensive quality fixes\napply quality fixes to the entire project\n```\n\n**Actions:**\n1. Run `make format` (Black + isort)\n2. Run Ruff with `--fix` flag\n3. Check for and resolve formatter conflicts\n4. Report what was fixed\n\n### Fix Specific File\n\n```bash\n# Fix a single file\nfix quality issues in src\u002Fpython_modern_template\u002Fvalidators.py\n```\n\n**Actions:**\n1. Format the specific file\n2. Apply Ruff fixes to that file\n3. Verify no conflicts introduced\n4. Show diff of changes\n\n### Resolve Formatter Conflicts Only\n\n```bash\n# Focus on conflicts\nresolve Black and Ruff formatter conflicts\n```\n\n**Actions:**\n1. Run both formatters\n2. Identify lines where they disagree\n3. Apply conflict resolution strategies\n4. Verify both are satisfied\n\n### Preview Mode (Dry Run)\n\n```bash\n# See what would be fixed without applying\npreview quality fixes for src\u002F\n```\n\n**Actions:**\n1. Run all checks in dry-run mode\n2. Show what would be changed\n3. Ask for confirmation before applying\n\n## Step-by-Step Process\n\n### Step 1: Run Formatting\n\n```bash\n# Apply Black formatting\nmake format\n\n# This runs:\n# - black src\u002F tests\u002F\n# - isort src\u002F tests\u002F\n```\n\n**What gets fixed:**\n- Code style (spacing, indentation, quotes)\n- Import organization and grouping\n- Line length compliance (88 characters)\n\n### Step 2: Apply Ruff Auto-Fixes\n\n```bash\n# Run Ruff with auto-fix\nuv run ruff check --fix src\u002F tests\u002F\n\n# Safe fixes include:\n# - Remove unused imports\n# - Remove unused variables (when safe)\n# - F-string conversion\n# - Simplify expressions\n```\n\n**What gets fixed:**\n- Import cleanup\n- Code simplification\n- Modern Python idioms\n\n### Step 3: Detect Formatter Conflicts\n\n```bash\n# Check if Black and Ruff agree\nmake format && make lint\n```\n\n**Common conflicts:**\n- Long string literals exceeding line length\n- Complex expressions needing line breaks\n- Comment placement differences\n\n### Step 4: Resolve Conflicts\n\n**Strategy 1: Extract Message Variables**\n\n```python\n# Before (conflict - too long)\nlogger.error(\"This is a very long error message that exceeds the line length limit\")\n\n# After (resolved)\nmsg = \"This is a very long error message that exceeds the line length limit\"\nlogger.error(msg)\n```\n\n**Strategy 2: Use Parentheses for Line Breaks**\n\n```python\n# Before (conflict)\nresult = some_function(arg1, arg2, arg3, arg4, arg5, arg6)\n\n# After (resolved)\nresult = some_function(\n    arg1, arg2, arg3, arg4, arg5, arg6\n)\n```\n\n**Strategy 3: Split Long Strings**\n\n```python\n# Before (conflict)\ntext = \"This is a very long string that should be split across multiple lines for readability\"\n\n# After (resolved)\ntext = (\n    \"This is a very long string that should be \"\n    \"split across multiple lines for readability\"\n)\n```\n\n### Step 5: Verify Fixes\n\n```bash\n# Run complete quality check\nmake check\n```\n\n**Must pass:**\n- ✅ Format (Black + isort)\n- ✅ Lint (Ruff + Pylint + mypy)\n- ✅ Tests (pytest)\n- ✅ Security (Bandit)\n\n## Conflict Resolution Strategies\n\n### Identifying Conflicts\n\nRun both tools and compare:\n\n```bash\n# Apply Black\nblack src\u002Fpython_modern_template\u002Fmodule.py\n\n# Check Ruff\nruff check src\u002Fpython_modern_template\u002Fmodule.py\n\n# If Ruff still complains about formatting, there's a conflict\n```\n\n### Resolution Decision Tree\n\n1. **Long String Literals**\n   → Extract to variable or split across lines\n\n2. **Complex Expressions**\n   → Add parentheses and line breaks\n\n3. **Long Function Calls**\n   → Break arguments to multiple lines\n\n4. **Comment Placement**\n   → Move comments above the line\n\n5. **Type Annotation Complexity**\n   → Split to multiple lines with proper indentation\n\n### Example: Resolving Long String Conflict\n\n**Problem:**\n\n```python\n# Black formats this way:\nraise ValueError(\"The email address provided is not valid because it does not contain the required @ symbol\")\n\n# Ruff complains: E501 Line too long (92 > 88)\n```\n\n**Solution:**\n\n```python\n# Extract message variable\nerror_msg = (\n    \"The email address provided is not valid because it \"\n    \"does not contain the required @ symbol\"\n)\nraise ValueError(error_msg)\n\n# Both Black and Ruff are satisfied!\n```\n\n## What This Skill Does NOT Fix\n\n❌ **Complex Logic Issues**\n- Algorithm problems\n- Business logic errors\n- Design flaws\n\n❌ **Non-Obvious Type Hints**\n- Complex generic types\n- Union types requiring domain knowledge\n- Custom type aliases\n\n❌ **Docstring Content**\n- Will format docstrings\n- Won't write missing docstrings\n- Won't improve docstring quality\n\n❌ **Test Failures**\n- Only fixes code style\n- Doesn't fix failing tests\n- Doesn't add missing tests\n\n❌ **Breaking Changes**\n- Only applies safe, non-breaking fixes\n- Won't remove used variables\n- Won't change semantics\n\n## Output Format\n\nAfter applying fixes, provide a report:\n\n```markdown\n## Quality Fixes Applied\n\n**Files Modified:** X\n**Total Changes:** X lines\n\n### Formatting Fixes\n- ✅ Applied Black formatting to X files\n- ✅ Sorted imports with isort in X files\n- ✅ Fixed line length issues: X lines\n\n### Linting Fixes\n- ✅ Removed X unused imports\n- ✅ Converted X strings to f-strings\n- ✅ Simplified X expressions\n- ✅ Fixed X Ruff issues\n\n### Conflicts Resolved\n- ✅ Extracted X message variables\n- ✅ Split X long strings\n- ✅ Reformatted X function calls\n\n### Quality Check Results\n```bash\nmake check\n```\n[Show output]\n\n### Files Changed\n1. src\u002Fpython_modern_template\u002Fmodule1.py (+12, -8)\n2. src\u002Fpython_modern_template\u002Fmodule2.py (+5, -3)\n3. tests\u002Ftest_module.py (+3, -2)\n\n### Next Steps\n- Review changes with `git diff`\n- Run tests to ensure no breaking changes: `make test`\n- Commit changes if satisfied\n```\n\n## Safety Features\n\n### Dry Run Mode\n\nAlways available for preview:\n\n```bash\n# Format preview\nblack --check --diff src\u002F\n\n# Ruff preview\nruff check --fix --diff src\u002F\n```\n\n### Git Integration\n\nVerify changes before committing:\n\n```bash\n# See what changed\ngit diff\n\n# Stage specific changes\ngit add -p\n```\n\n### Backup Strategy\n\nFor large fixes, create a commit first:\n\n```bash\n# Commit current state\ngit commit -m \"Before quality fixes\"\n\n# Apply fixes\n[quality-fixer runs]\n\n# Review changes\ngit diff HEAD~1\n\n# Undo if needed\ngit reset --hard HEAD~1\n```\n\n## Integration with Project Tools\n\n### Makefile Integration\n\n```bash\n# Just formatting\nmake format\n\n# Just linting (with fixes)\nmake lint\n\n# Complete check (no auto-fix)\nmake check\n```\n\n### Pre-Commit Integration\n\nAdd to `.pre-commit-config.yaml`:\n\n```yaml\n- repo: local\n  hooks:\n    - id: quality-fixer\n      name: Quality Fixer\n      entry: python .claude\u002Fskills\u002Fquality-fixer\u002Fscripts\u002Fauto_fix.py\n      language: system\n      types: [python]\n```\n\n### CI Integration\n\nRun in CI with `--check` mode:\n\n```bash\n# CI should verify, not fix\nmake check\n\n# If it fails, developers run:\n[quality-fixer to fix locally]\n```\n\n## Advanced Features\n\n### Selective Fixing\n\nFix only specific types of issues:\n\n```bash\n# Only formatting\n[quality-fixer] --format-only\n\n# Only import cleanup\n[quality-fixer] --imports-only\n\n# Only conflicts\n[quality-fixer] --conflicts-only\n```\n\n### Ignore Patterns\n\nRespect configuration in `pyproject.toml`:\n\n```toml\n[tool.ruff.lint]\nignore = [\"E501\"]  # Don't auto-fix line length in specific cases\n\n[tool.black]\nextend-exclude = '''\n\u002F(\n  | generated\n)\u002F\n'''\n```\n\n### Custom Rules\n\nDefine project-specific fixes:\n\n```python\n# .claude\u002Fskills\u002Fquality-fixer\u002Fscripts\u002Fcustom_rules.py\n\ndef fix_common_typos(code: str) -> str:\n    \"\"\"Fix project-specific common mistakes.\"\"\"\n    fixes = {\n        \"recieve\": \"receive\",\n        \"seperator\": \"separator\",\n    }\n    for typo, correction in fixes.items():\n        code = code.replace(typo, correction)\n    return code\n```\n\n## Best Practices\n\n1. **Run before committing** - Always clean up code before commits\n2. **Review changes** - Don't blindly accept all fixes, use `git diff`\n3. **Test after fixing** - Run `make test` to ensure no breaking changes\n4. **Fix iteratively** - Start with formatting, then linting, then conflicts\n5. **Understand the changes** - Learn from fixes to avoid future issues\n\n## Common Scenarios\n\n### Scenario 1: Before Committing\n\n```bash\n# 1. Apply fixes\n[quality-fixer]\n\n# 2. Review changes\ngit diff\n\n# 3. Test\nmake test\n\n# 4. Commit\ngit add .\ngit commit -m \"feat: add new feature\"\n```\n\n### Scenario 2: After Code Review\n\n```bash\n# Code reviewer says: \"Fix formatting and linting\"\n\n# 1. Apply fixes\n[quality-fixer]\n\n# 2. Verify all issues resolved\nmake check\n\n# 3. Push\ngit push\n```\n\n### Scenario 3: CI Failure\n\n```bash\n# CI reports quality issues\n\n# 1. Pull latest\ngit pull\n\n# 2. Apply fixes\n[quality-fixer]\n\n# 3. Verify locally\nmake check\n\n# 4. Push fix\ngit commit -am \"fix: resolve quality issues\"\ngit push\n```\n\n## Troubleshooting\n\n### \"Black and Ruff still conflict after fix\"\n\n**Solution:** Manually review the conflicting lines and apply advanced strategies:\n- Extract complex expressions to variables\n- Restructure the code for better formatting\n- Use `# noqa` comments sparingly for unavoidable cases\n\n### \"Auto-fix broke my tests\"\n\n**Solution:**\n- Revert with `git checkout -- \u003Cfile>`\n- Review what was changed with `git diff`\n- Apply fixes more selectively\n- Report if a fix is unsafe (should not be applied)\n\n### \"Pylint still reports issues\"\n\n**Note:** This skill only applies auto-fixable issues. Pylint often requires manual fixes:\n- Unused arguments → Use `_` prefix or remove\n- Too many arguments → Refactor function\n- Too complex → Simplify logic\n\n## Remember\n\n**Quality fixes are TOOLS, not SUBSTITUTES for good code:**\n- Write clean code from the start\n- Understand why formatters want changes\n- Learn from the fixes applied\n- Don't rely on auto-fix for everything\n\nThis skill helps you maintain code quality efficiently, but **good coding practices are still essential**!\n","# Quality Fix Applier\n\n## ⚠️ MANDATORY: Read Project Documentation First\n\n**BEFORE applying quality fixes, you MUST read and understand the following project documentation:**\n\n### Core Project Documentation\n\n1. **README.md** - Project overview, features, and getting started\n2. **AI_DOCS\u002Fproject-context.md** - Tech stack, architecture, development workflow\n3. **AI_DOCS\u002Fcode-conventions.md** - Code style, formatting, best practices\n4. **AI_DOCS\u002Ftdd-workflow.md** - TDD process, testing standards, coverage requirements\n\n### Session Context (if available)\n\n5. **.ai-context\u002FACTIVE_TASKS.md** - Current tasks and priorities\n6. **.ai-context\u002FCONVENTIONS.md** - Project-specific conventions\n7. **.ai-context\u002FRECENT_DECISIONS.md** - Recent architectural decisions\n8. **.ai-context\u002FLAST_SESSION_SUMMARY.md** - Previous session summary\n\n### Additional AI Documentation\n\n9. **AI_DOCS\u002Fai-tools.md** - Session management workflow\n10. **AI_DOCS\u002Fai-skills.md** - Other specialized skills\u002Fagents available\n\n### Why This Matters\n\n- **Tool Configuration**: Understand which formatters and linters are configured\n- **Code Standards**: Apply fixes that align with project conventions\n- **Safety Rules**: Know which auto-fixes are safe vs. require manual review\n- **Integration**: Coordinate with other quality tools (Black, Ruff, isort)\n\n**After reading these files, proceed with your quality fixing task below.**\n\n---\n\n## Overview\n\nAutomatically apply safe quality fixes to Python code, resolving formatting issues, linting problems, and formatter conflicts.\n\n## When to Use\n\n- After writing code, before running `make check`\n- When `make lint` or `make format` reports fixable issues\n- To resolve Black vs Ruff formatter conflicts\n- Before committing code to ensure quality gates pass\n- When you want to apply all safe, automatic fixes\n\n## What This Skill Fixes\n\n✅ **Formatting Issues**\n- Black code formatting\n- isort import sorting\n- Line length adjustments\n- Whitespace normalization\n\n✅ **Linting Issues (Safe Auto-Fixes)**\n- Unused imports removal\n- Unused variables (when safe)\n- F-string conversion\n- Simplifiable if statements\n- List\u002Fdict comprehension improvements\n\n✅ **Type Hint Issues (Safe Cases)**\n- Add `-> None` to functions without return\n- Add obvious type hints (str, int, bool literals)\n- Fix Ellipsis in stub signatures\n\n✅ **Formatter Conflicts**\n- Black vs Ruff disagreements\n- Message variable extraction for long strings\n- Line break adjustments\n\n## Usage Examples\n\n### Fix All Issues in Project\n\n```bash\n# Run comprehensive quality fixes\napply quality fixes to the entire project\n```\n\n**Actions:**\n1. Run `make format` (Black + isort)\n2. Run Ruff with `--fix` flag\n3. Check for and resolve formatter conflicts\n4. Report what was fixed\n\n### Fix Specific File\n\n```bash\n# Fix a single file\nfix quality issues in src\u002Fpython_modern_template\u002Fvalidators.py\n```\n\n**Actions:**\n1. Format the specific file\n2. Apply Ruff fixes to that file\n3. Verify no conflicts introduced\n4. Show diff of changes\n\n### Resolve Formatter Conflicts Only\n\n```bash\n# Focus on conflicts\nresolve Black and Ruff formatter conflicts\n```\n\n**Actions:**\n1. Run both formatters\n2. Identify lines where they disagree\n3. Apply conflict resolution strategies\n4. Verify both are satisfied\n\n### Preview Mode (Dry Run)\n\n```bash\n# See what would be fixed without applying\npreview quality fixes for src\u002F\n```\n\n**Actions:**\n1. Run all checks in dry-run mode\n2. Show what would be changed\n3. Ask for confirmation before applying\n\n## Step-by-Step Process\n\n### Step 1: Run Formatting\n\n```bash\n# Apply Black formatting\nmake format\n\n# This runs:\n# - black src\u002F tests\u002F\n# - isort src\u002F tests\u002F\n```\n\n**What gets fixed:**\n- Code style (spacing, indentation, quotes)\n- Import organization and grouping\n- Line length compliance (88 characters)\n\n### Step 2: Apply Ruff Auto-Fixes\n\n```bash\n# Run Ruff with auto-fix\nuv run ruff check --fix src\u002F tests\u002F\n\n# Safe fixes include:\n# - Remove unused imports\n# - Remove unused variables (when safe)\n# - F-string conversion\n# - Simplify expressions\n```\n\n**What gets fixed:**\n- Import cleanup\n- Code simplification\n- Modern Python idioms\n\n### Step 3: Detect Formatter Conflicts\n\n```bash\n# Check if Black and Ruff agree\nmake format && make lint\n```\n\n**Common conflicts:**\n- Long string literals exceeding line length\n- Complex expressions needing line breaks\n- Comment placement differences\n\n### Step 4: Resolve Conflicts\n\n**Strategy 1: Extract Message Variables**\n\n```python\n# Before (conflict - too long)\nlogger.error(\"This is a very long error message that exceeds the line length limit\")\n\n# After (resolved)\nmsg = \"This is a very long error message that exceeds the line length limit\"\nlogger.error(msg)\n```\n\n**Strategy 2: Use Parentheses for Line Breaks**\n\n```python\n# Before (conflict)\nresult = some_function(arg1, arg2, arg3, arg4, arg5, arg6)\n\n# After (resolved)\nresult = some_function(\n    arg1, arg2, arg3, arg4, arg5, arg6\n)\n```\n\n**Strategy 3: Split Long Strings**\n\n```python\n# Before (conflict)\ntext = \"This is a very long string that should be split across multiple lines for readability\"\n\n# After (resolved)\ntext = (\n    \"This is a very long string that should be \"\n    \"split across multiple lines for readability\"\n)\n```\n\n### Step 5: Verify Fixes\n\n```bash\n# Run complete quality check\nmake check\n```\n\n**Must pass:**\n- ✅ Format (Black + isort)\n- ✅ Lint (Ruff + Pylint + mypy)\n- ✅ Tests (pytest)\n- ✅ Security (Bandit)\n\n## Conflict Resolution Strategies\n\n### Identifying Conflicts\n\nRun both tools and compare:\n\n```bash\n# Apply Black\nblack src\u002Fpython_modern_template\u002Fmodule.py\n\n# Check Ruff\nruff check src\u002Fpython_modern_template\u002Fmodule.py\n\n# If Ruff still complains about formatting, there's a conflict\n```\n\n### Resolution Decision Tree\n\n1. **Long String Literals**\n   → Extract to variable or split across lines\n\n2. **Complex Expressions**\n   → Add parentheses and line breaks\n\n3. **Long Function Calls**\n   → Break arguments to multiple lines\n\n4. **Comment Placement**\n   → Move comments above the line\n\n5. **Type Annotation Complexity**\n   → Split to multiple lines with proper indentation\n\n### Example: Resolving Long String Conflict\n\n**Problem:**\n\n```python\n# Black formats this way:\nraise ValueError(\"The email address provided is not valid because it does not contain the required @ symbol\")\n\n# Ruff complains: E501 Line too long (92 > 88)\n```\n\n**Solution:**\n\n```python\n# Extract message variable\nerror_msg = (\n    \"The email address provided is not valid because it \"\n    \"does not contain the required @ symbol\"\n)\nraise ValueError(error_msg)\n\n# Both Black and Ruff are satisfied!\n```\n\n## What This Skill Does NOT Fix\n\n❌ **Complex Logic Issues**\n- Algorithm problems\n- Business logic errors\n- Design flaws\n\n❌ **Non-Obvious Type Hints**\n- Complex generic types\n- Union types requiring domain knowledge\n- Custom type aliases\n\n❌ **Docstring Content**\n- Will format docstrings\n- Won't write missing docstrings\n- Won't improve docstring quality\n\n❌ **Test Failures**\n- Only fixes code style\n- Doesn't fix failing tests\n- Doesn't add missing tests\n\n❌ **Breaking Changes**\n- Only applies safe, non-breaking fixes\n- Won't remove used variables\n- Won't change semantics\n\n## Output Format\n\nAfter applying fixes, provide a report:\n\n```markdown\n## Quality Fixes Applied\n\n**Files Modified:** X\n**Total Changes:** X lines\n\n### Formatting Fixes\n- ✅ Applied Black formatting to X files\n- ✅ Sorted imports with isort in X files\n- ✅ Fixed line length issues: X lines\n\n### Linting Fixes\n- ✅ Removed X unused imports\n- ✅ Converted X strings to f-strings\n- ✅ Simplified X expressions\n- ✅ Fixed X Ruff issues\n\n### Conflicts Resolved\n- ✅ Extracted X message variables\n- ✅ Split X long strings\n- ✅ Reformatted X function calls\n\n### Quality Check Results\n```bash\nmake check\n```\n[Show output]\n\n### Files Changed\n1. src\u002Fpython_modern_template\u002Fmodule1.py (+12, -8)\n2. src\u002Fpython_modern_template\u002Fmodule2.py (+5, -3)\n3. tests\u002Ftest_module.py (+3, -2)\n\n### Next Steps\n- Review changes with `git diff`\n- Run tests to ensure no breaking changes: `make test`\n- Commit changes if satisfied\n```\n\n## Safety Features\n\n### Dry Run Mode\n\nAlways available for preview:\n\n```bash\n# Format preview\nblack --check --diff src\u002F\n\n# Ruff preview\nruff check --fix --diff src\u002F\n```\n\n### Git Integration\n\nVerify changes before committing:\n\n```bash\n# See what changed\ngit diff\n\n# Stage specific changes\ngit add -p\n```\n\n### Backup Strategy\n\nFor large fixes, create a commit first:\n\n```bash\n# Commit current state\ngit commit -m \"Before quality fixes\"\n\n# Apply fixes\n[quality-fixer runs]\n\n# Review changes\ngit diff HEAD~1\n\n# Undo if needed\ngit reset --hard HEAD~1\n```\n\n## Integration with Project Tools\n\n### Makefile Integration\n\n```bash\n# Just formatting\nmake format\n\n# Just linting (with fixes)\nmake lint\n\n# Complete check (no auto-fix)\nmake check\n```\n\n### Pre-Commit Integration\n\nAdd to `.pre-commit-config.yaml`:\n\n```yaml\n- repo: local\n  hooks:\n    - id: quality-fixer\n      name: Quality Fixer\n      entry: python .claude\u002Fskills\u002Fquality-fixer\u002Fscripts\u002Fauto_fix.py\n      language: system\n      types: [python]\n```\n\n### CI Integration\n\nRun in CI with `--check` mode:\n\n```bash\n# CI should verify, not fix\nmake check\n\n# If it fails, developers run:\n[quality-fixer to fix locally]\n```\n\n## Advanced Features\n\n### Selective Fixing\n\nFix only specific types of issues:\n\n```bash\n# Only formatting\n[quality-fixer] --format-only\n\n# Only import cleanup\n[quality-fixer] --imports-only\n\n# Only conflicts\n[quality-fixer] --conflicts-only\n```\n\n### Ignore Patterns\n\nRespect configuration in `pyproject.toml`:\n\n```toml\n[tool.ruff.lint]\nignore = [\"E501\"]  # Don't auto-fix line length in specific cases\n\n[tool.black]\nextend-exclude = '''\n\u002F(\n  | generated\n)\u002F\n'''\n```\n\n### Custom Rules\n\nDefine project-specific fixes:\n\n```python\n# .claude\u002Fskills\u002Fquality-fixer\u002Fscripts\u002Fcustom_rules.py\n\ndef fix_common_typos(code: str) -> str:\n    \"\"\"Fix project-specific common mistakes.\"\"\"\n    fixes = {\n        \"recieve\": \"receive\",\n        \"seperator\": \"separator\",\n    }\n    for typo, correction in fixes.items():\n        code = code.replace(typo, correction)\n    return code\n```\n\n## Best Practices\n\n1. **Run before committing** - Always clean up code before commits\n2. **Review changes** - Don't blindly accept all fixes, use `git diff`\n3. **Test after fixing** - Run `make test` to ensure no breaking changes\n4. **Fix iteratively** - Start with formatting, then linting, then conflicts\n5. **Understand the changes** - Learn from fixes to avoid future issues\n\n## Common Scenarios\n\n### Scenario 1: Before Committing\n\n```bash\n# 1. Apply fixes\n[quality-fixer]\n\n# 2. Review changes\ngit diff\n\n# 3. Test\nmake test\n\n# 4. Commit\ngit add .\ngit commit -m \"feat: add new feature\"\n```\n\n### Scenario 2: After Code Review\n\n```bash\n# Code reviewer says: \"Fix formatting and linting\"\n\n# 1. Apply fixes\n[quality-fixer]\n\n# 2. Verify all issues resolved\nmake check\n\n# 3. Push\ngit push\n```\n\n### Scenario 3: CI Failure\n\n```bash\n# CI reports quality issues\n\n# 1. Pull latest\ngit pull\n\n# 2. Apply fixes\n[quality-fixer]\n\n# 3. Verify locally\nmake check\n\n# 4. Push fix\ngit commit -am \"fix: resolve quality issues\"\ngit push\n```\n\n## Troubleshooting\n\n### \"Black and Ruff still conflict after fix\"\n\n**Solution:** Manually review the conflicting lines and apply advanced strategies:\n- Extract complex expressions to variables\n- Restructure the code for better formatting\n- Use `# noqa` comments sparingly for unavoidable cases\n\n### \"Auto-fix broke my tests\"\n\n**Solution:**\n- Revert with `git checkout -- \u003Cfile>`\n- Review what was changed with `git diff`\n- Apply fixes more selectively\n- Report if a fix is unsafe (should not be applied)\n\n### \"Pylint still reports issues\"\n\n**Note:** This skill only applies auto-fixable issues. Pylint often requires manual fixes:\n- Unused arguments → Use `_` prefix or remove\n- Too many arguments → Refactor function\n- Too complex → Simplify logic\n\n## Remember\n\n**Quality fixes are TOOLS, not SUBSTITUTES for good code:**\n- Write clean code from the start\n- Understand why formatters want changes\n- Learn from the fixes applied\n- Don't rely on auto-fix for everything\n\nThis skill helps you maintain code quality efficiently, but **good coding practices are still essential**!\n",{"name":5,"description":7},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fatyantik\u002Fquality-fixer",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill quality-fixer",{"tool":57,"command":58},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill quality-fixer",{"tool":60,"command":61},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill quality-fixer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fatyantik\u002Fquality-fixer\u002FSKILL.md",true,[65],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"skill-report.json","REFERENCE","参考文档",17106,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fatyantik\u002Fquality-fixer\u002Fskill-report.json",[72,86,96,105,111,118],{"skillNo":73,"name":74,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":82,"publishedAt":37},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[77],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[83,84,85],"model","model hierarchy","model hierarchy skill",{"skillNo":87,"name":88,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":92,"publishedAt":37},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[91],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},[93,94,95],"MCP","zoom","zoom mcp",{"skillNo":97,"name":98,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":101,"publishedAt":37},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[102,103,104,94],"sdk","zoom apps sdk","apps",{"skillNo":106,"name":107,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":37},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[107],{"skillNo":112,"name":113,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":117,"publishedAt":37},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[116],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},[113],{"skillNo":119,"name":120,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":123,"publishedAt":37},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[120]]