Ploinky Agents as Skills

A Ploinky agent can be exposed as a skill only inside an orchestration skill, or o-skill. The agent's agent-card payload acts as its runtime descriptor and supplies the metadata used to describe the generated tool. Unlike filesystem-discovered skills, the Ploinky agent has no static descriptor and no .md descriptor file of its own.

Orchestrator-Driven Discovery

When an orchestrator skill (oskill.md) includes a ## Allowed Agents section, the OrchestratorSkillsSubsystem instantiates PloinkyAgentSkillsSubsystem on demand. The subsystem queries the Ploinky router's /agent-card endpoint to retrieve metadata for all available agents, then wraps each declared agent as a callable tool within the agentic session.

Agent Tool Execution

Each agent tool receives plain text from the orchestrator session, constructs an OpenAI-compatible payload, and sends it through AgentHttpClient.chatCompletions(). The response text is extracted and returned to the session. This means agents are called through the same OpenAI-compatible interface that all Ploinky agents expose, regardless of their underlying LLM provider.

Agent tools are merged into the session's toolbelt alongside local skill tools, so the LLM can freely choose between calling a local skill or a remote agent at each step.

AgentHttpClient lives at PloinkyAgentSkillsSubsystem/AgentHttpClient.mjs within the achillesAgentLib package, so it is available inside agent containers without depending on external paths.

O-Skill Declaration

The owning o-skill uses its own oskill.md descriptor to declare remote agents through the ## Allowed Agents section (aliases: allowed-agents, agents, agent-allowlist):

## Allowed Agents

- openaiAgent
- researchAgent
- claudeAgent

The subsystem derives each tool's description from the agent-card metadata (summary, tags, usage guidance, etc.), so the orchestrator's LLM can make informed decisions about which agent to call.