Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
122 commits
Select commit Hold shift + click to select a range
6263c67
feat: scaffold DomainSecurityAuditor module
Nov 17, 2025
94f6ec2
docs: refine agents tooling guidelines
Nov 17, 2025
7c1c097
feat(Public): add classification-aware baseline engine
Nov 17, 2025
e19d2df
feat(Reports): replace PSWriteHTML with handcrafted report and filtering
Nov 17, 2025
c7f20fa
feat(Private): polish HTML report filtering and layout
Nov 17, 2025
3b49dbe
refactor(repo): remove pswritehtml remnants
Nov 17, 2025
9d7ba37
refactor(repo): harden report paths and declare dependencies
Nov 17, 2025
6ba4046
refactor(Private): align summary cards with test filters
Nov 17, 2025
e9c22fe
feat(repo): add pluggable PSD1 baseline profiles and helpers
Nov 21, 2025
059d59d
feat(repo): add pluggable PSD1 baseline profiles and helpers
Nov 21, 2025
fb98885
Merge pull request #14 from thetechgy/feat/baseline-configurable
thetechgy Nov 21, 2025
6b67d70
fix(Reports): render references as clickable PSD1-driven links
Nov 21, 2025
077fb78
feat(Public): auto-open reports
Nov 21, 2025
d1228d8
refactor(Public): remove dry-run path and simplify evidence collection
Nov 21, 2025
06c40c1
feat(Public): add multi-domain input and CSV handling to baseline com…
Nov 21, 2025
15cd4e4
feat(Public): improve input file handling
Nov 21, 2025
19a24c1
feat(repo): add validated classification overrides via CSV and CLI
Nov 21, 2025
185fd42
fix(Private): add parameter validation to Resolve-DSAClassificationOv…
Nov 21, 2025
c407175
feat(Private): polish report header/footer layout and metadata
Nov 21, 2025
fe5daa6
feat(Baseline): add metadata fields for dynamic report test suite text
Nov 21, 2025
80349b0
test(repo): add HTML footer coverage and CLI validation tests
Nov 21, 2025
23bf0c0
refactor(Private/Public): address code review findings across module
Nov 21, 2025
f6245a1
fix(Private/Tests): address additional review findings
Nov 21, 2025
458cf40
feat(repo): support custom DKIM selectors and use DomainDetective def…
Nov 21, 2025
9315776
docs(Public): document DKIM selector precedence and add malformed inp…
Nov 21, 2025
7f6fa19
chore(Docs): improve report accessibility and UX
Nov 21, 2025
9f1e01d
feat(Private): improve report accessibility and filtering UX
Nov 21, 2025
41bab47
fix(Private): wrap long observed values in HTML report details
Nov 21, 2025
6c4df24
fix(Private): hide remediation blocks on passing checks
Nov 21, 2025
95f7070
fix(Private): correct filter summary rendering and JS literal
Nov 21, 2025
2d2c0da
chore(Public): tidy baseline summary output with counts
Nov 21, 2025
f1560ec
docs(Public): document PassThru parameter and improve summary output
Nov 21, 2025
713cc87
fix/Private: harden DKIM selector parsing and report all selectors
Nov 21, 2025
39782c2
fix/Private: harden DKIM selector parsing and rely on existing report…
Nov 21, 2025
e046054
fix/Reports: add DKIM per-selector breakdown and fix report parser
Nov 23, 2025
e3e6c85
fix/Reports: aggregate DKIM selector outcomes into section and summar…
Nov 23, 2025
c35e5b6
fix/Reports: align DKIM selector aggregation across report and consol…
Nov 23, 2025
3b13bf6
feat(Public): add optional DNSEndpoint passthrough to DomainDetective
Nov 23, 2025
57193d8
feat(repo): add report toggles and back-to-top link
Nov 25, 2025
4981851
feat(reports): enhance UI/UX with colorblind-friendly design and acce…
Nov 25, 2025
142e6ac
fix(reports): change Pass color from blue to forest green for better …
Nov 25, 2025
40ee221
fix(reports): adjust Warning and Info colors for better colorblind ac…
Nov 25, 2025
daef9dc
fix(reports): standardize all status colors to use consistent main co…
Nov 25, 2025
5c67ae5
refactor(reports): change header from gradient to solid dark slate color
Nov 25, 2025
93152f6
refactor(reports): lighten header color to medium-dark slate
Nov 25, 2025
8ebee36
fix(reports): change header to true neutral gray (zinc) to avoid colo…
Nov 25, 2025
4fc53e5
refactor(reports): update header to warm charcoal for better color ha…
Nov 25, 2025
32702c8
refactor(reports): revert header to dark slate based on user preference
Nov 25, 2025
cba0c92
Merge pull request #15 from thetechgy/feature/ui-accessibility-improv…
thetechgy Nov 25, 2025
e0aa444
refactor(repo): modularize helpers and streamline baseline orchestration
Dec 5, 2025
8748730
refactor/private: simplify evidence gathering with DomainDetective cm…
Dec 6, 2025
e953beb
fix/private: harden transcript handling and DKIM selector rendering
Dec 6, 2025
5d9913a
Merge pull request #16 from thetechgy/refactor/project-structure
thetechgy Dec 6, 2025
69e7caf
fix(repo): address validation, version, and report issues
Dec 6, 2025
cde85fc
chore(repo): ignore claude tooling artifacts
Dec 6, 2025
c28d47e
fix(Tests): correct validation switch in Test-DSABaselineProfile
Dec 6, 2025
0cfa8ae
chore(Private): remove unused ConvertTo-DSAInt helper
Dec 6, 2025
0dfecf6
refactor/private: centralize helpers and externalize assets
Dec 6, 2025
e145e35
Merge pull request #17 from thetechgy/refactor/dkim-condition-registry
thetechgy Dec 6, 2025
5c9d192
refactor/private: finalize helper consolidation and configs packaging
Dec 6, 2025
b9918c5
fix(Private): prefer authoritative TTLs and drop duplicate status helper
Dec 6, 2025
3bbc023
chore(repo): add helper docs, update analyzer rules, and reformat scr…
Dec 6, 2025
fbfef83
fix(Private): simplify console summary and progress output
Dec 9, 2025
08b926f
fix(Private): align per-domain console summary
Dec 10, 2025
1318a61
refactor(repo): align baseline naming to auditor
Dec 12, 2025
49894c5
build(repo): add psscriptanalyzer workflow
Dec 14, 2025
5bcd475
build(repo): harden pssa install in workflow
Dec 14, 2025
6443463
build(repo): coerce analyzer paths to strings
Dec 14, 2025
f35d284
build(repo): normalize analyzer paths as string array
Dec 14, 2025
8a78209
fix(ci): iterate paths for PSScriptAnalyzer compatibility
Dec 14, 2025
c064e7b
fix(config): resolve PSScriptAnalyzer null reference errors
Dec 14, 2025
a6fa7ef
fix(ci): upgrade PSSA to 1.24.0 and improve error handling
Dec 14, 2025
73220bb
fix(repo): clean pssa findings and remove ttl test
Dec 14, 2025
66c34e3
Merge pull request #18 from thetechgy/fix/psscriptanalyzer-findings
thetechgy Dec 14, 2025
ab0a9ad
test(workflows): add Pester CI workflow
Dec 15, 2025
2220672
build(repo): add dependabot config
Dec 15, 2025
83c9c8b
build(deps): bump actions/cache from 4 to 5
dependabot[bot] Dec 15, 2025
101278d
build(deps): bump actions/upload-artifact from 4 to 6
dependabot[bot] Dec 15, 2025
237b1f3
chore(repo): update harden-runner to v2.14.0
Dec 15, 2025
74c3dab
chore(repo): block egress for hardened runners
Dec 15, 2025
0f522bc
chore(repo): expand harden-runner allowlist
Dec 15, 2025
fb83356
chore(repo): add github endpoints to harden allowlist
Dec 15, 2025
393d5da
fix(workflows): revert harden-runner to audit mode
Dec 15, 2025
72fecb9
chore(workflows): enable harden-runner block mode with conservative a…
Dec 15, 2025
6a207a4
Merge pull request #19 from thetechgy/dependabot/github_actions/devel…
thetechgy Dec 15, 2025
cb56100
chore(workflows): simplify harden-runner allowlist with wildcards
Dec 15, 2025
a728269
build(deps): bump actions/checkout from 4 to 6
dependabot[bot] Dec 15, 2025
008200d
Merge pull request #20 from thetechgy/dependabot/github_actions/devel…
thetechgy Dec 15, 2025
ca05a29
Merge pull request #21 from thetechgy/dependabot/github_actions/devel…
thetechgy Dec 15, 2025
3a4c440
[StepSecurity] Apply security best practices
step-security-bot Dec 15, 2025
5b7a53c
Merge pull request #22 from step-security-bot/chore/GHA-150546-stepse…
thetechgy Dec 15, 2025
2ba2e0f
docs(readme): add ossf scorecard badge
Dec 15, 2025
a87d586
docs(readme): add ci and dependabot badges
Dec 15, 2025
5095140
build(deps): bump actions/checkout from 4.3.1 to 6.0.1
dependabot[bot] Dec 15, 2025
4614cd9
build(deps): bump ossf/scorecard-action from 2.4.0 to 2.4.3
dependabot[bot] Dec 15, 2025
921e8ba
build(deps): bump github/codeql-action from 3.31.8 to 4.31.8
dependabot[bot] Dec 15, 2025
f9cac8f
build(deps): bump actions/upload-artifact from 4.6.2 to 6.0.0
dependabot[bot] Dec 15, 2025
3a882c4
chore(Private): prefer authoritative MTASTS/TLSRPT TTLs
Dec 16, 2025
6d71f61
chore(repo): sync TTL helpers and tests
Dec 16, 2025
d9c1adf
test(Tests): stub new TTL fields for MTASTS/TLSRPT
Dec 16, 2025
77774f1
test(Tests): add comment help to PSSA stubs
Dec 16, 2025
69a5378
Merge pull request #27 from thetechgy/feat/ttl-healthcheck-consolidation
thetechgy Dec 16, 2025
50856e4
fix(Private): guard authoritative TTL fields for current DD
Dec 16, 2025
64b616c
fix(Private): source classification from overall health with overrides
Dec 16, 2025
8d122f9
Merge branch 'feat/ttl-healthcheck-consolidation' into develop
Dec 16, 2025
1eccb84
Merge pull request #23 from thetechgy/dependabot/github_actions/devel…
thetechgy Dec 16, 2025
c21b79c
Merge pull request #24 from thetechgy/dependabot/github_actions/devel…
thetechgy Dec 16, 2025
ec98e1f
Merge pull request #25 from thetechgy/dependabot/github_actions/devel…
thetechgy Dec 16, 2025
b335820
Merge pull request #26 from thetechgy/dependabot/github_actions/devel…
thetechgy Dec 16, 2025
31e2799
refactor(repo): cache checks and unify ttl handling
Dec 16, 2025
3398174
fix(private): guard dkim ttl logging variables
Dec 16, 2025
b77b779
Merge pull request #28 from thetechgy/refactor/cache-effective-checks
thetechgy Dec 16, 2025
f8e620b
docs(repo): document pre-commit checks and harden-runner requirement
Dec 16, 2025
2fb56b2
refactor(private): consolidate helpers and improve consistency
Dec 16, 2025
33af0e0
test(tests): add unit tests for new helper functions
Dec 16, 2025
b2f9c32
Merge pull request #29 from thetechgy/refactor/code-quality-improvements
thetechgy Dec 16, 2025
b7cd9e3
refactor(module): remove unused module-scope variables
Dec 16, 2025
14b20f9
fix(repo): stabilize baseline helpers and tests
Dec 17, 2025
0965be6
test(Tests): stub Install-Module for dependency checks
Dec 17, 2025
b55ce85
build(deps): bump github/codeql-action from 4.31.8 to 4.31.9
dependabot[bot] Dec 22, 2025
c5202d7
Merge pull request #30 from thetechgy/dependabot/github_actions/devel…
thetechgy Dec 27, 2025
267b4c8
refactor(Private): improve code quality and reduce duplication
Dec 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
version: 2
updates:
- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
day: monday
time: "06:00"
timezone: UTC
target-branch: develop
open-pull-requests-limit: 5
commit-message:
prefix: build
include: scope
27 changes: 27 additions & 0 deletions .github/workflows/dependency-review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Dependency Review Action
#
# This Action will scan dependency manifest files that change as part of a Pull Request,
# surfacing known-vulnerable versions of the packages declared or updated in the PR.
# Once installed, if the workflow run is marked as required,
# PRs introducing known-vulnerable packages will be blocked from merging.
#
# Source repository: https://github.com/actions/dependency-review-action
name: 'Dependency Review'
on: [pull_request]

