HKUDS/DeepTutor · error · HubError
{self.name}: HTTP {response.status_code}: {response.text[:20
Error message
{self.name}: HTTP {response.status_code}: {response.text[:200]} What it means
Raised by list_my_skills when the hub returns an unexpected HTTP >= 400 (other than 401/403) to the owner=me listing. The message includes the status code and first 200 characters of the response body for diagnosis.
Source
Thrown at deeptutor/services/skill/hub.py:506
"""List the authenticated user's skills via ``GET /skills?owner=me``.
Each row carries the slug, current ``version`` (latest), the full
``versions`` list (for rollback) and the current classification (for
pre-filling an upgrade's tagging) — see ``buildMySkills`` on the hub.
"""
url = f"{self._base_url}/skills"
try:
response = self._client.get(
url, params={"owner": "me"}, headers={"Authorization": f"Bearer {token}"}
)
except httpx.HTTPError as exc:
raise HubError(f"{self.name}: request failed: {exc}") from exc
if response.status_code in (401, 403):
raise HubError(
f"{self.name}: not authenticated — run `skill login` or pass a valid token."
)
if response.status_code >= 400:
raise HubError(f"{self.name}: HTTP {response.status_code}: {response.text[:200]}")
try:
payload = response.json()
except ValueError as exc:
raise HubError(f"{self.name}: invalid JSON listing skills") from exc
rows = payload.get("skills") if isinstance(payload, dict) else None
return [row for row in (rows or []) if isinstance(row, dict)]
def set_dist_tag(
self,
slug: str,
*,
version: str,
token: str,
tag: str = "latest",
) -> dict[str, Any]:
"""Move a dist-tag (default ``latest``) to an existing version (rollback)."""
url = f"{self._base_url}/skills/{slug}/dist-tags"
try:View on GitHub (pinned to 3e82f13042)
Solutions
- Read the embedded body snippet to identify the server-side cause
- Retry after a delay if rate-limited (429)
- Upgrade/align the hub version so /skills?owner=me exists
- Report 5xx errors to the hub operator
Defensive patterns
Strategy: try-catch
Try / catch
try:
hub.list_my_skills(token)
except HubError as e:
if "HTTP 429" in str(e):
time.sleep(int(e_retry_after or 30)); return hub.list_my_skills(token)
raise Prevention
- Rate-limit your own polling
- Surface the embedded body snippet in logs for diagnosis
When it happens
Trigger: Calling list_my_skills when the hub hits 500, returns 404 (endpoint absent in that hub version), or 429 (rate limited).
Common situations: Hub version that lacks the owner=me filter; server-side error; rate limiting from aggressive polling.
Related errors
- {self.name}: invalid JSON listing skills
- Embedding provider returned HTTP {response.status_code}
- OpenAI SDK request failed: {exc}
- OpenAI API error: {error_text}
- OpenAI stream error: {error_text}
AI-assisted analysis of HKUDS/DeepTutor@3e82f13042 (2026-08-27).
Data as JSON: /api/errors/867f51c8272fd977.
Report an issue: GitHub.