[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6R3GPM273QP7CSS6SVW4CK0":3,"skill-same:01M6R3GPM273QP7CSS6SVW4CK0":102},{"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":18,"publishedAt":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":40,"repositoryHtmlUrl":41,"repositoryHomepageUrl":6,"ownerHtmlUrl":42,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":43,"install":44,"resources":57},"01M6R3GPM273QP7CSS6SVW4CK0","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.","Mishit18\u002Fclaude-code-templates","Mishit18","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F244127857?v=4","01M6QXBYKWM76HSKYDNWSKKE41","Mishit Sharma","01M6QXBYRJ0CAVM51S1RTEKTZZ",1,"MIT","https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31],"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\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\n",{"name":5,"description":7},"main","015422534a7457348a313b6381f0255d3364eb8c","cli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo",0,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates","https:\u002F\u002Fgithub.com\u002FMishit18","2026-11-11 17:58:24",{"source":8,"skillName":5,"commands":45,"prompt":55,"zipAvailable":56},[46,49,52],{"tool":47,"command":48},"npx","npx skills add Mishit18\u002Fclaude-code-templates --skill pymoo",{"tool":50,"command":51},"bunx","bunx skills add Mishit18\u002Fclaude-code-templates --skill pymoo",{"tool":53,"command":54},"pnpm","pnpm dlx skills add Mishit18\u002Fclaude-code-templates --skill pymoo","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002FSKILL.md",true,[58,64,68,72,76,80,86,90,94,98],{"path":59,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":62,"sourceHtmlUrl":63},"references\u002Falgorithms.md","REFERENCE","参考文档",6125,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Freferences\u002Falgorithms.md",{"path":65,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":66,"sourceHtmlUrl":67},"references\u002Fconstraints_mcdm.md",10853,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Freferences\u002Fconstraints_mcdm.md",{"path":69,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":70,"sourceHtmlUrl":71},"references\u002Foperators.md",8816,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Freferences\u002Foperators.md",{"path":73,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":74,"sourceHtmlUrl":75},"references\u002Fproblems.md",7117,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Freferences\u002Fproblems.md",{"path":77,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Fvisualization.md",9230,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Freferences\u002Fvisualization.md",{"path":81,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":84,"sourceHtmlUrl":85},"scripts\u002Fcustom_problem_example.py","SCRIPT","脚本",4771,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Fscripts\u002Fcustom_problem_example.py",{"path":87,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":88,"sourceHtmlUrl":89},"scripts\u002Fdecision_making_example.py",4589,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Fscripts\u002Fdecision_making_example.py",{"path":91,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":92,"sourceHtmlUrl":93},"scripts\u002Fmany_objective_example.py",2104,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Fscripts\u002Fmany_objective_example.py",{"path":95,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":96,"sourceHtmlUrl":97},"scripts\u002Fmulti_objective_example.py",1732,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Fscripts\u002Fmulti_objective_example.py",{"path":99,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":100,"sourceHtmlUrl":101},"scripts\u002Fsingle_objective_example.py",1621,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpymoo\u002Fscripts\u002Fsingle_objective_example.py",[103,135,161,188,215,239],{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":107,"licenseFileUrl":108,"sourceHtmlUrl":109,"categories":110,"keywords":116,"publishedAt":32},"01M6R4ARN4W2VZRDERDTMN1KP0","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\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FSKILL.md",[111],{"categoryNo":112,"categoryName":113,"taxonomyType":114,"taxonomyTypeDesc":115},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,25,26,134],"web artifacts builder","web","artifacts","artifacts builder","builder","frontend","css","components","react","routing","state management","state","file","Tailwind","use","single-file","ui components","single",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":107,"licenseFileUrl":139,"sourceHtmlUrl":140,"categories":141,"keywords":146,"publishedAt":32},"01M6R45GXREM5DP8T08MAC788H","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\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FSKILL.md",[142,145],{"categoryNo":143,"categoryName":144,"taxonomyType":114,"taxonomyTypeDesc":115},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":112,"categoryName":113,"taxonomyType":114,"taxonomyTypeDesc":115},[147,148,149,122,150,151,118,152,153,154,155,156,157,158,159,160,26],"testing","webapp testing","webapp","screenshots","playwright","debugging","toolkit","browser","ui","logs","applications","behavior","local","with",{"skillNo":162,"name":163,"nameZh":6,"description":164,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":165,"sourceHtmlUrl":166,"categories":167,"keywords":168,"publishedAt":32},"01M6R2GYJ470X8EB7R58V0B68K","think-tank","Run a Virtual Think Tank — a structured multi-persona debate — before planning or making architectural\u002Fdesign\u002Fstrategic decisions. Use this skill whenever the user is about to plan a system, make a technology choice, evaluate trade-offs, decide on an approach, or faces any decision where multiple perspectives would sharpen the outcome. Also trigger when the user says \"think tank\", \"debate this\", \"perspectives on\", \"trade-offs\", \"should I use X or Y\", \"help me decide\", \"before we plan\", or asks for pros\u002Fcons of competing approaches. This skill should run BEFORE any implementation planning begins — it produces a structured analysis that feeds into better plans.","https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fthink-tank\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fthink-tank\u002FSKILL.md",[],[169,170,19,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187],"think tank","think","run","feeds","analysis","persona","plan","sharpen","virtual","decision","choice","decide","perspectives","outcome","me","debate","make","trade-offs","when",{"skillNo":189,"name":190,"nameZh":6,"description":191,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":107,"licenseFileUrl":192,"sourceHtmlUrl":193,"categories":194,"keywords":198,"publishedAt":32},"01M6R2FSR55AVRFA9YZ8SC2GZG","skill-creator","Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.","https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fskill-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fskill-creator\u002FSKILL.md",[195],{"categoryNo":196,"categoryName":197,"taxonomyType":114,"taxonomyTypeDesc":115},"01JBSEEDCAT000000000000023","Skill与智能体开发",[199,200,201,202,203,204,205,206,207,208,209,210,211,212,160,26,213,187,214],"skill creator","creator","workflows","create","update","capabilities","knowledge","tool","integrations","specialized","guide","new skill","existing skill","users","Existing","new",{"skillNo":216,"name":217,"nameZh":6,"description":218,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":219,"categories":220,"keywords":221,"publishedAt":32},"01M6R2FK42ZZ4HJTJVVK9WJBBP","ship-learn-next","Transform learning content (like YouTube transcripts, articles, tutorials) into actionable implementation plans using the Ship-Learn-Next framework. Use when user wants to turn advice, lessons, or educational content into concrete action steps, reps, or a learning quest.","https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fship-learn-next\u002FSKILL.md",[],[222,223,224,225,20,226,227,228,131,229,230,231,232,233,234,235,236,237,238,187],"learn","ship learn next","ship","next","learning","read","write","advice","implementation","youtube","plans","quest","transform","actionable","action","lessons","youtube transcripts",{"skillNo":240,"name":241,"nameZh":6,"description":242,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":107,"licenseFileUrl":243,"sourceHtmlUrl":244,"categories":245,"keywords":252,"publishedAt":32},"01M6R2088G1RHDA5MDX16HASRB","slack-gif-creator","Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like \"make me a GIF of X doing Y for Slack.\"","https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fslack-gif-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fslack-gif-creator\u002FSKILL.md",[246,249],{"categoryNo":247,"categoryName":248,"taxonomyType":114,"taxonomyTypeDesc":115},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":250,"categoryName":251,"taxonomyType":114,"taxonomyTypeDesc":115},"01JBSEEDCAT000000000000016","图像与多媒体",[253,254,255,200,256,257,258,259,205,131,183,212,185,260,261,26,262,187],"slack gif creator","slack","gif","validation","Tools","constraints","Animation","Utilities","concepts","request"]