component-definition-builder
Skill8 starsChanged 10 months agoMITView on GitHub
Create and manage OSCAL component definitions for reusable security control implementations. Inspired by CivicActions components and community patterns. Use for building component libraries and shared control implementations.
In this repository15 other files it gives its agents.
- advanced-oscal-validatorSkill
- compliance-report-generatorSkill
- control-implementation-generatorSkill
- control-mapperSkill
- controls-extractorSkill
- evidence-collectorSkill
- oscal-catalog-providerSkill
- oscal-control-mapperSkill
- oscal-parserSkill
- oscal-ssp-validatorSkill
- oscal-text-converterSkill
- oscal-validatorSkill
- oscal-visualizerSkill
- risk-assessorSkill
- workflow-orchestratorSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
16 rules. About 0 are common, 13 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈13
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Create and manage OSCAL component definitions for reusable security control implementations, enabling consistent compliance across systems.
- Distinctive: line 12
Use this skill when you need to:
- Distinctive: line 13
Create reusable component definitions
- Distinctive: line 14
Document how a product implements controls
- Distinctive: line 255
When building an SSP from components:
- Distinctive: line 259
If multiple components implement same control, merge or select
- Distinctive: line 283
CRITICAL: All generated component definitions MUST be valid OSCAL.
- Distinctive: line 287
After generating a component definition, you MUST:
- Distinctive: line 291
Ensure all UUIDs are unique within the document
- Very specific: line 292
Never use placeholders like [generate-uuid] in final output
- Very specific: line 310
Use oscal-validator or advanced-oscal-validator skill for validation
- Distinctive: line 314
No orphaned control references
- Very specific: line 318
All components have required fields: uuid, type, title, description
- Distinctive: line 337
When creating a component definition:
- Distinctive: line 369
When asked "Create a component definition for Azure AD":
- Distinctive: line 375
Add responsible roles (IAM Admin, Security Admin)
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Component Definition Builder Skill
Create and manage OSCAL component definitions for reusable security control implementations, enabling consistent compliance across systems.
When to Use This Skill
Use this skill when you need to:
- Create reusable component definitions
- Document how a product implements controls
- Build component libraries for common services
- Merge multiple components into SSPs
- Define capability-based control implementations
⛔ Authoritative Data Requirement
Component definitions require control catalogs to reference valid control IDs.
What Requires Authoritative Sources
| Element | Source Needed |
| Control IDs (e.g., AC-2) | OSCAL catalog |
| Control statements | OSCAL catalog |
| Parameter values | Profile or organizational settings |
What You CAN Generate (Templates & Structure)
- Component definition structure
- Capability descriptions (user-stated)
- Implementation approach patterns
- Responsibility designations
What You CANNOT Generate
- Valid control IDs without a catalog
- Control requirement text without a catalog
- Vendor-specific implementation claims without documentation
When Building Components
To create a component definition, I need:
• The control catalog (to reference valid control IDs)
• Your description of how this component implements those controls
• Responsibility model (implemented, shared, inherited)
I will use valid control IDs from your catalog — not from training data.Component Types
| Type | Description | Examples |
| Software | Applications | Web servers, databases |
| Hardware | Physical devices | Firewalls, HSMs |
| Service | Cloud/managed services | AWS S3, Azure AD |
| Policy | Governance documents | Security policies |
| Process | Procedures | Change management |
| Plan | Planning documents | Contingency plans |
| Guidance | Reference material | Standards, baselines |
Component Definition Structure
component-definition:
uuid: [unique-id]
metadata:
title: AWS S3 Security Component
version: 1.0.0
components:
- uuid: [component-uuid]
type: service
title: Amazon S3
description: Object storage service
control-implementations:
- uuid: [impl-uuid]
source: NIST 800-53 Moderate
description: S3 security controls
implemented-requirements:
- control-id: SC-28
description: S3 encrypts data at rest using AES-256
- control-id: AC-3
description: S3 bucket policies enforce access controlHow to Build Component Definitions
Step 1: Define Component Metadata
component:
uuid: [generate-uuid]
type: service
title: [Product/Service Name]
description: |
Brief description of the component
and its security relevance.
properties:
- name: vendor
value: [Vendor Name]
- name: version
value: [Version]Step 2: Identify Applicable Controls
For the component, determine:
- What security controls does it help implement?
- Is implementation full or partial?
- What specific features address each control?
Step 3: Document Control Implementations
For each control:
implemented-requirement:
control-id: SC-28
uuid: [generate-uuid]
description: |
[How the component implements this control]
remarks: |
[Additional context, limitations, configuration needed]
props:
- name: implementation-status
value: implemented # or partial, planned
responsible-roles:
- role-id: cloud-administratorStep 4: Add Responsible Roles
Define who manages the component:
responsible-roles:
- role-id: system-owner
party-uuids: [party-uuid]
- role-id: cloud-admin
party-uuids: [party-uuid]Common Component Templates
Cloud Service Component
component:
type: service
title: [Cloud Service Name]
control-implementations:
# Access Control
- control-id: AC-2
description: |
[Service] provides account management through IAM.
User provisioning and deprovisioning is managed via...
- control-id: AC-3
description: |
Access enforcement implemented through [mechanism].
Policies define permitted actions...
# Audit
- control-id: AU-2
description: |
[Service] logs [event types] to [destination].
Retention period: [duration]
# Encryption
- control-id: SC-28
description: |
Data at rest encrypted using [algorithm].
Key management via [service/method].Software Component
component:
type: software
title: [Application Name]
properties:
- name: vendor
value: [Vendor]
- name: version
value: [Version]
- name: deployment-model
value: [on-prem/cloud/hybrid]
control-implementations:
- control-id: IA-2
description: |
Application implements authentication through...
MFA supported via...Policy Component
component:
type: policy
title: Information Security Policy
control-implementations:
- control-id: AC-1
description: |
The organization's Access Control Policy establishes:
- Purpose and scope
- Roles and responsibilities
- Compliance requirements
Policy location: [document reference]
Review frequency: AnnualComponent Library Patterns
Organize by Service Category
components/
├── identity/
│ ├── azure-ad.json
│ ├── okta.json
│ └── aws-sso.json
├── storage/
│ ├── aws-s3.json
│ └── azure-blob.json
└── monitoring/
├── splunk.json
└── datadog.jsonVersion Components
metadata:
version: 2.1.0
revision-history:
- published: 2024-01-15
version: 2.1.0
remarks: Added SC-28(1) implementationMerging Components into SSP
When building an SSP from components:
- Select applicable components
- Resolve overlapping implementations
- If multiple components implement same control, merge or select
- Add system-specific context
- Fill gaps
- Controls not covered by components need custom implementation
Component Inheritance
Components can indicate inheritance:
implemented-requirement:
control-id: PE-3
description: |
Physical access control inherited from
AWS data center security controls.
props:
- name: implementation-status
value: inherited
- name: inherited-from
value: AWS InfrastructureValidation Requirements
CRITICAL: All generated component definitions MUST be valid OSCAL.
Required Validation Steps
After generating a component definition, you MUST:
- UUID Validation
- Generate valid RFC 4122 UUIDs (format:
550e8400-e29b-41d4-a716-446655440000) - Ensure all UUIDs are unique within the document
- Never use placeholders like
[generate-uuid]in final output
- Generate valid RFC 4122 UUIDs (format:
- Metadata Completeness
{ "uuid": "[valid-uuid]", "metadata": { "title": "[Component Name]", "version": "1.0.0", "oscal-version": "1.2.0", "last-modified": "2026-01-27T00:00:00Z" } } - Schema Validation
- Validate against NIST OSCAL Component Definition JSON schema:
https://raw.githubusercontent.com/usnistgov/OSCAL/v1.2.0/json/schema/oscal_component_schema.json - Use
oscal-validatororadvanced-oscal-validatorskill for validation
- Validate against NIST OSCAL Component Definition JSON schema:
- Control Reference Validation
- All
control-idvalues must exist in the referenced catalog - No orphaned control references
- All
- Structure Validation
- Component definition has valid root element:
component-definition - All components have required fields:
uuid,type,title,description - Control implementations reference valid source
- Component definition has valid root element:
Validation Workflow
1. Generate component definition structure
2. Populate with UUIDs (RFC 4122 format)
3. Add complete metadata
4. Validate structure
5. Run oscal-validator skill
6. Fix any errors
7. Output validated OSCALOutput Format
When creating a component definition:
COMPONENT DEFINITION
====================
Title: Amazon Web Services S3
Type: Service
Version: 1.0.0
Control Implementations:
- Baseline: NIST 800-53 Moderate
- Controls Addressed: 15
Coverage:
✅ SC-28: Data at Rest Encryption
✅ AC-3: Access Enforcement
✅ AU-2: Audit Events
✅ SC-8: Transmission Confidentiality
...
Validation Status:
✅ Schema: Valid
✅ UUIDs: All unique and valid format
✅ Metadata: Complete
✅ Control References: All valid
Generated Files:
- aws-s3-component.json (OSCAL format - VALIDATED)Example Usage
When asked "Create a component definition for Azure AD":
- Set up component metadata (Azure AD, Microsoft, service type)
- Identify relevant controls (AC, IA, AU families primarily)
- For each control, document how Azure AD implements it
- Note any partial implementations or prerequisites
- Add responsible roles (IAM Admin, Security Admin)
- Generate valid OSCAL component definition JSON
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

