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.
Files changed (159) hide show
  1. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/CHANGELOG.md +7 -0
  2. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/CLAUDE.md +5 -3
  3. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/GLOSSARY.md +42 -42
  4. agentnet_cli-0.4.1/LICENSE +21 -0
  5. agentnet_cli-0.4.1/PKG-INFO +409 -0
  6. agentnet_cli-0.4.1/README.md +381 -0
  7. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/pyproject.toml +1 -1
  8. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/templates/SKILL.hosted.md +1 -1
  9. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/openclaw/openclaw.plugin.json +1 -1
  10. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/openclaw/package.json +1 -1
  11. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/client.py +50 -1
  12. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/skills/discovery.py +39 -4
  13. agentnet_cli-0.4.1/src/agentnet_cli/tools/claude_hook.py +206 -0
  14. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/hermes/plugin.yaml +1 -1
  15. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/skillfire/__init__.py +7 -1
  16. agentnet_cli-0.4.1/src/agentnet_cli/tools/skillfire/broker.py +205 -0
  17. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/skillfire/candidates.py +18 -2
  18. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/skillfire/classifier.py +35 -6
  19. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/skillfire/config.py +6 -0
  20. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/skillfire/steer.py +38 -0
  21. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/skillfire/worker.py +79 -7
  22. agentnet_cli-0.4.1/tests/skillfire/test_broker.py +146 -0
  23. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/skillfire/test_candidates.py +32 -0
  24. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/skillfire/test_classifier.py +46 -5
  25. agentnet_cli-0.4.1/tests/skillfire/test_steer.py +88 -0
  26. agentnet_cli-0.4.1/tests/skillfire/test_worker.py +453 -0
  27. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_claude_hook.py +129 -0
  28. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_discovery.py +52 -0
  29. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_platform_client.py +57 -0
  30. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/uv.lock +1 -1
  31. agentnet_cli-0.4.0/PKG-INFO +0 -264
  32. agentnet_cli-0.4.0/README.md +0 -237
  33. agentnet_cli-0.4.0/src/agentnet_cli/tools/claude_hook.py +0 -93
  34. agentnet_cli-0.4.0/src/agentnet_cli/tools/skillfire/broker.py +0 -82
  35. agentnet_cli-0.4.0/tests/skillfire/test_broker.py +0 -58
  36. agentnet_cli-0.4.0/tests/skillfire/test_steer.py +0 -19
  37. agentnet_cli-0.4.0/tests/skillfire/test_worker.py +0 -239
  38. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/.github/workflows/ci.yml +0 -0
  39. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/.github/workflows/publish.yml +0 -0
  40. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/.gitignore +0 -0
  41. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/ARCHITECTURE.md +0 -0
  42. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/docs/archive/superpowers/plans/2026-05-09-hermes-native-plugin.md +0 -0
  43. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/docs/archive/superpowers/plans/2026-05-09-marketplace-cli-and-skill.md +0 -0
  44. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/docs/archive/superpowers/plans/2026-05-10-claude-native-plugin.md +0 -0
  45. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/docs/archive/superpowers/plans/2026-05-10-openclaw-native-plugin.md +0 -0
  46. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/docs/archive/superpowers/specs/2026-05-09-hermes-native-plugin-design.md +0 -0
  47. {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
  48. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/docs/archive/superpowers/specs/2026-05-10-claude-native-plugin-design.md +0 -0
  49. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/docs/archive/superpowers/specs/2026-05-10-openclaw-native-plugin-design.md +0 -0
  50. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/__init__.py +0 -0
  51. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/__init__.py +0 -0
  52. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/core/__init__.py +0 -0
  53. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/core/connect.py +0 -0
  54. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/core/detect.py +0 -0
  55. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/core/disconnect.py +0 -0
  56. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/core/register.py +0 -0
  57. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/core/setup_wizard.py +0 -0
  58. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/core/status.py +0 -0
  59. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/core/updater.py +0 -0
  60. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/main.py +0 -0
  61. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/marketplace/__init__.py +0 -0
  62. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/marketplace/agent.py +0 -0
  63. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/cli/marketplace/discover.py +0 -0
  64. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/README.md +0 -0
  65. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/__init__.py +0 -0
  66. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/base.py +0 -0
  67. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/claude.py +0 -0
  68. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/claude_search_hook.py +0 -0
  69. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/codex.py +0 -0
  70. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/copilot.py +0 -0
  71. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/cursor.py +0 -0
  72. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/cursor_hook.py +0 -0
  73. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/hermes.py +0 -0
  74. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/hermes_hook.py +0 -0
  75. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/openclaw.py +0 -0
  76. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/registry.py +0 -0
  77. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/shims.py +0 -0
  78. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/templates/README.md +0 -0
  79. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/templates/codex/skill.md +0 -0
  80. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/templates/copilot/agentnet.agent.md +0 -0
  81. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/templates/cursor/agent.md +0 -0
  82. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/templates/cursor/agentnet.mdc +0 -0
  83. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/templates/shared/context.md +0 -0
  84. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/templates/shared/default-chat.md +0 -0
  85. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/templates/vscode/instructions.md +0 -0
  86. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/connectors/vscode.py +0 -0
  87. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/infra/__init__.py +0 -0
  88. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/infra/config.py +0 -0
  89. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/infra/manifest.py +0 -0
  90. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/infra/package_paths.py +0 -0
  91. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/infra/paths.py +0 -0
  92. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/infra/platform.py +0 -0
  93. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/claude/.claude-plugin/marketplace.json +0 -0
  94. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/claude/plugin/.claude-plugin/plugin.json +0 -0
  95. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/claude/plugin/.mcp.json +0 -0
  96. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/claude/plugin/agents/marketplace.md +0 -0
  97. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/claude/plugin/hooks/hooks.json +0 -0
  98. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/claude/plugin/skills/agentnet/SKILL.md +0 -0
  99. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/openclaw/.mcp.json +0 -0
  100. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/openclaw/index.js +0 -0
  101. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/openclaw/skills/agentnet/SKILL.md +0 -0
  102. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/integrations/shared/discovery-skill.base.md +0 -0
  103. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/__init__.py +0 -0
  104. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/auth.py +0 -0
  105. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/catalogs/__init__.py +0 -0
  106. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/catalogs/claude_marketplace.py +0 -0
  107. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/catalogs/clawhub.py +0 -0
  108. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/skills/__init__.py +0 -0
  109. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/skills/client.py +0 -0
  110. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/marketplace/skills/skillsmp.py +0 -0
  111. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/__init__.py +0 -0
  112. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/cursor_hook.py +0 -0
  113. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/handlers.py +0 -0
  114. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/hermes/__init__.py +0 -0
  115. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/hermes/handlers.py +0 -0
  116. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/hermes/schemas.py +0 -0
  117. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/hermes/skills/agentnet/SKILL.md +0 -0
  118. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/hermes_hook.py +0 -0
  119. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/mcp_server.py +0 -0
  120. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/skillfire/content.py +0 -0
  121. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/skillfire/render.py +0 -0
  122. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/src/agentnet_cli/tools/skillfire/session.py +0 -0
  123. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/__init__.py +0 -0
  124. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/conftest.py +0 -0
  125. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/skillfire/__init__.py +0 -0
  126. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/skillfire/test_config.py +0 -0
  127. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/skillfire/test_content.py +0 -0
  128. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/skillfire/test_init.py +0 -0
  129. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/skillfire/test_render.py +0 -0
  130. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_agent_cmd.py +0 -0
  131. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_claude.py +0 -0
  132. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_claude_marketplace.py +0 -0
  133. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_claude_search_hook.py +0 -0
  134. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_clawhub_client.py +0 -0
  135. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_cli.py +0 -0
  136. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_codex.py +0 -0
  137. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_config.py +0 -0
  138. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_copilot.py +0 -0
  139. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_cursor.py +0 -0
  140. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_cursor_hook.py +0 -0
  141. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_detect.py +0 -0
  142. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_discover_cmd.py +0 -0
  143. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_discovery_skill.py +0 -0
  144. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_e2e.py +0 -0
  145. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_hermes.py +0 -0
  146. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_hermes_hook.py +0 -0
  147. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_hermes_plugin.py +0 -0
  148. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_manifest.py +0 -0
  149. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_marketplace.py +0 -0
  150. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_mcp_tools.py +0 -0
  151. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_openclaw.py +0 -0
  152. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_paths.py +0 -0
  153. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_platform_config.py +0 -0
  154. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_register.py +0 -0
  155. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_server.py +0 -0
  156. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_skills_client.py +0 -0
  157. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_skillsmp_client.py +0 -0
  158. {agentnet_cli-0.4.0 → agentnet_cli-0.4.1}/tests/test_updater.py +0 -0
  159. {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 (475 tests), pytest-cov
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 hard-nudge text or `None`), `check_fallback(session, *, timeout)` (turn-end fallback text or `None`), `run_fetch` (the CLI-invoked worker entrypoint), plus the `SUBAGENT_ENV`/`AGENTNET_SENTINEL` constants. 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` to force-steer the agent **mid-flight** once the outcome is ready (`{"decision":"block","reason":…}`); `Stop` → `agentnet skill-hook --post` calls `skillfire.check_fallback`, the guaranteed fallback (`{"decision":"block", …additionalContext}`) for no-tool answers. 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`.
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** the tool that detects local AI coding agents and connects them to the Agent-net marketplace.
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 (AgentNet CLI identity) |
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
- ## AZ glossary
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 agents help (e.g. Skills Agent), it uses **brokered A2A**: the users CLI credentials ask the platform to talk to that agent and return a **settled** session. The CLI never holds the remote agents token.
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 skills methodology (read on-disk skill content and act), not merely mention the skills name.
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 users machine that the CLI can **detect** and **connect** Claude Code, Cursor, GitHub Copilot, VS Code, OpenAI Codex, Hermes, OpenClaw. Distinct from a **marketplace agent**.
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
- Perlocal-agent adapter that can **detect**, **connect**, and **disconnect**. Injects MCP config, context/skill files, and permission rules or installs a **native plugin**.
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`, ) vs human label (GitHub Copilot”, VS Code).
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 platform remote agent **settled** response, under the users setup identity.
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 Claudes own marketplace/install path (skills, hooks, MCP), not only raw file writes.
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 + applying top match content).
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 agents home config directory (e.g. `~/.claude`, `~/.cursor`) used for detect/connect.
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 connector implementation.
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: *“Google for agents.”*
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 agents tree. Contrast with **native plugin** install.
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, ) used when **summarizing** / **materializing** skill content.
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 after search/discover.
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, dont transact**.
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 agents config or context.
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 Surface Inspect.
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) used to **upgrade** correctly.
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) contrast with **search** / **discover**.
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 agents own plugin system (Claude marketplace, OpenClaw plugins, Hermes plugins) rather than only merging MCP JSON.
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 brokered call to the Skills Agent.
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 spawn worker), **peek** (mid-flight after tools steer if ready), **post** (on stop guaranteed fallback inject).
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 env URL named env (dev/staging/prod) saved config production default.
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 waiting for sign-in).
363
+ Opaque tokens for the browser login **poll** loop (not user-facing vocabulary beyond "waiting for sign-in").
364
364
 
365
- ### Present, dont transact
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 before or without full skill body dump.
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 search catalogs **deduplicate** / **filter** **rank** return candidates.
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 users latency path.
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 Surface Inspect.
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 reason to **inspect** an agent.
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 present, dont transact discovery copy.
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 CLIs important behaviors)
539
+ ## Action vocabulary (from the CLI's important behaviors)
540
540
 
541
- Grouped meaning-words use these instead of inventing synonyms:
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** | Perlocal-agent install/uninstall |
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 preferred usage
581
+ ## Ambiguous terms -- preferred usage
582
582
 
583
583
  | Prefer | Avoid / clarify |
584
584
  |--------|-----------------|
585
- | **Local agent** vs **marketplace agent** | Bare agent when both appear in one sentence |
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 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 |
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.