Inforcer Compliance Reporting — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Inforcer Compliance Reporting (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill turns Inforcer's raw signals — secure scores and alignment — into a posture report. The headline output is a per-tenant classification (aligned / semi-aligned / drifted) rolled up across the portfolio, suitable for monthly internal reviews and QBRs.
Read api-patterns for headers, region, the envelope, and pagination, and tenant-management for resolving tenants to integer Client Tenant IDs. Alignment mechanics live in baseline-alignment.
inforcer_secure_scoresRead the Microsoft 365 secure score for a tenant — Microsoft's own security posture measure for the M365 environment.
inforcer_secure_scores(clientTenantId=1423)Secure score is complementary to alignment: alignment says "does this tenant match our baseline?", secure score says "what does Microsoft think of this tenant's posture overall?". A strong report uses both.
inforcer_alignment_scoresRead the tenant's alignment score against its assigned baseline (the other half of the posture picture). See baseline-alignment for details.
inforcer_alignment_scores(clientTenantId=1423)Alignment classification is threshold-driven. Two configurable settings define the bands:
alignedThresholdsemiAlignedThresholdA tenant (or an individual policy) is classified by comparing its alignment value against those thresholds:
| Classification | Condition |
|---|---|
| aligned | value >= alignedThreshold |
| semi-aligned | value >= semiAlignedThreshold and < alignedThreshold |
| drifted | value < semiAlignedThreshold |
So the bands are: at or above alignedThreshold is aligned; in the window [semiAlignedThreshold, alignedThreshold) is semi-aligned; below semiAlignedThreshold is drifted. Always state the threshold values you used in the report — a tenant's band is meaningless without the thresholds that produced it, and changing the thresholds reclassifies tenants without anything actually changing on the tenant.
def classify(value, aligned_threshold, semi_aligned_threshold):
if value >= aligned_threshold:
return "aligned"
if value >= semi_aligned_threshold:
return "semi-aligned"
return "drifted"For a fleet report:
inforcer_tenants_list — enumerate managed tenants (page to completion).inforcer_alignment_scores and inforcer_secure_scores.
alignedThreshold / semiAlignedThreshold classificationto the alignment value.
MSP triages the worst posture first.
that are both drifted and low secure score (the priority list).
| Column | Source |
|---|---|
| Alignment score + band | inforcer_alignment_scores + thresholds |
| Secure score | inforcer_secure_scores |
| Classification | computed (aligned / semi-aligned / drifted) |
remediate it, deploy policies, or restore configuration via the API — those are UI-only. Report findings as recommendations.
field names for secure score, alignment value, and the threshold settings are illustrative and credited to royklo/InforcerCommunity.
configured differently between runs, a tenant can "change band" with no real posture change — note the thresholds for reproducibility.
them. A high secure score with low alignment means Microsoft is happy but the tenant diverges from the MSP baseline (and vice versa).
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.