[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XGNW202YEZD2PQSHES97WN":3,"skill-same:01M6XGNW202YEZD2PQSHES97WN":72},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":14,"repositoryHtmlUrl":55,"repositoryHomepageUrl":6,"ownerHtmlUrl":56,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":57,"install":58,"resources":71},"01M6XGNW202YEZD2PQSHES97WN","sindy-identification",null,"Sparse Identification of Nonlinear Dynamics (SINDy) — discover governing equations from time-series data. Builds sparse dynamical system models dx\u002Fdt = f(x) from measurements using PySINDy. Use when you have trajectory data and want to find the underlying ODE.","fadrienne\u002FMyGitHub","fadrienne","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F197874571?v=4","01M6X64V8VWCRSMFZ4EPS2BWXG","Francesca Adrienne","01M6X64VD5MW4F9PHDWQKS7ZAF",0,"MIT","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fphysics\u002Fsindy-identification\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"identification","sindy identification","dynamics","system","Sparse Regression","Equation Discovery","System Identification","SINDy","Dynamical Systems","when","you","regression","discovery","series","discover","physics","time","scipy","dx","use","2026-11-10 10:12:30",false,"---\nname: sindy-identification\ndescription: Sparse Identification of Nonlinear Dynamics (SINDy) — discover governing equations from time-series data. Builds sparse dynamical system models dx\u002Fdt = f(x) from measurements using PySINDy. Use when you have trajectory data and want to find the underlying ODE.\ncategory: physics\nversion: 1.0.0\nauthor: Synthetic Sciences\nlicense: MIT\ntags: [SINDy, System Identification, Dynamical Systems, Equation Discovery, Sparse Regression]\ndependencies: [\"pysindy>=2.1.0\", \"scipy>=1.11.0\", \"numpy>=1.24.0\", \"matplotlib>=3.7.0\"]\n---\n\n# SINDy — Sparse Identification of Nonlinear Dynamics\n\n## Overview\n\nDiscover governing ODEs from time-series data using SINDy (Brunton et al., PNAS 2016). Given measurements of state variables x(t), SINDy identifies the sparse set of terms in a library of candidate functions that best describe dx\u002Fdt.\n\n## When to Use\n\n- You have trajectory data and want to find the governing ODE\n- System is expected to have a sparse representation (few active terms)\n- Input variables are known (you measured the right state variables)\n- Data is relatively clean (or you can denoise it)\n\n## Do NOT Use When\n\n- You want arbitrary symbolic expressions (use `symbolic-regression` with PySR)\n- You only have steady-state data (SINDy needs time derivatives)\n- System is stochastic (SINDy assumes deterministic dynamics)\n- You have PDE data (use PDE-FIND variant, not standard SINDy)\n\n## Installation\n\n```bash\npip install pysindy\n```\n\n## Core Workflows\n\n### 1. Basic SINDy (Discover ODE from Data)\n\n```python\nimport numpy as np\nimport pysindy as ps\nfrom scipy.integrate import solve_ivp\nimport matplotlib.pyplot as plt\n\n# Generate training data from Lorenz system (ground truth)\ndef lorenz(t, y, sigma=10, rho=28, beta=8\u002F3):\n    return [sigma*(y[1]-y[0]), y[0]*(rho-y[2])-y[1], y[0]*y[1]-beta*y[2]]\n\ndt = 0.001\nt_train = np.arange(0, 10, dt)\nsol = solve_ivp(lorenz, (0, 10), [1, 1, 1], t_eval=t_train, rtol=1e-10)\nx_train = sol.y.T  # shape (N, 3)\n\n# Fit SINDy model\nmodel = ps.SINDy(\n    feature_names=[\"x\", \"y\", \"z\"],\n    optimizer=ps.STLSQ(threshold=0.1),  # sparsity threshold\n    feature_library=ps.PolynomialLibrary(degree=2),\n)\nmodel.fit(x_train, t=dt)\nmodel.print()\n\n# Expected output:\n# x' = -10.000 x + 10.000 y\n# y' = 28.000 x + -1.000 y + -1.000 x z\n# z' = -2.667 z + 1.000 x y\n```\n\n### 2. Choosing the Sparsity Threshold\n\n```python\n# Sweep thresholds and check model complexity vs error\nthresholds = [0.001, 0.01, 0.05, 0.1, 0.5, 1.0]\nfor thresh in thresholds:\n    model_t = ps.SINDy(\n        optimizer=ps.STLSQ(threshold=thresh),\n        feature_library=ps.PolynomialLibrary(degree=2),\n    )\n    model_t.fit(x_train, t=dt)\n    complexity = model_t.complexity  # number of nonzero terms\n    # Simulate and compute error\n    x_sim = model_t.simulate(x_train[0], t_train)\n    rmse = np.sqrt(np.mean((x_sim - x_train)**2))\n    print(f\"threshold={thresh:.3f}: {complexity} terms, RMSE={rmse:.4f}\")\n```\n\n### 3. Custom Function Libraries\n\n```python\n# Include trigonometric functions for oscillatory systems\nlibrary = ps.PolynomialLibrary(degree=2) + ps.FourierLibrary(n_frequencies=3)\n\n# Or build a custom library\nimport pysindy as ps\ncustom_library = ps.CustomLibrary(\n    library_functions=[\n        lambda x: x,           # linear\n        lambda x: x**2,        # quadratic\n        lambda x: np.sin(x),   # sinusoidal\n        lambda x: np.cos(x),\n    ],\n    function_names=[\n        lambda x: x,\n        lambda x: f\"{x}^2\",\n        lambda x: f\"sin({x})\",\n        lambda x: f\"cos({x})\",\n    ]\n)\n\nmodel = ps.SINDy(\n    feature_library=custom_library,\n    optimizer=ps.STLSQ(threshold=0.1),\n)\nmodel.fit(x_train, t=dt)\nmodel.print()\n```\n\n### 4. Noisy Data (Smoothed Differentiation)\n\n```python\n# Add noise\nx_noisy = x_train + 0.1 * np.random.randn(*x_train.shape)\n\n# Use smoothed finite differences for derivatives\nmodel_noisy = ps.SINDy(\n    differentiation_method=ps.SmoothedFiniteDifference(),\n    optimizer=ps.STLSQ(threshold=0.2),  # higher threshold for noisy data\n    feature_library=ps.PolynomialLibrary(degree=2),\n)\nmodel_noisy.fit(x_noisy, t=dt)\nmodel_noisy.print()\n```\n\n### 5. Validate: Simulate and Compare\n\n```python\n# Simulate discovered model from same IC\nx_sim = model.simulate(x_train[0], t_train)\n\nfig, axes = plt.subplots(3, 1, figsize=(10, 8), sharex=True)\nlabels = ['x', 'y', 'z']\nfor i, ax in enumerate(axes):\n    ax.plot(t_train, x_train[:, i], 'b-', linewidth=0.5, label='Ground truth')\n    ax.plot(t_train, x_sim[:, i], 'r--', linewidth=0.5, label='SINDy model')\n    ax.set_ylabel(labels[i], fontsize=13)\n    ax.legend(loc='upper right')\n    ax.grid(True, alpha=0.3)\naxes[-1].set_xlabel('Time [s]')\naxes[0].set_title('SINDy Model vs Ground Truth')\nplt.tight_layout()\nplt.savefig('sindy_validation.png', dpi=150, bbox_inches='tight')\n\n# Quantitative error\nrmse = np.sqrt(np.mean((x_sim - x_train)**2, axis=0))\nprint(f\"RMSE per variable: x={rmse[0]:.4f}, y={rmse[1]:.4f}, z={rmse[2]:.4f}\")\n```\n\n### 6. Coefficient Extraction\n\n```python\n# Get coefficient matrix (rows = equations, cols = library functions)\ncoefficients = model.coefficients()\nfeature_names = model.get_feature_names()\n\nprint(\"Discovered equations:\")\nfor i, eq_name in enumerate(['dx\u002Fdt', 'dy\u002Fdt', 'dz\u002Fdt']):\n    terms = []\n    for j, name in enumerate(feature_names):\n        if abs(coefficients[i, j]) > 1e-10:\n            terms.append(f\"{coefficients[i,j]:+.3f}·{name}\")\n    print(f\"  {eq_name} = {' '.join(terms)}\")\n```\n\n## Key Parameters\n\n| Parameter | Default | Description |\n|---|---|---|\n| `threshold` (STLSQ) | 0.1 | Sparsity threshold — coefficients below this are zeroed |\n| `degree` (PolynomialLibrary) | 2 | Maximum polynomial degree in library |\n| `alpha` (STLSQ) | 0.05 | Ridge regularization strength |\n| `max_iter` (STLSQ) | 20 | Maximum iterations for thresholding |\n\n## Tips\n\n1. **Start with polynomial degree 2** — most physics ODEs are low-order polynomial\n2. **Threshold tuning is critical** — too low = overfitting, too high = missing terms\n3. **Clean data first** — SINDy is sensitive to noise in derivatives\n4. **Check the library** — if the true terms aren't in the library, SINDy can't find them\n5. **Validate by simulation** — a good SINDy model should reproduce the trajectory\n\n## Troubleshooting\n\n| Symptom | Fix |\n|---|---|\n| Too many terms discovered | Increase `threshold` |\n| Missing terms | Decrease `threshold` or check library contains needed functions |\n| Poor simulation accuracy | Data too noisy — use `SmoothedFiniteDifference` |\n| Model diverges on simulation | Discovered model is unstable — check coefficient signs |\n| `x_train` wrong shape | Must be (n_samples, n_features), NOT (n_features, n_samples) |\n","# SINDy — Sparse Identification of Nonlinear Dynamics\n\n## Overview\n\nDiscover governing ODEs from time-series data using SINDy (Brunton et al., PNAS 2016). Given measurements of state variables x(t), SINDy identifies the sparse set of terms in a library of candidate functions that best describe dx\u002Fdt.\n\n## When to Use\n\n- You have trajectory data and want to find the governing ODE\n- System is expected to have a sparse representation (few active terms)\n- Input variables are known (you measured the right state variables)\n- Data is relatively clean (or you can denoise it)\n\n## Do NOT Use When\n\n- You want arbitrary symbolic expressions (use `symbolic-regression` with PySR)\n- You only have steady-state data (SINDy needs time derivatives)\n- System is stochastic (SINDy assumes deterministic dynamics)\n- You have PDE data (use PDE-FIND variant, not standard SINDy)\n\n## Installation\n\n```bash\npip install pysindy\n```\n\n## Core Workflows\n\n### 1. Basic SINDy (Discover ODE from Data)\n\n```python\nimport numpy as np\nimport pysindy as ps\nfrom scipy.integrate import solve_ivp\nimport matplotlib.pyplot as plt\n\n# Generate training data from Lorenz system (ground truth)\ndef lorenz(t, y, sigma=10, rho=28, beta=8\u002F3):\n    return [sigma*(y[1]-y[0]), y[0]*(rho-y[2])-y[1], y[0]*y[1]-beta*y[2]]\n\ndt = 0.001\nt_train = np.arange(0, 10, dt)\nsol = solve_ivp(lorenz, (0, 10), [1, 1, 1], t_eval=t_train, rtol=1e-10)\nx_train = sol.y.T  # shape (N, 3)\n\n# Fit SINDy model\nmodel = ps.SINDy(\n    feature_names=[\"x\", \"y\", \"z\"],\n    optimizer=ps.STLSQ(threshold=0.1),  # sparsity threshold\n    feature_library=ps.PolynomialLibrary(degree=2),\n)\nmodel.fit(x_train, t=dt)\nmodel.print()\n\n# Expected output:\n# x' = -10.000 x + 10.000 y\n# y' = 28.000 x + -1.000 y + -1.000 x z\n# z' = -2.667 z + 1.000 x y\n```\n\n### 2. Choosing the Sparsity Threshold\n\n```python\n# Sweep thresholds and check model complexity vs error\nthresholds = [0.001, 0.01, 0.05, 0.1, 0.5, 1.0]\nfor thresh in thresholds:\n    model_t = ps.SINDy(\n        optimizer=ps.STLSQ(threshold=thresh),\n        feature_library=ps.PolynomialLibrary(degree=2),\n    )\n    model_t.fit(x_train, t=dt)\n    complexity = model_t.complexity  # number of nonzero terms\n    # Simulate and compute error\n    x_sim = model_t.simulate(x_train[0], t_train)\n    rmse = np.sqrt(np.mean((x_sim - x_train)**2))\n    print(f\"threshold={thresh:.3f}: {complexity} terms, RMSE={rmse:.4f}\")\n```\n\n### 3. Custom Function Libraries\n\n```python\n# Include trigonometric functions for oscillatory systems\nlibrary = ps.PolynomialLibrary(degree=2) + ps.FourierLibrary(n_frequencies=3)\n\n# Or build a custom library\nimport pysindy as ps\ncustom_library = ps.CustomLibrary(\n    library_functions=[\n        lambda x: x,           # linear\n        lambda x: x**2,        # quadratic\n        lambda x: np.sin(x),   # sinusoidal\n        lambda x: np.cos(x),\n    ],\n    function_names=[\n        lambda x: x,\n        lambda x: f\"{x}^2\",\n        lambda x: f\"sin({x})\",\n        lambda x: f\"cos({x})\",\n    ]\n)\n\nmodel = ps.SINDy(\n    feature_library=custom_library,\n    optimizer=ps.STLSQ(threshold=0.1),\n)\nmodel.fit(x_train, t=dt)\nmodel.print()\n```\n\n### 4. Noisy Data (Smoothed Differentiation)\n\n```python\n# Add noise\nx_noisy = x_train + 0.1 * np.random.randn(*x_train.shape)\n\n# Use smoothed finite differences for derivatives\nmodel_noisy = ps.SINDy(\n    differentiation_method=ps.SmoothedFiniteDifference(),\n    optimizer=ps.STLSQ(threshold=0.2),  # higher threshold for noisy data\n    feature_library=ps.PolynomialLibrary(degree=2),\n)\nmodel_noisy.fit(x_noisy, t=dt)\nmodel_noisy.print()\n```\n\n### 5. Validate: Simulate and Compare\n\n```python\n# Simulate discovered model from same IC\nx_sim = model.simulate(x_train[0], t_train)\n\nfig, axes = plt.subplots(3, 1, figsize=(10, 8), sharex=True)\nlabels = ['x', 'y', 'z']\nfor i, ax in enumerate(axes):\n    ax.plot(t_train, x_train[:, i], 'b-', linewidth=0.5, label='Ground truth')\n    ax.plot(t_train, x_sim[:, i], 'r--', linewidth=0.5, label='SINDy model')\n    ax.set_ylabel(labels[i], fontsize=13)\n    ax.legend(loc='upper right')\n    ax.grid(True, alpha=0.3)\naxes[-1].set_xlabel('Time [s]')\naxes[0].set_title('SINDy Model vs Ground Truth')\nplt.tight_layout()\nplt.savefig('sindy_validation.png', dpi=150, bbox_inches='tight')\n\n# Quantitative error\nrmse = np.sqrt(np.mean((x_sim - x_train)**2, axis=0))\nprint(f\"RMSE per variable: x={rmse[0]:.4f}, y={rmse[1]:.4f}, z={rmse[2]:.4f}\")\n```\n\n### 6. Coefficient Extraction\n\n```python\n# Get coefficient matrix (rows = equations, cols = library functions)\ncoefficients = model.coefficients()\nfeature_names = model.get_feature_names()\n\nprint(\"Discovered equations:\")\nfor i, eq_name in enumerate(['dx\u002Fdt', 'dy\u002Fdt', 'dz\u002Fdt']):\n    terms = []\n    for j, name in enumerate(feature_names):\n        if abs(coefficients[i, j]) > 1e-10:\n            terms.append(f\"{coefficients[i,j]:+.3f}·{name}\")\n    print(f\"  {eq_name} = {' '.join(terms)}\")\n```\n\n## Key Parameters\n\n| Parameter | Default | Description |\n|---|---|---|\n| `threshold` (STLSQ) | 0.1 | Sparsity threshold — coefficients below this are zeroed |\n| `degree` (PolynomialLibrary) | 2 | Maximum polynomial degree in library |\n| `alpha` (STLSQ) | 0.05 | Ridge regularization strength |\n| `max_iter` (STLSQ) | 20 | Maximum iterations for thresholding |\n\n## Tips\n\n1. **Start with polynomial degree 2** — most physics ODEs are low-order polynomial\n2. **Threshold tuning is critical** — too low = overfitting, too high = missing terms\n3. **Clean data first** — SINDy is sensitive to noise in derivatives\n4. **Check the library** — if the true terms aren't in the library, SINDy can't find them\n5. **Validate by simulation** — a good SINDy model should reproduce the trajectory\n\n## Troubleshooting\n\n| Symptom | Fix |\n|---|---|\n| Too many terms discovered | Increase `threshold` |\n| Missing terms | Decrease `threshold` or check library contains needed functions |\n| Poor simulation accuracy | Data too noisy — use `SmoothedFiniteDifference` |\n| Model diverges on simulation | Discovered model is unstable — check coefficient signs |\n| `x_train` wrong shape | Must be (n_samples, n_features), NOT (n_features, n_samples) |\n",{"name":5,"tags":44,"author":45,"license":15,"version":46,"category":34,"description":7,"dependencies":47},[26,25,27,24,23],"Synthetic Sciences","1.0.0",[48,49,50,51],"pysindy>=2.1.0","scipy>=1.11.0","numpy>=1.24.0","matplotlib>=3.7.0","main","4aa39efd1cdab0b4657ecee16c92a92011a5b10f","openscience\u002Fbackend\u002Fcli\u002Fskills\u002Fphysics\u002Fsindy-identification","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub","https:\u002F\u002Fgithub.com\u002Ffadrienne","2026-10-28 00:43:09",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add fadrienne\u002FMyGitHub --skill sindy-identification",{"tool":64,"command":65},"bunx","bunx skills add fadrienne\u002FMyGitHub --skill sindy-identification",{"tool":67,"command":68},"pnpm","pnpm dlx skills add fadrienne\u002FMyGitHub --skill sindy-identification","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fphysics\u002Fsindy-identification\u002FSKILL.md",true,[],[73,102,127,161,188,215],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":84,"publishedAt":39},"01M7167B28PK20HP7R7ZED2DY0","statistical-power","Sample size calculation, power analysis, and effect size conversion for scientific studies. Use BEFORE data collection (a priori) to determine required N, or after (post-hoc) to compute achieved power. Covers parametric tests (t-test, ANOVA, chi-square, proportions, correlation, regression), simulation-based power for complex\u002Fclustered\u002Fnested designs, and power curves. Use this skill when someone asks 'how many samples do I need', 'what is my power', 'what effect size can I detect', or any variant. Pairs with \u002Fexperimental-design (choose design first, then compute power) and \u002Fstatistical-analysis (analyze data after collection).","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fstatistical-power\u002FSKILL.md",[79],{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[85,86,87,36,30,88,89,90,28,91,92,93,94,95,96,97,98,99,100,101],"power","statistical power","effect","choose","design","uv","Bash","collection","analysis","calculation","ANOVA","conversion","analyze","t-test","chi-square","simulation","sample",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":111,"publishedAt":39},"01M71677EBCM8EPCE9BZCK8505","statistical-analysis","Guided statistical analysis with test selection and reporting. Use when you need help choosing appropriate tests for your data, assumption checking, power analysis, and APA-formatted results. Best for academic research reporting, test selection guidance. For implementing specific models programmatically use statsmodels.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fstatistical-analysis\u002FSKILL.md",[108],{"categoryNo":109,"categoryName":110,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000008","测试与质量",[93,112,85,113,114,115,28,29,116,117,118,119,38,120,121,122,123,124,125,126],"statistical analysis","academic research","implementing","selection","reporting","data","for","tests","with","test","research","results","statsmodels","models","help",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":142,"publishedAt":39},"01M71673R93XAHFH81DBNVNG7H","scientific-writing","Core skill for the deep research and writing tool. Write scientific manuscripts in full paragraphs (never bullet points). Use two-stage process with (1) section outlines with key points using research-lookup then (2) convert to flowing prose. IMRAD structure, citations (APA\u002FAMA\u002FVancouver), figures\u002Ftables, reporting guidelines (CONSORT\u002FSTROBE\u002FPRISMA), for research papers and journal submissions.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fscientific-writing\u002FSKILL.md",[133,136,137],{"categoryNo":134,"categoryName":135,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},{"categoryNo":138,"categoryName":139,"taxonomyType":140,"taxonomyTypeDesc":141},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[143,144,145,146,147,148,149,150,151,152,91,153,154,155,156,157,158,159,116,160],"writing","scientific","scientific writing","Citations","deep","deep research","never","papers","journal","false","api","prisma","structure","openrouter","Outlines","core skill","read","features",{"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":6,"sourceHtmlUrl":165,"categories":166,"keywords":171,"publishedAt":39},"01M7166ZPKXBF4EBPHVTJPQBB1","scientific-visualization","Meta-skill for publication-ready figures. Use when creating journal submission figures requiring multi-panel layouts, significance annotations, error bars, colorblind-safe palettes, and specific journal formatting (Nature, Science, Cell). Orchestrates matplotlib\u002Fseaborn\u002Fplotly with publication styles. For quick exploration use seaborn or plotly directly.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fscientific-visualization\u002FSKILL.md",[167,170],{"categoryNo":168,"categoryName":169,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000013","分析与可视化",{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},[172,144,173,174,175,176,177,178,179,151,28,180,181,182,183,184,185,186,118,187],"visualization","scientific visualization","error","ready","quick","exploration","meta-skill","Meta","safe","plotly","annotations","formatting","Publication","figures","panel","submission",{"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":15,"licenseFileUrl":6,"sourceHtmlUrl":192,"categories":193,"keywords":200,"publishedAt":39},"01M7166VXJWQSSC3RQZP60WBGR","research-code","Debug, profile, review, and restructure Python research and analysis code. Use when analysis scripts crash, produce wrong results, run too slowly, or need a correctness review. Covers: reading tracebacks and diagnosing root causes, hypothesis-driven debugging, reviewing code for common statistical\u002Fnumerical errors, profiling data pipelines, improving reproducibility (seeds, environments, determinism), and structuring analysis scripts for sharing. Distinct from \u002Fexploratory-data-analysis (which understands data) and \u002Fstatistical-analysis (which chooses and runs tests) — this skill focuses on the code itself.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fresearch-code\u002FSKILL.md",[194,197],{"categoryNo":195,"categoryName":196,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":198,"categoryName":199,"taxonomyType":140,"taxonomyTypeDesc":141},"01JBSEEDCAT000000000000030","开发工程师",[201,202,122,203,204,205,206,90,207,28,91,93,208,209,210,211,212,213,159,214],"code","research code","which","memory","data-analysis","errors","debugging","common","review","data pipelines","run","scripts","line","write",{"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":219,"licenseFileUrl":6,"sourceHtmlUrl":220,"categories":221,"keywords":228,"publishedAt":39},"01M7166CF5HSR7SVZYZFWTDX55","markdown-mermaid-writing","Comprehensive markdown and Mermaid diagram writing skill. Use when creating any scientific document, report, analysis, or visualization. Establishes text-based diagrams as the default documentation standard with full style guides (markdown + mermaid), 24 diagram type references, and 9 document templates.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fmarkdown-mermaid-writing\u002FSKILL.md",[222,225,226,227],{"categoryNo":223,"categoryName":224,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000002","文档处理",{"categoryNo":134,"categoryName":135,"taxonomyType":82,"taxonomyTypeDesc":83},{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},{"categoryNo":138,"categoryName":139,"taxonomyType":140,"taxonomyTypeDesc":141},[143,229,230,231,232,233,172,234,235,28,91,93,236,237,238,239,240,241,144,159],"markdown mermaid writing","mermaid","markdown","community","diagrams","project","default","team","guides","text","documentation","references","diagram"]