{
  "markdown": "# @ocrwell/skill\n\nA skill for the [OCRWell](https://ocrwell.com) document OCR API. Works with [Claude Code](https://docs.claude.com/claude-code) and OpenAI's [Codex CLI](https://developers.openai.com/codex/skills) — both read the same `SKILL.md` format. Once installed, the agent can generate correct integration code in any language — handling authentication, the two-step upload, asynchronous polling, structured JSON extraction, error handling, rate limits, and webhook signature verification — without any further prompting.\n\n## What it gives the agent\n\n- The full OCRWell `/v1` endpoint reference (uploads, documents, jobs, webhooks).\n- The two-step upload pattern (`POST /v1/uploads` → `PUT` to presigned URL → `POST /v1/documents`).\n- Both supported structured-extraction schema formats (template and JSON Schema), plus the JSON Schema subset rules.\n- The complete error catalogue, rate-limit headers, and `Retry-After` semantics.\n- Webhook delivery semantics and HMAC-SHA256 signature verification steps.\n- A code-generation checklist that captures the gotchas — e.g. treating `200` with `job.status: \"failed\"` as a job failure rather than an HTTP error.\n\n## Install\n\nThere are two ways to install. Pick whichever fits your workflow.\n\n### Option 1 — Claude Code plugin marketplace (recommended)\n\n```text\n/plugin marketplace add ocrwell/skill\n/plugin install ocrwell@ocrwell\n```\n\nThis uses Claude Code's built-in plugin system. You'll get versioning, namespacing, and `/plugin update` support out of the box. The plugin is delivered via npm under the hood, so updates are tied to npm releases of `@ocrwell/skill`.\n\nTo update later:\n```text\n/plugin update ocrwell@ocrwell\n```\n\nTo remove:\n```text\n/plugin uninstall ocrwell@ocrwell\n```\n\n### Option 2 — `npx` installer (Claude Code or OpenAI Codex)\n\nThe installer works for both Claude Code and OpenAI's [Codex CLI](https://developers.openai.com/codex/skills), which reads the same `SKILL.md` format from `~/.agents/skills/` (user-wide) or `.agents/skills/` (per repo).\n\nRun without a target flag and the installer will prompt you:\n```bash\nnpx @ocrwell/skill install\n```\n\nOr pick a target up front:\n```bash\nnpx @ocrwell/skill install --claude           # ~/.claude/skills/ocrwell\nnpx @ocrwell/skill install --codex            # ~/.agents/skills/ocrwell\nnpx @ocrwell/skill install --both             # both\nnpx @ocrwell/skill install --codex --project  # ./.agents/skills/ocrwell\n```\n\nTo update, re-run with `--force`:\n```bash\nnpx @ocrwell/skill@latest install --claude --force\n```\n\nTo remove:\n```bash\nnpx @ocrwell/skill uninstall --claude\nnpx @ocrwell/skill uninstall --codex --project\n```\n\nThe `/plugin` marketplace flow and the `.claude-plugin/` manifest used by Option 1 are Claude Code-specific — Codex ignores them and only reads the `SKILL.md` inside the installed skill directory.\n\n## Verify the install\n\nStart a new session in Claude Code or Codex and ask something OCRWell-related, for example:\n\n> Write a Python script that uploads `invoice.pdf` to OCRWell and prints the extracted text.\n\nIf the skill is loaded, the agent will follow the documented two-step upload, send `X-API-Key` from an environment variable, poll `GET /v1/jobs/{jobId}` with backoff, and treat `status: \"failed\"` correctly. If it instead invents the API or asks for documentation, the skill isn't being picked up:\n\n- **Claude Code:** confirm `ocrwell` appears under `/plugin` (Option 1) or that `~/.claude/skills/ocrwell/SKILL.md` exists (Option 2), then restart the session.\n- **Codex:** run `/skills` and confirm `ocrwell` is listed, or check that `~/.agents/skills/ocrwell/SKILL.md` exists, then restart the session.\n\n## What's in this package\n\n```\n.claude-plugin/\n  plugin.json         # Claude Code plugin manifest\n  marketplace.json    # Marketplace catalog (used by Option 1)\nskills/ocrwell/\n  SKILL.md            # The skill itself — loaded into the agent's context when triggered\n  reference.md        # Deeper API reference, linked from SKILL.md\nbin/\n  install.mjs         # The npx installer (Option 2)\n```\n\n## API key\n\nYou need an OCRWell API key to actually call the API. Create one in the OCRWell dashboard. Then expose it to your code via environment variable:\n\n```bash\nexport OCRWELL_API_KEY=...\n```\n\nThe skill instructs the agent to read the key from an environment variable rather than hard-coding it. Treat the key like a password — it grants full access to your organisation's documents and webhook configuration.\n\n## Versioning\n\n`package.json` and `.claude-plugin/marketplace.json` carry the version and are bumped together whenever the OCRWell API changes (or the skill content does). `.claude-plugin/plugin.json` deliberately omits `version` — for relative-path plugins the docs recommend keeping the version in the marketplace entry only, because the plugin manifest silently wins when both are set. Use semver: bump the patch version for content fixes, the minor version for additive API changes, and the major version for breaking changes to the OCRWell API.\n\n## Reporting issues\n\nIf Claude Code or Codex generates wrong or outdated code for OCRWell, please file an issue at <https://github.com/ocrwell/skill/issues> with the prompt you used, the tool you used it with, and the output you got back. Include the version number from `/plugin` (Claude Code), `/skills` (Codex), or the installed `SKILL.md` frontmatter.\n\n## License\n\nMIT.\n",
  "bytes": 5395,
  "sha": "ecac83ddb9007eed4fa598e39fc068022380c1b87ebc931f031e0dc66c1de495",
  "repo_slug": "ocrwell/skill",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_ocrwell_skill_ocrwell_d5763fd9/readme"
}