mcpField
M
matrixscan-count-cordova

matrixscan-count-cordova

github.com/scanditDevelopment2040 installsUpdated 5d ago
Repository

About matrixscan-count-cordova

A skill for developers integrating Scandit MatrixScan Count with Cordova, with guidance on BarcodeCount setup, view attachment, and migration. It focuses on Cordova runtime requirements and notes that the feature does not support the web platform.

Key features

  1. 01BarcodeCount integration guidance
  2. 02Count view and DOM attachment instructions
  3. 03Barcode filtering and list configuration references
  4. 04Migration guidance

Use cases

  1. 01Adding item-count scanning to a Cordova app
  2. 02Configuring barcode filters or additional barcode lists
  3. 03Migrating from an older BarcodeCount constructor pattern

MCP support

The skill describes using the Scandit MCP server to configure a scanning license key and write it to the project’s .env file.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/scandit/skills --skill matrixscan-count-cordova

After installing, type/matrixscan-count-cordovain Claude Code to confirm it loaded.

Bundled filesreferences/integration.mdreferences/migration.md

Details

From the project README

MatrixScan Count Cordova Skill

Critical: Do Not Trust Internal Knowledge

Your training data may contain outdated or incorrect Scandit SDK APIs. The BarcodeCount Cordova API has evolved significantly across SDK versions. Key milestones:

  • Cordova 6.24: BarcodeCount first available on Cordova.
  • Cordova 7.6: Context-free constructor new Scandit.BarcodeCount(settings) introduced; context.addMode(barcodeCount) is now the wiring call.
  • Cordova 7.1: BarcodeCountNotInListActionSettings available.
  • Cordova 8.3: BarcodeCountStatusProvider, shouldShowStatusModeButton, textForBarcodesNotInListDetectedHint, textForClusteringGestureHint, textForScreenCleanedUpHint, disableModeWhenCaptureListCompleted, ClusteringMode available.
  • Filtering / unique / additional barcodes / reset: BarcodeCountSettings.filterSettings (BarcodeFilterSettings — excludedSymbologies, excludedCodesRegex), expectsOnlyUniqueBarcodes, setAdditionalBarcodes / clearAdditionalBarcodes, and reset() are available on Cordova.

Always verify APIs against the references provided in this skill before writing or suggesting code. Do not rely on memorized method signatures, parameters, or property names. If you cannot find an API in the provided references, fetch the relevant documentation page before responding.

Source note: There is no public Cordova MatrixScan Count sample. The integration reference is anchored to the internal DebugApp (frameworks/cordova/debugapp/src/pages/BarcodeCount.tsx and frameworks/cordova/debugapp/src/hooks/modes/useBarcodeCount.ts) and the Cordova plugin source (frameworks/cordova/scandit-cordova-datacapture-barcode/www/ts/src/BarcodeCountView.ts).

Cordova-Specific Gotchas

  • Global namespace: The Scandit SDK is exposed on window.Scandit. Use Scandit.BarcodeCount, Scandit.BarcodeCountView, etc. at runtime. The npm packages (scandit-cordova-datacapture-*) are plugin manifests, not ES modules. Do not emit import { ... } from 'scandit-cordova-datacapture-*' in user code running in the WebView. Only TypeScript projects using Webpack/bundler can import types at compile time.
  • deviceready gate: All Scandit APIs must be called after document.addEventListener('deviceready', ...). Never call at module load time.
  • Plugin install: Both plugins are required:
    cordova plugin add scandit-cordova-datacapture-core
    cordova plugin add scandit-cordova-datacapture-barcode
    
    After any plugin change, run cordova prepare.
  • Web platform NOT supported: BarcodeCount on Cordova requires iOS or Android. The web platform is not supported.
  • BarcodeCountView uses a DOM-overlay model: The native view is sized and positioned to mirror an HTML element. The attach API (verified against plugin source) is:
    • barcodeCountView.connectToElement(htmlElement) — synchronous, no await needed (internally async, but the public signature is void).
    • barcodeCountView.detachFromElement() — synchronous void. Call during teardown.
    • barcodeCountView.setFrame(rect, isUnderContent) — manually position using a Rect. Returns Promise<void>. Use only when NOT using connectToElement.
    • barcodeCountView.show() / barcodeCountView.hide() — returns Promise<void>. Only use with setFrame; throws if called with an element attached.
  • Constructor pattern (≥7.6): new Scandit.BarcodeCount(settings) followed by context.addMode(barcodeCount). The older BarcodeCount.forDataCaptureContext(context, settings) wired context automatically; the new constructor does not.
  • Camera: Use Scandit.BarcodeCount.createRecommendedCameraSettings() (≥7.6 Cordova). Obtain the camera with Scandit.Camera.withSettings(cameraSettings), set it via context.setFrameSource(camera), and toggle with camera.switchToDesiredState(Scandit.FrameSourceState.On/Off).
  • License placeholder: Always use the exact string '-- ENTER YOUR SCANDIT LICENSE KEY HERE --'.

Intent Routing

Based on the user's request, load the appropriate reference file before responding:

  • Integrating MatrixScan Count from scratch (e.g. "add MatrixScan Count to my app", "set up BarcodeCount in Cordova", "how do I scan a list of items", "how do I show the count view", "how do I customize the toolbar or hints", "how do I use tap-to-uncount", "how do I enable status mode") → read references/integration.md and follow the instructions there.

  • Migrating from an older BarcodeCount constructor pattern (e.g. "migrate from BarcodeCount.forDataCaptureContext", "update to the new constructor", "adopt status mode", "add not-in-list action settings to existing code") → read references/migration.md and follow the migration guide 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. If unsure whether an API exists or how it is called — or if a runtime 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, extract the actual link from it, and follow that.

Framework Variant Policy

Cordova is a WebView-based framework. Examples in this skill use plain JavaScript (with optional JSDoc type hints). The same API works in TypeScript — add a global.d.ts declaration file and write TypeScript syntax. This skill does not assume a TypeScript project by default. If the target project is clearly TypeScript (.ts files, tsconfig.json), adapt the final output to TypeScript; otherwise stay in plain JS.

Licence key

Scanning needs a Scandit licence key. For this skill the licence product is native and the licence platforms are ios and android.

Work through these in order — never block the user on MCP:

  1. The Scandit MCP server is connected — call ensure_scanner_setup with product native and platforms ios and android, then run the command get_license_env_command returns, which writes the key into the project's .env. Show at most a masked preview in chat; never print a full key.

  2. It is not connected — offer to connect it once, then continue from step 1:

    • Claude Code: claude mcp add --transport http scandit https://ssl.scandit.com/mcp
    • Cursor: add {"mcpServers": {"scandit": {"url": "https://ssl.scandit.com/mcp"}}} to ~/.cursor/mcp.json
    • VS Code: add {"servers": {"scandit": {"type": "http", "url": "https://ssl.scandit.com/mcp"}}} to the MCP user configuration

    Authentication is browser-based, so it is not supported headless or in CI. The server provisions trial keys only; it never creates, revokes, or modifies production licences.

  3. The user declines, or has no MCP client — they generate a key themselves at https://ssl.scandit.com (no account yet: https://ssl.scandit.com/dashboard/sign-up?p=test) and paste it in.

Then put the key into the code in place of the placeholder; a key in .env does not reach the app by itself. Cordova does not load .env by itself, so use the simplest route below. The simplest route on any platform: read .env and put the key into the licence-key call directly, still showing only a masked preview in chat.

References

Direct users to the right resource based on their question:

TopicResource
Cordova integrationGet Started
Full API referenceBarcodeCount API

Comments

Markdown supported