[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KQ43MKH1FAYMS5ATCJYZM1":3,"skill-same:01M6KQ43MKH1FAYMS5ATCJYZM1":92},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":58,"commitSha":59,"skillDirectory":60,"forksCount":13,"repositoryHtmlUrl":61,"repositoryHomepageUrl":6,"ownerHtmlUrl":62,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":63,"install":64,"resources":77},"01M6KQ43MKH1FAYMS5ATCJYZM1","mlflow",null,"Track ML experiments, manage model registry with versioning, deploy models to production, and reproduce experiments with MLflow - framework-agnostic ML lifecycle platform","endman100\u002Fskill-router-nexus","endman100","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F31997019?v=4","01M6KPDX17BYDWW4RRB0TNGGMX","01M6KPDX64Y2QBEWVFG5W5PWPF",0,"MIT","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FAI-MLOps\u002Fmlflow\u002Fmlflow\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[5,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],"track","tensorflow","orchestra","sqlalchemy","Model Versioning","ML Lifecycle","Model Registry","Experiment Tracking","platform","scikit-learn","experiment","versioning","model","boto3","framework","registry","learn","pytorch","experiments","2026-11-10 10:12:30",false,"---\nname: mlflow\ndescription: Track ML experiments, manage model registry with versioning, deploy models to production, and reproduce experiments with MLflow - framework-agnostic ML lifecycle platform\nversion: 1.0.0\nauthor: Orchestra Research\nlicense: MIT\ntags: [MLOps, MLflow, Experiment Tracking, Model Registry, ML Lifecycle, Deployment, Model Versioning, PyTorch, TensorFlow, Scikit-Learn, HuggingFace]\ndependencies: [mlflow, sqlalchemy, boto3]\n---\n\n# MLflow: ML Lifecycle Management Platform\n\n## When to Use This Skill\n\nUse MLflow when you need to:\n- **Track ML experiments** with parameters, metrics, and artifacts\n- **Manage model registry** with versioning and stage transitions\n- **Deploy models** to various platforms (local, cloud, serving)\n- **Reproduce experiments** with project configurations\n- **Compare model versions** and performance metrics\n- **Collaborate** on ML projects with team workflows\n- **Integrate** with any ML framework (framework-agnostic)\n\n**Users**: 20,000+ organizations | **GitHub Stars**: 23k+ | **License**: Apache 2.0\n\n## Installation\n\n```bash\n# Install MLflow\npip install mlflow\n\n# Install with extras\npip install mlflow[extras]  # Includes SQLAlchemy, boto3, etc.\n\n# Start MLflow UI\nmlflow ui\n\n# Access at http:\u002F\u002Flocalhost:5000\n```\n\n## Quick Start\n\n### Basic Tracking\n\n```python\nimport mlflow\n\n# Start a run\nwith mlflow.start_run():\n    # Log parameters\n    mlflow.log_param(\"learning_rate\", 0.001)\n    mlflow.log_param(\"batch_size\", 32)\n\n    # Your training code\n    model = train_model()\n\n    # Log metrics\n    mlflow.log_metric(\"train_loss\", 0.15)\n    mlflow.log_metric(\"val_accuracy\", 0.92)\n\n    # Log model\n    mlflow.sklearn.log_model(model, \"model\")\n```\n\n### Autologging (Automatic Tracking)\n\n```python\nimport mlflow\nfrom sklearn.ensemble import RandomForestClassifier\n\n# Enable autologging\nmlflow.autolog()\n\n# Train (automatically logged)\nmodel = RandomForestClassifier(n_estimators=100, max_depth=5)\nmodel.fit(X_train, y_train)\n\n# Metrics, parameters, and model logged automatically!\n```\n\n## Core Concepts\n\n### 1. Experiments and Runs\n\n**Experiment**: Logical container for related runs\n**Run**: Single execution of ML code (parameters, metrics, artifacts)\n\n```python\nimport mlflow\n\n# Create\u002Fset experiment\nmlflow.set_experiment(\"my-experiment\")\n\n# Start a run\nwith mlflow.start_run(run_name=\"baseline-model\"):\n    # Log params\n    mlflow.log_param(\"model\", \"ResNet50\")\n    mlflow.log_param(\"epochs\", 10)\n\n    # Train\n    model = train()\n\n    # Log metrics\n    mlflow.log_metric(\"accuracy\", 0.95)\n\n    # Log model\n    mlflow.pytorch.log_model(model, \"model\")\n\n# Run ID is automatically generated\nprint(f\"Run ID: {mlflow.active_run().info.run_id}\")\n```\n\n### 2. Logging Parameters\n\n```python\nwith mlflow.start_run():\n    # Single parameter\n    mlflow.log_param(\"learning_rate\", 0.001)\n\n    # Multiple parameters\n    mlflow.log_params({\n        \"batch_size\": 32,\n        \"epochs\": 50,\n        \"optimizer\": \"Adam\",\n        \"dropout\": 0.2\n    })\n\n    # Nested parameters (as dict)\n    config = {\n        \"model\": {\n            \"architecture\": \"ResNet50\",\n            \"pretrained\": True\n        },\n        \"training\": {\n            \"lr\": 0.001,\n            \"weight_decay\": 1e-4\n        }\n    }\n\n    # Log as JSON string or individual params\n    for key, value in config.items():\n        mlflow.log_param(key, str(value))\n```\n\n### 3. Logging Metrics\n\n```python\nwith mlflow.start_run():\n    # Training loop\n    for epoch in range(NUM_EPOCHS):\n        train_loss = train_epoch()\n        val_loss = validate()\n\n        # Log metrics at each step\n        mlflow.log_metric(\"train_loss\", train_loss, step=epoch)\n        mlflow.log_metric(\"val_loss\", val_loss, step=epoch)\n\n        # Log multiple metrics\n        mlflow.log_metrics({\n            \"train_accuracy\": train_acc,\n            \"val_accuracy\": val_acc\n        }, step=epoch)\n\n    # Log final metrics (no step)\n    mlflow.log_metric(\"final_accuracy\", final_acc)\n```\n\n### 4. Logging Artifacts\n\n```python\nwith mlflow.start_run():\n    # Log file\n    model.save('model.pkl')\n    mlflow.log_artifact('model.pkl')\n\n    # Log directory\n    os.makedirs('plots', exist_ok=True)\n    plt.savefig('plots\u002Floss_curve.png')\n    mlflow.log_artifacts('plots')\n\n    # Log text\n    with open('config.txt', 'w') as f:\n        f.write(str(config))\n    mlflow.log_artifact('config.txt')\n\n    # Log dict as JSON\n    mlflow.log_dict({'config': config}, 'config.json')\n```\n\n### 5. Logging Models\n\n```python\n# PyTorch\nimport mlflow.pytorch\n\nwith mlflow.start_run():\n    model = train_pytorch_model()\n    mlflow.pytorch.log_model(model, \"model\")\n\n# Scikit-learn\nimport mlflow.sklearn\n\nwith mlflow.start_run():\n    model = train_sklearn_model()\n    mlflow.sklearn.log_model(model, \"model\")\n\n# Keras\u002FTensorFlow\nimport mlflow.keras\n\nwith mlflow.start_run():\n    model = train_keras_model()\n    mlflow.keras.log_model(model, \"model\")\n\n# HuggingFace Transformers\nimport mlflow.transformers\n\nwith mlflow.start_run():\n    mlflow.transformers.log_model(\n        transformers_model={\n            \"model\": model,\n            \"tokenizer\": tokenizer\n        },\n        artifact_path=\"model\"\n    )\n```\n\n## Autologging\n\nAutomatically log metrics, parameters, and models for popular frameworks.\n\n### Enable Autologging\n\n```python\nimport mlflow\n\n# Enable for all supported frameworks\nmlflow.autolog()\n\n# Or enable for specific framework\nmlflow.sklearn.autolog()\nmlflow.pytorch.autolog()\nmlflow.keras.autolog()\nmlflow.xgboost.autolog()\n```\n\n### Autologging with Scikit-learn\n\n```python\nimport mlflow\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.model_selection import train_test_split\n\n# Enable autologging\nmlflow.sklearn.autolog()\n\n# Split data\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n\n# Train (automatically logs params, metrics, model)\nwith mlflow.start_run():\n    model = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=42)\n    model.fit(X_train, y_train)\n\n    # Metrics like accuracy, f1_score logged automatically\n    # Model logged automatically\n    # Training duration logged\n```\n\n### Autologging with PyTorch Lightning\n\n```python\nimport mlflow\nimport pytorch_lightning as pl\n\n# Enable autologging\nmlflow.pytorch.autolog()\n\n# Train\nwith mlflow.start_run():\n    trainer = pl.Trainer(max_epochs=10)\n    trainer.fit(model, datamodule=dm)\n\n    # Hyperparameters logged\n    # Training metrics logged\n    # Best model checkpoint logged\n```\n\n## Model Registry\n\nManage model lifecycle with versioning and stage transitions.\n\n### Register Model\n\n```python\nimport mlflow\n\n# Log and register model\nwith mlflow.start_run():\n    model = train_model()\n\n    # Log model\n    mlflow.sklearn.log_model(\n        model,\n        \"model\",\n        registered_model_name=\"my-classifier\"  # Register immediately\n    )\n\n# Or register later\nrun_id = \"abc123\"\nmodel_uri = f\"runs:\u002F{run_id}\u002Fmodel\"\nmlflow.register_model(model_uri, \"my-classifier\")\n```\n\n### Model Stages\n\nTransition models between stages: **None** → **Staging** → **Production** → **Archived**\n\n```python\nfrom mlflow.tracking import MlflowClient\n\nclient = MlflowClient()\n\n# Promote to staging\nclient.transition_model_version_stage(\n    name=\"my-classifier\",\n    version=3,\n    stage=\"Staging\"\n)\n\n# Promote to production\nclient.transition_model_version_stage(\n    name=\"my-classifier\",\n    version=3,\n    stage=\"Production\",\n    archive_existing_versions=True  # Archive old production versions\n)\n\n# Archive model\nclient.transition_model_version_stage(\n    name=\"my-classifier\",\n    version=2,\n    stage=\"Archived\"\n)\n```\n\n### Load Model from Registry\n\n```python\nimport mlflow.pyfunc\n\n# Load latest production model\nmodel = mlflow.pyfunc.load_model(\"models:\u002Fmy-classifier\u002FProduction\")\n\n# Load specific version\nmodel = mlflow.pyfunc.load_model(\"models:\u002Fmy-classifier\u002F3\")\n\n# Load from staging\nmodel = mlflow.pyfunc.load_model(\"models:\u002Fmy-classifier\u002FStaging\")\n\n# Use model\npredictions = model.predict(X_test)\n```\n\n### Model Versioning\n\n```python\nclient = MlflowClient()\n\n# List all versions\nversions = client.search_model_versions(\"name='my-classifier'\")\n\nfor v in versions:\n    print(f\"Version {v.version}: {v.current_stage}\")\n\n# Get latest version by stage\nlatest_prod = client.get_latest_versions(\"my-classifier\", stages=[\"Production\"])\nlatest_staging = client.get_latest_versions(\"my-classifier\", stages=[\"Staging\"])\n\n# Get model version details\nversion_info = client.get_model_version(name=\"my-classifier\", version=\"3\")\nprint(f\"Run ID: {version_info.run_id}\")\nprint(f\"Stage: {version_info.current_stage}\")\nprint(f\"Tags: {version_info.tags}\")\n```\n\n### Model Annotations\n\n```python\nclient = MlflowClient()\n\n# Add description\nclient.update_model_version(\n    name=\"my-classifier\",\n    version=\"3\",\n    description=\"ResNet50 classifier trained on 1M images with 95% accuracy\"\n)\n\n# Add tags\nclient.set_model_version_tag(\n    name=\"my-classifier\",\n    version=\"3\",\n    key=\"validation_status\",\n    value=\"approved\"\n)\n\nclient.set_model_version_tag(\n    name=\"my-classifier\",\n    version=\"3\",\n    key=\"deployed_date\",\n    value=\"2025-01-15\"\n)\n```\n\n## Searching Runs\n\nFind runs programmatically.\n\n```python\nfrom mlflow.tracking import MlflowClient\n\nclient = MlflowClient()\n\n# Search all runs in experiment\nexperiment_id = client.get_experiment_by_name(\"my-experiment\").experiment_id\nruns = client.search_runs(\n    experiment_ids=[experiment_id],\n    filter_string=\"metrics.accuracy > 0.9\",\n    order_by=[\"metrics.accuracy DESC\"],\n    max_results=10\n)\n\nfor run in runs:\n    print(f\"Run ID: {run.info.run_id}\")\n    print(f\"Accuracy: {run.data.metrics['accuracy']}\")\n    print(f\"Params: {run.data.params}\")\n\n# Search with complex filters\nruns = client.search_runs(\n    experiment_ids=[experiment_id],\n    filter_string=\"\"\"\n        metrics.accuracy > 0.9 AND\n        params.model = 'ResNet50' AND\n        tags.dataset = 'ImageNet'\n    \"\"\",\n    order_by=[\"metrics.f1_score DESC\"]\n)\n```\n\n## Integration Examples\n\n### PyTorch\n\n```python\nimport mlflow\nimport torch\nimport torch.nn as nn\n\n# Enable autologging\nmlflow.pytorch.autolog()\n\nwith mlflow.start_run():\n    # Log config\n    config = {\n        \"lr\": 0.001,\n        \"epochs\": 10,\n        \"batch_size\": 32\n    }\n    mlflow.log_params(config)\n\n    # Train\n    model = create_model()\n    optimizer = torch.optim.Adam(model.parameters(), lr=config[\"lr\"])\n\n    for epoch in range(config[\"epochs\"]):\n        train_loss = train_epoch(model, optimizer, train_loader)\n        val_loss, val_acc = validate(model, val_loader)\n\n        # Log metrics\n        mlflow.log_metrics({\n            \"train_loss\": train_loss,\n            \"val_loss\": val_loss,\n            \"val_accuracy\": val_acc\n        }, step=epoch)\n\n    # Log model\n    mlflow.pytorch.log_model(model, \"model\")\n```\n\n### HuggingFace Transformers\n\n```python\nimport mlflow\nfrom transformers import Trainer, TrainingArguments\n\n# Enable autologging\nmlflow.transformers.autolog()\n\ntraining_args = TrainingArguments(\n    output_dir=\".\u002Fresults\",\n    num_train_epochs=3,\n    per_device_train_batch_size=16,\n    evaluation_strategy=\"epoch\",\n    save_strategy=\"epoch\",\n    load_best_model_at_end=True\n)\n\n# Start MLflow run\nwith mlflow.start_run():\n    trainer = Trainer(\n        model=model,\n        args=training_args,\n        train_dataset=train_dataset,\n        eval_dataset=eval_dataset\n    )\n\n    # Train (automatically logged)\n    trainer.train()\n\n    # Log final model to registry\n    mlflow.transformers.log_model(\n        transformers_model={\n            \"model\": trainer.model,\n            \"tokenizer\": tokenizer\n        },\n        artifact_path=\"model\",\n        registered_model_name=\"hf-classifier\"\n    )\n```\n\n### XGBoost\n\n```python\nimport mlflow\nimport xgboost as xgb\n\n# Enable autologging\nmlflow.xgboost.autolog()\n\nwith mlflow.start_run():\n    dtrain = xgb.DMatrix(X_train, label=y_train)\n    dval = xgb.DMatrix(X_val, label=y_val)\n\n    params = {\n        'max_depth': 6,\n        'learning_rate': 0.1,\n        'objective': 'binary:logistic',\n        'eval_metric': ['logloss', 'auc']\n    }\n\n    # Train (automatically logged)\n    model = xgb.train(\n        params,\n        dtrain,\n        num_boost_round=100,\n        evals=[(dtrain, 'train'), (dval, 'val')],\n        early_stopping_rounds=10\n    )\n\n    # Model and metrics logged automatically\n```\n\n## Best Practices\n\n### 1. Organize with Experiments\n\n```python\n# ✅ Good: Separate experiments for different tasks\nmlflow.set_experiment(\"sentiment-analysis\")\nmlflow.set_experiment(\"image-classification\")\nmlflow.set_experiment(\"recommendation-system\")\n\n# ❌ Bad: Everything in one experiment\nmlflow.set_experiment(\"all-models\")\n```\n\n### 2. Use Descriptive Run Names\n\n```python\n# ✅ Good: Descriptive names\nwith mlflow.start_run(run_name=\"resnet50-imagenet-lr0.001-bs32\"):\n    train()\n\n# ❌ Bad: No name (auto-generated UUID)\nwith mlflow.start_run():\n    train()\n```\n\n### 3. Log Comprehensive Metadata\n\n```python\nwith mlflow.start_run():\n    # Log hyperparameters\n    mlflow.log_params({\n        \"learning_rate\": 0.001,\n        \"batch_size\": 32,\n        \"epochs\": 50\n    })\n\n    # Log system info\n    mlflow.set_tags({\n        \"dataset\": \"ImageNet\",\n        \"framework\": \"PyTorch 2.0\",\n        \"gpu\": \"A100\",\n        \"git_commit\": get_git_commit()\n    })\n\n    # Log data info\n    mlflow.log_param(\"train_samples\", len(train_dataset))\n    mlflow.log_param(\"val_samples\", len(val_dataset))\n```\n\n### 4. Track Model Lineage\n\n```python\n# Link runs to understand lineage\nwith mlflow.start_run(run_name=\"preprocessing\"):\n    data = preprocess()\n    mlflow.log_artifact(\"data.csv\")\n    preprocessing_run_id = mlflow.active_run().info.run_id\n\nwith mlflow.start_run(run_name=\"training\"):\n    # Reference parent run\n    mlflow.set_tag(\"preprocessing_run_id\", preprocessing_run_id)\n    model = train(data)\n```\n\n### 5. Use Model Registry for Deployment\n\n```python\n# ✅ Good: Use registry for production\nmodel_uri = \"models:\u002Fmy-classifier\u002FProduction\"\nmodel = mlflow.pyfunc.load_model(model_uri)\n\n# ❌ Bad: Hard-code run IDs\nmodel_uri = \"runs:\u002Fabc123\u002Fmodel\"\nmodel = mlflow.pyfunc.load_model(model_uri)\n```\n\n## Deployment\n\n### Serve Model Locally\n\n```bash\n# Serve registered model\nmlflow models serve -m \"models:\u002Fmy-classifier\u002FProduction\" -p 5001\n\n# Serve from run\nmlflow models serve -m \"runs:\u002F\u003CRUN_ID>\u002Fmodel\" -p 5001\n\n# Test endpoint\ncurl http:\u002F\u002F127.0.0.1:5001\u002Finvocations -H 'Content-Type: application\u002Fjson' -d '{\n  \"inputs\": [[1.0, 2.0, 3.0, 4.0]]\n}'\n```\n\n### Deploy to Cloud\n\n```bash\n# Deploy to AWS SageMaker\nmlflow sagemaker deploy -m \"models:\u002Fmy-classifier\u002FProduction\" --region-name us-west-2\n\n# Deploy to Azure ML\nmlflow azureml deploy -m \"models:\u002Fmy-classifier\u002FProduction\"\n```\n\n## Configuration\n\n### Tracking Server\n\n```bash\n# Start tracking server with backend store\nmlflow server \\\n  --backend-store-uri postgresql:\u002F\u002Fuser:password@localhost\u002Fmlflow \\\n  --default-artifact-root s3:\u002F\u002Fmy-bucket\u002Fmlflow \\\n  --host 0.0.0.0 \\\n  --port 5000\n```\n\n### Client Configuration\n\n```python\nimport mlflow\n\n# Set tracking URI\nmlflow.set_tracking_uri(\"http:\u002F\u002Flocalhost:5000\")\n\n# Or use environment variable\n# export MLFLOW_TRACKING_URI=http:\u002F\u002Flocalhost:5000\n```\n\n## Resources\n\n- **Documentation**: https:\u002F\u002Fmlflow.org\u002Fdocs\u002Flatest\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Fmlflow\u002Fmlflow (23k+ stars)\n- **Examples**: https:\u002F\u002Fgithub.com\u002Fmlflow\u002Fmlflow\u002Ftree\u002Fmaster\u002Fexamples\n- **Community**: https:\u002F\u002Fmlflow.org\u002Fcommunity\n\n## See Also\n\n- `references\u002Ftracking.md` - Comprehensive tracking guide\n- `references\u002Fmodel-registry.md` - Model lifecycle management\n- `references\u002Fdeployment.md` - Production deployment patterns\n\n\n","# MLflow: ML Lifecycle Management Platform\n\n## When to Use This Skill\n\nUse MLflow when you need to:\n- **Track ML experiments** with parameters, metrics, and artifacts\n- **Manage model registry** with versioning and stage transitions\n- **Deploy models** to various platforms (local, cloud, serving)\n- **Reproduce experiments** with project configurations\n- **Compare model versions** and performance metrics\n- **Collaborate** on ML projects with team workflows\n- **Integrate** with any ML framework (framework-agnostic)\n\n**Users**: 20,000+ organizations | **GitHub Stars**: 23k+ | **License**: Apache 2.0\n\n## Installation\n\n```bash\n# Install MLflow\npip install mlflow\n\n# Install with extras\npip install mlflow[extras]  # Includes SQLAlchemy, boto3, etc.\n\n# Start MLflow UI\nmlflow ui\n\n# Access at http:\u002F\u002Flocalhost:5000\n```\n\n## Quick Start\n\n### Basic Tracking\n\n```python\nimport mlflow\n\n# Start a run\nwith mlflow.start_run():\n    # Log parameters\n    mlflow.log_param(\"learning_rate\", 0.001)\n    mlflow.log_param(\"batch_size\", 32)\n\n    # Your training code\n    model = train_model()\n\n    # Log metrics\n    mlflow.log_metric(\"train_loss\", 0.15)\n    mlflow.log_metric(\"val_accuracy\", 0.92)\n\n    # Log model\n    mlflow.sklearn.log_model(model, \"model\")\n```\n\n### Autologging (Automatic Tracking)\n\n```python\nimport mlflow\nfrom sklearn.ensemble import RandomForestClassifier\n\n# Enable autologging\nmlflow.autolog()\n\n# Train (automatically logged)\nmodel = RandomForestClassifier(n_estimators=100, max_depth=5)\nmodel.fit(X_train, y_train)\n\n# Metrics, parameters, and model logged automatically!\n```\n\n## Core Concepts\n\n### 1. Experiments and Runs\n\n**Experiment**: Logical container for related runs\n**Run**: Single execution of ML code (parameters, metrics, artifacts)\n\n```python\nimport mlflow\n\n# Create\u002Fset experiment\nmlflow.set_experiment(\"my-experiment\")\n\n# Start a run\nwith mlflow.start_run(run_name=\"baseline-model\"):\n    # Log params\n    mlflow.log_param(\"model\", \"ResNet50\")\n    mlflow.log_param(\"epochs\", 10)\n\n    # Train\n    model = train()\n\n    # Log metrics\n    mlflow.log_metric(\"accuracy\", 0.95)\n\n    # Log model\n    mlflow.pytorch.log_model(model, \"model\")\n\n# Run ID is automatically generated\nprint(f\"Run ID: {mlflow.active_run().info.run_id}\")\n```\n\n### 2. Logging Parameters\n\n```python\nwith mlflow.start_run():\n    # Single parameter\n    mlflow.log_param(\"learning_rate\", 0.001)\n\n    # Multiple parameters\n    mlflow.log_params({\n        \"batch_size\": 32,\n        \"epochs\": 50,\n        \"optimizer\": \"Adam\",\n        \"dropout\": 0.2\n    })\n\n    # Nested parameters (as dict)\n    config = {\n        \"model\": {\n            \"architecture\": \"ResNet50\",\n            \"pretrained\": True\n        },\n        \"training\": {\n            \"lr\": 0.001,\n            \"weight_decay\": 1e-4\n        }\n    }\n\n    # Log as JSON string or individual params\n    for key, value in config.items():\n        mlflow.log_param(key, str(value))\n```\n\n### 3. Logging Metrics\n\n```python\nwith mlflow.start_run():\n    # Training loop\n    for epoch in range(NUM_EPOCHS):\n        train_loss = train_epoch()\n        val_loss = validate()\n\n        # Log metrics at each step\n        mlflow.log_metric(\"train_loss\", train_loss, step=epoch)\n        mlflow.log_metric(\"val_loss\", val_loss, step=epoch)\n\n        # Log multiple metrics\n        mlflow.log_metrics({\n            \"train_accuracy\": train_acc,\n            \"val_accuracy\": val_acc\n        }, step=epoch)\n\n    # Log final metrics (no step)\n    mlflow.log_metric(\"final_accuracy\", final_acc)\n```\n\n### 4. Logging Artifacts\n\n```python\nwith mlflow.start_run():\n    # Log file\n    model.save('model.pkl')\n    mlflow.log_artifact('model.pkl')\n\n    # Log directory\n    os.makedirs('plots', exist_ok=True)\n    plt.savefig('plots\u002Floss_curve.png')\n    mlflow.log_artifacts('plots')\n\n    # Log text\n    with open('config.txt', 'w') as f:\n        f.write(str(config))\n    mlflow.log_artifact('config.txt')\n\n    # Log dict as JSON\n    mlflow.log_dict({'config': config}, 'config.json')\n```\n\n### 5. Logging Models\n\n```python\n# PyTorch\nimport mlflow.pytorch\n\nwith mlflow.start_run():\n    model = train_pytorch_model()\n    mlflow.pytorch.log_model(model, \"model\")\n\n# Scikit-learn\nimport mlflow.sklearn\n\nwith mlflow.start_run():\n    model = train_sklearn_model()\n    mlflow.sklearn.log_model(model, \"model\")\n\n# Keras\u002FTensorFlow\nimport mlflow.keras\n\nwith mlflow.start_run():\n    model = train_keras_model()\n    mlflow.keras.log_model(model, \"model\")\n\n# HuggingFace Transformers\nimport mlflow.transformers\n\nwith mlflow.start_run():\n    mlflow.transformers.log_model(\n        transformers_model={\n            \"model\": model,\n            \"tokenizer\": tokenizer\n        },\n        artifact_path=\"model\"\n    )\n```\n\n## Autologging\n\nAutomatically log metrics, parameters, and models for popular frameworks.\n\n### Enable Autologging\n\n```python\nimport mlflow\n\n# Enable for all supported frameworks\nmlflow.autolog()\n\n# Or enable for specific framework\nmlflow.sklearn.autolog()\nmlflow.pytorch.autolog()\nmlflow.keras.autolog()\nmlflow.xgboost.autolog()\n```\n\n### Autologging with Scikit-learn\n\n```python\nimport mlflow\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.model_selection import train_test_split\n\n# Enable autologging\nmlflow.sklearn.autolog()\n\n# Split data\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n\n# Train (automatically logs params, metrics, model)\nwith mlflow.start_run():\n    model = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=42)\n    model.fit(X_train, y_train)\n\n    # Metrics like accuracy, f1_score logged automatically\n    # Model logged automatically\n    # Training duration logged\n```\n\n### Autologging with PyTorch Lightning\n\n```python\nimport mlflow\nimport pytorch_lightning as pl\n\n# Enable autologging\nmlflow.pytorch.autolog()\n\n# Train\nwith mlflow.start_run():\n    trainer = pl.Trainer(max_epochs=10)\n    trainer.fit(model, datamodule=dm)\n\n    # Hyperparameters logged\n    # Training metrics logged\n    # Best model checkpoint logged\n```\n\n## Model Registry\n\nManage model lifecycle with versioning and stage transitions.\n\n### Register Model\n\n```python\nimport mlflow\n\n# Log and register model\nwith mlflow.start_run():\n    model = train_model()\n\n    # Log model\n    mlflow.sklearn.log_model(\n        model,\n        \"model\",\n        registered_model_name=\"my-classifier\"  # Register immediately\n    )\n\n# Or register later\nrun_id = \"abc123\"\nmodel_uri = f\"runs:\u002F{run_id}\u002Fmodel\"\nmlflow.register_model(model_uri, \"my-classifier\")\n```\n\n### Model Stages\n\nTransition models between stages: **None** → **Staging** → **Production** → **Archived**\n\n```python\nfrom mlflow.tracking import MlflowClient\n\nclient = MlflowClient()\n\n# Promote to staging\nclient.transition_model_version_stage(\n    name=\"my-classifier\",\n    version=3,\n    stage=\"Staging\"\n)\n\n# Promote to production\nclient.transition_model_version_stage(\n    name=\"my-classifier\",\n    version=3,\n    stage=\"Production\",\n    archive_existing_versions=True  # Archive old production versions\n)\n\n# Archive model\nclient.transition_model_version_stage(\n    name=\"my-classifier\",\n    version=2,\n    stage=\"Archived\"\n)\n```\n\n### Load Model from Registry\n\n```python\nimport mlflow.pyfunc\n\n# Load latest production model\nmodel = mlflow.pyfunc.load_model(\"models:\u002Fmy-classifier\u002FProduction\")\n\n# Load specific version\nmodel = mlflow.pyfunc.load_model(\"models:\u002Fmy-classifier\u002F3\")\n\n# Load from staging\nmodel = mlflow.pyfunc.load_model(\"models:\u002Fmy-classifier\u002FStaging\")\n\n# Use model\npredictions = model.predict(X_test)\n```\n\n### Model Versioning\n\n```python\nclient = MlflowClient()\n\n# List all versions\nversions = client.search_model_versions(\"name='my-classifier'\")\n\nfor v in versions:\n    print(f\"Version {v.version}: {v.current_stage}\")\n\n# Get latest version by stage\nlatest_prod = client.get_latest_versions(\"my-classifier\", stages=[\"Production\"])\nlatest_staging = client.get_latest_versions(\"my-classifier\", stages=[\"Staging\"])\n\n# Get model version details\nversion_info = client.get_model_version(name=\"my-classifier\", version=\"3\")\nprint(f\"Run ID: {version_info.run_id}\")\nprint(f\"Stage: {version_info.current_stage}\")\nprint(f\"Tags: {version_info.tags}\")\n```\n\n### Model Annotations\n\n```python\nclient = MlflowClient()\n\n# Add description\nclient.update_model_version(\n    name=\"my-classifier\",\n    version=\"3\",\n    description=\"ResNet50 classifier trained on 1M images with 95% accuracy\"\n)\n\n# Add tags\nclient.set_model_version_tag(\n    name=\"my-classifier\",\n    version=\"3\",\n    key=\"validation_status\",\n    value=\"approved\"\n)\n\nclient.set_model_version_tag(\n    name=\"my-classifier\",\n    version=\"3\",\n    key=\"deployed_date\",\n    value=\"2025-01-15\"\n)\n```\n\n## Searching Runs\n\nFind runs programmatically.\n\n```python\nfrom mlflow.tracking import MlflowClient\n\nclient = MlflowClient()\n\n# Search all runs in experiment\nexperiment_id = client.get_experiment_by_name(\"my-experiment\").experiment_id\nruns = client.search_runs(\n    experiment_ids=[experiment_id],\n    filter_string=\"metrics.accuracy > 0.9\",\n    order_by=[\"metrics.accuracy DESC\"],\n    max_results=10\n)\n\nfor run in runs:\n    print(f\"Run ID: {run.info.run_id}\")\n    print(f\"Accuracy: {run.data.metrics['accuracy']}\")\n    print(f\"Params: {run.data.params}\")\n\n# Search with complex filters\nruns = client.search_runs(\n    experiment_ids=[experiment_id],\n    filter_string=\"\"\"\n        metrics.accuracy > 0.9 AND\n        params.model = 'ResNet50' AND\n        tags.dataset = 'ImageNet'\n    \"\"\",\n    order_by=[\"metrics.f1_score DESC\"]\n)\n```\n\n## Integration Examples\n\n### PyTorch\n\n```python\nimport mlflow\nimport torch\nimport torch.nn as nn\n\n# Enable autologging\nmlflow.pytorch.autolog()\n\nwith mlflow.start_run():\n    # Log config\n    config = {\n        \"lr\": 0.001,\n        \"epochs\": 10,\n        \"batch_size\": 32\n    }\n    mlflow.log_params(config)\n\n    # Train\n    model = create_model()\n    optimizer = torch.optim.Adam(model.parameters(), lr=config[\"lr\"])\n\n    for epoch in range(config[\"epochs\"]):\n        train_loss = train_epoch(model, optimizer, train_loader)\n        val_loss, val_acc = validate(model, val_loader)\n\n        # Log metrics\n        mlflow.log_metrics({\n            \"train_loss\": train_loss,\n            \"val_loss\": val_loss,\n            \"val_accuracy\": val_acc\n        }, step=epoch)\n\n    # Log model\n    mlflow.pytorch.log_model(model, \"model\")\n```\n\n### HuggingFace Transformers\n\n```python\nimport mlflow\nfrom transformers import Trainer, TrainingArguments\n\n# Enable autologging\nmlflow.transformers.autolog()\n\ntraining_args = TrainingArguments(\n    output_dir=\".\u002Fresults\",\n    num_train_epochs=3,\n    per_device_train_batch_size=16,\n    evaluation_strategy=\"epoch\",\n    save_strategy=\"epoch\",\n    load_best_model_at_end=True\n)\n\n# Start MLflow run\nwith mlflow.start_run():\n    trainer = Trainer(\n        model=model,\n        args=training_args,\n        train_dataset=train_dataset,\n        eval_dataset=eval_dataset\n    )\n\n    # Train (automatically logged)\n    trainer.train()\n\n    # Log final model to registry\n    mlflow.transformers.log_model(\n        transformers_model={\n            \"model\": trainer.model,\n            \"tokenizer\": tokenizer\n        },\n        artifact_path=\"model\",\n        registered_model_name=\"hf-classifier\"\n    )\n```\n\n### XGBoost\n\n```python\nimport mlflow\nimport xgboost as xgb\n\n# Enable autologging\nmlflow.xgboost.autolog()\n\nwith mlflow.start_run():\n    dtrain = xgb.DMatrix(X_train, label=y_train)\n    dval = xgb.DMatrix(X_val, label=y_val)\n\n    params = {\n        'max_depth': 6,\n        'learning_rate': 0.1,\n        'objective': 'binary:logistic',\n        'eval_metric': ['logloss', 'auc']\n    }\n\n    # Train (automatically logged)\n    model = xgb.train(\n        params,\n        dtrain,\n        num_boost_round=100,\n        evals=[(dtrain, 'train'), (dval, 'val')],\n        early_stopping_rounds=10\n    )\n\n    # Model and metrics logged automatically\n```\n\n## Best Practices\n\n### 1. Organize with Experiments\n\n```python\n# ✅ Good: Separate experiments for different tasks\nmlflow.set_experiment(\"sentiment-analysis\")\nmlflow.set_experiment(\"image-classification\")\nmlflow.set_experiment(\"recommendation-system\")\n\n# ❌ Bad: Everything in one experiment\nmlflow.set_experiment(\"all-models\")\n```\n\n### 2. Use Descriptive Run Names\n\n```python\n# ✅ Good: Descriptive names\nwith mlflow.start_run(run_name=\"resnet50-imagenet-lr0.001-bs32\"):\n    train()\n\n# ❌ Bad: No name (auto-generated UUID)\nwith mlflow.start_run():\n    train()\n```\n\n### 3. Log Comprehensive Metadata\n\n```python\nwith mlflow.start_run():\n    # Log hyperparameters\n    mlflow.log_params({\n        \"learning_rate\": 0.001,\n        \"batch_size\": 32,\n        \"epochs\": 50\n    })\n\n    # Log system info\n    mlflow.set_tags({\n        \"dataset\": \"ImageNet\",\n        \"framework\": \"PyTorch 2.0\",\n        \"gpu\": \"A100\",\n        \"git_commit\": get_git_commit()\n    })\n\n    # Log data info\n    mlflow.log_param(\"train_samples\", len(train_dataset))\n    mlflow.log_param(\"val_samples\", len(val_dataset))\n```\n\n### 4. Track Model Lineage\n\n```python\n# Link runs to understand lineage\nwith mlflow.start_run(run_name=\"preprocessing\"):\n    data = preprocess()\n    mlflow.log_artifact(\"data.csv\")\n    preprocessing_run_id = mlflow.active_run().info.run_id\n\nwith mlflow.start_run(run_name=\"training\"):\n    # Reference parent run\n    mlflow.set_tag(\"preprocessing_run_id\", preprocessing_run_id)\n    model = train(data)\n```\n\n### 5. Use Model Registry for Deployment\n\n```python\n# ✅ Good: Use registry for production\nmodel_uri = \"models:\u002Fmy-classifier\u002FProduction\"\nmodel = mlflow.pyfunc.load_model(model_uri)\n\n# ❌ Bad: Hard-code run IDs\nmodel_uri = \"runs:\u002Fabc123\u002Fmodel\"\nmodel = mlflow.pyfunc.load_model(model_uri)\n```\n\n## Deployment\n\n### Serve Model Locally\n\n```bash\n# Serve registered model\nmlflow models serve -m \"models:\u002Fmy-classifier\u002FProduction\" -p 5001\n\n# Serve from run\nmlflow models serve -m \"runs:\u002F\u003CRUN_ID>\u002Fmodel\" -p 5001\n\n# Test endpoint\ncurl http:\u002F\u002F127.0.0.1:5001\u002Finvocations -H 'Content-Type: application\u002Fjson' -d '{\n  \"inputs\": [[1.0, 2.0, 3.0, 4.0]]\n}'\n```\n\n### Deploy to Cloud\n\n```bash\n# Deploy to AWS SageMaker\nmlflow sagemaker deploy -m \"models:\u002Fmy-classifier\u002FProduction\" --region-name us-west-2\n\n# Deploy to Azure ML\nmlflow azureml deploy -m \"models:\u002Fmy-classifier\u002FProduction\"\n```\n\n## Configuration\n\n### Tracking Server\n\n```bash\n# Start tracking server with backend store\nmlflow server \\\n  --backend-store-uri postgresql:\u002F\u002Fuser:password@localhost\u002Fmlflow \\\n  --default-artifact-root s3:\u002F\u002Fmy-bucket\u002Fmlflow \\\n  --host 0.0.0.0 \\\n  --port 5000\n```\n\n### Client Configuration\n\n```python\nimport mlflow\n\n# Set tracking URI\nmlflow.set_tracking_uri(\"http:\u002F\u002Flocalhost:5000\")\n\n# Or use environment variable\n# export MLFLOW_TRACKING_URI=http:\u002F\u002Flocalhost:5000\n```\n\n## Resources\n\n- **Documentation**: https:\u002F\u002Fmlflow.org\u002Fdocs\u002Flatest\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Fmlflow\u002Fmlflow (23k+ stars)\n- **Examples**: https:\u002F\u002Fgithub.com\u002Fmlflow\u002Fmlflow\u002Ftree\u002Fmaster\u002Fexamples\n- **Community**: https:\u002F\u002Fmlflow.org\u002Fcommunity\n\n## See Also\n\n- `references\u002Ftracking.md` - Comprehensive tracking guide\n- `references\u002Fmodel-registry.md` - Model lifecycle management\n- `references\u002Fdeployment.md` - Production deployment patterns\n\n\n",{"name":5,"tags":47,"author":55,"license":14,"version":56,"description":7,"dependencies":57},[48,49,30,29,28,50,27,51,52,53,54],"MLOps","MLflow","Deployment","PyTorch","TensorFlow","Scikit-Learn","HuggingFace","Orchestra Research","1.0.0",[5,26,36],"main","f19b254e8975d0bfddb394686706106930d7964d","AI-MLOps\u002Fmlflow\u002Fmlflow","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus","https:\u002F\u002Fgithub.com\u002Fendman100","2026-11-13 20:29:52",{"source":8,"skillName":5,"commands":65,"prompt":75,"zipAvailable":76},[66,69,72],{"tool":67,"command":68},"npx","npx skills add endman100\u002Fskill-router-nexus --skill mlflow",{"tool":70,"command":71},"bunx","bunx skills add endman100\u002Fskill-router-nexus --skill mlflow",{"tool":73,"command":74},"pnpm","pnpm dlx skills add endman100\u002Fskill-router-nexus --skill mlflow","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FAI-MLOps\u002Fmlflow\u002Fmlflow\u002FSKILL.md",true,[78,84,88],{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Fdeployment.md","REFERENCE","参考文档",16695,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FAI-MLOps\u002Fmlflow\u002Fmlflow\u002Freferences\u002Fdeployment.md",{"path":85,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":86,"sourceHtmlUrl":87},"references\u002Fmodel-registry.md",17475,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FAI-MLOps\u002Fmlflow\u002Fmlflow\u002Freferences\u002Fmodel-registry.md",{"path":89,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":90,"sourceHtmlUrl":91},"references\u002Ftracking.md",14970,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FAI-MLOps\u002Fmlflow\u002Fmlflow\u002Freferences\u002Ftracking.md",[93,126,150,180,200,232],{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":97,"licenseFileUrl":98,"sourceHtmlUrl":99,"categories":100,"keywords":107,"publishedAt":125},"01M6M35YSZVTJV8WKCPYTR1D7E","guizang-ppt-skill","生成横向翻页网页 PPT（单 HTML 文件），含 WebGL 背景、章节幕封、数据大字报、图片网格等模板。提供两种风格：① \"电子杂志 × 电子墨水\"（衬线 + 流体背景 + 暖色） ② \"瑞士国际主义\"（无衬线 + 网格点阵 + IKB\u002F柠檬黄\u002F柠檬绿\u002F安全橙高亮）。当用户需要制作分享 \u002F 演讲 \u002F 发布会风格的网页 PPT，或提到\"杂志风 PPT\"、\"瑞士风 PPT\"、\"Swiss Style\"、\"horizontal swipe deck\"时使用。","AGPL-3.0","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWeb-Design\u002Fmedia-docs-and-content\u002Fguizang-ppt-skill\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWeb-Design\u002Fmedia-docs-and-content\u002Fguizang-ppt-skill\u002FSKILL.md",[101,104],{"categoryNo":102,"categoryName":103,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":105,"categoryName":106,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124],"pptx","guizang ppt skill","guizang ppt","guizang","生成","webgl","image","安全","swiss","演讲","ikb","数据","文件","swipe","style","deck","html","2026-11-12 13:55:43",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":130,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":125},"01M6M2975GEN1339YEPZ61XMRJ","youtube-clipper","YouTube 视频智能剪辑工具。下载视频和字幕，AI 分析生成精细章节（几分钟级别）， 用户选择片段后自动剪辑、翻译字幕为中英双语、烧录字幕到视频，并生成总结文案。 使用场景：当用户需要剪辑 YouTube 视频、生成短视频片段、制作双语字幕版本时。 关键词：视频剪辑、YouTube、字幕翻译、双语字幕、视频下载、clip video","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FVideo-Editing\u002Fyoutube-clipper\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FVideo-Editing\u002Fyoutube-clipper\u002FSKILL.md",[],[134,135,136,137,138,139,140,141,142,143,144,145,112,146,147,148,149],"youtube","clipper","youtube clipper","sonnet","文案","工具","总结","clip","write","read","翻译","关键词","视频","下载","Bash","Video",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":154,"licenseFileUrl":155,"sourceHtmlUrl":156,"categories":157,"keywords":162,"publishedAt":125},"01M6KSWDBWVPF8ZKCVF2EXCBPH","slack-gif-creator","Toolkit for creating animated GIFs optimized for Slack, with validators for size constraints and composable animation primitives. This skill applies when users request animated GIFs or emoji animations for Slack from descriptions like \"make me a GIF for Slack of X doing Y\".","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FCommunication\u002Fslack-gif-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FCommunication\u002Fslack-gif-creator\u002FSKILL.md",[158,161],{"categoryNo":159,"categoryName":160,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":102,"categoryName":103,"taxonomyType":20,"taxonomyTypeDesc":21},[163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179],"slack","slack gif creator","gif","creator","primitives","emoji","me","toolkit","composable","Animation","constraints","request","size","for","users","make","with",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":184,"sourceHtmlUrl":185,"categories":186,"keywords":192,"publishedAt":42},"01M6MPCT5BXVER8HQZTW3QE9AS","create-master","基于佛教经典文献，生成特定高僧大德的 AI 教学角色","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FMetaphysics-and-Spirituality\u002FMaster-skill\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FMetaphysics-and-Spirituality\u002FMaster-skill\u002FSKILL.md",[187],{"categoryNo":188,"categoryName":189,"taxonomyType":190,"taxonomyTypeDesc":191},"01JBSEEDCAT000000000000039","教师与教育","PROFESSION","适用职业",[193,194,195,196,197,198,142,143,199,112,148],"create","master","create master","true","webfetch","edit","grep",{"skillNo":201,"name":202,"nameZh":6,"description":203,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":204,"sourceHtmlUrl":205,"categories":206,"keywords":214,"publishedAt":42},"01M6M43AKE95Y64E1JRXEF5QQ3","writing-dna-skill","从至少 20 篇完整文章中蒸馏可复用的写作 DNA，分析语言、文章结构、选题逻辑、素材策略、认知框架和视觉风格，并生成 Writing-DNA.md；按该 DNA 写作时会读取全部蒸馏产物和 5 篇相关原文。用于中英文作者、账号、品牌或出版物的风格分析与一致性写作。 Distill reusable Writing DNA from at least 20 complete articles for Chinese or English authors, publications, brands, and accounts; use for language, structure, topic logic, source strategy, cognitive-frame, and visual-style analysis.","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fwriting-dna-skill\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fwriting-dna-skill\u002FSKILL.md",[207,210,211],{"categoryNo":208,"categoryName":209,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":105,"categoryName":106,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":212,"categoryName":213,"taxonomyType":190,"taxonomyTypeDesc":191},"01JBSEEDCAT000000000000036","内容创作者",[215,216,217,218,219,220,221,222,223,224,112,225,226,227,176,228,229,122,230,231],"writing","DNA","writing dna skill","visual","structure","chinese","reusable","use","strategy","distill","analysis","frame","source","at","complete","english","logic",{"skillNo":233,"name":234,"nameZh":6,"description":235,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":236,"sourceHtmlUrl":237,"categories":238,"keywords":241,"publishedAt":42},"01M6M428TTCGQ4ME3KY99VN037","stop-slop","Remove AI writing patterns from prose. Use when drafting, editing, or reviewing text to eliminate predictable AI tells.","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fstop-slop\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fstop-slop\u002FSKILL.md",[239,240],{"categoryNo":208,"categoryName":209,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":212,"categoryName":213,"taxonomyType":190,"taxonomyTypeDesc":191},[242,243,244,245,246,247,176,248,249,222,250,251,252,253,254,215],"stop slop","stop","slop","prose","drafting","when","drafts","patterns","remove","editing","text","https","content"]