coding
MUST use for all coding related tasks - includes general coding best practices and software engineering principles to build robust, maintainable, and scalable software.
What this skill does
# General Coding Best Practices
## Overview
This skill provides a set of core principles and practices for software development. Use this when implementing new features, refactoring existing code, or reviewing code to ensure high quality and maintainability.
## Core Principles
- **DRY (Don't Repeat Yourself):** Avoid logic duplication. If you find yourself writing the same code twice, abstract it.
- **KISS (Keep It Simple, Stupid):** Prefer simple, straightforward solutions over complex ones. Avoid over-engineering.
- **YAGNI (You Ain't Gonna Need It):** Don't implement features or abstractions until they are actually needed.
- **SOLID Principles:**
- Single Responsibility: A class/function should have one reason to change.
- Open/Closed: Software entities should be open for extension but closed for modification.
- Liskov Substitution: Subtypes must be substitutable for their base types.
- Interface Segregation: Many client-specific interfaces are better than one general-purpose interface.
- Dependency Inversion: Depend on abstractions, not concretions.
- **Existing Guidelines:** - Follow existing guidelines in the project (e.g. CLAUDE.md, AGENT.md, etc.)
## Implementation Guidelines
- **Clean Code:** Use descriptive names for variables, functions, and classes. Write code that is easy to read and understand.
- **Small Functions:** Keep functions small and focused on a single task.
- **Error Handling:** Use proactive error handling. Validate inputs and handle exceptions gracefully.
- **Documentation:** Document the *why*, not the *what*. Use self-documenting code where possible.
- **Security:** Sanitize inputs, avoid hardcoding secrets, and follow the principle of least privilege.
- **Performance:** Be mindful of time and space complexity, but avoid premature optimization.
## Automated Analysis & Quality Control
- **Static Analysis & Linting:** Every project MUST have automated linting, formatting and static analysis (e.g., ESLint, Prettier, Ruff, Sonar).
- **Check:** Identify if these tools are configured.
- **Propose:** If missing, immediately propose adding them (e.g., `npm install --save-dev eslint`).
- **Automated Tests:** Ensure there is a test runner configured (e.g., Jest, Pytest).
- **Check:** Look for `tests/` directory or test configurations in `package.json`/`pyproject.toml`.
- **Propose:** If missing, propose a testing framework and initial setup.
## Verifying Code Changes
Before completing any task, you MUST perform the following verification loop:
1. **Simplification:** Use the code-simplifier plugin to make the code cleaner and more maintainable.
2. **Self-Code Review:**
- Review the changes against the task requirements.
- Ensure compliance with this `coding` skill (DRY, KISS, SOLID).
- Check for potential security vulnerabilities or performance regressions.
3. **Static Analysis & Linting:**
- If project does not have linting/formatting configured, propose adding it.
- Run the project's linting/format commands (e.g., `npm run lint`, `prettier --check .`).
- Fix all reported issues.
4. **Unit Testing:**
- If project does not have a test runner configured, propose adding one.
- **Add Missing Tests:** If new logic was added, write concise unit tests covering the happy path and edge cases.
- **Run Tests:** Execute the test suite (e.g., `npm test`, `pytest`).
- **Verification:** Ensure all tests pass. If they fail, fix the implementation or the test.
## Key Principles
- **Clarity over Cleverness:** Write code for humans first, machines second.
- **Consistency:** Follow the established patterns and style of the existing codebase.
- **Composition over Inheritance:** Prefer combining simple objects to build complex ones rather than creating deep inheritance hierarchies.
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.