@setzkasten/cli
v0.5.1
Published
CI-first font license governance CLI for agencies, product teams, and enterprise compliance.
Maintainers
Readme
@setzkasten/cli
CLI-first tool for font license governance, audit logging, and deterministic policy/quote checks.
Positioning
- Agencies: keep client font-license trails verifiable without slowing delivery.
- Product teams: move license checks into CI and catch gaps during pull requests.
- Enterprise/compliance: get deterministic evidence and audit-ready usage history at scale.
What it does (V1)
- Initializes a project manifest (
LICENSE_MANIFEST.json) - Writes an append-only event log (
.setzkasten/events.log) - Adds/removes font entries
- Imports font entries from discovered local font files
- Scans controlled local assets for usage signals
- Discovers likely license files and computes deterministic
document_hashvalues - Links license evidence files to existing license instances (
evidence add) - Evaluates policy decisions (
allow,warn,escalate) - Supports policy presets:
strict,startup,enterprise - Emits
json,sarif, orjunitoutput forscanandpolicy - Generates deterministic quote output
- Provides dry-run/apply migration with manifest backup support
Install
npm install -g @setzkasten/cliUsage
setzkasten init --name "My Project"
setzkasten import --path . --apply
setzkasten add --font-id inter --family "Inter" --source oss
setzkasten scan --path . --discover
setzkasten doctor --strict
setzkasten evidence suggest --path . --apply
setzkasten evidence verify --strict
setzkasten evidence add --license-id lic_inter_001 --file ./licenses/OFL.txt
setzkasten exception add --code BYO_NO_EVIDENCE --font-id inter --reason "Temporary waiver"
setzkasten report --format markdown --output compliance-report.md
setzkasten sync export
setzkasten policy
setzkasten quote
setzkasten migrate --apply
setzkasten migrateLicense Evidence Workflow
Bootstrap manifest entries from discovered font files:
setzkasten import --path .
setzkasten import --path . --apply- Run
setzkasten scan --path . --discoverto list discovered fonts and font-adjacent license files. - Review
result.discovered_license_filesin JSON output (path,document_hash,detected_license,matched_font_ids). - Optional automatic suggestions:
setzkasten evidence suggest --path .
setzkasten evidence suggest --path . --apply- Link the local license file to a license instance:
setzkasten evidence add --license-id <license_id> --file <path-to-license-file>- Verify evidence file paths and hash integrity:
setzkasten evidence verify
setzkasten evidence verify --strict- Run
setzkasten policyto verify BYO evidence state.
Policy Exceptions
Create time-bound waivers for specific policy codes:
setzkasten exception add --code BYO_NO_EVIDENCE --font-id inter --reason "Temporary waiver"
setzkasten exception list
setzkasten exception remove --exception-id <exception_id>Reporting
Generate a governance snapshot in JSON or Markdown:
setzkasten report --format json
setzkasten report --format markdown --output compliance-report.mdSync Snapshot
Export a stable local snapshot for dashboard/API consumers:
setzkasten sync export
setzkasten sync export --output .setzkasten/sync/project-a.jsonDependency directories such as node_modules and vendor are ignored during scans by default.
Doctor
Run environment and governance diagnostics:
setzkasten doctor
setzkasten doctor --strictData written locally
LICENSE_MANIFEST.json.setzkasten/events.log
Constraints (V1)
- No proprietary font hosting/distribution
- No proprietary font preview
- No general web crawling
- Offline-first core behavior
- Not legal advice
