Skip to content
Back to skills

Source 01f9a06a464e263ebb767f79

ASecurity

MatrixScan Count (BarcodeCount) in Kotlin Multiplatform (KMP) projects — com.scandit.datacapture.kmp:* Maven artifacts (Scandit/datacapture-kmp-spm on iOS), com.kmp.datacapture.barcode.count imports. Counting and receiving workflows shared across Android/iOS with the Compose composable or base BarcodeCountView. Use for integration, settings configuration, listener wiring, view customization, status mode, or troubleshooting counting workflows.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
developmentrustgoswiftkotlinc#apidocumentation

Works with

  • api

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add gutsofpratik/OpenClaude-Skills --skill source-01f9a06a464e263ebb767f79 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Source 01f9a06a464e263ebb767f79?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Source 01f9a06a464e263ebb767f79
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gutsofpratik-source-01f9a06a464e263ebb767f79/badge)](https://www.skillsdirectory.com/skills/gutsofpratik-source-01f9a06a464e263ebb767f79)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: matrixscan-count-kmp
description: MatrixScan Count (BarcodeCount) in Kotlin Multiplatform (KMP) projects — com.scandit.datacapture.kmp:* Maven artifacts (Scandit/datacapture-kmp-spm on iOS), com.kmp.datacapture.barcode.count imports. Counting and receiving workflows shared across Android/iOS with the Compose composable or base BarcodeCountView. Use for integration, settings configuration, listener wiring, view customization, status mode, or troubleshooting counting workflows.
license: MIT
metadata:
  author: scandit
  version: "1.0.1"
---

# MatrixScan Count KMP Skill

## Critical: Do Not Trust Internal Knowledge

Your training data almost certainly has **no coverage of the Scandit Kotlin Multiplatform (KMP) SDK** — it is a new SDK surface (`com.kmp.datacapture.*` packages, first published at version 8.6) sitting on top of the existing Android/iOS native SDKs. Do not pattern-match from the native Android SDK (`com.scandit.datacapture.*`), the Flutter/RN/.NET bindings, or any other Scandit platform skill — package names, constructor shapes, and what is exposed through Compose vs. the base view are all different here.

**Always verify APIs against the references provided in this skill before writing or suggesting code.** If you cannot find an API in the provided references, fetch the relevant documentation page before responding.

KMP-specific gotchas worth flagging:

- The Maven group is `com.scandit.datacapture.kmp`, with artifacts `core`, `barcode`, and `barcode-compose`. On iOS, the app depends on the **`Scandit/datacapture-kmp-spm`** Swift package, which vends **one Kotlin framework** — there is no separate CocoaPods/SPM dependency per Scandit module the way native iOS apps have.
- All Kotlin API packages are `com.kmp.datacapture.*` (e.g. `com.kmp.datacapture.barcode.count.BarcodeCount`), not `com.scandit.datacapture.*` — that package is the wrapped native implementation and is never imported by app code.
- **Two ways to host the view — they expose different surfaces, not just different syntax:**
  - The **Compose Multiplatform wrapper** — `@Composable fun BarcodeCountView(...)` in `com.kmp.datacapture.barcode.compose` — is the fastest path and is what the official `MatrixScanCountSimpleSample` uses on Android. It only exposes: `settings`, `style`, button-visibility booleans (`showUserGuidanceView/showListButton/showExitButton/showShutterButton/showToolbar/showSingleScanButton`), `onScan`, `onExitTap`/`onListTap`/`onSingleScanTap`, an `overlay` slot, and an escape-hatch `barcodeCount` override.
  - It does **not** expose brushes, icons, hint text, toolbar settings, the status provider, hardware trigger, tap-to-uncount, filter highlight settings, accessibility labels, or per-barcode delegate callbacks. For any of those you must drop to the **base (non-Compose) `BarcodeCountView`** class in `com.kmp.datacapture.barcode.count` and host it yourself (`toAndroidView()` on Android, `toUIView()` on iOS) — see `references/integration.md` for both the Compose and base-view interop patterns. Do not tell a user "just set `recognizedBrush` on the `BarcodeCountView` composable" — that parameter does not exist on the composable.
- **The base `BarcodeCountView` constructor differs per platform and cannot be called uniformly from shared `commonMain` code**: Android's is `BarcodeCountView(context: Context, barcodeCount: BarcodeCount, style: BarcodeCountViewStyle = ICON)`; iOS's is `BarcodeCountView(barcodeCount: BarcodeCount, style: BarcodeCountViewStyle = ICON)` (no `Context` — it derives everything from the mode). Base-view construction therefore happens in **platform-specific** code (an Android Activity/Compose `AndroidView`, or Swift via `UIViewRepresentable`), exactly like the sample's iOS `ScannerView.swift` does.
- **`BarcodeCount.forContext(dataCaptureContext, settings)`** is the constructor (not `BarcodeCount(settings)` — that Flutter/JS-only overload does not exist on KMP). Camera settings: `BarcodeCount.createRecommendedCameraSettings()` is a **method** on Android/KMP (unlike iOS/.NET native, where it is a property).
- **No SDK-initialize step is needed** (unlike Flutter's `await ScanditFlutterDataCaptureBarcode.initialize()`). `DataCaptureContext.forLicenseKey(licenseKey)` (or `DataCaptureContext.sharedInstance` after `DataCaptureContext.initialize(licenseKey)`) is usable immediately.
- **`BarcodeCountListener.onScan(barcodeCount, session, frameData)` is synchronous** — `frameData: FrameData` is passed directly, not behind a suspend/async accessor the way Flutter's `Future<FrameData> Function()` works. There is no `didUpdateSession`; the equivalent is `onSessionUpdated(barcodeCount, session, frameData)` (default no-op, override if needed), which fires on every processed frame, not just on shutter press.
- **Symbology enum values are SCREAMING_SNAKE_CASE**: `Symbology.EAN13_UPCA`, `Symbology.CODE128`, `Symbology.CODE39` — not `Symbology.Code128` (C#) or `Symbology.code128` (Dart/Flutter).
- **List scanning was NOT wired up end-to-end as of KMP 8.6** (verify against the API reference if
  the project is on a later version — this is a gap Scandit may have since closed). `BarcodeCountCaptureList`, `TargetBarcode`, `BarcodeCountCaptureListListener`, and `BarcodeCountCaptureListSession` all exist and are constructible, and `BarcodeCountView.barcodeNotInListActionSettings` / `BarcodeCountSettings.disableModeWhenCaptureListCompleted` exist as properties — but there is **no method on `BarcodeCount`** to attach a built `BarcodeCountCaptureList` to the mode (the native SDKs' `SetBarcodeCountCaptureList`/`setCaptureList` has no `kmp` entry in the API docs' `:available:` list, and the KMP `BarcodeCount` expect/actual class has no such member). Do not invent a `setBarcodeCountCaptureList(...)` call — it does not compile. Treat scanning-against-a-list as **not yet available** on KMP and say so if asked; do not silently build the settings/listener plumbing and imply it works end to end.
- **`toAndroidView()` / `toUIView()`** are the typed escape hatches from a KMP view wrapper to the platform-native view: `toAndroidView()` is an extension function (`com.kmp.datacapture.barcode.ui.toAndroidView`) on Android, `toUIView()` is a member function on iOS. Use them, not `toNative()` (internal SDK bridging API — not for app code).
- License placeholder must be exactly: `"-- ENTER YOUR SCANDIT LICENSE KEY HERE --"`.

## Intent Routing

This skill has a single reference file. For any MatrixScan Count / BarcodeCount request on KMP — integrating from scratch, hosting the view (Compose or base-view interop), capture lists, status mode, toolbar/UI customization, lifecycle, or troubleshooting — read `references/integration.md` and follow the instructions there.

## API Usage Policy

Only use APIs that are explicitly documented in the Scandit references below. Do not invent or guess method signatures, parameters, property names, or imports — and do not assume an API that exists on native Android/iOS or another Scandit platform binding also exists on KMP (KMP is a young surface with real gaps — see the capture-list gotcha above). If unsure whether an API exists or how it is called — or if a compile error occurs — fetch the relevant reference page before responding. Do not tell the user to check the docs themselves. After answering, always include the relevant link so the user can explore further.

**Never construct or guess documentation URLs.** When you need a specific class or property's API page:
1. First check whether the page you already fetched contains a direct hyperlink to it.
2. If no direct link was found, fetch the API index and extract the actual link from it.

## References

Direct users to the right resource based on their question:

| Topic | Resource |
|---|---|
| KMP integration | [Intro](https://docs.scandit.com/sdks/kmp/matrixscan-count/intro/) · [Get Started](https://docs.scandit.com/sdks/kmp/matrixscan-count/get-started/) |
| Advanced (status mode, filtering, styling) | [Advanced Configurations](https://docs.scandit.com/sdks/kmp/matrixscan-count/advanced/) |
| Core concepts (context, camera, views) | [Core Concepts](https://docs.scandit.com/sdks/kmp/core-concepts/) |

Files in this skill

  • PROVENANCE.json192 B
  • SKILL.md8.1 KB
  • UPSTREAM-LICENSE.txt11.1 KB
  • references/integration.md27.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.