Agent SkillsAzure/azqr › code-simplifier

code-simplifier

GitHub

分析近期代码变更,通过简化逻辑、提升清晰度和一致性来优化代码质量,同时严格保持原有功能不变,并自动生成包含改进的拉取请求。

.agents/skills/code-simplifier/SKILL.md Azure/azqr

Trigger Scenarios

用户要求简化或重构最近的代码变更 用户希望在不改变功能的前提下提升代码质量 需要执行自动化的代码审查与改进 触发定时代码质量检查

Install

npx skills add Azure/azqr --skill code-simplifier -g -y
More Options

Non-standard path

npx skills add https://github.com/Azure/azqr/tree/main/.agents/skills/code-simplifier -g -y

Use without installing

npx skills use Azure/azqr@code-simplifier

指定 Agent (Claude Code)

npx skills add Azure/azqr --skill code-simplifier -a claude-code -g -y

安装 repo 全部 skill

npx skills add Azure/azqr --all -g -y

预览 repo 内 skill

npx skills add Azure/azqr --list

SKILL.md

Frontmatter
{
    "name": "code-simplifier",
    "description": "Analyzes recently modified code and creates pull requests with simplifications that improve clarity, consistency, and maintainability while preserving functionality"
}

Code Simplifier Skill

Expert guidance for analyzing and simplifying recently modified code to improve clarity, consistency, and maintainability while preserving exact functionality.

Overview

This skill enables agents to:

  • Analyze code changes from the last 24 hours
  • Apply targeted simplifications that improve code quality
  • Create pull requests with improvements
  • Validate changes through tests and linting

When to Use This Skill

Use this skill when:

  • User asks to simplify or refactor recent code changes
  • User wants to improve code quality without changing functionality
  • User requests code review with automatic improvements
  • Scheduled code quality checks are needed

Simplification Principles

1. Preserve Functionality

  • NEVER change what the code does - only how it does it
  • All original features, outputs, and behaviors must remain intact
  • Run tests before and after to ensure no behavioral changes

2. Enhance Clarity

  • Reduce unnecessary complexity and nesting
  • Eliminate redundant code and abstractions
  • Improve readability through clear variable and function names
  • Consolidate related logic
  • Remove unnecessary comments that describe obvious code
  • IMPORTANT: Avoid nested ternary operators - prefer switch statements or if/else chains
  • Choose clarity over brevity - explicit code is often better than compact code

3. Apply Project Standards

  • Use project-specific conventions and patterns
  • Follow established naming conventions
  • Apply consistent formatting
  • Use appropriate language features (modern syntax where beneficial)

4. Maintain Balance

Avoid over-simplification that could:

  • Reduce code clarity or maintainability
  • Create overly clever solutions that are hard to understand
  • Combine too many concerns into single functions
  • Remove helpful abstractions that improve code organization
  • Prioritize "fewer lines" over readability
  • Make the code harder to debug or extend

Workflow

Phase 1: Identify Recently Modified Code

1.1 Find Recent Changes

Identify files modified in the last 24 hours from all sources:

Option A: Local File Changes (filesystem-based)

# Find files modified in the last 24 hours (includes uncommitted changes)
find . -type f -mtime -1 -not -path './.git/*' -not -path './node_modules/*' -not -path './vendor/*'

# Or using git to find modified files (staged and unstaged)
git status --porcelain

# Find recently modified tracked files
git diff --name-only HEAD~10  # Adjust based on commit frequency

Option B: Git History (committed changes)

# Get yesterday's date in ISO format
YESTERDAY=$(date -d '1 day ago' '+%Y-%m-%d' 2>/dev/null || date -v-1d '+%Y-%m-%d')

# List recent commits
git log --since="24 hours ago" --pretty=format:"%H %s" --no-merges

# List files changed in recent commits
git log --since="24 hours ago" --name-only --pretty=format:"" | sort -u

Option C: GitHub PRs and Commits (remote changes)

