{"slug":"rcosteira79-pdf-annotations","name":"pdf-annotations","description":"Use when reading, adding, updating, or removing PDF annotations (highlight, free-text, stamp) or page objects (path/text/image) with Android's platform PDF APIs, or when saving those edits back to disk — the editing surface added in API 36.1 (PdfRenderer.Page) and SDK extension 18 (PdfRendererPreV.Page on API 31+), android.graphics.pdf.component. Covers the version gate, the open-edit-write workflow, and the id/render-flag/save contracts. Not for display-only PdfViewerFragment work, PdfDocument creation-from-scratch, form filling, or third-party PDF SDKs (iText, PDFBox, PSPDFKit).","long_description":"---\nname: pdf-annotations\ndescription: >\n  Use when reading, adding, updating, or removing PDF annotations (highlight,\n  free-text, stamp) or page objects (path/text/image) with Android's platform\n  PDF APIs, or when saving those edits back to disk — the editing surface added\n  in API 36.1 (PdfRenderer.Page) and SDK extension 18 (PdfRendererPreV.Page on\n  API 31+), android.graphics.pdf.component. Covers the version gate, the\n  open-edit-write workflow, and the id/render-flag/save contracts. Not for\n  display-only PdfViewerFragment work, PdfDocument creation-from-scratch, form\n  filling, or third-party PDF SDKs (iText, PDFBox, PSPDFKit).\n---\n\n# Platform PDF annotation & page-object editing\n\nAndroid can natively edit PDF annotations since API 36.1 — before that the\nplatform story was render-only and the docs still say so: the Jetpack viewer\nguide's PDF surface is `PdfViewerFragment`, which explicitly does **not**\nsupport edit mode and hands annotation off to other apps via an\n`android.intent.action.ANNOTATE` intent\n[kb://android/develop/ui/views/layout/pdf/implement-pdf-viewer]. Do not\nconclude \"use a third-party library\" for annotation work before applying the\nversion gate below.\n\n## The version gate (decide the entry point first)\n\nTwo parallel renderers expose the same editing surface\n(`android.graphics.pdf.component`):\n\n| Entry point | Editing available | Device requirement |\n|---|---|---|\n| `PdfRenderer.Page` | API 36.1+ | platform release |\n| `PdfRendererPreV.Page` | SDK extension 18 | API 31+ with the PDF module updated (PreV itself needs extension 13) |\n\nGate at runtime with `SdkExtensions.getExtensionVersion(Build.VERSION_CODES.S)`\n[kb://android/guide/sdk-extensions/index]. Extension 18 reaches back to API 31\nvia mainline updates, so `PdfRendererPreV` is the branch that covers most\ndevices.\n\n## The workflow: open → edit → write\n\n```kotlin\n// The fd must be seekable — pipes/sockets are rejected at construction.\nParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY).use { fd ->\n    PdfRenderer(fd).use { renderer ->                    // or PdfRendererPreV on the ext-18 branch\n        renderer.openPage(0).use { page ->\n            // Only SUPPORTED annotation types are listed. The pairs are\n            // android.util.Pair — NO Kotlin destructuring (no component1/2);\n            // read them with .first / .second.\n            val existing = page.getPageAnnotations()\n            val staleId: Int? = existing.firstOrNull { it.second is FreeTextAnnotation }?.first\n\n            val highlight = HighlightAnnotation(boundsList)   // List<RectF> quads\n            val id = page.addPageAnnotation(highlight)\n            check(id != -1) { \"annotation rejected\" }         // add returns -1, it does NOT throw\n\n            highlight.color = newColor\n            page.updatePageAnnotation(id, highlight)          // by id -> Boolean success\n            staleId?.let { page.removePageAnnotation(it) }    // by id, not list position\n        }\n        // Write BEFORE close(), to a separate writable fd; the boolean is\n        // removePasswordProtection (IOException if true and the doc stays encrypted).\n        ParcelFileDescriptor.open(\n            dest,\n            ParcelFileDescriptor.MODE_READ_WRITE or ParcelFileDescriptor.MODE_CREATE,\n        ).use { out ->\n            renderer.write(out, false)\n        }\n    }\n}\n```\n\nContracts:\n\n- **`addPageAnnotation` returns the annotation id, or `-1` when the annotation\n  cannot be added — check the return; only null/`UNKNOWN`-type/already-attached\n  arguments throw** (`IllegalArgumentException`).\n- **An annotation instance is single-attach document-wide**: adding one that is\n  \"already added in this page or some other page\" throws. Construct a fresh\n  component object per add; don't reuse a removed one across pages.\n- **Ids, not list positions, drive `update`/`remove`.** `getPageAnnotations()`\n  returns only annotation types the API models, so a page with unsupported\n  annotations has gaps — the `Pair.first` id is the stable handle.\n- **One page open at a time** — the pre-existing `PdfRenderer` invariant\n  (\"you can have only a single page opened at any given time\") still applies;\n  close the page before opening the next.\n- **`write()` before `close()`**, destination must be a distinct writable\n  seekable fd; `IllegalStateException` after close.\n- **The pairs are `android.util.Pair`, not `kotlin.Pair`** — Kotlin\n  destructuring (`for ((id, a) in …)`) does not compile against them; use\n  `.first`/`.second`.\n\n## Rendering what you edited\n\nAnnotation types render only when `RenderParams.renderFlags` includes them:\n`FLAG_RENDER_TEXT_ANNOTATIONS` / `FLAG_RENDER_HIGHLIGHT_ANNOTATIONS` (and the\n36.1 additions `FLAG_RENDER_FREETEXT_ANNOTATIONS` /\n`FLAG_RENDER_STAMP_ANNOTATIONS`). An added stamp or free-text that \"doesn't\nshow up\" in your preview bitmap is usually a missing render flag, not a failed\nadd — re-render with the matching flags set via\n`RenderParams.Builder.setRenderFlags(...)` and the `render(bitmap, clip,\ntransform, params)` overload. The render-mode constants live on\n**`RenderParams`** (and legacy `PdfRenderer.Page`) — `PdfRendererPreV.Page`\nhas none, so on the PreV branch write\n`RenderParams.Builder(RenderParams.RENDER_MODE_FOR_DISPLAY)`; qualifying it\nvia `PdfRendererPreV.Page` does not compile.\n\n## Component vocabulary (android.graphics.pdf.component)\n\n- `HighlightAnnotation(List<RectF>)` — quad list, one rect per highlighted run.\n- `FreeTextAnnotation(RectF, String)` — bounds + text; text/background colors\n  settable.\n- `StampAnnotation(RectF)` — a container: **only** `PdfPagePathObject`,\n  `PdfPageTextObject`, or `PdfPageImageObject` children (`addObject`), per the\n  class contract.\n- Page objects also attach directly to the page (`addPageObject` /\n  `getPageObjects` / `updatePageObject` / `removePageObject` — same id-based\n  contract as annotations), and carry a transform matrix\n  (`PdfPageObject.setMatrix`/`transform`). `PdfPagePathObject` stroke defaults\n  to opaque black in sRGB.\n- `Page.getTopPageObjectAtPosition(PointF, …)` hit-tests the topmost object —\n  use it for tap-to-select before update/remove.\n\n## Out of scope (route elsewhere)\n\nCreating PDFs from scratch (`PdfDocument` canvas API), form filling\n(`applyEdit`, API 35), text extraction/search, and embedding a viewer UI\n(`PdfViewerFragment` — display-only\n[kb://android/develop/ui/views/layout/pdf/implement-pdf-viewer]) are separate\nsurfaces; third-party SDKs remain the answer only below the version gate or\nfor annotation types the component API doesn't model.\n","tagline":"Use when reading, adding, updating, or removing PDF annotations (highlight, free-text, stamp) or page objects (path/text/image) with Android's platform PDF APIs, or when saving those edits back to disk — the editing surface added in API 36.1 (PdfRenderer.Page) and SDK extension 1","category":"design-creative","tags":["agent-skill"],"author":"rcosteira79","verified":false,"attribution":{"status":"registry_indexed","statusLabel":"Registry indexed","shortLabel":"REGISTRY INDEXED","sourceLabel":"github fast track","sourceDetail":"rcosteira79/android-skills","creatorName":"rcosteira79","creatorUrl":"https://github.com/rcosteira79","sourceUrl":"https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations","indexedBy":"OpenAgentSkill community index","claimUrl":"https://www.openagentskill.com/skills/rcosteira79-pdf-annotations#claim-this-skill","claimCta":"Claim this skill","trustNote":"This listing was indexed from public sources and is not marked official until a maintainer claim is approved.","publicNote":"Attribution links to the public repository or creator profile. Creators can claim the listing to update ownership signals."},"stats":{"stars":136,"forks":14,"verified_installs":0,"successful_runs":0,"total_outcomes":0,"rating":0,"review_count":0,"quality_score":38.06},"quality":{"score":68,"tier":"promising","label":"Promising","summary":"Useful candidate, but compare it with alternatives before adopting.","signals":[{"label":"GitHub stars","value":"136","tone":"neutral"},{"label":"Freshness","value":"12d ago","tone":"positive"},{"label":"Install ready","value":"Yes","tone":"positive"},{"label":"License","value":"MIT","tone":"neutral"}],"warnings":[]},"trust":{"version":"trust-score-v5","score":69,"base_score":77,"outcome_confidence":0,"tier":"review","label":"Sandbox only","summary":"Useful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.","recommendedAction":"Run only in a sandbox and compare close alternatives before using it for real work.","decision":{"install_policy":"human_review_before_install","auto_install_allowed":false,"human_review_required":true,"sandbox_first":true,"agent_action":"Compare alternatives before installing.","reasoning":["69/100 Trust Score v5","77/100 Trust Score v4 baseline","Needs more real agent outcomes before unattended install","Install path is available","Review before production"],"review_required_when":["The workspace contains production secrets, payments, private customer data, or irreversible actions.","The install command requests shell, network, credential, database, or broad filesystem access.","Outcome evidence is missing, recently failed, or required human review.","Production credentials, payments, or irreversible account changes without explicit human review","Sensitive private data before reviewing repository code, license, and permission surface","Automatic installation in a production workspace"]},"dimensions":[{"id":"github_adoption","label":"GitHub adoption","score":62,"weight":0.13,"status":"info","detail":"136 GitHub stars"},{"id":"repo_activity","label":"Stars/forks activity","score":57,"weight":0.08,"status":"warn","detail":"136 stars, 14 forks; issue activity unavailable in current metadata"},{"id":"maintenance","label":"Recent maintenance","score":100,"weight":0.14,"status":"pass","detail":"12d since push"},{"id":"license","label":"License clarity","score":86,"weight":0.09,"status":"pass","detail":"MIT"},{"id":"documentation","label":"README/SKILL.md completeness","score":76,"weight":0.14,"status":"info","detail":"Public metadata needs stronger README/SKILL.md context"},{"id":"dependency_risk","label":"Dependency/runtime risk","score":72,"weight":0.12,"status":"info","detail":"external package install surface, network or browser surface"},{"id":"installability","label":"Install availability","score":92,"weight":0.1,"status":"pass","detail":"npx skills add rcosteira79/android-skills --skill pdf-annotations"},{"id":"install_safety","label":"Install command safety","score":92,"weight":0.1,"status":"pass","detail":"standard package or runtime install path"},{"id":"permission_surface","label":"Permission surface","score":72,"weight":0.07,"status":"info","detail":"filesystem or document access, network or browser access"},{"id":"repository","label":"Repository evidence","score":86,"weight":0.04,"status":"pass","detail":"https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations"},{"id":"review_status","label":"Review status","score":88,"weight":0.05,"status":"pass","detail":"AI review data available"},{"id":"agent_outcomes","label":"Agent Proven outcomes","score":54,"weight":0.13,"status":"info","detail":"No agent outcome data yet"}],"checks":[{"status":"info","label":"GitHub adoption","detail":"136 GitHub stars"},{"status":"warn","label":"Stars/forks activity","detail":"136 stars, 14 forks; issue activity unavailable in current metadata"},{"status":"pass","label":"Recent maintenance","detail":"12d since push"},{"status":"pass","label":"License clarity","detail":"MIT"},{"status":"info","label":"README/SKILL.md completeness","detail":"Public metadata needs stronger README/SKILL.md context"},{"status":"info","label":"Dependency/runtime risk","detail":"external package install surface, network or browser surface"},{"status":"pass","label":"Install availability","detail":"npx skills add rcosteira79/android-skills --skill pdf-annotations"},{"status":"pass","label":"Install command safety","detail":"standard package or runtime install path"},{"status":"info","label":"Permission surface","detail":"filesystem or document access, network or browser access"},{"status":"pass","label":"Repository evidence","detail":"https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations"},{"status":"pass","label":"Review status","detail":"AI review data available"},{"status":"info","label":"Agent Proven outcomes","detail":"No agent outcome data yet"},{"status":"warn","label":"Ownership","detail":"No approved owner claim yet"},{"status":"info","label":"OpenAgentSkill usage","detail":"No local usage activity yet"},{"status":"info","label":"Agent outcomes","detail":"No agent outcome data yet"}],"strengths":["AI review approved","Install path is available","Repository evidence is available","Recently maintained repository","Install command has no obvious high-risk pattern","Outcome loop is ready but needs first real agent run"],"warnings":["Quality score needs review","Stars/forks activity: 136 stars, 14 forks; issue activity unavailable in current metadata","No real agent outcome reports yet","Human review required before unattended installation"],"evidence":{"stars":"136 GitHub stars","repoActivity":"136 stars, 14 forks","lastPushed":"12d since push","license":"MIT","repository":"https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations","install":"npx skills add rcosteira79/android-skills --skill pdf-annotations","installSafety":"standard package or runtime install path","permissionSurface":"filesystem or document access, network or browser access","documentation":"Usable metadata, review docs","agentOutcomes":"No agent outcome data yet","agentProvenScore":0,"outcomeConfidence":"0%","installPolicy":"human_review_before_install"},"installReadiness":{"ready":true,"command":"npx skills add rcosteira79/android-skills --skill pdf-annotations","policy":"human_review_before_install","label":"Human review before install","notes":["Install path is available","Repository evidence is available","License is declared","No Agent Proven outcome evidence yet","12d since push","Trust Score v5 requires review or sandbox-only use before install."]},"agentCompatibility":["Codex","Claude Code","Cursor","OpenAgentSkill CLI"],"riskSummary":{"level":"medium","label":"Review before production","notes":["Quality score needs review","Stars/forks activity: 136 stars, 14 forks; issue activity unavailable in current metadata"]},"outcomeEvidence":{"total":0,"successes":0,"failures":0,"notRelevant":0,"successRate":null,"installAttempts":0,"riskBlocked":0,"setupRequired":0,"installSuccessRate":null,"avgOutputQuality":null,"avgTimeToUsefulMs":null,"productionOutcomes":0,"humanReviewRequired":0,"recentSuccessRate":null,"recentFailureRate":null,"uniqueAgents":0,"agentProvenScore":0,"agentProvenLabel":"Needs first agent run","lastOutcomeAt":null,"label":"No agent outcome data yet"},"autoInstall":{"allowed":false,"sandboxRequired":true,"policy":"human_review_before_install","reason":"Compare alternatives before installing."},"outcome_loop":{"version":"openagentskill-agent-outcome-v4","required_after_install":true,"endpoint":"/api/agent/outcome","method":"POST","event_id_source":"feedback.event_id, install_receipt.resolve_event_id, or decision_packet.outcome_feedback.event_id","expected_outcomes":["success","failed","not_relevant","blocked_by_risk","setup_required"],"required_fields":["event_id","skill_slug","task"],"quality_fields":["task_success","output_quality","error_type","human_review_required","used_in_production","workspace","evidence_url","time_to_useful_ms","source_version"],"ranking_inputs_updated":["Trust Score v5 outcome confidence","Agent Proven Score","Resolve ranking task-fit evidence","Skill detail machine-readable metadata","Outcome leaderboard"]},"agent_contract":{"suited_tasks":["design-creative","agent-skill"],"suited_agents":["Codex","Claude Code","Cursor","OpenAgentSkill CLI"],"install_command":"npx skills add rcosteira79/android-skills --skill pdf-annotations","trust_score":69,"trust_version":"trust-score-v5","risk_level":"medium","do_not_use_when":["Production credentials, payments, or irreversible account changes without explicit human review","Sensitive private data before reviewing repository code, license, and permission surface","Automatic installation in a production workspace"],"before_install":["Read the audit page and machine-readable metadata.","Confirm the install command, license, and permission surface fit the workspace.","Get explicit human approval or choose an alternative before installing."],"after_run":["Report the outcome to /api/agent/outcome using the resolve event id.","Include output_quality, workspace, human_review_required, and evidence_url when available.","Re-resolve before broad production rollout."]},"bestFor":["design-creative","agent-skill"],"doNotUseFor":["Production credentials, payments, or irreversible account changes without explicit human review","Sensitive private data before reviewing repository code, license, and permission surface","Automatic installation in a production workspace"],"knownRisks":["Quality score needs review","Stars/forks activity: 136 stars, 14 forks; issue activity unavailable in current metadata"],"backward_compatible":{"trust_score_v4":{"version":"trust-score-v4","score":77,"tier":"strong","label":"Strong shortlist","summary":"Good trust signals with a few areas worth checking before rollout."}}},"trust_score_v5":{"version":"trust-score-v5","score":69,"base_score":77,"outcome_confidence":0,"tier":"review","label":"Sandbox only","summary":"Useful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.","recommendedAction":"Run only in a sandbox and compare close alternatives before using it for real work.","decision":{"install_policy":"human_review_before_install","auto_install_allowed":false,"human_review_required":true,"sandbox_first":true,"agent_action":"Compare alternatives before installing.","reasoning":["69/100 Trust Score v5","77/100 Trust Score v4 baseline","Needs more real agent outcomes before unattended install","Install path is available","Review before production"],"review_required_when":["The workspace contains production secrets, payments, private customer data, or irreversible actions.","The install command requests shell, network, credential, database, or broad filesystem access.","Outcome evidence is missing, recently failed, or required human review.","Production credentials, payments, or irreversible account changes without explicit human review","Sensitive private data before reviewing repository code, license, and permission surface","Automatic installation in a production workspace"]},"dimensions":[{"id":"github_adoption","label":"GitHub adoption","score":62,"weight":0.13,"status":"info","detail":"136 GitHub stars"},{"id":"repo_activity","label":"Stars/forks activity","score":57,"weight":0.08,"status":"warn","detail":"136 stars, 14 forks; issue activity unavailable in current metadata"},{"id":"maintenance","label":"Recent maintenance","score":100,"weight":0.14,"status":"pass","detail":"12d since push"},{"id":"license","label":"License clarity","score":86,"weight":0.09,"status":"pass","detail":"MIT"},{"id":"documentation","label":"README/SKILL.md completeness","score":76,"weight":0.14,"status":"info","detail":"Public metadata needs stronger README/SKILL.md context"},{"id":"dependency_risk","label":"Dependency/runtime risk","score":72,"weight":0.12,"status":"info","detail":"external package install surface, network or browser surface"},{"id":"installability","label":"Install availability","score":92,"weight":0.1,"status":"pass","detail":"npx skills add rcosteira79/android-skills --skill pdf-annotations"},{"id":"install_safety","label":"Install command safety","score":92,"weight":0.1,"status":"pass","detail":"standard package or runtime install path"},{"id":"permission_surface","label":"Permission surface","score":72,"weight":0.07,"status":"info","detail":"filesystem or document access, network or browser access"},{"id":"repository","label":"Repository evidence","score":86,"weight":0.04,"status":"pass","detail":"https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations"},{"id":"review_status","label":"Review status","score":88,"weight":0.05,"status":"pass","detail":"AI review data available"},{"id":"agent_outcomes","label":"Agent Proven outcomes","score":54,"weight":0.13,"status":"info","detail":"No agent outcome data yet"}],"checks":[{"status":"info","label":"GitHub adoption","detail":"136 GitHub stars"},{"status":"warn","label":"Stars/forks activity","detail":"136 stars, 14 forks; issue activity unavailable in current metadata"},{"status":"pass","label":"Recent maintenance","detail":"12d since push"},{"status":"pass","label":"License clarity","detail":"MIT"},{"status":"info","label":"README/SKILL.md completeness","detail":"Public metadata needs stronger README/SKILL.md context"},{"status":"info","label":"Dependency/runtime risk","detail":"external package install surface, network or browser surface"},{"status":"pass","label":"Install availability","detail":"npx skills add rcosteira79/android-skills --skill pdf-annotations"},{"status":"pass","label":"Install command safety","detail":"standard package or runtime install path"},{"status":"info","label":"Permission surface","detail":"filesystem or document access, network or browser access"},{"status":"pass","label":"Repository evidence","detail":"https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations"},{"status":"pass","label":"Review status","detail":"AI review data available"},{"status":"info","label":"Agent Proven outcomes","detail":"No agent outcome data yet"},{"status":"warn","label":"Ownership","detail":"No approved owner claim yet"},{"status":"info","label":"OpenAgentSkill usage","detail":"No local usage activity yet"},{"status":"info","label":"Agent outcomes","detail":"No agent outcome data yet"}],"strengths":["AI review approved","Install path is available","Repository evidence is available","Recently maintained repository","Install command has no obvious high-risk pattern","Outcome loop is ready but needs first real agent run"],"warnings":["Quality score needs review","Stars/forks activity: 136 stars, 14 forks; issue activity unavailable in current metadata","No real agent outcome reports yet","Human review required before unattended installation"],"evidence":{"stars":"136 GitHub stars","repoActivity":"136 stars, 14 forks","lastPushed":"12d since push","license":"MIT","repository":"https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations","install":"npx skills add rcosteira79/android-skills --skill pdf-annotations","installSafety":"standard package or runtime install path","permissionSurface":"filesystem or document access, network or browser access","documentation":"Usable metadata, review docs","agentOutcomes":"No agent outcome data yet","agentProvenScore":0,"outcomeConfidence":"0%","installPolicy":"human_review_before_install"},"installReadiness":{"ready":true,"command":"npx skills add rcosteira79/android-skills --skill pdf-annotations","policy":"human_review_before_install","label":"Human review before install","notes":["Install path is available","Repository evidence is available","License is declared","No Agent Proven outcome evidence yet","12d since push","Trust Score v5 requires review or sandbox-only use before install."]},"agentCompatibility":["Codex","Claude Code","Cursor","OpenAgentSkill CLI"],"riskSummary":{"level":"medium","label":"Review before production","notes":["Quality score needs review","Stars/forks activity: 136 stars, 14 forks; issue activity unavailable in current metadata"]},"outcomeEvidence":{"total":0,"successes":0,"failures":0,"notRelevant":0,"successRate":null,"installAttempts":0,"riskBlocked":0,"setupRequired":0,"installSuccessRate":null,"avgOutputQuality":null,"avgTimeToUsefulMs":null,"productionOutcomes":0,"humanReviewRequired":0,"recentSuccessRate":null,"recentFailureRate":null,"uniqueAgents":0,"agentProvenScore":0,"agentProvenLabel":"Needs first agent run","lastOutcomeAt":null,"label":"No agent outcome data yet"},"autoInstall":{"allowed":false,"sandboxRequired":true,"policy":"human_review_before_install","reason":"Compare alternatives before installing."},"outcome_loop":{"version":"openagentskill-agent-outcome-v4","required_after_install":true,"endpoint":"/api/agent/outcome","method":"POST","event_id_source":"feedback.event_id, install_receipt.resolve_event_id, or decision_packet.outcome_feedback.event_id","expected_outcomes":["success","failed","not_relevant","blocked_by_risk","setup_required"],"required_fields":["event_id","skill_slug","task"],"quality_fields":["task_success","output_quality","error_type","human_review_required","used_in_production","workspace","evidence_url","time_to_useful_ms","source_version"],"ranking_inputs_updated":["Trust Score v5 outcome confidence","Agent Proven Score","Resolve ranking task-fit evidence","Skill detail machine-readable metadata","Outcome leaderboard"]},"agent_contract":{"suited_tasks":["design-creative","agent-skill"],"suited_agents":["Codex","Claude Code","Cursor","OpenAgentSkill CLI"],"install_command":"npx skills add rcosteira79/android-skills --skill pdf-annotations","trust_score":69,"trust_version":"trust-score-v5","risk_level":"medium","do_not_use_when":["Production credentials, payments, or irreversible account changes without explicit human review","Sensitive private data before reviewing repository code, license, and permission surface","Automatic installation in a production workspace"],"before_install":["Read the audit page and machine-readable metadata.","Confirm the install command, license, and permission surface fit the workspace.","Get explicit human approval or choose an alternative before installing."],"after_run":["Report the outcome to /api/agent/outcome using the resolve event id.","Include output_quality, workspace, human_review_required, and evidence_url when available.","Re-resolve before broad production rollout."]},"bestFor":["design-creative","agent-skill"],"doNotUseFor":["Production credentials, payments, or irreversible account changes without explicit human review","Sensitive private data before reviewing repository code, license, and permission surface","Automatic installation in a production workspace"],"knownRisks":["Quality score needs review","Stars/forks activity: 136 stars, 14 forks; issue activity unavailable in current metadata"],"backward_compatible":{"trust_score_v4":{"version":"trust-score-v4","score":77,"tier":"strong","label":"Strong shortlist","summary":"Good trust signals with a few areas worth checking before rollout."}}},"trust_score_v4":{"version":"trust-score-v4","score":77,"tier":"strong","label":"Strong shortlist","summary":"Good trust signals with a few areas worth checking before rollout.","recommendedAction":"Test in a sandbox workflow and compare its install path with close alternatives.","dimensions":[{"id":"github_adoption","label":"GitHub adoption","score":62,"weight":0.13,"status":"info","detail":"136 GitHub stars"},{"id":"repo_activity","label":"Stars/forks activity","score":57,"weight":0.08,"status":"warn","detail":"136 stars, 14 forks; issue activity unavailable in current metadata"},{"id":"maintenance","label":"Recent maintenance","score":100,"weight":0.14,"status":"pass","detail":"12d since push"},{"id":"license","label":"License clarity","score":86,"weight":0.09,"status":"pass","detail":"MIT"},{"id":"documentation","label":"README/SKILL.md completeness","score":76,"weight":0.14,"status":"info","detail":"Public metadata needs stronger README/SKILL.md context"},{"id":"dependency_risk","label":"Dependency/runtime risk","score":72,"weight":0.12,"status":"info","detail":"external package install surface, network or browser surface"},{"id":"installability","label":"Install availability","score":92,"weight":0.1,"status":"pass","detail":"npx skills add rcosteira79/android-skills --skill pdf-annotations"},{"id":"install_safety","label":"Install command safety","score":92,"weight":0.1,"status":"pass","detail":"standard package or runtime install path"},{"id":"permission_surface","label":"Permission surface","score":72,"weight":0.07,"status":"info","detail":"filesystem or document access, network or browser access"},{"id":"repository","label":"Repository evidence","score":86,"weight":0.04,"status":"pass","detail":"https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations"},{"id":"review_status","label":"Review status","score":88,"weight":0.05,"status":"pass","detail":"AI review data available"},{"id":"agent_outcomes","label":"Agent Proven outcomes","score":54,"weight":0.13,"status":"info","detail":"No agent outcome data yet"}],"checks":[{"status":"info","label":"GitHub adoption","detail":"136 GitHub stars"},{"status":"warn","label":"Stars/forks activity","detail":"136 stars, 14 forks; issue activity unavailable in current metadata"},{"status":"pass","label":"Recent maintenance","detail":"12d since push"},{"status":"pass","label":"License clarity","detail":"MIT"},{"status":"info","label":"README/SKILL.md completeness","detail":"Public metadata needs stronger README/SKILL.md context"},{"status":"info","label":"Dependency/runtime risk","detail":"external package install surface, network or browser surface"},{"status":"pass","label":"Install availability","detail":"npx skills add rcosteira79/android-skills --skill pdf-annotations"},{"status":"pass","label":"Install command safety","detail":"standard package or runtime install path"},{"status":"info","label":"Permission surface","detail":"filesystem or document access, network or browser access"},{"status":"pass","label":"Repository evidence","detail":"https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations"},{"status":"pass","label":"Review status","detail":"AI review data available"},{"status":"info","label":"Agent Proven outcomes","detail":"No agent outcome data yet"},{"status":"warn","label":"Ownership","detail":"No approved owner claim yet"},{"status":"info","label":"OpenAgentSkill usage","detail":"No local usage activity yet"},{"status":"info","label":"Agent outcomes","detail":"No agent outcome data yet"}],"strengths":["AI review approved","Install path is available","Repository evidence is available","Recently maintained repository","Install command has no obvious high-risk pattern"],"warnings":["Quality score needs review","Stars/forks activity: 136 stars, 14 forks; issue activity unavailable in current metadata"],"evidence":{"stars":"136 GitHub stars","repoActivity":"136 stars, 14 forks","lastPushed":"12d since push","license":"MIT","repository":"https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations","install":"npx skills add rcosteira79/android-skills --skill pdf-annotations","installSafety":"standard package or runtime install path","permissionSurface":"filesystem or document access, network or browser access","documentation":"Usable metadata, review docs","agentOutcomes":"No agent outcome data yet"},"installReadiness":{"ready":true,"command":"npx skills add rcosteira79/android-skills --skill pdf-annotations","policy":"human_review_before_install","label":"Human review before install","notes":["Install path is available","Repository evidence is available","License is declared","No Agent Proven outcome evidence yet","12d since push"]},"agentCompatibility":["Codex","Claude Code","Cursor","OpenAgentSkill CLI"],"riskSummary":{"level":"medium","label":"Review before production","notes":["Quality score needs review","Stars/forks activity: 136 stars, 14 forks; issue activity unavailable in current metadata"]},"outcomeEvidence":{"total":0,"successes":0,"failures":0,"notRelevant":0,"successRate":null,"installAttempts":0,"riskBlocked":0,"setupRequired":0,"installSuccessRate":null,"avgOutputQuality":null,"avgTimeToUsefulMs":null,"productionOutcomes":0,"humanReviewRequired":0,"recentSuccessRate":null,"recentFailureRate":null,"uniqueAgents":0,"agentProvenScore":0,"agentProvenLabel":"Needs first agent run","lastOutcomeAt":null,"label":"No agent outcome data yet"},"autoInstall":{"allowed":false,"sandboxRequired":true,"policy":"human_review_before_install","reason":"Human review or sandbox validation is required before automatic installation."},"bestFor":["design-creative","agent-skill"],"doNotUseFor":["Production credentials, payments, or irreversible account changes without explicit human review","Sensitive private data before reviewing repository code, license, and permission surface","Automatic installation in a production workspace"],"knownRisks":["Quality score needs review","Stars/forks activity: 136 stars, 14 forks; issue activity unavailable in current metadata"]},"agent_proven":{"version":"agent-proven-v1","score":0,"tier":"unproven","label":"Needs first agent run","summary":"No agent outcome reports yet. Use Resolve, run one narrow sandbox task, then report the result.","metrics":{"totalOutcomes":0,"successfulOutcomes":0,"failedOutcomes":0,"installAttempts":0,"installSuccessRate":null,"successRate":null,"recentSuccessRate":null,"recentFailureRate":null,"riskBlocked":0,"setupRequired":0,"notRelevant":0,"avgOutputQuality":null,"avgTimeToUsefulMs":null,"productionOutcomes":0,"humanReviewRequired":0,"uniqueAgents":0,"lastOutcomeAt":null},"signals":[],"penalties":["No real agent outcome evidence yet"]},"outcome_stats":null,"safety":{"score":60,"level":"review_before_install","label":"Review before install","safety_tier":{"tier":"reviewed","label":"Reviewed with permission notes","badge":"REVIEWED","summary":"Usable candidate, but the agent should surface permission and audit notes before installation.","recommended_action":"Require human approval before installing into a real workspace.","auto_install_policy":"review","reasons":["Quality score needs review","60/100 agent safety score"]},"auto_install_allowed":false,"human_review_required":true,"blocked":false,"audit_risk":"needs_review","permission_hints":[{"id":"browser","label":"Browser automation","reason":"Skill may drive a browser or interact with web pages.","severity":"medium"},{"id":"network","label":"Network access","reason":"Skill likely fetches remote pages, APIs, repositories, or external services.","severity":"medium"},{"id":"filesystem","label":"Filesystem access","reason":"Skill may read or write project files, documents, generated artifacts, or local workspace state.","severity":"medium"}],"policy_warnings":["Quality score needs review"],"constraints_applied":{"max_risk":"medium","needs_install_command":true,"min_stars":0}},"safety_gate":{"tier":"reviewed","label":"Reviewed with permission notes","badge":"REVIEWED","auto_install_policy":"review","auto_install_allowed":false,"blocked":false,"human_review_required":true,"recommended_action":"Require human approval before installing into a real workspace.","reasons":["Quality score needs review","60/100 agent safety score"]},"eval":{"version":"openagentskill-skill-eval-v1","status":"review","score":74,"risk_level":"medium","decision":{"recommendation":"manual_review","reason":"Require human approval before installing into a real workspace.","auto_install_allowed":false,"policy":"review","human_review_required":true},"blockers":[],"warnings":["Trust score: Good trust signals with a few areas worth checking before rollout.","Audit score: Needs review","Agent safety gate: Usable candidate, but the agent should surface permission and audit notes before installation.","README/SKILL.md completeness: Public metadata needs stronger README/SKILL.md context","Permission surface: filesystem or document access, network or browser access","Quality score needs review","Stars/forks activity: 136 stars, 14 forks; issue activity unavailable in current metadata"],"validation_plan":["Inspect repository, README/SKILL.md, license, and recent commits before production use.","Install in an isolated workspace or sandbox with no production secrets available.","Run the smallest representative task and record files touched, commands run, network access, and outputs.","Compare the selected skill against at least one alternative when the eval status is review or failed.","Promote only after the agent reports a successful verification result and unresolved warnings are accepted."],"checks":[{"id":"task_fit","label":"Task fit","status":"pass","score":94,"required_for_auto_install":true,"detail":"Task wording matches this skill metadata.","evidence":["Evaluate pdf-annotations before installing it in an agent workflow","design-creative","RAG and knowledge workflows; Claude Code teams; builders willing to evaluate younger projects"]},{"id":"install_path","label":"Install path","status":"pass","score":92,"required_for_auto_install":true,"detail":"Install handoff is available.","evidence":["npx skills add rcosteira79/android-skills --skill pdf-annotations"]},{"id":"install_safety","label":"Install command safety","status":"pass","score":92,"required_for_auto_install":true,"detail":"standard package or runtime install path","evidence":["npx skills add rcosteira79/android-skills --skill pdf-annotations"]},{"id":"trust_score","label":"Trust score","status":"warn","score":77,"required_for_auto_install":true,"detail":"Good trust signals with a few areas worth checking before rollout.","evidence":["Strong shortlist","136 GitHub stars","MIT"]},{"id":"audit_score","label":"Audit score","status":"warn","score":80,"required_for_auto_install":true,"detail":"Needs review","evidence":["Quality score needs review"]},{"id":"agent_safety_gate","label":"Agent safety gate","status":"warn","score":60,"required_for_auto_install":true,"detail":"Usable candidate, but the agent should surface permission and audit notes before installation.","evidence":["Require human approval before installing into a real workspace.","Quality score needs review"]},{"id":"readme_skillmd_completeness","label":"README/SKILL.md completeness","status":"warn","score":76,"required_for_auto_install":false,"detail":"Public metadata needs stronger README/SKILL.md context","evidence":["Usable metadata, review docs"]},{"id":"license_clarity","label":"License clarity","status":"pass","score":86,"required_for_auto_install":true,"detail":"MIT","evidence":["MIT"]},{"id":"recent_maintenance","label":"Recent maintenance","status":"pass","score":100,"required_for_auto_install":false,"detail":"12d since push","evidence":["12d since push"]},{"id":"permission_surface","label":"Permission surface","status":"warn","score":72,"required_for_auto_install":true,"detail":"filesystem or document access, network or browser access","evidence":["Browser automation: medium","Network access: medium","Filesystem access: medium"]},{"id":"alternatives","label":"Alternatives available","status":"info","score":55,"required_for_auto_install":false,"detail":"No close alternatives were found in the current shortlist.","evidence":[]}],"endpoints":{"web":"https://www.openagentskill.com/skills/rcosteira79-pdf-annotations/evals","api":"/api/agent/evals?slug=rcosteira79-pdf-annotations","text":"/api/agent/evals?slug=rcosteira79-pdf-annotations&format=text"}},"agent_readable_metadata":{"version":"openagentskill-agent-metadata-v2","skill":{"slug":"rcosteira79-pdf-annotations","name":"pdf-annotations","description":"Use when reading, adding, updating, or removing PDF annotations (highlight, free-text, stamp) or page objects (path/text/image) with Android's platform PDF APIs, or when saving those edits back to disk — the editing surface added in API 36.1 (PdfRenderer.Page) and SDK extension 18 (PdfRendererPreV.Page on API 31+), android.graphics.pdf.component. Covers the version gate, the open-edit-write workflow, and the id/render-flag/save contracts. Not for display-only PdfViewerFragment work, PdfDocument creation-from-scratch, form filling, or third-party PDF SDKs (iText, PDFBox, PSPDFKit).","category":"design-creative","url":"https://www.openagentskill.com/skills/rcosteira79-pdf-annotations","repository":"https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations","github_repo":"rcosteira79/android-skills"},"suited_tasks":["RAG and knowledge workflows","Claude Code teams","builders willing to evaluate younger projects","Chunk documents","Create embeddings","Retrieve and cite relevant passages","Read uploaded files","Extract structured fields"],"suited_agents":["Codex","Claude Code","Cursor","OpenAgentSkill CLI","CLI"],"install":{"command":"npx skills add rcosteira79/android-skills --skill pdf-annotations","ready":true,"targets":[{"id":"openagentskill-cli","label":"CLI","kind":"command","value":"npx --yes https://github.com/Leon-Drq/openagentskill/releases/download/cli-v0.3.0/openagentskill-0.3.0.tgz add rcosteira79-pdf-annotations"},{"id":"codex","label":"Codex","kind":"agent-prompt","value":"Install the \"pdf-annotations\" agent skill from https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations. Read its SKILL.md or equivalent instructions first, install only the files needed for this workspace, and summarize any required setup before using it. Skill purpose: Use when reading, adding, updating, or removing PDF annotations (highlight, free-text, stamp) or page objects (path/text/image) with Android's platform PDF APIs, or when saving those edits back to disk — the editing surface added in API 36.1 (PdfRenderer.Page) and SDK extension 18 (PdfRendererPreV.Page on API 31+), android.graphics.pdf.component. Covers the version gate, the open-edit-write workflow, and the id/render-flag/save contracts. Not for display-only PdfViewerFragment work, PdfDocument creation-from-scratch, form filling, or third-party PDF SDKs (iText, PDFBox, PSPDFKit). After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {\"event_id\":\"install_<unique-id>\",\"skill_slug\":\"rcosteira79-pdf-annotations\",\"task\":\"Install pdf-annotations\",\"agent\":\"codex\",\"outcome\":\"success\",\"install_used\":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes."},{"id":"claude-code","label":"Claude Code","kind":"agent-prompt","value":"Add \"pdf-annotations\" as a Claude Code skill from https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations. Inspect the skill instructions, place the reusable skill files in the appropriate local skills location for this project, and report the activation steps. Skill purpose: Use when reading, adding, updating, or removing PDF annotations (highlight, free-text, stamp) or page objects (path/text/image) with Android's platform PDF APIs, or when saving those edits back to disk — the editing surface added in API 36.1 (PdfRenderer.Page) and SDK extension 18 (PdfRendererPreV.Page on API 31+), android.graphics.pdf.component. Covers the version gate, the open-edit-write workflow, and the id/render-flag/save contracts. Not for display-only PdfViewerFragment work, PdfDocument creation-from-scratch, form filling, or third-party PDF SDKs (iText, PDFBox, PSPDFKit). After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {\"event_id\":\"install_<unique-id>\",\"skill_slug\":\"rcosteira79-pdf-annotations\",\"task\":\"Install pdf-annotations\",\"agent\":\"claude-code\",\"outcome\":\"success\",\"install_used\":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes."},{"id":"cursor","label":"Cursor","kind":"agent-prompt","value":"Turn \"pdf-annotations\" from https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations into a reusable Cursor project rule or agent instruction. Preserve the core workflow, adapt paths to this repo, and keep the rule scoped to tasks where it is relevant. Skill purpose: Use when reading, adding, updating, or removing PDF annotations (highlight, free-text, stamp) or page objects (path/text/image) with Android's platform PDF APIs, or when saving those edits back to disk — the editing surface added in API 36.1 (PdfRenderer.Page) and SDK extension 18 (PdfRendererPreV.Page on API 31+), android.graphics.pdf.component. Covers the version gate, the open-edit-write workflow, and the id/render-flag/save contracts. Not for display-only PdfViewerFragment work, PdfDocument creation-from-scratch, form filling, or third-party PDF SDKs (iText, PDFBox, PSPDFKit). After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {\"event_id\":\"install_<unique-id>\",\"skill_slug\":\"rcosteira79-pdf-annotations\",\"task\":\"Install pdf-annotations\",\"agent\":\"cursor\",\"outcome\":\"success\",\"install_used\":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes."}],"handoff_url":"https://www.openagentskill.com/api/skills/rcosteira79-pdf-annotations/install","manifest_url":"https://www.openagentskill.com/api/registry/manifest/rcosteira79-pdf-annotations"},"trust":{"score":77,"label":"Strong shortlist","version":"trust-score-v4","install_policy":"human_review_before_install","evidence":{"stars":"136 GitHub stars","repoActivity":"136 stars, 14 forks","lastPushed":"12d since push","license":"MIT","repository":"https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations","install":"npx skills add rcosteira79/android-skills --skill pdf-annotations","installSafety":"standard package or runtime install path","permissionSurface":"filesystem or document access, network or browser access","documentation":"Usable metadata, review docs","agentOutcomes":"No agent outcome data yet"},"outcome_evidence":{"total":0,"successes":0,"failures":0,"not_relevant":0,"success_rate":null,"recent_success_rate":null,"recent_failure_rate":null,"install_attempts":0,"install_success_rate":null,"risk_blocked":0,"setup_required":0,"avg_output_quality":null,"production_outcomes":0,"last_outcome_at":null,"label":"No agent outcome data yet"},"auto_install":{"allowed":false,"sandbox_required":true,"reason":"Human review or sandbox validation is required before automatic installation."},"best_for":["design-creative","agent-skill"],"known_risks":["Quality score needs review","Stars/forks activity: 136 stars, 14 forks; issue activity unavailable in current metadata"]},"agent_proven":{"version":"agent-proven-v1","score":0,"tier":"unproven","label":"Needs first agent run","summary":"No agent outcome reports yet. Use Resolve, run one narrow sandbox task, then report the result.","metrics":{"totalOutcomes":0,"successfulOutcomes":0,"failedOutcomes":0,"installAttempts":0,"installSuccessRate":null,"successRate":null,"recentSuccessRate":null,"recentFailureRate":null,"riskBlocked":0,"setupRequired":0,"notRelevant":0,"avgOutputQuality":null,"avgTimeToUsefulMs":null,"productionOutcomes":0,"humanReviewRequired":0,"uniqueAgents":0,"lastOutcomeAt":null},"signals":[],"penalties":["No real agent outcome evidence yet"]},"audit":{"score":80,"risk_level":"needs_review","risk_label":"Needs review","warnings":["Quality score needs review","Stars/forks activity: 136 stars, 14 forks; issue activity unavailable in current metadata"]},"safety_gate":{"tier":"reviewed","label":"Reviewed with permission notes","auto_install_policy":"review","auto_install_allowed":false,"human_review_required":true,"blocked":false,"recommended_action":"Require human approval before installing into a real workspace."},"quality":{"score":68,"label":"Promising"},"supply":{"track":"Coding and developer agents","scenario":"GitHub automation","maintenance":"12d since push","risk":"Needs review"},"alternative_skills":[],"do_not_use_when":["teams that need a vendor-supported SLA","high-compliance environments without internal security review","No OpenAgentSkill engagement data yet","Quality score needs review","Stars/forks activity: 136 stars, 14 forks; issue activity unavailable in current metadata","Production credentials, payments, or irreversible account changes without explicit human review","Sensitive private data before reviewing repository code, license, and permission surface","Automatic installation in a production workspace"],"agent_contract":{"task_input":"Use pdf-annotations in an agent workflow","recommended_action":"Require human approval before installing into a real workspace.","install_policy":"review","minimum_review_before_use":["Trust: 77/100 Strong shortlist","Audit: 80/100 Needs review","Safety: 60/100 Review before install","Review repository, license, install command, and permission surface before production use."],"expected_agent_output":{"selected_skill":"rcosteira79-pdf-annotations (pdf-annotations)","install_command":"npx skills add rcosteira79/android-skills --skill pdf-annotations","risk_summary":"Needs review; Reviewed with permission notes; Review before production","verification_result":"Report the smallest successful task, files touched, warnings, and any missing setup."}},"outcome_feedback":{"endpoint":"https://www.openagentskill.com/api/agent/outcome","method":"POST","requires_resolve_event_id":true,"event_id_source":"Use install_receipt.outcome_feedback.event_id or feedback.event_id returned by /api/agent/resolve for the current task.","expected_outcomes":["success","failed","not_relevant","blocked_by_risk","setup_required"],"payload_template":{"event_id":"<install_receipt.outcome_feedback.event_id or feedback.event_id from /api/agent/resolve>","skill_slug":"rcosteira79-pdf-annotations","task":"Use pdf-annotations in an agent workflow","agent":"codex","outcome":"success","install_used":true,"risk_blocked":false,"setup_required":false,"task_success":true,"output_quality":4,"error_type":null,"human_review_required":false,"workspace":"sandbox","time_to_useful_ms":120000,"notes":"Report the smallest successful task, setup friction, files touched, and risk notes."}},"endpoints":{"web":"https://www.openagentskill.com/skills/rcosteira79-pdf-annotations","api":"https://www.openagentskill.com/api/agent/skills/rcosteira79-pdf-annotations","audit":"https://www.openagentskill.com/skills/rcosteira79-pdf-annotations/audit","eval":"https://www.openagentskill.com/api/agent/evals?slug=rcosteira79-pdf-annotations&task=Use%20pdf-annotations%20in%20an%20agent%20workflow&max_risk=medium","resolve":"https://www.openagentskill.com/api/agent/resolve?task=Use%20pdf-annotations%20in%20an%20agent%20workflow&agent=codex&max_risk=medium","receipt":"https://www.openagentskill.com/api/agent/receipt?task=Use%20pdf-annotations%20in%20an%20agent%20workflow&agent=codex&max_risk=medium&format=text","install":"https://www.openagentskill.com/api/skills/rcosteira79-pdf-annotations/install","manifest":"https://www.openagentskill.com/api/registry/manifest/rcosteira79-pdf-annotations"}},"machine_metadata":{"version":"openagentskill-agent-metadata-v2","skill":{"slug":"rcosteira79-pdf-annotations","name":"pdf-annotations","description":"Use when reading, adding, updating, or removing PDF annotations (highlight, free-text, stamp) or page objects (path/text/image) with Android's platform PDF APIs, or when saving those edits back to disk — the editing surface added in API 36.1 (PdfRenderer.Page) and SDK extension 18 (PdfRendererPreV.Page on API 31+), android.graphics.pdf.component. Covers the version gate, the open-edit-write workflow, and the id/render-flag/save contracts. Not for display-only PdfViewerFragment work, PdfDocument creation-from-scratch, form filling, or third-party PDF SDKs (iText, PDFBox, PSPDFKit).","category":"design-creative","url":"https://www.openagentskill.com/skills/rcosteira79-pdf-annotations","repository":"https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations","github_repo":"rcosteira79/android-skills"},"suited_tasks":["RAG and knowledge workflows","Claude Code teams","builders willing to evaluate younger projects","Chunk documents","Create embeddings","Retrieve and cite relevant passages","Read uploaded files","Extract structured fields"],"suited_agents":["Codex","Claude Code","Cursor","OpenAgentSkill CLI","CLI"],"install":{"command":"npx skills add rcosteira79/android-skills --skill pdf-annotations","ready":true,"targets":[{"id":"openagentskill-cli","label":"CLI","kind":"command","value":"npx --yes https://github.com/Leon-Drq/openagentskill/releases/download/cli-v0.3.0/openagentskill-0.3.0.tgz add rcosteira79-pdf-annotations"},{"id":"codex","label":"Codex","kind":"agent-prompt","value":"Install the \"pdf-annotations\" agent skill from https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations. Read its SKILL.md or equivalent instructions first, install only the files needed for this workspace, and summarize any required setup before using it. Skill purpose: Use when reading, adding, updating, or removing PDF annotations (highlight, free-text, stamp) or page objects (path/text/image) with Android's platform PDF APIs, or when saving those edits back to disk — the editing surface added in API 36.1 (PdfRenderer.Page) and SDK extension 18 (PdfRendererPreV.Page on API 31+), android.graphics.pdf.component. Covers the version gate, the open-edit-write workflow, and the id/render-flag/save contracts. Not for display-only PdfViewerFragment work, PdfDocument creation-from-scratch, form filling, or third-party PDF SDKs (iText, PDFBox, PSPDFKit). After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {\"event_id\":\"install_<unique-id>\",\"skill_slug\":\"rcosteira79-pdf-annotations\",\"task\":\"Install pdf-annotations\",\"agent\":\"codex\",\"outcome\":\"success\",\"install_used\":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes."},{"id":"claude-code","label":"Claude Code","kind":"agent-prompt","value":"Add \"pdf-annotations\" as a Claude Code skill from https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations. Inspect the skill instructions, place the reusable skill files in the appropriate local skills location for this project, and report the activation steps. Skill purpose: Use when reading, adding, updating, or removing PDF annotations (highlight, free-text, stamp) or page objects (path/text/image) with Android's platform PDF APIs, or when saving those edits back to disk — the editing surface added in API 36.1 (PdfRenderer.Page) and SDK extension 18 (PdfRendererPreV.Page on API 31+), android.graphics.pdf.component. Covers the version gate, the open-edit-write workflow, and the id/render-flag/save contracts. Not for display-only PdfViewerFragment work, PdfDocument creation-from-scratch, form filling, or third-party PDF SDKs (iText, PDFBox, PSPDFKit). After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {\"event_id\":\"install_<unique-id>\",\"skill_slug\":\"rcosteira79-pdf-annotations\",\"task\":\"Install pdf-annotations\",\"agent\":\"claude-code\",\"outcome\":\"success\",\"install_used\":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes."},{"id":"cursor","label":"Cursor","kind":"agent-prompt","value":"Turn \"pdf-annotations\" from https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations into a reusable Cursor project rule or agent instruction. Preserve the core workflow, adapt paths to this repo, and keep the rule scoped to tasks where it is relevant. Skill purpose: Use when reading, adding, updating, or removing PDF annotations (highlight, free-text, stamp) or page objects (path/text/image) with Android's platform PDF APIs, or when saving those edits back to disk — the editing surface added in API 36.1 (PdfRenderer.Page) and SDK extension 18 (PdfRendererPreV.Page on API 31+), android.graphics.pdf.component. Covers the version gate, the open-edit-write workflow, and the id/render-flag/save contracts. Not for display-only PdfViewerFragment work, PdfDocument creation-from-scratch, form filling, or third-party PDF SDKs (iText, PDFBox, PSPDFKit). After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {\"event_id\":\"install_<unique-id>\",\"skill_slug\":\"rcosteira79-pdf-annotations\",\"task\":\"Install pdf-annotations\",\"agent\":\"cursor\",\"outcome\":\"success\",\"install_used\":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes."}],"handoff_url":"https://www.openagentskill.com/api/skills/rcosteira79-pdf-annotations/install","manifest_url":"https://www.openagentskill.com/api/registry/manifest/rcosteira79-pdf-annotations"},"trust":{"score":77,"label":"Strong shortlist","version":"trust-score-v4","install_policy":"human_review_before_install","evidence":{"stars":"136 GitHub stars","repoActivity":"136 stars, 14 forks","lastPushed":"12d since push","license":"MIT","repository":"https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations","install":"npx skills add rcosteira79/android-skills --skill pdf-annotations","installSafety":"standard package or runtime install path","permissionSurface":"filesystem or document access, network or browser access","documentation":"Usable metadata, review docs","agentOutcomes":"No agent outcome data yet"},"outcome_evidence":{"total":0,"successes":0,"failures":0,"not_relevant":0,"success_rate":null,"recent_success_rate":null,"recent_failure_rate":null,"install_attempts":0,"install_success_rate":null,"risk_blocked":0,"setup_required":0,"avg_output_quality":null,"production_outcomes":0,"last_outcome_at":null,"label":"No agent outcome data yet"},"auto_install":{"allowed":false,"sandbox_required":true,"reason":"Human review or sandbox validation is required before automatic installation."},"best_for":["design-creative","agent-skill"],"known_risks":["Quality score needs review","Stars/forks activity: 136 stars, 14 forks; issue activity unavailable in current metadata"]},"agent_proven":{"version":"agent-proven-v1","score":0,"tier":"unproven","label":"Needs first agent run","summary":"No agent outcome reports yet. Use Resolve, run one narrow sandbox task, then report the result.","metrics":{"totalOutcomes":0,"successfulOutcomes":0,"failedOutcomes":0,"installAttempts":0,"installSuccessRate":null,"successRate":null,"recentSuccessRate":null,"recentFailureRate":null,"riskBlocked":0,"setupRequired":0,"notRelevant":0,"avgOutputQuality":null,"avgTimeToUsefulMs":null,"productionOutcomes":0,"humanReviewRequired":0,"uniqueAgents":0,"lastOutcomeAt":null},"signals":[],"penalties":["No real agent outcome evidence yet"]},"audit":{"score":80,"risk_level":"needs_review","risk_label":"Needs review","warnings":["Quality score needs review","Stars/forks activity: 136 stars, 14 forks; issue activity unavailable in current metadata"]},"safety_gate":{"tier":"reviewed","label":"Reviewed with permission notes","auto_install_policy":"review","auto_install_allowed":false,"human_review_required":true,"blocked":false,"recommended_action":"Require human approval before installing into a real workspace."},"quality":{"score":68,"label":"Promising"},"supply":{"track":"Coding and developer agents","scenario":"GitHub automation","maintenance":"12d since push","risk":"Needs review"},"alternative_skills":[],"do_not_use_when":["teams that need a vendor-supported SLA","high-compliance environments without internal security review","No OpenAgentSkill engagement data yet","Quality score needs review","Stars/forks activity: 136 stars, 14 forks; issue activity unavailable in current metadata","Production credentials, payments, or irreversible account changes without explicit human review","Sensitive private data before reviewing repository code, license, and permission surface","Automatic installation in a production workspace"],"agent_contract":{"task_input":"Use pdf-annotations in an agent workflow","recommended_action":"Require human approval before installing into a real workspace.","install_policy":"review","minimum_review_before_use":["Trust: 77/100 Strong shortlist","Audit: 80/100 Needs review","Safety: 60/100 Review before install","Review repository, license, install command, and permission surface before production use."],"expected_agent_output":{"selected_skill":"rcosteira79-pdf-annotations (pdf-annotations)","install_command":"npx skills add rcosteira79/android-skills --skill pdf-annotations","risk_summary":"Needs review; Reviewed with permission notes; Review before production","verification_result":"Report the smallest successful task, files touched, warnings, and any missing setup."}},"outcome_feedback":{"endpoint":"https://www.openagentskill.com/api/agent/outcome","method":"POST","requires_resolve_event_id":true,"event_id_source":"Use install_receipt.outcome_feedback.event_id or feedback.event_id returned by /api/agent/resolve for the current task.","expected_outcomes":["success","failed","not_relevant","blocked_by_risk","setup_required"],"payload_template":{"event_id":"<install_receipt.outcome_feedback.event_id or feedback.event_id from /api/agent/resolve>","skill_slug":"rcosteira79-pdf-annotations","task":"Use pdf-annotations in an agent workflow","agent":"codex","outcome":"success","install_used":true,"risk_blocked":false,"setup_required":false,"task_success":true,"output_quality":4,"error_type":null,"human_review_required":false,"workspace":"sandbox","time_to_useful_ms":120000,"notes":"Report the smallest successful task, setup friction, files touched, and risk notes."}},"endpoints":{"web":"https://www.openagentskill.com/skills/rcosteira79-pdf-annotations","api":"https://www.openagentskill.com/api/agent/skills/rcosteira79-pdf-annotations","audit":"https://www.openagentskill.com/skills/rcosteira79-pdf-annotations/audit","eval":"https://www.openagentskill.com/api/agent/evals?slug=rcosteira79-pdf-annotations&task=Use%20pdf-annotations%20in%20an%20agent%20workflow&max_risk=medium","resolve":"https://www.openagentskill.com/api/agent/resolve?task=Use%20pdf-annotations%20in%20an%20agent%20workflow&agent=codex&max_risk=medium","receipt":"https://www.openagentskill.com/api/agent/receipt?task=Use%20pdf-annotations%20in%20an%20agent%20workflow&agent=codex&max_risk=medium&format=text","install":"https://www.openagentskill.com/api/skills/rcosteira79-pdf-annotations/install","manifest":"https://www.openagentskill.com/api/registry/manifest/rcosteira79-pdf-annotations"}},"supply_profile":{"track":{"slug":"coding","label":"Coding and developer agents","shortLabel":"Coding","description":"Code review, repo analysis, testing, CI, GitHub, DevOps, and developer workflow skills."},"scenario":{"label":"GitHub automation","description":"I need my agent to triage GitHub issues, review pull requests, and summarize repository changes.","useCases":[{"slug":"rag-knowledge","title":"RAG and knowledge"},{"slug":"document-processing","title":"Document processing"},{"slug":"browser-automation","title":"Browser automation"}]},"applicableAgents":["Claude Code","CLI","Codex","Cursor"],"install":{"ready":true,"command":"npx skills add rcosteira79/android-skills --skill pdf-annotations","primaryTarget":"CLI","targetCount":4},"githubQuality":{"stars":136,"starsLabel":"136","forks":14,"license":"MIT","qualityScore":68,"trustScore":77,"auditScore":80},"maintenance":{"status":"fresh","label":"12d since push","daysSincePush":12,"lastPushedAt":"2026-08-25T09:43:59+00:00"},"risk":{"level":"needs_review","label":"Needs review","requiresReview":true,"notes":["Quality score needs review","Stars/forks activity: 136 stars, 14 forks; issue activity unavailable in current metadata","Needs review"]},"coverageTags":["Coding","GitHub automation","design-creative","agent-skill"]},"audit":{"audit_score":80,"risk_level":"needs_review","risk_label":"Needs review","quality_score":68,"trust_score":77,"maintenance_score":100,"security_score":83,"install_score":92,"warnings":["Quality score needs review","Stars/forks activity: 136 stars, 14 forks; issue activity unavailable in current metadata"]},"quality_signals":{"model":"v2","star_score":14.96,"usage_score":0,"review_score":5.1,"metadata_score":3,"freshness_score":15},"platforms":["Claude Code"],"use_cases":[{"slug":"rag-knowledge","title":"RAG and knowledge","url":"https://www.openagentskill.com/use-cases/rag-knowledge"},{"slug":"document-processing","title":"Document processing","url":"https://www.openagentskill.com/use-cases/document-processing"},{"slug":"browser-automation","title":"Browser automation","url":"https://www.openagentskill.com/use-cases/browser-automation"},{"slug":"github-automation","title":"GitHub automation","url":"https://www.openagentskill.com/use-cases/github-automation"}],"stacks":[{"slug":"rag-knowledge-base","title":"RAG knowledge base","url":"https://www.openagentskill.com/collections/rag-knowledge-base"},{"slug":"browser-qa-agent","title":"Browser QA agent","url":"https://www.openagentskill.com/collections/browser-qa-agent"},{"slug":"frontend-product-ui","title":"Frontend and UI","url":"https://www.openagentskill.com/collections/frontend-product-ui"}],"install":"npx skills add rcosteira79/android-skills --skill pdf-annotations","install_targets":[{"id":"openagentskill-cli","label":"CLI","title":"OpenAgentSkill CLI","kind":"command","value":"npx --yes https://github.com/Leon-Drq/openagentskill/releases/download/cli-v0.3.0/openagentskill-0.3.0.tgz add rcosteira79-pdf-annotations","description":"Resolve policy, run the source installer safely, and report a verified install receipt.","copyLabel":"Copy command"},{"id":"codex","label":"Codex","title":"Codex install prompt","kind":"agent-prompt","value":"Install the \"pdf-annotations\" agent skill from https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations. Read its SKILL.md or equivalent instructions first, install only the files needed for this workspace, and summarize any required setup before using it. Skill purpose: Use when reading, adding, updating, or removing PDF annotations (highlight, free-text, stamp) or page objects (path/text/image) with Android's platform PDF APIs, or when saving those edits back to disk — the editing surface added in API 36.1 (PdfRenderer.Page) and SDK extension 18 (PdfRendererPreV.Page on API 31+), android.graphics.pdf.component. Covers the version gate, the open-edit-write workflow, and the id/render-flag/save contracts. Not for display-only PdfViewerFragment work, PdfDocument creation-from-scratch, form filling, or third-party PDF SDKs (iText, PDFBox, PSPDFKit). After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {\"event_id\":\"install_<unique-id>\",\"skill_slug\":\"rcosteira79-pdf-annotations\",\"task\":\"Install pdf-annotations\",\"agent\":\"codex\",\"outcome\":\"success\",\"install_used\":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes.","description":"Give Codex a repo-aware install prompt when the skill is not available through a local CLI.","copyLabel":"Copy prompt"},{"id":"claude-code","label":"Claude Code","title":"Claude Code skill prompt","kind":"agent-prompt","value":"Add \"pdf-annotations\" as a Claude Code skill from https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations. Inspect the skill instructions, place the reusable skill files in the appropriate local skills location for this project, and report the activation steps. Skill purpose: Use when reading, adding, updating, or removing PDF annotations (highlight, free-text, stamp) or page objects (path/text/image) with Android's platform PDF APIs, or when saving those edits back to disk — the editing surface added in API 36.1 (PdfRenderer.Page) and SDK extension 18 (PdfRendererPreV.Page on API 31+), android.graphics.pdf.component. Covers the version gate, the open-edit-write workflow, and the id/render-flag/save contracts. Not for display-only PdfViewerFragment work, PdfDocument creation-from-scratch, form filling, or third-party PDF SDKs (iText, PDFBox, PSPDFKit). After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {\"event_id\":\"install_<unique-id>\",\"skill_slug\":\"rcosteira79-pdf-annotations\",\"task\":\"Install pdf-annotations\",\"agent\":\"claude-code\",\"outcome\":\"success\",\"install_used\":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes.","description":"Use this prompt to ask Claude Code to add the skill and explain the local activation steps.","copyLabel":"Copy prompt"},{"id":"cursor","label":"Cursor","title":"Cursor rule prompt","kind":"agent-prompt","value":"Turn \"pdf-annotations\" from https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations into a reusable Cursor project rule or agent instruction. Preserve the core workflow, adapt paths to this repo, and keep the rule scoped to tasks where it is relevant. Skill purpose: Use when reading, adding, updating, or removing PDF annotations (highlight, free-text, stamp) or page objects (path/text/image) with Android's platform PDF APIs, or when saving those edits back to disk — the editing surface added in API 36.1 (PdfRenderer.Page) and SDK extension 18 (PdfRendererPreV.Page on API 31+), android.graphics.pdf.component. Covers the version gate, the open-edit-write workflow, and the id/render-flag/save contracts. Not for display-only PdfViewerFragment work, PdfDocument creation-from-scratch, form filling, or third-party PDF SDKs (iText, PDFBox, PSPDFKit). After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {\"event_id\":\"install_<unique-id>\",\"skill_slug\":\"rcosteira79-pdf-annotations\",\"task\":\"Install pdf-annotations\",\"agent\":\"cursor\",\"outcome\":\"success\",\"install_used\":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes.","description":"Use this when installing as Cursor project rules or reusable agent instructions.","copyLabel":"Copy prompt"}],"repository":"https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations","github_repo":"rcosteira79/android-skills","version":"1.0.0","license":"MIT","urls":{"web":"https://www.openagentskill.com/skills/rcosteira79-pdf-annotations","repository":"https://github.com/rcosteira79/android-skills/tree/main/plugins/android-skills/skills/pdf-annotations","api":"/api/agent/skills/rcosteira79-pdf-annotations","install_api":"/api/skills/rcosteira79-pdf-annotations/install"},"meta":{"created_at":"2026-09-04T12:55:20.579283+00:00","updated_at":"2026-09-04T12:55:20.706398+00:00","agent_friendly":true}}