[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6JHBHD3KM963TDYN4KGSQS8":3,"skill-same:01M6JHBHD3KM963TDYN4KGSQS8":95},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":59,"commitSha":60,"skillDirectory":61,"forksCount":62,"repositoryHtmlUrl":63,"repositoryHomepageUrl":6,"ownerHtmlUrl":64,"ownerBlogUrl":6,"ownerDescription":65,"updatedAt":66,"install":67,"resources":80},"01M6JHBHD3KM963TDYN4KGSQS8","mlflow",null,"Track ML experiments, manage model registry with versioning, deploy models to production, and reproduce experiments with MLflow - framework-agnostic ML lifecycle platform","transaurus\u002Fstaging-davila7-claude-code-templates","transaurus","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F210882017?v=4","01M6JH1R6ZCRXGJCTDP5ZKZBE6","Page Turner Agent","01M6JH1RBBR2P6Y0XWDGM4B0G7",0,"MIT","https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fmlops-mlflow\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"experiment","orchestra","sqlalchemy","Model Versioning","ML Lifecycle","Model Registry","Experiment Tracking","platform","scikit-learn","tensorflow","versioning","model","boto3","framework","registry","learn","deployment","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":48,"author":56,"license":15,"version":57,"description":7,"dependencies":58},[49,50,30,29,28,51,27,52,53,54,55],"MLOps","MLflow","Deployment","PyTorch","TensorFlow","Scikit-Learn","HuggingFace","Orchestra Research","1.0.0",[5,26,36],"main","34fa6acf794b9a6310d298cbb8fb8c9420a5edcf","cli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fmlops-mlflow",2,"https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates","https:\u002F\u002Fgithub.com\u002Ftransaurus","Automated works of Page Turner","2026-03-28 10:12:59",{"source":8,"skillName":5,"commands":68,"prompt":78,"zipAvailable":79},[69,72,75],{"tool":70,"command":71},"npx","npx skills add transaurus\u002Fstaging-davila7-claude-code-templates --skill mlflow",{"tool":73,"command":74},"bunx","bunx skills add transaurus\u002Fstaging-davila7-claude-code-templates --skill mlflow",{"tool":76,"command":77},"pnpm","pnpm dlx skills add transaurus\u002Fstaging-davila7-claude-code-templates --skill mlflow","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fmlops-mlflow\u002FSKILL.md",true,[81,87,91],{"path":82,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Fdeployment.md","REFERENCE","参考文档",16695,"https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fmlops-mlflow\u002Freferences\u002Fdeployment.md",{"path":88,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Fmodel-registry.md",17475,"https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fmlops-mlflow\u002Freferences\u002Fmodel-registry.md",{"path":92,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Ftracking.md",14970,"https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fmlops-mlflow\u002Freferences\u002Ftracking.md",[96,125,146,170,190,216],{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":105,"publishedAt":43},"01M6JMRJR3BE0HGWFWDZSB853S","zapier-make-patterns","No-code automation democratizes workflow building. Zapier and Make (formerly Integromat) let non-developers automate business processes without writing code. But no-code doesn't mean no-complexity - these platforms have their own patterns, pitfalls, and breaking points.  This skill covers when to use which platform, how to build reliable automations, and when to graduate to code-based solutions. Key insight: Zapier optimizes for simplicity and integrations (7000+ apps), Make optimizes for power","https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fworkflow-automation\u002Fzapier-make-patterns\u002FSKILL.md",[102],{"categoryNo":103,"categoryName":104,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[106,107,108,109,110,111,112,113,114,115,116,117,118,31,119,120,121,122,123,124],"zapier make patterns","patterns","make","zapier","writing","workflow","automation","code","integrations","business","use","power","complexity","apps","how to","No-Code","which","for","spawner",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":131,"publishedAt":43},"01M6JMR8YK6SWPCTG1MCQTMN9S","yeet","Use only when the user explicitly asks to stage, commit, push, and open a GitHub pull request in one flow using the GitHub CLI (`gh`).","https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fworkflow-automation\u002Fyeet\u002FSKILL.md",[],[127,132,133,134,135,136,137,138,139,140,141,142,116,143,144,145],"cli","github","commit","pull request","openai","pull","push","flow","open","gh","user","only","stage","github cli",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":153,"publishedAt":43},"01M6JMQNFE64ZASQK90HARRXW8","workflow-automation","Workflow automation is the infrastructure that makes AI agents reliable. Without durable execution, a network hiccup during a 10-step payment flow means lost money and angry customers. With it, workflows resume exactly where they left off.  This skill covers the platforms (n8n, Temporal, Inngest) and patterns (sequential, parallel, orchestrator-worker) that turn brittle scripts into production-grade automation.  Key insight: The platforms make different tradeoffs. n8n optimizes for accessibility","https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fworkflow-automation\u002Fworkflow-automation\u002FSKILL.md",[152],{"categoryNo":103,"categoryName":104,"taxonomyType":21,"taxonomyTypeDesc":22},[111,112,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,123,124],"Workflow Automation","ai agents","accessibility","workflows","apache","execution","inngest","parallel","orchestrator","resume","n8n","payment","worker","scripts","temporal","with",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":176,"publishedAt":43},"01M6JMQDYJ0XETERPHGDR3EVGN","trigger-dev","Trigger.dev expert for background jobs, AI workflows, and reliable async execution with excellent developer experience and TypeScript-first design. Use when: trigger.dev, trigger dev, background task, ai background job, long running task.","https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fworkflow-automation\u002Ftrigger-dev\u002FSKILL.md",[],[177,178,179,180,181,157,182,158,159,183,116,184,185,186,187,188,189,169,123,124],"dev","trigger dev","trigger","design","typescript","async execution","first","async","developer experience","expert","task","background jobs","long",{"skillNo":191,"name":192,"nameZh":6,"description":193,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":194,"categories":195,"keywords":199,"publishedAt":43},"01M6JMQ5J6KK3GSX9FJCWWK6G6","planning-with-files","Transforms workflow to use Manus-style persistent markdown files for planning, progress tracking, and knowledge storage. Use when starting complex tasks, multi-step projects, research tasks, or when the user mentions planning, organizing work, tracking progress, or wants structured output.","https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fworkflow-automation\u002Fplanning-with-files\u002FSKILL.md",[196],{"categoryNo":197,"categoryName":198,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[200,201,202,169,203,111,204,205,206,207,208,209,116,210,211,212,213,214,215,123],"planning with files","planning","files","with files","storage","tasks","markdown","knowledge","projects","work","manus","structured output","progress","transforms","multi","output",{"skillNo":217,"name":218,"nameZh":6,"description":219,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":220,"categories":221,"keywords":226,"publishedAt":43},"01M6JMPWAT60RXXNEC4V9TRBRS","n8n-workflow-patterns","Proven workflow architectural patterns from real n8n workflows. Use when building new workflows, designing workflow structure, choosing workflow patterns, planning workflow architecture, or asking about webhook processing, HTTP API integration, database operations, AI agent workflows, or scheduled tasks.","https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fworkflow-automation\u002Fn8n\u002Fn8n-workflow-patterns\u002FSKILL.md",[222,225],{"categoryNo":223,"categoryName":224,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":103,"categoryName":104,"taxonomyType":21,"taxonomyTypeDesc":22},[111,227,164,228,107,229,230,157,231,205,201,232,233,234,235,236,237,238,239,240],"n8n workflow patterns","workflow patterns","n8n workflow","ai agent","architecture","database","api","planning workflow","structure","database operations","webhook","processing","http api","scheduled"]