An AI agent that writes, stores, and reuses its own skills — growing smarter with every task.
SelfExtendingAgent is a full-stack agentic application built on Google's Agent Development Kit (ADK) that demonstrates a groundbreaking concept: an AI agent that can dynamically create and reuse its own skills at runtime.
This project implements an efficient, cost-effective dual-model architecture:
- 🚀 Qwen 2.5 (3B Local) acts as the fast, low-latency conversational interface, formatting responses for the user without incurring API costs for simple or known queries.
- 💡 Gemini 2.5 Flash acts as the heavy-duty Orchestrator and Researcher. It evaluates intent, searches the web, and generates new robust technical definitions when a knowledge gap is detected.
Instead of being limited to a fixed set of capabilities, this agent:
- 🧠 Understands what it needs to do
- 🔍 Checks whether it already has a skill for it
- 🛠️ Creates a new skill on the fly if one doesn't exist
- ♻️ Reuses previously created skills for future tasks using Qwen
This is self-extending intelligence — the agent's capability surface grows automatically as it encounters new tasks.
When the agent encounters a task it has handled before, it intelligently detects the existing skill and applies it directly — zero redundancy, maximum efficiency delivered via Qwen.
When a new task is encountered, the agent's Skill Creator module kicks in — Gemini researches, designs, writes, and stores a brand-new skill, then Qwen executes it immediately.
SelfExtendingAgent_ADKGoogle/
│
├── 🐍 backend/ # ADK-powered Python agent core
│ └── agent logic, skill registry, tool definitions
│
├── 🎨 frontend/ # Conversational UI
│ └── HTML + CSS + JS chat interface
│
├── 🤖 dev_assistant_app/ # ADK Dev Assistant application
│ └── skill-aware orchestration layer
│
├── 🔁 repro_answer.py # Reproducible answer generation
├── 📦 requirements.txt # Python dependencies
└── 🚀 run.sh # One-command launcher
User Request
│
▼
┌─────────────────────┐
│ Intent Matcher │ ◄── Gemini 2.5 Flash
│ (ADK LlmAgent) │
└────────┬────────────┘
│
▼
┌─────────────────────┐ YES ──► Route to Presenter
│ Skill Registry │◄── Does a skill exist for this task?
│ (Persistent Store) │
└────────┬────────────┘
│ NO
▼
┌─────────────────────┐
│ Skill Creator │ ◄── Gemini 2.5 Flash (Web Research + Tool Use)
│ (Learn Pass) │
└────────┬────────────┘
│ Generates SKILL.md
▼
┌─────────────────────┐
│ Answer Presenter │ ◄── Qwen 2.5 3B Local (Fast, cheap UI inference)
│ (Tool-Free) │
└────────┬────────────┘
│
▼
Save to Registry ──► Execute New Skill ──► Return Result
- Python 3.10+
- A Google AI / Gemini API key
- Ollama (installed and running locally)
- Node.js (for frontend)
# 1. Clone the repository
git clone https://github.com/simranjeet97/SelfExtendingAgent_ADKGoogle.git
cd SelfExtendingAgent_ADKGoogle
# 2. Install Python dependencies
pip install -r requirements.txt
# 3. Pull the local Qwen model for UI formatting
ollama pull qwen2.5:3b
# 4. Set your API keys (create dev_assistant_app/.env)
# export GOOGLE_API_KEY="your_gemini_api_key_here"
# 5. Launch everything
bash run.sh# Start the ADK dev UI for the agent
adk web dev_assistant_app
# Or run in terminal mode
adk run dev_assistant_appThe app will be available at http://localhost:8000.
Skills are self-contained knowledge modules (structured as SKILL.md files) that tell the agent how to perform a specific task. The agent discovers, activates, and creates these skills dynamically — keeping context lean while expanding capability.
By routing heavy logic (planning, API tools, coding, routing) to Gemini, and conversational formatting and generation to local Qwen models, the app minimizes latency and cost without sacrificing intelligence.
Built on Google's Agent Development Kit, the agent leverages:
LlmAgent— the reasoning core powered by LLMs- Tool Use — custom tools for skill read/write operations
Created skills are persisted to disk and indexed — so the agent's knowledge compounds over time. Every new skill makes the agent permanently smarter for future sessions.
| Layer | Technology |
|---|---|
| Agent Framework | Google ADK (Agent Development Kit) |
| Reasoning Core | Gemini 2.5 Flash |
| UI/Inference Core | Ollama (Qwen 2.5 3B) |
| Backend | Python 3.10+ |
| Frontend | HTML, CSS, JavaScript |
| Skill Format | Markdown (SKILL.md) |
Traditional AI agents have a fixed set of tools. When they encounter something new, they either fail or hallucinate. SelfExtendingAgent takes a different approach:
| Traditional Agent | Self-Extending Agent |
|---|---|
| Fixed capabilities | Grows with every task |
| Fails on unknown tasks | Creates skills for new tasks |
| Repeats work inefficiently | Reuses previously learned skills efficiently |
| Manual tool engineering | Autonomous skill generation |
Contributions are welcome! Feel free to:
- 🐛 Open an issue for bugs
- 💬 Start a discussion for new ideas
- 🔀 Submit a pull request with improvements
This project is open source. See LICENSE for details.
Built with ❤️ using Google Agent Development Kit, Gemini, & Ollama
⭐ Star this repo if you found it useful!

