Agent Skills/agent-observatory-workflow
AI Engineering & Autonomous ReviewSKILL.md

agent-observatory-workflow

LangChain tool-calling, Tool-Calling RAG workflows, pgvector search, and HITL protocols.

Install via CLI:skills-sync pull agent-observatory-workflow

Agent Observatory Workflow & Extension Guide

This skill guides agents and engineers on how to safely build, modify, test, and enhance AI agent features within `agentic-observatory/`.

1. Branch-First Development

IMPORTANT

**CREATE A LOCAL BRANCH FIRST**: Always start by creating a local branch from `main`: ```bash git switch -c MishraShardendu22/main/<feature-name> ``` Never develop or modify agent code directly on `main`.


2. Adding a New Agent Tool

  • Create or update a tool file under [`agentic-observatory/data/tools/`](file:///home/ms22/Coding_stuff/Personal-Projects/github-backup-automation-system/agentic-observatory/data/tools/):
  • ```python

    from typing import Annotated, Any

    from langchain_core.tools import tool

    @tool

    async def inspect_custom_metric(

    metric_name: Annotated[str, "The name of the metric to query"],

    days: Annotated[int, "Number of lookback days"] = 7,

    ) -> dict[str, Any]:

    """Query custom operational metrics from the database."""

    # Perform database query or API call

    return {"metric": metric_name, "value": 42}

    ```

  • Export the tool in [`agentic-observatory/data/tools/__init__.py`](file:///home/ms22/Coding_stuff/Personal-Projects/github-backup-automation-system/agentic-observatory/data/tools/__init__.py).
  • Add the tool to the `TOOLS` list in [`agentic-observatory/agent/openrouter.py`](file:///home/ms22/Coding_stuff/Personal-Projects/github-backup-automation-system/agentic-observatory/agent/openrouter.py).

  • 2. Tool-Calling RAG & Vector Knowledge Base

    The AI Observatory operates as a **Tool-Calling RAG Agent**:

  • **Pre-turn Retrieval**: Injects top relevance chunks into system context before iteration 1.
  • **Dynamic Tool Calling**: The agent calls `hybrid_search_knowledge_base` during reasoning loops for deep evidence gathering:
  • ```python

    # Inside agent/openrouter.py:

    from data.tools import hybrid_search_knowledge_base

    ```

    * Supported source filters: `['chat_message', 'execution_log', 'investigation', 'backup_result', 'backup_fix']`.

    * Combines Full-Text Search (tsvector), pgvector cosine similarity, and Reciprocal Rank Fusion (RRF).


    3. Implementing Human-In-The-Loop (HITL) Actions

    For sensitive actions (e.g., sending emails, applying hotfixes, modifying DB records):

  • In `agentic-observatory/agent/openrouter.py`, intercept the tool before execution:
  • ```python

    if tool_name == "send_report_email":

    confirm_id = str(uuid.uuid4())

    confirm_event = asyncio.Event()

    active_confirmations[confirm_id] = confirm_event

    yield json.dumps({

    "type": "confirm_required",

    "confirm_id": confirm_id,

    "name": tool_name,

    "args": tool_args,

    })

    # Wait up to 120s for user response via /chat/confirm

    await asyncio.wait_for(confirm_event.wait(), timeout=120.0)

    ```

  • Feed the user approval or rejection back to the LLM context.

  • 4. Working with Multi-Key OpenRouter Failover

    Always use [`agentic-observatory/utils/openrouter_keys.py`](file:///home/ms22/Coding_stuff/Personal-Projects/github-backup-automation-system/agentic-observatory/utils/openrouter_keys.py):

  • `get_openrouter_api_keys()`: Returns all configured keys.
  • `get_active_openrouter_key()`: Returns the currently active working key.
  • `rotate_openrouter_key(failed_key, reason)`: Advances to the next backup key when an error (`401`, `402`, `429`) occurs.

  • 5. Comprehensive Agent Test Suites

    Run the test suite commands:

    bash
    # 1. Run all unit and integration tests across the system
    make test
    
    # 2. Run dedicated AI Agent & Tool-Calling RAG test suite
    make test-agents
    
    # 3. Direct execution of Agent tests
    cd agentic-observatory && uv run python test_agent_suite.py