| name | generate-appworld-code |
| description | Generate Python code to solve AppWorld agent tasks using playbook bullet guidance. Use when the AppWorld executor needs executable Python code for tasks involving Spotify, Venmo, Gmail, Calendar, Contacts, or other AppWorld APIs. |
| allowed-tools | Read |
Generate AppWorld Code
Generate executable Python code for AppWorld agent tasks, applying learned strategies from the ACE playbook.
Purpose
When the AppWorld executor encounters a task, it calls this Skill with:
- Task instruction (natural language)
- Available apps (e.g., ['spotify', 'venmo'])
- Playbook bullets (learned strategies to apply)
You generate Python code that:
- Solves the task using AppWorld APIs
- Applies bullet guidance strategies
- Handles errors gracefully
- Calls
apis.supervisor.complete_task() when done
Input Format
{
"instruction": "What is the title of the most-liked song in my Spotify playlists",
"apps": ["spotify"],
"strategies": [
"Always login before API calls",
"Handle pagination for large result sets"
],
"bullets": [
{
"id": "bullet-xxx",
"title": "Spotify login pattern",
"content": "Login to Spotify using apis.spotify.login() with credentials..."
}
]
}
AppWorld API Patterns
Spotify
response = apis.spotify.login(username="user@example.com", password="password")
token = response["access_token"]
playlists = apis.spotify.show_playlist_library(access_token=token)
songs = apis.spotify.show_playlist_songs(
access_token=token,
playlist_id=playlists[0]["id"]
)
Venmo
response = apis.venmo.login(username="user@example.com", password="password")
token = response["access_token"]
friends = apis.venmo.show_friends(access_token=token)
apis.venmo.send_payment(
access_token=token,
recipient_id=friend["id"],
amount=10.00,
note="Payment note"
)
Gmail
response = apis.gmail.login(username="user@example.com", password="password")
token = response["access_token"]
emails = apis.gmail.fetch_emails(
access_token=token,
max_results=10,
query="is:unread"
)
apis.gmail.send_email(
access_token=token,
to="recipient@example.com",
subject="Subject",
body="Email body"
)
Contacts
contacts = apis.contacts.show_contacts()
apis.contacts.add_contact(
name="John Doe",
email="john@example.com",
phone="+1234567890"
)
Calendar
events = apis.calendar.show_events(
start_date="2025-01-01",
end_date="2025-12-31"
)
apis.calendar.create_event(
title="Meeting",
start_time="2025-10-26T14:00:00",
end_time="2025-10-26T15:00:00"
)
Code Generation Rules
- Always complete task: Call
apis.supervisor.complete_task() at the end
- Apply bullet strategies: Use patterns from playbook bullets
- Handle errors: Use try/except for API calls
- Be specific: Don't use placeholders - generate actual implementations
- No explanations: Return ONLY executable Python code
Example Generation
Input:
{
"instruction": "Send an email to john@example.com saying hello",
"apps": ["gmail"],
"strategies": ["Login before API calls", "Validate email addresses"],
"bullets": [...]
}
Output:
try:
response = apis.gmail.login(username="user@example.com", password="password")
token = response["access_token"]
recipient = "john@example.com"
if "@" not in recipient:
raise ValueError(f"Invalid email: {recipient}")
apis.gmail.send_email(
access_token=token,
to=recipient,
subject="Hello",
body="Hello from AppWorld!"
)
apis.supervisor.complete_task()
except Exception as e:
print(f"Error: {str(e)}")
raise
Credentials
AppWorld provides test credentials automatically. Use these common patterns:
username="user@example.com"
password="password"
- Tokens are returned from login APIs
Common Patterns from Playbook
Pattern: Friend Management (Venmo/Contacts)
current_friends = apis.venmo.show_friends(access_token=token)
current_ids = {f["id"] for f in current_friends}
target_contacts = apis.contacts.show_contacts()
target_ids = {c["id"] for c in target_contacts if c.get("venmo_id")}
for target_id in target_ids - current_ids:
apis.venmo.add_friend(access_token=token, user_id=target_id)
for current_id in current_ids - target_ids:
apis.venmo.remove_friend(access_token=token, user_id=current_id)
Pattern: Aggregation (Spotify/Media)
playlists = apis.spotify.show_playlist_library(access_token=token)
all_songs = []
for playlist in playlists:
songs = apis.spotify.show_playlist_songs(
access_token=token,
playlist_id=playlist["id"]
)
all_songs.extend(songs)
most_liked = max(all_songs, key=lambda s: s.get("likes", 0))
result = most_liked["title"]
Response Format
Return Python code as plain text (no markdown formatting, no explanations).
The code should be immediately executable in the AppWorld environment.