Use GitHub tools to:

  • Search for pull requests merged in the last 24 hours
  • Get details of merged PRs to understand what files were changed
  • List commits from the last 24 hours to identify modified files

Combine all sources to get a comprehensive list of recently modified files.

1.2 Extract Changed Files

From all identified sources (local changes, commits, PRs):

  • Collect files modified on the filesystem in the last 24 hours
  • List changed files from recent commits
  • List changed files from merged PRs
  • Deduplicate the combined file list
  • Focus on source code files (.go, .js, .ts, .tsx, .jsx, .py, .rb, .java, .cs, .php, .cpp, .c, .rs, etc.)
  • Exclude test files, lock files, generated files, and vendored dependencies
# Example: Combine filesystem and git changes, filter source files
{
  find . -type f -mtime -1 -not -path './.git/*' 2>/dev/null
  git log --since="24 hours ago" --name-only --pretty=format:"" 2>/dev/null
  git diff --name-only 2>/dev/null
} | sort -u | grep -E '\.(go|js|ts|tsx|jsx|py|rb|java|cs|php|cpp|c|rs)$'

1.3 Determine Scope

If no files were changed in the last 24 hours (no local modifications, no commits, no merged PRs), exit gracefully:

✅ No code changes detected in the last 24 hours.
Code simplifier has nothing to process today.

If files were changed (from any source: local edits, commits, or PRs), proceed to Phase 2.

Phase 2: Analyze and Simplify Code

2.1 Review Project Standards

Before simplifying, review the project's coding standards:

  • Check for style guides, coding conventions, or contribution guidelines
  • Look for language-specific conventions (STYLE.md, CONTRIBUTING.md, README.md)
  • Identify established patterns in the codebase

2.2 Perform Code Analysis

For each changed file:

  1. Read the file contents
  2. Identify refactoring opportunities:
    • Long functions that could be split
    • Duplicate code patterns
    • Complex conditionals that could be simplified
    • Unclear variable names
    • Missing or excessive comments
    • Non-idiomatic patterns
  3. Design the simplification:
    • What specific changes will improve clarity?
    • How can complexity be reduced?
    • What patterns should be applied?
    • Will this maintain all functionality?

2.3 Apply Simplifications

Make surgical, focused changes that preserve all original behavior. Use targeted edits rather than full file rewrites.

Phase 3: Validate Changes

3.1 Run Tests

After making simplifications, run the project's test suite:

# Common test commands (adapt to the project)
make test          # If Makefile exists
npm test           # For Node.js projects
pytest             # For Python projects
./gradlew test     # For Gradle projects
mvn test           # For Maven projects
cargo test         # For Rust projects
go test ./...      # For Go projects

If tests fail:

  • Review the failures carefully
  • Revert changes that broke functionality
  • Adjust simplifications to preserve behavior
  • Re-run tests until they pass

3.2 Run Linters

Ensure code style is consistent:

# Common lint commands (adapt to the project)
make lint          # If Makefile exists
npm run lint       # For Node.js projects
pylint . || flake8 . # For Python projects
cargo clippy       # For Rust projects
golangci-lint run  # For Go projects

Fix any linting issues introduced by the simplifications.

3.3 Check Build

Verify the project still builds successfully:

# Common build commands (adapt to the project)
make build         # If Makefile exists
npm run build      # For Node.js projects
./gradlew build    # For Gradle projects
mvn package        # For Maven projects
cargo build        # For Rust projects
go build ./...     # For Go projects

Phase 4: Create Pull Request

4.1 Determine If PR Is Needed

Only create a PR if:

  • ✅ Actual code simplifications were made
  • ✅ All tests pass (or no tests exist)
  • ✅ Linting is clean (or no linter configured)
  • ✅ Build succeeds (or no build step exists)
  • ✅ Changes improve code quality without breaking functionality

If no improvements were made or changes broke tests, exit gracefully:

✅ Code analyzed from last 24 hours.
No simplifications needed - code already meets quality standards.

4.2 Generate PR Description

Use this structure for the PR:

