[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M73FTRP77XBC3K7FF7BGH3P0":3,"skill-same:01M73FTRP77XBC3K7FF7BGH3P0":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},"01M73FTRP77XBC3K7FF7BGH3P0","skill-library-voyager",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\u002Fskill-library-voyager\u002FSKILL.md",[],[],"2026-11-11 15:11:14",false,"---\nname: skill-library-voyager\ndescription: Skill library patterns from Voyager — executable code as skills, semantic retrieval, composition, failure-driven refinement. Maps to Claude Agent SDK skills, skillkit, lifelong learning agents. 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# \u002Fskill-library-voyager\n\n## When to Use\n\n- Agent keeps re-deriving the same capability on every session (token waste)\n- Building a lifelong-learning agent that accrues capability over time\n- Implementing Claude Agent SDK skill files backed by a retrieval store\n- Creating a composable capability library for a multi-agent system\n\n## Do NOT use for\n\n- One-shot tasks where skill reuse has no value\n- Tasks with highly unique, non-repeatable capabilities\n- Simple tool-use patterns where a tool registry ([[react-agent-loop]]) suffices\n\n---\n\n## Voyager: three components\n\n```\n1. Automatic curriculum   — curiosity-driven task proposer (bottom-up exploration)\n2. Skill library          — executable code keyed on description + embedding\n3. Iterative prompting    — on failure: errors + environment feedback → refine skill\n```\n\n**Why action space = code:**\nVoyager emits function bodies, not primitive commands. A skill is composable:\n`craftIronPickaxe()` calls `mineIron()`, `mineStick()`, `placeCraftingTable()`, `craft()`.\nStored keyed on description + embedding. Loaded as program, not prompt.\n\n---\n\n## Skill store\n\n```python\nfrom dataclasses import dataclass, field\nimport hashlib, json, re\n\n@dataclass\nclass Skill:\n    name: str\n    description: str\n    code: str\n    version: int = 1\n    success_count: int = 0\n    failure_count: int = 0\n\n    @property\n    def id(self) -> str:\n        return hashlib.sha256(self.name.encode()).hexdigest()[:8]\n\n    def reliability(self) -> float:\n        total = self.success_count + self.failure_count\n        return self.success_count \u002F total if total else 0.0\n\n@dataclass\nclass SkillLibrary:\n    skills: dict[str, Skill] = field(default_factory=dict)\n\n    def register(self, name: str, description: str, code: str) -> Skill:\n        skill = Skill(name=name, description=description, code=code)\n        self.skills[name] = skill\n        return skill\n\n    def retrieve(self, query: str, top_k: int = 3) -> list[Skill]:\n        \"\"\"Toy keyword retrieval — replace with embedding cosine similarity.\"\"\"\n        q_words = set(query.lower().split())\n        scored = []\n        for skill in self.skills.values():\n            desc_words = set(skill.description.lower().split())\n            overlap = len(q_words & desc_words)\n            scored.append((overlap, skill))\n        scored.sort(key=lambda x: (-x[0], -x[1].reliability()))\n        return [s for _, s in scored[:top_k]]\n\n    def update(self, name: str, new_code: str) -> str:\n        if name not in self.skills:\n            return f\"[error] skill '{name}' not found\"\n        self.skills[name].code = new_code\n        self.skills[name].version += 1\n        return f\"skill '{name}' updated to v{self.skills[name].version}\"\n\n    def record_outcome(self, name: str, success: bool) -> None:\n        if name in self.skills:\n            if success:\n                self.skills[name].success_count += 1\n            else:\n                self.skills[name].failure_count += 1\n```\n\n---\n\n## Iterative prompting — skill refinement on failure\n\n```python\ndef build_skill_refinement_prompt(\n    task: str,\n    current_code: str,\n    error_output: str,\n    env_feedback: str,\n) -> str:\n    return f\"\"\"The following skill failed. Rewrite it to fix the errors.\n\nTask: {task}\n\nCurrent code:\n```python\n{current_code}\n```\n\nExecution errors:\n{error_output}\n\nEnvironment feedback:\n{env_feedback}\n\nWrite an improved version that handles the failure. Return only the code block.\"\"\"\n```\n\n---\n\n## Agent using skill library\n\n```python\ndef agent_with_skills(task: str, library: SkillLibrary, llm, executor) -> str:\n    # 1. Retrieve relevant skills\n    candidates = library.retrieve(task, top_k=3)\n    skill_context = \"\\n\\n\".join(\n        f\"# {s.name} (reliability={s.reliability():.0%})\\n{s.description}\\n```python\\n{s.code}\\n```\"\n        for s in candidates\n    )\n\n    # 2. Ask LLM to compose or extend\n    prompt = f\"\"\"Task: {task}\n\nAvailable skills:\n{skill_context}\n\nWrite a solution that composes these skills (or a new skill if none apply).\nReturn Python code.\"\"\"\n    code = llm(prompt)\n\n    # 3. Execute with iterative refinement (max 3 attempts)\n    for attempt in range(3):\n        result, error = executor(code)\n        if not error:\n            # Register as new skill if solution is novel\n            skill_name = extract_function_name(code)\n            if skill_name and skill_name not in library.skills:\n                library.register(skill_name, task, code)\n            return result\n\n        # Refine on failure\n        refinement_prompt = build_skill_refinement_prompt(task, code, error, result)\n        code = llm(refinement_prompt)\n\n    return f\"[failed after 3 attempts] last error: {error}\"\n\ndef extract_function_name(code: str) -> str | None:\n    import re\n    m = re.search(r'def (\\w+)\\s*\\(', code)\n    return m.group(1) if m else None\n```\n\n---\n\n## Claude Agent SDK mapping\n\n```\nVoyager skill        → Claude Agent SDK skill file (SKILL.md)\nLibrary registration → \u002Fplugin install or skills\u002F directory scan\nRetrieval            → agent reads SKILL.md trigger patterns → loads matching skill\nRefinement           → \u002Fimprove-skill command (human-gated in YAMTAM)\nReliability score    → YAMTAM skill confidence \u002F review_status field\n```\n\n---\n\n## Anti-Fake-Pass Checklist\n\n```\n❌ Code skills with side effects stored without sandboxing → a bad skill deletes files\n❌ No reliability score → agent uses a skill with 20% success rate as confidently as one with 95%\n❌ Unbounded library growth → retrieval quality degrades; add a consolidation \u002F GC pass\n❌ Skill registered before testing → new skills must pass at least one successful execution first\n❌ Single embedding for description → add code body embedding for retrieval by implementation pattern\n❌ No version tracking → bug-fixed skill replaces original silently; can't audit regressions\n```\n","# \u002Fskill-library-voyager\n\n## When to Use\n\n- Agent keeps re-deriving the same capability on every session (token waste)\n- Building a lifelong-learning agent that accrues capability over time\n- Implementing Claude Agent SDK skill files backed by a retrieval store\n- Creating a composable capability library for a multi-agent system\n\n## Do NOT use for\n\n- One-shot tasks where skill reuse has no value\n- Tasks with highly unique, non-repeatable capabilities\n- Simple tool-use patterns where a tool registry ([[react-agent-loop]]) suffices\n\n---\n\n## Voyager: three components\n\n```\n1. Automatic curriculum   — curiosity-driven task proposer (bottom-up exploration)\n2. Skill library          — executable code keyed on description + embedding\n3. Iterative prompting    — on failure: errors + environment feedback → refine skill\n```\n\n**Why action space = code:**\nVoyager emits function bodies, not primitive commands. A skill is composable:\n`craftIronPickaxe()` calls `mineIron()`, `mineStick()`, `placeCraftingTable()`, `craft()`.\nStored keyed on description + embedding. Loaded as program, not prompt.\n\n---\n\n## Skill store\n\n```python\nfrom dataclasses import dataclass, field\nimport hashlib, json, re\n\n@dataclass\nclass Skill:\n    name: str\n    description: str\n    code: str\n    version: int = 1\n    success_count: int = 0\n    failure_count: int = 0\n\n    @property\n    def id(self) -> str:\n        return hashlib.sha256(self.name.encode()).hexdigest()[:8]\n\n    def reliability(self) -> float:\n        total = self.success_count + self.failure_count\n        return self.success_count \u002F total if total else 0.0\n\n@dataclass\nclass SkillLibrary:\n    skills: dict[str, Skill] = field(default_factory=dict)\n\n    def register(self, name: str, description: str, code: str) -> Skill:\n        skill = Skill(name=name, description=description, code=code)\n        self.skills[name] = skill\n        return skill\n\n    def retrieve(self, query: str, top_k: int = 3) -> list[Skill]:\n        \"\"\"Toy keyword retrieval — replace with embedding cosine similarity.\"\"\"\n        q_words = set(query.lower().split())\n        scored = []\n        for skill in self.skills.values():\n            desc_words = set(skill.description.lower().split())\n            overlap = len(q_words & desc_words)\n            scored.append((overlap, skill))\n        scored.sort(key=lambda x: (-x[0], -x[1].reliability()))\n        return [s for _, s in scored[:top_k]]\n\n    def update(self, name: str, new_code: str) -> str:\n        if name not in self.skills:\n            return f\"[error] skill '{name}' not found\"\n        self.skills[name].code = new_code\n        self.skills[name].version += 1\n        return f\"skill '{name}' updated to v{self.skills[name].version}\"\n\n    def record_outcome(self, name: str, success: bool) -> None:\n        if name in self.skills:\n            if success:\n                self.skills[name].success_count += 1\n            else:\n                self.skills[name].failure_count += 1\n```\n\n---\n\n## Iterative prompting — skill refinement on failure\n\n```python\ndef build_skill_refinement_prompt(\n    task: str,\n    current_code: str,\n    error_output: str,\n    env_feedback: str,\n) -> str:\n    return f\"\"\"The following skill failed. Rewrite it to fix the errors.\n\nTask: {task}\n\nCurrent code:\n```python\n{current_code}\n```\n\nExecution errors:\n{error_output}\n\nEnvironment feedback:\n{env_feedback}\n\nWrite an improved version that handles the failure. Return only the code block.\"\"\"\n```\n\n---\n\n## Agent using skill library\n\n```python\ndef agent_with_skills(task: str, library: SkillLibrary, llm, executor) -> str:\n    # 1. Retrieve relevant skills\n    candidates = library.retrieve(task, top_k=3)\n    skill_context = \"\\n\\n\".join(\n        f\"# {s.name} (reliability={s.reliability():.0%})\\n{s.description}\\n```python\\n{s.code}\\n```\"\n        for s in candidates\n    )\n\n    # 2. Ask LLM to compose or extend\n    prompt = f\"\"\"Task: {task}\n\nAvailable skills:\n{skill_context}\n\nWrite a solution that composes these skills (or a new skill if none apply).\nReturn Python code.\"\"\"\n    code = llm(prompt)\n\n    # 3. Execute with iterative refinement (max 3 attempts)\n    for attempt in range(3):\n        result, error = executor(code)\n        if not error:\n            # Register as new skill if solution is novel\n            skill_name = extract_function_name(code)\n            if skill_name and skill_name not in library.skills:\n                library.register(skill_name, task, code)\n            return result\n\n        # Refine on failure\n        refinement_prompt = build_skill_refinement_prompt(task, code, error, result)\n        code = llm(refinement_prompt)\n\n    return f\"[failed after 3 attempts] last error: {error}\"\n\ndef extract_function_name(code: str) -> str | None:\n    import re\n    m = re.search(r'def (\\w+)\\s*\\(', code)\n    return m.group(1) if m else None\n```\n\n---\n\n## Claude Agent SDK mapping\n\n```\nVoyager skill        → Claude Agent SDK skill file (SKILL.md)\nLibrary registration → \u002Fplugin install or skills\u002F directory scan\nRetrieval            → agent reads SKILL.md trigger patterns → loads matching skill\nRefinement           → \u002Fimprove-skill command (human-gated in YAMTAM)\nReliability score    → YAMTAM skill confidence \u002F review_status field\n```\n\n---\n\n## Anti-Fake-Pass Checklist\n\n```\n❌ Code skills with side effects stored without sandboxing → a bad skill deletes files\n❌ No reliability score → agent uses a skill with 20% success rate as confidently as one with 95%\n❌ Unbounded library growth → retrieval quality degrades; add a consolidation \u002F GC pass\n❌ Skill registered before testing → new skills must pass at least one successful execution first\n❌ Single embedding for description → add code body embedding for retrieval by implementation pattern\n❌ No version tracking → bug-fixed skill replaces original silently; can't audit regressions\n```\n",{},"main","481dcd7dd2e288b9d627a2bd017db70e64e6c6fa","core\u002Fskills\u002Fskill-library-voyager",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-12 23:12:27",{"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 skill-library-voyager",{"tool":39,"command":40},"bunx","bunx skills add Horonomos-laps\u002FYana-AI --skill skill-library-voyager",{"tool":42,"command":43},"pnpm","pnpm dlx skills add Horonomos-laps\u002FYana-AI --skill skill-library-voyager","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI\u002Fblob\u002Fmain\u002Fcore\u002Fskills\u002Fskill-library-voyager\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",[],[]]