permissions:
contents: read

jobs:
dependency-review:
runs-on: ubuntu-latest
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
with:
egress-policy: audit

- name: 'Checkout Repository'
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: 'Dependency Review'
uses: actions/dependency-review-action@3c4e3dcb1aa7874d2c16be7d79418e9b7efd6261 # v4.8.2
139 changes: 139 additions & 0 deletions .github/workflows/pester.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
name: Pester

on:
pull_request:
paths:
- "**/*.ps1"
- "**/*.psm1"
- "**/*.psd1"
- "Tests/**"
- ".github/workflows/pester.yml"
push:
branches:
- develop
- main
paths:
- "**/*.ps1"
- "**/*.psm1"
- "**/*.psd1"
- "Tests/**"
- ".github/workflows/pester.yml"
workflow_dispatch:

permissions:
contents: read

env:
PESTER_VERSION: '5.7.1'

jobs:
test:
name: Run Pester tests
runs-on: ubuntu-latest

steps:
- name: Harden runner
uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
with:
egress-policy: block
allowed-endpoints: >
github.com:443
*.github.com:443
*.githubusercontent.com:443
www.powershellgallery.com:443

- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1

- name: Validate pinned Pester version
shell: pwsh
run: |
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
$null = Find-Module -Name 'Pester' -RequiredVersion '${{ env.PESTER_VERSION }}' -Repository PSGallery -ErrorAction Stop
Write-Host "Using pinned Pester version ${{ env.PESTER_VERSION }}"