## Code Simplification - [Date]

This PR simplifies recently modified code to improve clarity, consistency, and maintainability while preserving all functionality.

### Files Simplified

- `path/to/file1.ext` - [Brief description of improvements]
- `path/to/file2.ext` - [Brief description of improvements]

### Improvements Made

1. **Reduced Complexity**
   - [Specific example]

2. **Enhanced Clarity**
   - [Specific example]

3. **Applied Project Standards**
   - [Specific example]

### Changes Based On

Recent changes from:
- #[PR_NUMBER] - [PR title]
- Commit [SHORT_SHA] - [Commit message]

### Testing

- ✅ All tests pass (or indicate if no tests exist)
- ✅ Linting passes (or indicate if no linter configured)
- ✅ Build succeeds (or indicate if no build step)
- ✅ No functional changes - behavior is identical

### Review Focus

Please verify:
- Functionality is preserved
- Simplifications improve code quality
- Changes align with project conventions
- No unintended side effects

---

*Automated by Code Simplifier Agent*

Common Simplification Patterns

Reduce Nesting

// Before
func process(data []Item) error {
    if data != nil {
        if len(data) > 0 {
            for _, item := range data {
                if item.Valid {
                    // process
                }
            }
        }
    }
    return nil
}

// After
func process(data []Item) error {
    if len(data) == 0 {
        return nil
    }
    for _, item := range data {
        if !item.Valid {
            continue
        }
        // process
    }
    return nil
}

Replace Nested Ternaries with Switch/If

// Before
const status = isError ? 'error' : isLoading ? 'loading' : isSuccess ? 'success' : 'idle';

// After
let status;
if (isError) {
    status = 'error';
} else if (isLoading) {
    status = 'loading';
} else if (isSuccess) {
    status = 'success';
} else {
    status = 'idle';
}

Consolidate Related Logic

# Before
def validate_user(user):
    if user.name is None:
        return False
    if len(user.name) == 0:
        return False
    if user.email is None:
        return False
    if '@' not in user.email:
        return False
    return True

# After
def validate_user(user):
    if not user.name:
        return False
    if not user.email or '@' not in user.email:
        return False
    return True

Improve Variable Names

// Before
func calc(d []int) int {
    t := 0
    for _, v := range d {
        t += v
    }
    return t
}

// After
func calculateSum(values []int) int {
    total := 0
    for _, value := range values {
        total += value
    }
    return total
}

Scope Control Guidelines

  • Focus on recent changes: Only refine code modified in the last 24 hours (local files, commits, or merged PRs)
  • Include all change sources: Consider filesystem modifications, staged changes, commits, and merged PRs
  • Don't over-refactor: Avoid touching unrelated code
  • Preserve interfaces: Don't change public APIs
  • Incremental improvements: Make targeted, surgical changes

Exit Conditions

Exit gracefully without creating a PR if:

  • No code was changed in the last 24 hours
  • No simplifications are beneficial
  • Tests fail after changes
  • Build fails after changes
  • Changes are too risky or complex

Quality Checklist

Before creating a PR, verify:

  • Functionality is preserved (all tests pass)
  • Code is clearer and more readable
  • No nested ternary operators introduced
  • Variable names are descriptive
  • Unnecessary complexity removed
  • Project conventions followed
  • Build succeeds
  • Linting passes
  • Changes are focused and surgical

Output Requirements

The agent MUST either:

  1. If no changes in last 24 hours: Output a brief status message
  2. If no simplifications beneficial: Output a brief status message
  3. If simplifications made: Create a PR with the changes and detailed description

Version History

  • 7723999 Current 2026-08-20 14:09

Same Skill Collection

.agents/skills/azqr-developer/SKILL.md
.agents/skills/review-areas/SKILL.md
.agents/skills/skill-creator/SKILL.md

Metadata

Files
0
Version
7723999
Hash
2c40a91e
Indexed
2026-08-20 14:09

- 위키
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-25 14:42
浙ICP备14020137号-1 $방문자$