Two reading depths
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 review --root ../my-app npx @xfacts/featurefacts review --apply --root ../my-app \ --actor "Your Name" --id cmd-scan --name "cmd-scan=Scan" npx @xfacts/featurefacts check --root ../my-app
Requires Node 22.18 or newer; it is not a runtime dependency of the app
you scan. Unsupported inputs report unsupported, not a
fabricated inventory.
scanproposes candidates;reviewlists them.review --applyconfirms the IDs you name, records who approved them, and writes the label (up to 12 rows).--namesets a row’s label name.checkfails when the label, register, or source are out of date.- Commit all of
.featurefacts/, includingmanifest.json, withFEATURE_FACTS.md.
Selecting nothing is a valid result; then no label file is written.
To curate by hand, edit .featurefacts/features.yaml and
config.yaml, then run report.
For a config from an older version, refresh-config lists the include
and exclude changes it needs, such as app folders like viewer/;
--write applies them and keeps the selection.
A public label carries only approved fields and never the register or source
locators. See docs/LABEL.md and docs/PUBLICATION_AND_SAFETY.md.
Origin · Sponsor
From Catalyst Forge
FeatureFacts was created by Catalyst Forge — AI consulting for growing businesses.
Part of the xFacts suite. Spec & schema are CC0. Tooling is MIT.