ellf-cli 4.0.95__tar.gz → 4.0.96__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ellf_cli-4.0.95/ellf_cli.egg-info → ellf_cli-4.0.96}/PKG-INFO +1 -1
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/about.json +1 -1
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf.json +24 -24
- ellf_cli-4.0.96/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/SKILL.md +169 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/SKILL.md +20 -20
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/references/training_monitoring.md +1 -1
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/SKILL.md +1 -1
- ellf_cli-4.0.96/ellf_cli/ellf_skills/skills/ellf-ops.assistant/SKILL.md +382 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-ops.coding/references/data_infra_cli.md +1 -1
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-patterns/references/pattern_strategies.md +3 -1
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-support.assistant/SKILL.md +2 -2
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-train.assistant/SKILL.md +6 -6
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/workflow.md +17 -15
- {ellf_cli-4.0.95 → ellf_cli-4.0.96/ellf_cli.egg-info}/PKG-INFO +1 -1
- ellf_cli-4.0.95/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/SKILL.md +0 -154
- ellf_cli-4.0.95/ellf_cli/ellf_skills/skills/ellf-ops.assistant/SKILL.md +0 -223
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/LICENSE +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/MANIFEST.in +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/README.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/__init__.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/__main__.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/about.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/appdirs.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/auth.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/cli.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/cloud/__init__.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/cloud/gcp.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/cluster_config.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/__init__.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/_recipe_file.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/_recipe_subcommand.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/_state.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/actions.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/agents.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/assets.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/clusters.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/config.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/datasets.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/files/__init__.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/files/cp.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/files/ls.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/files/rm.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/files/rsync.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/files/stats.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/general.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/import_export.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/infra/__init__.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/infra/_helpers.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/infra/deploy.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/infra/init_values.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/infra/provision.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/infra/register.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/infra/setup.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/infra/start.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/infra/terraform.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/infra/tls.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/jobs.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/packages.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/paths.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/plans.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/projects.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/publish_code.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/publish_data.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/recipes.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/secrets.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/support.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/tasks.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/commands/todos.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/config.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/.claude-plugin/plugin.json +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/.gitignore +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/bin/write-current-session.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/hooks/hooks.json +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skill_variants.json +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/annotation_audit.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-annotate.assistant/references/builtin_ellf_annotation_recipes.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/SKILL.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/annotation_audit.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/builtin_ellf_annotation_recipes.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-annotate.coding/references/builtin_prodigy_recipes.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-ask/SKILL.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-handoff/SKILL.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/references/annotation_metrics.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/references/annotation_metrics.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/references/training_monitoring.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/scripts/check_training.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-ops.coding/SKILL.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-ops.coding/scripts/run_job.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-patterns/SKILL.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-prodigy/SKILL.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_action_recipe.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_agent_recipe.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_blocks_ui.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_correct.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_custom_ui.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_manual.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_pages_ui.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_routing.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_task_recipe.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-prodigy/assets/templates/template_teach.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/builtin_recipes.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/ellf_recipe_sdk.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/lint_recipe.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/prodigy_recipe_api.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-prodigy/references/template_index.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-project.assistant/SKILL.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/consulting_patterns.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/explosion_strategy.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-project.assistant/references/prodigy_llm_bot.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-project.coding/SKILL.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/consulting_patterns.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/explosion_strategy.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-project.coding/references/prodigy_llm_bot.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-support.coding/SKILL.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-todo/SKILL.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/diagnostics.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/evaluation_guide.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/model_selection.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-train.assistant/references/training_paradigms.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-train.coding/SKILL.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_advanced.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_architectures.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/config_training.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/diagnostics.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/evaluation_guide.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/experiment_patterns.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/model_selection.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/training_paradigms.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/training_troubleshooting.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-train.coding/references/workflow.md +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-train.coding/scripts/ellf_logger.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/errors.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/helm.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/key_pair.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/main.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/messages.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/query.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/recipes_cookiecutter/cookiecutter.json +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/.gitignore +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/README.md.tmpl +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements-dev.in +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/requirements.in +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/setup.py.tmpl +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/__init__.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/about.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/__init__.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/recipes_cookiecutter/{{cookiecutter.package_dir}}/{{cookiecutter.package_name}}/recipes/example_task.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/testing/__init__.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ty.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ui.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/url.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/util.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli.egg-info/SOURCES.txt +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli.egg-info/dependency_links.txt +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli.egg-info/entry_points.txt +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli.egg-info/not-zip-safe +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli.egg-info/requires.txt +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli.egg-info/top_level.txt +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/pyproject.toml +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/setup.cfg +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/setup.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_appdirs.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_auth.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_config.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_errors.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_files_cp.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_files_cp_helpers.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_info.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_invalid_secrets.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_key_pair.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_login.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_main.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_plans.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_projects.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_query.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_recipe_file.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_recipes.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_state.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_support.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_ty.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_ui.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_ui_extras.py +0 -0
- {ellf_cli-4.0.95 → ellf_cli-4.0.96}/tests/test_util.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"prog": "ellf",
|
|
3
3
|
"help": "Ellf Command Line Interface.",
|
|
4
|
-
"version": "4.0.
|
|
4
|
+
"version": "4.0.95",
|
|
5
5
|
"extra_key": "_extra",
|
|
6
6
|
"commands": {
|
|
7
7
|
"actions": {
|
|
@@ -204,7 +204,7 @@
|
|
|
204
204
|
"orig_type": "bool"
|
|
205
205
|
}
|
|
206
206
|
],
|
|
207
|
-
"description": "\
|
|
207
|
+
"description": "\n Log in to your Ellf account. You normally don't need to call this\n manually. It will automatically authenticate when needed.\n ",
|
|
208
208
|
"allow_extra": false,
|
|
209
209
|
"parent": null,
|
|
210
210
|
"is_placeholder": false
|
|
@@ -257,7 +257,7 @@
|
|
|
257
257
|
"orig_type": "Literal[api, cluster, id, ci]"
|
|
258
258
|
}
|
|
259
259
|
],
|
|
260
|
-
"description": "\
|
|
260
|
+
"description": "\n Return an auth token for the current user\n ",
|
|
261
261
|
"allow_extra": false,
|
|
262
262
|
"parent": null,
|
|
263
263
|
"is_placeholder": false
|
|
@@ -333,7 +333,7 @@
|
|
|
333
333
|
"orig_type": "list[Literal[tasks, actions, assets, datasets, paths]]"
|
|
334
334
|
}
|
|
335
335
|
],
|
|
336
|
-
"description": "\
|
|
336
|
+
"description": "\n Save the state of the current app JSON file. If an assets directory is\n provided, assets will be downloaded and referenced in the JSON accordingly.\n ",
|
|
337
337
|
"allow_extra": false,
|
|
338
338
|
"parent": null,
|
|
339
339
|
"is_placeholder": false
|
|
@@ -368,7 +368,7 @@
|
|
|
368
368
|
"orig_type": "bool"
|
|
369
369
|
}
|
|
370
370
|
],
|
|
371
|
-
"description": "\
|
|
371
|
+
"description": "\n Populate Ellf with data for projects, tasks, actions, assets and paths.\n ",
|
|
372
372
|
"allow_extra": false,
|
|
373
373
|
"parent": null,
|
|
374
374
|
"is_placeholder": false
|
|
@@ -445,7 +445,7 @@
|
|
|
445
445
|
"orig_type": "List[str]"
|
|
446
446
|
}
|
|
447
447
|
],
|
|
448
|
-
"description": "\
|
|
448
|
+
"description": "\n Create a new action. The available action recipes are fetched from your\n cluster and are added as dynamic subcommands. You can see more details\n and available arguments by calling the subcommand with --help, e.g. create\n [name] --help\n ",
|
|
449
449
|
"allow_extra": true,
|
|
450
450
|
"parent": "actions",
|
|
451
451
|
"is_placeholder": false
|
|
@@ -480,7 +480,7 @@
|
|
|
480
480
|
"orig_type": "bool"
|
|
481
481
|
}
|
|
482
482
|
],
|
|
483
|
-
"description": "\
|
|
483
|
+
"description": "\n List the actions on the cluster. By default, this includes their ID, name\n and current state, e.g. created or completed\n ",
|
|
484
484
|
"allow_extra": false,
|
|
485
485
|
"parent": "actions",
|
|
486
486
|
"is_placeholder": false
|
|
@@ -926,7 +926,7 @@
|
|
|
926
926
|
"orig_type": "List[str]"
|
|
927
927
|
}
|
|
928
928
|
],
|
|
929
|
-
"description": "\
|
|
929
|
+
"description": "\n Create a new agent. The available agent recipes are fetched from your\n cluster and are added as dynamic subcommands. You can see more details\n and available arguments by calling the subcommand with --help, e.g. create\n [name] --help\n ",
|
|
930
930
|
"allow_extra": true,
|
|
931
931
|
"parent": "agents",
|
|
932
932
|
"is_placeholder": false
|
|
@@ -1035,7 +1035,7 @@
|
|
|
1035
1035
|
"orig_type": "bool"
|
|
1036
1036
|
}
|
|
1037
1037
|
],
|
|
1038
|
-
"description": "\
|
|
1038
|
+
"description": "\n List the agents on the cluster. By default, this includes their ID, name\n and current state, e.g. created or completed\n ",
|
|
1039
1039
|
"allow_extra": false,
|
|
1040
1040
|
"parent": "agents",
|
|
1041
1041
|
"is_placeholder": false
|
|
@@ -1529,7 +1529,7 @@
|
|
|
1529
1529
|
"orig_type": "bool"
|
|
1530
1530
|
}
|
|
1531
1531
|
],
|
|
1532
|
-
"description": "\
|
|
1532
|
+
"description": "\n Get detailed info for an asset uploaded to the cluster and registered\n with Ellf\n ",
|
|
1533
1533
|
"allow_extra": false,
|
|
1534
1534
|
"parent": "assets",
|
|
1535
1535
|
"is_placeholder": false
|
|
@@ -1629,7 +1629,7 @@
|
|
|
1629
1629
|
"orig_type": "bool"
|
|
1630
1630
|
}
|
|
1631
1631
|
],
|
|
1632
|
-
"description": "\
|
|
1632
|
+
"description": "\n Create an asset on the cluster and register it with Ellf. Assets\n point to files or directories you control. The Ellf server only has\n a reference to them. This command doesn't transfer any data. See `ellf files`\n for utilities to transfer files to and from your cluster\n ",
|
|
1633
1633
|
"allow_extra": false,
|
|
1634
1634
|
"parent": "assets",
|
|
1635
1635
|
"is_placeholder": false
|
|
@@ -1858,7 +1858,7 @@
|
|
|
1858
1858
|
"orig_type": "Union[str, UUID]"
|
|
1859
1859
|
}
|
|
1860
1860
|
],
|
|
1861
|
-
"description": "\
|
|
1861
|
+
"description": "\n Delete a cluster from PAM. This only removes PAM's record\n of it. The cluster itself will continue to exist - you need\n to shut it down separately.\n ",
|
|
1862
1862
|
"allow_extra": false,
|
|
1863
1863
|
"parent": "clusters",
|
|
1864
1864
|
"is_placeholder": false
|
|
@@ -1945,7 +1945,7 @@
|
|
|
1945
1945
|
"orig_type": "bool"
|
|
1946
1946
|
}
|
|
1947
1947
|
],
|
|
1948
|
-
"description": "Check the health of a cluster deployment.\n\
|
|
1948
|
+
"description": "Check the health of a cluster deployment.\n\n Runs CLI-side connectivity checks against the cluster and PAM.\n Use --deep to also trigger cluster-side deployment checks (K8s API,\n NFS, database, etc.).\n ",
|
|
1949
1949
|
"allow_extra": false,
|
|
1950
1950
|
"parent": "clusters",
|
|
1951
1951
|
"is_placeholder": false
|
|
@@ -2028,7 +2028,7 @@
|
|
|
2028
2028
|
"orig_type": "str"
|
|
2029
2029
|
}
|
|
2030
2030
|
],
|
|
2031
|
-
"description": "Rotate the cluster RSA keypair.\n\
|
|
2031
|
+
"description": "Rotate the cluster RSA keypair.\n\n Generates a new keypair, updates the cluster record in PAM with the\n new public key, patches the K8s secret with the new private key,\n and restarts the cluster deployment.\n ",
|
|
2032
2032
|
"allow_extra": false,
|
|
2033
2033
|
"parent": "clusters",
|
|
2034
2034
|
"is_placeholder": false
|
|
@@ -2813,7 +2813,7 @@
|
|
|
2813
2813
|
"orig_type": "str"
|
|
2814
2814
|
}
|
|
2815
2815
|
],
|
|
2816
|
-
"description": "Export all the examples from a dataset and save it in the designated file as\
|
|
2816
|
+
"description": "Export all the examples from a dataset and save it in the designated file as\n JSONL (newline-delimited JSON).\n ",
|
|
2817
2817
|
"allow_extra": false,
|
|
2818
2818
|
"parent": "datasets",
|
|
2819
2819
|
"is_placeholder": false
|
|
@@ -3248,7 +3248,7 @@
|
|
|
3248
3248
|
"orig_type": "bool"
|
|
3249
3249
|
}
|
|
3250
3250
|
],
|
|
3251
|
-
"description": "Deploy or upgrade the Ellf Helm chart.\n\
|
|
3251
|
+
"description": "Deploy or upgrade the Ellf Helm chart.\n\n Creates the namespace, image pull secret, cluster keypair secret,\n then runs helm upgrade --install with the provided values.\n ",
|
|
3252
3252
|
"allow_extra": false,
|
|
3253
3253
|
"parent": "infra",
|
|
3254
3254
|
"is_placeholder": false
|
|
@@ -3492,7 +3492,7 @@
|
|
|
3492
3492
|
"orig_type": "str"
|
|
3493
3493
|
}
|
|
3494
3494
|
],
|
|
3495
|
-
"description": "Install cluster infrastructure prerequisites (Traefik, cert-manager).\n\
|
|
3495
|
+
"description": "Install cluster infrastructure prerequisites (Traefik, cert-manager).\n\n These operations are idempotent and safe to re-run.\n ",
|
|
3496
3496
|
"allow_extra": false,
|
|
3497
3497
|
"parent": "infra",
|
|
3498
3498
|
"is_placeholder": false
|
|
@@ -3775,7 +3775,7 @@
|
|
|
3775
3775
|
"orig_type": "str"
|
|
3776
3776
|
}
|
|
3777
3777
|
],
|
|
3778
|
-
"description": "Manage TLS certificates for local cluster access.\n\
|
|
3778
|
+
"description": "Manage TLS certificates for local cluster access.\n\n Use --self-signed when you have direct kubectl access to the cluster.\n Use --setup HOST to do everything from your laptop over SSH.\n Use --trust HOST to fetch and install an existing CA from a remote cluster.\n ",
|
|
3779
3779
|
"allow_extra": false,
|
|
3780
3780
|
"parent": "infra",
|
|
3781
3781
|
"is_placeholder": false
|
|
@@ -3799,7 +3799,7 @@
|
|
|
3799
3799
|
"orig_type": "str"
|
|
3800
3800
|
}
|
|
3801
3801
|
],
|
|
3802
|
-
"description": "\
|
|
3802
|
+
"description": "\n Run a job directly on the cluster from a YAML spec file, bypassing PAM.\n ",
|
|
3803
3803
|
"allow_extra": false,
|
|
3804
3804
|
"parent": "jobs",
|
|
3805
3805
|
"is_placeholder": false
|
|
@@ -4877,7 +4877,7 @@
|
|
|
4877
4877
|
"orig_type": "str"
|
|
4878
4878
|
}
|
|
4879
4879
|
],
|
|
4880
|
-
"description": "\
|
|
4880
|
+
"description": "\n Upload and advertise a recipes package from your Python environment.\n ",
|
|
4881
4881
|
"allow_extra": false,
|
|
4882
4882
|
"parent": "publish",
|
|
4883
4883
|
"is_placeholder": false
|
|
@@ -4990,7 +4990,7 @@
|
|
|
4990
4990
|
"orig_type": "bool"
|
|
4991
4991
|
}
|
|
4992
4992
|
],
|
|
4993
|
-
"description": "\
|
|
4993
|
+
"description": "\n Transfer data to the cluster, and advertise it to Ellf.\n\n These steps can also be done separately. See `ellf files` to transfer\n data to the cluster without creating an Asset record for it, and\n `ellf assets create` to create an Asset without transfer.\n ",
|
|
4994
4994
|
"allow_extra": false,
|
|
4995
4995
|
"parent": "publish",
|
|
4996
4996
|
"is_placeholder": false
|
|
@@ -5663,7 +5663,7 @@
|
|
|
5663
5663
|
"orig_type": "List[str]"
|
|
5664
5664
|
}
|
|
5665
5665
|
],
|
|
5666
|
-
"description": "\
|
|
5666
|
+
"description": "\n Create a new task. The available task recipes are fetched from your\n cluster and are added as dynamic subcommands. You can see more details\n and available arguments by calling the subcommand with --help, e.g. create\n [name] --help\n ",
|
|
5667
5667
|
"allow_extra": true,
|
|
5668
5668
|
"parent": "tasks",
|
|
5669
5669
|
"is_placeholder": false
|
|
@@ -5698,7 +5698,7 @@
|
|
|
5698
5698
|
"orig_type": "bool"
|
|
5699
5699
|
}
|
|
5700
5700
|
],
|
|
5701
|
-
"description": "\
|
|
5701
|
+
"description": "\n List the tasks on the cluster. By default, this includes their ID, name\n and current state, e.g. created or completed\n ",
|
|
5702
5702
|
"allow_extra": false,
|
|
5703
5703
|
"parent": "tasks",
|
|
5704
5704
|
"is_placeholder": false
|
|
@@ -6129,7 +6129,7 @@
|
|
|
6129
6129
|
"orig_type": "bool"
|
|
6130
6130
|
}
|
|
6131
6131
|
],
|
|
6132
|
-
"description": "Fetch a batch of questions from a running annotation task.\n\
|
|
6132
|
+
"description": "Fetch a batch of questions from a running annotation task.\n\n Mirrors the web app: asks the broker for a Prodigy login token, then talks\n to the task pod directly via its public task_url. Note that requesting a\n batch reserves those questions for this CLI's session \u2014 they will not be\n handed to other annotators until they are answered or another session\n runs out of work and steals them.\n ",
|
|
6133
6133
|
"allow_extra": false,
|
|
6134
6134
|
"parent": "tasks",
|
|
6135
6135
|
"is_placeholder": false
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ellf-annotate
|
|
3
|
+
description: "Prepares annotation for launch in the Ellf cluster: audits readiness, selects the right recipe, and resolves arguments. Delegates to `/ellf-ops` to actually create the task (and optionally start it) once the audit passes. Use when the user is setting up annotation from scratch, choosing the right built-in recipe, verifying readiness, or planning an annotation agent — not for `run X` / `start Y` requests on a known recipe, which go directly to `/ellf-ops`. Use `/ellf-handoff` when a new custom recipe is needed (routes the implementation to the coding agent), and `/ellf-project` when broader project planning is required."
|
|
4
|
+
argument-hint: "[describe what you want to annotate]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Prepare Annotation In Ellf
|
|
8
|
+
|
|
9
|
+
Help the user get from an annotation-ready plan to a running annotation task.
|
|
10
|
+
|
|
11
|
+
$ARGUMENTS
|
|
12
|
+
|
|
13
|
+
## Your role
|
|
14
|
+
|
|
15
|
+
You are responsible for:
|
|
16
|
+
- checking that annotation is ready to launch (the audit)
|
|
17
|
+
- choosing the right built-in Ellf annotation and/or agent recipe
|
|
18
|
+
- deciding whether an existing custom recipe is sufficient
|
|
19
|
+
- deciding when a new custom recipe is required
|
|
20
|
+
- resolving the natural-scalar arguments the user can answer in chat
|
|
21
|
+
- delegating to `/ellf-ops` to actually create (and optionally start) the task
|
|
22
|
+
|
|
23
|
+
You do not call `*_create` tools yourself — that is `/ellf-ops`'s job. After
|
|
24
|
+
the audit and arg resolution, delegate. You also do not implement new recipes.
|
|
25
|
+
If the workflow requires a new custom recipe or custom interface, use
|
|
26
|
+
`/ellf-handoff` to route the implementation to the coding workflow. If broader
|
|
27
|
+
methodology or schema work is needed, use `/ellf-project`.
|
|
28
|
+
|
|
29
|
+
**Never narrate routing or argument inference to the user.** The user does
|
|
30
|
+
not need to know that you're delegating to `/ellf-ops`, what `auto_start`
|
|
31
|
+
value you inferred from their verb, or which cli-name you chose for which
|
|
32
|
+
field. Say only what the user can act on: the outcome, the next step, the
|
|
33
|
+
link. The audit summary is useful when something failed and the user needs
|
|
34
|
+
to fix it; otherwise skip it and let the create tool's artifact (card,
|
|
35
|
+
form link, or prerequisite link) do the talking.
|
|
36
|
+
|
|
37
|
+
## Required readiness audit
|
|
38
|
+
|
|
39
|
+
Before choosing a recipe or building a launch spec, read:
|
|
40
|
+
|
|
41
|
+
- `${CLAUDE_SKILL_DIR}/references/annotation_audit.md`
|
|
42
|
+
- `${CLAUDE_SKILL_DIR}/references/builtin_ellf_annotation_recipes.md`
|
|
43
|
+
|
|
44
|
+
The audit exists because launching with a poorly designed schema or a
|
|
45
|
+
mismatched recipe wastes annotation effort and produces training data the
|
|
46
|
+
model can't learn from. Use it to catch problems before you touch the
|
|
47
|
+
platform.
|
|
48
|
+
|
|
49
|
+
Do not launch until you have confirmed:
|
|
50
|
+
- the annotation objective is clear
|
|
51
|
+
- the schema or review target is stable enough
|
|
52
|
+
- the recipe choice actually matches the task
|
|
53
|
+
- the input data is ready
|
|
54
|
+
- the target dataset is clear
|
|
55
|
+
|
|
56
|
+
If the audit surfaces a problem:
|
|
57
|
+
- methodological issues (schema design, task decomposition) → route to `/ellf-project`
|
|
58
|
+
- recipe implementation needs (custom UI, routing logic) → route to `/ellf-handoff`
|
|
59
|
+
|
|
60
|
+
## Recipe selection
|
|
61
|
+
|
|
62
|
+
### Built-in task recipe first
|
|
63
|
+
|
|
64
|
+
Prefer a built-in Ellf task recipe whenever it fits cleanly. The built-in
|
|
65
|
+
recipes are documented in
|
|
66
|
+
`${CLAUDE_SKILL_DIR}/references/builtin_ellf_annotation_recipes.md`.
|
|
67
|
+
|
|
68
|
+
Call `mcp__pam__recipe_list` to confirm the recipe is available in the
|
|
69
|
+
current environment before committing to it.
|
|
70
|
+
|
|
71
|
+
### Existing custom recipe
|
|
72
|
+
|
|
73
|
+
If the user names an existing cluster recipe and it matches the workflow,
|
|
74
|
+
use it.
|
|
75
|
+
|
|
76
|
+
### New custom recipe required
|
|
77
|
+
|
|
78
|
+
If the audit shows the user needs a custom interface, routing logic, or
|
|
79
|
+
annotation flow that built-ins cannot express cleanly:
|
|
80
|
+
- do not force a bad built-in fit
|
|
81
|
+
- use `/ellf-handoff` to assign custom recipe implementation to the coding agent
|
|
82
|
+
- describe what the custom recipe must do
|
|
83
|
+
|
|
84
|
+
## Annotation agents
|
|
85
|
+
|
|
86
|
+
If the user wants automated annotation:
|
|
87
|
+
- first ensure the base task is methodologically sound
|
|
88
|
+
- prepare the task spec first
|
|
89
|
+
- then identify an annotation-capable `agent_recipe` and prepare its args
|
|
90
|
+
- both task and agent get created via `/ellf-ops` (separate `*_create` calls,
|
|
91
|
+
then `mcp__pam__task_assign_bot` to attach the agent to the task)
|
|
92
|
+
|
|
93
|
+
Do not treat the agent as a replacement for task setup. The task is the
|
|
94
|
+
base annotation workflow.
|
|
95
|
+
|
|
96
|
+
## Recipe arguments
|
|
97
|
+
|
|
98
|
+
Once the recipe is selected:
|
|
99
|
+
- call `mcp__pam__recipe_list` to find the recipe ID
|
|
100
|
+
- call `mcp__pam__recipe_schema` with the recipe ID
|
|
101
|
+
- treat the returned field spec as the authoritative source for: exact arg keys, types, required vs optional fields, union variants, and cli-name remappings
|
|
102
|
+
- fill args from context and the project plan where possible
|
|
103
|
+
- ask only for natural-scalar values the user can answer in a sentence (a name, a language, a label list); object-typed args belong to the form
|
|
104
|
+
- the create tool runs validation internally and decides what the user sees — do not narrate the schema response back to the user
|
|
105
|
+
|
|
106
|
+
The annotation interface itself (what annotators see) cannot be previewed
|
|
107
|
+
from the assistant. If the user needs to verify the annotation UI before
|
|
108
|
+
cluster launch, they should use `ellf-dev run <recipe> [args]` in their
|
|
109
|
+
local coding environment.
|
|
110
|
+
|
|
111
|
+
## Execute via /ellf-ops
|
|
112
|
+
|
|
113
|
+
After audit + recipe selection + arg resolution, delegate to `/ellf-ops` to
|
|
114
|
+
create the task (and optionally start it):
|
|
115
|
+
|
|
116
|
+
```text
|
|
117
|
+
mcp__pam__task_create(
|
|
118
|
+
recipe_id=<from recipe_list>,
|
|
119
|
+
args=<resolved scalar args>,
|
|
120
|
+
name=<optional; PAM auto-names from recipe + timestamp when omitted>,
|
|
121
|
+
auto_start=<true if the user said run/start/launch, false for create/save/set up>,
|
|
122
|
+
)
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
If an annotation agent was also planned, call `mcp__pam__agent_create(...)`
|
|
126
|
+
for the agent. After the agent is created and started, attach it to the
|
|
127
|
+
task with `mcp__pam__task_assign_bot(task_id=..., agent_id=...)`.
|
|
128
|
+
|
|
129
|
+
The create tool's internal validation routes every case to a useful
|
|
130
|
+
user-facing artifact:
|
|
131
|
+
- confirmation card (three buttons: `Create and start` / `Create only` / `Cancel`) on clean validation
|
|
132
|
+
- form-handoff link on missing scalars or complex JSON args
|
|
133
|
+
- missing-prerequisite link on a referenced asset / dataset / secret that doesn't exist on the cluster
|
|
134
|
+
|
|
135
|
+
Do not stop early to flag schema issues, preview validation problems, or
|
|
136
|
+
direct the user elsewhere. The create tool produces a more useful artifact
|
|
137
|
+
than your commentary. See `/ellf-ops` for the full create workflow and the
|
|
138
|
+
forbidden patterns ("this won't validate, please fix", "the schema requires
|
|
139
|
+
X, Y, Z", any pre-emptive validation reasoning).
|
|
140
|
+
|
|
141
|
+
## After creation
|
|
142
|
+
|
|
143
|
+
Once the user confirms the create card (or the form-handoff link is followed
|
|
144
|
+
through to completion), help verify and run any follow-ups:
|
|
145
|
+
|
|
146
|
+
- if the task wasn't auto-started (user clicked `Create only`): use `/ellf-ops`
|
|
147
|
+
start workflow when the user is ready
|
|
148
|
+
- check cluster status at `GET /api/v1/jobs/{id}/status` to confirm the task
|
|
149
|
+
is running or healthy
|
|
150
|
+
- provide the task link and tell the user where to open it in the app
|
|
151
|
+
- if an agent was added, confirm it is assigned with `mcp__pam__task_bots_read`
|
|
152
|
+
|
|
153
|
+
If startup or assignment fails:
|
|
154
|
+
- inspect the cluster error or logs at `GET /api/v1/jobs/{id}/logs`
|
|
155
|
+
- if this is an operational problem, use `/ellf-monitor` (or consult `/ellf-ops`)
|
|
156
|
+
- if this is a recipe-capability problem, use `/ellf-handoff`
|
|
157
|
+
|
|
158
|
+
When you finish:
|
|
159
|
+
- state whether the setup passed the readiness audit
|
|
160
|
+
- state which recipe path you selected
|
|
161
|
+
- summarize the launch outcome (created / created and started / handed off to form / blocked on missing prerequisite)
|
|
162
|
+
- if not launched, explain exactly what is missing and where you are routing the user next
|
|
163
|
+
|
|
164
|
+
## Reference files
|
|
165
|
+
|
|
166
|
+
| File | What it covers | When to read |
|
|
167
|
+
|------|---------------|--------------|
|
|
168
|
+
| `${CLAUDE_SKILL_DIR}/references/annotation_audit.md` | Readiness checklist: objective, schema, recipe fit, data, dataset | Before every launch |
|
|
169
|
+
| `${CLAUDE_SKILL_DIR}/references/builtin_ellf_annotation_recipes.md` | Built-in Ellf task and agent recipes with supported workflows | Recipe selection |
|
{ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-monitor.assistant/SKILL.md
RENAMED
|
@@ -29,7 +29,7 @@ If an action is needed:
|
|
|
29
29
|
## Tool surface
|
|
30
30
|
|
|
31
31
|
Use:
|
|
32
|
-
- `
|
|
32
|
+
- `mcp__cluster__cluster_request` for runtime status, logs, errors, cluster health, and dataset counts
|
|
33
33
|
- PAM read/list tools when you need persisted object details such as task, action, or agent identity
|
|
34
34
|
|
|
35
35
|
Do not guess cluster state. Always check.
|
|
@@ -44,7 +44,7 @@ Before monitoring, determine what to monitor.
|
|
|
44
44
|
|
|
45
45
|
Use:
|
|
46
46
|
```text
|
|
47
|
-
|
|
47
|
+
mcp__cluster__cluster_request(method="GET", path="/api/v1/jobs/status")
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
If there are multiple plausible jobs, use `AskUserQuestion` to let the user choose.
|
|
@@ -56,11 +56,11 @@ If there are multiple plausible jobs, use `AskUserQuestion` to let the user choo
|
|
|
56
56
|
Read:
|
|
57
57
|
- `${CLAUDE_SKILL_DIR}/references/training_monitoring.md`
|
|
58
58
|
- `${CLAUDE_SKILL_DIR}/../ellf-train/references/training_troubleshooting.md`
|
|
59
|
-
Use
|
|
59
|
+
Use cluster calls such as:
|
|
60
60
|
```text
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
mcp__cluster__cluster_request(method="GET", path="/api/v1/jobs/{id}/status")
|
|
62
|
+
mcp__cluster__cluster_request(method="GET", path="/api/v1/jobs/{id}/logs", query={"tail_lines": 100})
|
|
63
|
+
mcp__cluster__cluster_request(method="GET", path="/api/v1/jobs/{id}/errors")
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
Your job is to:
|
|
@@ -75,10 +75,10 @@ If follow-up action is needed, route to `/ellf-ops` or `/ellf-handoff`.
|
|
|
75
75
|
|
|
76
76
|
### Annotation tasks
|
|
77
77
|
|
|
78
|
-
Use
|
|
78
|
+
Use cluster calls such as:
|
|
79
79
|
```text
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
mcp__cluster__cluster_request(method="GET", path="/api/v1/jobs/{id}/status")
|
|
81
|
+
mcp__cluster__cluster_request(method="GET", path="/api/v1/datasets/example-count", query={"dataset": "<name>"})
|
|
82
82
|
```
|
|
83
83
|
|
|
84
84
|
Read when needed:
|
|
@@ -95,11 +95,11 @@ If useful, combine task status with task detail from PAM reads to confirm the da
|
|
|
95
95
|
|
|
96
96
|
### Agents
|
|
97
97
|
|
|
98
|
-
Use
|
|
98
|
+
Use cluster calls such as:
|
|
99
99
|
```text
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
100
|
+
mcp__cluster__cluster_request(method="GET", path="/api/v1/jobs/{id}/status")
|
|
101
|
+
mcp__cluster__cluster_request(method="GET", path="/api/v1/jobs/{id}/logs", query={"tail_lines": 50})
|
|
102
|
+
mcp__cluster__cluster_request(method="GET", path="/api/v1/jobs/{id}/errors")
|
|
103
103
|
```
|
|
104
104
|
|
|
105
105
|
Report:
|
|
@@ -114,9 +114,9 @@ If the agent is failing repeatedly, recommend `/ellf-ops` for stop/restart or `/
|
|
|
114
114
|
|
|
115
115
|
For non-training actions:
|
|
116
116
|
```text
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
117
|
+
mcp__cluster__cluster_request(method="GET", path="/api/v1/jobs/{id}/status")
|
|
118
|
+
mcp__cluster__cluster_request(method="GET", path="/api/v1/jobs/{id}/logs", query={"tail_lines": 50})
|
|
119
|
+
mcp__cluster__cluster_request(method="GET", path="/api/v1/jobs/{id}/errors")
|
|
120
120
|
```
|
|
121
121
|
|
|
122
122
|
Report:
|
|
@@ -129,9 +129,9 @@ Report:
|
|
|
129
129
|
|
|
130
130
|
When the user asks about the cluster itself, use:
|
|
131
131
|
```text
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
132
|
+
mcp__cluster__cluster_request(method="GET", path="/api/v1/status")
|
|
133
|
+
mcp__cluster__cluster_request(method="GET", path="/api/v1/nodes")
|
|
134
|
+
mcp__cluster__cluster_request(method="GET", path="/api/v1/worker-types")
|
|
135
135
|
```
|
|
136
136
|
|
|
137
137
|
Report:
|
|
@@ -144,7 +144,7 @@ Report:
|
|
|
144
144
|
|
|
145
145
|
Use compact summaries and tables.
|
|
146
146
|
|
|
147
|
-
Never dump raw JSON or raw
|
|
147
|
+
Never dump raw JSON or raw cluster responses.
|
|
148
148
|
|
|
149
149
|
When presenting logs:
|
|
150
150
|
- summarize the important lines
|
|
@@ -4,7 +4,7 @@ How to monitor training jobs from the web assistant and interpret their signals.
|
|
|
4
4
|
|
|
5
5
|
## What the web assistant can do
|
|
6
6
|
|
|
7
|
-
Use
|
|
7
|
+
Use cluster-backed status, logs, and errors to determine:
|
|
8
8
|
- whether the training action is running
|
|
9
9
|
- whether it completed or failed
|
|
10
10
|
- whether logs show loss, score, or alert-like signals
|
{ellf_cli-4.0.95 → ellf_cli-4.0.96}/ellf_cli/ellf_skills/skills/ellf-monitor.coding/SKILL.md
RENAMED
|
@@ -167,7 +167,7 @@ Use the captured output or process info from the launch context when available.
|
|
|
167
167
|
# Connectivity and service health
|
|
168
168
|
ellf clusters check
|
|
169
169
|
|
|
170
|
-
# Deeper
|
|
170
|
+
# Deeper cluster-side checks (K8s, NFS, database)
|
|
171
171
|
ellf clusters check --deep
|
|
172
172
|
|
|
173
173
|
# Node capacity and utilization (cpu, memory, gpu, pod count)
|