datadog/create-invoke-task
Create a new Python invoke task for the dda CLI
npx skills add https://github.com/DataDog/datadog-agent --skill create-invoke-task
Create a new invoke task accessible via dda inv <namespace>.<task-name>.
Use AskUserQuestion to collect the following. If $ARGUMENTS provides values, skip those questions.
build, refresh_assets). Underscores become hyphens in the CLI.tasks/ (e.g. agent, linter, dogstatsd). Check tasks/__init__.py for the full list.tasks/<name>.py file and register it.Read an existing task file matching the desired complexity:
tasks/auth.pytasks/agent.py or tasks/linter.pytasks/__init__.py — to see how modules and tasks are registeredAdd the @task decorated function to the appropriate file. Follow the patterns from Step 2.
Key rules:
ctx (the invoke Context)ctx.run("command") to execute shell commandsdda inv --listinvoke: task, Exit (for errors), ContextIf you created a new module file, edit tasks/__init__.py:
from tasks import (...) block (alphabetical order)ns.add_collection(<module>) — creates dda inv <module>.<task>ns.add_task(<task>) — creates dda inv <task>If adding to an existing module, no registration is needed — invoke auto-discovers @task functions.
Test the task:
dda inv <namespace>.<task-name> --help
/create-invoke-task — Interactive: prompts for all details/create-invoke-task agent my-task — Pre-fills namespace and nameTake datadog/create-invoke-task from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.