agentnet-cli 0.4.0__tar.gz → 0.4.1__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.4.0 → agentnet_cli-0.4.1}/CHANGELOG.md +7 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/CLAUDE.md +5 -3
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/GLOSSARY.md +42 -42
- agentnet_cli-0.4.1/LICENSE +21 -0
- agentnet_cli-0.4.1/PKG-INFO +409 -0
- agentnet_cli-0.4.1/README.md +381 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/pyproject.toml +1 -1
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/templates/SKILL.hosted.md +1 -1
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/openclaw/openclaw.plugin.json +1 -1
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/openclaw/package.json +1 -1
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/client.py +50 -1
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/skills/discovery.py +39 -4
- agentnet_cli-0.4.1/src/agentnet_cli/tools/claude_hook.py +206 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/hermes/plugin.yaml +1 -1
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/skillfire/__init__.py +7 -1
- agentnet_cli-0.4.1/src/agentnet_cli/tools/skillfire/broker.py +205 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/skillfire/candidates.py +18 -2
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/skillfire/classifier.py +35 -6
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/skillfire/config.py +6 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/skillfire/steer.py +38 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/skillfire/worker.py +79 -7
- agentnet_cli-0.4.1/tests/skillfire/test_broker.py +146 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/skillfire/test_candidates.py +32 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/skillfire/test_classifier.py +46 -5
- agentnet_cli-0.4.1/tests/skillfire/test_steer.py +88 -0
- agentnet_cli-0.4.1/tests/skillfire/test_worker.py +453 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_claude_hook.py +129 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_discovery.py +52 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_platform_client.py +57 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/uv.lock +1 -1
- agentnet_cli-0.4.0/PKG-INFO +0 -264
- agentnet_cli-0.4.0/README.md +0 -237
- agentnet_cli-0.4.0/src/agentnet_cli/tools/claude_hook.py +0 -93
- agentnet_cli-0.4.0/src/agentnet_cli/tools/skillfire/broker.py +0 -82
- agentnet_cli-0.4.0/tests/skillfire/test_broker.py +0 -58
- agentnet_cli-0.4.0/tests/skillfire/test_steer.py +0 -19
- agentnet_cli-0.4.0/tests/skillfire/test_worker.py +0 -239
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/.github/workflows/ci.yml +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/.github/workflows/publish.yml +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/.gitignore +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/ARCHITECTURE.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/docs/archive/superpowers/plans/2026-05-09-hermes-native-plugin.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/docs/archive/superpowers/plans/2026-05-09-marketplace-cli-and-skill.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/docs/archive/superpowers/plans/2026-05-10-claude-native-plugin.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/docs/archive/superpowers/plans/2026-05-10-openclaw-native-plugin.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/docs/archive/superpowers/specs/2026-05-09-hermes-native-plugin-design.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/docs/archive/superpowers/specs/2026-05-09-marketplace-cli-and-skill-design.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/docs/archive/superpowers/specs/2026-05-10-claude-native-plugin-design.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/docs/archive/superpowers/specs/2026-05-10-openclaw-native-plugin-design.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/__init__.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/__init__.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/core/__init__.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/core/connect.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/core/detect.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/core/disconnect.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/core/register.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/core/setup_wizard.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/core/status.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/core/updater.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/main.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/marketplace/__init__.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/marketplace/agent.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/marketplace/discover.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/README.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/__init__.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/base.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/claude.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/claude_search_hook.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/codex.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/copilot.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/cursor.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/cursor_hook.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/hermes.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/hermes_hook.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/openclaw.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/registry.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/shims.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/templates/README.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/templates/codex/skill.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/templates/copilot/agentnet.agent.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/templates/cursor/agent.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/templates/cursor/agentnet.mdc +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/templates/shared/context.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/templates/shared/default-chat.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/templates/vscode/instructions.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/vscode.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/infra/__init__.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/infra/config.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/infra/manifest.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/infra/package_paths.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/infra/paths.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/infra/platform.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/claude/.claude-plugin/marketplace.json +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/claude/plugin/.claude-plugin/plugin.json +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/claude/plugin/.mcp.json +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/claude/plugin/agents/marketplace.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/claude/plugin/hooks/hooks.json +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/claude/plugin/skills/agentnet/SKILL.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/openclaw/.mcp.json +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/openclaw/index.js +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/openclaw/skills/agentnet/SKILL.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/shared/discovery-skill.base.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/__init__.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/auth.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/catalogs/__init__.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/catalogs/claude_marketplace.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/catalogs/clawhub.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/skills/__init__.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/skills/client.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/skills/skillsmp.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/__init__.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/cursor_hook.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/handlers.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/hermes/__init__.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/hermes/handlers.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/hermes/schemas.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/hermes/skills/agentnet/SKILL.md +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/hermes_hook.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/mcp_server.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/skillfire/content.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/skillfire/render.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/skillfire/session.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/__init__.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/conftest.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/skillfire/__init__.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/skillfire/test_config.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/skillfire/test_content.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/skillfire/test_init.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/skillfire/test_render.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_agent_cmd.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_claude.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_claude_marketplace.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_claude_search_hook.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_clawhub_client.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_cli.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_codex.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_config.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_copilot.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_cursor.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_cursor_hook.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_detect.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_discover_cmd.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_discovery_skill.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_e2e.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_hermes.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_hermes_hook.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_hermes_plugin.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_manifest.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_marketplace.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_mcp_tools.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_openclaw.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_paths.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_platform_config.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_register.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_server.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_skills_client.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_skillsmp_client.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_updater.py +0 -0
- {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_vscode.py +0 -0
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.1 - 2026-07-23
|
|
4
|
+
|
|
5
|
+
- Add Claude-safe skill-fire steer wording and system-message support.
|
|
6
|
+
- Include platform usage context in skill-fire discovery flows.
|
|
7
|
+
- Refresh README placement for the agent bootstrap command.
|
|
8
|
+
- Bump bundled Hermes, hosted skill, and OpenClaw integration metadata to match the CLI release.
|
|
9
|
+
|
|
3
10
|
## 0.4.0 - 2026-07-23
|
|
4
11
|
|
|
5
12
|
- Add every-prompt skill-fire support for Cursor and Hermes.
|
|
@@ -8,7 +8,7 @@ CLI tool that detects AI coding agents on your system and connects them to the [
|
|
|
8
8
|
- **Package manager:** uv
|
|
9
9
|
- **CLI framework:** Typer + Rich
|
|
10
10
|
- **HTTP client:** httpx
|
|
11
|
-
- **Testing:** pytest (
|
|
11
|
+
- **Testing:** pytest (511 tests), pytest-cov
|
|
12
12
|
- **CI:** GitHub Actions (lint + test matrix on 3.11/3.12/3.13)
|
|
13
13
|
- **Publish:** PyPI via trusted publisher (tag `v*`)
|
|
14
14
|
|
|
@@ -45,13 +45,15 @@ uv run agentnet --help # Run locally
|
|
|
45
45
|
- **OpenClaw Plugin:** `agentnet connect openclaw` delegates to `openclaw plugins install` + `openclaw plugins uninstall` instead of writing files directly. The plugin at `openclaw-plugin/` is a native OpenClaw plugin with `openclaw.plugin.json` manifest, publishable to ClawHub.
|
|
46
46
|
- **Plugin hint:** The CLI emits a `<claude-code-hint>` tag on stderr when `CLAUDECODE=1` is set, prompting Claude Code users to install the plugin.
|
|
47
47
|
- **Auto-update on the hook flow:** `maybe_auto_update()` (rate-limited 24h via manifest `last_update_check_at`, gated by `AGENTNET_AUTO_UPDATE`, PyPI version check, background installer upgrade + stale-integration refresh) runs on every non-hook `agentnet` command via the Typer `@app.callback()`. The **hook** commands (`{skill,cursor,hermes}-hook`) are excluded there (`_HOOK_COMMANDS`) so `--pre`/`--peek`/`--post` never block a tool call; the update runs **once per turn from the detached `--fetch` worker** (`skillfire.run_fetch`), off the agent's critical path.
|
|
48
|
-
- **Skill-fire architecture — `tools/skillfire/` (ports & adapters):** the every-prompt skill-fire pipeline shared by all three harnesses lives in `tools/skillfire/`, split by responsibility — `config.py` (constants/credentials), `session.py` (event/cache/atomic-claim primitives), `candidates.py` (skills.sh discovery), `classifier.py` (the three backend gate runners), `render.py` (**pure**, zero I/O — the fenced user-facing list), `content.py` (`npx skills use` fetch, owns that `subprocess` call site so a test patching it can't affect the classifier's or candidate-discovery's), `broker.py` (brokered-A2A fallback), `worker.py` (orchestrates discovery → classify → render → content/broker → cache, plus `spawn_worker`), `steer.py` (steer-text + the `check_steer`/`check_fallback` decisions). `tools/skillfire/__init__.py` is **the port** — the only surface the three adapters (`tools/claude_hook.py`, `tools/cursor_hook.py`, `tools/hermes_hook.py`) may import: `spawn_worker(session, prompt, *, limit, timeout, classifier)` (launch the detached worker, spawn-claim + stale-cleanup + `Popen` in one call), `check_steer(session)` (mid-run
|
|
49
|
-
- **Every-prompt skill hook (Claude Code):** `agentnet enable-skill-fire` (and `connect claude`) install three hooks in `~/.claude/settings.json` (also bundled in the plugin's `hooks/hooks.json`), dispatched to `tools/claude_hook.py`. `UserPromptSubmit` → `agentnet skill-hook --pre` calls `skillfire.spawn_worker(..., classifier="claude")` and returns immediately (0 latency). The worker discovers **installable skill candidates** (`discover_skills` → skills.sh, each carrying a `<repo>@<slug>`) + runs a cheap no-tool `claude -p` **classifier** (Haiku) as the reliable relevance **gate** (a bare yes/no gate isn't — the model just answers). Two-phase so the outcome reaches the hooks fast: **Phase 1** caches the **recommendation list** (relevant skills by name + why + skills.sh link) the moment the gate opens (~12s); **Phase 2** *appends* the top match fetched via `npx skills use <repo>@<slug>` (which downloads the skill — SKILL.md + references — to a temp dir; single-file skills are materialized to a temp `SKILL.md`) as a **concise header (name + description) + the on-disk path**, not a full SKILL.md dump. The injected outcome is thus the list *then* "Reading the top match and applying it." + that block — the agent surfaces the list and reads/applies the methodology from disk, which is what makes it *act* on the skill rather than just mention it. No files are written to the repo. If content is unavailable (no `npx`/all fetches miss), Phase 2 falls back — behind the same open gate — to the live **Skills Agent** over **brokered A2A**: `PlatformClient.use_agent(agent_id="agentnet-skills-agent", task=…)` with the user's `setup` identity; the platform relays A2A and returns `{status:"settled", agent_response}` in one call. **No skills-agent token is ever held client-side.** Only a `settled` response is used. Injection is layered: `PostToolUse` → `agentnet skill-hook --peek` calls `skillfire.
|
|
48
|
+
- **Skill-fire architecture — `tools/skillfire/` (ports & adapters):** the every-prompt skill-fire pipeline shared by all three harnesses lives in `tools/skillfire/`, split by responsibility — `config.py` (constants/credentials), `session.py` (event/cache/atomic-claim primitives), `candidates.py` (skills.sh discovery), `classifier.py` (the three backend gate runners), `render.py` (**pure**, zero I/O — the fenced user-facing list), `content.py` (`npx skills use` fetch, owns that `subprocess` call site so a test patching it can't affect the classifier's or candidate-discovery's), `broker.py` (brokered-A2A fallback), `worker.py` (orchestrates discovery → classify → render → content/broker → cache, plus `spawn_worker`), `steer.py` (steer-text + the `check_steer`/`check_fallback` decisions). `tools/skillfire/__init__.py` is **the port** — the only surface the three adapters (`tools/claude_hook.py`, `tools/cursor_hook.py`, `tools/hermes_hook.py`) may import: `spawn_worker(session, prompt, *, limit, timeout, classifier)` (launch the detached worker, spawn-claim + stale-cleanup + `Popen` in one call), `check_steer(session)`/`check_fallback(session, *, timeout)` (the shared, wrapped decision — mid-run/fallback text or `None` — used by Cursor/Hermes), `check_steer_raw`/`check_fallback_raw` (same decision, bare outcome with no wrapper text, so a harness can build its own presentation — used by Claude, see below), `run_fetch` (the CLI-invoked worker entrypoint), plus the `SUBAGENT_ENV`/`AGENTNET_SENTINEL` constants. The `_raw` variants are purely additive — appended to `steer.py`, never touching `check_steer`/`check_fallback`'s own bodies — so Cursor/Hermes are byte-for-byte unaffected by anything Claude-specific. Internals are free to reshuffle without touching an adapter or `main.py`, since none of them reach past the port. Tests mirror the module split 1:1 under `tests/skillfire/`.
|
|
49
|
+
- **Every-prompt skill hook (Claude Code):** `agentnet enable-skill-fire` (and `connect claude`) install three hooks in `~/.claude/settings.json` (also bundled in the plugin's `hooks/hooks.json`), dispatched to `tools/claude_hook.py`. `UserPromptSubmit` → `agentnet skill-hook --pre` calls `skillfire.spawn_worker(..., classifier="claude")` and returns immediately (0 latency). The worker discovers **installable skill candidates** (`discover_skills` → skills.sh, each carrying a `<repo>@<slug>`) + runs a cheap no-tool `claude -p` **classifier** (Haiku) as the reliable relevance **gate** (a bare yes/no gate isn't — the model just answers). Two-phase so the outcome reaches the hooks fast: **Phase 1** caches the **recommendation list** (relevant skills by name + why + skills.sh link) the moment the gate opens (~12s); **Phase 2** *appends* the top match fetched via `npx skills use <repo>@<slug>` (which downloads the skill — SKILL.md + references — to a temp dir; single-file skills are materialized to a temp `SKILL.md`) as a **concise header (name + description) + the on-disk path**, not a full SKILL.md dump. The injected outcome is thus the list *then* "Reading the top match and applying it." + that block — the agent surfaces the list and reads/applies the methodology from disk, which is what makes it *act* on the skill rather than just mention it. No files are written to the repo. If content is unavailable (no `npx`/all fetches miss), Phase 2 falls back — behind the same open gate — to the live **Skills Agent** over **brokered A2A**: `PlatformClient.use_agent(agent_id="agentnet-skills-agent", task=…)` with the user's `setup` identity; the platform relays A2A and returns `{status:"settled", agent_response}` in one call. **No skills-agent token is ever held client-side.** Only a `settled` response is used. Injection is layered: `PostToolUse` → `agentnet skill-hook --peek` calls `skillfire.check_steer_raw` (the bare outcome, no wrapper) to force-steer the agent **mid-flight** once the outcome is ready (`{"decision":"block","reason":…, "systemMessage":…}`); `Stop` → `agentnet skill-hook --post` calls `skillfire.check_fallback_raw`, the guaranteed fallback (`{"decision":"block", "systemMessage":…, …additionalContext}`) for no-tool answers. Claude builds its **own** plain-language wording in `claude_hook.py` rather than the shared `steer_reason`/`fold_context` Cursor/Hermes use (see below) — no STEP-numbered "reproduce this verbatim" scaffolding, and no claim that any section is hidden from the user. Reason: Claude Code prints the entire `reason`/`additionalContext` payload to the user's terminal (native CLI behavior), so the shared wording's `AGENT_ONLY` label ("do not show the user") is an observable lie there — live testing showed a session flag it as a probable prompt injection and refuse to comply. `systemMessage` (set on both events) is a separate, platform-guaranteed display channel — never passed to the model, shown to the user regardless of what the model does next — so the skill list's visibility no longer depends on model compliance the way `reason`/`additionalContext` do. Because the hooks are registered in **both** `settings.json` (via `connect`/`enable-skill-fire`) and the plugin's `hooks.json`, Claude Code may run each twice in parallel — so idempotence is enforced with **atomic `O_EXCL` once-claims** inside `session.py`: a per-`(session,prompt)` **spawn marker** so duplicate `--pre` hooks spawn exactly one worker (not 2× classifier cost), and a per-prompt **emit marker** shared by peek + post so exactly one steer fires (and a re-fired `Stop` no-ops). The cache carries a **`final`** flag: Phase 1 writes `final:false` (the list names skills but has no methodology), Phase 2 writes `final:true` once content is attached — or promotes the list to `final` when no content is reachable. **A mid-run steer only fires on a `final` outcome**, so it can't burn its one shot on a list the agent has nothing to apply from; the `Stop`/fallback surface takes a non-final list as a last resort. Session-keyed JSON cache `$TMPDIR/agentnet-skill/<session>.json` (`{outcome, final}`) + sibling `.emitted`/`.<hash>.spawn` markers; `AGENTNET_SKILL_SUBAGENT=1` guards recursion. All best-effort — no token/binary/candidates/unreachable-platform/timeout injects nothing. `agent_id` overridable via `AGENTNET_SKILLS_AGENT_ID`/config. Implemented in `tools/skillfire/` + `tools/claude_hook.py` + `connectors/claude_search_hook.py`.
|
|
50
50
|
|
|
51
51
|
- **Every-prompt skill hook (Cursor):** `agentnet connect cursor` also installs three hooks in `~/.cursor/hooks.json` (`connectors/cursor_hook.py`) that call the *same* `skillfire` port as Claude — only the thin I/O adapter differs (`tools/cursor_hook.py`, command `agentnet cursor-hook --pre/--peek/--post`; session key is Cursor's `conversation_id`). `beforeSubmitPrompt` → `--pre` calls `spawn_worker(..., classifier="cursor")` and allows the prompt (`{"continue":true}` — this event can't inject). `preToolUse` → `--peek` is the **hard nudge**: Cursor's only forceful steer is a denied action, so `check_steer` denies the first tool call **once** (`{"permission":"deny","agent_message":…}`) once the outcome is ready, and the agent must read+apply the skill then retry; every later call is allowed. `stop` → `--post` calls `check_fallback`, the fallback for no-tool answers via `followup_message` (auto-submitted next turn); it's `[AgentNet]`-tagged so the re-fired `--pre` recognizes its own injection and won't loop. The relevance **gate runs on the user's own Cursor model** via `cursor-agent -p --mode ask --output-format text --trust` (`classify(backend="cursor")` in `tools/skillfire/classifier.py`). The backend-aware classifier tries the requested CLI first and falls back to the other (`claude -p` ↔ `cursor-agent -p`) so a machine with only one still gates; Cursor needs `cursor-agent login` (auth), and `AGENTNET_CURSOR_CLASSIFIER_MODEL` pins a cheaper/faster gate model than the default.
|
|
52
52
|
|
|
53
53
|
- **Every-prompt skill hook (Hermes):** `agentnet connect hermes` also installs three **shell hooks** in `~/.hermes/config.yaml` (`connectors/hermes_hook.py`), calling the *same* `skillfire` port; only the I/O adapter differs (`tools/hermes_hook.py`, `agentnet hermes-hook --pre/--peek/--post`; session key is `session_id`, the prompt is `extra.user_message`). `pre_llm_call` → `--pre` calls `spawn_worker(..., classifier="hermes")` (Hermes' documented `UserPromptSubmit` equivalent; it *can* inject `{"context":…}` but the worker needs ~20s, so the steer lands later). `pre_tool_call` → `--peek` is the hard nudge: Hermes **natively accepts the Claude-Code `{"decision":"block","reason":…}` shape** (it normalizes to `{"action":"block","message":…}`) and returns the reason to the model as the tool's error, so it re-plans inline. `pre_verify` → `--post` fires when the agent edited code and is about to finish; `{"action":"continue","message":…}` appends a synthetic user turn (gated on `extra.attempt` since it re-fires per nudge, bounded by `agent.max_verify_nudges`). Gate backend `hermes` runs an **in-process `AIAgent`** on the user's own model via `gateway.run._resolve_gateway_model` + `_resolve_runtime_agent_kwargs` (no subprocess, no separate auth; `skip_memory=False` shares the user's memory/profile so the gate ranks per-user, while `disabled_toolsets` (incl. `memory`) + `max_iterations=1` keep it a one-shot classify), falling back to the CLI backends when not importable. Shell hooks need **consent** — install writes scoped entries to `~/.hermes/shell-hooks-allowlist.json` for our three commands only (narrower than global `hooks_auto_accept`), and registers the **absolute** binary path since `hermes hooks doctor` stats the command's first token. Verify headlessly with `hermes hooks list` / `doctor` / `test <event> --payload-file`.
|
|
54
54
|
|
|
55
|
+
- **Platform call context & usage analytics:** the skill-fire pipeline attaches optional call context to its platform calls, but **the gate model rides only on post-classification records, never on the retrieval call.** `GET /skills/discover` (`marketplace/skills/discovery.py`) is candidate *retrieval* — it fires **before** the classifier runs, so which model/backend will gate is unknown there (and the backend can fall back), so it carries **only** `harness` (`claude`/`cursor`/`hermes`, the requested backend — still which IDE the user is in, unaffected by fallback) and `session_id`. The **post-gate** records — the brokered `POST /agents/{id}/use` (`marketplace/client.py::use_agent`, via `broker.negotiate_via_platform`) and the usage-telemetry `POST /skills/discover/feedback` (`broker.report_recommendation`) — additionally carry `classifier_model` and `model`, resolved for the **backend that *actually* ran** (`classify()` returns `(relevant, actual_backend)`; `worker.py` resolves the model from `actual_backend`, not the requested one). `classifier_model` comes from `classifier.resolve_classifier_model()`, a pure per-backend lookup done *without* invoking the classifier: the fixed `SUBAGENT_MODEL` constant for Claude, the `AGENTNET_CURSOR_CLASSIFIER_MODEL` env value for Cursor if pinned, `_resolve_gateway_model()` for Hermes. `model` is Hermes-only — identical to `classifier_model`, since Hermes classifies on the user's own model in-process; confirmed unobtainable for Claude/Cursor (no hooked event payload exposes the driving model, per Claude Code's own hook docs). Because discovery makes **no** model claim, its record can never *conflict* with the authoritative model on the feedback/broker record for the same recommendation. Every field is added only when resolvable — omitted, never sent as `null` or guessed — and the platform's routes ignore unrecognized query params/JSON keys by default, so this ships independently of the platform's own timeline. `broker.report_recommendation()` fires the feedback `POST` the moment the classifier gate opens (non-empty relevant list) — usage telemetry for "which skills get recommended," dispatched to a **daemon thread** so it never delays the phase-1 cache write, and **`.join()`-ed (bounded by `config.REPORT_JOIN_TIMEOUT`) right before the worker returns** so a fast-exiting process doesn't kill the thread before its HTTP call lands. Wrapped in the same try/except-everywhere pattern as every other platform call here, so a `404` (route not yet live) is silently absorbed exactly like a network failure would be. The feedback payload matches the platform's `SkillFeedbackRequest` exactly (`use_case`, `recommended:[{name,why,score}]` with `score` always a `str|None`, `harness`, `session_id`, `classifier_model`, `model`). Verified end-to-end (not just unit-tested) against a real local platform build: a genuine `uvicorn` server, real FastAPI/Pydantic validation, unmodified CLI code, only the DB session/auth resolution mocked.
|
|
56
|
+
|
|
55
57
|
## Testing Patterns
|
|
56
58
|
|
|
57
59
|
- **CLI tests:** `typer.testing.CliRunner` + `fake_home` fixture (temp dir with patched `Path.home()`)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# AgentNet CLI Glossary
|
|
2
2
|
|
|
3
|
-
Canonical **meaning vocabulary** for **agentnet-cli**
|
|
3
|
+
Canonical **meaning vocabulary** for **agentnet-cli** -- the tool that detects local AI coding agents and connects them to the Agent-net marketplace.
|
|
4
4
|
|
|
5
5
|
This is not an API index. Entries are the *ideas* the product talks about (including the verbs and nouns that give sense to important actions in the CLI). Prefer these words in docs, skills, MCP descriptions, UI copy, and comments.
|
|
6
6
|
|
|
@@ -11,17 +11,17 @@ This is not an API index. Entries are the *ideas* the product talks about (inclu
|
|
|
11
11
|
| Form | Use for |
|
|
12
12
|
|------|---------|
|
|
13
13
|
| **Agent-net** | Product / brand in user-facing prose (`https://agentnet.market`) |
|
|
14
|
-
| **AgentNet** | Compound product noun in titles and skill copy (
|
|
14
|
+
| **AgentNet** | Compound product noun in titles and skill copy ("AgentNet CLI identity") |
|
|
15
15
|
| **agentnet** | CLI binary, package name, env vars, MCP tool prefix, local dir (`~/.agentnet`) |
|
|
16
16
|
| **agentnet-cli** | PyPI / repo package name |
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
20
|
-
## A
|
|
20
|
+
## A-Z glossary
|
|
21
21
|
|
|
22
22
|
### A2A (Agent-to-Agent)
|
|
23
23
|
|
|
24
|
-
Inter-agent protocol relayed by the **platform**. When the CLI needs another agent
|
|
24
|
+
Inter-agent protocol relayed by the **platform**. When the CLI needs another agent's help (e.g. Skills Agent), it uses **brokered A2A**: the user's CLI credentials ask the platform to talk to that agent and return a **settled** session. The CLI never holds the remote agent's token.
|
|
25
25
|
|
|
26
26
|
### Amount / max amount
|
|
27
27
|
|
|
@@ -29,7 +29,7 @@ Budget ceiling when **using** a marketplace agent. Discovery UX does not expose
|
|
|
29
29
|
|
|
30
30
|
### Apply
|
|
31
31
|
|
|
32
|
-
Have the coding agent follow a skill
|
|
32
|
+
Have the coding agent follow a skill's methodology (read on-disk skill content and act), not merely mention the skill's name.
|
|
33
33
|
|
|
34
34
|
### Atomic write
|
|
35
35
|
|
|
@@ -37,7 +37,7 @@ Safe config/manifest save pattern: write a temp file, then replace. Prevents hal
|
|
|
37
37
|
|
|
38
38
|
### Agent (local / coding agent)
|
|
39
39
|
|
|
40
|
-
An AI coding tool installed on the user
|
|
40
|
+
An AI coding tool installed on the user's machine that the CLI can **detect** and **connect** -- Claude Code, Cursor, GitHub Copilot, VS Code, OpenAI Codex, Hermes, OpenClaw. Distinct from a **marketplace agent**.
|
|
41
41
|
|
|
42
42
|
### Agent (marketplace / platform agent)
|
|
43
43
|
|
|
@@ -45,7 +45,7 @@ A registered entity on the Agent-net platform that offers capabilities (skills,
|
|
|
45
45
|
|
|
46
46
|
### Agent connector
|
|
47
47
|
|
|
48
|
-
Per
|
|
48
|
+
Per-local-agent adapter that can **detect**, **connect**, and **disconnect**. Injects MCP config, context/skill files, and permission rules -- or installs a **native plugin**.
|
|
49
49
|
|
|
50
50
|
### Agent ID
|
|
51
51
|
|
|
@@ -53,7 +53,7 @@ Platform identifier for a marketplace or CLI-registered agent. Stored in local c
|
|
|
53
53
|
|
|
54
54
|
### Agent name / display name
|
|
55
55
|
|
|
56
|
-
Internal slug for a local agent (`claude`, `cursor`,
|
|
56
|
+
Internal slug for a local agent (`claude`, `cursor`, ...) vs human label ("GitHub Copilot", "VS Code").
|
|
57
57
|
|
|
58
58
|
### AgentNet home (`~/.agentnet`)
|
|
59
59
|
|
|
@@ -91,7 +91,7 @@ List or page through a catalog without a free-text query (e.g. ClawHub browse).
|
|
|
91
91
|
|
|
92
92
|
### Brokered A2A
|
|
93
93
|
|
|
94
|
-
See **A2A**. Pattern: CLI
|
|
94
|
+
See **A2A**. Pattern: CLI -> platform -> remote agent -> **settled** response, under the user's setup identity.
|
|
95
95
|
|
|
96
96
|
### Bundled
|
|
97
97
|
|
|
@@ -127,7 +127,7 @@ Cheap relevance check on candidates vs the user prompt. If the **gate** opens, t
|
|
|
127
127
|
|
|
128
128
|
### Claude Code plugin / native plugin
|
|
129
129
|
|
|
130
|
-
Bundled plugin installed through Claude
|
|
130
|
+
Bundled plugin installed through Claude's own marketplace/install path (skills, hooks, MCP), not only raw file writes.
|
|
131
131
|
|
|
132
132
|
### Cleanup / legacy
|
|
133
133
|
|
|
@@ -139,7 +139,7 @@ Agent record created during **setup** / **register** (default **visibility**: pr
|
|
|
139
139
|
|
|
140
140
|
### Compose / render / fold
|
|
141
141
|
|
|
142
|
-
Turn ranked recommendations and fetched skill text into the final **outcome** string injected into the agent (list block +
|
|
142
|
+
Turn ranked recommendations and fetched skill text into the final **outcome** string injected into the agent (list block + "applying top match" content).
|
|
143
143
|
|
|
144
144
|
### Concepts
|
|
145
145
|
|
|
@@ -147,7 +147,7 @@ Single-word cores extracted when **expanding** a use case (for fuzzy matching du
|
|
|
147
147
|
|
|
148
148
|
### Config root
|
|
149
149
|
|
|
150
|
-
Local agent
|
|
150
|
+
Local agent's home config directory (e.g. `~/.claude`, `~/.cursor`) used for detect/connect.
|
|
151
151
|
|
|
152
152
|
### Connect
|
|
153
153
|
|
|
@@ -159,7 +159,7 @@ Recorded wiring for one local agent: files created/modified, MCP entry, timestam
|
|
|
159
159
|
|
|
160
160
|
### Connector registry
|
|
161
161
|
|
|
162
|
-
Map of local agent
|
|
162
|
+
Map of local agent -> connector implementation.
|
|
163
163
|
|
|
164
164
|
### Continue
|
|
165
165
|
|
|
@@ -200,7 +200,7 @@ Prefer unified **search** first; use discover senses to refine.
|
|
|
200
200
|
|
|
201
201
|
### Discovery (product idea)
|
|
202
202
|
|
|
203
|
-
Surface existing agents/skills instead of reinventing. Guiding phrase:
|
|
203
|
+
Surface existing agents/skills instead of reinventing. Guiding phrase: *"Google for agents."*
|
|
204
204
|
|
|
205
205
|
### Emit
|
|
206
206
|
|
|
@@ -220,7 +220,7 @@ Download or retrieve skill content / candidates (catalog search, `skills use`, p
|
|
|
220
220
|
|
|
221
221
|
### File injection / shims / templates
|
|
222
222
|
|
|
223
|
-
Write skill/rule/agent markdown and MCP JSON/TOML/YAML into the local agent
|
|
223
|
+
Write skill/rule/agent markdown and MCP JSON/TOML/YAML into the local agent's tree. Contrast with **native plugin** install.
|
|
224
224
|
|
|
225
225
|
### Filter / quality filter
|
|
226
226
|
|
|
@@ -232,11 +232,11 @@ Enable every-prompt skill hooks so discovery can run automatically on user promp
|
|
|
232
232
|
|
|
233
233
|
### Frontmatter
|
|
234
234
|
|
|
235
|
-
YAML header inside a skill file (name, description,
|
|
235
|
+
YAML header inside a skill file (name, description, ...) used when **summarizing** / **materializing** skill content.
|
|
236
236
|
|
|
237
237
|
### Get (detail)
|
|
238
238
|
|
|
239
|
-
Fetch full profile for one agent (skills, pricing, trust) or full content for one skill
|
|
239
|
+
Fetch full profile for one agent (skills, pricing, trust) or full content for one skill -- after search/discover.
|
|
240
240
|
|
|
241
241
|
### Hermes (Nous)
|
|
242
242
|
|
|
@@ -244,7 +244,7 @@ Local agent with a **native in-process plugin** (no MCP subprocess).
|
|
|
244
244
|
|
|
245
245
|
### Hire
|
|
246
246
|
|
|
247
|
-
Historical / future verb for paying to use a marketplace agent. **Not** part of current discovery copy. Prefer **present, don
|
|
247
|
+
Historical / future verb for paying to use a marketplace agent. **Not** part of current discovery copy. Prefer **present, don't transact**.
|
|
248
248
|
|
|
249
249
|
### Hook / skill-hook
|
|
250
250
|
|
|
@@ -252,15 +252,15 @@ Lifecycle callbacks on Claude Code (prompt submit, after tools, stop) that disco
|
|
|
252
252
|
|
|
253
253
|
### Inject / injection
|
|
254
254
|
|
|
255
|
-
Write Agent-net wiring or skill outcome into the local agent
|
|
255
|
+
Write Agent-net wiring or skill outcome into the local agent's config or context.
|
|
256
256
|
|
|
257
257
|
### Inspect
|
|
258
258
|
|
|
259
|
-
Ask for full detail on one already-found agent or skill. Follows Discover
|
|
259
|
+
Ask for full detail on one already-found agent or skill. Follows Discover -> Surface -> Inspect.
|
|
260
260
|
|
|
261
261
|
### Install method
|
|
262
262
|
|
|
263
|
-
How the CLI itself was installed (uv tool, pipx, npm, pip)
|
|
263
|
+
How the CLI itself was installed (uv tool, pipx, npm, pip) -- used to **upgrade** correctly.
|
|
264
264
|
|
|
265
265
|
### Installs (popularity)
|
|
266
266
|
|
|
@@ -280,7 +280,7 @@ Which family search returns: all, marketplace/listings, agents, skills, plugins.
|
|
|
280
280
|
|
|
281
281
|
### List
|
|
282
282
|
|
|
283
|
-
Enumerate entities without a query (e.g. agents in the org)
|
|
283
|
+
Enumerate entities without a query (e.g. agents in the org) -- contrast with **search** / **discover**.
|
|
284
284
|
|
|
285
285
|
### Listing
|
|
286
286
|
|
|
@@ -324,11 +324,11 @@ User or agent text sent when **using** or **continuing** a marketplace session.
|
|
|
324
324
|
|
|
325
325
|
### Native plugin
|
|
326
326
|
|
|
327
|
-
Install via the agent
|
|
327
|
+
Install via the agent's own plugin system (Claude marketplace, OpenClaw plugins, Hermes plugins) rather than only merging MCP JSON.
|
|
328
328
|
|
|
329
329
|
### Negotiate
|
|
330
330
|
|
|
331
|
-
Obtain skill help via the platform when local fetch fails
|
|
331
|
+
Obtain skill help via the platform when local fetch fails -- brokered call to the Skills Agent.
|
|
332
332
|
|
|
333
333
|
### Outcome
|
|
334
334
|
|
|
@@ -336,7 +336,7 @@ Final text the skill-hook injects: recommendation list and/or top-match skill co
|
|
|
336
336
|
|
|
337
337
|
### Peek / pre / post
|
|
338
338
|
|
|
339
|
-
Skill-hook phases: **pre** (on prompt
|
|
339
|
+
Skill-hook phases: **pre** (on prompt -- spawn worker), **peek** (mid-flight after tools -- steer if ready), **post** (on stop -- guaranteed fallback inject).
|
|
340
340
|
|
|
341
341
|
### Permission / auto-approval
|
|
342
342
|
|
|
@@ -352,7 +352,7 @@ Backend API (production `https://app.agentnet.market`). Hub for discovery, auth,
|
|
|
352
352
|
|
|
353
353
|
### Platform URL / resolve / precedence
|
|
354
354
|
|
|
355
|
-
How the CLI picks which backend to talk to: explicit URL
|
|
355
|
+
How the CLI picks which backend to talk to: explicit URL -> env URL -> named env (dev/staging/prod) -> saved config -> production default.
|
|
356
356
|
|
|
357
357
|
### Plugin
|
|
358
358
|
|
|
@@ -360,9 +360,9 @@ Package that extends a coding agent. In unified search, the plugins family route
|
|
|
360
360
|
|
|
361
361
|
### Poll secret / login id
|
|
362
362
|
|
|
363
|
-
Opaque tokens for the browser login **poll** loop (not user-facing vocabulary beyond
|
|
363
|
+
Opaque tokens for the browser login **poll** loop (not user-facing vocabulary beyond "waiting for sign-in").
|
|
364
364
|
|
|
365
|
-
### Present, don
|
|
365
|
+
### Present, don't transact
|
|
366
366
|
|
|
367
367
|
Discovery policy: show options and how to install/use them; never hire, pay, settle, or force a choice.
|
|
368
368
|
|
|
@@ -392,7 +392,7 @@ Local agent is **detected** but not yet **connected**.
|
|
|
392
392
|
|
|
393
393
|
### Recommendation
|
|
394
394
|
|
|
395
|
-
Short list of relevant skills (name + why + link) shown when the gate opens
|
|
395
|
+
Short list of relevant skills (name + why + link) shown when the gate opens -- before or without full skill body dump.
|
|
396
396
|
|
|
397
397
|
### Record / remove (connection)
|
|
398
398
|
|
|
@@ -448,7 +448,7 @@ Reusable methodology package (often SKILL.md + references). Distinct from a live
|
|
|
448
448
|
|
|
449
449
|
### Skill discovery
|
|
450
450
|
|
|
451
|
-
Pipeline: **expand** use case
|
|
451
|
+
Pipeline: **expand** use case -> search catalogs -> **deduplicate** / **filter** -> **rank** -> return candidates.
|
|
452
452
|
|
|
453
453
|
### Skills Agent
|
|
454
454
|
|
|
@@ -464,7 +464,7 @@ Ranking signal: same skill appearing in more catalogs scores higher.
|
|
|
464
464
|
|
|
465
465
|
### Spawn / worker / detached
|
|
466
466
|
|
|
467
|
-
Background process started on prompt submit to discover/classify without blocking the user
|
|
467
|
+
Background process started on prompt submit to discover/classify without blocking the user's latency path.
|
|
468
468
|
|
|
469
469
|
### Stale (connection)
|
|
470
470
|
|
|
@@ -488,7 +488,7 @@ Reduce a full skill file to a concise header (name + description) plus on-disk p
|
|
|
488
488
|
|
|
489
489
|
### Surface (verb)
|
|
490
490
|
|
|
491
|
-
Show a relevant match without forcing adoption. Discover
|
|
491
|
+
Show a relevant match without forcing adoption. Discover -> Surface -> Inspect.
|
|
492
492
|
|
|
493
493
|
### Tags
|
|
494
494
|
|
|
@@ -504,7 +504,7 @@ Confirm credentials and inspect token metadata against the platform.
|
|
|
504
504
|
|
|
505
505
|
### Trust score
|
|
506
506
|
|
|
507
|
-
Reputation signal on a marketplace agent profile
|
|
507
|
+
Reputation signal on a marketplace agent profile -- reason to **inspect** an agent.
|
|
508
508
|
|
|
509
509
|
### Update / upgrade / self-upgrade
|
|
510
510
|
|
|
@@ -512,7 +512,7 @@ Bring the CLI package to the latest release, then **refresh** connected integrat
|
|
|
512
512
|
|
|
513
513
|
### Use (an agent)
|
|
514
514
|
|
|
515
|
-
Invoke a marketplace agent with a **task** (creates a **session**). Used internally for brokered A2A; not part of
|
|
515
|
+
Invoke a marketplace agent with a **task** (creates a **session**). Used internally for brokered A2A; not part of "present, don't transact" discovery copy.
|
|
516
516
|
|
|
517
517
|
### Use case
|
|
518
518
|
|
|
@@ -536,9 +536,9 @@ See **spawn**. Detached process that fetches candidates, classifies, and writes
|
|
|
536
536
|
|
|
537
537
|
---
|
|
538
538
|
|
|
539
|
-
## Action vocabulary (from the CLI
|
|
539
|
+
## Action vocabulary (from the CLI's important behaviors)
|
|
540
540
|
|
|
541
|
-
Grouped meaning-words
|
|
541
|
+
Grouped meaning-words -- use these instead of inventing synonyms:
|
|
542
542
|
|
|
543
543
|
| Cluster | Words |
|
|
544
544
|
|---------|--------|
|
|
@@ -570,7 +570,7 @@ Grouped meaning-words — use these instead of inventing synonyms:
|
|
|
570
570
|
| Layer | Meaning |
|
|
571
571
|
|-------|---------|
|
|
572
572
|
| **cli** | User-facing commands; thin UX |
|
|
573
|
-
| **connectors** | Per
|
|
573
|
+
| **connectors** | Per-local-agent install/uninstall |
|
|
574
574
|
| **marketplace** | Platform + catalog HTTP clients |
|
|
575
575
|
| **tools** | MCP + Hermes tool surface |
|
|
576
576
|
| **infra** | Config, paths, manifest, platform URL |
|
|
@@ -578,15 +578,15 @@ Grouped meaning-words — use these instead of inventing synonyms:
|
|
|
578
578
|
|
|
579
579
|
---
|
|
580
580
|
|
|
581
|
-
## Ambiguous terms
|
|
581
|
+
## Ambiguous terms -- preferred usage
|
|
582
582
|
|
|
583
583
|
| Prefer | Avoid / clarify |
|
|
584
584
|
|--------|-----------------|
|
|
585
|
-
| **Local agent** vs **marketplace agent** | Bare
|
|
585
|
+
| **Local agent** vs **marketplace agent** | Bare "agent" when both appear in one sentence |
|
|
586
586
|
| **Search** first | Jumping straight to a single catalog |
|
|
587
|
-
| **Listing** for marketplace products | Calling every result an
|
|
588
|
-
| **Skill** for installable methodology packages | Calling every plugin a
|
|
589
|
-
| **Connect** for wiring local tools |
|
|
587
|
+
| **Listing** for marketplace products | Calling every result an "agent" |
|
|
588
|
+
| **Skill** for installable methodology packages | Calling every plugin a "skill" |
|
|
589
|
+
| **Connect** for wiring local tools | "Install Agent-net" when you mean connect |
|
|
590
590
|
| **Present** matches | **Hire** / **settle** in discovery copy |
|
|
591
591
|
| **Agent-net** in prose | Mixing AgentNet / agent-net randomly in the same paragraph |
|
|
592
592
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 TheAgent-net
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|