devagentic-docs: add docs SKILL.md + register it (mirror canvas)#23
Merged
Conversation
The canvas plugin ships skills/canvas/SKILL.md and registers it via ctx.register_skill(); the docs plugin had no analog. Add the parallel surface so operators can `/skill devagentic-docs:docs` (or `skill_view`) for the slash-command reference inline. Skill content covers: - /doc and /fork command tables. - The state-aware preamble + the 8000-char cap. - The /graphql-over-HTTP transport caveat (#21) with the curl probe. - Tag-schema convention (source:hermes-cli + user:<id> + kind:<>). Plugin __init__.py picks up the SKILL.md path the same way canvas does — best-effort register, debug-log if the file is missing. Tests: 47 passed (45 prior + 2 new — frontmatter parse + register_skill invocation).
This was referenced May 22, 2026
PowerCreek
added a commit
that referenced
this pull request
May 22, 2026
Mirrors the canvas-tools pattern (#56) for the just-shipped devagentic-docs plugin (#12 / PRs #19+#20+#23). MCP-aware clients (Claude Code, Cursor, Codex) can now writeDoc / searchDocs / forkContext / decorateContext / renderContext against any devagentic instance hermes is configured for. New tools (7): - doc_search(query, limit, tag) → search_docs - doc_write(content, tags, source) → write_doc - doc_show(doc_id) → get_doc - fork_open(parent_id, goal, tags) → fork_context (auto-pins parent + threads goal) - fork_decorate(ctx_id, key, value, weight) → decorate_context - fork_get(ctx_id) → get_context - fork_render(ctx_id) → render_context (envelope: {ctx_id, rendered}) Loader pattern: _resolve_docs_client() mirrors _resolve_canvas_client at line 880 — file-path import of plugins/devagentic-docs/client.py since the hyphenated dir isn't a Python package. Failure semantics: every tool returns {"error": "<msg>"} JSON. The plugin's last_error_text() pattern (introduced in #15) threads through via a _reason() helper, so federated agents see the same actionable hints CLI users get — e.g. on the canonical devbox deployment (where /graphql isn't exposed, see #21), they'd see "not found at <url>/graphql ..." instead of an opaque None. Out of scope per #24: fork_close + fork_pin depend on the session-local $HERMES_HOME/docs-fork-active marker, which doesn't translate to MCP's stateless tool model. fork_open auto-tags with source:hermes-mcp so MCP-authored forks are distinguishable from CLI-authored ones (source:hermes-cli). Tests: 22 new (tests/test_mcp_docs.py) covering registration, plugin-missing fallback, arg routing, last_error surfacing for the #21 case, and the real-import smoke. All passing alongside canvas MCP suite (14 existing) and the broader devagentic- adjacent test set (159 total). Closes #24.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The canvas plugin ships
skills/canvas/SKILL.mdand registers it viactx.register_skill()(seeplugins/devagentic-canvas/__init__.py). The docs plugin had no analog. This PR adds the parallel surface so operators can pull up the slash-command reference inline via the skill system.What's in the SKILL.md
/docand/forkcommand tables (the same surface as the README, but in the hermes skill format with frontmatter)./graphql-over-HTTP transport caveat ([synergy] Devagentic GraphQL adapters silently 404 — /graphql isn't exposed over HTTP on the canonical deployment #21) with the curl probe — same wording as the README so operators see it whether they read the README or load the skill.source:hermes-cli+user:<id>+kind:<>).Plugin wiring
plugins/devagentic-docs/__init__.pynow registers the skill the same way canvas does — best-effort, debug-logs if the file is missing.Test plan
tests/test_devagentic_docs_plugin.py:test_skill_md_parses_and_has_expected_name— frontmatter parses, surface tables present, [synergy] Devagentic GraphQL adapters silently 404 — /graphql isn't exposed over HTTP on the canonical deployment #21 referenced.test_register_skill_invoked_with_docs— drivingregister()with a stubctxrecords aregister_skill(name="docs", path=…/SKILL.md)call.pytest tests/test_devagentic_docs_plugin.py→ 47 passed (45 prior + 2 new).Filed by hermes-maintainer (PowerCreek).