Skip to content

feat(mcsb): add Microsoft Cloud Security Benchmark security skill - #2499

Open
nguyena2 wants to merge 17 commits into
mainfrom
feat/mcsb-security-skill
Open

feat(mcsb): add Microsoft Cloud Security Benchmark security skill#2499
nguyena2 wants to merge 17 commits into
mainfrom
feat/mcsb-security-skill

Conversation

@nguyena2

@nguyena2 nguyena2 commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Description

This PR adds a new MCSB (Microsoft Cloud Security Benchmark v2) security skill and wires it into the existing security planning and review workflow. The skill provides a durable control-domain taxonomy for assessing Azure cloud resources, with crosswalks to NIST SP 800-53 Rev. 5 and CIS Controls v8.1, while deliberately deferring volatile, per-service control lookups to runtime retrieval.

The change is additive: it introduces the skill and its reference set, registers it in the relevant collections and generated plugin outputs, and updates the security agents and standards-mapping instructions so that MCSB is loaded when Azure cloud resources are detected.

New MCSB skill

The skill lives under .github/skills/security/mcsb/ and separates durable control-domain content from volatile per-service content.

  • Added .github/skills/security/mcsb/SKILL.md as the skill entrypoint, defining metadata, the normative reference list, the durable-versus-volatile content distinction, a runtime lookup playbook reference, the 12 control domains, and stated mappings to NIST SP 800-53 Rev. 5 and CIS Controls v8.1.
  • Added references/00-control-index.md with the domain catalog (NS, IM, PA, DP, AM, LT, IR, PV, ES, BR, DS, AI) and a domain-level NIST 800-53 and CIS Controls cross-reference matrix.
  • Added 12 domain reference files, each with an objective, assessment checklist, controls and mitigations, anti-patterns, a NIST/CIS crosswalk, and volatile-lookup guidance:
    • 01-network-security.md (NS), 02-identity-management.md (IM), 03-privileged-access.md (PA), 04-data-protection.md (DP), 05-asset-management.md (AM), 06-logging-threat-detection.md (LT), 07-incident-response.md (IR), 08-posture-vulnerability-management.md (PV), 09-endpoint-security.md (ES), 10-backup-recovery.md (BR), 11-devops-security.md (DS), and 12-ai-security.md (AI).
    • The AI Security reference notes Security Planner handling when raiEnabled is true.
  • Added references/lookup-playbook.md describing the skill as the durable control-domain taxonomy with a representative domain-grain crosswalk, and guidance for retrieving volatile service-specific controls at runtime.

Security planning and assessment integration

Loading MCSB is gated on detecting Azure cloud resources, so non-Azure workloads are unaffected.

  • Updated security-planner.agent.md to add an Azure cloud resources trigger that loads the mcsb skill in phases 3 and 4, and to use the MCSB stable control-domain taxonomy and crosswalk in phase 3 while delegating volatile per-service lookups.
  • Updated security-reviewer.agent.md to add mcsb to the example security skills for reference resolution and to the assessable skills list.
  • Updated codebase-profiler.agent.md to add mcsb to skill resolution examples and to add technology signals for Azure Bicep, ARM templates, Terraform with the azurerm provider, Azure-targeting Azure Pipelines, and Azure service references.
  • Updated skill-assessor.agent.md to add mcsb to skill resolution examples, generalize index handling to support control or benchmark indexes (including references/00-control-index.md), and treat control-domain identifiers as the assessment grain for benchmark skills.
  • Updated standards-mapping.instructions.md to delegate only MCSB per-service control mappings, load mcsb for Azure cloud resources, and retain delegation for volatile per-service lookups.

Collection and plugin registration

  • Registered the mcsb skill in collections/security.collection.yml and collections/hve-core-all.collection.yml with kind: skill and maturity: experimental.
  • Added a describing row in collections/security.collection.md and collections/hve-core-all.collection.md.
  • Regenerated plugin outputs: added mcsb rows to plugins/security/README.md and plugins/hve-core-all/README.md, and added the skill symlinks under both plugin skills/security/ paths.

Related Issue(s)

None

Type of Change

Select all that apply:

Code & Documentation:

  • Bug fix (non-breaking change fixing an issue)
  • New feature (non-breaking change adding functionality)
  • Breaking change (fix or feature causing existing functionality to change)
  • Documentation update

Infrastructure & Configuration:

  • GitHub Actions workflow
  • Linting configuration (markdown, PowerShell, etc.)
  • Security configuration
  • DevContainer configuration
  • Dependency update

