[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6AFKMTNE52DN0R6RSR7RAN8":3,"skill-same:01M6AFKMTNE52DN0R6RSR7RAN8":110},{"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":49,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M6AFKMTNE52DN0R6RSR7RAN8","pymoo",null,"Multi-objective optimization framework. NSGA-II, NSGA-III, MOEA\u002FD, Pareto fronts, constraint handling, benchmarks (ZDT, DTLZ), for engineering design and optimization problems.","davila7\u002Fclaude-code-templates","davila7","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6216945?v=4","01M6ADEWWFPS191NFM0Y1EX1JH","Daniel Avila","01M6ADJHGM78PHQRD3XZTFDVKK",33481,"MIT","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36],"design","framework","engineering","Optimization","benchmarks","iii","multi","for","constraint","objective","pareto","NSGA-II","multi-objective","2026-11-10 10:12:30",false,"---\nname: pymoo\ndescription: \"Multi-objective optimization framework. NSGA-II, NSGA-III, MOEA\u002FD, Pareto fronts, constraint handling, benchmarks (ZDT, DTLZ), for engineering design and optimization problems.\"\n---\n\n# Pymoo - Multi-Objective Optimization in Python\n\n## Overview\n\nPymoo is a comprehensive Python framework for optimization with emphasis on multi-objective problems. Solve single and multi-objective optimization using state-of-the-art algorithms (NSGA-II\u002FIII, MOEA\u002FD), benchmark problems (ZDT, DTLZ), customizable genetic operators, and multi-criteria decision making methods. Excels at finding trade-off solutions (Pareto fronts) for problems with conflicting objectives.\n\n## When to Use This Skill\n\nThis skill should be used when:\n- Solving optimization problems with one or multiple objectives\n- Finding Pareto-optimal solutions and analyzing trade-offs\n- Implementing evolutionary algorithms (GA, DE, PSO, NSGA-II\u002FIII)\n- Working with constrained optimization problems\n- Benchmarking algorithms on standard test problems (ZDT, DTLZ, WFG)\n- Customizing genetic operators (crossover, mutation, selection)\n- Visualizing high-dimensional optimization results\n- Making decisions from multiple competing solutions\n- Handling binary, discrete, continuous, or mixed-variable problems\n\n## Core Concepts\n\n### The Unified Interface\n\nPymoo uses a consistent `minimize()` function for all optimization tasks:\n\n```python\nfrom pymoo.optimize import minimize\n\nresult = minimize(\n    problem,        # What to optimize\n    algorithm,      # How to optimize\n    termination,    # When to stop\n    seed=1,\n    verbose=True\n)\n```\n\n**Result object contains:**\n- `result.X`: Decision variables of optimal solution(s)\n- `result.F`: Objective values of optimal solution(s)\n- `result.G`: Constraint violations (if constrained)\n- `result.algorithm`: Algorithm object with history\n\n### Problem Types\n\n**Single-objective:** One objective to minimize\u002Fmaximize\n**Multi-objective:** 2-3 conflicting objectives → Pareto front\n**Many-objective:** 4+ objectives → High-dimensional Pareto front\n**Constrained:** Objectives + inequality\u002Fequality constraints\n**Dynamic:** Time-varying objectives or constraints\n\n## Quick Start Workflows\n\n### Workflow 1: Single-Objective Optimization\n\n**When:** Optimizing one objective function\n\n**Steps:**\n1. Define or select problem\n2. Choose single-objective algorithm (GA, DE, PSO, CMA-ES)\n3. Configure termination criteria\n4. Run optimization\n5. Extract best solution\n\n**Example:**\n```python\nfrom pymoo.algorithms.soo.nonconvex.ga import GA\nfrom pymoo.problems import get_problem\nfrom pymoo.optimize import minimize\n\n# Built-in problem\nproblem = get_problem(\"rastrigin\", n_var=10)\n\n# Configure Genetic Algorithm\nalgorithm = GA(\n    pop_size=100,\n    eliminate_duplicates=True\n)\n\n# Optimize\nresult = minimize(\n    problem,\n    algorithm,\n    ('n_gen', 200),\n    seed=1,\n    verbose=True\n)\n\nprint(f\"Best solution: {result.X}\")\nprint(f\"Best objective: {result.F[0]}\")\n```\n\n**See:** `scripts\u002Fsingle_objective_example.py` for complete example\n\n### Workflow 2: Multi-Objective Optimization (2-3 objectives)\n\n**When:** Optimizing 2-3 conflicting objectives, need Pareto front\n\n**Algorithm choice:** NSGA-II (standard for bi\u002Ftri-objective)\n\n**Steps:**\n1. Define multi-objective problem\n2. Configure NSGA-II\n3. Run optimization to obtain Pareto front\n4. Visualize trade-offs\n5. Apply decision making (optional)\n\n**Example:**\n```python\nfrom pymoo.algorithms.moo.nsga2 import NSGA2\nfrom pymoo.problems import get_problem\nfrom pymoo.optimize import minimize\nfrom pymoo.visualization.scatter import Scatter\n\n# Bi-objective benchmark problem\nproblem = get_problem(\"zdt1\")\n\n# NSGA-II algorithm\nalgorithm = NSGA2(pop_size=100)\n\n# Optimize\nresult = minimize(problem, algorithm, ('n_gen', 200), seed=1)\n\n# Visualize Pareto front\nplot = Scatter()\nplot.add(result.F, label=\"Obtained Front\")\nplot.add(problem.pareto_front(), label=\"True Front\", alpha=0.3)\nplot.show()\n\nprint(f\"Found {len(result.F)} Pareto-optimal solutions\")\n```\n\n**See:** `scripts\u002Fmulti_objective_example.py` for complete example\n\n### Workflow 3: Many-Objective Optimization (4+ objectives)\n\n**When:** Optimizing 4 or more objectives\n\n**Algorithm choice:** NSGA-III (designed for many objectives)\n\n**Key difference:** Must provide reference directions for population guidance\n\n**Steps:**\n1. Define many-objective problem\n2. Generate reference directions\n3. Configure NSGA-III with reference directions\n4. Run optimization\n5. Visualize using Parallel Coordinate Plot\n\n**Example:**\n```python\nfrom pymoo.algorithms.moo.nsga3 import NSGA3\nfrom pymoo.problems import get_problem\nfrom pymoo.optimize import minimize\nfrom pymoo.util.ref_dirs import get_reference_directions\nfrom pymoo.visualization.pcp import PCP\n\n# Many-objective problem (5 objectives)\nproblem = get_problem(\"dtlz2\", n_obj=5)\n\n# Generate reference directions (required for NSGA-III)\nref_dirs = get_reference_directions(\"das-dennis\", n_dim=5, n_partitions=12)\n\n# Configure NSGA-III\nalgorithm = NSGA3(ref_dirs=ref_dirs)\n\n# Optimize\nresult = minimize(problem, algorithm, ('n_gen', 300), seed=1)\n\n# Visualize with Parallel Coordinates\nplot = PCP(labels=[f\"f{i+1}\" for i in range(5)])\nplot.add(result.F, alpha=0.3)\nplot.show()\n```\n\n**See:** `scripts\u002Fmany_objective_example.py` for complete example\n\n### Workflow 4: Custom Problem Definition\n\n**When:** Solving domain-specific optimization problem\n\n**Steps:**\n1. Extend `ElementwiseProblem` class\n2. Define `__init__` with problem dimensions and bounds\n3. Implement `_evaluate` method for objectives (and constraints)\n4. Use with any algorithm\n\n**Unconstrained example:**\n```python\nfrom pymoo.core.problem import ElementwiseProblem\nimport numpy as np\n\nclass MyProblem(ElementwiseProblem):\n    def __init__(self):\n        super().__init__(\n            n_var=2,              # Number of variables\n            n_obj=2,              # Number of objectives\n            xl=np.array([0, 0]),  # Lower bounds\n            xu=np.array([5, 5])   # Upper bounds\n        )\n\n    def _evaluate(self, x, out, *args, **kwargs):\n        # Define objectives\n        f1 = x[0]**2 + x[1]**2\n        f2 = (x[0]-1)**2 + (x[1]-1)**2\n\n        out[\"F\"] = [f1, f2]\n```\n\n**Constrained example:**\n```python\nclass ConstrainedProblem(ElementwiseProblem):\n    def __init__(self):\n        super().__init__(\n            n_var=2,\n            n_obj=2,\n            n_ieq_constr=2,        # Inequality constraints\n            n_eq_constr=1,         # Equality constraints\n            xl=np.array([0, 0]),\n            xu=np.array([5, 5])\n        )\n\n    def _evaluate(self, x, out, *args, **kwargs):\n        # Objectives\n        out[\"F\"] = [f1, f2]\n\n        # Inequality constraints (g \u003C= 0)\n        out[\"G\"] = [g1, g2]\n\n        # Equality constraints (h = 0)\n        out[\"H\"] = [h1]\n```\n\n**Constraint formulation rules:**\n- Inequality: Express as `g(x) \u003C= 0` (feasible when ≤ 0)\n- Equality: Express as `h(x) = 0` (feasible when = 0)\n- Convert `g(x) >= b` to `-(g(x) - b) \u003C= 0`\n\n**See:** `scripts\u002Fcustom_problem_example.py` for complete examples\n\n### Workflow 5: Constraint Handling\n\n**When:** Problem has feasibility constraints\n\n**Approach options:**\n\n**1. Feasibility First (Default - Recommended)**\n```python\nfrom pymoo.algorithms.moo.nsga2 import NSGA2\n\n# Works automatically with constrained problems\nalgorithm = NSGA2(pop_size=100)\nresult = minimize(problem, algorithm, termination)\n\n# Check feasibility\nfeasible = result.CV[:, 0] == 0  # CV = constraint violation\nprint(f\"Feasible solutions: {np.sum(feasible)}\")\n```\n\n**2. Penalty Method**\n```python\nfrom pymoo.constraints.as_penalty import ConstraintsAsPenalty\n\n# Wrap problem to convert constraints to penalties\nproblem_penalized = ConstraintsAsPenalty(problem, penalty=1e6)\n```\n\n**3. Constraint as Objective**\n```python\nfrom pymoo.constraints.as_obj import ConstraintsAsObjective\n\n# Treat constraint violation as additional objective\nproblem_with_cv = ConstraintsAsObjective(problem)\n```\n\n**4. Specialized Algorithms**\n```python\nfrom pymoo.algorithms.soo.nonconvex.sres import SRES\n\n# SRES has built-in constraint handling\nalgorithm = SRES()\n```\n\n**See:** `references\u002Fconstraints_mcdm.md` for comprehensive constraint handling guide\n\n### Workflow 6: Decision Making from Pareto Front\n\n**When:** Have Pareto front, need to select preferred solution(s)\n\n**Steps:**\n1. Run multi-objective optimization\n2. Normalize objectives to [0, 1]\n3. Define preference weights\n4. Apply MCDM method\n5. Visualize selected solution\n\n**Example using Pseudo-Weights:**\n```python\nfrom pymoo.mcdm.pseudo_weights import PseudoWeights\nimport numpy as np\n\n# After obtaining result from multi-objective optimization\n# Normalize objectives\nF_norm = (result.F - result.F.min(axis=0)) \u002F (result.F.max(axis=0) - result.F.min(axis=0))\n\n# Define preferences (must sum to 1)\nweights = np.array([0.3, 0.7])  # 30% f1, 70% f2\n\n# Apply decision making\ndm = PseudoWeights(weights)\nselected_idx = dm.do(F_norm)\n\n# Get selected solution\nbest_solution = result.X[selected_idx]\nbest_objectives = result.F[selected_idx]\n\nprint(f\"Selected solution: {best_solution}\")\nprint(f\"Objective values: {best_objectives}\")\n```\n\n**Other MCDM methods:**\n- Compromise Programming: Select closest to ideal point\n- Knee Point: Find balanced trade-off solutions\n- Hypervolume Contribution: Select most diverse subset\n\n**See:**\n- `scripts\u002Fdecision_making_example.py` for complete example\n- `references\u002Fconstraints_mcdm.md` for detailed MCDM methods\n\n### Workflow 7: Visualization\n\n**Choose visualization based on number of objectives:**\n\n**2 objectives: Scatter Plot**\n```python\nfrom pymoo.visualization.scatter import Scatter\n\nplot = Scatter(title=\"Bi-objective Results\")\nplot.add(result.F, color=\"blue\", alpha=0.7)\nplot.show()\n```\n\n**3 objectives: 3D Scatter**\n```python\nplot = Scatter(title=\"Tri-objective Results\")\nplot.add(result.F)  # Automatically renders in 3D\nplot.show()\n```\n\n**4+ objectives: Parallel Coordinate Plot**\n```python\nfrom pymoo.visualization.pcp import PCP\n\nplot = PCP(\n    labels=[f\"f{i+1}\" for i in range(n_obj)],\n    normalize_each_axis=True\n)\nplot.add(result.F, alpha=0.3)\nplot.show()\n```\n\n**Solution comparison: Petal Diagram**\n```python\nfrom pymoo.visualization.petal import Petal\n\nplot = Petal(\n    bounds=[result.F.min(axis=0), result.F.max(axis=0)],\n    labels=[\"Cost\", \"Weight\", \"Efficiency\"]\n)\nplot.add(solution_A, label=\"Design A\")\nplot.add(solution_B, label=\"Design B\")\nplot.show()\n```\n\n**See:** `references\u002Fvisualization.md` for all visualization types and usage\n\n## Algorithm Selection Guide\n\n### Single-Objective Problems\n\n| Algorithm | Best For | Key Features |\n|-----------|----------|--------------|\n| **GA** | General-purpose | Flexible, customizable operators |\n| **DE** | Continuous optimization | Good global search |\n| **PSO** | Smooth landscapes | Fast convergence |\n| **CMA-ES** | Difficult\u002Fnoisy problems | Self-adapting |\n\n### Multi-Objective Problems (2-3 objectives)\n\n| Algorithm | Best For | Key Features |\n|-----------|----------|--------------|\n| **NSGA-II** | Standard benchmark | Fast, reliable, well-tested |\n| **R-NSGA-II** | Preference regions | Reference point guidance |\n| **MOEA\u002FD** | Decomposable problems | Scalarization approach |\n\n### Many-Objective Problems (4+ objectives)\n\n| Algorithm | Best For | Key Features |\n|-----------|----------|--------------|\n| **NSGA-III** | 4-15 objectives | Reference direction-based |\n| **RVEA** | Adaptive search | Reference vector evolution |\n| **AGE-MOEA** | Complex landscapes | Adaptive geometry |\n\n### Constrained Problems\n\n| Approach | Algorithm | When to Use |\n|----------|-----------|-------------|\n| Feasibility-first | Any algorithm | Large feasible region |\n| Specialized | SRES, ISRES | Heavy constraints |\n| Penalty | GA + penalty | Algorithm compatibility |\n\n**See:** `references\u002Falgorithms.md` for comprehensive algorithm reference\n\n## Benchmark Problems\n\n### Quick problem access:\n```python\nfrom pymoo.problems import get_problem\n\n# Single-objective\nproblem = get_problem(\"rastrigin\", n_var=10)\nproblem = get_problem(\"rosenbrock\", n_var=10)\n\n# Multi-objective\nproblem = get_problem(\"zdt1\")        # Convex front\nproblem = get_problem(\"zdt2\")        # Non-convex front\nproblem = get_problem(\"zdt3\")        # Disconnected front\n\n# Many-objective\nproblem = get_problem(\"dtlz2\", n_obj=5, n_var=12)\nproblem = get_problem(\"dtlz7\", n_obj=4)\n```\n\n**See:** `references\u002Fproblems.md` for complete test problem reference\n\n## Genetic Operator Customization\n\n### Standard operator configuration:\n```python\nfrom pymoo.algorithms.soo.nonconvex.ga import GA\nfrom pymoo.operators.crossover.sbx import SBX\nfrom pymoo.operators.mutation.pm import PM\n\nalgorithm = GA(\n    pop_size=100,\n    crossover=SBX(prob=0.9, eta=15),\n    mutation=PM(eta=20),\n    eliminate_duplicates=True\n)\n```\n\n### Operator selection by variable type:\n\n**Continuous variables:**\n- Crossover: SBX (Simulated Binary Crossover)\n- Mutation: PM (Polynomial Mutation)\n\n**Binary variables:**\n- Crossover: TwoPointCrossover, UniformCrossover\n- Mutation: BitflipMutation\n\n**Permutations (TSP, scheduling):**\n- Crossover: OrderCrossover (OX)\n- Mutation: InversionMutation\n\n**See:** `references\u002Foperators.md` for comprehensive operator reference\n\n## Performance and Troubleshooting\n\n### Common issues and solutions:\n\n**Problem: Algorithm not converging**\n- Increase population size\n- Increase number of generations\n- Check if problem is multimodal (try different algorithms)\n- Verify constraints are correctly formulated\n\n**Problem: Poor Pareto front distribution**\n- For NSGA-III: Adjust reference directions\n- Increase population size\n- Check for duplicate elimination\n- Verify problem scaling\n\n**Problem: Few feasible solutions**\n- Use constraint-as-objective approach\n- Apply repair operators\n- Try SRES\u002FISRES for constrained problems\n- Check constraint formulation (should be g \u003C= 0)\n\n**Problem: High computational cost**\n- Reduce population size\n- Decrease number of generations\n- Use simpler operators\n- Enable parallelization (if problem supports)\n\n### Best practices:\n\n1. **Normalize objectives** when scales differ significantly\n2. **Set random seed** for reproducibility\n3. **Save history** to analyze convergence: `save_history=True`\n4. **Visualize results** to understand solution quality\n5. **Compare with true Pareto front** when available\n6. **Use appropriate termination criteria** (generations, evaluations, tolerance)\n7. **Tune operator parameters** for problem characteristics\n\n## Resources\n\nThis skill includes comprehensive reference documentation and executable examples:\n\n### references\u002F\nDetailed documentation for in-depth understanding:\n\n- **algorithms.md**: Complete algorithm reference with parameters, usage, and selection guidelines\n- **problems.md**: Benchmark test problems (ZDT, DTLZ, WFG) with characteristics\n- **operators.md**: Genetic operators (sampling, selection, crossover, mutation) with configuration\n- **visualization.md**: All visualization types with examples and selection guide\n- **constraints_mcdm.md**: Constraint handling techniques and multi-criteria decision making methods\n\n**Search patterns for references:**\n- Algorithm details: `grep -r \"NSGA-II\\|NSGA-III\\|MOEA\u002FD\" references\u002F`\n- Constraint methods: `grep -r \"Feasibility First\\|Penalty\\|Repair\" references\u002F`\n- Visualization types: `grep -r \"Scatter\\|PCP\\|Petal\" references\u002F`\n\n### scripts\u002F\nExecutable examples demonstrating common workflows:\n\n- **single_objective_example.py**: Basic single-objective optimization with GA\n- **multi_objective_example.py**: Multi-objective optimization with NSGA-II, visualization\n- **many_objective_example.py**: Many-objective optimization with NSGA-III, reference directions\n- **custom_problem_example.py**: Defining custom problems (constrained and unconstrained)\n- **decision_making_example.py**: Multi-criteria decision making with different preferences\n\n**Run examples:**\n```bash\npython3 scripts\u002Fsingle_objective_example.py\npython3 scripts\u002Fmulti_objective_example.py\npython3 scripts\u002Fmany_objective_example.py\npython3 scripts\u002Fcustom_problem_example.py\npython3 scripts\u002Fdecision_making_example.py\n```\n\n## Additional Notes\n\n**Installation:**\n```bash\nuv pip install pymoo\n```\n\n**Dependencies:** NumPy, SciPy, matplotlib, autograd (optional for gradient-based)\n\n**Documentation:** https:\u002F\u002Fpymoo.org\u002F\n\n**Version:** This skill is based on pymoo 0.6.x\n\n**Common patterns:**\n- Always use `ElementwiseProblem` for custom problems\n- Constraints formulated as `g(x) \u003C= 0` and `h(x) = 0`\n- Reference directions required for NSGA-III\n- Normalize objectives before MCDM\n- Use appropriate termination: `('n_gen', N)` or `get_termination(\"f_tol\", tol=0.001)`\n","# Pymoo - Multi-Objective Optimization in Python\n\n## Overview\n\nPymoo is a comprehensive Python framework for optimization with emphasis on multi-objective problems. Solve single and multi-objective optimization using state-of-the-art algorithms (NSGA-II\u002FIII, MOEA\u002FD), benchmark problems (ZDT, DTLZ), customizable genetic operators, and multi-criteria decision making methods. Excels at finding trade-off solutions (Pareto fronts) for problems with conflicting objectives.\n\n## When to Use This Skill\n\nThis skill should be used when:\n- Solving optimization problems with one or multiple objectives\n- Finding Pareto-optimal solutions and analyzing trade-offs\n- Implementing evolutionary algorithms (GA, DE, PSO, NSGA-II\u002FIII)\n- Working with constrained optimization problems\n- Benchmarking algorithms on standard test problems (ZDT, DTLZ, WFG)\n- Customizing genetic operators (crossover, mutation, selection)\n- Visualizing high-dimensional optimization results\n- Making decisions from multiple competing solutions\n- Handling binary, discrete, continuous, or mixed-variable problems\n\n## Core Concepts\n\n### The Unified Interface\n\nPymoo uses a consistent `minimize()` function for all optimization tasks:\n\n```python\nfrom pymoo.optimize import minimize\n\nresult = minimize(\n    problem,        # What to optimize\n    algorithm,      # How to optimize\n    termination,    # When to stop\n    seed=1,\n    verbose=True\n)\n```\n\n**Result object contains:**\n- `result.X`: Decision variables of optimal solution(s)\n- `result.F`: Objective values of optimal solution(s)\n- `result.G`: Constraint violations (if constrained)\n- `result.algorithm`: Algorithm object with history\n\n### Problem Types\n\n**Single-objective:** One objective to minimize\u002Fmaximize\n**Multi-objective:** 2-3 conflicting objectives → Pareto front\n**Many-objective:** 4+ objectives → High-dimensional Pareto front\n**Constrained:** Objectives + inequality\u002Fequality constraints\n**Dynamic:** Time-varying objectives or constraints\n\n## Quick Start Workflows\n\n### Workflow 1: Single-Objective Optimization\n\n**When:** Optimizing one objective function\n\n**Steps:**\n1. Define or select problem\n2. Choose single-objective algorithm (GA, DE, PSO, CMA-ES)\n3. Configure termination criteria\n4. Run optimization\n5. Extract best solution\n\n**Example:**\n```python\nfrom pymoo.algorithms.soo.nonconvex.ga import GA\nfrom pymoo.problems import get_problem\nfrom pymoo.optimize import minimize\n\n# Built-in problem\nproblem = get_problem(\"rastrigin\", n_var=10)\n\n# Configure Genetic Algorithm\nalgorithm = GA(\n    pop_size=100,\n    eliminate_duplicates=True\n)\n\n# Optimize\nresult = minimize(\n    problem,\n    algorithm,\n    ('n_gen', 200),\n    seed=1,\n    verbose=True\n)\n\nprint(f\"Best solution: {result.X}\")\nprint(f\"Best objective: {result.F[0]}\")\n```\n\n**See:** `scripts\u002Fsingle_objective_example.py` for complete example\n\n### Workflow 2: Multi-Objective Optimization (2-3 objectives)\n\n**When:** Optimizing 2-3 conflicting objectives, need Pareto front\n\n**Algorithm choice:** NSGA-II (standard for bi\u002Ftri-objective)\n\n**Steps:**\n1. Define multi-objective problem\n2. Configure NSGA-II\n3. Run optimization to obtain Pareto front\n4. Visualize trade-offs\n5. Apply decision making (optional)\n\n**Example:**\n```python\nfrom pymoo.algorithms.moo.nsga2 import NSGA2\nfrom pymoo.problems import get_problem\nfrom pymoo.optimize import minimize\nfrom pymoo.visualization.scatter import Scatter\n\n# Bi-objective benchmark problem\nproblem = get_problem(\"zdt1\")\n\n# NSGA-II algorithm\nalgorithm = NSGA2(pop_size=100)\n\n# Optimize\nresult = minimize(problem, algorithm, ('n_gen', 200), seed=1)\n\n# Visualize Pareto front\nplot = Scatter()\nplot.add(result.F, label=\"Obtained Front\")\nplot.add(problem.pareto_front(), label=\"True Front\", alpha=0.3)\nplot.show()\n\nprint(f\"Found {len(result.F)} Pareto-optimal solutions\")\n```\n\n**See:** `scripts\u002Fmulti_objective_example.py` for complete example\n\n### Workflow 3: Many-Objective Optimization (4+ objectives)\n\n**When:** Optimizing 4 or more objectives\n\n**Algorithm choice:** NSGA-III (designed for many objectives)\n\n**Key difference:** Must provide reference directions for population guidance\n\n**Steps:**\n1. Define many-objective problem\n2. Generate reference directions\n3. Configure NSGA-III with reference directions\n4. Run optimization\n5. Visualize using Parallel Coordinate Plot\n\n**Example:**\n```python\nfrom pymoo.algorithms.moo.nsga3 import NSGA3\nfrom pymoo.problems import get_problem\nfrom pymoo.optimize import minimize\nfrom pymoo.util.ref_dirs import get_reference_directions\nfrom pymoo.visualization.pcp import PCP\n\n# Many-objective problem (5 objectives)\nproblem = get_problem(\"dtlz2\", n_obj=5)\n\n# Generate reference directions (required for NSGA-III)\nref_dirs = get_reference_directions(\"das-dennis\", n_dim=5, n_partitions=12)\n\n# Configure NSGA-III\nalgorithm = NSGA3(ref_dirs=ref_dirs)\n\n# Optimize\nresult = minimize(problem, algorithm, ('n_gen', 300), seed=1)\n\n# Visualize with Parallel Coordinates\nplot = PCP(labels=[f\"f{i+1}\" for i in range(5)])\nplot.add(result.F, alpha=0.3)\nplot.show()\n```\n\n**See:** `scripts\u002Fmany_objective_example.py` for complete example\n\n### Workflow 4: Custom Problem Definition\n\n**When:** Solving domain-specific optimization problem\n\n**Steps:**\n1. Extend `ElementwiseProblem` class\n2. Define `__init__` with problem dimensions and bounds\n3. Implement `_evaluate` method for objectives (and constraints)\n4. Use with any algorithm\n\n**Unconstrained example:**\n```python\nfrom pymoo.core.problem import ElementwiseProblem\nimport numpy as np\n\nclass MyProblem(ElementwiseProblem):\n    def __init__(self):\n        super().__init__(\n            n_var=2,              # Number of variables\n            n_obj=2,              # Number of objectives\n            xl=np.array([0, 0]),  # Lower bounds\n            xu=np.array([5, 5])   # Upper bounds\n        )\n\n    def _evaluate(self, x, out, *args, **kwargs):\n        # Define objectives\n        f1 = x[0]**2 + x[1]**2\n        f2 = (x[0]-1)**2 + (x[1]-1)**2\n\n        out[\"F\"] = [f1, f2]\n```\n\n**Constrained example:**\n```python\nclass ConstrainedProblem(ElementwiseProblem):\n    def __init__(self):\n        super().__init__(\n            n_var=2,\n            n_obj=2,\n            n_ieq_constr=2,        # Inequality constraints\n            n_eq_constr=1,         # Equality constraints\n            xl=np.array([0, 0]),\n            xu=np.array([5, 5])\n        )\n\n    def _evaluate(self, x, out, *args, **kwargs):\n        # Objectives\n        out[\"F\"] = [f1, f2]\n\n        # Inequality constraints (g \u003C= 0)\n        out[\"G\"] = [g1, g2]\n\n        # Equality constraints (h = 0)\n        out[\"H\"] = [h1]\n```\n\n**Constraint formulation rules:**\n- Inequality: Express as `g(x) \u003C= 0` (feasible when ≤ 0)\n- Equality: Express as `h(x) = 0` (feasible when = 0)\n- Convert `g(x) >= b` to `-(g(x) - b) \u003C= 0`\n\n**See:** `scripts\u002Fcustom_problem_example.py` for complete examples\n\n### Workflow 5: Constraint Handling\n\n**When:** Problem has feasibility constraints\n\n**Approach options:**\n\n**1. Feasibility First (Default - Recommended)**\n```python\nfrom pymoo.algorithms.moo.nsga2 import NSGA2\n\n# Works automatically with constrained problems\nalgorithm = NSGA2(pop_size=100)\nresult = minimize(problem, algorithm, termination)\n\n# Check feasibility\nfeasible = result.CV[:, 0] == 0  # CV = constraint violation\nprint(f\"Feasible solutions: {np.sum(feasible)}\")\n```\n\n**2. Penalty Method**\n```python\nfrom pymoo.constraints.as_penalty import ConstraintsAsPenalty\n\n# Wrap problem to convert constraints to penalties\nproblem_penalized = ConstraintsAsPenalty(problem, penalty=1e6)\n```\n\n**3. Constraint as Objective**\n```python\nfrom pymoo.constraints.as_obj import ConstraintsAsObjective\n\n# Treat constraint violation as additional objective\nproblem_with_cv = ConstraintsAsObjective(problem)\n```\n\n**4. Specialized Algorithms**\n```python\nfrom pymoo.algorithms.soo.nonconvex.sres import SRES\n\n# SRES has built-in constraint handling\nalgorithm = SRES()\n```\n\n**See:** `references\u002Fconstraints_mcdm.md` for comprehensive constraint handling guide\n\n### Workflow 6: Decision Making from Pareto Front\n\n**When:** Have Pareto front, need to select preferred solution(s)\n\n**Steps:**\n1. Run multi-objective optimization\n2. Normalize objectives to [0, 1]\n3. Define preference weights\n4. Apply MCDM method\n5. Visualize selected solution\n\n**Example using Pseudo-Weights:**\n```python\nfrom pymoo.mcdm.pseudo_weights import PseudoWeights\nimport numpy as np\n\n# After obtaining result from multi-objective optimization\n# Normalize objectives\nF_norm = (result.F - result.F.min(axis=0)) \u002F (result.F.max(axis=0) - result.F.min(axis=0))\n\n# Define preferences (must sum to 1)\nweights = np.array([0.3, 0.7])  # 30% f1, 70% f2\n\n# Apply decision making\ndm = PseudoWeights(weights)\nselected_idx = dm.do(F_norm)\n\n# Get selected solution\nbest_solution = result.X[selected_idx]\nbest_objectives = result.F[selected_idx]\n\nprint(f\"Selected solution: {best_solution}\")\nprint(f\"Objective values: {best_objectives}\")\n```\n\n**Other MCDM methods:**\n- Compromise Programming: Select closest to ideal point\n- Knee Point: Find balanced trade-off solutions\n- Hypervolume Contribution: Select most diverse subset\n\n**See:**\n- `scripts\u002Fdecision_making_example.py` for complete example\n- `references\u002Fconstraints_mcdm.md` for detailed MCDM methods\n\n### Workflow 7: Visualization\n\n**Choose visualization based on number of objectives:**\n\n**2 objectives: Scatter Plot**\n```python\nfrom pymoo.visualization.scatter import Scatter\n\nplot = Scatter(title=\"Bi-objective Results\")\nplot.add(result.F, color=\"blue\", alpha=0.7)\nplot.show()\n```\n\n**3 objectives: 3D Scatter**\n```python\nplot = Scatter(title=\"Tri-objective Results\")\nplot.add(result.F)  # Automatically renders in 3D\nplot.show()\n```\n\n**4+ objectives: Parallel Coordinate Plot**\n```python\nfrom pymoo.visualization.pcp import PCP\n\nplot = PCP(\n    labels=[f\"f{i+1}\" for i in range(n_obj)],\n    normalize_each_axis=True\n)\nplot.add(result.F, alpha=0.3)\nplot.show()\n```\n\n**Solution comparison: Petal Diagram**\n```python\nfrom pymoo.visualization.petal import Petal\n\nplot = Petal(\n    bounds=[result.F.min(axis=0), result.F.max(axis=0)],\n    labels=[\"Cost\", \"Weight\", \"Efficiency\"]\n)\nplot.add(solution_A, label=\"Design A\")\nplot.add(solution_B, label=\"Design B\")\nplot.show()\n```\n\n**See:** `references\u002Fvisualization.md` for all visualization types and usage\n\n## Algorithm Selection Guide\n\n### Single-Objective Problems\n\n| Algorithm | Best For | Key Features |\n|-----------|----------|--------------|\n| **GA** | General-purpose | Flexible, customizable operators |\n| **DE** | Continuous optimization | Good global search |\n| **PSO** | Smooth landscapes | Fast convergence |\n| **CMA-ES** | Difficult\u002Fnoisy problems | Self-adapting |\n\n### Multi-Objective Problems (2-3 objectives)\n\n| Algorithm | Best For | Key Features |\n|-----------|----------|--------------|\n| **NSGA-II** | Standard benchmark | Fast, reliable, well-tested |\n| **R-NSGA-II** | Preference regions | Reference point guidance |\n| **MOEA\u002FD** | Decomposable problems | Scalarization approach |\n\n### Many-Objective Problems (4+ objectives)\n\n| Algorithm | Best For | Key Features |\n|-----------|----------|--------------|\n| **NSGA-III** | 4-15 objectives | Reference direction-based |\n| **RVEA** | Adaptive search | Reference vector evolution |\n| **AGE-MOEA** | Complex landscapes | Adaptive geometry |\n\n### Constrained Problems\n\n| Approach | Algorithm | When to Use |\n|----------|-----------|-------------|\n| Feasibility-first | Any algorithm | Large feasible region |\n| Specialized | SRES, ISRES | Heavy constraints |\n| Penalty | GA + penalty | Algorithm compatibility |\n\n**See:** `references\u002Falgorithms.md` for comprehensive algorithm reference\n\n## Benchmark Problems\n\n### Quick problem access:\n```python\nfrom pymoo.problems import get_problem\n\n# Single-objective\nproblem = get_problem(\"rastrigin\", n_var=10)\nproblem = get_problem(\"rosenbrock\", n_var=10)\n\n# Multi-objective\nproblem = get_problem(\"zdt1\")        # Convex front\nproblem = get_problem(\"zdt2\")        # Non-convex front\nproblem = get_problem(\"zdt3\")        # Disconnected front\n\n# Many-objective\nproblem = get_problem(\"dtlz2\", n_obj=5, n_var=12)\nproblem = get_problem(\"dtlz7\", n_obj=4)\n```\n\n**See:** `references\u002Fproblems.md` for complete test problem reference\n\n## Genetic Operator Customization\n\n### Standard operator configuration:\n```python\nfrom pymoo.algorithms.soo.nonconvex.ga import GA\nfrom pymoo.operators.crossover.sbx import SBX\nfrom pymoo.operators.mutation.pm import PM\n\nalgorithm = GA(\n    pop_size=100,\n    crossover=SBX(prob=0.9, eta=15),\n    mutation=PM(eta=20),\n    eliminate_duplicates=True\n)\n```\n\n### Operator selection by variable type:\n\n**Continuous variables:**\n- Crossover: SBX (Simulated Binary Crossover)\n- Mutation: PM (Polynomial Mutation)\n\n**Binary variables:**\n- Crossover: TwoPointCrossover, UniformCrossover\n- Mutation: BitflipMutation\n\n**Permutations (TSP, scheduling):**\n- Crossover: OrderCrossover (OX)\n- Mutation: InversionMutation\n\n**See:** `references\u002Foperators.md` for comprehensive operator reference\n\n## Performance and Troubleshooting\n\n### Common issues and solutions:\n\n**Problem: Algorithm not converging**\n- Increase population size\n- Increase number of generations\n- Check if problem is multimodal (try different algorithms)\n- Verify constraints are correctly formulated\n\n**Problem: Poor Pareto front distribution**\n- For NSGA-III: Adjust reference directions\n- Increase population size\n- Check for duplicate elimination\n- Verify problem scaling\n\n**Problem: Few feasible solutions**\n- Use constraint-as-objective approach\n- Apply repair operators\n- Try SRES\u002FISRES for constrained problems\n- Check constraint formulation (should be g \u003C= 0)\n\n**Problem: High computational cost**\n- Reduce population size\n- Decrease number of generations\n- Use simpler operators\n- Enable parallelization (if problem supports)\n\n### Best practices:\n\n1. **Normalize objectives** when scales differ significantly\n2. **Set random seed** for reproducibility\n3. **Save history** to analyze convergence: `save_history=True`\n4. **Visualize results** to understand solution quality\n5. **Compare with true Pareto front** when available\n6. **Use appropriate termination criteria** (generations, evaluations, tolerance)\n7. **Tune operator parameters** for problem characteristics\n\n## Resources\n\nThis skill includes comprehensive reference documentation and executable examples:\n\n### references\u002F\nDetailed documentation for in-depth understanding:\n\n- **algorithms.md**: Complete algorithm reference with parameters, usage, and selection guidelines\n- **problems.md**: Benchmark test problems (ZDT, DTLZ, WFG) with characteristics\n- **operators.md**: Genetic operators (sampling, selection, crossover, mutation) with configuration\n- **visualization.md**: All visualization types with examples and selection guide\n- **constraints_mcdm.md**: Constraint handling techniques and multi-criteria decision making methods\n\n**Search patterns for references:**\n- Algorithm details: `grep -r \"NSGA-II\\|NSGA-III\\|MOEA\u002FD\" references\u002F`\n- Constraint methods: `grep -r \"Feasibility First\\|Penalty\\|Repair\" references\u002F`\n- Visualization types: `grep -r \"Scatter\\|PCP\\|Petal\" references\u002F`\n\n### scripts\u002F\nExecutable examples demonstrating common workflows:\n\n- **single_objective_example.py**: Basic single-objective optimization with GA\n- **multi_objective_example.py**: Multi-objective optimization with NSGA-II, visualization\n- **many_objective_example.py**: Many-objective optimization with NSGA-III, reference directions\n- **custom_problem_example.py**: Defining custom problems (constrained and unconstrained)\n- **decision_making_example.py**: Multi-criteria decision making with different preferences\n\n**Run examples:**\n```bash\npython3 scripts\u002Fsingle_objective_example.py\npython3 scripts\u002Fmulti_objective_example.py\npython3 scripts\u002Fmany_objective_example.py\npython3 scripts\u002Fcustom_problem_example.py\npython3 scripts\u002Fdecision_making_example.py\n```\n\n## Additional Notes\n\n**Installation:**\n```bash\nuv pip install pymoo\n```\n\n**Dependencies:** NumPy, SciPy, matplotlib, autograd (optional for gradient-based)\n\n**Documentation:** https:\u002F\u002Fpymoo.org\u002F\n\n**Version:** This skill is based on pymoo 0.6.x\n\n**Common patterns:**\n- Always use `ElementwiseProblem` for custom problems\n- Constraints formulated as `g(x) \u003C= 0` and `h(x) = 0`\n- Reference directions required for NSGA-III\n- Normalize objectives before MCDM\n- Use appropriate termination: `('n_gen', N)` or `get_termination(\"f_tol\", tol=0.001)`\n",{"name":5,"description":7},"main","2b749c82b5d11fac39d9a6e021ce3f5b8a541bd1","cli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo",3931,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates","https:\u002F\u002Faitmpl.com","https:\u002F\u002Fgithub.com\u002Fdavila7","https:\u002F\u002Fdanielavila.me","Building AI dev tools with LLMs","2026-11-14 06:14:46",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add davila7\u002Fclaude-code-templates --skill pymoo",{"tool":58,"command":59},"bunx","bunx skills add davila7\u002Fclaude-code-templates --skill pymoo",{"tool":61,"command":62},"pnpm","pnpm dlx skills add davila7\u002Fclaude-code-templates --skill pymoo","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002FSKILL.md",true,[66,72,76,80,84,88,94,98,102,106],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"references\u002Falgorithms.md","REFERENCE","参考文档",6124,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Freferences\u002Falgorithms.md",{"path":73,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":74,"sourceHtmlUrl":75},"references\u002Fconstraints_mcdm.md",10852,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Freferences\u002Fconstraints_mcdm.md",{"path":77,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Foperators.md",8815,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Freferences\u002Foperators.md",{"path":81,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Fproblems.md",7116,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Freferences\u002Fproblems.md",{"path":85,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":86,"sourceHtmlUrl":87},"references\u002Fvisualization.md",9229,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Freferences\u002Fvisualization.md",{"path":89,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":92,"sourceHtmlUrl":93},"scripts\u002Fcustom_problem_example.py","SCRIPT","脚本",4770,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Fscripts\u002Fcustom_problem_example.py",{"path":95,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":96,"sourceHtmlUrl":97},"scripts\u002Fdecision_making_example.py",4588,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Fscripts\u002Fdecision_making_example.py",{"path":99,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":100,"sourceHtmlUrl":101},"scripts\u002Fmany_objective_example.py",2103,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Fscripts\u002Fmany_objective_example.py",{"path":103,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":104,"sourceHtmlUrl":105},"scripts\u002Fmulti_objective_example.py",1731,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Fscripts\u002Fmulti_objective_example.py",{"path":107,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":108,"sourceHtmlUrl":109},"scripts\u002Fsingle_objective_example.py",1620,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Fscripts\u002Fsingle_objective_example.py",[111,138,165,198,233,257],{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":118,"publishedAt":37},"01M70NHBTQ8BV0A2SCAZXEPHCX","wealthville-pool-scoring","Score DeFi liquidity pools before providing liquidity. Returns a 0-100 pool score and an Enter\u002FHold\u002FExit\u002FReduce\u002FAvoid verdict with calibrated confidence for ~68,800 Solana pools and 575 EVM pools, plus a public miss-inclusive track record. Use when asked whether a pool is worth LPing into, which pools look best right now, or how accurate the scores have actually been.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fweb-data\u002Fwealthville-pool-scoring\u002FSKILL.md",[117],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[119,120,121,122,123,31,124,125,126,127,128,129,130,131,132,133,134,135,136,137],"scoring","pool","wealthville pool scoring","liquidity","which","exit","now","use","when","reduce","with","record","track","verdict","evm","solana","how","public","look",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":145,"publishedAt":37},"01M70MB6VR8ERJ4EM8D5KHBMEV","technical-debt-auditor","Scans a codebase and produces a quantified technical debt report with a prioritized remediation plan. Analyzes dead code, TODO\u002FFIXME\u002FHACK markers, dependency staleness, complexity hotspots, code duplication signals, test coverage gaps, unused exports, and outdated patterns. Use this skill when the user asks to audit their codebase for tech debt, wants a health check of their code quality, says things like \"where should I focus refactoring\", \"find code smells\", \"audit my codebase\", \"what technical debt do we have\", \"prioritize cleanup work\", or asks about code quality metrics. Also trigger when the user mentions \"code rot\", \"legacy cleanup\", \"refactoring priorities\", or wants to understand the overall health of a project before a major effort. Trigger even if the user doesn't say \"technical debt\" explicitly — any request to systematically assess code quality and identify improvement priorities belongs here.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fdevelopment\u002Ftechnical-debt-auditor\u002FSKILL.md",[144],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[146,147,148,149,150,151,152,153,154,155,156,127,157,158,159,160,161,162,163,164],"technical debt","debt","technical","technical debt auditor","auditor","coverage","complexity","markers","project","cleanup","unused","code","todo","work","plan","focus","signals","audit","dependency",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":180,"publishedAt":37},"01M70KPYH9QNHCNME5GJQGE22K","readonly-sql-guard","Make an agent's database access provably read-only. Use when an agent runs caller-supplied SQL against a production\u002FERP\u002Fanalytics database (a \"query\" MCP tool, text-to-SQL, an admin console), or when reviewing DB-access code for write\u002FDDL\u002Fside-effect\u002Ftransaction-escape risks. Checks what a statement CALLS, not just its shape.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fdatabase\u002Freadonly-sql-guard\u002FSKILL.md",[171,174,175],{"categoryNo":172,"categoryName":173,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":176,"categoryName":177,"taxonomyType":178,"taxonomyTypeDesc":179},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[181,182,183,184,185,186,187,31,188,189,190,191,192,193,194,126,195,196,127,197],"readonly","guard","sql guard","sql","readonly sql guard","erp","effect","read-only","db","just","tool","calls","only","MCP","access","database","query",{"skillNo":199,"name":200,"nameZh":6,"description":201,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":202,"licenseFileUrl":203,"sourceHtmlUrl":204,"categories":205,"keywords":209,"publishedAt":37},"01M6AFY6F7CC2BBZP1QD6VTNVC","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FSKILL.md",[206],{"categoryNo":207,"categoryName":208,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,31,232],"artifacts builder","web","web artifacts builder","artifacts","builder","state","routing","state management","component","css","frontend","ui","Tools","file","components","shadcn","react","Tailwind","suite","jsx","html","single-file","ui components",{"skillNo":234,"name":235,"nameZh":6,"description":236,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":202,"licenseFileUrl":237,"sourceHtmlUrl":238,"categories":239,"keywords":244,"publishedAt":37},"01M6AFWF33SFV9Z3SF4PEEE4BF","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FSKILL.md",[240,243],{"categoryNo":241,"categoryName":242,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":207,"categoryName":208,"taxonomyType":21,"taxonomyTypeDesc":22},[245,246,247,248,249,211,250,220,221,251,252,253,254,31,255,129,256],"webapp testing","testing","webapp","browser","playwright","applications","debugging","toolkit","logs","screenshots","local","behavior",{"skillNo":258,"name":259,"nameZh":6,"description":260,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":202,"licenseFileUrl":261,"sourceHtmlUrl":262,"categories":263,"keywords":271,"publishedAt":37},"01M6AF67Q67JJJ5V51JR2P52KA","discernment-nudge","After you give a substantive answer or draft that the user may act on — advice or recommendations, drafted artifacts such as goals, plans, pitches, proposals, or emails, estimates or projections, analysis or interpretation of data, factual claims they may rely on, or a multi-step argument — invoke this skill BEFORE finalizing your reply and then, if it applies, append 2-3 short follow-up questions, each tied to something specific in what you just produced, that help the user check key facts, probe the reasoning or assumptions, and notice missing context. Do this at most once per conversation. Skip it when the user asked a trivial how-to or simple lookup, wants a purely educational explanation, asked you only to format, convert, or assemble a file from content they provided, is writing code they will run, is doing creative writing or casual chat, or already asked you to double-check, cite, or review — the skill file explains these boundaries and the exact output format.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fdiscernment-nudge\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fdiscernment-nudge\u002FSKILL.md",[264,267,268],{"categoryNo":265,"categoryName":266,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":269,"categoryName":270,"taxonomyType":178,"taxonomyTypeDesc":179},"01JBSEEDCAT000000000000036","内容创作者",[272,273,274,275,276,277,278,279,213,280,223,157,281,282,283,284,285,193,286,127,287,288,289,290,291,135,292],"discernment nudge","nudge","interpretation","help","run","reasoning","data","writing","lookup","content","review","conversation","short","up","invoke","you","analysis","claims","argument","assemble","recommendations"]