[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M738BVCSC8855QSBMKHTPSZP":3,"skill-same:01M738BVCSC8855QSBMKHTPSZP":47},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":23,"commitSha":24,"skillDirectory":25,"forksCount":26,"repositoryHtmlUrl":27,"repositoryHomepageUrl":28,"ownerHtmlUrl":29,"ownerBlogUrl":30,"ownerDescription":31,"updatedAt":32,"install":33,"resources":46},"01M738BVCSC8855QSBMKHTPSZP","a2a-protocol-patterns",null,"Horonomos-laps\u002FYana-AI","Horonomos-laps","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F355299122?v=4","01M76B3QPXE88ET2SQPDPVATZT"," Horonomos-laps","01M72ZQRJPCYPSSWT4D00VJR2A",13,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI\u002Fblob\u002Fmain\u002Fcore\u002Fskills\u002Fa2a-protocol-patterns\u002FSKILL.md",[],[],"2026-11-11 15:11:14",false,"---\nname: a2a-protocol-patterns\ndescription: Agent-to-Agent (A2A) protocol — Google 2025, 150+ org backing. Agent Cards discovery, task lifecycle (submitted→working→completed), artifacts (text\u002Fstructured\u002Fvideo), opaque task model. MCP vs A2A split. Auth: bearer\u002FmTLS\u002Fsigned. Sources: rohitg00\u002Fai-engineering-from-scratch (Apache-2.0).\norigin: yana-ai — synthesized from rohitg00\u002Fai-engineering-from-scratch (Apache-2.0)\nlicense: Apache-2.0\nversion: 1.0.0\ncompatibility: yana-ai >= 1.3.54\n---\n\n# \u002Fa2a-protocol-patterns\n\n## When to Use\n\n- Cross-organization agent calls: your agent calls an agent at another company\u002Fsystem\n- Building a discoverable agent endpoint that any A2A-compatible client can invoke\n- Replacing bespoke agent-to-agent HTTP contracts with a standard protocol\n- Multi-agent systems where subagents are independent services (LangGraph, CrewAI, AutoGen)\n\n## Do NOT use for\n\n- Tool use within a single agent (use MCP — [[mcp-server-patterns]])\n- Internal function calls between co-located agents in the same process\n- Synchronous tool calls where task lifecycle overhead isn't worth it\n\n---\n\n## MCP vs A2A — the split\n\n```\nMCP  (Model Context Protocol)  — agent ↔ tool\n                                  vertical: agent reads\u002Fwrites to a tool server\n                                  stateless by default, JSON-RPC\n\nA2A  (Agent-to-Agent Protocol)  — agent ↔ agent\n                                  horizontal peer: both sides are agents with reasoning\n                                  stateful (task lifecycle), async by default\n\nProduction pattern: use both.\n  Agent A —[A2A]→ Agent B —[MCP]→ tools on Agent B's side\n```\n\n---\n\n## Agent Card (discovery at `\u002F.well-known\u002Fagent.json`)\n\n```typescript\n\u002F\u002F Agent Card spec — publish at \u002F.well-known\u002Fagent.json\ninterface AgentCard {\n  name:       string;\n  version:    string;\n  skills:     string[];          \u002F\u002F e.g. [\"code-review\", \"security-scan\"]\n  endpoints: {\n    tasks:    string;            \u002F\u002F POST \u002Ftasks\n  };\n  auth: {\n    type:     \"bearer\" | \"mtls\" | \"signed\";\n    scopes?:  string[];          \u002F\u002F OAuth scopes if bearer\n  };\n  modalities: (\"text\" | \"structured\" | \"image\" | \"video\" | \"audio\")[];\n  description?: string;\n}\n\n\u002F\u002F Example\nconst yamtamAgentCard: AgentCard = {\n  name:       \"yamtam-security-agent\",\n  version:    \"1.0.0\",\n  skills:     [\"red-team-check\", \"blue-team-fix\", \"leak-check\"],\n  endpoints:  { tasks: \"https:\u002F\u002Fagents.example.com\u002Ftasks\" },\n  auth:       { type: \"bearer\", scopes: [\"agent:invoke\"] },\n  modalities: [\"text\", \"structured\"],\n};\n```\n\n---\n\n## Task lifecycle\n\n```\nsubmitted → working → completed\n                    → failed\n                    → canceled\n```\n\n```typescript\n\u002F\u002F Task model\ninterface A2ATask {\n  id:       string;\n  skill:    string;\n  input:    Record\u003Cstring, unknown>;\n  state:    \"submitted\" | \"working\" | \"completed\" | \"failed\" | \"canceled\";\n  progress?: number;          \u002F\u002F 0–100\n  artifacts?: Artifact[];\n  error?:   string;\n}\n\ninterface Artifact {\n  type:     \"text\" | \"structured\" | \"image\" | \"video\" | \"audio\";\n  content:  string;           \u002F\u002F text\u002FJSON inline or file path\n  mimeType?: string;\n}\n```\n\n---\n\n## Minimal A2A server (Node.js \u002F Express)\n\n```typescript\nimport express from \"express\";\nimport { randomUUID } from \"crypto\";\n\nconst app   = express();\nconst tasks = new Map\u003Cstring, A2ATask>();\n\n\u002F\u002F Discovery\napp.get(\"\u002F.well-known\u002Fagent.json\", (req, res) => res.json(yamtamAgentCard));\n\n\u002F\u002F Submit task\napp.post(\"\u002Ftasks\", express.json(), async (req, res) => {\n  const task: A2ATask = {\n    id:    randomUUID(),\n    skill: req.body.skill,\n    input: req.body.input,\n    state: \"submitted\",\n  };\n  tasks.set(task.id, task);\n  res.status(201).json({ task_id: task.id, state: task.state });\n\n  \u002F\u002F Process async\n  processTask(task);\n});\n\n\u002F\u002F Poll for status\napp.get(\"\u002Ftasks\u002F:id\", (req, res) => {\n  const task = tasks.get(req.params.id);\n  if (!task) return res.status(404).json({ error: \"not found\" });\n  res.json(task);\n});\n\n\u002F\u002F SSE for streaming updates\napp.get(\"\u002Ftasks\u002F:id\u002Fevents\", (req, res) => {\n  const task = tasks.get(req.params.id);\n  if (!task) return res.status(404).end();\n  res.setHeader(\"Content-Type\", \"text\u002Fevent-stream\");\n  res.setHeader(\"Cache-Control\", \"no-cache\");\n\n  const send = (data: object) => res.write(`data: ${JSON.stringify(data)}\\n\\n`);\n  const interval = setInterval(() => {\n    const t = tasks.get(req.params.id)!;\n    send({ state: t.state, progress: t.progress });\n    if (t.state === \"completed\" || t.state === \"failed\") {\n      clearInterval(interval);\n      res.end();\n    }\n  }, 500);\n});\n\nasync function processTask(task: A2ATask) {\n  task.state = \"working\";\n  task.progress = 0;\n  \u002F\u002F ... run skill logic ...\n  task.state = \"completed\";\n  task.artifacts = [{ type: \"text\", content: \"Scan complete. 0 critical findings.\" }];\n}\n```\n\n---\n\n## A2A client (discovery + task submission)\n\n```typescript\nasync function callAgent(agentBaseUrl: string, skill: string, input: object): Promise\u003CArtifact[]> {\n  \u002F\u002F 1. Discover\n  const card = await fetch(`${agentBaseUrl}\u002F.well-known\u002Fagent.json`).then(r => r.json());\n  if (!card.skills.includes(skill)) throw new Error(`Agent does not support skill: ${skill}`);\n\n  \u002F\u002F 2. Submit\n  const { task_id } = await fetch(card.endpoints.tasks, {\n    method: \"POST\",\n    headers: { \"Content-Type\": \"application\u002Fjson\", \"Authorization\": `Bearer ${getToken()}` },\n    body: JSON.stringify({ skill, input }),\n  }).then(r => r.json());\n\n  \u002F\u002F 3. Poll until done\n  for (let i = 0; i \u003C 60; i++) {\n    await new Promise(r => setTimeout(r, 1000));\n    const task: A2ATask = await fetch(`${agentBaseUrl}\u002Ftasks\u002F${task_id}`).then(r => r.json());\n    if (task.state === \"completed\") return task.artifacts ?? [];\n    if (task.state === \"failed\")    throw new Error(`Task failed: ${task.error}`);\n  }\n  throw new Error(\"Task timed out\");\n}\n```\n\n---\n\n## Auth patterns\n\n```\nBearer token  — OAuth2 or opaque; declare required scopes in Agent Card\nmTLS          — mutual TLS; both sides present certificates; for cross-org zero-trust\nSigned request — HMAC-SHA256 over request body; lightweight; no PKI required\n```\n\n---\n\n## Anti-Fake-Pass Checklist\n\n```\n❌ No Agent Card → client can't discover capabilities; bespoke integration required\n❌ Task state not persisted → server restart loses in-progress tasks\n❌ No auth on \u002Ftasks endpoint → anyone can invoke any skill\n❌ Synchronous \u002Ftasks POST that blocks until done → timeouts on long skills; use async + poll\u002FSSE\n❌ Using A2A for tool calls within one agent → MCP is the right layer; A2A overhead unwarranted\n❌ Opaque lifecycle violated → prescribing HOW remote agent solves the task defeats the abstraction\n```\n","# \u002Fa2a-protocol-patterns\n\n## When to Use\n\n- Cross-organization agent calls: your agent calls an agent at another company\u002Fsystem\n- Building a discoverable agent endpoint that any A2A-compatible client can invoke\n- Replacing bespoke agent-to-agent HTTP contracts with a standard protocol\n- Multi-agent systems where subagents are independent services (LangGraph, CrewAI, AutoGen)\n\n## Do NOT use for\n\n- Tool use within a single agent (use MCP — [[mcp-server-patterns]])\n- Internal function calls between co-located agents in the same process\n- Synchronous tool calls where task lifecycle overhead isn't worth it\n\n---\n\n## MCP vs A2A — the split\n\n```\nMCP  (Model Context Protocol)  — agent ↔ tool\n                                  vertical: agent reads\u002Fwrites to a tool server\n                                  stateless by default, JSON-RPC\n\nA2A  (Agent-to-Agent Protocol)  — agent ↔ agent\n                                  horizontal peer: both sides are agents with reasoning\n                                  stateful (task lifecycle), async by default\n\nProduction pattern: use both.\n  Agent A —[A2A]→ Agent B —[MCP]→ tools on Agent B's side\n```\n\n---\n\n## Agent Card (discovery at `\u002F.well-known\u002Fagent.json`)\n\n```typescript\n\u002F\u002F Agent Card spec — publish at \u002F.well-known\u002Fagent.json\ninterface AgentCard {\n  name:       string;\n  version:    string;\n  skills:     string[];          \u002F\u002F e.g. [\"code-review\", \"security-scan\"]\n  endpoints: {\n    tasks:    string;            \u002F\u002F POST \u002Ftasks\n  };\n  auth: {\n    type:     \"bearer\" | \"mtls\" | \"signed\";\n    scopes?:  string[];          \u002F\u002F OAuth scopes if bearer\n  };\n  modalities: (\"text\" | \"structured\" | \"image\" | \"video\" | \"audio\")[];\n  description?: string;\n}\n\n\u002F\u002F Example\nconst yamtamAgentCard: AgentCard = {\n  name:       \"yamtam-security-agent\",\n  version:    \"1.0.0\",\n  skills:     [\"red-team-check\", \"blue-team-fix\", \"leak-check\"],\n  endpoints:  { tasks: \"https:\u002F\u002Fagents.example.com\u002Ftasks\" },\n  auth:       { type: \"bearer\", scopes: [\"agent:invoke\"] },\n  modalities: [\"text\", \"structured\"],\n};\n```\n\n---\n\n## Task lifecycle\n\n```\nsubmitted → working → completed\n                    → failed\n                    → canceled\n```\n\n```typescript\n\u002F\u002F Task model\ninterface A2ATask {\n  id:       string;\n  skill:    string;\n  input:    Record\u003Cstring, unknown>;\n  state:    \"submitted\" | \"working\" | \"completed\" | \"failed\" | \"canceled\";\n  progress?: number;          \u002F\u002F 0–100\n  artifacts?: Artifact[];\n  error?:   string;\n}\n\ninterface Artifact {\n  type:     \"text\" | \"structured\" | \"image\" | \"video\" | \"audio\";\n  content:  string;           \u002F\u002F text\u002FJSON inline or file path\n  mimeType?: string;\n}\n```\n\n---\n\n## Minimal A2A server (Node.js \u002F Express)\n\n```typescript\nimport express from \"express\";\nimport { randomUUID } from \"crypto\";\n\nconst app   = express();\nconst tasks = new Map\u003Cstring, A2ATask>();\n\n\u002F\u002F Discovery\napp.get(\"\u002F.well-known\u002Fagent.json\", (req, res) => res.json(yamtamAgentCard));\n\n\u002F\u002F Submit task\napp.post(\"\u002Ftasks\", express.json(), async (req, res) => {\n  const task: A2ATask = {\n    id:    randomUUID(),\n    skill: req.body.skill,\n    input: req.body.input,\n    state: \"submitted\",\n  };\n  tasks.set(task.id, task);\n  res.status(201).json({ task_id: task.id, state: task.state });\n\n  \u002F\u002F Process async\n  processTask(task);\n});\n\n\u002F\u002F Poll for status\napp.get(\"\u002Ftasks\u002F:id\", (req, res) => {\n  const task = tasks.get(req.params.id);\n  if (!task) return res.status(404).json({ error: \"not found\" });\n  res.json(task);\n});\n\n\u002F\u002F SSE for streaming updates\napp.get(\"\u002Ftasks\u002F:id\u002Fevents\", (req, res) => {\n  const task = tasks.get(req.params.id);\n  if (!task) return res.status(404).end();\n  res.setHeader(\"Content-Type\", \"text\u002Fevent-stream\");\n  res.setHeader(\"Cache-Control\", \"no-cache\");\n\n  const send = (data: object) => res.write(`data: ${JSON.stringify(data)}\\n\\n`);\n  const interval = setInterval(() => {\n    const t = tasks.get(req.params.id)!;\n    send({ state: t.state, progress: t.progress });\n    if (t.state === \"completed\" || t.state === \"failed\") {\n      clearInterval(interval);\n      res.end();\n    }\n  }, 500);\n});\n\nasync function processTask(task: A2ATask) {\n  task.state = \"working\";\n  task.progress = 0;\n  \u002F\u002F ... run skill logic ...\n  task.state = \"completed\";\n  task.artifacts = [{ type: \"text\", content: \"Scan complete. 0 critical findings.\" }];\n}\n```\n\n---\n\n## A2A client (discovery + task submission)\n\n```typescript\nasync function callAgent(agentBaseUrl: string, skill: string, input: object): Promise\u003CArtifact[]> {\n  \u002F\u002F 1. Discover\n  const card = await fetch(`${agentBaseUrl}\u002F.well-known\u002Fagent.json`).then(r => r.json());\n  if (!card.skills.includes(skill)) throw new Error(`Agent does not support skill: ${skill}`);\n\n  \u002F\u002F 2. Submit\n  const { task_id } = await fetch(card.endpoints.tasks, {\n    method: \"POST\",\n    headers: { \"Content-Type\": \"application\u002Fjson\", \"Authorization\": `Bearer ${getToken()}` },\n    body: JSON.stringify({ skill, input }),\n  }).then(r => r.json());\n\n  \u002F\u002F 3. Poll until done\n  for (let i = 0; i \u003C 60; i++) {\n    await new Promise(r => setTimeout(r, 1000));\n    const task: A2ATask = await fetch(`${agentBaseUrl}\u002Ftasks\u002F${task_id}`).then(r => r.json());\n    if (task.state === \"completed\") return task.artifacts ?? [];\n    if (task.state === \"failed\")    throw new Error(`Task failed: ${task.error}`);\n  }\n  throw new Error(\"Task timed out\");\n}\n```\n\n---\n\n## Auth patterns\n\n```\nBearer token  — OAuth2 or opaque; declare required scopes in Agent Card\nmTLS          — mutual TLS; both sides present certificates; for cross-org zero-trust\nSigned request — HMAC-SHA256 over request body; lightweight; no PKI required\n```\n\n---\n\n## Anti-Fake-Pass Checklist\n\n```\n❌ No Agent Card → client can't discover capabilities; bespoke integration required\n❌ Task state not persisted → server restart loses in-progress tasks\n❌ No auth on \u002Ftasks endpoint → anyone can invoke any skill\n❌ Synchronous \u002Ftasks POST that blocks until done → timeouts on long skills; use async + poll\u002FSSE\n❌ Using A2A for tool calls within one agent → MCP is the right layer; A2A overhead unwarranted\n❌ Opaque lifecycle violated → prescribing HOW remote agent solves the task defeats the abstraction\n```\n",{},"main","481dcd7dd2e288b9d627a2bd017db70e64e6c6fa","core\u002Fskills\u002Fa2a-protocol-patterns",2,"https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI","https:\u002F\u002Fyana.vutam.link\u002F","https:\u002F\u002Fgithub.com\u002FHoronomos-laps","https:\u002F\u002Fyana.vutam.link","An open-source governed runtime & execution environment for multi-agent AI systems.","2026-11-14 13:24:09",{"source":7,"skillName":5,"commands":34,"prompt":44,"zipAvailable":45},[35,38,41],{"tool":36,"command":37},"npx","npx skills add Horonomos-laps\u002FYana-AI --skill a2a-protocol-patterns",{"tool":39,"command":40},"bunx","bunx skills add Horonomos-laps\u002FYana-AI --skill a2a-protocol-patterns",{"tool":42,"command":43},"pnpm","pnpm dlx skills add Horonomos-laps\u002FYana-AI --skill a2a-protocol-patterns","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI\u002Fblob\u002Fmain\u002Fcore\u002Fskills\u002Fa2a-protocol-patterns\u002FSKILL.md",true,[],[48,56,63,71,79,87],{"skillNo":49,"name":50,"nameZh":6,"description":51,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":52,"licenseFileUrl":6,"sourceHtmlUrl":53,"categories":54,"keywords":55,"publishedAt":18},"01M735GKET5YVYKAY62W2P5YXB","openai--sentry--sentry","Use when the user asks to inspect Sentry issues or events, summarize recent production errors, or pull basic Sentry health data via the Sentry API; perform read-only queries with the bundled script and require `SENTRY_AUTH_TOKEN`.","MIT","https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fopenai--sentry--sentry\u002FSKILL.md",[],[],{"skillNo":57,"name":58,"nameZh":6,"description":59,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":60,"categories":61,"keywords":62,"publishedAt":18},"01M73DCAP83T17HY7SMGK7MGFE","ito-basket-compare","Compare Itô prediction-market baskets against a user's knowledge base, portfolio notes, financial context, watchlist, or research thesis. Use for read-only basket comparison and gap analysis without investment advice or live trading.","https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI\u002Fblob\u002Fmain\u002Fcore\u002Fskills\u002Fito-basket-compare\u002FSKILL.md",[],[],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":67,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":18},"01M734CYEMZFDR3KH6SW0JP8TD","implementing-network-traffic-baselining","Build network traffic baselines from NetFlow\u002FIPFIX data using Python pandas for statistical analysis, z-score anomaly detection, and hourly\u002Fdaily traffic pattern profiling","https:\u002F\u002Fgithub.com\u002Fyanacuti1121\u002FYana-AI\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fimplementing-network-traffic-baselining\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fimplementing-network-traffic-baselining\u002FSKILL.md",[],[],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":75,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":18},"01M73ASZ6NJRJM44Z2P84NGQ3Q","detecting-evasion-techniques-in-endpoint-logs","Detects defense evasion techniques used by adversaries in endpoint logs including log tampering, timestomping, process injection, and security tool disabling. Use when investigating suspicious endpoint behavior, building detection rules for evasion tactics, or conducting threat hunting for stealthy adversary activity. Activates for requests involving evasion detection, defense evasion analysis, log tampering detection, or MITRE ATT&CK TA0005.","https:\u002F\u002Fgithub.com\u002Fyanacuti1121\u002FYana-AI\u002Fblob\u002Fmain\u002Fcore\u002Fskills\u002Fdetecting-evasion-techniques-in-endpoint-logs\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI\u002Fblob\u002Fmain\u002Fcore\u002Fskills\u002Fdetecting-evasion-techniques-in-endpoint-logs\u002FSKILL.md",[],[],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":83,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":18},"01M734AFNXD06Z78QRK0VKGT7Q","implementing-microsegmentation-with-guardicore","Implementing microsegmentation using Akamai Guardicore Segmentation to map application dependencies, create granular network policies, visualize east-west traffic flows, and enforce least-privilege communication between workloads across data centers and cloud.","https:\u002F\u002Fgithub.com\u002Fyanacuti1121\u002FYana-AI\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fimplementing-microsegmentation-with-guardicore\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fimplementing-microsegmentation-with-guardicore\u002FSKILL.md",[],[],{"skillNo":88,"name":89,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":18},"01M736TK27QMCXK0DVCH25SJN5","ramdisk-tmpfs-patterns","https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Framdisk-tmpfs-patterns\u002FSKILL.md",[],[]]