AI Artifacts:

  • Reviewed contribution with prompt-builder agent and addressed all feedback
  • Copilot instructions (.github/instructions/*.instructions.md)
  • Copilot prompt (.github/prompts/*.prompt.md)
  • Copilot agent (.github/agents/*.agent.md)
  • Copilot skill (.github/skills/*/SKILL.md)
  • Copilot hook (.github/hooks/*/*.json)
  • Eval spec added/updated for changed AI artifacts (evals/)

Note for AI Artifact Contributors:

  • Agents: Research, indexing/referencing other project (using standard VS Code GitHub Copilot/MCP tools), planning, and general implementation agents likely already exist. Review .github/agents/ before creating new ones.
  • Skills: Must include both bash and PowerShell scripts. See Skills.
  • Model Versions: Only contributions targeting the latest Anthropic and OpenAI models will be accepted. Older model versions (e.g., GPT-3.5, Claude 3) will be rejected.
  • See Agents Not Accepted and Model Version Requirements.

Other:

  • Script/automation (.ps1, .sh, .py)
  • Other (please describe):

Sample Prompts (for AI Artifact Contributions)

User Request:

Run a security assessment on this Azure Bicep infrastructure against the Microsoft Cloud Security Benchmark.

Execution Flow:

  1. The codebase-profiler subagent detects Azure signals (Bicep, ARM, Terraform azurerm, Azure Pipelines, or Azure service references) and resolves the mcsb skill.
  2. The security-planner agent loads the mcsb skill in phases 3 and 4 and uses the stable control-domain taxonomy and NIST/CIS crosswalk, delegating volatile per-service lookups.
  3. The skill-assessor subagent reads references/00-control-index.md, treats each control-domain identifier (NS, IM, PA, and so on) as the assessment grain, and evaluates the codebase against each domain's checklist, controls, and anti-patterns.
  4. Volatile, per-service control specifics are retrieved at runtime per the lookup playbook rather than from static content.

Output Artifacts:

Security planning and review findings organized by MCSB control domain, each mapped to NIST SP 800-53 Rev. 5 and CIS Controls v8.1 references. No new files are written to the repository by running the skill; the skill supplies reference content consumed by the security agents.

Success Indicators:

The security planner and reviewer surface MCSB domain identifiers in their findings, Azure resources trigger MCSB loading, and each finding cites the corresponding domain reference and framework crosswalk.

Note

Human review is recommended for the agent-populated Sample Prompts content above.

Testing

Automated validation commands run during PR generation:

  • npm run lint:md — Passed (0 errors).
  • npm run spell-check — Passed (0 issues).
  • npm run lint:frontmatter — Passed (848 files, 0 errors).
  • npm run validate:skills — Passed (mcsb and 52 other skills, 0 errors).
  • npm run lint:md-links — Passed.
  • npm run lint:ps — Passed (all files clean).
  • npm run eval:lint:schema — Passed (10 eval specs, coverage complete).
  • npm run plugin:generate — Passed; regeneration produced no drift.
  • npm run docs:test — Skipped; the Docusaurus subproject has no installed dependencies in this environment (jest: not found). No Docusaurus files were changed.

Security analysis of the diff found no sensitive data, secrets, or dependency changes. The change is additive documentation-style reference content with no executable scripts.

Manual testing was not performed.

Note

Add manual testing descriptions when applicable.

Checklist

Required Checks

  • Documentation is updated (if applicable)
  • Files follow existing naming conventions
  • Changes are backwards compatible (if applicable)
  • Tests added for new functionality (if applicable) (N/A — reference-content skill with no executable code paths to test)

AI Artifact Contributions

  • Used /prompt-analyze to review contribution
  • Addressed all feedback from prompt-builder review
  • Verified contribution follows common standards and type-specific requirements

Required Automated Checks

The following validation commands must pass before merging:

  • Markdown linting: npm run lint:md
  • Spell checking: npm run spell-check
  • Frontmatter validation: npm run lint:frontmatter
  • Skill structure validation: npm run validate:skills
  • Link validation: npm run lint:md-links
  • PowerShell analysis: npm run lint:ps
  • Eval spec schema and coverage (if AI artifacts changed): npm run eval:lint:schema
  • Plugin freshness: npm run plugin:generate
  • Docusaurus tests: npm run docs:test (Skipped — docs subproject dependencies not installed in this environment; no Docusaurus files changed)

Security Considerations

  • This PR does not contain any sensitive or NDA information
  • Any new dependencies have been reviewed for security issues (N/A — no dependency changes)
  • Security-related scripts follow the principle of least privilege (N/A — no security scripts modified)

GHCP Artifact Maturity

Warning

This PR includes experimental GHCP artifacts that may have breaking changes.

  • .github/skills/security/mcsb/SKILL.md
File Type Maturity Notes
security/mcsb/SKILL.md Skill ⚠️ experimental Pre-release only
security-planner.agent.md Agent ✅ stable All builds
security-reviewer.agent.md Agent ✅ stable All builds
subagents/codebase-profiler.agent.md Agent ✅ stable All builds
subagents/skill-assessor.agent.md Agent ✅ stable All builds
standards-mapping.instructions.md Instructions ✅ stable All builds

GHCP Maturity Acknowledgment

  • I acknowledge this PR includes non-stable GHCP artifacts
  • Non-stable artifacts are intentional for this change

nguyena2 added 2 commits July 23, 2026 15:26
…d references

- introduce control index and individual domain references for MCSB v2
- implement assessment checklists, controls, and mitigations for each domain
- establish cross-reference matrix with NIST and CIS Controls
- create lookup playbook for retrieving volatile service-specific controls

🔒 - Generated by Copilot
@nguyena2
nguyena2 requested a review from a team as a code owner July 23, 2026 18:18
@codecov-commenter

codecov-commenter commented Jul 23, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.74%. Comparing base (0282ade) to head (84a20a5).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #2499      +/-   ##
==========================================
- Coverage   82.75%   82.74%   -0.01%     
==========================================
  Files         155      155              
  Lines       20960    20960              
  Branches       13       13              
==========================================
- Hits        17345    17344       -1     
- Misses       3613     3614       +1     
  Partials        2        2              
Flag Coverage Δ
docusaurus 94.44% <ø> (ø)
pester 86.18% <ø> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.
see 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Eval Execution

Status: Passed — no merge-blocking failures (10 advisory assertion failure(s) present)

  • Artifacts evaluated: 8
  • Specs run: 8
  • Assertions passed: 36
  • Assertions failed (blocking): 0
  • Assertions failed (advisory): 10
  • Failed specs (merge-blocking): 0
Artifact Kind Status Specs Passed Failed (blocking) Failed (advisory)
gen-data-spec agent ⚠️ advisory-fail 1 4 0 1
gen-jupyter-notebook agent ✅ pass 1 5 0 0
security-planner agent ✅ pass 1 5 0 0
security-reviewer agent ✅ pass 1 5 0 0
codebase-profiler agent ⚠️ advisory-fail 1 9 0 1
skill-assessor agent ⚠️ advisory-fail 1 2 0 8
standards-mapping instruction ✅ pass 1 3 0 0
mcsb skill ✅ pass 1 3 0 0

Legend — ✅ clean · ⚠️ advisory failures only (non-blocking) · ⏭️ skipped · ❌ merge-blocking failure

Only Failed specs (merge-blocking) gates this PR. Advisory assertion failures are signal-quality checks captured during iteration; review them, but they do not block merge and may be acceptable.

Comment thread .github/skills/security/mcsb/SKILL.md
Comment thread .github/skills/security/mcsb/SKILL.md
@nguyena2

Copy link
Copy Markdown
Contributor Author

HVE Builder rubric review — SKILL.md (static analysis)

Ran the hve-builder review in static-analysis mode against .github/skills/security/mcsb/SKILL.md (the skill entrypoint loaded by the Security Planner and Security Reviewer agents). Assessed against the HVE Builder requirements catalog and review rubric.

Result

Field Value
Mode review (read-only, static)
Static verdict Pass — no Critical/High findings
Behavior gate Satisfied-and-skipped — no-runtime knowledge-reference target (no model actions, tool dispatch, or executable decision rules of its own)
Validation Not requested
Overall Pass

Strengths

  • Correct artifact type and progressive disclosure: the entrypoint is compact and routes all detail one level deep into references/.
  • Durable-vs-volatile split is stated clearly, with per-service lookups delegated to the Researcher Subagent via references/lookup-playbook.md.
  • Licensing posture is right for Microsoft Learn Terms-of-Use content: paraphrase-first, explicit "does not reproduce verbatim" attribution, canonical source cited.
  • Version discipline: v2/preview status, retrieval date, the GS→AI domain change, and a "re-verify before a compliance decision" caveat are all surfaced.
  • Clean skill frontmatter (name, description, license, user-invocable, metadata); no prohibited tools/model/agent/handoffs/applyTo fields. user-invocable: false is appropriate for a planner/reviewer-consumed knowledge pack.

Recommended polish (non-blocking)

  1. Medium — em dashes in the Overview paragraph violate the repository writing-style convention (there is a dedicated no-em-dash custom lint rule). .github/skills/** is excluded from lint:md, and the sibling owasp-llm skill shares this pattern, so it is collection-wide precedent rather than a mcsb-only defect. Fix by using colons/commas/parentheses.
  2. Low — MD022: add a blank line before the ## Version and stability heading.
  3. Low — wording: "Normative references" slightly overstates authority for paraphrased content; "Reference documents" or "Domain references" reads more accurately.

Recorded uncertainty: the "MCSB v2 replaces Governance and Strategy (GS) with Artificial Intelligence Security (AI)" claim is about preview content and was not independently verifiable in read-only review scope. The skill already discloses this with a re-verify caveat, which is the correct handling.

Generated by the hve-builder skill review workflow as part of the standard authoring gate.

nguyena2 added 13 commits July 28, 2026 18:01
- specify non-public source repository for MCSB v2
- detail licensing differences with older benchmarks
- emphasize paraphrasing over verbatim reproduction

🔒 - Generated by Copilot
…on and update related references

- create mcsb.md for MCSB v2 control-domain taxonomy
- update README.md and skills/README.md to include MCSB references
- adjust ms.date for consistency across documentation

🔒 - Generated by Copilot
…levels and exposure terms

🔒 - Generated by Copilot
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants