{"id":50742766,"url":"https://github.com/helebest/holo-zlib","last_synced_at":"2026-06-10T18:02:08.278Z","repository":{"id":362922081,"uuid":"1261252714","full_name":"helebest/holo-zlib","owner":"helebest","description":"Search \u0026 download ebooks from Z-Library — a portable Agent Skill (SKILL.md + stdlib-only Python CLI) usable by any AI agent (Claude Code, Codex, Cursor, Gemini CLI…) or from the shell.","archived":false,"fork":false,"pushed_at":"2026-06-06T14:06:50.000Z","size":72,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-06T16:03:20.392Z","etag":null,"topics":["agent-skill","agent-skills","ai-agents","anthropic","claude-code","claude-skill","cli","ebook-downloader","ebooks","llm-tools","python","skill","z-library","zlibrary"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/helebest.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-06T12:47:53.000Z","updated_at":"2026-06-06T14:06:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/helebest/holo-zlib","commit_stats":null,"previous_names":["helebest/holo-zlib"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/helebest/holo-zlib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helebest%2Fholo-zlib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helebest%2Fholo-zlib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helebest%2Fholo-zlib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helebest%2Fholo-zlib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/helebest","download_url":"https://codeload.github.com/helebest/holo-zlib/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helebest%2Fholo-zlib/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34163252,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-skill","agent-skills","ai-agents","anthropic","claude-code","claude-skill","cli","ebook-downloader","ebooks","llm-tools","python","skill","z-library","zlibrary"],"created_at":"2026-06-10T18:02:07.656Z","updated_at":"2026-06-10T18:02:08.271Z","avatar_url":"https://github.com/helebest.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# holo-zlib\n\n[![CI](https://github.com/helebest/holo-zlib/actions/workflows/ci.yml/badge.svg)](https://github.com/helebest/holo-zlib/actions/workflows/ci.yml)\n[![Release](https://img.shields.io/github/v/release/helebest/holo-zlib)](https://github.com/helebest/holo-zlib/releases/latest)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)\n![Python](https://img.shields.io/badge/python-%E2%89%A53.10-blue.svg)\n![Dependencies](https://img.shields.io/badge/dependencies-stdlib--only-brightgreen.svg)\n![Agent Skill](https://img.shields.io/badge/Agent-Skill-8A2BE2.svg)\n\nA portable **Agent Skill** that searches and downloads ebooks from Z-Library via the\neAPI — usable by any AI agent that can read a `SKILL.md` and run a script (Claude Code,\nCodex, Cursor, Gemini CLI, custom agents…), or straight from the shell. It is not tied to\nany single agent. It uses the Python standard library only — runs on Python \u003e= 3.10 with\nno third-party dependencies.\n\n## Repository layout\n\n```\nholo-zlib/\n├── skills/\n│   └── holo-zlib/              # canonical, self-contained skill (this is what ships)\n│       ├── SKILL.md            # skill entry point (loaded by the agent)\n│       ├── scripts/\n│       │   ├── client.py       # eAPI client (requests / auth / path resolution)\n│       │   ├── zlib.py         # CLI (search / download)\n│       │   └── requirements.txt# stdlib-only marker (no runtime deps)\n│       └── references/\n│           └── eapi.md         # eAPI endpoints / fields reference\n├── src/holo_zlib/             # dev harness (validation + packaging; not shipped)\n├── tests/                     # pytest unit + layout tests\n├── evals/evals.json           # skill-creator eval set\n├── CLAUDE.md                  # guidance for Claude Code\n├── pyproject.toml             # dev tooling only (pytest, ruff); runtime needs none\n└── uv.lock\n```\n\n## Installation \u0026 usage\n\nThe skill is portable and dependency-free at runtime. Credentials and downloads live\noutside the skill directory (at your project root) so they never ship with the skill.\n\nInvocation uses `python`; on Linux/macOS where only `python3` exists, substitute it. On\nWindows, `python` (from a venv or the Microsoft Store) works; the `py` launcher is not\nalways installed, so don't rely on `py -3`.\n\n### Claude Code\n\nClaude Code discovers skills as **directories** — there is no install command and no\n`.skill` import step. Place the skill folder in one of these locations and it is picked up\nautomatically (Claude consults it based on the `description` in its `SKILL.md`\nfrontmatter, or you can invoke it by name):\n\n- **Project** (commit it to share with the repo): `\u003cproject\u003e/.claude/skills/holo-zlib/`\n- **Personal** (available in all your projects): `~/.claude/skills/holo-zlib/`\n\n```bash\ngit clone \u003crepo-url\u003e\nmkdir -p .claude/skills\ncp -r holo-zlib/skills/holo-zlib .claude/skills/holo-zlib   # or symlink it\n```\n\n**Credentials**: create `credentials/zlib.json` at your **project root** (the script walks\nupward to find it; the `.claude` sibling counts as an ancestor).\n\n### claude.ai / Claude API\n\nThe packaged `.skill` (a zip built by `uv run holo-zlib-package` → `dist/holo-zlib.skill`)\nis for these platforms — **not** Claude Code:\n\n- **claude.ai**: upload the `.skill` in settings (the Capabilities/Features area, on a\n  plan with code execution enabled).\n- **Claude API**: upload via the `/v1/skills` endpoints (currently beta — header\n  `skills-2025-10-02`).\n\n### Other agents (Codex, Cursor, Gemini CLI, …) / direct CLI\n\nAny agent that can read `SKILL.md` and run a script can use this skill — it isn't tied to\nClaude Code. `git clone \u003crepo-url\u003e`; work inside the repo or place `skills/holo-zlib/`\nwhere the agent can see it (point the agent at `skills/holo-zlib/SKILL.md`), then call the\nCLI directly — stdlib only, nothing to install:\n\n```bash\npython skills/holo-zlib/scripts/zlib.py search \"title\" --ext epub --limit 5\n```\n\n**Credentials**: same as above — `credentials/zlib.json` at the repo/project root.\n\n### Copy-paste prompt for an agent\n\nPaste this to Claude Code or Codex to set it up and use it end to end:\n\n```text\nInstall and use the holo-zlib skill (Z-Library ebook search/download, pure Python stdlib):\n1. If .claude/skills/holo-zlib/ does not exist in this project, git clone \u003crepo-url\u003e and\n   copy its skills/holo-zlib/ into .claude/skills/holo-zlib/.\n2. Create credentials/zlib.json at the project root:\n   {\"remix_userid\": \"YOUR_USERID\", \"remix_userkey\": \"YOUR_USERKEY\"}\n   (log in at https://z-library.sk and take remix_userid / remix_userkey from cookies).\n3. Search Z-Library for an epub of \"The Three-Body Problem\", top 5, pick the best\n   match, and show me its book_id and hash.\n4. Ensure an ebooks/ directory exists at the project root (create it if missing — that is\n   where the default download location resolves), then after I confirm, download the one\n   I pick into it and tell me the final file path.\n(Invocation: python skills/holo-zlib/scripts/zlib.py search/download … — on Linux/macOS\nsubstitute python3 if needed.)\n```\n\n\u003e Replace `\u003crepo-url\u003e` with the actual repository URL once it is pushed.\n\n## Quick start (local)\n\n```bash\n# 1. Create the credentials file (log in to https://z-library.sk, copy two cookie values)\nmkdir -p credentials\ncat \u003e credentials/zlib.json \u003c\u003c'EOF'\n{\"remix_userid\": \"YOUR_USERID\", \"remix_userkey\": \"YOUR_USERKEY\"}\nEOF\n\n# 2. (optional) create ebooks/ here so downloads default to the project root\nmkdir -p ebooks\n\n# 3. Try it (use python; on Linux/macOS substitute python3 if needed)\npython skills/holo-zlib/scripts/zlib.py search \"The Three-Body Problem\" --ext epub --limit 3\n```\n\n\u003e The download default resolves to the first existing `ebooks/` found while walking up\n\u003e from the skill directory. If none exists, it falls back to `\u003cskill\u003e/ebooks/` inside the\n\u003e skill itself — create an `ebooks/` at your project root (as above) to keep downloads out\n\u003e of the skill, or pass `--output \u003cdir\u003e` per call.\n\n## Environment variables\n\n| Variable | Purpose | Default |\n|----------|---------|---------|\n| `HOLO_ZLIB_CREDENTIALS_FILE` | Credentials file path | first `credentials/zlib.json` found walking up from the skill dir; else `\u003cskill\u003e/credentials/zlib.json` |\n| `HOLO_ZLIB_EBOOKS_DIR` | Download directory (CLI `--output` still overrides) | first existing `ebooks/` walking up from the skill dir; else `\u003cskill\u003e/ebooks` |\n\n## Development\n\nDependency and script management uses `uv` (dev only; the skill runtime needs none):\n\n```bash\nuv sync                                  # install the pinned dev environment\nuv run holo-zlib-validate                # validate skill layout + frontmatter + banned names\nuv run ruff check .                      # lint\nuv run python -m pytest -p no:cacheprovider  # run the test suite\nuv run holo-zlib-package                 # build dist/holo-zlib.skill (with a credential danger gate)\n```\n\n## License\n\nMIT — see [LICENSE](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelebest%2Fholo-zlib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhelebest%2Fholo-zlib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelebest%2Fholo-zlib/lists"}