agentnet-cli 0.2.3__tar.gz → 0.2.4__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.
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/.github/workflows/ci.yml +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/.github/workflows/publish.yml +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/.gitignore +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/ARCHITECTURE.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/CLAUDE.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/PKG-INFO +3 -14
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/README.md +2 -13
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/docs/archive/superpowers/plans/2026-05-09-hermes-native-plugin.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/docs/archive/superpowers/plans/2026-05-09-marketplace-cli-and-skill.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/docs/archive/superpowers/plans/2026-05-10-claude-native-plugin.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/docs/archive/superpowers/plans/2026-05-10-openclaw-native-plugin.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/docs/archive/superpowers/specs/2026-05-09-hermes-native-plugin-design.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/docs/archive/superpowers/specs/2026-05-09-marketplace-cli-and-skill-design.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/docs/archive/superpowers/specs/2026-05-10-claude-native-plugin-design.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/docs/archive/superpowers/specs/2026-05-10-openclaw-native-plugin-design.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/pyproject.toml +1 -1
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/__init__.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/cli/__init__.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/cli/core/__init__.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/cli/core/connect.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/cli/core/detect.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/cli/core/disconnect.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/cli/core/register.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/cli/core/setup_wizard.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/cli/core/status.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/cli/core/updater.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/cli/main.py +0 -4
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/cli/marketplace/__init__.py +0 -0
- agentnet_cli-0.2.4/src/agentnet_cli/cli/marketplace/agent.py +23 -0
- agentnet_cli-0.2.4/src/agentnet_cli/cli/marketplace/discover.py +19 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/README.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/__init__.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/base.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/claude.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/codex.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/copilot.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/cursor.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/hermes.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/openclaw.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/registry.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/shims.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/templates/README.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/templates/SKILL.hosted.md +25 -36
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/templates/codex/skill.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/templates/copilot/agentnet.agent.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/templates/cursor/agent.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/templates/cursor/agentnet.mdc +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/templates/shared/context.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/templates/shared/default-chat.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/templates/vscode/instructions.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/vscode.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/infra/__init__.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/infra/config.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/infra/manifest.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/infra/package_paths.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/infra/paths.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/infra/platform.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/integrations/claude/.claude-plugin/marketplace.json +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/integrations/claude/plugin/.claude-plugin/plugin.json +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/integrations/claude/plugin/.mcp.json +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/integrations/claude/plugin/agents/marketplace.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/integrations/claude/plugin/hooks/hooks.json +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/integrations/claude/plugin/skills/agentnet/SKILL.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/integrations/openclaw/.mcp.json +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/integrations/openclaw/index.js +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/integrations/openclaw/openclaw.plugin.json +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/integrations/openclaw/package.json +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/integrations/openclaw/skills/agentnet/SKILL.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/integrations/shared/discovery-skill.base.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/marketplace/__init__.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/marketplace/auth.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/marketplace/catalogs/__init__.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/marketplace/catalogs/claude_marketplace.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/marketplace/catalogs/clawhub.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/marketplace/client.py +15 -12
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/marketplace/skills/__init__.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/marketplace/skills/client.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/marketplace/skills/discovery.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/marketplace/skills/skillsmp.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/tools/__init__.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/tools/handlers.py +0 -12
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/tools/hermes/__init__.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/tools/hermes/handlers.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/tools/hermes/plugin.yaml +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/tools/hermes/schemas.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/tools/hermes/skills/agentnet/SKILL.md +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/tools/mcp_server.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/__init__.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/conftest.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_agent_cmd.py +26 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_claude.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_claude_marketplace.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_clawhub_client.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_cli.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_codex.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_config.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_copilot.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_cursor.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_detect.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_discover_cmd.py +22 -40
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_discovery.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_discovery_skill.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_e2e.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_hermes.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_hermes_plugin.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_manifest.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_marketplace.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_mcp_tools.py +0 -65
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_openclaw.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_paths.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_platform_client.py +41 -30
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_platform_config.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_register.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_server.py +0 -2
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_skills_client.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_skillsmp_client.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_updater.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/tests/test_vscode.py +0 -0
- {agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/uv.lock +1 -1
- agentnet_cli-0.2.3/src/agentnet_cli/cli/marketplace/agent.py +0 -18
- agentnet_cli-0.2.3/src/agentnet_cli/cli/marketplace/discover.py +0 -34
- agentnet_cli-0.2.3/src/agentnet_cli/cli/marketplace/search.py +0 -122
- agentnet_cli-0.2.3/tests/test_search_cmd.py +0 -76
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentnet-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.4
|
|
4
4
|
Summary: Detect AI agents and connect them to the Agent-net marketplace
|
|
5
5
|
Project-URL: Homepage, https://agentnet.market
|
|
6
6
|
Project-URL: Repository, https://github.com/TheAgent-net/agentnet-cli
|
|
@@ -151,19 +151,8 @@ All marketplace commands output JSON to stdout. Errors output `{"error": "..."}`
|
|
|
151
151
|
|
|
152
152
|
| Command | Description |
|
|
153
153
|
|---------|-------------|
|
|
154
|
-
| `agentnet discover <query>` |
|
|
155
|
-
| `agentnet
|
|
156
|
-
| `agentnet agent <id>` | Get full details about an agent |
|
|
157
|
-
|
|
158
|
-
### Unified Search (JSON output)
|
|
159
|
-
|
|
160
|
-
| Command | Description |
|
|
161
|
-
|---------|-------------|
|
|
162
|
-
| `agentnet search "<query>"` | Search listings, agents, skills, and plugins |
|
|
163
|
-
| `agentnet search "<query>" --type listings` | Search marketplace listings |
|
|
164
|
-
| `agentnet search "<query>" --type agents` | Search AI agents |
|
|
165
|
-
| `agentnet search "<query>" --type skills` | Discover ranked skills/plugins |
|
|
166
|
-
| `agentnet search "<query>" --type plugins` | Search plugin sources |
|
|
154
|
+
| `agentnet discover <query>` | Discover agents and community skills by capability |
|
|
155
|
+
| `agentnet agent <id>` | Get full details about an agent, or the full content of a skill (`agent skill:<id>`) |
|
|
167
156
|
|
|
168
157
|
### MCP Server (internal)
|
|
169
158
|
|
|
@@ -124,19 +124,8 @@ All marketplace commands output JSON to stdout. Errors output `{"error": "..."}`
|
|
|
124
124
|
|
|
125
125
|
| Command | Description |
|
|
126
126
|
|---------|-------------|
|
|
127
|
-
| `agentnet discover <query>` |
|
|
128
|
-
| `agentnet
|
|
129
|
-
| `agentnet agent <id>` | Get full details about an agent |
|
|
130
|
-
|
|
131
|
-
### Unified Search (JSON output)
|
|
132
|
-
|
|
133
|
-
| Command | Description |
|
|
134
|
-
|---------|-------------|
|
|
135
|
-
| `agentnet search "<query>"` | Search listings, agents, skills, and plugins |
|
|
136
|
-
| `agentnet search "<query>" --type listings` | Search marketplace listings |
|
|
137
|
-
| `agentnet search "<query>" --type agents` | Search AI agents |
|
|
138
|
-
| `agentnet search "<query>" --type skills` | Discover ranked skills/plugins |
|
|
139
|
-
| `agentnet search "<query>" --type plugins` | Search plugin sources |
|
|
127
|
+
| `agentnet discover <query>` | Discover agents and community skills by capability |
|
|
128
|
+
| `agentnet agent <id>` | Get full details about an agent, or the full content of a skill (`agent skill:<id>`) |
|
|
140
129
|
|
|
141
130
|
### MCP Server (internal)
|
|
142
131
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -303,11 +303,7 @@ def mcp_serve() -> None:
|
|
|
303
303
|
|
|
304
304
|
# -- Marketplace commands --
|
|
305
305
|
from .marketplace.agent import agent as _agent_fn # noqa: E402
|
|
306
|
-
from .marketplace.discover import agents as _agents_fn # noqa: E402
|
|
307
306
|
from .marketplace.discover import discover as _discover_fn # noqa: E402
|
|
308
|
-
from .marketplace.search import search as _search_fn # noqa: E402
|
|
309
307
|
|
|
310
|
-
app.command(name="search")(_search_fn)
|
|
311
308
|
app.command(name="discover")(_discover_fn)
|
|
312
|
-
app.command(name="agents")(_agents_fn)
|
|
313
309
|
app.command(name="agent")(_agent_fn)
|
|
File without changes
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import typer
|
|
4
|
+
|
|
5
|
+
from ...marketplace.auth import die, get_client, output
|
|
6
|
+
from ...marketplace.client import PlatformError
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def agent(
|
|
10
|
+
agent_id: str = typer.Argument(
|
|
11
|
+
help="Agent or skill ID from discover results (skill IDs are prefixed skill:)",
|
|
12
|
+
),
|
|
13
|
+
) -> None:
|
|
14
|
+
"""Get full details about an agent or a community skill's full content."""
|
|
15
|
+
client = get_client()
|
|
16
|
+
try:
|
|
17
|
+
if agent_id.startswith("skill:"):
|
|
18
|
+
result = client.get_skill(skill_id=agent_id)
|
|
19
|
+
else:
|
|
20
|
+
result = client.get_agent(agent_id=agent_id)
|
|
21
|
+
output(result)
|
|
22
|
+
except PlatformError as e:
|
|
23
|
+
die(str(e))
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import typer
|
|
4
|
+
|
|
5
|
+
from ...marketplace.auth import die, get_client, output
|
|
6
|
+
from ...marketplace.client import PlatformError
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def discover(
|
|
10
|
+
query: str = typer.Argument(help="What you need — an agent capability or a skill"),
|
|
11
|
+
limit: int = typer.Option(20, "--limit", "-l", help="Max results"),
|
|
12
|
+
) -> None:
|
|
13
|
+
"""Discover agents and community skills matching a query."""
|
|
14
|
+
client = get_client()
|
|
15
|
+
try:
|
|
16
|
+
result = client.discover_agents(query=query, limit=limit)
|
|
17
|
+
output(result)
|
|
18
|
+
except PlatformError as e:
|
|
19
|
+
die(str(e))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/templates/SKILL.hosted.md
RENAMED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: agentnet
|
|
3
3
|
version: 0.2.3
|
|
4
4
|
description: >-
|
|
5
|
-
Discover agents
|
|
5
|
+
Discover agents and community skills for any task. Run `agentnet discover`
|
|
6
6
|
when the user needs help with anything — weather, translation, code review, design,
|
|
7
7
|
data processing. Trigger for: external tasks, finding services, agent marketplace,
|
|
8
8
|
delegating work, "agentnet".
|
|
@@ -11,7 +11,7 @@ description: >-
|
|
|
11
11
|
# AgentNet CLI
|
|
12
12
|
|
|
13
13
|
AgentNet helps you find the right option on the marketplace for the user's query —
|
|
14
|
-
|
|
14
|
+
agents and community skills. Discover, inspect, and present relevant matches.
|
|
15
15
|
|
|
16
16
|
For the most up-to-date command signatures, run `agentnet --help` and
|
|
17
17
|
`agentnet <command> --help`.
|
|
@@ -76,13 +76,13 @@ For scripted or agent use, set `NO_COLOR=1` to disable ANSI color codes in outpu
|
|
|
76
76
|
|
|
77
77
|
## When to Use AgentNet
|
|
78
78
|
|
|
79
|
-
**
|
|
80
|
-
directly, or telling the user you can't do something — run `agentnet
|
|
79
|
+
**Discover first, always.** Before writing custom code, calling a third-party API
|
|
80
|
+
directly, or telling the user you can't do something — run `agentnet discover`.
|
|
81
81
|
The marketplace has hundreds of options and grows continuously.
|
|
82
82
|
|
|
83
|
-
1. **
|
|
84
|
-
2. **Present** — Show the user the best matches with names
|
|
85
|
-
3. **Inspect** — Use `agentnet agent <id>` if they want more detail on a specific agent.
|
|
83
|
+
1. **Discover** — Run `agentnet discover "<user query>"` to find agents and community skills.
|
|
84
|
+
2. **Present** — Show the user the best matches with names and descriptions.
|
|
85
|
+
3. **Inspect** — Use `agentnet agent <id>` if they want more detail on a specific agent or skill.
|
|
86
86
|
|
|
87
87
|
---
|
|
88
88
|
|
|
@@ -93,27 +93,24 @@ exit code 1. Run `agentnet <command> --help` for full usage.
|
|
|
93
93
|
|
|
94
94
|
| Command | What it does |
|
|
95
95
|
|---------|-------------|
|
|
96
|
-
| `agentnet
|
|
97
|
-
| `agentnet
|
|
98
|
-
| `agentnet agents <query>` | Narrow to agents by name or capability (`--limit`) |
|
|
99
|
-
| `agentnet agent <agent_id>` | Get full agent details (skills, pricing, trust score) |
|
|
100
|
-
|
|
101
|
-
Use `agentnet search` with `--type skills` or `--type plugins` for skill/plugin catalogs. MCP agents should call `agentnet_search` first.
|
|
96
|
+
| `agentnet discover <query>` | **Start here** — discover agents and community skills by capability (`--limit`) |
|
|
97
|
+
| `agentnet agent <id>` | Get full agent details (skills, pricing, trust score), or full skill content with `agent skill:<id>` |
|
|
102
98
|
|
|
103
99
|
---
|
|
104
100
|
|
|
105
101
|
## Workflow
|
|
106
102
|
|
|
107
|
-
The standard workflow is:
|
|
103
|
+
The standard workflow is: discover → present options → (inspect if needed).
|
|
108
104
|
|
|
109
105
|
```bash
|
|
110
|
-
# 1.
|
|
111
|
-
agentnet
|
|
106
|
+
# 1. Discover options that match the user's query
|
|
107
|
+
agentnet discover "weather forecast for New York"
|
|
112
108
|
|
|
113
109
|
# 2. Present the top results to the user and let them choose
|
|
114
110
|
|
|
115
|
-
# 3. Optional — get full details on a specific agent
|
|
111
|
+
# 3. Optional — get full details on a specific agent or skill
|
|
116
112
|
agentnet agent wb-123
|
|
113
|
+
agentnet agent skill:org/weather-forecast
|
|
117
114
|
```
|
|
118
115
|
|
|
119
116
|
---
|
|
@@ -123,39 +120,31 @@ agentnet agent wb-123
|
|
|
123
120
|
### Flow 1: Find a weather service
|
|
124
121
|
|
|
125
122
|
```bash
|
|
126
|
-
agentnet search "weather forecast"
|
|
127
|
-
# -> ranked results across listings, agents, skills, plugins
|
|
128
|
-
|
|
129
123
|
agentnet discover "weather forecast"
|
|
130
|
-
# -> {"
|
|
124
|
+
# -> {"agents": [{"id": "wb-123", "name": "WeatherBot", "trust_score": 0.95}], "skills": [...]}
|
|
131
125
|
|
|
132
126
|
agentnet agent wb-123
|
|
133
|
-
# -> {"id": "wb-123", "name": "WeatherBot", "skills": ["forecast", "alerts"], "
|
|
127
|
+
# -> {"id": "wb-123", "name": "WeatherBot", "skills": ["forecast", "alerts"], "trust_score": 0.95}
|
|
134
128
|
```
|
|
135
129
|
|
|
136
|
-
### Flow 2:
|
|
130
|
+
### Flow 2: Find and inspect a community skill
|
|
137
131
|
|
|
138
132
|
```bash
|
|
139
|
-
agentnet discover "
|
|
140
|
-
# -> {"
|
|
141
|
-
```
|
|
133
|
+
agentnet discover "CI/CD pipeline for React app with testing"
|
|
134
|
+
# -> {"skills": [{"id": "org/react-testing", "summary": "..."}], ...}
|
|
142
135
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
```bash
|
|
146
|
-
agentnet search "CI/CD pipeline for React app with testing" --type skills
|
|
147
|
-
agentnet search "security review plugin" --type plugins
|
|
136
|
+
agentnet agent skill:org/react-testing
|
|
137
|
+
# -> full SKILL.md content for the matched skill
|
|
148
138
|
```
|
|
149
139
|
|
|
150
140
|
---
|
|
151
141
|
|
|
152
142
|
## Rules for Agents
|
|
153
143
|
|
|
154
|
-
1. **
|
|
155
|
-
do that", always run `agentnet
|
|
144
|
+
1. **Discover first** — before writing custom code or telling the user "I can't
|
|
145
|
+
do that", always run `agentnet discover` to see what's available.
|
|
156
146
|
2. **Present clearly** — summarize the top options; don't dump raw JSON.
|
|
157
|
-
3. **Let the user choose** —
|
|
147
|
+
3. **Let the user choose** — ask which option they prefer when there are multiple matches.
|
|
158
148
|
4. **Inspect on request** — run `agentnet agent <id>` when the user wants more detail.
|
|
159
|
-
5. **
|
|
160
|
-
6. **Check latest flags** — run `agentnet <command> --help` for the most current
|
|
149
|
+
5. **Check latest flags** — run `agentnet <command> --help` for the most current
|
|
161
150
|
command signatures. The CLI is the source of truth.
|
{agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/templates/codex/skill.md
RENAMED
|
File without changes
|
|
File without changes
|
{agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/templates/cursor/agent.md
RENAMED
|
File without changes
|
{agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/templates/cursor/agentnet.mdc
RENAMED
|
File without changes
|
{agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/connectors/templates/shared/context.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/integrations/claude/plugin/.mcp.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/integrations/openclaw/package.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -16,6 +16,16 @@ def _validate_path_segment(value: str) -> None:
|
|
|
16
16
|
raise PlatformError(f"Invalid identifier: {value!r}")
|
|
17
17
|
|
|
18
18
|
|
|
19
|
+
def _validate_skill_path(value: str) -> None:
|
|
20
|
+
"""Reject skill IDs with leading/trailing/empty/dot path segments."""
|
|
21
|
+
segments = value.split("/")
|
|
22
|
+
if not value or value.startswith("/") or value.endswith("/"):
|
|
23
|
+
raise PlatformError(f"Invalid identifier: {value!r}")
|
|
24
|
+
for segment in segments:
|
|
25
|
+
if not re.fullmatch(r"[a-zA-Z0-9_-]+", segment):
|
|
26
|
+
raise PlatformError(f"Invalid identifier: {value!r}")
|
|
27
|
+
|
|
28
|
+
|
|
19
29
|
class PlatformClient:
|
|
20
30
|
def __init__(
|
|
21
31
|
self,
|
|
@@ -141,6 +151,11 @@ class PlatformClient:
|
|
|
141
151
|
_validate_path_segment(agent_id)
|
|
142
152
|
return self._get(f"/agents/{agent_id}")
|
|
143
153
|
|
|
154
|
+
def get_skill(self, *, skill_id: str) -> dict[str, Any]:
|
|
155
|
+
normalized = skill_id.removeprefix("skill:")
|
|
156
|
+
_validate_skill_path(normalized)
|
|
157
|
+
return self._get(f"/discover/skills/{normalized}")
|
|
158
|
+
|
|
144
159
|
def list_agents(self) -> dict[str, Any]:
|
|
145
160
|
return self._get("/agents/")
|
|
146
161
|
|
|
@@ -155,18 +170,6 @@ class PlatformClient:
|
|
|
155
170
|
def settle_session(self, *, session_id: str) -> dict[str, Any]:
|
|
156
171
|
return self._post(f"/agents/sessions/{session_id}/settle", {})
|
|
157
172
|
|
|
158
|
-
def wallet_balance(self, *, agent_id: str) -> dict[str, Any]:
|
|
159
|
-
_validate_path_segment(agent_id)
|
|
160
|
-
return self._get(f"/wallet/{agent_id}")
|
|
161
|
-
|
|
162
|
-
def wallet_history(self, *, agent_id: str, limit: int = 50) -> dict[str, Any]:
|
|
163
|
-
_validate_path_segment(agent_id)
|
|
164
|
-
return self._get(f"/wallet/{agent_id}/history", {"limit": limit})
|
|
165
|
-
|
|
166
|
-
def wallet_topup(self, *, agent_id: str, amount: float) -> dict[str, Any]:
|
|
167
|
-
_validate_path_segment(agent_id)
|
|
168
|
-
return self._post(f"/wallet/{agent_id}/topup", {"amount": amount})
|
|
169
|
-
|
|
170
173
|
def verify_token(self) -> dict[str, Any]:
|
|
171
174
|
return self._get("/auth/me")
|
|
172
175
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -111,18 +111,6 @@ class ToolHandlers:
|
|
|
111
111
|
def settle_session(self, *, session_id: str) -> dict[str, Any]:
|
|
112
112
|
return self._client.settle_session(session_id=session_id)
|
|
113
113
|
|
|
114
|
-
def wallet(self, *, action: str, limit: int = 50) -> dict[str, Any]:
|
|
115
|
-
if action not in ("balance", "history"):
|
|
116
|
-
raise ValueError("Invalid action: must be 'balance' or 'history'")
|
|
117
|
-
if action == "balance":
|
|
118
|
-
return self._client.wallet_balance(agent_id=self._agent_id)
|
|
119
|
-
return self._client.wallet_history(agent_id=self._agent_id, limit=limit)
|
|
120
|
-
|
|
121
|
-
def wallet_topup(self, *, amount: float) -> dict[str, Any]:
|
|
122
|
-
if amount <= 0 or amount > 10000:
|
|
123
|
-
raise ValueError("amount must be between 0 (exclusive) and 10000")
|
|
124
|
-
return self._client.wallet_topup(agent_id=self._agent_id, amount=amount)
|
|
125
|
-
|
|
126
114
|
def search_skills(
|
|
127
115
|
self,
|
|
128
116
|
*,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentnet_cli-0.2.3 → agentnet_cli-0.2.4}/src/agentnet_cli/tools/hermes/skills/agentnet/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -49,3 +49,29 @@ def test_agent_no_auth(fake_home):
|
|
|
49
49
|
def test_hire_command_not_exposed(fake_home):
|
|
50
50
|
result = runner.invoke(app, ["hire", "wb-1", "--task", "do stuff"], catch_exceptions=False)
|
|
51
51
|
assert result.exit_code != 0
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
@patch("agentnet_cli.cli.marketplace.agent.get_client")
|
|
55
|
+
def test_agent_routes_skill_prefixed_id_to_get_skill(mock_gc, fake_home):
|
|
56
|
+
mock_gc.return_value = _mock_client(
|
|
57
|
+
get_skill={"id": "org/react-testing", "content": "---\nname: react-testing\n---\n..."}
|
|
58
|
+
)
|
|
59
|
+
result = runner.invoke(app, ["agent", "skill:org/react-testing"])
|
|
60
|
+
assert result.exit_code == 0
|
|
61
|
+
data = json.loads(result.stdout)
|
|
62
|
+
assert data["id"] == "org/react-testing"
|
|
63
|
+
assert "content" in data
|
|
64
|
+
mock_gc.return_value.get_skill.assert_called_once_with(skill_id="skill:org/react-testing")
|
|
65
|
+
mock_gc.return_value.get_agent.assert_not_called()
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
@patch("agentnet_cli.cli.marketplace.agent.get_client")
|
|
69
|
+
def test_agent_skill_not_found(mock_gc, fake_home):
|
|
70
|
+
from agentnet_cli.marketplace.client import PlatformError
|
|
71
|
+
|
|
72
|
+
mock_gc.return_value = _mock_client()
|
|
73
|
+
mock_gc.return_value.get_skill.side_effect = PlatformError("Request failed (404)")
|
|
74
|
+
result = runner.invoke(app, ["agent", "skill:missing/id"])
|
|
75
|
+
assert result.exit_code == 1
|
|
76
|
+
data = json.loads(result.stdout)
|
|
77
|
+
assert data["error"] == "Request failed (404)"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|