nooa-tools-and-skills
Installation
SKILL.md
Tools, Skills, and Integrations
Methods are the tools
There is no tool-registration abstraction: any visible method or attribute on self is callable from CodeAct-generated code, with doc(self) telling the LLM what exists. Mix deterministic helpers (SW1) with generation methods (SW3):
class InventoryAgent(Agent, llm=llm):
"""Checks inventory using deterministic helpers."""
def get_stock(self, item: str) -> int: # SW1: a "tool"
return self.inventory.get(item, {}).get("stock", 0)
async def can_fulfill(self, items: list[str], budget: float) -> Result:
"""Check whether the order fits the budget. Use self.get_stock()."""
... # SW3: LLM orchestrates the helpers
Design rubric: exact semantics (matching rules, parsing, arithmetic) → deterministic helper; fuzzy judgment → generation method. Give helpers precise names, type hints, and docstrings — those are their tool schema.