nsauditor-ai-agent-skill 0.2.49 → 0.2.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +48 -0
- package/README.md +5 -1
- package/SKILL.md +36 -2
- package/package.json +2 -2
- package/references/plugins.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,54 @@ Release notes for **`nsauditor-ai-agent-skill`** — installable knowledge packa
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## 0.2.51 (2026-09-09) — the retired PCI density label, and why a pointer did not save it
|
|
8
|
+
|
|
9
|
+
Paired with **Enterprise 0.46.0 / Community 0.2.53**. **NOT a floor bump: Community stays
|
|
10
|
+
`>= 0.2.49`.** Plugin enumeration unchanged at 29 Enterprise plugins.
|
|
11
|
+
|
|
12
|
+
`references/plugins.md` read *"MVP-67 density: 67 of ~250 sub-requirements"*. The Enterprise
|
|
13
|
+
0.46.0 cycle derived the PCI eligibility set from PCI DSS v4.0.1 itself rather than from a
|
|
14
|
+
transcribed list, and the enumeration moved to **72 — 19 covered, 9 partial, 44 declared out of
|
|
15
|
+
scope with a stated reason**. `MVP-67` is a retired LABEL, not merely a stale number: it names a
|
|
16
|
+
density programme the product no longer runs, so there is no correct figure to put after `MVP-`.
|
|
17
|
+
|
|
18
|
+
⚠️ **The line already carried the right instruction and it did not help.** It said, and still
|
|
19
|
+
says, *call `compliance_matrix` for the current triple* — a pointer at a derived source sitting
|
|
20
|
+
directly beside a transcribed number. **A pointer beside a hard-coded figure does not stop the
|
|
21
|
+
figure rotting; only removing the figure does.** That is the durable half of this entry.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 0.2.50 (2026-09-07) — the NTP-withdrawal release
|
|
26
|
+
|
|
27
|
+
Paired with **Enterprise 0.45.0 / Community 0.2.52**. **NOT a floor bump: Community stays `>= 0.2.49`.**
|
|
28
|
+
|
|
29
|
+
**The teaching change is a REFUSAL rule: the NTP clock attestation is WITHDRAWN.** `utils/ntp_probe.mjs`
|
|
30
|
+
is deleted, the compliance phase's clock stage is a withdrawal record, and the three `complianceNtp*`
|
|
31
|
+
options are gone. An agent must not describe it, offer it, or plan around it.
|
|
32
|
+
**WITHDRAWN, and never real: there is no `NSAUDITOR_NTP_*` environment variable and there never was one.**
|
|
33
|
+
**`COMPLIANCE_NTP_STRICT` is WITHDRAWN too** — it was published to auditors and read by zero code in
|
|
34
|
+
either repo. **It is not on a roadmap either**, which inverts the
|
|
35
|
+
previous guidance: a hedge like "planned" or "not yet wired" is now a promise about unscheduled work
|
|
36
|
+
rather than a disclosure.
|
|
37
|
+
|
|
38
|
+
**Why, because a user will ask.** The probe accepted any reply of at least 48 bytes carrying a non-null
|
|
39
|
+
transmit timestamp and nothing else — no mode byte, no stratum check, no originate-timestamp echo — so
|
|
40
|
+
over unauthenticated UDP a datagram of the right shape produced a false clean reading, or a false abort
|
|
41
|
+
in strict mode, while the word printed beside it was *attestation*. And it measured the SCANNER's own
|
|
42
|
+
host clock, while every framework control about time synchronisation (PCI DSS 10.6.1, NIST SP 800-171 3.3.7, ISO/IEC 27001:2022 A.8.17 and CIS v8 8.4 — and NOT NIST CSF 2.0, which has no time-synchronisation subcategory at all) asks about the customer's estate.
|
|
43
|
+
|
|
44
|
+
**Point users at opt-in RFC 3161 timestamping instead** — `NSAUDITOR_TSA_URL`, an outbound call to a
|
|
45
|
+
third party and off by default; the `.tsr` time comes from the authority rather than from this host.
|
|
46
|
+
|
|
47
|
+
**⚠️ The attestation's SHAPE did not change.** `scan_attestation_<fw>.json` still carries all six `ntp`
|
|
48
|
+
keys, now as constants, because the envelope is a frozen schema id and every pack a customer already
|
|
49
|
+
holds carries them. A null `probedAt` is not a failed probe.
|
|
50
|
+
|
|
51
|
+
Plugin catalog UNCHANGED at 29 EE; all eight coverage matrices UNCHANGED.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
7
55
|
## 0.2.49 (2026-09-04) — the client-report release
|
|
8
56
|
|
|
9
57
|
Paired with **Enterprise 0.44.0 / Community 0.2.51**. **NOT a floor bump: Community stays `>= 0.2.49`.**
|
package/README.md
CHANGED
|
@@ -11,7 +11,11 @@ Works with **Claude Code**, **Claude Desktop**, **Cursor**, **Windsurf**, **VS C
|
|
|
11
11
|
|
|
12
12
|
## Current release
|
|
13
13
|
|
|
14
|
-
**0.2.
|
|
14
|
+
**0.2.51** — paired with **Enterprise 0.46.0 / Community 0.2.53**. ⚠️ **NOT a floor bump: Community stays >= 0.2.49.** `references/plugins.md` carried the retired `MVP-67` PCI density label; the enumeration is **72 — 19 covered, 9 partial, 44 out of scope with a stated reason**, derived from the shipped framework file. The line already told a reader to call `compliance_matrix` for the current triple and that did not save it: **a pointer beside a hard-coded number does not stop the number rotting; only removing the number does.**
|
|
15
|
+
|
|
16
|
+
**Prior: 0.2.50** — paired with **Enterprise 0.45.0 / Community 0.2.52**. ⚠️ **NOT a floor bump: Community stays >= 0.2.49.** New in this release's teaching, and it is a REFUSAL rule before it is a feature note: **the NTP clock attestation is WITHDRAWN** — the probe is deleted, the three `complianceNtp*` options are gone, there is no `NSAUDITOR_NTP_*` environment variable and there never was one, and it is NOT on a roadmap, so a hedge like "planned" is now a promise rather than a disclosure. The probe validated any reply of at least 48 bytes with a non-null transmit timestamp and nothing else — no mode byte, no stratum, no originate echo — and it measured the SCANNER's clock while every framework control about time synchronisation asks about the customer's estate. Point users at **opt-in RFC 3161 timestamping** instead (`NSAUDITOR_TSA_URL`; an outbound call to a third party, off by default), whose `.tsr` time comes from the authority rather than from the host. ⚠️ **The attestation's shape did NOT change** — all six `ntp` keys remain, now constants, because the envelope is a frozen schema id; a null `probedAt` is not a failed probe.
|
|
17
|
+
|
|
18
|
+
**Prior: 0.2.49** — paired with **Enterprise 0.44.0 / Community 0.2.51**. ⚠️ **NOT a floor bump: Community stays >= 0.2.49.** New in this release's teaching: **there is a Pro `report` subcommand** (`nsauditor-ai report --from <dir> --format executive|jira`) that turns a completed run into a client-facing HTML report or a Jira-importer CSV — with two limits an agent should state rather than let a user discover: the Jira import mapping has not been verified against a live Jira instance, and a value-less flag is a fatal error rather than a silent default; and **an S3 audit-trail gap now means BOTH streams are missing** (plugin 1020 cross-checks CloudTrail data-event coverage before reporting a missing server access log, so a gap disappearing after upgrade on a covered bucket is the fix working, while every uncertain answer — denied read, absent optional SDK, stopped trail, delivery error, prefix-scoped or one-sided selector — keeps the finding unchanged).
|
|
15
19
|
|
|
16
20
|
**Prior: 0.2.48** — paired with **Enterprise 0.43.0 / Community 0.2.50**. ⚠️ **NOT a floor bump: Community stays >= 0.2.49**, derived rather than reflexive — the one Community behaviour the Enterprise fix depends on already shipped there. New in this release's teaching: **a provider badge is now trustworthy** (an Enterprise scan whose cloud SDK failed to load used to report that provider as *audited*, because a plugin result carrying neither an error nor a skip flag falls through to `ran` and `auditedProviders` derives from `ran`; eighteen refusals across seventeen AWS and GCP plugins now carry their cause, so such a provider reads `errored` and drops out — a provider disappearing after upgrade is the fix, not a regression), and **an evidence gap states a cause, never an instruction** (the engine quoted whole thrown messages, so the loaders' `Install: npm install <pkg>@latest` reached the gap text of 7 SOC 2 / 2 GDPR / 12 NIST SP 800-171 controls — never quote a gap line to a user as remediation, and note that under air-gapped operation it cannot be followed at all). The two causes are now distinct — `plugin skipped:` vs `scanner error:` — because the remedies differ; and a GDPR Art. 32 report now fails closed on an Azure refusal where it previously failed nothing.
|
|
17
21
|
|
package/SKILL.md
CHANGED
|
@@ -16,9 +16,43 @@ description: >
|
|
|
16
16
|
|
|
17
17
|
# NSAuditor AI — Agent Skill
|
|
18
18
|
|
|
19
|
-
> **Version:** 0.2.
|
|
19
|
+
> **Version:** 0.2.51 (knowledge current as of **EE 0.46.0** · **requires CE ≥ 0.2.49**) — the PCI-citation-provenance release. **PCI DSS is 19 covered / 9 partial / 44 out of scope across 72 enumerated sub-requirements**; the other seven matrices are unchanged. ⚠️ **Do not cite `4.2.2.1` — it does not exist in PCI DSS v4.0.1** — and do not attribute Customized-Approach ineligibility to any appendix: the standard states it in each requirement's own Customized Approach Objective cell. Sampling is Section 6, which prescribes no sample size. For any PCI triple, call `compliance_matrix` rather than quoting a number from this file.
|
|
20
20
|
>
|
|
21
|
-
> **What EE 0.
|
|
21
|
+
> **What EE 0.45.0 teaches, and it is a REFUSAL rule before it is a feature note.**
|
|
22
|
+
> **⚠️ THE NTP CLOCK ATTESTATION IS WITHDRAWN. Do not describe it, offer it, or plan around it.**
|
|
23
|
+
> `utils/ntp_probe.mjs` is deleted, the compliance phase's clock stage is a withdrawal record, and the
|
|
24
|
+
> three options that gated it are gone.
|
|
25
|
+
> **WITHDRAWN and never real: there is no `NSAUDITOR_NTP_*` environment variable, and there never was.**
|
|
26
|
+
> **`COMPLIANCE_NTP_STRICT` is WITHDRAWN as well** — published to auditors, read by zero code in either
|
|
27
|
+
> repo. If a user asks how the scanner measures clock drift, the answer is that it does not — and the
|
|
28
|
+
> honest next sentence names the opt-in RFC 3161 path, which is off unless a Time-Stamp Authority is
|
|
29
|
+
> configured. **It is NOT on a roadmap:** a hedge like "planned" or "not yet wired" is now a promise
|
|
30
|
+
> about work nobody has scheduled, which is the opposite of the disclosure it used to be.
|
|
31
|
+
> **Why it was withdrawn rather than finished, because a user will ask and the reason is teachable.**
|
|
32
|
+
> The probe accepted any reply of at least 48 bytes carrying a non-null transmit timestamp and nothing
|
|
33
|
+
> else — no mode byte, no stratum check, no originate-timestamp echo — so over unauthenticated UDP a
|
|
34
|
+
> datagram of the right shape produced a false clean reading, or a false abort in strict mode, while
|
|
35
|
+
> the word printed beside it was *attestation*. **And it answered the wrong question:** it measured the
|
|
36
|
+
> SCANNER's own host clock, while every framework control that asks about time synchronisation —
|
|
37
|
+
> PCI DSS 10.6.1, NIST SP 800-171 3.3.7, ISO/IEC 27001:2022 A.8.17 and CIS v8 8.4 — asks about the
|
|
38
|
+
> CUSTOMER's estate, which this probe never read. ⚠️ **NIST CSF 2.0 is deliberately NOT in that list:
|
|
39
|
+
> it has no time-synchronisation subcategory at all.** Its `PR.PS-04` is *log-record generation*, which
|
|
40
|
+
> DEPENDS on accurate clocks without asking about them — do not cite it as a clock control.
|
|
41
|
+
> **What to point at instead: RFC 3161 trusted timestamping, untouched and opt-in.** Set
|
|
42
|
+
> `NSAUDITOR_TSA_URL` to a Time-Stamp Authority and each artifact ships a `.tsr` sidecar whose time
|
|
43
|
+
> comes from the AUTHORITY, not from this host, so a wrong host clock cannot corrupt it. An assessor
|
|
44
|
+
> comparing the pack's `generatedAt` against the token's signing time reads host skew more reliably
|
|
45
|
+
> than the withdrawn probe ever could, with a signature behind it. ⚠️ It is an OUTBOUND call to a third
|
|
46
|
+
> party and off by default — say both when you recommend it.
|
|
47
|
+
> **⚠️ THE ATTESTATION'S SHAPE DID NOT CHANGE, and that matters when you help someone diff two packs.**
|
|
48
|
+
> `scan_attestation_<fw>.json` still carries all six `ntp` keys — `driftSeconds`, `source`, `note`,
|
|
49
|
+
> `probedAt`, `error`, `staleness` — now as constants, because `nsauditor.scope-attestation/v1` is a
|
|
50
|
+
> frozen schema id and every pack a customer already holds carries them. `staleness.status` is
|
|
51
|
+
> `unknown` and its `reason` names the withdrawal. **A null `probedAt` is not a failed probe.**
|
|
52
|
+
> Plugin catalog UNCHANGED at 29 EE; all eight coverage matrices UNCHANGED; **peer floor UNCHANGED at
|
|
53
|
+
> CE ≥ 0.2.49** — derived, not a bump. CE 0.2.52 changes no scanner behaviour.
|
|
54
|
+
>
|
|
55
|
+
> **Prior: 0.2.49** — what EE 0.44.0 / CE 0.2.51 taught, and both items were about what a REPORT may claim.
|
|
22
56
|
> **(1) There is a `report` subcommand now, and it is Pro-gated.**
|
|
23
57
|
> `nsauditor-ai report --from <dir> --format executive|jira` turns a completed scan run under
|
|
24
58
|
> `--from` into a client-facing deliverable — an HTML report a consultant sends to their
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nsauditor-ai-agent-skill",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "AI Agent Skill for NSAuditor AI
|
|
3
|
+
"version": "0.2.51",
|
|
4
|
+
"description": "AI Agent Skill for NSAuditor AI — gives any AI coding agent built-in knowledge of NSAuditor's MCP tools, schemas, plugins, and security audit workflows.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nsauditor",
|
|
7
7
|
"ai-agent",
|
package/references/plugins.md
CHANGED
|
@@ -211,7 +211,7 @@ listings, and default pages.
|
|
|
211
211
|
> instead of passing them — the compliance layer only exists on this path.
|
|
212
212
|
|
|
213
213
|
|
|
214
|
-
> **EE plugin ID range.** As of EE 0.3.9 (2026-05-12), all EE plugins use the disjoint **1000+ ID range** to avoid CE collision. The earlier 020/021/022/023/030/040/050/060 IDs were renumbered to 1020/1021/1022/1023/1030/1040/1050/1060. CE reserves 001-099. EE plugins audit AWS / GCP / Azure cloud substrate end-to-end against **every shipped compliance framework** — SOC 2, HIPAA §164.312, NIST CSF 2.0, PCI DSS v4.0.1, ISO/IEC 27001:2022, CIS Controls v8, GDPR Article 32 (Art. 32 infrastructure substrate only, NOT GDPR compliance) and NIST SP 800-171 Rev 2 (examine-method evidence substrate for CMMC Level 2 preparation, never a certification). **The authoritative enumeration, with each framework's citation level and ship version, is in `SKILL.md` — it is not repeated here.** Each plugin's findings route to every one of them via the framework-agnostic engine plus a per-framework control-citation map, so a report cites only its own framework's ids (SOC 2 `CC6.1`, HIPAA `§164.312(a)(1)`, NIST `PR.AA-01`, PCI `Req 1.2.1`, ISO `A.8.24`, CIS `4.4`, GDPR `Art.32(1)(b)`, 800-171 `3.13.16`) — closing cross-framework citation leak across every ordered pair. ⚠️ 800-171 and PCI DSS ids COLLIDE exactly (`3.5.1` is real in both), so an 800-171 citation always carries its qualifier. Every plugin is enterprise-gated by the `cloudScanners` capability and runs against customer-supplied cloud credentials. Multi-framework workflow: `--compliance all` (every shipped framework), or any CSV subset such as `--compliance soc2,hipaa,nist-csf,pci-dss,iso-27001,cis-v8,gdpr,nist-800-171` — one scan produces a separate, complete auditor-ready evidence pack per framework requested. **Zero BAA required** for HIPAA — Zero Data Exfiltration architecture means ePHI never leaves customer infrastructure (and CHD never leaves for PCI DSS CDE-isolation threat models). **NIST CSF 2.0 Implementation Tiers 1-4** (Partial / Risk-Informed / Repeatable / Adaptive) are organizational-maturity claims explicitly OOS for infrastructure scanning — surfaced in renderer as cover-page Tiers OOS disclaimer section (markdown + HTML parity); pair with NIST-aware GRC platforms (Tugboat Logic, Drata NIST CSF, Vanta NIST CSF, AuditBoard). **PCI DSS v4.0.1 specifics**: sub-requirement-level mapping for QSA Report on Compliance workflow (
|
|
214
|
+
> **EE plugin ID range.** As of EE 0.3.9 (2026-05-12), all EE plugins use the disjoint **1000+ ID range** to avoid CE collision. The earlier 020/021/022/023/030/040/050/060 IDs were renumbered to 1020/1021/1022/1023/1030/1040/1050/1060. CE reserves 001-099. EE plugins audit AWS / GCP / Azure cloud substrate end-to-end against **every shipped compliance framework** — SOC 2, HIPAA §164.312, NIST CSF 2.0, PCI DSS v4.0.1, ISO/IEC 27001:2022, CIS Controls v8, GDPR Article 32 (Art. 32 infrastructure substrate only, NOT GDPR compliance) and NIST SP 800-171 Rev 2 (examine-method evidence substrate for CMMC Level 2 preparation, never a certification). **The authoritative enumeration, with each framework's citation level and ship version, is in `SKILL.md` — it is not repeated here.** Each plugin's findings route to every one of them via the framework-agnostic engine plus a per-framework control-citation map, so a report cites only its own framework's ids (SOC 2 `CC6.1`, HIPAA `§164.312(a)(1)`, NIST `PR.AA-01`, PCI `Req 1.2.1`, ISO `A.8.24`, CIS `4.4`, GDPR `Art.32(1)(b)`, 800-171 `3.13.16`) — closing cross-framework citation leak across every ordered pair. ⚠️ 800-171 and PCI DSS ids COLLIDE exactly (`3.5.1` is real in both), so an 800-171 citation always carries its qualifier. Every plugin is enterprise-gated by the `cloudScanners` capability and runs against customer-supplied cloud credentials. Multi-framework workflow: `--compliance all` (every shipped framework), or any CSV subset such as `--compliance soc2,hipaa,nist-csf,pci-dss,iso-27001,cis-v8,gdpr,nist-800-171` — one scan produces a separate, complete auditor-ready evidence pack per framework requested. **Zero BAA required** for HIPAA — Zero Data Exfiltration architecture means ePHI never leaves customer infrastructure (and CHD never leaves for PCI DSS CDE-isolation threat models). **NIST CSF 2.0 Implementation Tiers 1-4** (Partial / Risk-Informed / Repeatable / Adaptive) are organizational-maturity claims explicitly OOS for infrastructure scanning — surfaced in renderer as cover-page Tiers OOS disclaimer section (markdown + HTML parity); pair with NIST-aware GRC platforms (Tugboat Logic, Drata NIST CSF, Vanta NIST CSF, AuditBoard). **PCI DSS v4.0.1 specifics**: sub-requirement-level mapping for QSA Report on Compliance workflow (72 of ~250 sub-requirements are enumerated - 19 covered, 9 partial, 44 declared out of scope with a stated reason; the rest are not enumerated at all. **For the current covered/partial/OOS triple, call `compliance_matrix` with `framework: "pci-dss"`** — it derives from the shipped framework map at call time. A figure typed here goes stale: this sentence carried `20 + 8 + 39` against a shipped `19 / 9 / 39`, the same stale triple that had already propagated to a public page once). **Req 12 Information Security Program OOS-by-design entirely** (Targeted Risk Analysis Req 12.3.1 + Customized Approach Documentation Req 12.3.2 + TPSP Responsibility Matrix Req 12.8.5 + IR personnel training Req 12.10.4 all Defined-only per Appendix E). **Req 5 anti-malware + Req 9 physical OOS-entirely** (endpoint EDR + facility-tier). **Req 3 stored CHD OOS-by-design at technical-control layer** pending operator CDE attestation via CDE Data Flow Diagram per Req 1.2.4 + Req 12.5.1. **Defined-vs-Customized Approach discipline per Appendix E** — 15 Defined-only sub-requirements enforced at schema layer. CAO text MVP-deferred to EE 0.11.1 patch. **Card-brand AOC enforcement priority view** (Visa CISP / Mastercard SDP / Amex DSOP / Discover DISC — the actual penalty mechanism). Pair with PCI-aware GRC platforms (Drata PCI, Vanta PCI, AuditBoard PCI module, OneTrust GRC).
|
|
215
215
|
|
|
216
216
|
| ID | Name | Tier | Purpose | SOC 2 Controls |
|
|
217
217
|
|----|------|------|---------|----------------|
|