Agent skill

Android Migrate Payment Method V6

by Adyen in Adyen/adyen-android

Plan and execute the migration of a v5 payment method to the v6 component architecture.

MITAuto-check passedDevelopment

Install Android Migrate Payment Method V6

skills CLI
$ npx skills add Adyen/adyen-android --skill android-migrate-payment-method-v6 -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Adyen/adyen-android android-migrate-payment-method-v6 --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Adyen/adyen-android.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/android-migrate-payment-method-v6 .claude/skills/android-migrate-payment-method-v6 && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
android-migrate-payment-method-v6
GitHub stars
149
Token cost
~3.5k tokens
SKILL.md length
1,894 words
Files
1
Skills in repo
9
Repo updated
First seen
Licence
MIT

At a glance

Plan and execute the migration of a v5 payment method to the v6 component architecture.

  • Works in 12 steps: Branch (and chain) → Preserve the v5 implementation (old/… → Core payment details + serializer… → …
  • Moving an existing payment method module to v6
  • SKILL.md covers Usage, Find your references, The v6 target architecture and Before you start, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Android Migrate Payment Method V6 is an agent skill from Adyen/adyen-android. Plan and execute the migration of a v5 payment method to the v6 component architecture. Use when moving an existing payment method module to v6.

Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development. It works with Android. The repository describes itself as: Adyen Android Drop-in and Components. The licence is MIT.

When your agent uses it

  • Moving an existing payment method module to v6

Example prompts

  • “/android-migrate-payment-method-v6”

Workflow steps

12 steps, taken from the step headings in SKILL.md.

  1. Branch (and chain)
  2. Preserve the v5 implementation (old/ package)
  3. Core payment details + serializer registration
  4. Params + mapper (optional)
  5. State layer
  6. View-state layer
  7. View layer (Compose)
  8. Component + factory + registration
  9. Stored payment method variant (if supported)
  10. Public configuration / DSL
  11. Example-app wiring
  12. Final verification & PR

What it can do on your machine

Read from SKILL.md and the folder at commit 8ec0094. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Android Migrate Payment Method V6 loads about 3.5k tokens when it runs. Until then it costs about 45 tokens; SKILL.md has 1,894 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~45
When it runs · the whole SKILL.md, loaded when a task matches
~3.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Adyen/adyen-android at commit 8ec0094, republished under its MIT licence (© Adyen). 1,894 words, ~3,471 tokens.

Download SKILL.mdSave it as .claude/skills/android-migrate-payment-method-v6/SKILL.md (or your agent's skills folder).
name
android-migrate-payment-method-v6
description
Plan and execute the migration of a v5 payment method to the v6 component architecture. Use when moving an existing payment method module to v6.

android-migrate-payment-method-v6

Migrate a v5 payment method to the v6 architecture. This skill gives the order of work and the rules that are easy to miss. The shape of the code comes from the payment methods that are already migrated, which are always more current than any description here — read them rather than relying on this file for names or signatures.

Usage

Invoke this skill when migrating an existing v5 payment method (e.g. ideal, sepa, twint) to v6. The input is the payment method / module name. The skill is method-agnostic: every payment method differs, so treat the steps as a checklist to adapt, not a rigid template.

Throughout this skill, X stands for the payment method (e.g. Ideal), and x/module for its module.

Find your references

No single migrated method covers every capability, and the set of migrated methods keeps growing. Find them before planning: every v6 payment method registers its factory with PaymentMethodProvider.register from an initializer, so searching for that call lists them all.

For each capability your method needs — no input fields, input fields, a stored variant, a secondary screen, an external SDK handoff — pick the closest migrated method and read it end to end, tests included. Match what it does rather than inventing a second way of doing the same thing.

For methods with input fields, also read the form state ADR under ADR/. It records how forms are modelled and why; the migrated form components show how it is done today.

The v6 target architecture

Each v6 payment method is a small set of collaborators wired by a factory:

LayerNamingResponsibility
Core detailsXDetails (core)The serializable paymentMethod body for /payments.
Params (optional)XComponentParams + XComponentParamsMapperConfig derived from checkout params, the payment method and the merchant configuration. Skip it when values can be passed straight through.
StateXComponentState, XIntent and their factory, reducer, validator and post processorImmutable state, changed only through intents.
State → paymentXPaymentComponentStateMaps component state to the payment request data.
View stateXViewState + XViewStateProducerMaps component state to what the UI renders.
ViewXContent (Compose)Effects and flow collection in XContent, pure UI in private composables with previews.
ComponentXComponentOwns the state flow and exposes the method to Checkout.
FactoryXFactoryBuilds the component from a PaymentMethod.
RegistrationXInitializer + module AndroidManifest.xmlRegisters the factory for each supported type.
Public APIXConfiguration + CheckoutConfiguration DSLThe only public surface; everything else is internal.
Stored variant (optional)StoredX…A parallel stack for stored payments, built by the same factory.
Secondary screen (optional)—Pickers and sheets shown outside the main content.

Before you start

  1. Read AGENTS.md. This skill defers to it for the working agreement and testing rules, and to the skills it routes to: android-public-api-change (visibility, sealed vs abstract), android-ui-resources (styles and strings), and android-add-module (external SDK handling).
  2. Create a plan document first. Per AGENTS.md, write <METHOD>_V6_MIGRATION_PLAN.md, get it approved, and do not start coding until then. Keep it updated as phases complete. Do not commit the plan file.
  3. Inventory the v5 sources. List the existing v5 files (delegate, views, provider, configuration, tests) and map each onto the v6 collaborators above. Note what already exists — some methods are partially migrated — so you don't recreate it.
  4. Flag method-specific concerns in the plan: external SDK handoff (compileOnly + runCompileOnly/checkCompileOnly + ProGuard dontwarn), availability pre-checks, action/redirect handling, and any events that originate outside composition and have to reach the UI. Also decide which optional capabilities apply: params/mapper, input fields, a stored variant, a secondary screen.
  5. Invoke architecture-guardian when a phase introduces or changes public API, new abstractions, or module boundaries.
  6. Agree the commit/PR cadence with the developer. Commits stay small (one per phase), but PRs need not map 1:1 to commits. Decide upfront whether to open a PR per phase or — the default — per cohesive group of phases (e.g. old/ move; state + view-state + view; component + factory + registration). Cadence is a reviewer preference, so confirm it during planning.

Working rhythm (applies to every step)

Follow this loop for each phase below:

  1. Tests first. Write/move the tests for the layer before (or alongside) the implementation, using the given-when-then style. Every phase that adds a class adds its unit tests; the v5 tests for any code you move go with it.
  2. Implement the layer, defaulting to internal visibility.
  3. Make it green, then run the android-check skill scoped to the touched modules, plus core when core changed.
  4. Commit that single phase via the android-commit skill (one logical change per commit, COSDK-XXXX ticket). Never bundle multiple phases.

Steps

1. Branch (and chain)

Use the android-branch-create skill to create a chore/ branch (base main during v6). For a multi-phase migration, build a stack with one draft PR per layer so reviewers can review incrementally, at the cadence agreed with the developer (see Before you start). Keep the same prefix and extend the name (e.g. chore/v6-ideal-state, chore/v6-ideal-view). The phase order below is already a valid dependency order, so it maps directly onto stack layers.

2. Preserve the v5 implementation (old/ package)
  • Do this before adding any v6 code, so v5 keeps working in parallel and all new v6 code lands in the clean namespace. Move the existing v5 delegate/views/provider/configuration into an old/ package. Move the matching v5 tests into the corresponding old/ test packages in the same commit.
  • Gate: :module:check. Commit.
3. Core payment details + serializer registration
  • Add XDetails : PaymentMethodDetails in core if it does not already exist, with a PaymentMethodTypes constant for each supported type.
  • Register every type in PaymentMethodDetails.getChildSerializer. Skipping this falls back to GenericDetails and fails at runtime with a ClassCastException.
  • Tests: serialize XDetails through the PaymentMethodDetails serializer for every supported type and assert the fields survive — that is exactly the regression the fallback causes.
  • Gate: :core:test; :core:apiCheck (XDetails is public — follow android-public-api-change before running apiDump). Commit.
4. Params + mapper (optional)
  • Skip this phase if the method needs no derived config — pass the values the state factory needs straight through.
  • Otherwise add the params and their mapper.
  • Tests: mapper unit tests covering defaults and overrides.
  • Gate: :module:test. Commit.
5. State layer
  • Add the component state, intents, state factory, reducer, validator, and the mapping to the payment component state.
  • For methods with input fields, follow the form model the migrated form components use:
    • Derive an ordered form from the component state. The form alone decides which fields are shown, in what order, whether they are valid, where focus goes and which keyboard action each field gets. Nothing else — reducer, view state or UI — keeps its own copy of any of these.
    • Field state holds the value and the error, not focus. Focus decisions need validation to have run, so they belong to the post processor, which is the only writer of the focus request. The reducer only sets values.
    • An invalid submit shows every error and focuses the first invalid field instead of submitting.
  • Tests: reducer (per intent), validator (valid/invalid), post processor (per focus decision), and the state→payment mapping.
  • Gate: :module:test. Commit.
Show full SKILL.md (736 more words)Show less
6. View-state layer
  • Add the view state and its producer. Localize validation errors with the shopper locale.
  • For methods with input fields, produce one renderable element per form element, in form order, so the UI shows exactly what the form contains.
  • Tests: producer tests for each meaningful state → view-state mapping.
  • Gate: :module:test. Commit.
7. View layer (Compose)
  • Add XContent: a wrapper that collects the view-state flow and hosts effects/launchers, delegating to a private pure-UI composable.
  • Reuse the shared composables from the ui module — scaffold, pay button, text fields, pickers. They already implement focus handling, keyboard actions and accessibility semantics; do not reimplement any of it.
  • For methods with input fields:
    • Render the elements in a loop keyed by element id, so focus survives fields appearing, disappearing or moving.
    • Give every text field its Autofill content type, or explicitly none when no type describes the field.
  • If the method has a secondary screen, add its secondary content composable, following the method that already has one.
  • Add @Preview composables for the meaningful UI cases, not just one happy path — e.g. default/empty, loading, validation error, available vs unavailable, and any method-specific variants (light/dark via uiMode, RTL, different styles). Previews take the view state (or a small UI model) directly so each case is rendered in isolation.
  • Follow the android-ui-resources skill and other payment methods for styles and strings.
  • Tests: logic/UI tests where applicable. Focus cannot be tested on the JVM, so check focus order, keyboard actions, Autofill and screen reader output on a device.
  • Gate: :module:check. Commit.
8. Component + factory + registration
  • Add the component, wiring the state flow with every state collaborator from step 5, and deriving the view state from it. For input methods, submit() validates first and highlights errors instead of submitting when the state is invalid.
  • If the method needs a secondary screen, implement the secondary screen contract the way the existing method does.
  • Wire analytics so every event that fired on v5 still fires (submit, errors, render where applicable).
  • Add the factory.
  • Add a @Keep initializer that registers the factory for each supported type, and wire it into the module AndroidManifest.xml under the androidx-startup InitializationProvider.
  • Tests: component tests like those of other components — loading transitions, validity/availability, secondary-screen events, and error handling.
  • Gate: :module:check; :module:apiCheck. Commit.
9. Stored payment method variant (if supported)
  • Add a parallel stored stack — component, state collaborators, view state and content — shaped like the regular one.
  • Make the single factory implement both the regular and the stored factory interfaces. Registration then covers both; no extra registration is needed.
  • If necessary create the UI for the stored variant.
  • Tests: stored component tests (e.g. security-code input where applicable, submit, loading).
  • Gate: :module:check; :module:apiCheck. Commit.
10. Public configuration / DSL
  • Add/confirm the public XConfiguration and its CheckoutConfiguration DSL extension. Everything else stays internal or @RestrictTo(LIBRARY_GROUP). Prefer abstract classes over sealed for merchant-facing when safety (see the android-public-api-change skill).
  • Gate: if the public API changed intentionally, run :module:apiDump and commit the .api files. Commit.
11. Example-app wiring
  • Add the method to the v6 example flow: the supported-types list and the DSL config, plus a host Activity/screen if needed.
  • Verify on a device/emulator (real payment path).
  • Commit.
12. Final verification & PR
  • Run android-check for the module and :core (compile, lint, unit tests, apiCheck).
  • Open or finalize the draft PR(s) via the android-pr-create skill, following the cadence agreed during planning (earlier phase groups may already have open PRs). Use a checklist covering: serializer registration, tests per layer, v5 preserved under old/, public API reviewed, styles/strings, stored variant + secondary screen (if applicable), example wiring, and the device checks from step 7.

Important

  • Plan first, code after approval. No implementation before the plan document is approved.
  • The migrated methods are the specification. When this skill and the code disagree, the code wins — follow it, and update this skill.
  • Tests are part of every step — created for new layers, moved with relocated v5 code. Never weaken or delete tests to make a phase pass.
  • Small commits; PRs at an agreed cadence. One logical change per commit via android-commit. When review feedback lands on a lower layer, fix it on that branch and rebase the layers above.
  • Don't skip serializer registration in PaymentMethodDetails.getChildSerializer.
  • Default to internal. Only the configuration/DSL is public. Discuss any breaking change before proceeding.
  • Adapt per method. Confirm which collaborators and optional capabilities — params/mapper, input fields, stored variant, secondary screen — your method actually needs rather than copying all of them.

© Adyen, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/android-migrate-payment-method-v6 of Adyen/adyen-android.

Open the folder on GitHubat commit 8ec0094

Compare with similar skills

Android Migrate Payment Method V6 next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Android Migrate Payment Method V6 compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Android Migrate Payment Method V6 this skillAdyen/adyen-android149—~3.5kAutomated safety check: PassMIT
Android UI Visual Reviewpermissionlesstech/bitchat-android7.7k—~2.6kAutomated safety check: PassGPL-3.0
Improve Codebase Architectureywwynm/EverythingDone14415 repos~1.3kAutomated safety check: PassGPL-3.0
Commit PRsamuelclay/NewsBlur7.6k—~4.1kAutomated safety check: PassMIT
Find My Flagsandroidx/androidx6.1k—~664Automated safety check: PassApache-2.0
jscpd Code Migration Trackerkucherenko/jscpd6.3k—~5kAutomated safety check: PassMIT

Similar skills

  • Android UI Visual Review

    permissionlesstech/bitchat-android

    Analyze an Android pull request, branch, commit, or patch for user-visible changes and produce reproducible before/after screenshots from isolated builds.

    7.7k GitHub stars~2.6k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Improve Codebase Architecture

    ywwynm/EverythingDone

    Find deepening opportunities in a codebase, informed by the domain language in CONTEXT.md and the decisions in docs/adr/.

    144 GitHub starsUsed in 15 repos~1.3k tokens
    DevelopmentAuto-check passed
  • Commit PR

    samuelclay/NewsBlur

    A skill your agent uses when the user runs /commit-pr, says "commit and push", "open a PR", "ship this", asks to update an existing PR with new changes, or asks to resolve PR review comments in the…

    7.6k GitHub stars~4.1k tokensUpdated today
    DevelopmentAuto-check passed
  • Find My Flags

    androidx/androidx

    A skill your agent uses to find Compose feature flags introduced by a specific git user or email and map them to the library version in which they were added.

    6.1k GitHub stars~664 tokensUpdated today
    DevelopmentAuto-check passed
  • Measures a code port between languages or frameworks with jscpd's function-level comparison, porting tests before code and tracking what is left unmatched.

    6.3k GitHub stars~5k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Compares two folders function by function with jscpd --compare, across languages if needed, and explains which functions match and which have no counterpart.

    6.3k GitHub stars~3.2k tokensUpdated yesterday
    DevelopmentAuto-check passed

More from Adyen/adyen-android

All 9 skills in this repo
  • Android Add Dependency

    Adyen/adyen-android

    Add, remove or update an external dependency in the SDK. An agent skill from Adyen/adyen-android.

    149 GitHub stars~2.6k tokensUpdated yesterday
    Auto-check passed
  • Android Add Module

    Adyen/adyen-android

    Add a new Gradle module and wire in optional external SDKs. An agent skill from Adyen/adyen-android.

    149 GitHub stars~988 tokensUpdated yesterday
    Auto-check passed
  • Android Branch Create

    Adyen/adyen-android

    Create a branch with correct prefix and base. An agent skill from Adyen/adyen-android.

    149 GitHub stars~782 tokensUpdated yesterday
    Auto-check passed
  • Android Commit

    Adyen/adyen-android

    Create a commit with pre-commit checks and conventions. An agent skill from Adyen/adyen-android.

    149 GitHub stars~835 tokensUpdated yesterday
    Auto-check: notes
  • Android PR Create

    Adyen/adyen-android

    Create a PR with title, body, and checklist. An agent skill from Adyen/adyen-android.

    149 GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed
  • Android Public API Change

    Adyen/adyen-android

    Change the public API surface: visibility, breaking changes, and apiDump.

    149 GitHub stars~1.2k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Android Migrate Payment Method V6

What does Android Migrate Payment Method V6 do?

Plan and execute the migration of a v5 payment method to the v6 component architecture. Android Migrate Payment Method V6 is an agent skill from Adyen/adyen-android. Plan and execute the migration of a v5 payment method to the v6 component architecture.

When should I use Android Migrate Payment Method V6?

Android Migrate Payment Method V6 fits situations like: moving an existing payment method module to v6.

How do I install Android Migrate Payment Method V6 in Claude Code?

Run `npx skills add Adyen/adyen-android --skill android-migrate-payment-method-v6 -a claude-code`. Or copy the skill folder (.agents/skills/android-migrate-payment-method-v6 in Adyen/adyen-android) into .claude/skills/android-migrate-payment-method-v6 in your project. Claude Code loads it when a task matches its description.

How do I install Android Migrate Payment Method V6 in Codex?

Run `npx skills add Adyen/adyen-android --skill android-migrate-payment-method-v6 -a codex`. Or copy the skill folder (.agents/skills/android-migrate-payment-method-v6 in Adyen/adyen-android) into .agents/skills/android-migrate-payment-method-v6 in your project. Codex loads it when a task matches its description.

Can I use Android Migrate Payment Method V6 in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Adyen/adyen-android --skill android-migrate-payment-method-v6 -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/android-migrate-payment-method-v6, .gemini/skills/android-migrate-payment-method-v6, .github/skills/android-migrate-payment-method-v6 and .opencode/skills/android-migrate-payment-method-v6 in your project.

What does Android Migrate Payment Method V6 need to run?

SKILL.md names no scripts, command-line tools or credentials: Android Migrate Payment Method V6 is instructions for the agent only.

Does Android Migrate Payment Method V6 access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Android Migrate Payment Method V6 safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Android Migrate Payment Method V6 use?

Android Migrate Payment Method V6 is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Android Migrate Payment Method V6 use?

About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Android Migrate Payment Method V6?

Skills that share tags, products or a category with Android Migrate Payment Method V6: Android UI Visual Review (permissionlesstech/bitchat-android, 7.7k stars), Improve Codebase Architecture (ywwynm/EverythingDone, 144 stars), Commit PR (samuelclay/NewsBlur, 7.6k stars) and Find My Flags (androidx/androidx, 6.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Android Migrate Payment Method V6?

Adyen (a GitHub organization) maintains it in Adyen/adyen-android, which has 149 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 6, 2026.

Source: Adyen/adyen-android on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.