Skip to content

Guide · Agent skill

How to use the Android Ink Drawing Builder agent skill

Updated · written with AI from the project's own documentation and checked against our catalogue data

The ink-app-builder skill is a set of instructions and reference files that teaches an AI coding agent to add freehand drawing to an Android app using Google's Jetpack Ink library (androidx.ink) and Jetpack Compose. It is for Android developers who want an agent to write working stylus or touch drawing code, not just describe it. After this guide you will know how to install the skill, how to ask for drawing features in plain language, and what the agent will set up for you.

Android Ink Drawing Builderandroid/skills · Apache-2.0

Quick start

  1. 1Download and unzip the skill. Download the ink-app-builder ZIP from this page and unzip it into ~/.claude/skills/ or your project's .claude/skills/ folder.
  2. 2Or upload it in the Claude apps. In the Claude apps, open Settings, go to Capabilities, then Skills, and upload the skill.
  3. 3Confirm your project meets the requirements. Check that the project uses Jetpack Compose, has minSdk 26 or higher, and has gradle/libs.versions.toml with KSP and Room set up.
  4. 4Ask for a drawing feature. Describe the feature in plain language, such as adding stylus drawing with a pressure pen to a Compose screen.
  5. 5Review the build file changes. Approve the agent's changes to gradle/libs.versions.toml and app/build.gradle.kts, and confirm all androidx.ink modules share one version.
  6. 6Build and test on a device. Build the app, then draw with a finger or stylus to check the wet ink, the dry ink after the stroke ends, and the eraser and undo.

What is an agent skill and what does this one do?

An agent skill is a folder of instructions and reference files that an AI agent loads when a task matches it. This skill, named ink-app-builder, is written for Android projects that use Jetpack Compose. When it is active, the agent knows how to add inking to your app with the Ink API.

The skill covers a two-phase drawing model. Wet ink is the real-time rendering while the finger or stylus is moving, handled by the InProgressStrokes composable. Dry ink is the finished, immutable Stroke object that your app renders with CanvasStrokeRenderer after the stroke ends.

  • Sets up Gradle dependencies in gradle/libs.versions.toml and app/build.gradle.kts
  • Builds a Compose drawing surface with live wet ink and saved dry ink
  • Configures stock brushes such as a pressure pen, marker and highlighter
  • Adds erasing, linear undo and redo, and saving strokes with Room

Install the ink-app-builder skill

Download the ZIP for this skill from this page and unzip it. To make it available to Claude across your projects, place the unzipped folder in ~/.claude/skills/. To limit it to one project, place it in that project's .claude/skills/ folder.

You can also upload the skill in the Claude apps. Open Settings, go to Capabilities, then Skills, and upload it there.

  • Personal use: ~/.claude/skills/
  • Single project: .claude/skills/ inside the project folder
  • Claude apps: Settings → Capabilities → Skills

Check that your project meets the requirements

The skill assumes an Android project that already uses Jetpack Compose. The Ink API requires minSdk 26, which is Android 8.0 (API level 26) or higher. Your project also needs a Gradle version catalog at gradle/libs.versions.toml, KSP for Room, the Kotlin serialization plugin, and the Room libraries for persistence. The build must be able to reach the Google Maven repository to download the androidx.ink libraries.

All androidx.ink modules must use the same version in the version catalog. The skill asks for your permission before it changes project build files.

  • Jetpack Compose Android project with minSdk 26 or higher
  • gradle/libs.versions.toml version catalog
  • KSP and Room for persistence
  • Kotlin serialization plugin
  • Access to the Google Maven repository

Trigger the skill with a natural request

You do not need special syntax. Describe the drawing feature in plain words that mention Android, Compose or the ink part you need, and the agent will match the request to this skill. The skill's description lists the topics it handles: stylus or touch drawing surfaces, wet and dry ink rendering, stock brushes, geometry-based erasing, undo and redo, and stroke persistence with Room.

Be specific about what you want built. Naming the brush, the storage or the interaction makes the result more useful.

  • "Add stylus drawing to my Compose note screen with a pressure pen."
  • "Add a highlighter mode and an eraser to my Compose drawing canvas."
  • "Add undo and redo to my Android ink surface."
  • "Save my drawn strokes to Room and reload them when the screen opens."

Know what the skill does not cover

The skill is for Compose apps. It explicitly does not cover View-based (XML) inking screens. It also does not cover custom brush design. For custom BrushFamily creation, custom tip shapes or behavior node graphs, the skill points you to a separate skill named ink-custom-brush-builder. If you ask for custom brush work here, the generated code may be wrong.

Brush choice also depends on version. The skill suggests version 1.0.0 for production apps that rely on StockBrushes or pre-serialized .brush assets, and 1.1.0-alpha03 or higher when your code builds custom brushes in Kotlin.

  • Not for View-based (XML) drawing screens
  • Not for custom tip shapes or behavior graphs (use ink-custom-brush-builder)

Safety notes: scripts and network

This skill does not run scripts and does not use the network by itself. It gives the agent instructions and reference files. The agent still writes code and build file edits into your project, so review those changes before you build. Because the build downloads androidx.ink libraries from the Google Maven repository, your build needs network access for that step.

Check the Apache-2.0 license terms before you reuse the skill's content. The skill's license is stated as complete terms in LICENSE.txt.

  • Runs scripts: no
  • Uses network: no (the Gradle build itself downloads the Ink libraries)
  • Review build file and source edits before committing

What people use it for

  • Add a pressure-sensitive pen to a Compose note-taking screen
  • Build a PDF or photo annotation layer with a highlighter and eraser
  • Add undo and redo history to a sketching screen
  • Save drawn strokes to a Room database and reload them on launch
  • Create a low-latency handwriting area for a stylus-enabled Android tablet app

Frequently asked questions

Is the ink-app-builder skill free?

The skill is published under the Apache-2.0 license, and its source is in the android/skills repository. The source page names the license as Apache-2.0 and points to LICENSE.txt for the complete terms.

What does an agent skill need to run?

This skill runs no scripts and uses no network by itself. Your Android project needs Jetpack Compose, minSdk 26 or higher, a Gradle version catalog, KSP and Room for persistence, and access to the Google Maven repository for the androidx.ink libraries.

Where do I put the skill so Claude can use it?

Unzip the downloaded ZIP into ~/.claude/skills/ for all your projects, or into the project's .claude/skills/ folder for one project. You can also upload it in the Claude apps under Settings, then Capabilities, then Skills.

Does this skill work for View-based XML drawing screens?

No. The skill states it does not cover View-based (XML) inking. It is written for Jetpack Compose apps.

Can it create custom brushes with custom tip shapes?

Not in this skill. For custom BrushFamily creation, custom tip shapes or behavior node graphs, the skill refers you to the separate ink-custom-brush-builder skill. Code for those tasks generated by this skill may be wrong.

What minimum Android version does the Ink API support?

The Ink API requires minSdk 26, which corresponds to Android 8.0 (API level 26) and higher.

What is the difference between wet ink and dry ink?

Wet ink is the low-latency rendering shown while the user is still drawing, handled by InProgressStrokes. Dry ink is the finished Stroke object that the app renders with CanvasStrokeRenderer once the stroke is complete.

New agent skills, repos and AI tools — every week

The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.

Our verdict

Use this skill if you are building a Jetpack Compose Android app that needs stylus or touch drawing, annotation or note-taking with low latency, and you want an agent to write the working code, dependencies and Room storage. Pick something else if your screen is View-based XML, if you need custom brush design, which is handled by ink-custom-brush-builder, or if your project cannot use minSdk 26 or higher.

Download the skill