- name: Cache Pester module
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
with:
path: ~/.local/share/powershell/Modules/Pester
key: pester-${{ runner.os }}-${{ env.PESTER_VERSION }}
restore-keys: |
pester-${{ runner.os }}-

- name: Install Pester
shell: pwsh
run: |
$moduleName = 'Pester'
$requiredVersion = [Version]$env:PESTER_VERSION

$installed = Get-Module -ListAvailable -Name $moduleName | Where-Object { $_.Version -eq $requiredVersion }
if (-not $installed) {
Install-Module -Name $moduleName -RequiredVersion $requiredVersion.ToString() -Scope CurrentUser -Force -AllowClobber
}

Get-Module -ListAvailable -Name $moduleName | Where-Object { $_.Version -eq $requiredVersion } |
Select-Object -First 1 |
Format-List Name, Version, ModuleBase

- name: Run Pester tests
shell: pwsh
run: |
$ErrorActionPreference = 'Stop'
$resultsPath = Join-Path -Path $PWD -ChildPath 'Output/TestResults'
if (-not (Test-Path -Path $resultsPath)) {
New-Item -ItemType Directory -Path $resultsPath -Force | Out-Null
}

if (-not (Test-Path -Path 'Tests')) {
Write-Host 'No Pester tests found (Tests folder missing). Skipping.'
exit 0
}

