{"id":"b1c0bae5-38da-4d69-b62c-2e5989f0669c","shortId":"3jNCqT","kind":"skill","title":"multi-agent-architect","tagline":"Design and optimize production-grade multi-agent systems with LangGraph, LangChain, and DeepAgents for complex AI workflows.","description":"# Multi-Agent Architect & Updater Skill\n\n## Overview\n\nThis skill turns Claude into a Senior AI Multi-Agent Architect specialized in LangGraph, LangChain, and DeepAgents. It provides structured workflows for creating and updating production-grade multi-agent systems — including supervisor agents, planners, researchers, coders, and memory-backed autonomous pipelines. Use it whenever you need to design, build, debug, or scale any multi-agent AI system.\n\nIf this skill adapts material from an external GitHub repository, declare both:\n\n- `source_repo: owner/repo`\n- `source_type: official` or `source_type: community`\n\n## When to Use This Skill\n\n- Use when you need to create a new agent or multi-agent workflow from scratch\n- Use when working with LangGraph state graphs, nodes, edges, or conditional routing\n- Use when the user asks about agent communication, memory systems, or tool-calling pipelines\n- Use when debugging or optimizing an existing LangChain/LangGraph agent system\n- Use when architecting supervisor, planner, research, coding, or validation agent roles\n- Use when integrating DeepAgents with hierarchical planning and delegation\n\n## How It Works\n\n### Step 1: Understand the Goal\n\nBefore writing any code, clarify:\n- What is the **business objective** this agent system must achieve?\n- What **agent roles** are needed (supervisor, planner, researcher, coder, validator)?\n- What **tools** does each agent require?\n- What **memory** strategy is needed (Redis, Vector DB, LangChain Memory)?\n- What **communication protocol** connects agents (shared state, message passing)?\n\n### Step 2: Define the State Schema\n\nAll agents share a typed state object passed through the graph:\n\n```python\nfrom typing import TypedDict\n\nclass AgentState(TypedDict):\n    user_goal: str\n    tasks: list[str]\n    completed_tasks: list[str]\n    next_agent: str\n    context: dict\n    step_count: int          # guards against infinite loops\n    error: str | None\n```\n\n### Step 3: Define Agent Nodes\n\nEach agent is an **async function** that reads from state and returns an updated state:\n\n```python\nimport logging\nfrom langchain_openai import ChatOpenAI\n\nlogger = logging.getLogger(__name__)\n\nasync def research_node(state: AgentState) -> AgentState:\n    logger.info(\"research_node: starting\")\n    llm = ChatOpenAI(model=\"gpt-4o\")\n    result = await llm.bind_tools(research_tools).ainvoke(state[\"user_goal\"])\n    state[\"context\"][\"research\"] = result.content\n    state[\"next_agent\"] = \"coder\"\n    return state\n```\n\n### Step 4: Build the LangGraph\n\nWire nodes together with edges and conditional routing:\n\n```python\nfrom langgraph.graph import StateGraph, END\nfrom langgraph.prebuilt import ToolNode\n\ndef build_graph() -> StateGraph:\n    graph = StateGraph(AgentState)\n\n    graph.add_node(\"supervisor\", supervisor_node)\n    graph.add_node(\"research\",   research_node)\n    graph.add_node(\"coder\",      coding_node)\n    graph.add_node(\"validator\",  validation_node)\n    graph.add_node(\"tools\",      ToolNode(all_tools))\n\n    graph.set_entry_point(\"supervisor\")\n\n    graph.add_conditional_edges(\n        \"supervisor\",\n        route_next,\n        {\"research\": \"research\", \"coder\": \"coder\", \"end\": END}\n    )\n\n    graph.add_edge(\"research\",  \"supervisor\")\n    graph.add_edge(\"coder\",     \"validator\")\n    graph.add_edge(\"validator\", \"supervisor\")\n\n    return graph.compile()\n\ndef route_next(state: AgentState) -> str:\n    if state[\"step_count\"] > 20:\n        return \"end\"\n    return state[\"next_agent\"]\n```\n\n### Step 5: Add Memory\n\n```python\nfrom langchain_community.chat_message_histories import RedisChatMessageHistory\n\ndef get_memory(session_id: str):\n    return RedisChatMessageHistory(\n        session_id=session_id,\n        url=os.getenv(\"REDIS_URL\"),\n        ttl=3600\n    )\n```\n\n### Step 6: Run the Graph\n\n```python\nasync def run(user_goal: str, session_id: str):\n    graph = build_graph()\n    initial_state = AgentState(\n        user_goal=user_goal,\n        tasks=[],\n        completed_tasks=[],\n        next_agent=\"supervisor\",\n        context={},\n        step_count=0,\n        error=None,\n    )\n    return await graph.ainvoke(initial_state)\n```\n\n### Step 7: Expose via FastAPI (optional)\n\n```python\nfrom fastapi import FastAPI\nfrom pydantic import BaseModel\n\napp = FastAPI()\n\nclass RunRequest(BaseModel):\n    goal: str\n    session_id: str\n\n@app.post(\"/run\")\nasync def run_agent(req: RunRequest):\n    result = await run(req.goal, req.session_id)\n    return {\"result\": result}\n```\n\n---\n\n## Updating an Existing Agent\n\nWhen the user wants to update or debug an existing agent, structure the response as:\n\n```\n## Existing Issue\n[Describe the current problem]\n\n## Root Cause\n[Identify why it's happening in the architecture]\n\n## Proposed Update\n[Outline the changes at architecture level]\n\n## Updated Code\n[Generate only the changed modules]\n\n## Migration Notes\n[What breaks, what's backward-compatible]\n\n## Performance Impact\n[Latency / token / memory delta]\n```\n\n---\n\n## Standard Folder Structure\n\nAlways generate code in this layout:\n\n```\nmulti_agent_system/\n├── agents/          # One file per agent role\n├── tools/           # Tool definitions and wrappers\n├── memory/          # Redis, VectorDB, LangChain memory helpers\n├── prompts/         # Prompt templates (one per agent)\n├── workflows/       # High-level orchestration logic\n├── graphs/          # LangGraph state + compiled graph definitions\n├── api/             # FastAPI routes (optional)\n├── configs/         # Config loader — no secrets in code\n├── tests/           # Unit + integration tests per agent\n└── main.py\n```\n\n---\n\n## Examples\n\n### Example 1: Research + Coding Multi-Agent Workflow\n\n```python\n# agents/research_agent.py\nasync def research_node(state: AgentState) -> AgentState:\n    llm = ChatOpenAI(model=\"gpt-4o\").bind_tools([web_search, rag_search])\n    response = await llm.ainvoke(\n        f\"Research the following and return structured findings:\\n{state['user_goal']}\"\n    )\n    state[\"context\"][\"research\"] = response.content\n    state[\"next_agent\"] = \"coder\"\n    return state\n\n# agents/coding_agent.py\nasync def coding_node(state: AgentState) -> AgentState:\n    llm = ChatOpenAI(model=\"gpt-4o\").bind_tools([python_repl, github_tool])\n    response = await llm.ainvoke(\n        f\"Given this research:\\n{state['context']['research']}\\n\\nWrite production Python code.\"\n    )\n    state[\"context\"][\"code\"] = response.content\n    state[\"next_agent\"] = \"validator\"\n    return state\n```\n\n### Example 2: Supervisor with Dynamic Delegation\n\n```python\n# agents/supervisor_agent.py\nDELEGATION_PROMPT = \"\"\"\nYou are a supervisor. Given the current state, decide the next agent.\nAvailable agents: research, coder, validator, end.\nRespond with ONLY the agent name.\n\nGoal: {goal}\nCompleted: {completed}\nContext keys available: {context}\n\"\"\"\n\nasync def supervisor_node(state: AgentState) -> AgentState:\n    state[\"step_count\"] += 1\n    llm = ChatOpenAI(model=\"gpt-4o\")\n    decision = await llm.ainvoke(\n        DELEGATION_PROMPT.format(\n            goal=state[\"user_goal\"],\n            completed=state[\"completed_tasks\"],\n            context=list(state[\"context\"].keys()),\n        )\n    )\n    next_agent = decision.content.strip().lower()\n    # Validate against allowlist before setting\n    allowed = {\"research\", \"coder\", \"validator\", \"end\"}\n    state[\"next_agent\"] = next_agent if next_agent in allowed else \"end\"\n    return state\n```\n\n### Example 3: DeepAgents Reflection Loop\n\n```python\nasync def reflection_node(state: AgentState) -> AgentState:\n    llm = ChatOpenAI(model=\"gpt-4o\")\n    critique = await llm.ainvoke(\n        f\"Evaluate this output critically:\\n{state['context'].get('code', '')}\\n\"\n        \"List any bugs, gaps, or improvements. Be concise.\"\n    )\n    state[\"context\"][\"critique\"] = critique.content\n    state[\"next_agent\"] = \"coder\" if \"bug\" in critique.content.lower() else \"end\"\n    return state\n```\n\n---\n\n## Best Practices\n\n- ✅ One agent = one responsibility — never combine planning + coding + testing in one node\n- ✅ Use `TypedDict` for all state schemas — enables type checking and graph validation\n- ✅ Bind only the tools each agent needs — reduces hallucinated tool calls\n- ✅ Always add a `step_count` guard to prevent infinite routing loops\n- ✅ Use `async`/`await` throughout — LangGraph supports async natively\n- ✅ Store all secrets in environment variables loaded via `os.getenv()`\n- ✅ Set TTLs on all Redis keys scoped to `session_id`\n- ✅ Log at every node entry and tool call for observability\n- ✅ Validate supervisor routing output against an allowlist of agent names\n- ❌ Don't hardcode API keys, model names, or Redis URLs\n- ❌ Don't share tool lists across agents that don't need them\n- ❌ Don't skip error handling — tool failures and empty LLM responses are common\n- ❌ Don't trust unvalidated LLM routing decisions — always check against an allowlist\n\n---\n\n## Limitations\n\n- This skill does not replace environment-specific testing, load testing, or security review before production deployment.\n- Generated LangGraph code targets the current stable API — always verify method signatures against your installed version (`pip show langgraph`).\n- Stop and ask for clarification if the agent's goal, tool permissions, or routing logic is ambiguous before generating a full architecture.\n- DeepAgents integration patterns assume the library is installed and configured in the target environment.\n\n---\n\n## Security & Safety Notes\n\n- Never expose API keys in generated code. All secrets must use environment variables:\n  ```python\n  OPENAI_API_KEY = os.getenv(\"OPENAI_API_KEY\")   # ✅ correct\n  OPENAI_API_KEY = \"sk-...\"                        # ❌ never do this\n  ```\n- Always validate and sanitize user inputs before injecting them into agent prompts — treat all user input as untrusted.\n- Add a permission layer before allowing agents to execute shell commands or write to filesystems.\n- If generating a Python REPL tool node, document that it must only run in a sandboxed, isolated environment.\n  <!-- security-allowlist: python_repl tool examples are for sandboxed execution environments only -->\n- For production deployments, add rate-limit handling and exponential backoff on all LLM and external API calls.\n- Scope all Redis session keys to `session_id` and set a TTL to prevent memory leaks across sessions.\n\n---\n\n## Common Pitfalls\n\n- **Problem:** Agent loops indefinitely between supervisor and sub-agents  \n  **Solution:** Add `step_count: int` to state; return `\"end\"` in `route_next()` when `step_count > N`\n\n- **Problem:** Supervisor routes to a non-existent agent name  \n  **Solution:** Validate the LLM's routing output against a hardcoded allowlist before setting `next_agent`\n\n- **Problem:** Memory leaks across user sessions  \n  **Solution:** Scope Redis keys to `session_id` and always set a TTL (`ttl=3600`)\n\n- **Problem:** Tool results are ignored by the next agent  \n  **Solution:** Always write tool output into `state[\"context\"]` and confirm the next node reads it\n\n- **Problem:** Agents share too many tools and hallucinate wrong tool calls  \n  **Solution:** Use `.bind_tools([only_relevant_tools])` per agent instead of a global tool list\n\n- **Problem:** Graph fails silently on API rate limits  \n  **Solution:** Wrap LLM calls in retry logic with exponential backoff using `tenacity`\n\n---\n\n## Related Skills\n\n- `@langchain-rag` - When you need retrieval-augmented generation pipelines specifically\n- `@fastapi-backend` - When deploying agent systems as production REST APIs\n- `@python-async` - When deepening async/await patterns used throughout agent nodes","tags":["multi","agent","architect","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding"],"capabilities":["skill","source-sickn33","skill-multi-agent-architect","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/multi-agent-architect","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 37911 github stars · SKILL.md body (11,572 chars)","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-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:51:24.819Z","embedding":null,"createdAt":"2026-05-08T12:51:35.231Z","updatedAt":"2026-05-18T18:51:24.819Z","lastSeenAt":"2026-05-18T18:51:24.819Z","tsv":"'/run':569 '0':535 '1':197,717,868 '2':252,817 '20':465 '3':302,921 '3600':500,1383 '4':370 '4o':348,738,783,874,938 '5':473 '6':502 '7':544 'achiev':215 'across':1087,1309,1367 'adapt':96 'add':474,1015,1242,1278,1324 'agent':3,13,26,41,62,66,90,128,132,154,171,182,212,217,230,246,258,287,304,307,365,471,530,573,588,599,660,662,666,684,713,722,766,812,837,839,848,893,908,910,913,967,980,1008,1070,1088,1163,1234,1248,1314,1322,1347,1363,1392,1409,1427,1473,1488 'agents/coding_agent.py':770 'agents/research_agent.py':725 'agents/supervisor_agent.py':823 'agentst':274,337,338,398,459,521,731,732,776,777,863,864,931,932 'ai':22,38,91 'ainvok':355 'allow':901,915,1247 'allowlist':898,1068,1118,1359 'alway':653,1014,1114,1145,1224,1378,1394 'ambigu':1172 'api':697,1075,1144,1197,1210,1214,1218,1291,1439,1478 'app':558 'app.post':568 'architect':4,27,42,175 'architectur':619,626,1177 'ask':152,1158 'assum':1181 'async':310,332,507,570,726,771,858,926,1026,1031,1481 'async/await':1484 'augment':1464 'autonom':74 'avail':838,856 'await':350,539,577,746,791,876,940,1027 'back':73 'backend':1470 'backoff':1285,1451 'backward':642 'backward-compat':641 'basemodel':557,562 'best':977 'bind':739,784,1003,1421 'break':638 'bug':955,970 'build':83,371,393,517 'busi':209 'call':161,1013,1059,1292,1418,1445 'caus':611 'chang':624,633 'chatopenai':328,344,734,779,870,934 'check':999,1115 'clarif':1160 'clarifi':205 'class':273,560 'claud':34 'code':179,204,412,629,655,707,719,773,805,808,951,986,1139,1201 'coder':69,224,366,411,437,438,447,767,841,903,968 'combin':984 'command':1252 'common':1106,1311 'communic':155,243 'communiti':114 'compat':643 'compil':694 'complet':282,527,852,853,883,885 'complex':21 'concis':960 'condit':146,380,430 'config':701,702 'configur':1187 'confirm':1402 'connect':245 'context':289,360,532,761,799,807,854,857,887,890,949,962,1400 'correct':1216 'count':292,464,534,867,1018,1326,1337 'creat':54,125 'critic':946 'critiqu':939,963 'critique.content':964 'critique.content.lower':972 'current':608,832,1142 'db':239 'debug':84,165,596 'decid':834 'decis':875,1113 'decision.content.strip':894 'declar':103 'deepag':19,48,187,922,1178 'deepen':1483 'def':333,392,455,483,508,571,727,772,859,927 'defin':253,303 'definit':670,696 'deleg':192,821,824 'delegation_prompt.format':878 'delta':649 'deploy':1136,1277,1472 'describ':606 'design':5,82 'dict':290 'document':1264 'dynam':820 'edg':144,378,431,442,446,450 'els':916,973 'empti':1102 'enabl':997 'end':387,439,440,467,843,905,917,974,1331 'entri':426,1056 'environ':1037,1126,1191,1206,1274 'environment-specif':1125 'error':298,536,1097 'evalu':943 'everi':1054 'exampl':715,716,816,920 'execut':1250 'exist':169,587,598,604,1346 'exponenti':1284,1450 'expos':545,1196 'extern':100,1290 'f':748,793,942 'fail':1436 'failur':1100 'fastapi':547,551,553,559,698,1469 'fastapi-backend':1468 'file':664 'filesystem':1256 'find':755 'folder':651 'follow':751 'full':1176 'function':311 'gap':956 'generat':630,654,1137,1174,1200,1258,1465 'get':484,950 'github':101,788 'given':794,830 'global':1431 'goal':200,277,358,511,523,525,563,759,850,851,879,882,1165 'gpt':347,737,782,873,937 'gpt-4o':346,736,781,872,936 'grade':10,59 'graph':142,267,394,396,505,516,518,691,695,1001,1435 'graph.add':399,404,409,414,419,429,441,445,449 'graph.ainvoke':540 'graph.compile':454 'graph.set':425 'guard':294,1019 'hallucin':1011,1415 'handl':1098,1282 'happen':616 'hardcod':1074,1358 'helper':678 'hierarch':189 'high':687 'high-level':686 'histori':480 'id':487,492,494,514,566,581,1051,1300,1376 'identifi':612 'ignor':1388 'impact':645 'import':271,322,327,385,390,481,552,556 'improv':958 'includ':64 'indefinit':1316 'infinit':296,1022 'initi':519,541 'inject':1231 'input':1229,1239 'instal':1151,1185 'instead':1428 'int':293,1327 'integr':186,710,1179 'isol':1273 'issu':605 'key':855,891,1047,1076,1198,1211,1215,1219,1297,1373 'langchain':17,46,240,325,676,1457 'langchain-rag':1456 'langchain/langgraph':170 'langchain_community.chat':478 'langgraph':16,45,140,373,692,1029,1138,1155 'langgraph.graph':384 'langgraph.prebuilt':389 'latenc':646 'layer':1245 'layout':658 'leak':1308,1366 'level':627,688 'librari':1183 'limit':1119,1281,1441 'list':280,284,888,953,1086,1433 'llm':343,733,778,869,933,1103,1111,1288,1352,1444 'llm.ainvoke':747,792,877,941 'llm.bind':351 'load':1039,1129 'loader':703 'log':323,1052 'logger':329 'logger.info':339 'logging.getlogger':330 'logic':690,1170,1448 'loop':297,924,1024,1315 'lower':895 'main.py':714 'mani':1412 'materi':97 'memori':72,156,233,241,475,485,648,673,677,1307,1365 'memory-back':71 'messag':249,479 'method':1147 'migrat':635 'model':345,735,780,871,935,1077 'modul':634 'multi':2,12,25,40,61,89,131,659,721 'multi-ag':11,24,39,60,88,130,720 'multi-agent-architect':1 'must':214,1204,1267 'n':756,797,801,947,952,1338 'name':331,849,1071,1078,1348 'nativ':1032 'need':80,123,220,236,1009,1092,1461 'never':983,1195,1221 'new':127 'next':286,364,434,457,470,529,765,811,836,892,907,909,912,966,1334,1362,1391,1404 'node':143,305,335,341,375,400,403,405,408,410,413,415,418,420,729,774,861,929,990,1055,1263,1405,1489 'non':1345 'non-exist':1344 'none':300,537 'note':636,1194 'nwrite':802 'object':210,263 'observ':1061 'offici':110 'one':663,682,979,981,989 'openai':326,1209,1213,1217 'optim':7,167 'option':548,700 'orchestr':689 'os.getenv':496,1041,1212 'outlin':622 'output':945,1065,1355,1397 'overview':30 'owner/repo':107 'pass':250,264 'pattern':1180,1485 'per':665,683,712,1426 'perform':644 'permiss':1167,1244 'pip':1153 'pipelin':75,162,1466 'pitfal':1312 'plan':190,985 'planner':67,177,222 'point':427 'practic':978 'prevent':1021,1306 'problem':609,1313,1339,1364,1384,1408,1434 'product':9,58,803,1135,1276,1476 'production-grad':8,57 'prompt':679,680,825,1235 'propos':620 'protocol':244 'provid':50 'pydant':555 'python':268,321,382,476,506,549,724,786,804,822,925,1208,1260,1480 'python-async':1479 'rag':743,1458 'rate':1280,1440 'rate-limit':1279 'read':313,1406 'redi':237,497,674,1046,1080,1295,1372 'redischatmessagehistori':482,490 'reduc':1010 'reflect':923,928 'relat':1454 'relev':1424 'repl':787,1261 'replac':1124 'repo':106 'repositori':102 'req':574 'req.goal':579 'req.session':580 'requir':231 'research':68,178,223,334,340,353,361,406,407,435,436,443,718,728,749,762,796,800,840,902 'respond':844 'respons':602,745,790,982,1104 'response.content':763,809 'rest':1477 'result':349,576,583,584,1386 'result.content':362 'retri':1447 'retriev':1463 'retrieval-aug':1462 'return':317,367,453,466,468,489,538,582,753,768,814,918,975,1330 'review':1133 'role':183,218,667 'root':610 'rout':147,381,433,456,699,1023,1064,1112,1169,1333,1341,1354 'run':503,509,572,578,1269 'runrequest':561,575 'safeti':1193 'sandbox':1272 'sanit':1227 'scale':86 'schema':256,996 'scope':1048,1293,1371 'scratch':135 'search':742,744 'secret':705,1035,1203 'secur':1132,1192 'senior':37 'session':486,491,493,513,565,1050,1296,1299,1310,1369,1375 'set':900,1042,1302,1361,1379 'share':247,259,1084,1410 'shell':1251 'show':1154 'signatur':1148 'silent':1437 'sk':1220 'skill':29,32,95,119,1121,1455 'skill-multi-agent-architect' 'skip':1096 'solut':1323,1349,1370,1393,1419,1442 'sourc':105,108,112 'source-sickn33' 'special':43 'specif':1127,1467 'stabl':1143 'standard':650 'start':342 'state':141,248,255,262,315,320,336,356,359,363,368,458,462,469,520,542,693,730,757,760,764,769,775,798,806,810,815,833,862,865,880,884,889,906,919,930,948,961,965,976,995,1329,1399 'stategraph':386,395,397 'step':196,251,291,301,369,463,472,501,533,543,866,1017,1325,1336 'stop':1156 'store':1033 'str':278,281,285,288,299,460,488,512,515,564,567 'strategi':234 'structur':51,600,652,754 'sub':1321 'sub-ag':1320 'supervisor':65,176,221,401,402,428,432,444,452,531,818,829,860,1063,1318,1340 'support':1030 'system':14,63,92,157,172,213,661,1474 'target':1140,1190 'task':279,283,526,528,886 'templat':681 'tenac':1453 'test':708,711,987,1128,1130 'throughout':1028,1487 'togeth':376 'token':647 'tool':160,227,352,354,421,424,668,669,740,785,789,1006,1012,1058,1085,1099,1166,1262,1385,1396,1413,1417,1422,1425,1432 'tool-cal':159 'toolnod':391,422 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'treat':1236 'trust':1109 'ttl':499,1304,1381,1382 'ttls':1043 'turn':33 'type':109,113,261,270,998 'typeddict':272,275,992 'understand':198 'unit':709 'untrust':1241 'unvalid':1110 'updat':28,56,319,585,594,621,628 'url':495,498,1081 'use':76,117,120,136,148,163,173,184,991,1025,1205,1420,1452,1486 'user':151,276,357,510,522,524,591,758,881,1228,1238,1368 'valid':181,225,416,417,448,451,813,842,896,904,1002,1062,1225,1350 'variabl':1038,1207 'vector':238 'vectordb':675 'verifi':1146 'version':1152 'via':546,1040 'want':592 'web':741 'whenev':78 'wire':374 'work':138,195 'workflow':23,52,133,685,723 'wrap':1443 'wrapper':672 'write':202,1254,1395 'wrong':1416","prices":[{"id":"0ae55a30-de28-4b9c-8ae5-76116121b326","listingId":"b1c0bae5-38da-4d69-b62c-2e5989f0669c","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-05-08T12:51:35.231Z"}],"sources":[{"listingId":"b1c0bae5-38da-4d69-b62c-2e5989f0669c","source":"github","sourceId":"sickn33/antigravity-awesome-skills/multi-agent-architect","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/multi-agent-architect","isPrimary":false,"firstSeenAt":"2026-05-08T12:51:35.231Z","lastSeenAt":"2026-05-18T18:51:24.819Z"}],"details":{"listingId":"b1c0bae5-38da-4d69-b62c-2e5989f0669c","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"multi-agent-architect","github":{"repo":"sickn33/antigravity-awesome-skills","stars":37911,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-05-18T08:24:49Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"526931ca95fe8f1fdd7ff9cd244ed1df5e624979","skill_md_path":"skills/multi-agent-architect/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/multi-agent-architect"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"multi-agent-architect","description":"Design and optimize production-grade multi-agent systems with LangGraph, LangChain, and DeepAgents for complex AI workflows."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/multi-agent-architect"},"updatedAt":"2026-05-18T18:51:24.819Z"}}