trim-pr
Trim a PR before merging - remove complexity that accumulated during development. Use when preparing to merge, cleaning up code, trimming unnecessary complexity, or asked to simplify a PR.
What this skill does
# PR Simplification Trim complexity that accumulated during development. This is NOT a code review — focus on removing cruft, not evaluating design decisions. ## 1. Understand the Changes Determine the PR's base branch and review the full diff and changed files to understand what was built. ## 2. Look for Accumulated Cruft During development, code often accumulates: | Cruft | Fix | | ------------------------------------------------ | ------------------------------------ | | Repeated code blocks | Extract helper function | | Debug logging left behind | Remove or convert to proper logging | | Commented-out code | Delete it (git has history) | | TODO comments for things already done | Remove them | | Unused imports/variables | Delete them | | Overly defensive null checks | Remove if caller guarantees non-null | | Type casts that worked around WIP types | Fix upstream types now | | Console.log / print statements | Remove or use proper logger | | Temporary variable names (temp, foo, xxx) | Use descriptive names | | Comments referencing PR/PRD/review context | Rewrite for future maintainers | ## 3. Check for Over-Engineering Look for complexity added "just in case" that isn't actually needed: - **Unused flexibility**: Config options, parameters, or generics that only have one value/type - **Premature abstraction**: Interfaces/base classes with single implementation - **Dead code paths**: Branches that can never execute given current callers - **Wrapper functions**: Functions that just call another function (inline them) - **Speculative generality**: "We might need this later" code with no current use Ask: "Is this complexity earning its keep, or was it added speculatively?" ## 4. Check for Common Anti-Patterns ### Backwards Compatibility Hacks If you're not shipping a public API, remove: - Renamed unused `_vars` kept for "compatibility" - Re-exported types that nothing imports - `// removed` comments marking deleted code - Deprecated function wrappers ### Error Handling Theater Remove defensive code that can't actually help: - Try/catch that just re-throws - Null checks after operations that guarantee non-null - Type assertions immediately after type guards - Validation of values from trusted internal sources ### Copy-Paste Artifacts Look for: - Duplicate logic that should be a shared function - Similar but slightly different implementations - Code comments that describe a different function ## 5. Clean Up Development-Context Comments Comments written during development often reference context that won't exist for future maintainers: ### Reference PR/Review Context | Development Comment | Better For Maintainers | | ------------------- | ---------------------- | | `// P2 finding: add null check` | `// Guard against null from legacy API` | | `// Per review feedback` | `// Explicit type conversion for clarity` | | `// Addressing P3 concern about perf` | `// Cached to avoid repeated DB calls` | | `// Fixed in response to CI failure` | `// Handle edge case where X is empty` | ### Reference PRD/Issue Context | Development Comment | Better For Maintainers | | ------------------- | ---------------------- | | `// PRD Phase 2 scope` | `// Extended validation for enterprise users` | | `// Part of #531 quick win` | `// Simplified flow for common case` | | `// Out of scope for this PR` | (delete — git history has this) | | `// MVP implementation, see PRD for full spec` | `// Basic implementation — see [doc] for extension points` | ### Temporal References | Development Comment | Better For Maintainers | | ------------------- | ---------------------- | | `// TODO: revisit after merge` | (either do it now or delete) | | `// Temporary workaround until X ships` | `// Workaround for [issue] in [dependency]` | | `// New approach as of this PR` | (delete — all code was "new" once) | | `// Changed from previous implementation` | (delete — git diff shows this) | **Rule of thumb**: If a comment only makes sense to someone who read the PR, rewrite it or delete it. ## 6. Address PR Review Comments If there are review comments from GitHub Actions, reviewers, or automated tools — address substantive findings, verify they're still valid (reviewers see old commits), and explain trade-offs if not implementing a suggestion. ## 7. Verify Run the project's linter, build, and tests to verify nothing broke. Check project docs (README, CONTRIBUTING, CLAUDE.md) for project-specific commands. ## Output Summary table of changes made: | Issue | Fix | Risk | | ----- | --- | ---- | | Duplicate null check in `handleSubmit` | Removed redundant check | Low | | Debug console.log in `api.ts` | Removed | Low | | Unused `IFutureFeature` interface | Deleted | Low | **Risk levels:** - **Low**: Removed dead code, comments, or unused imports - **Medium**: Simplified logic, removed defensive code - **High**: Changed behavior, removed "defensive" error handling If no changes needed, state that the code is already clean and why. ## Gotchas - Named booleans like `isStarting` are often MORE readable than inlining conditions. Prefer clarity over minimal code. - Shell constructs like `$()`, `&&`, and variable assignments in Bash calls can trigger permission prompts. Prefer simple, single-command calls when possible. ## Quick Checklist - [ ] No commented-out code remaining - [ ] No TODO comments for completed work - [ ] No debug logging/print statements - [ ] No unused imports or variables - [ ] No single-use abstractions - [ ] No duplicate code blocks - [ ] No PR/PRD/review-context comments (rewritten for maintainers) - [ ] All tests pass - [ ] Linting passes --- $ARGUMENTS
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.