[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6ECG5B0VWSBQAST0XG486TK":3,"skill-same:01M6ECG5B0VWSBQAST0XG486TK":100},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":23,"linkOnly":24,"markdownContent":25,"markdownBody":25,"frontMatter":26,"refName":27,"commitSha":28,"skillDirectory":29,"forksCount":30,"repositoryHtmlUrl":31,"repositoryHomepageUrl":32,"ownerHtmlUrl":33,"ownerBlogUrl":6,"ownerDescription":34,"updatedAt":35,"install":36,"resources":49},"01M6ECG5B0VWSBQAST0XG486TK","pymc",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FK-Dense-AI\u002Fclaude-scientific-skills\u002Fpymc\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5],"2026-11-10 10:12:30",false,"# PyMC Bayesian Modeling\n\n## Overview\n\nPyMC is a Python library for Bayesian modeling and probabilistic programming. Build, fit, validate, and compare Bayesian models using PyMC's modern API (version 5.x+), including hierarchical models, MCMC sampling (NUTS), variational inference, and model comparison (LOO, WAIC).\n\n## When to Use This Skill\n\nThis skill should be used when:\n- Building Bayesian models (linear\u002Flogistic regression, hierarchical models, time series, etc.)\n- Performing MCMC sampling or variational inference\n- Conducting prior\u002Fposterior predictive checks\n- Diagnosing sampling issues (divergences, convergence, ESS)\n- Comparing multiple models using information criteria (LOO, WAIC)\n- Implementing uncertainty quantification through Bayesian methods\n- Working with hierarchical\u002Fmultilevel data structures\n- Handling missing data or measurement error in a principled way\n\n## Standard Bayesian Workflow\n\nFollow this workflow for building and validating Bayesian models:\n\n### 1. Data Preparation\n\n```python\nimport pymc as pm\nimport arviz as az\nimport numpy as np\n\n# Load and prepare data\nX = ...  # Predictors\ny = ...  # Outcomes\n\n# Standardize predictors for better sampling\nX_mean = X.mean(axis=0)\nX_std = X.std(axis=0)\nX_scaled = (X - X_mean) \u002F X_std\n```\n\n**Key practices:**\n- Standardize continuous predictors (improves sampling efficiency)\n- Center outcomes when possible\n- Handle missing data explicitly (treat as parameters)\n- Use named dimensions with `coords` for clarity\n\n### 2. Model Building\n\n```python\ncoords = {\n    'predictors': ['var1', 'var2', 'var3'],\n    'obs_id': np.arange(len(y))\n}\n\nwith pm.Model(coords=coords) as model:\n    # Priors\n    alpha = pm.Normal('alpha', mu=0, sigma=1)\n    beta = pm.Normal('beta', mu=0, sigma=1, dims='predictors')\n    sigma = pm.HalfNormal('sigma', sigma=1)\n\n    # Linear predictor\n    mu = alpha + pm.math.dot(X_scaled, beta)\n\n    # Likelihood\n    y_obs = pm.Normal('y_obs', mu=mu, sigma=sigma, observed=y, dims='obs_id')\n```\n\n**Key practices:**\n- Use weakly informative priors (not flat priors)\n- Use `HalfNormal` or `Exponential` for scale parameters\n- Use named dimensions (`dims`) instead of `shape` when possible\n- Use `pm.Data()` for values that will be updated for predictions\n\n### 3. Prior Predictive Check\n\n**Always validate priors before fitting:**\n\n```python\nwith model:\n    prior_pred = pm.sample_prior_predictive(samples=1000, random_seed=42)\n\n# Visualize\naz.plot_ppc(prior_pred, group='prior')\n```\n\n**Check:**\n- Do prior predictions span reasonable values?\n- Are extreme values plausible given domain knowledge?\n- If priors generate implausible data, adjust and re-check\n\n### 4. Fit Model\n\n```python\nwith model:\n    # Optional: Quick exploration with ADVI\n    # approx = pm.fit(n=20000)\n\n    # Full MCMC inference\n    idata = pm.sample(\n        draws=2000,\n        tune=1000,\n        chains=4,\n        target_accept=0.9,\n        random_seed=42,\n        idata_kwargs={'log_likelihood': True}  # For model comparison\n    )\n```\n\n**Key parameters:**\n- `draws=2000`: Number of samples per chain\n- `tune=1000`: Warmup samples (discarded)\n- `chains=4`: Run 4 chains for convergence checking\n- `target_accept=0.9`: Higher for difficult posteriors (0.95-0.99)\n- Include `log_likelihood=True` for model comparison\n\n### 5. Check Diagnostics\n\n**Use the diagnostic script:**\n\n```python\nfrom scripts.model_diagnostics import check_diagnostics\n\nresults = check_diagnostics(idata, var_names=['alpha', 'beta', 'sigma'])\n```\n\n**Check:**\n- **R-hat \u003C 1.01**: Chains have converged\n- **ESS > 400**: Sufficient effective samples\n- **No divergences**: NUTS sampled successfully\n- **Trace plots**: Chains should mix well (fuzzy caterpillar)\n\n**If issues arise:**\n- Divergences → Increase `target_accept=0.95`, use non-centered parameterization\n- Low ESS → Sample more draws, reparameterize to reduce correlation\n- High R-hat → Run longer, check for multimodality\n\n### 6. Posterior Predictive Check\n\n**Validate model fit:**\n\n```python\nwith model:\n    pm.sample_posterior_predictive(idata, extend_inferencedata=True, random_seed=42)\n\n# Visualize\naz.plot_ppc(idata)\n```\n\n**Check:**\n- Do posterior predictions capture observed data patterns?\n- Are systematic deviations evident (model misspecification)?\n- Consider alternative models if fit is poor\n\n### 7. Analyze Results\n\n```python\n# Summary statistics\nprint(az.summary(idata, var_names=['alpha', 'beta', 'sigma']))\n\n# Posterior distributions\naz.plot_posterior(idata, var_names=['alpha', 'beta', 'sigma'])\n\n# Coefficient estimates\naz.plot_forest(idata, var_names=['beta'], combined=True)\n```\n\n### 8. Make Predictions\n\n```python\nX_new = ...  # New predictor values\nX_new_scaled = (X_new - X_mean) \u002F X_std\n\nwith model:\n    pm.set_data({'X_scaled': X_new_scaled})\n    post_pred = pm.sample_posterior_predictive(\n        idata.posterior,\n        var_names=['y_obs'],\n        random_seed=42\n    )\n\n# Extract prediction intervals\ny_pred_mean = post_pred.posterior_predictive['y_obs'].mean(dim=['chain', 'draw'])\ny_pred_hdi = az.hdi(post_pred.posterior_predictive, var_names=['y_obs'])\n```\n\n## Common Model Patterns\n\n### Linear Regression\n\nFor continuous outcomes with linear relationships:\n\n```python\nwith pm.Model() as linear_model:\n    alpha = pm.Normal('alpha', mu=0, sigma=10)\n    beta = pm.Normal('beta', mu=0, sigma=10, shape=n_predictors)\n    sigma = pm.HalfNormal('sigma', sigma=1)\n\n    mu = alpha + pm.math.dot(X, beta)\n    y = pm.Normal('y', mu=mu, sigma=sigma, observed=y_obs)\n```\n\n**Use template:** `assets\u002Flinear_regression_template.py`\n\n### Logistic Regression\n\nFor binary outcomes:\n\n```python\nwith pm.Model() as logistic_model:\n    alpha = pm.Normal('alpha', mu=0, sigma=10)\n    beta = pm.Normal('beta', mu=0, sigma=10, shape=n_predictors)\n\n    logit_p = alpha + pm.math.dot(X, beta)\n    y = pm.Bernoulli('y', logit_p=logit_p, observed=y_obs)\n```\n\n### Hierarchical Models\n\nFor grouped data (use non-centered parameterization):\n\n```python\nwith pm.Model(coords={'groups': group_names}) as hierarchical_model:\n    # Hyperpriors\n    mu_alpha = pm.Normal('mu_alpha', mu=0, sigma=10)\n    sigma_alpha = pm.HalfNormal('sigma_alpha', sigma=1)\n\n    # Group-level (non-centered)\n    alpha_offset = pm.Normal('alpha_offset', mu=0, sigma=1, dims='groups')\n    alpha = pm.Deterministic('alpha', mu_alpha + sigma_alpha * alpha_offset, dims='groups')\n\n    # Observation-level\n    mu = alpha[group_idx]\n    sigma = pm.HalfNormal('sigma', sigma=1)\n    y = pm.Normal('y', mu=mu, sigma=sigma, observed=y_obs)\n```\n\n**Use template:** `assets\u002Fhierarchical_model_template.py`\n\n**Critical:** Always use non-centered parameterization for hierarchical models to avoid divergences.\n\n### Poisson Regression\n\nFor count data:\n\n```python\nwith pm.Model() as poisson_model:\n    alpha = pm.Normal('alpha', mu=0, sigma=10)\n    beta = pm.Normal('beta', mu=0, sigma=10, shape=n_predictors)\n\n    log_lambda = alpha + pm.math.dot(X, beta)\n    y = pm.Poisson('y', mu=pm.math.exp(log_lambda), observed=y_obs)\n```\n\nFor overdispersed counts, use `NegativeBinomial` instead.\n\n### Time Series\n\nFor autoregressive processes:\n\n```python\nwith pm.Model() as ar_model:\n    sigma = pm.HalfNormal('sigma', sigma=1)\n    rho = pm.Normal('rho', mu=0, sigma=0.5, shape=ar_order)\n    init_dist = pm.Normal.dist(mu=0, sigma=sigma)\n\n    y = pm.AR('y', rho=rho, sigma=sigma, init_dist=init_dist, observed=y_obs)\n```\n\n## Model Comparison\n\n### Comparing Models\n\nUse LOO or WAIC for model comparison:\n\n```python\nfrom scripts.model_comparison import compare_models, check_loo_reliability\n\n# Fit models with log_likelihood\nmodels = {\n    'Model1': idata1,\n    'Model2': idata2,\n    'Model3': idata3\n}\n\n# Compare using LOO\ncomparison = compare_models(models, ic='loo')\n\n# Check reliability\ncheck_loo_reliability(models)\n```\n\n**Interpretation:**\n- **Δloo \u003C 2**: Models are similar, choose simpler model\n- **2 \u003C Δloo \u003C 4**: Weak evidence for better model\n- **4 \u003C Δloo \u003C 10**: Moderate evidence\n- **Δloo > 10**: Strong evidence for better model\n\n**Check Pareto-k values:**\n- k \u003C 0.7: LOO reliable\n- k > 0.7: Consider WAIC or k-fold CV\n\n### Model Averaging\n\nWhen models are similar, average predictions:\n\n```python\nfrom scripts.model_comparison import model_averaging\n\naveraged_pred, weights = model_averaging(models, var_name='y_obs')\n```\n\n## Distribution Selection Guide\n\n### For Priors\n\n**Scale parameters** (σ, τ):\n- `pm.HalfNormal('sigma', sigma=1)` - Default choice\n- `pm.Exponential('sigma', lam=1)` - Alternative\n- `pm.Gamma('sigma', alpha=2, beta=1)` - More informative\n\n**Unbounded parameters**:\n- `pm.Normal('theta', mu=0, sigma=1)` - For standardized data\n- `pm.StudentT('theta', nu=3, mu=0, sigma=1)` - Robust to outliers\n\n**Positive parameters**:\n- `pm.LogNormal('theta', mu=0, sigma=1)`\n- `pm.Gamma('theta', alpha=2, beta=1)`\n\n**Probabilities**:\n- `pm.Beta('p', alpha=2, beta=2)` - Weakly informative\n- `pm.Uniform('p', lower=0, upper=1)` - Non-informative (use sparingly)\n\n**Correlation matrices**:\n- `pm.LKJCorr('corr', n=n_vars, eta=2)` - eta=1 uniform, eta>1 prefers identity\n\n### For Likelihoods\n\n**Continuous outcomes**:\n- `pm.Normal('y', mu=mu, sigma=sigma)` - Default for continuous data\n- `pm.StudentT('y', nu=nu, mu=mu, sigma=sigma)` - Robust to outliers\n\n**Count data**:\n- `pm.Poisson('y', mu=lambda)` - Equidispersed counts\n- `pm.NegativeBinomial('y', mu=mu, alpha=alpha)` - Overdispersed counts\n- `pm.ZeroInflatedPoisson('y', psi=psi, mu=mu)` - Excess zeros\n\n**Binary outcomes**:\n- `pm.Bernoulli('y', p=p)` or `pm.Bernoulli('y', logit_p=logit_p)`\n\n**Categorical outcomes**:\n- `pm.Categorical('y', p=probs)`\n\n**See:** `references\u002Fdistributions.md` for comprehensive distribution reference\n\n## Sampling and Inference\n\n### MCMC with NUTS\n\nDefault and recommended for most models:\n\n```python\nidata = pm.sample(\n    draws=2000,\n    tune=1000,\n    chains=4,\n    target_accept=0.9,\n    random_seed=42\n)\n```\n\n**Adjust when needed:**\n- Divergences → `target_accept=0.95` or higher\n- Slow sampling → Use ADVI for initialization\n- Discrete parameters → Use `pm.Metropolis()` for discrete vars\n\n### Variational Inference\n\nFast approximation for exploration or initialization:\n\n```python\nwith model:\n    approx = pm.fit(n=20000, method='advi')\n\n    # Use for initialization\n    start = approx.sample(return_inferencedata=False)[0]\n    idata = pm.sample(start=start)\n```\n\n**Trade-offs:**\n- Much faster than MCMC\n- Approximate (may underestimate uncertainty)\n- Good for large models or quick exploration\n\n**See:** `references\u002Fsampling_inference.md` for detailed sampling guide\n\n## Diagnostic Scripts\n\n### Comprehensive Diagnostics\n\n```python\nfrom scripts.model_diagnostics import create_diagnostic_report\n\ncreate_diagnostic_report(\n    idata,\n    var_names=['alpha', 'beta', 'sigma'],\n    output_dir='diagnostics\u002F'\n)\n```\n\nCreates:\n- Trace plots\n- Rank plots (mixing check)\n- Autocorrelation plots\n- Energy plots\n- ESS evolution\n- Summary statistics CSV\n\n### Quick Diagnostic Check\n\n```python\nfrom scripts.model_diagnostics import check_diagnostics\n\nresults = check_diagnostics(idata)\n```\n\nChecks R-hat, ESS, divergences, and tree depth.\n\n## Common Issues and Solutions\n\n### Divergences\n\n**Symptom:** `idata.sample_stats.diverging.sum() > 0`\n\n**Solutions:**\n1. Increase `target_accept=0.95` or `0.99`\n2. Use non-centered parameterization (hierarchical models)\n3. Add stronger priors to constrain parameters\n4. Check for model misspecification\n\n### Low Effective Sample Size\n\n**Symptom:** `ESS \u003C 400`\n\n**Solutions:**\n1. Sample more draws: `draws=5000`\n2. Reparameterize to reduce posterior correlation\n3. Use QR decomposition for regression with correlated predictors\n\n### High R-hat\n\n**Symptom:** `R-hat > 1.01`\n\n**Solutions:**\n1. Run longer chains: `tune=2000, draws=5000`\n2. Check for multimodality\n3. Improve initialization with ADVI\n\n### Slow Sampling\n\n**Solutions:**\n1. Use ADVI initialization\n2. Reduce model complexity\n3. Increase parallelization: `cores=8, chains=8`\n4. Use variational inference if appropriate\n\n## Best Practices\n\n### Model Building\n\n1. **Always standardize predictors** for better sampling\n2. **Use weakly informative priors** (not flat)\n3. **Use named dimensions** (`dims`) for clarity\n4. **Non-centered parameterization** for hierarchical models\n5. **Check prior predictive** before fitting\n\n### Sampling\n\n1. **Run multiple chains** (at least 4) for convergence\n2. **Use `target_accept=0.9`** as baseline (higher if needed)\n3. **Include `log_likelihood=True`** for model comparison\n4. **Set random seed** for reproducibility\n\n### Validation\n\n1. **Check diagnostics** before interpretation (R-hat, ESS, divergences)\n2. **Posterior predictive check** for model validation\n3. **Compare multiple models** when appropriate\n4. **Report uncertainty** (HDI intervals, not just point estimates)\n\n### Workflow\n\n1. Start simple, add complexity gradually\n2. Prior predictive check → Fit → Diagnostics → Posterior predictive check\n3. Iterate on model specification based on checks\n4. Document assumptions and prior choices\n\n## Resources\n\nThis skill includes:\n\n### References (`references\u002F`)\n\n- **`distributions.md`**: Comprehensive catalog of PyMC distributions organized by category (continuous, discrete, multivariate, mixture, time series). Use when selecting priors or likelihoods.\n\n- **`sampling_inference.md`**: Detailed guide to sampling algorithms (NUTS, Metropolis, SMC), variational inference (ADVI, SVGD), and handling sampling issues. Use when encountering convergence problems or choosing inference methods.\n\n- **`workflows.md`**: Complete workflow examples and code patterns for common model types, data preparation, prior selection, and model validation. Use as a cookbook for standard Bayesian analyses.\n\n### Scripts (`scripts\u002F`)\n\n- **`model_diagnostics.py`**: Automated diagnostic checking and report generation. Functions: `check_diagnostics()` for quick checks, `create_diagnostic_report()` for comprehensive analysis with plots.\n\n- **`model_comparison.py`**: Model comparison utilities using LOO\u002FWAIC. Functions: `compare_models()`, `check_loo_reliability()`, `model_averaging()`.\n\n### Templates (`assets\u002F`)\n\n- **`linear_regression_template.py`**: Complete template for Bayesian linear regression with full workflow (data prep, prior checks, fitting, diagnostics, predictions).\n\n- **`hierarchical_model_template.py`**: Complete template for hierarchical\u002Fmultilevel models with non-centered parameterization and group-level analysis.\n\n## Quick Reference\n\n### Model Building\n```python\nwith pm.Model(coords={'var': names}) as model:\n    # Priors\n    param = pm.Normal('param', mu=0, sigma=1, dims='var')\n    # Likelihood\n    y = pm.Normal('y', mu=..., sigma=..., observed=data)\n```\n\n### Sampling\n```python\nidata = pm.sample(draws=2000, tune=1000, chains=4, target_accept=0.9)\n```\n\n### Diagnostics\n```python\nfrom scripts.model_diagnostics import check_diagnostics\ncheck_diagnostics(idata)\n```\n\n### Model Comparison\n```python\nfrom scripts.model_comparison import compare_models\ncompare_models({'m1': idata1, 'm2': idata2}, ic='loo')\n```\n\n### Predictions\n```python\nwith model:\n    pm.set_data({'X': X_new})\n    pred = pm.sample_posterior_predictive(idata.posterior)\n```\n\n## Additional Notes\n\n- PyMC integrates with ArviZ for visualization and diagnostics\n- Use `pm.model_to_graphviz(model)` to visualize model structure\n- Save results with `idata.to_netcdf('results.nc')`\n- Load with `az.from_netcdf('results.nc')`\n- For very large models, consider minibatch ADVI or data subsampling\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002FK-Dense-AI\u002Fclaude-scientific-skills\u002Fpymc",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":37,"prompt":47,"zipAvailable":48},[38,41,44],{"tool":39,"command":40},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill pymc",{"tool":42,"command":43},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill pymc",{"tool":45,"command":46},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill pymc","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FK-Dense-AI\u002Fclaude-scientific-skills\u002Fpymc\u002FSKILL.md",true,[50,56,62,66,72,76,80,84,88,92,96],{"path":51,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":54,"sourceHtmlUrl":55},"forms.md","REFERENCE","参考文档",11854,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.rovodev\u002Fskills\u002Fpdf\u002Fforms.md",{"path":57,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":61},"LICENSE.txt","LICENSE","许可证",1467,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.rovodev\u002Fskills\u002Fpdf\u002FLICENSE.txt",{"path":63,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":64,"sourceHtmlUrl":65},"reference.md",16692,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.rovodev\u002Fskills\u002Fpdf\u002Freference.md",{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"scripts\u002Fcheck_bounding_boxes.py","SCRIPT","脚本",2774,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.rovodev\u002Fskills\u002Fpdf\u002Fscripts\u002Fcheck_bounding_boxes.py",{"path":73,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":74,"sourceHtmlUrl":75},"scripts\u002Fcheck_fillable_fields.py",268,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.rovodev\u002Fskills\u002Fpdf\u002Fscripts\u002Fcheck_fillable_fields.py",{"path":77,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":78,"sourceHtmlUrl":79},"scripts\u002Fconvert_pdf_to_images.py",1008,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.rovodev\u002Fskills\u002Fpdf\u002Fscripts\u002Fconvert_pdf_to_images.py",{"path":81,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":82,"sourceHtmlUrl":83},"scripts\u002Fcreate_validation_image.py",1258,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.rovodev\u002Fskills\u002Fpdf\u002Fscripts\u002Fcreate_validation_image.py",{"path":85,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":86,"sourceHtmlUrl":87},"scripts\u002Fextract_form_field_info.py",4300,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.rovodev\u002Fskills\u002Fpdf\u002Fscripts\u002Fextract_form_field_info.py",{"path":89,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":90,"sourceHtmlUrl":91},"scripts\u002Fextract_form_structure.py",3945,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.rovodev\u002Fskills\u002Fpdf\u002Fscripts\u002Fextract_form_structure.py",{"path":93,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":94,"sourceHtmlUrl":95},"scripts\u002Ffill_fillable_fields.py",3819,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.rovodev\u002Fskills\u002Fpdf\u002Fscripts\u002Ffill_fillable_fields.py",{"path":97,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":98,"sourceHtmlUrl":99},"scripts\u002Ffill_pdf_form_with_annotations.py",3235,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.rovodev\u002Fskills\u002Fpdf\u002Fscripts\u002Ffill_pdf_form_with_annotations.py",[101,111,121,130,136,143],{"skillNo":102,"name":103,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":107,"publishedAt":23},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[106],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[108,109,110],"model","model hierarchy","model hierarchy skill",{"skillNo":112,"name":113,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":117,"publishedAt":23},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[116],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[118,119,120],"MCP","zoom","zoom mcp",{"skillNo":122,"name":123,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"publishedAt":23},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[127,128,129,119],"sdk","zoom apps sdk","apps",{"skillNo":131,"name":132,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":23},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[132],{"skillNo":137,"name":138,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":142,"publishedAt":23},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[141],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[138],{"skillNo":144,"name":145,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":23},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[145]]