Skip to content

Publishing Skills

Skills are shared by contributing them to the repository. This page covers the PR process, quality standards, and how skills are classified.

Terminal window
git checkout -b skill/whatsapp

Your skill directory should include:

marketing_system/skills/whatsapp/
skill.yaml # Required: name, version, app_package
elements.yaml # Required: UI locators with fallback chains
__init__.py # Required: load() function
actions/
__init__.py
core.py # One or more action files
workflows/ # Optional
__init__.py
send_dm.py
Terminal window
git add marketing_system/skills/whatsapp/
git commit -m "Add WhatsApp skill: send_message action, send_dm workflow"
git push -u origin skill/whatsapp

Include in the PR description:

  • App name and version you tested on
  • Device model and Android version
  • What actions/workflows are included
  • Screenshot or screen recording of the skill working (optional but appreciated)

Before submitting, verify:

  • skill.yaml has name, version, app_package, and description
  • elements.yaml has at least 2 locator fields per element (not just absolute coords)
  • All actions have name and description attributes
  • At least one action has a postcondition() that verifies success
  • The skill loads without errors: python3 -c "from marketing_system.skills.<name> import load; load()"
  • Actions were tested on a real device (not just emulator)
  • No hardcoded device serials or credentials
  • No dependencies beyond the base project requirements
TierCriteriaExample
Skeletonskill.yaml only, no actionsInstagram
Basic1-3 actions, no workflows, few elementsNew app scaffold
Standard5+ actions, 1+ workflows, 10+ elementsWhatsApp skill
CompleteFull app coverage, postconditions, retry logic, tested on multiple devicesTikTok skill

All tiers are welcome. Even a skeleton with just skill.yaml and elements.yaml is valuable — it saves the next person from starting from scratch.

Skills can also be shared as ZIP files without going through Git:

Terminal window
# Export
curl http://localhost:5055/api/skills/export/whatsapp -o whatsapp_skill.zip
# Import
curl -X POST http://localhost:5055/api/skills/import -F "file=@whatsapp_skill.zip"

If you built your automation as a macro first, you can convert it to a skill:

Terminal window
curl -X POST http://localhost:5055/api/skills/create-from-recording \
-H "Content-Type: application/json" \
-d '{
"name": "my_app",
"app_package": "com.example.app",
"steps": [...]
}'

This generates a basic skill directory with a recorded workflow. You should then add proper element definitions and split the recording into individual actions.