FeatureFacts

Know what this product can do. Part of the xFacts suite.

A compact xFacts label for product capabilities. The internal label can link to its register. A public label contains only approved fields. Candidates are not confirmed features. Zero rows is a truthful outcome.

xFacts label

Example · synthetic fixture · not a scan of a real product
ProductWorkshop Demo
Modemap-backed
QuestionWhat can this product do?
SelectedResume import
Lifecyclereleased
Availabilityconditional · Pro · member
Maturityexperimental
Evidencecurrent
Not a coverage score. Linked documentation or tests means an accepted association exists. It does not mean the tests passed or the docs are adequate.

Two reading depths

A small label, then the register that can defend it.

FEATURE_FACTS.md holds zero to 12 approved rows. Initialization leaves the selection empty. A scanner can propose candidates. It cannot silently curate them.

.featurefacts/ keeps the known capabilities inside a declared survey scope: surfaces, evidence, stale locators, and publication choices. It is not a claim that every capability was found.

Scan one TypeScript repo

Default scan does not execute target code, use the network, or call a model.

npx @xfacts/featurefacts init  --root ../my-app
npx @xfacts/featurefacts scan  --root ../my-app
npx @xfacts/featurefacts show  --root ../my-app
npx @xfacts/featurefacts check --root ../my-app

Install @xfacts/featurefacts (Node 22.18 or newer). It is not a runtime dependency of the app you scan. Current scope: TypeScript/Node. Unsupported inputs report unsupported, not a fabricated inventory.

After scanning, inspect the candidates. There is no approve command. Confirm only supported capabilities in .featurefacts/features.yaml (recognition: confirmed plus a declared actor, source, and time). Record the selection in config.yaml under curation.selected_ids (up to 12) and curation.approval. Then run report and check. An empty label can be the correct result. The internal label can link to its register. A public label contains only approved fields and does not expose the private register or source locators. See docs/LABEL.md and docs/PUBLICATION_AND_SAFETY.md.