[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KQ3X2F0AX9PQN7XTQWKRYM":3,"skill-same:01M6KQ3X2F0AX9PQN7XTQWKRYM":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},"01M6KQ3X2F0AX9PQN7XTQWKRYM","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\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","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus","https:\u002F\u002Fgithub.com\u002Fendman100","2026-11-11 18:19:10",{"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\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\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\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\u002Freferences\u002Ftracking.md",[93,117,153,176,185,209],{"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":14,"licenseFileUrl":97,"sourceHtmlUrl":98,"categories":99,"keywords":105,"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",[100],{"categoryNo":101,"categoryName":102,"taxonomyType":103,"taxonomyTypeDesc":104},"01JBSEEDCAT000000000000039","教师与教育","PROFESSION","适用职业",[106,107,108,109,110,111,112,113,114,115,116],"create master","master","create","生成","true","webfetch","edit","write","read","grep","Bash",{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":121,"sourceHtmlUrl":122,"categories":123,"keywords":133,"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",[124,127,130],{"categoryNo":125,"categoryName":126,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":128,"categoryName":129,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":131,"categoryName":132,"taxonomyType":103,"taxonomyTypeDesc":104},"01JBSEEDCAT000000000000036","内容创作者",[134,135,136,137,138,139,140,141,142,143,144,145,146,109,147,148,149,150,151,152],"writing dna skill","DNA","writing","strategy","english","logic","visual","structure","chinese","reusable","use","style","distill","analysis","frame","source","for","at","complete",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":157,"sourceHtmlUrl":158,"categories":159,"keywords":162,"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",[160,161],{"categoryNo":125,"categoryName":126,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":131,"categoryName":132,"taxonomyType":103,"taxonomyTypeDesc":104},[163,164,165,166,167,168,169,170,171,144,172,173,174,150,175,136],"slop","stop slop","stop","drafting","when","drafts","https","patterns","prose","remove","editing","text","content",{"skillNo":177,"name":178,"nameZh":6,"description":179,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":180,"sourceHtmlUrl":181,"categories":182,"keywords":183,"publishedAt":42},"01M6M41X0B7EBX42TK435DMGGR","shuorenhua","检查和清理中英文文本里的 AI 套路，适用于“去 AI 味”“说人话”“自然一点”“别像模板”“先标问题”这类改写和审稿需求；按场景控制力度，同时保留事实、术语、语域和责任主体。","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fshuorenhua\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fshuorenhua\u002FSKILL.md",[],[178,184],"文本",{"skillNo":186,"name":187,"nameZh":6,"description":188,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":189,"sourceHtmlUrl":190,"categories":191,"keywords":192,"publishedAt":42},"01M6M3ZD12WBEW5KXKDM4N6DFG","naming","Name products, SaaS, brands, open source projects, bots, and apps. Use when the user needs to name something, find a brand name, or pick a product name. Metaphor-driven process that produces memorable, meaningful names and avoids AI slop.","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fnaming-main\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fnaming-main\u002FSKILL.md",[],[187,193,194,195,196,197,144,198,114,149,199,200,201,202,116,203,204,205,206,167,207,208,163],"repo","websearch","product name","apps","bots","view","brand","pick","gh","projects","open","saas","open source","product","describe","ai slop",{"skillNo":210,"name":211,"nameZh":6,"description":212,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":213,"sourceHtmlUrl":214,"categories":215,"keywords":217,"publishedAt":42},"01M6M3YVXAFAAWJ7F6JMPFREYE","humanizer-zh","去除文本中的 AI 生成痕迹。适用于编辑或审阅文本，使其听起来更自然、更像人类书写。\n基于维基百科的\"AI 写作特征\"综合指南。检测并修复以下模式：夸大的象征意义、\n宣传性语言、以 -ing 结尾的肤浅分析、模糊的归因、破折号过度使用、三段式法则、\nAI 词汇、否定式排比、过多的连接性短语。","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fhumanizer-zh\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fhumanizer-zh\u002FSKILL.md",[216],{"categoryNo":125,"categoryName":126,"taxonomyType":20,"taxonomyTypeDesc":21},[218,219,220,114,113,112,136,109,184,221,163,165],"humanizer","zh","humanizer zh","翻译"]