$testFiles = Get-ChildItem -Path 'Tests' -Filter '*.ps1' -File -Recurse -ErrorAction SilentlyContinue
if (-not $testFiles) {
Write-Host 'No Pester test files found under Tests. Skipping.'
exit 0
}

$requiredVersion = [Version]$env:PESTER_VERSION
Import-Module -Name Pester -RequiredVersion $requiredVersion.ToString() -Force

$config = [PesterConfiguration]::Default
$config.Run.Path = 'Tests'
$config.Run.PassThru = $true
$config.Output.Verbosity = 'Detailed'
$config.TestResult.Enabled = $true
$config.TestResult.OutputFormat = 'JUnitXml'
$config.TestResult.OutputPath = Join-Path -Path $resultsPath -ChildPath 'PesterResults.xml'
$coverageTargets = @(
'DomainSecurityAuditor.psm1'
'Public'
'Private'
'Examples'
) | Where-Object { Test-Path -Path $_ }
if ($coverageTargets) {
$config.CodeCoverage.Enabled = $true
$config.CodeCoverage.OutputFormat = 'JaCoCo'
$config.CodeCoverage.OutputPath = Join-Path -Path $resultsPath -ChildPath 'PesterCoverage.xml'
$config.CodeCoverage.Path = $coverageTargets
}
else {
$config.CodeCoverage.Enabled = $false
Write-Host 'No coverage targets found; skipping code coverage.'
}

$result = Invoke-Pester -Configuration $config
$result | Format-List -Property *

if ($result.FailedCount -gt 0) {
throw "Pester reported $($result.FailedCount) failed tests."
}

- name: Upload Pester results
if: always()
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: pester-results
path: Output/TestResults/*.xml
retention-days: 14
if-no-files-found: warn
105 changes: 105 additions & 0 deletions .github/workflows/psscriptanalyzer.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
name: PSScriptAnalyzer

on:
pull_request:
paths:
- "**/*.ps1"
- "**/*.psm1"
- "**/*.psd1"
- "PSScriptAnalyzerSettings.psd1"
- ".github/workflows/psscriptanalyzer.yml"
push:
branches:
- develop
- main
paths:
- "**/*.ps1"
- "**/*.psm1"
- "**/*.psd1"
- "PSScriptAnalyzerSettings.psd1"
- ".github/workflows/psscriptanalyzer.yml"
workflow_dispatch:

permissions:
contents: read

jobs:
analyze:
name: Run PSScriptAnalyzer
runs-on: ubuntu-latest
env:
PSSA_VERSION: "1.24.0"

