blint
owasp-dep-scan/blintblint is a Binary Linter that checks the security properties and capabilities of your executables. It can also generate a Software Bill-of-Materials (SBOM) for supported binaries.
448 stars
46 forks
Python
32 views
SKILL.md
SKILL.md
This file defines practical skills an AI agent should apply when working on blint.
Skill: Navigate blint architecture quickly
- Start at
blint/cli.pyto identify mode (default,sbom,db). - Follow orchestration in
blint/lib/runners.py. - Review coordination lives in
blint/lib/review_runner.py. - For extraction logic, use
blint/lib/binary.pyandblint/lib/android.py. - For rule behavior, use
blint/lib/analysis.py,blint/lib/review_utils.py,blint/lib/function_reviews.py, andblint/data/annotations/*.yml. - For SBOM behavior, use
blint/lib/sbom.pyandblint/cyclonedx/spec.py.
Skill: Implement rule-driven behavior safely
- Understand rule types:
rules.yml-> hardening checks (run_checks).- annotations -> reviews (
METHOD_REVIEWS,SYMBOL_REVIEWS, etc.). FUNCTION_REVIEWS-> disassembly-derived behavior checks implemented inblint/lib/function_reviews.py.
- Keep rule IDs stable and unique.
- Match field paths used in
function_metricwith actual metadata shape. - Respect evidence limits (
EVIDENCE_LIMIT) to avoid noisy output.
Skill: Work with binary metadata extraction
- Preserve format-specific fields while maintaining normalized top-level fields.
- Do not break keys used downstream by checks/reviews/SBOM mappers.
- Keep defensive parsing style: suppress parser exceptions where already expected.
- Validate changes against representative fixtures in
tests/data/*.jsonandtests/data/*.wasm.
Skill: Extend disassembly analytics
--disassembleis optional; do not force it into default flows.- Avoid architecture-specific regressions:
- x86/x64
- AArch64/ARM64
- MIPS/microMIPS/MIPS16 fallback paths
- Keep heuristics lightweight and deterministic.
- Ensure new indicators are configurable/constants-based when possible.
Skill: Maintain SBOM correctness
- Preserve CycloneDX output validity (spec 1.6 model in this repo).
- Ensure each component has a stable
bom_ref. - Avoid dependency self-loops.
- Keep deep-mode details in properties, not default minimal output.
- Respect
--stdoutand output path behavior. - Remember that
blint sbom --use-blintdb --deepauto-enables disassembly. Test that path explicitly when changing SBOM or DB matching logic.
Skill: Use blintdb integration properly
- Database usage is optional and should not block core execution.
- Keep behavior safe when DB is missing or download fails.
- Prefer the local query contract in
blint/db.pyover importing runtime helpers fromblint-db. - Use project-level evidence from symbols, binary-name hints, and disassembly hashes together.
- Keep symbol-only matching conservative. Strong exact matches are better than noisy broad guesses.
- Filter tiny or generic hash evidence when it creates cross-project collisions.
- Avoid introducing non-read-only DB access in analysis paths.
Skill: Testing and validation expectations
- Core tests:
tests/test_analysis.pytests/test_binary.pytests/test_android.pytests/test_disassembler.py
- Add fixture-based tests for parser/rule changes.
- Prefer narrow tests for one behavior change at a time.
- For
blint/db.pyorblint/lib/sbom.pychanges, run both fixture tests and one small real corpus build from the linkedblint-dbrepo. - Validate both modes for real corpus checks:
- symbol-only:
blint sbom --use-blintdb - disassembly-assisted:
blint sbom --use-blintdb --deep
- symbol-only:
- For exact binaries that were used to build the corpus, expect near-exact component identification and inspect
internal:blintdb_*properties when debugging drift. - Prefer the scripted validation flow in
tests/scripts/validate_blintdb_small_corpus.pyover one-off shell snippets. The selector manifest is versioned intests/data/blintdb-small-corpus.json.
Skill: Documentation updates with code changes
- Update
docs/RULES.mdwhen rule schema/usage changes. - Update
docs/METADATA.mdwhen metadata keys/meaning change. - Update
docs/DISASSEMBLE.mdwhen disassembly fields/heuristics change. - Keep README examples aligned with actual CLI flags.
- Update
AGENTS.mdandSKILL.mdwhen the maintenance workflow changes in a meaningful way.
Skill: High-confidence change checklist
- Confirm changed fields are consumed correctly by:
- checks
- reviews
- report exporters
- SBOM generation
- Run tests after editing Python logic.
- Ensure no accidental behavior change in non-targeted binary formats.
- For WASM parsing changes, verify both normalized fields (
imports,dynamic_entries,functions) and raw passthrough fields (wasm_report,wasm_analysis).