libchecker/libchecker-rules/libchecker-chart-rules

Claude Code and agent skill by libchecker/libchecker-rules

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Writing and validating LibChecker chart statistics rules. Provides JSON schema reference, evidence types, condition syntax, and bundle generation workflow for declarative chart rules.

Install

npx vskill@latest install libchecker/libchecker-rules/libchecker-chart-rules

SKILL.md

Chart rule contribution guide

This directory contains the declarative statistics shown on LibChecker's chart page. A rule describes the data that LibChecker should inspect, the condition that produces a match, and the labels and icon shown to the user.

Rules cannot execute scripts or arbitrary code. LibChecker owns all APK, DEX, manifest, and native-file traversal. A rule can only use evidence and operators that the installed app already implements.

Before you start

Answer these questions before writing JSON:

  1. What does the chart measure, and why is it useful to LibChecker users?
  2. Which installed-app evidence proves a match?
  3. Can an app produce one yes/no result, or can it match several capabilities?
  4. Is there a primary HTTPS source that explains the technology or capability?
  5. Can you test the rule against both matching and non-matching APKs?

Schema v1 supports only the evidence listed in Evidence reference. If your rule needs another source, such as a DEX field, resource-table entry, native symbol, certificate property, or arbitrary file content, propose a generic evidence provider in the LibChecker app first. Do not encode a workaround in the rule.

New rules should normally start with "releaseChannel": "preview-only". Move them to stable only after the preview bundle has been tested with a compatible LibChecker build.

Contribution workflow

  1. Fork the repository and create a topic branch.
  2. Choose the closest example in rules/:

fallback.

queries, and manifest receiver actions.

comparison.

  1. Add one UTF-8 JSON file under rules/. Use four-space indentation and name

the file after the final segment of the rule ID.

  1. Add the referenced SVG under icons/.
  2. Update the tests that enumerate rule IDs, icons, catalog size, and stable

channel contents. Add focused assertions for the new detection data.

  1. Run the unit tests and build a preview bundle in a temporary directory.
  2. Test the preview rule with known matching and non-matching apps.
  3. Regenerate cloud/v1/chart.bundle and cloud/v1/manifest.json with the

bundle version and minimum app version agreed for the target branch.

  1. Submit the source rule, icon, tests, generated bundle, and manifest in one

pull request. Include your evidence source and manual test results in the PR description.

Run commands from the repository root:

shell
python3 -m unittest chart.tools.test_build_bundle
python3 chart/tools/build_bundle.py \
--bundle-version 12 \
--channel preview \
--minimum-app-version-code 2731 \
--output-dir /tmp/libchecker-chart-preview

The numbers above are examples. Read chart/cloud/v1/manifest.json and the target branch before choosing a bundle version or minimum app version.

Repository layout

PathPurpose
rules/Reviewed source definitions, one JSON file per statistic.
icons/SVG assets referenced by source rules.
schema/v1/chart-rule.schema.jsonMachine-readable schema for source rules.
schema/v1/manifest.schema.jsonMachine-readable schema for the generated manifest.
tools/build_bundle.pyValidator and deterministic bundle generator.
tools/test_build_bundle.pySource validation and bundle regression tests.
cloud/v1/chart.bundleGenerated catalog and icons consumed by LibChecker.
cloud/v1/manifest.jsonGenerated version, compatibility, size, and checksum metadata.

Minimal rule

This is a complete single-predicate rule:

json
{
"id": "official.example-sdk",
"revision": 1,
"source": "official",
"releaseChannel": "preview-only",
"title": {
"translations": {
"en": "Example SDK",
"zh-Hans": "示例 SDK"
}
},
"details": {
"description": {
"translations": {
"en": "Example SDK provides a documented capability for Android apps.",
"zh-Hans": "示例 SDK 为 Android 应用提供一项有公开文档的能力。"
}
},
"referenceUrl": "https://example.com/android-sdk"
},
"icon": {
"asset": "icons/example-sdk.svg",
"renderMode": "monochrome",
"tintRole": "on_surface"
},
"calculation": {
"kind": "predicate",
"predicate": {
"evidence": "native_library",
"operator": "contains",
"value": {
"string": "libexample.so"
},
"matchedTitle": {
"translations": {
"en": "Example SDK apps",
"zh-Hans": "示例 SDK 应用"
}
},
"unmatchedTitle": {
"translations": {
"en": "Other apps",
"zh-Hans": "其他应用"
}
}
}
},
"fingerprint": "artifact"
}

Top-level fields

The source schema does not allow unknown fields. The following fields are available to official online rules.

FieldRequiredType or allowed valuesMeaning
idYesString matching official.<name>Permanent identity of the statistic.
revisionYesInteger, minimum 1Version of this rule definition.
sourceYesofficialOnline rules in this repository are official rules.
titleYesTranslated textChart title shown by LibChecker.
detailsYesObjectIn-app description and primary reference URL.
iconYesObjectBundled SVG and its rendering behavior.
calculationYespredicate or facetsHow apps are classified.
releaseChannelNostable or preview-onlyControls which generated bundle includes the rule. Defaults to stable.
availabilityNoalwaysAvailability gate. Schema v1 online rules only support always.
requiresFeatureInitializationNoBooleanHides the chart until feature initialization finishes. Defaults to false.
controlsNoEmpty array onlyOnline controls are not supported in schema v1.
dashboardNononeOnline dashboard integrations are not supported in schema v1.
fingerprintNostandard, features, or artifactSelects the app-data fingerprint used to invalidate cached chart results.