steps:
- name: Harden runner
uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
with:
egress-policy: block
allowed-endpoints: >
github.com:443
*.github.com:443
*.githubusercontent.com:443
www.powershellgallery.com:443

- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1

- name: Cache PowerShell modules
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
with:
path: ~/.local/share/powershell/Modules/PSScriptAnalyzer
key: pssa-${{ runner.os }}-${{ env.PSSA_VERSION }}-${{ hashFiles('PSScriptAnalyzerSettings.psd1') }}
restore-keys: |
pssa-${{ runner.os }}-

- name: Install PSScriptAnalyzer
shell: pwsh
run: |
$moduleName = 'PSScriptAnalyzer'
$requiredVersion = [Version]'${{ env.PSSA_VERSION }}'

$installed = Get-Module -ListAvailable -Name $moduleName | Where-Object { $_.Version -eq $requiredVersion }
if (-not $installed) {
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
Install-Module -Name $moduleName -RequiredVersion $requiredVersion.ToString() -Scope CurrentUser -Force -AllowClobber
}

Get-Module -ListAvailable -Name $moduleName | Where-Object { $_.Version -eq $requiredVersion } |
Select-Object -First 1 |
Format-List Name, Version, ModuleBase

- name: Analyze PowerShell scripts
shell: pwsh
run: |
$settingsPath = Join-Path $PWD 'PSScriptAnalyzerSettings.psd1'
if (-not (Test-Path $settingsPath)) {
Write-Error "Settings file not found at $settingsPath"
exit 1
}

$paths = @(
'DomainSecurityAuditor.psm1'
'DomainSecurityAuditor.psd1'
'Public'
'Private'
'Examples'
'Tests'
) | Where-Object { Test-Path $_ }

if (-not $paths) {
Write-Error 'No PowerShell paths found to analyze'
exit 1
}

$ErrorActionPreference = 'Stop'
$results = @()
foreach ($p in $paths) {
$results += Invoke-ScriptAnalyzer -Path $p -Recurse -Settings $settingsPath
}

if ($results) {
$results | Format-Table RuleName, Severity, ScriptName, Line, Message -AutoSize
Write-Host "`nTotal issues: $($results.Count)"
exit 1
}
Write-Host 'No issues found.'
81 changes: 81 additions & 0 deletions .github/workflows/scorecards.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# This workflow uses actions that are not certified by GitHub. They are provided
# by a third-party and are governed by separate terms of service, privacy
# policy, and support documentation.

name: Scorecard supply-chain security
on:
# For Branch-Protection check. Only the default branch is supported. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
branch_protection_rule:
# To guarantee Maintained check is occasionally updated. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
schedule:
- cron: '20 7 * * 2'
push:
branches: ["develop"]

# Declare default permissions as read only.
permissions: read-all

jobs:
analysis:
name: Scorecard analysis
runs-on: ubuntu-latest
permissions:
# Needed to upload the results to code-scanning dashboard.
security-events: write
# Needed to publish results and get a badge (see publish_results below).
id-token: write
contents: read
actions: read
# To allow GraphQL ListCommits to work
issues: read
pull-requests: read
# To detect SAST tools
checks: read

steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
with:
egress-policy: audit

- name: "Checkout code"
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false

- name: "Run analysis"
uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3
with:
results_file: results.sarif
results_format: sarif
# (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
# - you want to enable the Branch-Protection check on a *public* repository, or
# - you are installing Scorecards on a *private* repository
# To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat.
# repo_token: ${{ secrets.SCORECARD_TOKEN }}

# Public repositories:
# - Publish results to OpenSSF REST API for easy access by consumers
# - Allows the repository to include the Scorecard badge.
# - See https://github.com/ossf/scorecard-action#publishing-results.
# For private repositories:
# - `publish_results` will always be set to `false`, regardless
# of the value entered here.
publish_results: true

# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: SARIF file
path: results.sarif
retention-days: 5

# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9
with:
sarif_file: results.sarif
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ Desktop.ini
.vscode-server/
*.code-workspace.user

# ----------------------------
# Tooling
# ----------------------------
.claude/

# ----------------------------
# PowerShell
# ----------------------------
Expand Down Expand Up @@ -61,6 +66,7 @@ codecoverage*.xml
# Build Artifacts
# ----------------------------
Output/*
!Output/.gitkeep
build/
dist/
*.nupkg
Expand All @@ -78,6 +84,8 @@ Reports/*.xml
# ----------------------------
*.log
logs/*
Logs/*
!Logs/.gitkeep

# ----------------------------
# CI/CD (GitHub Actions)
Expand Down
Loading