Use this when a rule pack, skill bundle, AGENTS.md, CLAUDE.md, .cursorrules, Bob .bob/rules/*.md, or Copilot instruction file claims to be portable across AI coding tools.
The goal is not to prove that every tool behaves identically. The goal is to make portability claims falsifiable: which tools were tested, which capabilities are required, where semantics are lossy, and what evidence a reviewer can inspect.
This pattern came from live market signals around AI skills and rule bundles: authors want to mark instructions as "universal", but tool capabilities, file loading rules, write APIs, glob semantics, and security defaults differ enough that a boolean label can hide silent semantic loss.
Try the example without touching a real repo:
git clone https://github.com/caioribeiroclw-pixel/pluribus.git
cd pluribus/examples/portability-fidelity
node ../../bin/pluribus.js validate
node ../../bin/pluribus.js sync --dry-run
node ../../bin/pluribus.js audit --json --fidelity-reportFor the npm release path, copy examples/portability-fidelity/pluribus.md into a temporary directory as pluribus.md, then run:
npx --yes pluribus-context@latest validate
npx --yes pluribus-context@latest sync --dry-run
npx --yes pluribus-context@latest audit --json --fidelity-reportAvoid this:
portable: truePrefer claims that include evidence and known loss:
portability:
tier: portable-with-adapters
testedOn:
- target: claude-code
evidence: generated CLAUDE.md smoke-reviewed on 2026-05-18
- target: cursor
evidence: generated .cursorrules smoke-reviewed on 2026-05-18
- target: github-copilot
evidence: generated .github/copilot-instructions.md smoke-reviewed on 2026-05-18
- target: bob
evidence: generated .bob/rules/pluribus.md smoke-reviewed on 2026-05-18
requiredCapabilities:
- read repository instructions before planning
- preserve generated-file warning
- respect security constraints before edits
knownLossyTargets:
- target: flat-markdown-targets
loss: cannot represent Cursor-style path/glob activation; keep scoped rules tool-native or annotate the lossIn Pluribus, keep that claim inside the source file so every generated output carries the same reviewable contract.
A rule/skill/context bundle is portable only when a maintainer can answer four questions from the repo:
- Capability: what does the instruction require from the target tool?
- Evidence: where was that target actually rendered or smoke-tested?
- Loss: which semantics are degraded, flattened, or unsupported?
- Fallback: what should a user do when a target lacks the capability?
If any answer is missing, use a narrower label such as project-local, target-native, or portable-with-loss instead of universal.
Pluribus is intentionally narrower than a skill registry or memory layer:
pluribus.mdkeeps the claim in one reviewed source of truth.sync --dry-runpreviews target-specific outputs before writing files.- generated files carry a warning header so manual edits are visible.
audit --json --fidelity-reportgives CI/reviewers a machine-readable check for missing/drifted outputs plus target-by-target section loss, activation shape, native discovery surface, resolution anchor, generic fallback status, load evidence, duplicate-load selection evidence, effective context scope, and portability warnings.- remote imports are opt-in, locked, cached, and digest-checked before becoming shared context.
That does not prove runtime behavior. You still need tool-specific smoke tests for load order, path/glob activation, available tools, MCP servers, and permission semantics.
For each selected target, the JSON report includes:
nativeDiscoverySurface— the file or directory pattern the target normally discovers, such asCLAUDE.md,.cursorrules,.github/copilot-instructions.md,AGENTS.md, or Bob.bob/rules/*.md.resolutionAnchor— where the generated surface is resolved from today (repo-rootfor built-in targets).genericFallback— whether the output is a broad agent fallback surface rather than a target-specific native surface.manualActivationRequired— whether Pluribus knows the output requires manual activation after generation. Built-in project-wide targets are currentlyfalse; future scoped/skill targets may differ.loadEvidence— how the generated context is expected to enter the agent session. Built-in targets currently reportloadedBy(native-file-discoveryorgeneric-agent-file),effectiveSource,deliveryMechanism,hookInstalled: false,injectedOnSessionStart: false,resumeBehavior: not-proven, anddedupeRisk: unknown; this makes native-vs-hook-vs-manual duplication an explicit evidence question instead of an assumption.duplicateLoadEvidence— which generated candidate Pluribus can identify for duplicate-load review. Built-in targets currently report acontentIdentityhash, onecandidateLoads[]item, a matchingselectedLoad, emptysuppressedLoads,crossRootScanMode: not-inspected, andduplicateRisk: unknown; this is a receipt shape for Cursor/Claude-style duplicate skill or duplicateCLAUDE.mdloads, not proof of runtime suppression.effectiveContext— what Pluribus can prove about the context a target receives. Built-in targets currently reportscope: repo-root,pathScoped: false,inheritance: none-modeled,overrideBehavior: none-modeled, plus the inferredloadedByandeffectiveSource; this is explicit evidence that monorepo path inheritance/isolation still needs a separate smoke.semanticDifference— a compact list such assection-loss,project-wide-only,no-path-scope-evidence,generic-agent-file, orruntime-load-dedupe-not-provenso reviewers can distinguish “file exists” from “same behavior is preserved.”
These fields are intentionally boring. They help reviewers catch cases like “installed files exist but the agent will not discover them,” “a hook injects the same context already loaded natively,” “two targets share a generic file but do not actually have the same loading semantics,” or “root and subfolder instruction files exist but nobody has proven the effective context for apps/client/.”
- Put the portability claim in the canonical source.
- Generate target outputs with
sync --dry-runand inspect semantic loss. - Keep target-native instructions when a semantic cannot be represented everywhere.
- Commit a small audit artifact (
pluribus audit --json --fidelity-report --output reports/pluribus-audit.json) when you want CI/review evidence. - For hook/native/manual mixes, treat
loadEvidence.dedupeRisk: unknownas a warning, not proof. Add a target-specific receipt forloadedBy,hookInstalled,injectedOnSessionStart, and resume behavior before claiming deduplication. - For multi-root skill/rule scans, treat
duplicateLoadEvidence.duplicateRisk: unknownas a warning, not proof. Add a target-specific receipt forcandidateLoads,selectedLoad,suppressedLoads, discovery roots, and content hashes before claiming duplicate suppression. - For monorepos, treat
effectiveContext.scope: repo-rootas a warning, not proof. Add a target-specific smoke for the path you care about, for exampleapps/client/should load root + client context but notapps/auth/rules. - Update the claim whenever a new target is added, a tool changes capability names, a subdirectory context is introduced, a hook/manual injection path changes, or a permission/security default changes.
If your rule pack, skill bundle, or instruction manifest needs a different evidence shape, open a focused issue: https://github.com/caioribeiroclw-pixel/pluribus/issues/new
Do not paste private instructions, secrets, tokens, customer data, or proprietary source in public feedback.