Assess a target software system against 21 CFR Part 11 using the part11-foundation knowledge base, including applicability triage, node selection, enforcement-discretion checks, and structured draft assessment output.
Use this skill to produce conservative draft assessments of software systems against 21 CFR Part 11.
This skill is the workflow layer only. It is not the knowledge base itself. The canonical corpus stays in the part11-foundation repository under core/.
For fast navigation inside this skill package, start with START-HERE.md and references/index.yaml. They point back to canonical files under the resolved foundation repo. They do not replace them.
FOUNDATION_ROOT/core/regulations/*.yaml authoritative_text — binding CFR node textFOUNDATION_ROOT/core/guidance/scope-and-application-2003.yaml — FDA enforcement posture and interpretive contextFOUNDATION_ROOT/core/regulations/*.yaml repo_interpretation — non-authoritative assessment guidanceUse this skill when:
part11-foundation repository is available directly or through a separate checkoutBefore starting, you need:
part11-foundation repositoryIf the target system or foundation root cannot be identified, stop and ask for the missing path. Otherwise inspect the target repo first and ask follow-up questions only if the assessment is still blocked.
Resolve the foundation root before reading any core/ files.
Resolution order (implemented in scripts/resolve-foundation-root.sh):
PART11_FOUNDATION_ROOT environment variable (fail closed if set but invalid)${XDG_CONFIG_HOME:-$HOME/.config}/part11-assessor/config (single line, absolute path)$HOME/github/part11-foundation.git, check sibling)Run scripts/resolve-foundation-root.sh from this skill package. Once resolved, treat that absolute path as FOUNDATION_ROOT and read all referenced files from there.
Before triage, explore the target repo directly. Use code, docs, infrastructure config, tests, and any in-repo architecture or procedural material as assessment evidence.
Ask follow-up questions only when a required decision cannot be derived from the reviewed corpus and the assessment would otherwise be blocked.
Read FOUNDATION_ROOT/core/applicability/triage.yaml.
Answer:
FOUNDATION_ROOT/core/applicability/triage.yaml under system_classification.classification_guidance. Key rule: if any record-affecting data path crosses the boundary between the controlled environment and an uncontrolled network (including the public internet), classify as hybrid or open, not closed. A system with strong transmission controls (TLS, API keys, MDM) is still hybrid if regulated data crosses the public internet.If Part 11 does not apply, state why and stop.
Produce a structured triage scope block conforming to FOUNDATION_ROOT/core/applicability/triage-output-template.yaml. This block must use exact enum values and the canonical node-family vocabulary. Include it in the assessment output before any findings.
Required scope fields:
scope_confidence, record_boundary_status, predicate_rule_mapping_status — use final, provisional, or tbdsystem_of_record_status — use confirmed, provisional, tbd, or not_applicable
provisional: some evidence exists but the decision is not finalizedtbd: no sufficient evidence to name the mapping or decision. tbd is weaker than provisional. When a tbd field drives applicability, prefer Not assessed over Partial unless the technical control is clearly present regardless of how the open decision is resolved.evidence_basis — use repo-only, repo-plus-external-evidence, or repo-plus-runtime-or-interviewssystem_classification — use "closed", "open", or "hybrid"electronic_records_in_scope, electronic_signatures_in_scope, legacy_system — use "yes", "no", or "tbd"in_scope_node_families, excluded_node_families — use only canonical family IDsRecord-boundary language rule: When record_boundary_status is provisional or tbd, do not use definitive record-boundary language. Do not write "X is the electronic record" or "Y is the system of record." Use conditional phrasing such as "X appears to serve as the electronic record, pending final record-boundary determination."
Read FOUNDATION_ROOT/core/predicate-rule-index/index.yaml.
Identify the predicate-rule families that create the underlying obligations. Part 11 is an overlay, not a replacement.
Read FOUNDATION_ROOT/core/index/node-inventory.yaml.
Node selection must derive from in_scope_node_families and excluded_node_families in the triage output, not only from prose reasoning.
§11.10 child nodes; exclude 11.30§11.10 and 11.30 nodessubpart_c nodessubpart_c§11.1), implementation nodes (§11.2), and definition nodes (§11.3) are always retrievable regardless of the family listsFilter by assessment_role: direct. Collect evidence at direct nodes unless parent context is needed.
Consult FOUNDATION_ROOT/core/checklists/control-family-evidence-map.yaml while exploring the target repo, infrastructure, and documentation.
For each in-scope control family, use the evidence map to know what to look for:
look_for_in_code — source code patterns and logiclook_for_in_infrastructure — IaC, cloud config, network architecturelook_for_in_docs — procedures, policies, and operational documentationlook_for_in_external_evidence — governance artifacts outside the codebasecommon_false_positives — patterns that look like compliance evidence but are notRead FOUNDATION_ROOT/core/guidance/scope-and-application-2003.yaml.
Before flagging a gap, check whether the node is subject to enforcement discretion. Do not label an enforcement-discretion node as straightforward noncompliance without noting the guidance position and remaining predicate-rule expectations.
Assessment depth by enforcement status:
For each in-scope direct node, read the corresponding YAML file under FOUNDATION_ROOT/core/regulations/.
For each node:
authoritative_text as the binding requirementfda_guidance.summary for enforcement-discretion contextrepo_interpretation.review_questions and common_gaps to structure the reviewApply the rating rubric from FOUNDATION_ROOT/core/checklists/rating-rubric.yaml:
11.10.a, 11.10.d_g_h, 11.10.i_k1, subpart_c) when evidence is repo-only and documentation is draft-only or approval records are absent.Observation. Override to a higher severity only when a clear predicate-rule gap is independently evidenced in the reviewed corpus — not merely inferred. When overriding, state the specific predicate-rule obligation that justifies the higher severity.tbd vs provisional downstream effects:
tbd field is the primary driver of whether a node is in scope, prefer Not assessed over Partial unless the technical control is clearly present regardless of how the open decision is resolved.provisional field affects a node, Partial is appropriate where technical controls exist. Adequate remains blocked.External dependencies:
Partial and note the external dependency explicitly. Do not rate Adequate based on the assumption that the external service is adequate. Do not rate Not assessed if the repo-side controls are clearly present — the external dependency is a gap in evidence, not a gap in the control.Keep missing evidence separate from actual design or control gaps.
Use:
FOUNDATION_ROOT/docs/assessment-output-template.mdFOUNDATION_ROOT/docs/example-assessment.md — use when assessing a mature system with governed evidence and clear record-of-record statusFOUNDATION_ROOT/docs/example-assessment-supporting-pipeline.md — use when assessing a supporting pipeline with provisional scope, repo-only evidence, or incomplete governanceEvery output must:
This is a draft assessment for human QA/regulatory review. It is not a compliance determination.core/regulations/*.yaml source files usedAdequate or Not applicable. Do not skip any. Every Partial, Gap, Not assessed, and Enforcement discretion finding must have its own detailed section with authoritative text, FDA guidance position, observation, gap or concern, recommendation, evidence needed, and predicate-rule dependency.Run FOUNDATION_ROOT/core/checklists/assessment-self-review.md before finalizing output.
If any check fails, go back and correct the affected findings.
framework nodes as standalone evidence-bearing obligationsCritical, Major, Minor, Observationprovisional or tbd, say so before any node conclusionsrepo-only, Adequate is limited to controls fully supported by repo evidence including approved procedural documentationIf the available information is not enough to answer a triage question or assess a node:
Not assessedWhen the target system spans multiple repositories:
This skill is not self-contained.
It depends on a separate accessible part11-foundation checkout. Prefer PART11_FOUNDATION_ROOT when the target system is in another repository.