You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -183,7 +183,7 @@ Each domain has a scanner platform repo (demo-app) and a workshop template repo:
183
183
184
184
## DIY: Build a New Domain
185
185
186
-
Ready to build the Code Quality domain from scratch? The framework includes a `DomainScaffolder` agent and complete automation artifacts for generating scanner demo-app and workshop repositories with full parity to the existing Accessibility and FinOps domains.
186
+
Ready to build the Code Quality domain from scratch? The framework includes a `DomainScaffolder` agent and complete automation artifacts for generating scanner demo-app and workshop repositories with full parity to the existing Accessibility, Code Quality, and FinOps domains.
187
187
188
188
See the **[DIY: Build the Code Quality Domain](docs/DIY-Code-Quality-Domain.md)** guide for step-by-step instructions covering repo creation, sample app development, SARIF converters, workshop labs, Power BI PBIP, and ADO pipeline setup.
Copy file name to clipboardExpand all lines: agents/domain-scaffolder.agent.md
+4-1Lines changed: 4 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
name: DomainScaffolder
3
-
description: "Scaffolds new domain scanner demo-app and workshop repositories with full parity to existing Accessibility and FinOps domains. Generates repo structures, bootstrap scripts, CI/CD pipelines, Power BI PBIP, and screenshot automation."
3
+
description: "Scaffolds new domain scanner demo-app and workshop repositories with full parity to existing Accessibility, Code Quality, and FinOps domains. Generates repo structures, bootstrap scripts, CI/CD pipelines, Power BI PBIP, and screenshot automation."
4
4
tools:
5
5
# Read tools
6
6
- read/readFile
@@ -106,6 +106,9 @@ Generate the complete `{domain}-scan-workshop` repository structure following th
106
106
12. Add `nav_exclude: true` frontmatter to ALL screenshot inventory pages (`images/lab-NN/README.md`) so they do not appear in the sidebar navigation. Only labs and the home page should appear in the sidebar.
107
107
13. Update `.devcontainer/post-create.sh` to auto-fork or clone the scanner demo-app repo as a sibling directory for workshop participants.
108
108
14. All code blocks in lab markdown MUST use a language identifier (`powershell`, `json`, `yaml`, `text`, etc.) to enable the Just the Docs copy-to-clipboard button on each code block. Never use bare fenced code blocks without a language tag.
109
+
15. Create `.github/agents/{domain}-workshop.agent.md` — a Copilot agent definition for the workshop repository, following the naming pattern in the scaffolding skill.
110
+
16. Create `.github/instructions/{domain}-workshop.instructions.md` — Copilot instructions specific to the workshop repository, covering lab conventions and domain context.
111
+
17. Create `.github/copilot-instructions.md` — repo-wide Copilot instructions for the workshop repository, referencing the domain agent and instructions files.
All repositories live under the `devopsabcs-engineering` GitHub organization.
39
39
@@ -97,7 +97,7 @@ Eight hands-on labs teaching FinOps scanning and cost governance. Delivered as a
97
97
98
98
## Code Quality Domain
99
99
100
-
### `code-quality-scan-demo-app` (Planned)
100
+
### `code-quality-scan-demo-app`
101
101
102
102
Multi-language code quality scanner using MegaLinter, jscpd, Lizard, and per-language coverage tools. Follows the 4-tool architecture defined in the framework's [code-quality-scan skill](../skills/code-quality-scan/SKILL.md).
103
103
@@ -108,9 +108,9 @@ Multi-language code quality scanner using MegaLinter, jscpd, Lizard, and per-lan
108
108
| SARIF generation | Mixed: MegaLinter and jscpd native; Lizard via `lizard-to-sarif.py`, coverage via `coverage-to-sarif.py`|
Copy file name to clipboardExpand all lines: instructions/domain-scaffolding.instructions.md
+50-1Lines changed: 50 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ applyTo: "**"
5
5
6
6
# Domain Scaffolding Conventions
7
7
8
-
These conventions apply when generating new domain scanner and workshop repositories. All scaffolded repos MUST follow these standards to maintain parity with existing Accessibility and FinOps domains.
8
+
These conventions apply when generating new domain scanner and workshop repositories. All scaffolded repos MUST follow these standards to maintain parity with existing Accessibility, Code Quality, and FinOps domains.
9
9
10
10
## Naming Conventions
11
11
@@ -561,6 +561,46 @@ The workshop `_includes/head_custom.html` MUST use `startOnLoad: false` with an
561
561
</style>
562
562
```
563
563
564
+
## Workshop Copilot Artifacts
565
+
566
+
Workshop repositories MUST include a `.github/` directory with Copilot customization artifacts. These artifacts enable GitHub Copilot to provide domain-aware assistance to workshop participants.
| Agent | `.github/agents/{domain}-workshop.agent.md` | Defines a workshop-aware Copilot agent with domain context, lab navigation, and troubleshooting capabilities |
585
+
| Instructions | `.github/instructions/{domain}-workshop.instructions.md` | Provides domain-specific conventions, lab structure, and coding patterns for Copilot |
586
+
| Copilot Instructions | `.github/copilot-instructions.md` | Repo-wide Copilot instructions referencing the domain agent and instructions files |
587
+
588
+
### Agent File Conventions
589
+
590
+
The workshop agent MUST:
591
+
592
+
1. Reference the domain scan skill for scanning methodology context.
593
+
2. Include tools for reading files, searching the codebase, and running terminal commands.
594
+
3. Provide guidance on lab completion, troubleshooting common errors, and navigating the workshop structure.
595
+
596
+
### Instructions File Conventions
597
+
598
+
The workshop instructions MUST:
599
+
600
+
1. Define the lab numbering scheme and directory structure.
601
+
2. Specify the domain-specific tool stack and configuration.
602
+
3. Reference the demo-app repository as the working directory for scanning labs.
603
+
564
604
## Power BI PBIP Conventions
565
605
566
606
### Directory Structure
@@ -590,6 +630,15 @@ One `.tmdl` file per table in `definition/tables/`. Use descriptive table names
590
630
591
631
Connect to Azure Data Lake Storage Gen2 via `AzureStorage.DataLake()` with OAuth (Organizational Account). Store scan results in date-partitioned paths: `{yyyy}/{MM}/{dd}/{appId}-{tool}.json`.
592
632
633
+
### Centralized Dashboard Integration
634
+
635
+
In addition to per-domain PBIPs, the framework provides a centralized `advsec-pbi-report-ado` dashboard that aggregates Advanced Security findings across all domains. New domain PBIPs MUST integrate with this centralized dashboard:
636
+
637
+
1. **Shared `Repositories` dimension** — use the `scan_domain` column to identify the domain (e.g., `Accessibility`, `CodeQuality`, `FinOps`). This enables cross-domain filtering in the centralized report.
638
+
2. **Consistent fact table schema** — align `finding_id`, `repo_name`, `rule_id`, `severity`, `tool_name`, and `scan_date` columns with the centralized schema so the AdvSec report can union findings across domains.
639
+
3. **ADLS Gen2 path convention** — store scan results in `{domain}/{yyyy}/{MM}/{dd}/{appId}-{tool}.json` so the centralized report's Power Query expressions can discover data from all domains.
640
+
4. **Three-tier architecture** — the centralized `advsec-pbi-report-ado` provides the Advanced Security cross-domain view, while per-domain PBIPs provide domain-specific deep dives. Together they offer a holistic view across all scanning domains.
1. Load the domain scaffolding skill and the domain-specific scan skill.
18
18
2. Generate the complete `{domain}-scan-demo-app` repository structure with 5 sample apps, CI/CD pipelines, bootstrap scripts, SARIF converters, and Power BI PBIP.
19
19
3. Generate the complete `{domain}-scan-workshop` repository structure with 10 labs, screenshot automation, dev container, and Jekyll site.
20
-
4. Ensure structural parity with accessibility-scan-demo-app and finops-scan-demo-app.
20
+
4. Ensure structural parity with accessibility-scan-demo-app, code-quality-scan-demo-app, and finops-scan-demo-app.
21
21
5. Produce a scaffolding summary with file counts and next steps.
|`power-bi/scripts/deploy.ps1`| Deploy PBIP to Power BI workspace using `FabricPS-PBIP` module |
609
616
|`power-bi/scripts/setup-parameters.ps1`| Configure data source parameters (storage account, container) |
610
617
618
+
### Centralized Dashboard Integration
619
+
620
+
In addition to per-domain PBIPs, the framework maintains a centralized `advsec-pbi-report-ado` dashboard that aggregates Advanced Security findings across all domains. Per-domain PBIPs integrate with this centralized dashboard through:
621
+
622
+
1.**Shared `Repositories` dimension** — the `scan_domain` column identifies each domain (`Accessibility`, `CodeQuality`, `FinOps`), enabling cross-domain filtering.
623
+
2.**Consistent fact table schema** — `finding_id`, `repo_name`, `rule_id`, `severity`, `tool_name`, and `scan_date` columns align across all domain PBIPs.
624
+
3.**ADLS Gen2 path convention** — scan results stored at `{domain}/{yyyy}/{MM}/{dd}/{appId}-{tool}.json` allow the centralized report to discover data from all domains.
625
+
4.**Three-tier architecture** — the centralized `advsec-pbi-report-ado` provides the cross-domain Advanced Security view, per-domain PBIPs provide deep dives, and together they offer a holistic view across all scanning domains.
0 commit comments