JSON Schema default values document client defaults. The bundle builder does not insert missing optional fields into the generated catalog.

id

The ID must match:

text
^official\.[a-z0-9]+(?:[.-][a-z0-9]+)*$

Examples:

  • Valid: official.flutter, official.android-api-level,

official.vendor.capability.

  • Invalid: flutter, official.Flutter, official_target_sdk.

Use a specific, technology-neutral ID. Once a rule has been published, never reuse its ID for a different statistic. The source filename should match the last ID segment, such as official.flutter in flutter.json.

revision

Start a new rule at revision 1. Increase the revision whenever a published rule changes its matching logic, titles, description, icon, calculation type, or other presentation metadata. A change to repository documentation alone does not require a rule revision.

The revision belongs to one rule. It is independent of the generated bundle's bundleVersion.

source

Every rule submitted to this repository must use:

json
"source": "official"

The builder rejects other values.

Translated text

title, details.description, predicate group titles, and facet titles use the same wrapper. Optional facet short titles use it as well:

json
{
"translations": {
"en": "English text",
"zh-Hans": "简体中文文本"
}
}
Translated-text parameters
ParameterTypeRequiredAllowed values and limitsMeaning
translationsObjectYes2 to 16 locale entries; must include en and zh-HansMaps locale tags to the text shown by LibChecker.
translations.<locale>StringYes for each declared localeNon-empty; 80 characters for chart and group titles, 40 for facet titles and short titles, 1,500 for descriptionsLocalized value for one BCP 47-style locale tag.
Locale keyAllowedMeaning
enRequiredEnglish text and runtime fallback.
zh-HansRequiredSimplified Chinese text.
zh, zh-CNRejectedThese tags are intentionally not accepted; use zh-Hans.
Other schema-compatible tagsOptionalAdditional translations, for example pt-BR or es-419, up to 16 locales total.

Rules for translations:

  • en and zh-Hans are required. English is the runtime fallback.
  • Use zh-Hans for Simplified Chinese. zh and zh-CN are rejected.
  • A translated object must contain 2 to 16 locales.
  • Locale keys use BCP 47-style tags accepted by the schema, such as en,

zh-Hans, pt-BR, or es-419.

  • Each translation must be a non-empty string.
  • title, matchedTitle, and unmatchedTitle allow up to 80 characters.
  • A facet title and shortTitle allow up to 40 characters.
  • details.description allows up to 1,500 characters.
  • Keep equivalent meaning across locales. Do not add claims to one language

that are absent from another.

Use short labels for chart and group titles. The matched and unmatched titles name the two result groups, for example Flutter apps and Other apps.

Details and reference URL

details is required:

json
"details": {
"description": {
"translations": {
"en": "A neutral introduction to the technology.",
"zh-Hans": "对该技术的中性介绍。"
}
},
"referenceUrl": "https://project.example/documentation"
}
Details parameters
ParameterTypeRequiredAllowed values and limitsMeaning
details.descriptionTranslated textYesen and zh-Hans; 1 to 1,500 characters per localeNeutral in-app introduction to the technology or capability.
details.referenceUrlStringYesHTTPS URL, valid host, no credentials or whitespace, maximum 512 charactersPrimary source opened from the introduction dialog.

Write a short, neutral description of the technology or capability. Do not say that the currently selected app matches the rule. LibChecker appends the actual analysis result at runtime. Faceted rules also list the matched facet titles.

referenceUrl must:

  • use HTTPS;
  • contain a valid host;
  • contain no username, password, or whitespace;
  • be no longer than 512 characters;
  • point to a primary project, standards body, vendor, or platform document.

Do not use tracking links, URL shorteners, affiliate links, search results, or an unreviewed third-party summary.

Icons

Every online rule references one repository asset:

json
"icon": {
"asset": "icons/example-sdk.svg",
"renderMode": "monochrome",
"tintRole": "on_surface"
}
Icon fields
FieldRequiredAllowed valuesMeaning
assetYesicons/<safe-name>.svgRepository-relative path included in the bundle.
renderModeNomonochrome, originalWhether LibChecker applies a theme tint. Defaults to monochrome.
tintRoleNoon_surface, on_surface_variant, primary, secondary, tertiaryTheme color used for a monochrome icon. Defaults to on_surface.

Use original only when the original brand colors carry meaning. LibChecker does not apply tintRole to an original icon. Use monochrome for a shape that should adapt to the active theme.

SVG requirements

An SVG must:

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
196
Repository forks
82
7-day trend score
26

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 26 Oct 2026, 9 days ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/libchecker/libchecker-rules/libchecker-chart-rules/badge)](https://verified-skill.com/skills/libchecker/libchecker-rules/libchecker-chart-rules)

Something wrong with this skill or its page? Tell us.