Skip to content

feat(docs): add Tom & Jerry onboarding skill (Claude Code, Codex, Cursor)#330

Open
alon-zino-rosenblum-thenvoi wants to merge 4 commits into
mainfrom
onboarding-skill
Open

feat(docs): add Tom & Jerry onboarding skill (Claude Code, Codex, Cursor)#330
alon-zino-rosenblum-thenvoi wants to merge 4 commits into
mainfrom
onboarding-skill

Conversation

@alon-zino-rosenblum-thenvoi

@alon-zino-rosenblum-thenvoi alon-zino-rosenblum-thenvoi commented May 29, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds a skills/onboarding/ directory with three platform-flavored markdown skills (Claude Code, Codex, Cursor) that scaffold a working Tom & Jerry agent pair from credentials supplied by band.ai's onboarding flow. The skills fetch the live examples/<adapter>/*_agent.py files at runtime and apply documented transformations, so no example code is duplicated and the skill auto-tracks upstream SDK changes.

Changes

  • New skills/onboarding/SKILL.md — Claude Code variant (uses AskUserQuestion, WebFetch, run_in_background).
  • New skills/onboarding/codex.md — OpenAI Codex variant (numbered-list questions, curl, nohup).
  • New skills/onboarding/cursor.md — Cursor Agent variant (same conventions as Codex).
  • Six adapters covered via a two-stage picker: langgraph, crewai, pydantic_ai, anthropic, claude_sdk, parlant.
  • Conditional Anthropic dep pins for crewai + pydantic_ai when paired with Anthropic LLM (crewai[anthropic]==1.14.3 / pydantic-ai-slim[anthropic]>=1.56.0).
  • requires-python = ">=3.11,<3.14" + .python-version=3.12 in the generated pyproject.toml to avoid pydantic-core's PyO3 3.14 build failure.
  • Generated project uses band-sdk from PyPI (no git source).
  • Loud failure on branch-detection ambiguity (no silent main fallback) so the skill never pulls examples from a different branch than where it was loaded from.

Related Issues

None opened against this repo yet. Three upstream SDK bugs were surfaced during testing — none caused by this PR, but worth tracking separately:

  • pydantic_ai adapter passes output_type=None to pydantic_ai.Agent(...); current pydantic-ai-slim rejects this and the adapter crashes at startup. Both pydantic_ai combos fail.
  • parlant adapter has no per-agent uvicorn port override; Tom + Jerry on one machine collide on the default port (8818).
  • claude_sdk adapter intermittently (~20% repro rate) ends its turn mid-task without invoking thenvoi_send_message; subsequent inbound messages don't recover the session, only a process restart does.

Testing

Verified end-to-end by scaffolding agents into per-combo directories, launching them locally, creating fresh chats via the human REST API (POST /me/chatsPOST /me/chats/{id}/participantsPOST /me/chats/{id}/messages), sending @Tom catch jerry, and confirming both agents exchanged messages on the platform:

Combo Result
langgraph + OpenAI
langgraph + Anthropic
crewai + OpenAI
crewai + Anthropic
anthropic
claude_sdk ✓ (occasional first-turn stall, recovers on process restart)
pydantic_ai + OpenAI ✗ (upstream SDK bug, see Related Issues)
pydantic_ai + Anthropic ✗ (upstream SDK bug, see Related Issues)
parlant ✗ (upstream SDK bug, see Related Issues)

Also verified by giving the same procedure to Codex via codex.md: Codex compiled the skill into a Python scaffolder and produced functionally identical outputs across all 9 adapter combos. The skill is platform-portable.

  • Unit tests pass (uv run pytest tests/ --ignore=tests/integration/)
  • Pre-commit checks pass (uv run pre-commit run --all-files)
  • Integration tests pass (if applicable) — N/A; this PR is markdown-only and touches no Python.

Checklist

  • PR title follows Conventional Commits format
  • Code follows project style guidelines (markdown-only PR; no Python changed)
  • Tests added/updated as needed (no automated tests applicable; manual end-to-end verification documented above)
  • Documentation updated as needed (this PR is documentation)

Adds skills/onboarding/SKILL.md, a fetch-and-transform skill that
scaffolds a working Tom & Jerry agent pair on the Band.ai platform
from credentials in pasted onboarding text. Fetches the live example
files at runtime and applies documented transformations, so the skill
tracks upstream changes without duplicating agent code.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
AskUserQuestion caps at 4 options, so the original single-question picker
silently dropped parlant and pydantic_ai. Split into a runtime-category
question (framework / Anthropic / Claude SDK / Parlant) followed by a
framework-specific question that only fires for the framework bucket.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- crewai+Anthropic and pydantic_ai+Anthropic now add the right extras to
  pyproject.toml so the native Anthropic providers resolve correctly
- Cap requires-python at <3.14 and write a .python-version to avoid
  pydantic-core PyO3 build failures on Python 3.14
- Replace the upstream module docstring with a one-liner so the file
  doesn't claim it must be run from the SDK repo root
- Fail loudly if the SKILL.md branch can't be parsed from the URL
  instead of silently falling back to main
- Add an explicit uv sync step before the background launches in the
  "Claude runs them" path

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Same procedure as Claude Code's SKILL.md, adapted for platforms that
lack a structured picker UI:
- Numbered text lists for user questions instead of AskUserQuestion
- curl from the shell instead of WebFetch
- nohup + captured PIDs for background launches (in lieu of Claude
  Code's run_in_background / BashOutput)

Three files share the same procedure body and live alongside each
other in skills/onboarding/ so band.ai's onboarding flow can serve a
per-platform URL.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@alon-zino-rosenblum-thenvoi alon-zino-rosenblum-thenvoi changed the title feat(skills): add Tom & Jerry onboarding skill (Claude Code, Codex, Cursor) feat(docs): add Tom & Jerry onboarding skill (Claude Code, Codex, Cursor) May 29, 2026
Base automatically changed from dev to main June 22, 2026 10:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants