{"id":"bae8df4a-edb9-4a9d-b977-da3e04051486","shortId":"KEjD2X","kind":"skill","title":"Autonomous Agents","tagline":"Antigravity Awesome Skills skill by Sickn33","description":"# Autonomous Agents\n\nAutonomous agents are AI systems that can independently decompose goals,\nplan actions, execute tools, and self-correct without constant human guidance.\nThe challenge isn't making them capable - it's making them reliable. Every\nextra decision multiplies failure probability.\n\nThis skill covers agent loops (ReAct, Plan-Execute), goal decomposition,\nreflection patterns, and production reliability. Key insight: compounding\nerror rates kill autonomous agents. A 95% success rate per step drops to\n60% by step 10. Build for reliability first, autonomy second.\n\n2025 lesson: The winners are constrained, domain-specific agents with clear\nboundaries, not \"autonomous everything.\" Treat AI outputs as proposals,\nnot truth.\n\n## Principles\n\n- Reliability over autonomy - every step compounds error probability\n- Constrain scope - domain-specific beats general-purpose\n- Treat outputs as proposals, not truth\n- Build guardrails before expanding capabilities\n- Human-in-the-loop for critical decisions is non-negotiable\n- Log everything - every action must be auditable\n- Fail safely with rollback, not silently with corruption\n\n## Capabilities\n\n- autonomous-agents\n- agent-loops\n- goal-decomposition\n- self-correction\n- reflection-patterns\n- react-pattern\n- plan-execute\n- agent-reliability\n- agent-guardrails\n\n## Scope\n\n- multi-agent-systems → multi-agent-orchestration\n- tool-building → agent-tool-builder\n- memory-systems → agent-memory-systems\n- workflow-orchestration → workflow-automation\n\n## Tooling\n\n### Frameworks\n\n- LangGraph - When: Production agents with state management Note: 1.0 released Oct 2025, checkpointing, human-in-loop\n- AutoGPT - When: Research/experimentation, open-ended exploration Note: Needs external guardrails for production\n- CrewAI - When: Role-based agent teams Note: Good for specialized agent collaboration\n- Claude Agent SDK - When: Anthropic ecosystem agents Note: Computer use, tool execution\n\n### Patterns\n\n- ReAct - When: Reasoning + Acting in alternating steps Note: Foundation for most modern agents\n- Plan-Execute - When: Separate planning from execution Note: Better for complex multi-step tasks\n- Reflection - When: Self-evaluation and correction Note: Evaluator-optimizer loop\n\n## Patterns\n\n### ReAct Agent Loop\n\nAlternating reasoning and action steps\n\n**When to use**: Interactive problem-solving, tool use, exploration\n\n# REACT PATTERN:\n\n\"\"\"\nThe ReAct loop:\n1. Thought: Reason about what to do next\n2. Action: Choose and execute a tool\n3. Observation: Receive result\n4. Repeat until goal achieved\n\nKey: Explicit reasoning traces make debugging possible\n\"\"\"\n\n## Basic ReAct Implementation\n\"\"\"\nfrom langchain.agents import create_react_agent\nfrom langchain_openai import ChatOpenAI\n\n# Define the ReAct prompt template\nreact_prompt = '''\nAnswer the question using the following format:\n\nQuestion: the input question\nThought: reason about what to do\nAction: tool_name\nAction Input: input to the tool\nObservation: result of the action\n... (repeat Thought/Action/Observation as needed)\nThought: I now know the final answer\nFinal Answer: the answer\n'''\n\n# Create the agent\nagent = create_react_agent(\n    llm=ChatOpenAI(model=\"gpt-4o\"),\n    tools=tools,\n    prompt=react_prompt,\n)\n\n# Execute with step limit\nresult = agent.invoke(\n    {\"input\": query},\n    config={\"max_iterations\": 10}  # Prevent runaway loops\n)\n\"\"\"\n\n## LangGraph ReAct (Production)\n\"\"\"\nfrom langgraph.prebuilt import create_react_agent\nfrom langgraph.checkpoint.postgres import PostgresSaver\n\n# Production checkpointer\ncheckpointer = PostgresSaver.from_conn_string(\n    os.environ[\"POSTGRES_URL\"]\n)\n\nagent = create_react_agent(\n    model=llm,\n    tools=tools,\n    checkpointer=checkpointer,  # Durable state\n)\n\n# Invoke with thread for state persistence\nconfig = {\"configurable\": {\"thread_id\": \"user-123\"}}\nresult = agent.invoke({\"messages\": [query]}, config)\n\"\"\"\n\n### Plan-Execute Pattern\n\nSeparate planning phase from execution\n\n**When to use**: Complex multi-step tasks, when full plan visibility matters\n\n# PLAN-EXECUTE PATTERN:\n\n\"\"\"\nTwo-phase approach:\n1. Planning: Decompose goal into subtasks\n2. Execution: Execute subtasks, potentially re-plan\n\nAdvantages:\n- Full visibility into plan before execution\n- Can validate/modify plan with human\n- Cleaner separation of concerns\n\nDisadvantages:\n- Less adaptive to mid-task discoveries\n- Plan may become stale\n\"\"\"\n\n## LangGraph Plan-Execute\n\"\"\"\nfrom langgraph.prebuilt import create_plan_and_execute_agent\n\n# Planner creates the task list\nplanner_prompt = '''\nFor the given objective, create a step-by-step plan.\nEach step should be atomic and actionable.\nFormat: numbered list of steps.\n'''\n\n# Executor handles individual steps\nexecutor_prompt = '''\nYou are executing step {step_number} of the plan.\nPrevious results: {previous_results}\nCurrent step: {current_step}\nExecute this step using available tools.\n'''\n\nagent = create_plan_and_execute_agent(\n    planner=planner_llm,\n    executor=executor_llm,\n    tools=tools,\n    replan_on_error=True,  # Re-plan if step fails\n)\n\n# Human approval of plan\nconfig = {\n    \"configurable\": {\n        \"thread_id\": \"task-456\",\n    },\n    \"interrupt_before\": [\"execute\"],  # Pause before execution\n}\n\n# First call creates plan\nplan = agent.invoke({\"objective\": goal}, config)\n\n# Review plan, then continue\nif human_approves(plan):\n    result = agent.invoke(None, config)  # Continue from checkpoint\n\"\"\"\n\n## Decomposition Strategies\n\"\"\"\n# Decomposition-First: Plan everything, then execute\n# Best for: Stable tasks, need full plan approval\n\n# Interleaved: Plan one step, execute, repeat\n# Best for: Dynamic tasks, learning as you go\n\ndef interleaved_execute(goal, max_steps=10):\n    state = {\"goal\": goal, \"completed\": [], \"remaining\": [goal]}\n\n    for step in range(max_steps):\n        # Plan next action based on current state\n        next_action = planner.plan_next(state)\n\n        if next_action == \"DONE\":\n            break\n\n        # Execute and update state\n        result = executor.execute(next_action)\n        state[\"completed\"].append((next_action, result))\n\n        # Re-evaluate remaining work\n        state[\"remaining\"] = planner.reassess(state)\n\n    return state\n\"\"\"\n\n### Reflection Pattern\n\nSelf-evaluation and iterative improvement\n\n**When to use**: Quality matters, complex outputs, creative tasks\n\n# REFLECTION PATTERN:\n\n\"\"\"\nSelf-correction loop:\n1. Generate initial output\n2. Evaluate against criteria\n3. Critique and identify issues\n4. Refine based on critique\n5. Repeat until satisfactory\n\nAlso called: Evaluator-Optimizer, Self-Critique\n\"\"\"\n\n## Basic Reflection\n\"\"\"\ndef reflect_and_improve(task, max_iterations=3):\n    # Initial generation\n    output = generator.generate(task)\n\n    for i in range(max_iterations):\n        # Evaluate output\n        critique = evaluator.critique(\n            task=task,\n            output=output,\n            criteria=[\n                \"Correctness\",\n                \"Completeness\",\n                \"Clarity\",\n            ]\n        )\n\n        if critique[\"passes_all\"]:\n            return output\n\n        # Refine based on critique\n        output = generator.refine(\n            task=task,\n            previous_output=output,\n            critique=critique[\"feedback\"],\n        )\n\n    return output  # Best effort after max iterations\n\"\"\"\n\n## LangGraph Reflection\n\"\"\"\nfrom langgraph.graph import StateGraph\n\ndef build_reflection_graph():\n    graph = StateGraph(ReflectionState)\n\n    # Nodes\n    graph.add_node(\"generate\", generate_node)\n    graph.add_node(\"reflect\", reflect_node)\n    graph.add_node(\"output\", output_node)\n\n    # Edges\n    graph.add_edge(\"generate\", \"reflect\")\n    graph.add_conditional_edges(\n        \"reflect\",\n        should_continue,\n        {\n            \"continue\": \"generate\",  # Loop back\n            \"end\": \"output\",\n        }\n    )\n\n    return graph.compile()\n\ndef should_continue(state):\n    if state[\"iteration\"] >= 3:\n        return \"end\"\n    if state[\"score\"] >= 0.9:\n        return \"end\"\n    return \"continue\"\n\"\"\"\n\n## Separate Evaluator (More Robust)\n\"\"\"\n# Use different model for evaluation to avoid self-bias\ngenerator = ChatOpenAI(model=\"gpt-4o\")\nevaluator = ChatOpenAI(model=\"gpt-4o-mini\")  # Different perspective\n\n# Or use specialized evaluators\nfrom langchain.evaluation import load_evaluator\nevaluator = load_evaluator(\"criteria\", criteria=\"correctness\")\n\"\"\"\n\n### Guardrailed Autonomy\n\nConstrained agents with safety boundaries\n\n**When to use**: Production systems, critical operations\n\n# GUARDRAILED AUTONOMY:\n\n\"\"\"\nProduction agents need multiple safety layers:\n1. Input validation\n2. Action constraints\n3. Output validation\n4. Cost limits\n5. Human escalation\n6. Rollback capability\n\"\"\"\n\n## Multi-Layer Guardrails\n\"\"\"\nclass GuardedAgent:\n    def __init__(self, agent, config):\n        self.agent = agent\n        self.max_cost = config.get(\"max_cost_usd\", 1.0)\n        self.max_steps = config.get(\"max_steps\", 10)\n        self.allowed_actions = config.get(\"allowed_actions\", [])\n        self.require_approval = config.get(\"require_approval\", [])\n\n    async def execute(self, goal):\n        total_cost = 0\n        steps = 0\n\n        while steps < self.max_steps:\n            # Get next action\n            action = await self.agent.plan_next(goal)\n\n            # Validate action is allowed\n            if action.name not in self.allowed_actions:\n                raise ActionNotAllowedError(action.name)\n\n            # Check if approval needed\n            if action.name in self.require_approval:\n                approved = await self.request_human_approval(action)\n                if not approved:\n                    return {\"status\": \"rejected\", \"action\": action}\n\n            # Estimate cost\n            estimated_cost = self.estimate_cost(action)\n            if total_cost + estimated_cost > self.max_cost:\n                raise CostLimitExceededError(total_cost)\n\n            # Execute with rollback capability\n            checkpoint = await self.save_checkpoint()\n            try:\n                result = await self.agent.execute(action)\n                total_cost += self.actual_cost(action)\n                steps += 1\n            except Exception as e:\n                await self.rollback_to(checkpoint)\n                raise\n\n            if result.is_complete:\n                break\n\n        return {\"status\": \"complete\", \"total_cost\": total_cost}\n\"\"\"\n\n## Least Privilege Principle\n\"\"\"\n# Define minimal permissions per task type\nTASK_PERMISSIONS = {\n    \"research\": [\"web_search\", \"read_file\"],\n    \"coding\": [\"read_file\", \"write_file\", \"run_tests\"],\n    \"admin\": [\"all\"],  # Rarely grant this\n}\n\ndef create_scoped_agent(task_type):\n    allowed = TASK_PERMISSIONS.get(task_type, [])\n    tools = [t for t in ALL_TOOLS if t.name in allowed]\n    return Agent(tools=tools)\n\"\"\"\n\n## Cost Control\n\"\"\"\n# Context length grows quadratically in cost\n# Double context = 4x cost\n\ndef trim_context(messages, max_tokens=4000):\n    # Keep system message and recent messages\n    system = messages[0]\n    recent = messages[-10:]\n\n    # Summarize middle if needed\n    if len(messages) > 11:\n        middle = messages[1:-10]\n        summary = summarize(middle)\n        return [system, summary] + recent\n\n    return messages\n\"\"\"\n\n### Durable Execution Pattern\n\nAgents that survive failures and resume\n\n**When to use**: Long-running tasks, production systems, multi-day processes\n\n# DURABLE EXECUTION:\n\n\"\"\"\nProduction agents must:\n- Survive server restarts\n- Resume from exact point of failure\n- Handle hours/days of runtime\n- Allow human intervention mid-process\n\nLangGraph 1.0 provides this natively.\n\"\"\"\n\n## LangGraph Checkpointing\n\"\"\"\nfrom langgraph.checkpoint.postgres import PostgresSaver\nfrom langgraph.graph import StateGraph\n\n# Production checkpointer (not MemorySaver!)\ncheckpointer = PostgresSaver.from_conn_string(\n    os.environ[\"POSTGRES_URL\"]\n)\n\n# Build graph with checkpointing\ngraph = StateGraph(AgentState)\n# ... add nodes and edges ...\n\nagent = graph.compile(checkpointer=checkpointer)\n\n# Each invocation saves state\nconfig = {\"configurable\": {\"thread_id\": \"long-task-789\"}}\n\n# Start task\nagent.invoke({\"goal\": complex_goal}, config)\n\n# If server dies, resume later:\nstate = agent.get_state(config)\nif not state.is_complete:\n    agent.invoke(None, config)  # Continues from checkpoint\n\"\"\"\n\n## Human-in-the-Loop Interrupts\n\"\"\"\n# Pause at specific nodes\nagent = graph.compile(\n    checkpointer=checkpointer,\n    interrupt_before=[\"critical_action\"],  # Pause before\n    interrupt_after=[\"validation\"],        # Pause after\n)\n\n# First invocation pauses at interrupt\nresult = agent.invoke({\"goal\": goal}, config)\n\n# Human reviews state\nstate = agent.get_state(config)\nif human_approves(state):\n    # Continue from pause point\n    agent.invoke(None, config)\nelse:\n    # Modify state and continue\n    agent.update_state(config, {\"approved\": False})\n    agent.invoke(None, config)\n\"\"\"\n\n## Time-Travel Debugging\n\"\"\"\n# LangGraph stores full history\nhistory = list(agent.get_state_history(config))\n\n# Go back to any previous state\npast_state = history[5]\nagent.update_state(config, past_state.values)\n\n# Replay from that point with modifications\nagent.invoke(None, config)\n\"\"\"\n\n## Sharp Edges\n\n### Error Probability Compounds Exponentially\n\nSeverity: CRITICAL\n\nSituation: Building multi-step autonomous agents\n\nSymptoms:\nAgent works in demos but fails in production. Simple tasks succeed,\ncomplex tasks fail mysteriously. Success rate drops dramatically\nas task complexity increases. Users lose trust.\n\nWhy this breaks:\nEach step has independent failure probability. A 95% success rate\nper step sounds great until you realize:\n- 5 steps: 77% success (0.95^5)\n- 10 steps: 60% success (0.95^10)\n- 20 steps: 36% success (0.95^20)\n\nThis is the fundamental limit of autonomous agents. Every additional\nstep multiplies failure probability.\n\nRecommended fix:\n\n## Reduce step count\n# Combine steps where possible\n# Prefer fewer, more capable steps over many small ones\n\n## Increase per-step reliability\n# Use structured outputs (JSON schemas)\n# Add validation at each step\n# Use better models for critical steps\n\n## Design for failure\nclass RobustAgent:\n    def execute_with_retry(self, step, max_retries=3):\n        for attempt in range(max_retries):\n            try:\n                result = step.execute()\n                if self.validate(result):\n                    return result\n            except Exception as e:\n                if attempt == max_retries - 1:\n                    raise\n                self.log_retry(step, attempt, e)\n\n## Break into checkpointed segments\n# Human review at each segment\n# Resume from last good checkpoint\n\n### API Costs Explode with Context Growth\n\nSeverity: CRITICAL\n\nSituation: Running agents with growing conversation context\n\nSymptoms:\n$47 to close a single support ticket. Thousands in surprise API bills.\nAgents getting slower as they run longer. Token counts exceeding\nmodel limits.\n\nWhy this breaks:\nTransformer costs scale quadratically with context length. Double\nthe context, quadruple the compute. A long-running agent that\nre-sends its full conversation each turn can burn money exponentially.\n\nMost agents append to context without trimming. Context grows:\n- Turn 1: 500 tokens → $0.01\n- Turn 10: 5000 tokens → $0.10\n- Turn 50: 25000 tokens → $0.50\n- Turn 100: 50000 tokens → $1.00+ per message\n\nRecommended fix:\n\n## Set hard cost limits\nclass CostLimitedAgent:\n    MAX_COST_PER_TASK = 1.00  # USD\n\n    def __init__(self):\n        self.total_cost = 0\n\n    def before_call(self, estimated_tokens):\n        estimated_cost = self.estimate_cost(estimated_tokens)\n        if self.total_cost + estimated_cost > self.MAX_COST_PER_TASK:\n            raise CostLimitExceeded(\n                f\"Would exceed ${self.MAX_COST_PER_TASK} limit\"\n            )\n\n    def after_call(self, response):\n        self.total_cost += self.calculate_actual_cost(response)\n\n## Trim context aggressively\ndef trim_context(messages, max_tokens=4000):\n    # Keep: system prompt + last N messages\n    # Summarize: everything in between\n    if count_tokens(messages) <= max_tokens:\n        return messages\n\n    system = messages[0]\n    recent = messages[-5:]\n    middle = messages[1:-5]\n\n    if middle:\n        summary = summarize(middle)  # Compress history\n        return [system, summary] + recent\n\n    return [system] + recent\n\n## Use streaming to track costs in real-time\n## Alert at 50% of budget, halt at 90%\n\n### Demo Works But Production Fails\n\nSeverity: CRITICAL\n\nSituation: Moving from prototype to production\n\nSymptoms:\nImpressive demo to stakeholders. Months of failure in production.\nWorks for the founder's use case, fails for real users. Edge cases\noverwhelm the system.\n\nWhy this breaks:\nDemos show the happy path with curated inputs. Production means:\n- Unexpected inputs (typos, ambiguity, adversarial)\n- Scale (1000 users, not 3)\n- Reliability (99.9% uptime, not \"usually works\")\n- Edge cases (the 1% that breaks everything)\n\nThe methodology is questionable, but the core problem is real.\nThe gap between a working demo and a reliable production system\nis where projects die.\n\nRecommended fix:\n\n## Test at scale before production\n# Run 1000+ test cases, not 10\n# Measure P95/P99 success rate, not average\n# Include adversarial inputs\n\n## Build observability first\nimport structlog\nlogger = structlog.get_logger()\n\nclass ObservableAgent:\n    def execute(self, task):\n        with logger.bind(task_id=task.id):\n            logger.info(\"task_started\")\n            try:\n                result = self._execute(task)\n                logger.info(\"task_completed\", result=result)\n                return result\n            except Exception as e:\n                logger.error(\"task_failed\", error=str(e))\n                raise\n\n## Have escape hatches\n# Human takeover when confidence < threshold\n# Graceful degradation to simpler behavior\n# \"I don't know\" is a valid response\n\n## Deploy incrementally\n# 1% of traffic, then 10%, then 50%\n# Monitor error rates at each stage\n\n### Agent Fabricates Data When Stuck\n\nSeverity: HIGH\n\nSituation: Agent can't complete task with available information\n\nSymptoms:\nAgent invents plausible-looking data. Fake restaurant names on expense\nreports. Made-up statistics in reports. Confident answers that are\ncompletely wrong.\n\nWhy this breaks:\nLLMs are trained to be helpful and produce plausible outputs. When\nstuck, they don't say \"I can't do this\" - they fabricate. Autonomous\nagents compound this by acting on fabricated data without human review.\n\nThe agent that fabricated expense entries was trying to meet its goal\n(complete the expense report). It \"solved\" the problem by inventing data.\n\nRecommended fix:\n\n## Validate against ground truth\ndef validate_expense(expense):\n    # Cross-check with external sources\n    if expense.restaurant:\n        if not verify_restaurant_exists(expense.restaurant):\n            raise ValidationError(\"Restaurant not found\")\n\n    # Check for suspicious patterns\n    if expense.amount == round(expense.amount, -1):\n        flag_for_review(\"Suspiciously round amount\")\n\n## Require evidence\nsystem_prompt = '''\nFor every factual claim, cite the specific tool output that\nsupports it. If you cannot find supporting evidence, say\n\"I could not verify this\" rather than guessing.\n'''\n\n## Use structured outputs\nfrom pydantic import BaseModel\n\nclass VerifiedClaim(BaseModel):\n    claim: str\n    source: str  # Must reference tool output\n    confidence: float\n\n## Detect uncertainty\n# Train to output confidence scores\n# Flag low-confidence outputs for human review\n# Never auto-execute on uncertain data\n\n### Integration Is Where Agents Die\n\nSeverity: HIGH\n\nSituation: Connecting agent to external systems\n\nSymptoms:\nWorks with mock APIs, fails with real ones. Rate limits cause crashes.\nAuth tokens expire mid-task. Data format mismatches. Partial failures\nleave systems in inconsistent state.\n\nWhy this breaks:\nThe companies promising \"autonomous agents that integrate with your\nentire tech stack\" haven't built production systems at scale.\nReal integrations have:\n- Rate limits (429 errors mid-task)\n- Auth complexity (OAuth refresh, token expiry)\n- Data format variations (API v1 vs v2)\n- Partial failures (webhook received, processing failed)\n- Eventual consistency (data not immediately available)\n\nRecommended fix:\n\n## Build robust API clients\nfrom tenacity import retry, stop_after_attempt, wait_exponential\n\nclass RobustAPIClient:\n    @retry(\n        stop=stop_after_attempt(3),\n        wait=wait_exponential(multiplier=1, min=4, max=60)\n    )\n    async def call(self, endpoint, data):\n        response = await self.client.post(endpoint, json=data)\n        if response.status_code == 429:\n            retry_after = response.headers.get(\"Retry-After\", 60)\n            await asyncio.sleep(int(retry_after))\n            raise RateLimitError()\n        return response\n\n## Handle auth lifecycle\nclass TokenManager:\n    def __init__(self):\n        self.token = None\n        self.expires_at = None\n\n    async def get_token(self):\n        if self.is_expired():\n            self.token = await self.refresh_token()\n        return self.token\n\n    def is_expired(self):\n        buffer = timedelta(minutes=5)  # Refresh early\n        return datetime.now() > (self.expires_at - buffer)\n\n## Use idempotency keys\n# Every external action should be idempotent\n# If agent retries, external system handles duplicate\n\n## Design for partial failure\n# Each step is independently recoverable\n# Checkpoint before external calls\n# Rollback capability for each integration\n\n### Agent Takes Dangerous Actions\n\nSeverity: HIGH\n\nSituation: Agent with broad permissions\n\nSymptoms:\nAgent deletes production data. Sends emails to wrong recipients.\nMakes purchases without approval. Modifies settings it shouldn't.\nActions that can't be undone.\n\nWhy this breaks:\nAgents optimize for their goal. Without guardrails, they'll take the\nshortest path - even if that path is destructive. An agent told to\n\"clean up the database\" might interpret that as \"delete everything.\"\n\nBroad permissions + autonomy + goal optimization = danger.\n\nRecommended fix:\n\n## Least privilege principle\nPERMISSIONS = {\n    \"research_agent\": [\"read_web\", \"read_docs\"],\n    \"code_agent\": [\"read_file\", \"write_file\", \"run_tests\"],\n    \"email_agent\": [\"read_email\", \"draft_email\"],  # NOT send\n    \"admin_agent\": [\"all\"],  # Rarely used\n}\n\n## Separate read/write permissions\n# Agent can read anything\n# Write requires explicit approval\n\n## Dangerous actions require confirmation\nDANGEROUS_ACTIONS = [\n    \"delete_*\",\n    \"send_email\",\n    \"transfer_money\",\n    \"modify_production\",\n    \"revoke_access\",\n]\n\nasync def execute_action(action):\n    if matches_dangerous_pattern(action):\n        approval = await request_human_approval(action)\n        if not approval:\n            return ActionRejected(action)\n    return await actually_execute(action)\n\n## Dry-run mode for testing\n# Agent describes what it would do\n# Human approves the plan\n# Then agent executes\n\n## Audit logging for everything\n# Every action logged with context\n# Who authorized it\n# What changed\n# How to reverse it\n\n### Agent Runs Out of Context Window\n\nSeverity: MEDIUM\n\nSituation: Long-running agent tasks\n\nSymptoms:\nAgent forgets earlier instructions. Contradicts itself. Loses track\nof the goal. Starts repeating itself. Model errors about token limits.\n\nWhy this breaks:\nEvery message, observation, and thought consumes context. Long tasks\nexhaust the window. When context is truncated:\n- System prompt gets dropped\n- Early important context lost\n- Agent loses coherence\n\nRecommended fix:\n\n## Track context usage\nclass ContextManager:\n    def __init__(self, max_tokens=100000):\n        self.max_tokens = max_tokens\n        self.messages = []\n\n    def add(self, message):\n        self.messages.append(message)\n        self.maybe_compact()\n\n    def maybe_compact(self):\n        if self.token_count() > self.max_tokens * 0.8:\n            self.compact()\n\n    def compact(self):\n        # Always keep: system prompt\n        system = self.messages[0]\n\n        # Always keep: last N messages\n        recent = self.messages[-10:]\n\n        # Summarize: everything else\n        middle = self.messages[1:-10]\n        if middle:\n            summary = summarize_messages(middle)\n            self.messages = [system, summary] + recent\n\n## Use external memory\n# Don't keep everything in context\n# Store in vector DB, retrieve when needed\n# See agent-memory-systems skill\n\n## Hierarchical summarization\n# Recent: full detail\n# Medium: key points\n# Old: compressed summary\n\n### Can't Debug What You Can't See\n\nSeverity: MEDIUM\n\nSituation: Agent fails mysteriously\n\nSymptoms:\n\"It just didn't work.\" No idea why agent failed. Can't reproduce\nissues. Users report problems you can't explain. Debugging is\nguesswork.\n\nWhy this breaks:\nAgents make dozens of internal decisions. Without visibility into\neach step, you're blind to failure modes. Production debugging\nwithout traces is impossible.\n\nRecommended fix:\n\n## Structured logging\nimport structlog\n\nlogger = structlog.get_logger()\n\nclass TracedAgent:\n    def think(self, context):\n        with logger.bind(step=\"think\"):\n            thought = self.llm.generate(context)\n            logger.info(\"thought_generated\",\n                thought=thought,\n                tokens=count_tokens(thought)\n            )\n            return thought\n\n    def act(self, action):\n        with logger.bind(step=\"act\", action=action.name):\n            logger.info(\"action_started\")\n            try:\n                result = action.execute()\n                logger.info(\"action_completed\", result=result)\n                return result\n            except Exception as e:\n                logger.error(\"action_failed\", error=str(e))\n                raise\n\n## Use LangSmith or similar\nfrom langsmith import trace\n\n@trace\ndef agent_step(state):\n    # Automatically traced with inputs/outputs\n    return next_state\n\n## Save full traces\n# Every step, every decision\n# Inputs and outputs\n# Latency at each step\n# Token usage\n\n## Validation Checks\n\n### Agent Loop Without Step Limit\n\nSeverity: ERROR\n\nAutonomous agents must have maximum step limits\n\nMessage: Agent loop without step limit. Add max_steps to prevent infinite loops.\n\n### No Cost Tracking or Limits\n\nSeverity: ERROR\n\nAgents should track and limit API costs\n\nMessage: Agent uses LLM without cost tracking. Add cost limits to prevent runaway spending.\n\n### Agent Without Timeout\n\nSeverity: WARNING\n\nLong-running agents need timeouts\n\nMessage: Agent invocation without timeout. Add timeout to prevent hung tasks.\n\n### MemorySaver Used in Production\n\nSeverity: ERROR\n\nMemorySaver is for development only\n\nMessage: MemorySaver is not persistent. Use PostgresSaver or SqliteSaver for production.\n\n### Long-Running Agent Without Checkpointing\n\nSeverity: WARNING\n\nAgents that run multiple steps need checkpointing\n\nMessage: Multi-step agent without checkpointing. Add checkpointer for durability.\n\n### Agent Without Thread ID\n\nSeverity: WARNING\n\nCheckpointed agents need unique thread IDs\n\nMessage: Agent invocation without thread_id. State won't persist correctly.\n\n### Using Agent Output Without Validation\n\nSeverity: WARNING\n\nAgent outputs should be validated before use\n\nMessage: Agent output used without validation. Validate before acting on results.\n\n### Agent Without Structured Output\n\nSeverity: INFO\n\nStructured outputs are more reliable\n\nMessage: Consider using structured outputs (Pydantic) for more reliable parsing.\n\n### Agent Without Error Recovery\n\nSeverity: WARNING\n\nAgents should handle and recover from errors\n\nMessage: Agent call without error handling. Add try/catch or error handler.\n\n### Destructive Actions Without Rollback\n\nSeverity: WARNING\n\nActions that modify state should be reversible\n\nMessage: Destructive action without rollback capability. Save state before modification.\n\n## Collaboration\n\n### Delegation Triggers\n\n- user needs multi-agent coordination -> multi-agent-orchestration (Multiple agents working together)\n- user needs to test/evaluate agent -> agent-evaluation (Benchmarking and testing)\n- user needs tools for agent -> agent-tool-builder (Tool design and implementation)\n- user needs persistent memory -> agent-memory-systems (Long-term memory architecture)\n- user needs workflow automation -> workflow-automation (When agent is overkill for the task)\n- user needs computer control -> computer-use-agents (GUI automation, screen interaction)\n\n## Related Skills\n\nWorks well with: `agent-tool-builder`, `agent-memory-systems`, `multi-agent-orchestration`, `agent-evaluation`\n\n## When to Use\n- User mentions or implies: autonomous agent\n- User mentions or implies: autogpt\n- User mentions or implies: babyagi\n- User mentions or implies: self-prompting\n- User mentions or implies: goal decomposition\n- User mentions or implies: react pattern\n- User mentions or implies: agent loop\n- User mentions or implies: self-correcting agent\n- User mentions or implies: reflection agent\n- User mentions or implies: langgraph\n- User mentions or implies: agentic ai\n- User mentions or implies: agent planning\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["autonomous","agents","antigravity","awesome","skills","sickn33"],"capabilities":["skill","source-sickn33","category-antigravity-awesome-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/autonomous-agents","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"install_from":"skills.sh"}},"qualityScore":"0.300","qualityRationale":"deterministic score 0.30 from registry signals: · indexed on skills.sh · published under sickn33/antigravity-awesome-skills","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill:v1","enrichmentVersion":1,"enrichedAt":"2026-04-27T09:40:40.681Z","embedding":null,"createdAt":"2026-04-18T20:37:20.303Z","updatedAt":"2026-04-27T09:40:40.681Z","lastSeenAt":"2026-04-27T09:40:40.681Z","tsv":"'-1':2348 '-10':1331,1343,2986,2993 '-123':528 '-456':710 '-5':1971,1975 '0':1139,1141,1328,1895,1968,2978 '0.01':1858 '0.10':1863 '0.50':1868 '0.8':2967 '0.9':1007 '0.95':1647,1653,1659 '1':352,564,856,1078,1227,1342,1750,1855,1974,2078,2196,2554,2992 '1.0':239,1115,1400 '1.00':1873,1888 '10':86,479,778,1121,1649,1654,1860,2119,2200 '100':1870 '1000':2065,2115 '100000':2944 '11':1339 '2':360,570,860,1081 '20':1655,1660 '2025':93,242 '25000':1866 '3':367,864,895,1001,1084,1727,2068,2549 '36':1657 '4':371,869,1087,2556 '4000':1319,1947 '429':2497,2574 '47':1787 '4o':462,1031,1037 '4x':1311 '5':874,1090,1567,1643,1648,2625 '50':1865,2001,2202 '500':1856 '5000':1861 '50000':1871 '6':1093 '60':83,1651,2558,2581 '77':1645 '789':1451 '90':2006 '95':76,1633 '99.9':2070 'access':2803 'achiev':375 'act':290,2281,3136,3142,3377 'action':22,160,335,361,421,424,434,642,793,799,805,815,820,1082,1123,1126,1148,1149,1155,1163,1181,1188,1189,1196,1220,1225,1495,2638,2670,2697,2790,2794,2807,2808,2813,2819,2825,2830,2855,3138,3143,3146,3152,3163,3426,3431,3440 'action.execute':3150 'action.name':1159,1166,1172,3144 'actionnotallowederror':1165 'actionreject':2824 'actual':1935,2828 'adapt':596 'add':1432,1703,2951,3227,3255,3278,3328,3420 'addit':1670 'admin':1271,2773 'advantag':578 'adversari':2063,2127 'agent':2,10,12,54,74,102,175,177,195,198,203,207,213,220,234,266,272,275,280,299,330,391,452,453,456,491,505,508,617,677,682,1059,1073,1105,1108,1279,1298,1356,1378,1436,1488,1595,1597,1668,1781,1799,1831,1846,2209,2217,2226,2277,2289,2431,2437,2477,2643,2667,2674,2679,2706,2726,2752,2758,2766,2774,2781,2837,2848,2868,2880,2883,2929,3022,3048,3060,3079,3179,3207,3215,3222,3241,3249,3262,3270,3274,3309,3314,3325,3332,3339,3345,3356,3362,3370,3380,3401,3407,3415,3455,3459,3462,3469,3471,3480,3482,3494,3510,3523,3534,3538,3543,3546,3556,3590,3599,3605,3615,3621 'agent-evalu':3470,3545 'agent-guardrail':197 'agent-loop':176 'agent-memory-system':219,3021,3493,3537 'agent-reli':194 'agent-tool-build':212,3481,3533 'agent.get':1465,1517,1554 'agent.invoke':473,530,722,735,1454,1472,1509,1528,1541,1578 'agent.update':1536,1568 'agentst':1431 'aggress':1940 'ai':14,110,3616 'alert':1999 'allow':1125,1157,1282,1296,1393 'also':878 'altern':292,332 'alway':2972,2979 'ambigu':2062 'amount':2354 'answer':404,445,447,449,2245 'anthrop':278 'antigrav':3 'anyth':2784 'api':1771,1797,2445,2511,2531,3246 'append':818,1847 'approach':563 'approv':702,732,757,1128,1131,1169,1175,1176,1180,1184,1522,1539,2691,2788,2814,2818,2822,2844 'architectur':3501 'ask':3656 'async':1132,2559,2604,2804 'asyncio.sleep':2583 'atom':640 'attempt':1729,1747,1755,2539,2548 'audit':163,2850 'auth':2454,2502,2592 'author':2860 'auto':2423 'auto-execut':2422 'autogpt':248,3561 'autom':228,3505,3508,3525 'automat':3182 'autonom':1,9,11,73,107,174,1594,1667,2276,2476,3214,3555 'autonomi':91,119,1057,1071,2741 'autonomous-ag':173 'avail':675,2223,2526 'averag':2125 'avoid':1022 'await':1150,1177,1213,1218,1232,2566,2582,2613,2815,2827 'awesom':4 'babyagi':3566 'back':989,1559 'base':265,794,871,926 'basemodel':2392,2395 'basic':383,886 'beat':130 'becom':604 'behavior':2185 'benchmark':3473 'best':750,764,941 'better':309,1709 'bias':1025 'bill':1798 'blind':3092 'boundari':105,1062,3664 'break':807,1240,1625,1757,1813,2048,2080,2252,2472,2705,2904,3078 'broad':2676,2739 'budget':2003 'buffer':2622,2632 'build':87,140,211,953,1425,1590,2129,2529 'builder':215,3484,3536 'built':2487 'burn':1842 'call':718,879,1898,1929,2561,2661,3416 'cannot':2373 'capabl':39,144,172,1095,1211,1687,2663,3443 'case':2036,2042,2076,2117 'category-antigravity-awesome-skills' 'caus':2452 'challeng':34 'chang':2863 'chatopenai':396,458,1027,1033 'check':1167,2323,2340,3206 'checkpoint':243,497,498,513,514,740,1212,1215,1235,1405,1415,1418,1428,1438,1439,1477,1490,1491,1759,1770,2658,3311,3320,3327,3329,3338 'choos':362 'cite':2363 'claim':2362,2396 'clarif':3658 'clariti':918 'class':1100,1717,1882,2137,2393,2542,2594,2937,3111 'claud':274 'clean':2729 'cleaner':590 'clear':104,3631 'client':2532 'close':1789 'code':1264,2573,2757 'coher':2931 'collabor':273,3448 'combin':1680 'compact':2957,2960,2970 'compani':2474 'complet':782,817,917,1239,1243,1471,2157,2220,2248,2300,3153 'complex':311,546,846,1456,1608,1618,2503 'compound':69,122,1585,2278 'compress':1981,3035 'comput':282,1826,3518,3521 'computer-use-ag':3520 'concern':593 'condit':981 'confid':2179,2244,2404,2411,2416 'config':476,523,533,705,725,737,1106,1444,1458,1467,1474,1512,1519,1530,1538,1543,1557,1570,1580 'config.get':1111,1118,1124,1129 'configur':524,706,1445 'confirm':2792 'conn':500,1420 'connect':2436 'consid':3392 'consist':2522 'constant':30 'constrain':98,125,1058 'constraint':1083 'consum':2910 'context':1303,1310,1315,1775,1785,1819,1823,1849,1852,1939,1943,2858,2872,2911,2918,2927,2935,3012,3116,3123 'contextmanag':2938 'continu':729,738,985,986,996,1011,1475,1524,1535 'contradict':2887 'control':1302,3519 'convers':1784,1838 'coordin':3456 'core':2088 'correct':28,184,322,854,916,1055,3354,3598 'corrupt':171 'cost':1088,1110,1113,1138,1191,1193,1195,1199,1201,1203,1207,1222,1224,1245,1247,1301,1308,1312,1772,1815,1880,1885,1894,1903,1905,1910,1912,1914,1923,1933,1936,1994,3235,3247,3253,3256 'costlimitedag':1883 'costlimitexceed':1918 'costlimitexceedederror':1205 'could':2379 'count':1679,1807,1959,2964,3130 'cover':53 'crash':2453 'creat':389,450,454,489,506,613,619,629,678,719,1277 'creativ':848 'crewai':261 'criteria':863,915,1053,1054,3667 'critic':151,1068,1494,1588,1712,1778,2013 'critiqu':865,873,885,909,920,928,936,937 'cross':2322 'cross-check':2321 'curat':2055 'current':667,669,796 'danger':2669,2744,2789,2793,2811 'data':2211,2231,2284,2310,2427,2460,2508,2523,2564,2570,2682 'databas':2732 'datetime.now':2629 'day':1373 'db':3016 'debug':381,1547,3039,3073,3097 'decis':47,152,3084,3195 'decompos':19,566 'decomposit':61,181,741,744,3579 'decomposition-first':743 'def':772,888,952,994,1102,1133,1276,1313,1719,1890,1896,1927,1941,2139,2317,2560,2596,2605,2618,2805,2939,2950,2958,2969,3113,3135,3178 'defin':397,1251 'degrad':2182 'deleg':3449 'delet':2680,2737,2795 'demo':1600,2007,2022,2049,2097 'deploy':2194 'describ':2838,3635 'design':1714,2649,3486 'destruct':2724,3425,3439 'detail':3030 'detect':2406 'develop':3293 'didn':3054 'die':1461,2106,2432 'differ':1017,1039 'disadvantag':594 'discoveri':601 'doc':2756 'domain':100,128 'domain-specif':99,127 'done':806 'doubl':1309,1821 'dozen':3081 'draft':2769 'dramat':1615 'dri':2832 'drop':81,1614,2924 'dry-run':2831 'duplic':2648 'durabl':515,1353,1375,3331 'dynam':766 'e':1231,1745,1756,2165,2171,3161,3167 'earli':2627,2925 'earlier':2885 'ecosystem':279 'edg':975,977,982,1435,1582,2041,2075 'effort':942 'els':1531,2989 'email':2684,2765,2768,2770,2797 'end':253,990,1003,1009 'endpoint':2563,2568 'entir':2482 'entri':2293 'environ':3647 'environment-specif':3646 'error':70,123,693,1583,2169,2204,2498,2898,3165,3213,3240,3289,3403,3413,3418,3423 'escal':1092 'escap':2174 'estim':1190,1192,1200,1900,1902,1906,1911 'evalu':320,325,824,837,861,881,907,1013,1020,1032,1044,1049,1050,1052,3472,3547 'evaluator-optim':324,880 'evaluator.critique':910 'even':2719 'eventu':2521 'everi':45,120,159,1669,2360,2636,2854,2905,3192,3194 'everyth':108,158,747,1955,2081,2738,2853,2988,3010 'evid':2356,2376 'exact':1385 'exceed':1808,1921 'except':1228,1229,1742,1743,2162,2163,3158,3159 'execut':23,59,193,285,302,307,364,468,536,542,558,571,572,584,609,616,656,671,681,713,716,749,762,774,808,1134,1208,1354,1376,1720,2140,2424,2806,2829,2849 'executor':648,652,686,687 'executor.execute':813 'exhaust':2914 'exist':2333 'expand':143 'expens':2236,2292,2302,2319,2320 'expense.amount':2345,2347 'expense.restaurant':2328,2334 'expert':3652 'expir':2456,2611,2620 'expiri':2507 'explain':3072 'explicit':377,2787 'explod':1773 'explor':254,346 'exponenti':1586,1844,2541,2552 'extern':257,2325,2439,2637,2645,2660,3005 'extra':46 'f':1919 'fabric':2210,2275,2283,2291 'factual':2361 'fail':164,700,1602,1610,2011,2037,2168,2446,2520,3049,3061,3164 'failur':49,1359,1388,1630,1673,1716,2027,2464,2516,2652,3094 'fake':2232 'fals':1540 'feedback':938 'fewer':1685 'file':1263,1266,1268,2760,2762 'final':444,446 'find':2374 'first':90,717,745,1503,2131 'fix':1676,1877,2108,2312,2528,2746,2933,3103 'flag':2349,2413 'float':2405 'follow':409 'forget':2884 'format':410,643,2461,2509 'found':2339 'foundat':295 'founder':2033 'framework':230 'full':552,579,755,1550,1837,3029,3190 'fundament':1664 'gap':2093 'general':132 'general-purpos':131 'generat':857,897,962,963,978,987,1026,3126 'generator.generate':899 'generator.refine':930 'get':1146,1800,2606,2923 'given':627 'go':771,1558 'goal':20,60,180,374,567,724,775,780,781,784,1136,1153,1455,1457,1510,1511,2299,2710,2742,2893,3578 'goal-decomposit':179 'good':269,1769 'gpt':461,1030,1036 'gpt-4o':460,1029 'gpt-4o-mini':1035 'grace':2181 'grant':1274 'graph':955,956,1426,1429 'graph.add':960,965,970,976,980 'graph.compile':993,1437,1489 'great':1639 'ground':2315 'grow':1305,1783,1853 'growth':1776 'guardedag':1101 'guardrail':141,199,258,1056,1070,1099,2712 'guess':2385 'guesswork':3075 'gui':3524 'guidanc':32 'halt':2004 'handl':649,1389,2591,2647,3409,3419 'handler':3424 'happi':2052 'hard':1879 'hatch':2175 'haven':2485 'help':2258 'hierarch':3026 'high':2215,2434,2672 'histori':1551,1552,1556,1566,1982 'hours/days':1390 'human':31,146,245,589,701,731,1091,1179,1394,1479,1513,1521,1761,2176,2286,2419,2817,2843 'human-in-loop':244 'human-in-the-loop':145,1478 'hung':3282 'id':526,708,1447,2146,3335,3343,3349 'idea':3058 'idempot':2634,2641 'identifi':867 'immedi':2525 'implement':385,3488 'impli':3554,3560,3565,3570,3577,3583,3589,3595,3603,3609,3614,3620 'import':388,395,488,494,612,950,1047,1408,1412,2132,2391,2535,2926,3106,3175 'imposs':3101 'impress':2021 'improv':840,891 'includ':2126 'inconsist':2468 'increas':1619,1693 'increment':2195 'independ':18,1629,2656 'individu':650 'infinit':3232 'info':3385 'inform':2224 'init':1103,1891,2597,2940 'initi':858,896 'input':413,425,426,474,1079,2056,2060,2128,3196,3661 'inputs/outputs':3185 'insight':68 'instruct':2886 'int':2584 'integr':2428,2479,2493,2666 'interact':340,3527 'interleav':758,773 'intern':3083 'interpret':2734 'interrupt':711,1483,1492,1498,1507 'intervent':1395 'invent':2227,2309 'invoc':1441,1504,3275,3346 'invok':517 'isn':35 'issu':868,3065 'iter':478,839,894,906,945,1000 'json':1701,2569 'keep':1320,1948,2973,2980,3009 'key':67,376,2635,3032 'kill':72 'know':442,2189 'langchain':393 'langchain.agents':387 'langchain.evaluation':1046 'langgraph':231,483,606,946,1399,1404,1548,3610 'langgraph.checkpoint.postgres':493,1407 'langgraph.graph':949,1411 'langgraph.prebuilt':487,611 'langsmith':3170,3174 'last':1768,1951,2981 'latenc':3199 'later':1463 'layer':1077,1098 'learn':768 'least':1248,2747 'leav':2465 'len':1337 'length':1304,1820 'less':595 'lesson':94 'lifecycl':2593 'limit':471,1089,1665,1810,1881,1926,2451,2496,2901,3211,3220,3226,3238,3245,3257,3623 'list':622,645,1553 'll':2714 'llm':457,510,685,688,3251 'llms':2253 'load':1048,1051 'log':157,2851,2856,3105 'logger':2134,2136,3108,3110 'logger.bind':2144,3118,3140 'logger.error':2166,3162 'logger.info':2148,2155,3124,3145,3151 'long':1366,1449,1829,2878,2912,3268,3307,3498 'long-run':1365,1828,2877,3267,3306 'long-task':1448 'long-term':3497 'longer':1805 'look':2230 'loop':55,149,178,247,327,331,351,482,855,988,1482,3208,3223,3233,3591 'lose':1621,2889,2930 'lost':2928 'low':2415 'low-confid':2414 'made':2239 'made-up':2238 'make':37,42,380,2688,3080 'manag':237 'mani':1690 'match':2810,3632 'matter':555,845 'max':477,776,789,893,905,944,1112,1119,1317,1725,1732,1748,1884,1945,1962,2557,2942,2947,3228 'maximum':3218 'may':603 'mayb':2959 'mean':2058 'measur':2120 'medium':2875,3031,3046 'meet':2297 'memori':217,221,3006,3023,3492,3495,3500,3539 'memory-system':216 'memorysav':1417,3284,3290,3296 'mention':3552,3558,3563,3568,3575,3581,3587,3593,3601,3607,3612,3618 'messag':531,1316,1322,1325,1327,1330,1338,1341,1352,1875,1944,1953,1961,1965,1967,1970,1973,2906,2953,2955,2983,2998,3221,3248,3273,3295,3321,3344,3369,3391,3414,3438 'methodolog':2083 'mid':599,1397,2458,2500 'mid-process':1396 'mid-task':598,2457,2499 'middl':1333,1340,1346,1972,1977,1980,2990,2995,2999 'might':2733 'min':2555 'mini':1038 'minim':1252 'minut':2624 'mismatch':2462 'miss':3669 'mock':2444 'mode':2834,3095 'model':459,509,1018,1028,1034,1710,1809,2897 'modern':298 'modif':1577,3447 'modifi':1532,2692,2800,3433 'money':1843,2799 'monitor':2203 'month':2025 'move':2015 'multi':202,206,313,548,1097,1372,1592,3323,3454,3458,3542 'multi-ag':3453 'multi-agent-orchestr':205,3457,3541 'multi-agent-system':201 'multi-day':1371 'multi-lay':1096 'multi-step':312,547,1591,3322 'multipl':1075,3317,3461 'multipli':48,1672,2553 'must':161,1379,2400,3216 'mysteri':1611,3050 'n':1952,2982 'name':423,2234 'nativ':1403 'need':256,438,754,1074,1170,1335,3019,3271,3319,3340,3452,3466,3477,3490,3503,3517 'negoti':156 'never':2421 'next':359,792,798,801,804,814,819,1147,1152,3187 'node':959,961,964,966,969,971,974,1433,1487 'non':155 'non-negoti':154 'none':736,1473,1529,1542,1579,2600,2603 'note':238,255,268,281,294,308,323 'number':644,659 'oauth':2504 'object':628,723 'observ':368,430,2130,2907 'observableag':2138 'oct':241 'old':3034 'one':760,1692,2449 'open':252 'open-end':251 'openai':394 'oper':1069 'optim':326,882,2707,2743 'orchestr':208,225,3460,3544 'os.environ':502,1422 'output':111,135,847,859,898,908,913,914,924,929,934,935,940,972,973,991,1085,1700,2262,2367,2388,2403,2410,2417,3198,3357,3363,3371,3383,3387,3395,3641 'overkil':3512 'overwhelm':2043 'p95/p99':2121 'pars':3400 'partial':2463,2515,2651 'pass':921 'past':1564 'past_state.values':1571 'path':2053,2718,2722 'pattern':63,187,190,286,328,348,537,559,834,851,1355,2343,2812,3585 'paus':714,1484,1496,1501,1505,1526 'per':79,1254,1636,1695,1874,1886,1915,1924 'per-step':1694 'permiss':1253,1258,2677,2740,2750,2780,3662 'persist':522,3299,3353,3491 'perspect':1040 'phase':540,562 'plan':21,58,192,301,305,535,539,553,557,565,577,582,587,602,608,614,635,662,679,697,704,720,721,727,733,746,756,759,791,2846,3622 'plan-execut':57,191,300,534,556,607 'planner':618,623,683,684 'planner.plan':800 'planner.reassess':829 'plausibl':2229,2261 'plausible-look':2228 'point':1386,1527,1575,3033 'possibl':382,1683 'postgr':503,1423 'postgressav':495,1409,3301 'postgressaver.from':499,1419 'potenti':574 'prefer':1684 'prevent':480,3231,3259,3281 'previous':663,665,933,1562 'principl':116,1250,2749 'privileg':1249,2748 'probabl':50,124,1584,1631,1674 'problem':342,2089,2307,3068 'problem-solv':341 'process':1374,1398,2519 'produc':2260 'product':65,233,260,485,496,1066,1072,1369,1377,1414,1604,2010,2019,2029,2057,2101,2113,2488,2681,2801,3096,3287,3305 'project':2105 'promis':2475 'prompt':400,403,465,467,624,653,1950,2358,2922,2975,3573 'propos':113,137 'prototyp':2017 'provid':1401 'purchas':2689 'purpos':133 'pydant':2390,3396 'quadrat':1306,1817 'quadrupl':1824 'qualiti':844 'queri':475,532 'question':406,411,414,2085 'rais':1164,1204,1236,1751,1917,2172,2335,2587,3168 'rang':788,904,1731 'rare':1273,2776 'rate':71,78,1613,1635,2123,2205,2450,2495 'ratelimiterror':2588 'rather':2383 're':576,696,823,1834,3091 're-evalu':822 're-plan':575,695 're-send':1833 'react':56,189,287,329,347,350,384,390,399,402,455,466,484,490,507,3584 'react-pattern':188 'read':1262,1265,2753,2755,2759,2767,2783 'read/write':2779 'real':1997,2039,2091,2448,2492 'real-tim':1996 'realiz':1642 'reason':289,333,354,378,416 'receiv':369,2518 'recent':1324,1329,1350,1969,1986,1989,2984,3003,3028 'recipi':2687 'recommend':1675,1876,2107,2311,2527,2745,2932,3102 'recov':3411 'recover':2657 'recoveri':3404 'reduc':1677 'refer':2401 'refin':870,925 'reflect':62,186,316,833,850,887,889,947,954,967,968,979,983,3604 'reflection-pattern':185 'reflectionst':958 'refresh':2505,2626 'reject':1187 'relat':3528 'releas':240 'reliabl':44,66,89,117,196,1697,2069,2100,3390,3399 'remain':783,825,828 'repeat':372,435,763,875,2895 'replan':691 'replay':1572 'report':2237,2243,2303,3067 'reproduc':3064 'request':2816 'requir':1130,2355,2786,2791,3660 'research':1259,2751 'research/experimentation':250 'respons':1931,1937,2193,2565,2590 'response.headers.get':2577 'response.status':2572 'restart':1382 'restaur':2233,2332,2337 'result':370,431,472,529,664,666,734,812,821,1217,1508,1735,1739,1741,2152,2158,2159,2161,3149,3154,3155,3157,3379 'result.is':1238 'resum':1361,1383,1462,1766 'retri':1722,1726,1733,1749,1753,2536,2544,2575,2579,2585,2644 'retriev':3017 'retry-aft':2578 'return':831,923,939,992,1002,1008,1010,1185,1241,1297,1347,1351,1740,1964,1983,1987,2160,2589,2616,2628,2823,2826,3133,3156,3186 'revers':2866,3437 'review':726,1514,1762,2287,2351,2420,3653 'revok':2802 'robust':1015,2530 'robustag':1718 'robustapicli':2543 'role':264 'role-bas':263 'rollback':167,1094,1210,2662,3428,3442 'round':2346,2353 'run':1269,1367,1780,1804,1830,2114,2763,2833,2869,2879,3269,3308,3316 'runaway':481,3260 'runtim':1392 'safe':165 'safeti':1061,1076,3663 'satisfactori':877 'save':1442,3189,3444 'say':2268,2377 'scale':1816,2064,2111,2491 'schema':1702 'scope':126,200,1278,3634 'score':1006,2412 'screen':3526 'sdk':276 'search':1261 'second':92 'see':3020,3044 'segment':1760,1765 'self':27,183,319,836,853,884,1024,1104,1135,1723,1892,1899,1930,2141,2562,2598,2608,2621,2941,2952,2961,2971,3115,3137,3572,3597 'self-bia':1023 'self-correct':26,182,852,3596 'self-critiqu':883 'self-evalu':318,835 'self-prompt':3571 'self._execute':2153 'self.actual':1223 'self.agent':1107 'self.agent.execute':1219 'self.agent.plan':1151 'self.allowed':1122,1162 'self.calculate':1934 'self.client.post':2567 'self.compact':2968 'self.estimate':1194,1904 'self.expires':2601,2630 'self.is':2610 'self.llm.generate':3122 'self.log':1752 'self.max':1109,1116,1144,1202,1913,1922,2945,2965 'self.maybe':2956 'self.messages':2949,2977,2985,2991,3000 'self.messages.append':2954 'self.refresh':2614 'self.request':1178 'self.require':1127,1174 'self.rollback':1233 'self.save':1214 'self.token':2599,2612,2617,2963 'self.total':1893,1909,1932 'self.validate':1738 'send':1835,2683,2772,2796 'separ':304,538,591,1012,2778 'server':1381,1460 'set':1878,2693 'sever':1587,1777,2012,2214,2433,2671,2874,3045,3212,3239,3265,3288,3312,3336,3360,3384,3405,3429 'sharp':1581 'shortest':2717 'shouldn':2695 'show':2050 'sickn33':8 'silent':169 'similar':3172 'simpl':1605 'simpler':2184 'singl':1791 'situat':1589,1779,2014,2216,2435,2673,2876,3047 'skill':5,6,52,3025,3529,3626 'slower':1801 'small':1691 'solv':343,2305 'sound':1638 'sourc':2326,2398 'source-sickn33' 'special':271,1043 'specif':101,129,1486,2365,3648 'spend':3261 'sqlitesav':3303 'stabl':752 'stack':2484 'stage':2208 'stakehold':2024 'stale':605 'start':1452,2150,2894,3147 'state':236,516,521,779,797,802,811,816,827,830,832,997,999,1005,1443,1464,1466,1515,1516,1518,1523,1533,1537,1555,1563,1565,1569,2469,3181,3188,3350,3434,3445 'state.is':1470 'stategraph':951,957,1413,1430 'statist':2241 'status':1186,1242 'step':80,85,121,293,314,336,470,549,632,634,637,647,651,657,658,668,670,673,699,761,777,786,790,1117,1120,1140,1143,1145,1226,1593,1627,1637,1644,1650,1656,1671,1678,1681,1688,1696,1707,1713,1724,1754,2654,3089,3119,3141,3180,3193,3202,3210,3219,3225,3229,3318,3324 'step-by-step':631 'step.execute':1736 'stop':2537,2545,2546,3654 'store':1549,3013 'str':2170,2397,2399,3166 'strategi':742 'stream':1991 'string':501,1421 'structlog':2133,3107 'structlog.get':2135,3109 'structur':1699,2387,3104,3382,3386,3394 'stuck':2213,2264 'substitut':3644 'subtask':569,573 'succeed':1607 'success':77,1612,1634,1646,1652,1658,2122,3666 'summar':1332,1345,1954,1979,2987,2997,3027 'summari':1344,1349,1978,1985,2996,3002,3036 'support':1792,2369,2375 'surpris':1796 'surviv':1358,1380 'suspici':2342,2352 'symptom':1596,1786,2020,2225,2441,2678,2882,3051 'system':15,204,218,222,1067,1321,1326,1348,1370,1949,1966,1984,1988,2045,2102,2357,2440,2466,2489,2646,2921,2974,2976,3001,3024,3496,3540 't.name':1294 'take':2668,2715 'takeov':2177 'task':315,550,600,621,709,753,767,849,892,900,911,912,931,932,1255,1257,1280,1284,1368,1450,1453,1606,1609,1617,1887,1916,1925,2142,2145,2149,2154,2156,2167,2221,2459,2501,2881,2913,3283,3515,3630 'task.id':2147 'task_permissions.get':1283 'team':267 'tech':2483 'templat':401 'tenac':2534 'term':3499 'test':1270,2109,2116,2764,2836,3475,3650 'test/evaluate':3468 'think':3114,3120 'thought':353,415,439,2909,3121,3125,3127,3128,3132,3134 'thought/action/observation':436 'thousand':1794 'thread':519,525,707,1446,3334,3342,3348 'threshold':2180 'ticket':1793 'time':1545,1998 'time-travel':1544 'timedelta':2623 'timeout':3264,3272,3277,3279 'togeth':3464 'token':1318,1806,1857,1862,1867,1872,1901,1907,1946,1960,1963,2455,2506,2607,2615,2900,2943,2946,2948,2966,3129,3131,3203 'tokenmanag':2595 'told':2727 'tool':24,210,214,229,284,344,366,422,429,463,464,511,512,676,689,690,1286,1292,1299,1300,2366,2402,3478,3483,3485,3535 'tool-build':209 'total':1137,1198,1206,1221,1244,1246 'trace':379,3099,3176,3177,3183,3191 'tracedag':3112 'track':1993,2890,2934,3236,3243,3254 'traffic':2198 'train':2255,2408 'transfer':2798 'transform':1814 'travel':1546 'treat':109,134,3639 'tri':1216,1734,2151,2295,3148 'trigger':3450 'trim':1314,1851,1938,1942 'true':694 'truncat':2920 'trust':1622 'truth':115,139,2316 'try/catch':3421 'turn':1840,1854,1859,1864,1869 'two':561 'two-phas':560 'type':1256,1281,1285 'typo':2061 'uncertain':2426 'uncertainti':2407 'undon':2702 'unexpect':2059 'uniqu':3341 'updat':810 'uptim':2071 'url':504,1424 'usag':2936,3204 'usd':1114,1889 'use':283,339,345,407,545,674,843,1016,1042,1065,1364,1698,1708,1990,2035,2386,2633,2777,3004,3169,3250,3285,3300,3355,3368,3372,3393,3522,3550,3624 'user':527,1620,2040,2066,3066,3451,3465,3476,3489,3502,3516,3551,3557,3562,3567,3574,3580,3586,3592,3600,3606,3611,3617 'usual':2073 'v1':2512 'v2':2514 'valid':1080,1086,1154,1500,1704,2192,2313,2318,3205,3359,3366,3374,3375,3649 'validate/modify':586 'validationerror':2336 'variat':2510 'vector':3015 'verifi':2331,2381 'verifiedclaim':2394 'visibl':554,580,3086 'vs':2513 'wait':2540,2550,2551 'warn':3266,3313,3337,3361,3406,3430 'web':1260,2754 'webhook':2517 'well':3531 'window':2873,2916 'winner':96 'without':29,1850,2285,2690,2711,3085,3098,3209,3224,3252,3263,3276,3310,3326,3333,3347,3358,3373,3381,3402,3417,3427,3441 'won':3351 'work':826,1598,2008,2030,2074,2096,2442,3056,3463,3530 'workflow':224,227,3504,3507 'workflow-autom':226,3506 'workflow-orchestr':223 'would':1920,2841 'write':1267,2761,2785 'wrong':2249,2686","prices":[{"id":"6c372823-9577-4ee1-921d-8218da9ce89b","listingId":"bae8df4a-edb9-4a9d-b977-da3e04051486","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T20:37:20.303Z"}],"sources":[{"listingId":"bae8df4a-edb9-4a9d-b977-da3e04051486","source":"github","sourceId":"sickn33/antigravity-awesome-skills/autonomous-agents","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/autonomous-agents","isPrimary":false,"firstSeenAt":"2026-04-18T21:31:38.048Z","lastSeenAt":"2026-04-27T06:50:25.754Z"},{"listingId":"bae8df4a-edb9-4a9d-b977-da3e04051486","source":"skills_sh","sourceId":"sickn33/antigravity-awesome-skills/autonomous-agents","sourceUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/autonomous-agents","isPrimary":true,"firstSeenAt":"2026-04-18T20:37:20.303Z","lastSeenAt":"2026-04-27T09:40:40.681Z"}],"details":{"listingId":"bae8df4a-edb9-4a9d-b977-da3e04051486","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"autonomous-agents","source":"skills_sh","category":"antigravity-awesome-skills","skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/autonomous-agents"},"updatedAt":"2026-04-27T09:40:40.681Z"}}