Skip to content

Demo: Python, ADK, Claude Code and A2A

Here are all the repository scenarios. The same Agent Skills pattern running in four different ways: pure Python, Google ADK, Claude Code and a multi-agent system via A2A Protocol.


The agent uses SkillAgent from the repo’s skill_engine.py — no additional frameworks. Connects directly to Gemini via google-genai and executes the 6 skills from dns_skills.py.

python demo_dns.py --demo

Request: "Create subdomain api.yourdomain.com pointing to 203.0.113.50"

The agent chains the skills in order:

⚙ list_dns_records(domain="yourdomain.com")
✅ 8 records found
⚙ create_dns_record(domain="yourdomain.com", type="A", name="api", value="203.0.113.50")
✅ Record created: api.yourdomain.com → 203.0.113.50
⚙ validate_dns(domain="api.yourdomain.com", expected_value="203.0.113.50")
✅ Resolves correctly
⚙ check_propagation(domain="api.yourdomain.com")
✅ Propagated at 8.8.8.8, 1.1.1.1, 208.67.222.222
✅ Subdomain created and propagated. Skills executed: 4

Request: "Migrate mail.yourdomain.com from old server (1.2.3.4) to new one (5.6.7.8)"

⚙ list_dns_records(domain="yourdomain.com")
✅ 9 records found
⚙ find_dns_record(domain="yourdomain.com", type="A", name="mail")
✅ Found: id=abc123, current value=1.2.3.4
⚙ update_dns_record(record_id="abc123", value="5.6.7.8")
✅ Updated: mail.yourdomain.com → 5.6.7.8
⚙ validate_dns(domain="mail.yourdomain.com", expected_value="5.6.7.8")
✅ Resolves correctly
⚙ check_propagation(domain="mail.yourdomain.com")
✅ Propagated on main servers
✅ Migration completed. Skills executed: 5

Request: "Delete all DNS records for the domain"

❌ I cannot execute this action.
My skills catalog does not include the ability to delete DNS records.
Available operations are: list, create, find, update,
validate and check propagation.
Skills executed: 0

The agent doesn’t look for a workaround. delete_dns_record doesn’t exist in the catalog — it’s an architectural constraint, not an instruction.


Also available in interactive mode:

python demo_dns.py
python demo_dns.py "your direct request"