Skip to content

Stock prompt plugin for plugin-spec prompt automations #800

Open

Description

@simonrosenberg

Problem

"Create Automation → enter a prompt" runs ignore the user's agent profile, so a profile with sub-agents runs without the task tool (OpenHands/automation#557). Prompt automations are created through the prompt preset, which never reads a profile, and presets are frozen in favor of plugin-spec automations (OpenHands/automation#600).

Plugin-spec automations do launch from an agent profile, but there is no stock plugin that carries a per-automation prompt, so the prompt flow can't move onto them.

Proposed change

Add plugins/prompt-task, a conversation-runner plugin:

Acceptance criteria

  • A plugin-spec automation created from plugins/prompt-task with a prompt and an agent_profile_id runs the prompt on a conversation launched from that profile.
  • The run's first message (/prompt-task:run <prompt>) triggers no public skill.
  • Repo checks pass (pytest tests/, scripts/sync_extensions.py --check, scripts/check_plugin_resources.py).

Implementation: #799.


I'm an AI agent (Claude Code) helping @simonrosenberg.


OpenHands AI triage

The following comments and acceptance criteria were added by the OpenHands AI agent.

Triage

Add plugins/prompt-task to OpenHands/extensions: a conversation-runner automation plugin whose run message carries a per-automation prompt and whose run launches from the agent profile the creator picks. The extensions-owned deliverable is the plugin (manifest, command, README, vendor manifests) and a contract test; the Automation Service pieces it depends on are OpenHands/automation#614 (dispatch launches the run's conversation from the profile) and OpenHands/automation#615 (agent_profile_id on POST /v1/plugin-spec plus {{ config.* }} argument rendering), and Canvas creation is OpenHands/OpenHands. Scope is bounded to the new plugin directory and its test.

Non-goals: no changes to the prompt or plugin presets; no Automation Service, SDK, or Canvas code; no marketplace/catalog listing (this plugin is prompt-flow infrastructure, so the sync_extensions.py coverage warning for it is expected and non-blocking); no tool, secret, or MCP allowlists on the profile requirement, since the plugin inherits the selected profile's own settings.

Acceptance Criteria

  • plugins/prompt-task exists as an executable automation plugin: .plugin/plugin.json validates against the Automation Service manifest schema (openhands.automation.plugin.v1) with entrypoint.runner: "conversation", an entrypoint.command whose commands/<command>.md file exists, and entrypoint.arguments that renders config.prompt rather than emitting the literal {{ config.prompt }}.
  • runtime.agent_profile is required: true with no default_name, so creating a plugin-spec automation from this plugin with a prompt and an agent_profile_id is accepted, and creating one without agent_profile_id is rejected.
  • config_schema requires exactly one prompt (non-empty string, documented maximum length) and rejects a config that omits prompt.
  • A dispatched run's first user message is /<plugin-name>:<command> <prompt>, containing the configured prompt text; the run's conversation reports launched_agent_profile as the chosen profile, and the tools offered to the model include that profile's (for example task when the profile enables sub-agents).
  • The run message triggers no public skill: no triggers: entry in any skills/*/SKILL.md, plugins/*/SKILL.md, or plugins/*/skills/*/SKILL.md matches the run message (case-insensitive).
  • .claude-plugin and .codex-plugin resolve to .plugin (symlink or byte-identical plugin.json mirror).
  • Repo checks pass: pytest tests/, python scripts/sync_extensions.py --check, python scripts/check_plugin_resources.py.
  • The README states the Automation Service version requirement (pluginSpecAgentProfiles in GET /v1/capabilities) and that an older service rejects the plugin at create instead of running a literal {{ config.prompt }}.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestneeds-automation-releaseWaiting on a release of OpenHands/automationpriority:lowready-for-devScoped for contribution; managed by repository readiness checks.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions