feat: add honeyhive-tracing and honeyhive-evaluators skills for coding agents#301
Conversation
…g agents Co-Authored-By: Dhruv <dhruv@honeyhive.ai>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
|
Claude finished @devin-ai-integration[bot]'s task in 4m 42s —— View job Review CompleteReviewed both SKILL.md files against the actual SDK source code in Review Checklist
SummaryAll API signatures verified — high accuracy overall. Found 2 issues:
See top-level review comment for full details including the API verification table. |
| # api_key and project are read from HH_API_KEY / HH_PROJECT env vars | ||
| # or pass explicitly: | ||
| # api_key=os.getenv("HH_API_KEY"), | ||
| # project=os.getenv("HH_PROJECT"), |
There was a problem hiding this comment.
Inaccuracy: project is NOT auto-read from env vars by evaluate()
Looking at the evaluate() implementation in src/honeyhive/experiments/core.py:812, the project parameter defaults to "default" — it does not auto-read from HH_PROJECT or HONEYHIVE_PROJECT. Only api_key and server_url are loaded from env vars (lines 923-932).
This comment will mislead coding agents into omitting project, which will silently use "default" instead of the user's actual project.
Suggest changing to:
| # api_key and project are read from HH_API_KEY / HH_PROJECT env vars | |
| # or pass explicitly: | |
| # api_key=os.getenv("HH_API_KEY"), | |
| # project=os.getenv("HH_PROJECT"), | |
| name="intent-classifier-v1", | |
| # api_key is read from HH_API_KEY env var if not provided | |
| # project must be passed explicitly (does not auto-read from env): | |
| project=os.getenv("HH_PROJECT", "my-project"), | |
| # api_key=os.getenv("HH_API_KEY"), |
Alternatively, fix the SDK's evaluate() to actually read HH_PROJECT from env (which would be the better long-term fix).
There was a problem hiding this comment.
Fixed in 1475f38. Updated all evaluate() calls to pass project= explicitly. Also updated the comment to clarify that only api_key is auto-read from env, not project.
Overall ReviewGood work overall. Both SKILL.md files are well-structured, comprehensive, and the vast majority of API signatures and patterns have been verified against the actual SDK source. The tracing skill covers all key patterns (scripts, web servers, serverless, distributed tracing) and the evaluators skill provides a clear progression from dataset → function → evaluators → experiments. API accuracy is high. I cross-referenced every public API referenced in these files against the implementation:
Two issues found (see inline comments):
Aside — SDK inconsistency worth noting: |
…per bot review Co-Authored-By: Dhruv <dhruv@honeyhive.ai>
feat: add honeyhive-tracing and honeyhive-evaluators agent skills
Summary
Adds two new reusable SKILL.md files under
.agents/skills/that coding agents can invoke when integrating HoneyHive tracing or evaluators into Python applications. Content is grounded in the mintlify docs (fix/docs-conceptsbranch) and the SDK implementation on this branch.honeyhive-tracing/SKILL.md(~516 lines) covers:@tracedecorator and context managershoneyhive-evaluators/SKILL.md(~460 lines) covers:evaluate()evaluate(), the "no global tracer" constraint)No functional code changes — documentation/skill files only.
Updates since last revision
Fixed two bugs caught by automated review:
dataset=→dataset_id=for managed dataset references inevaluate()— thedatasetparam expectsList[Dict], not a string IDprojectmust be passed explicitly toevaluate()— it does NOT auto-read fromHH_PROJECTenv var (defaults to"default"silently). Updated allevaluate()examples to includeproject=os.getenv("HH_PROJECT", "my-project")Review & Testing Checklist for Human
from honeyhive.tracer.processing.context import enrich_span_context, inject_context_into_carrier, with_distributed_trace_context. Confirm these exist with the documented call signatures.acreate_session(skip_api_call=True)pattern — used in the multi-turn conversation example. Confirm this parameter exists and behaves as documented (sets context without making an API call).Notes
honeyhive-ai-docsrepo (fix/docs-conceptsbranch) and this SDK branch's source code..mdfiles only. CI passes trivially.BaseEvaluator.__call__uses arg order(inputs, outputs, ground_truth)while_run_evaluators()calls free functions as(outputs, inputs, ground_truth). Not a docs issue (the skills correctly document the free-function signature), but worth noting for SDK maintainers.Link to Devin session: https://app.devin.ai/sessions/2389f4ddad45413780f8b3b3efaca64c
Requested by: @dhruv-hhai