Use modern permission requests, Activity Result APIs, and capability-gated UX in Android flows.
55
45%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./skills/android-permissions-activity-results/SKILL.mdQuality
Discovery
32%Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.
The description identifies a specific Android development niche (permissions and Activity Result APIs) but is too terse and lacks explicit trigger guidance. It reads more like a feature list fragment than a complete skill description, missing both a 'Use when...' clause and natural user-facing trigger terms that would help Claude reliably select it.
Suggestions
Add an explicit 'Use when...' clause, e.g., 'Use when the user needs to implement runtime permissions, handle permission results, migrate from onActivityResult to Activity Result APIs, or conditionally show UI based on granted permissions in Android.'
Include more natural trigger terms users would say, such as 'runtime permissions', 'requestPermissions', 'registerForActivityResult', 'permission denied handling', 'camera permission', 'location permission', 'dangerous permissions'.
Expand the 'what' portion with concrete actions, e.g., 'Implements runtime permission requests, migrates deprecated onActivityResult to modern Activity Result APIs, handles permission denial and rationale dialogs, and gates UI features based on granted capabilities.'
| Dimension | Reasoning | Score |
|---|---|---|
Specificity | Names the domain (Android) and some specific actions/concepts ('permission requests', 'Activity Result APIs', 'capability-gated UX'), but doesn't list concrete tasks like 'request runtime permissions', 'handle permission denial gracefully', or 'migrate from deprecated onActivityResult'. | 2 / 3 |
Completeness | Describes what it does at a high level but completely lacks a 'Use when...' clause or any explicit trigger guidance for when Claude should select this skill. Per rubric guidelines, a missing 'Use when...' clause caps completeness at 2, and the 'what' is also only partially described, warranting a 1. | 1 / 3 |
Trigger Term Quality | Includes some relevant keywords like 'permission requests', 'Activity Result APIs', and 'Android', but misses common natural terms users would say such as 'runtime permissions', 'requestPermissions', 'onActivityResult', 'registerForActivityResult', 'permission dialog', or 'dangerous permissions'. | 2 / 3 |
Distinctiveness Conflict Risk | The combination of 'permissions', 'Activity Result APIs', and 'Android' narrows the scope somewhat, but 'capability-gated UX' is vague and could overlap with general Android UI skills or broader mobile development skills. | 2 / 3 |
Total | 7 / 12 Passed |
Implementation
57%Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
This is a well-structured instructional skill that covers the Android permissions domain comprehensively with good progressive disclosure and clear anti-patterns. Its main weakness is the lack of concrete, executable code examples—the examples section only contains grep commands rather than actual Kotlin/Compose implementation patterns. The workflow is reasonable but could benefit from more explicit validation checkpoints given the complexity of permission state management.
Suggestions
Add at least one executable Kotlin/Compose code example showing a complete permission request flow with Activity Result API (e.g., rememberLauncherForActivityResult with RequestPermission contract and state handling).
Include a concrete code snippet demonstrating the full permission state space handling (granted, denied, permanently denied, limited access) rather than just listing the states.
Add explicit validation checkpoints in the workflow, such as 'After step 3, verify the permission state covers all branches by checking: shouldShowRequestPermissionRationale() return value, isGranted status, and limited-access flags.'
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The content is reasonably efficient but includes some sections that are somewhat verbose for what they convey. The 'When To Use' section restates things Claude could infer, and some guardrails/anti-patterns overlap. However, it avoids explaining basic Android concepts. | 2 / 3 |
Actionability | The skill provides grep commands as examples and a clear workflow, but lacks executable code examples showing actual Activity Result API usage, permission request implementation, or state handling. The guidance is directional rather than copy-paste ready—it tells Claude what to do conceptually but not how with concrete Kotlin/Compose code. | 2 / 3 |
Workflow Clarity | The 5-step workflow is logically sequenced and step 5 mentions re-checking and validation, but the validation checkpoints are implicit rather than explicit. For a domain involving state machines (granted/denied/limited) and lifecycle-sensitive operations, the workflow lacks concrete feedback loops or error recovery steps beyond 'validate rotation, process death, and denial recovery.' | 2 / 3 |
Progressive Disclosure | The skill effectively uses progressive disclosure by keeping the main file as an overview and pointing to `references/patterns.md` and `references/scenarios.md` for detailed content. Handoff skills are clearly listed, and references are one level deep with clear signaling. | 3 / 3 |
Total | 9 / 12 Passed |
Validation
90%Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.
Validation — 10 / 11 Passed
Validation for skill structure
| Criteria | Description | Result |
|---|---|---|
metadata_field | 'metadata' should map string keys to string values | Warning |
Total | 10 / 11 Passed | |
c5bf673
Table of Contents
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.