Skip to content

feat(linting): add linting and validation scripts#26

Merged
WilliamBerryiii merged 5 commits intomainfrom
feature/linting-scripts
Nov 12, 2025
Merged

feat(linting): add linting and validation scripts#26
WilliamBerryiii merged 5 commits intomainfrom
feature/linting-scripts

Conversation

@WilliamBerryiii
Copy link
Copy Markdown
Member

@WilliamBerryiii WilliamBerryiii commented Nov 6, 2025

Added comprehensive PowerShell linting and validation scripts with shared helper module, enabling automated code quality checks across the repository.

  • feat(scripts): Added Invoke-PSScriptAnalyzer.ps1 for PowerShell static code analysis with custom rule configuration
  • feat(scripts): Added Invoke-LinkLanguageCheck.ps1 for validating markdown links and language consistency
  • feat(scripts): Added Link-Lang-Check.ps1 for detecting broken links in markdown files
  • feat(scripts): Added Markdown-Link-Check.ps1 for comprehensive link validation with configurable options
  • feat(scripts): Added Validate-MarkdownFrontmatter.ps1 for YAML frontmatter schema validation
  • feat(scripts): Added LintingHelpers.psm1 shared module with common validation functions
  • feat(scripts): Added README.md documentation for linting scripts usage and examples
  • feat(scripts): Added parent README.md with overview of all script categories
  • feat(config): Added PSScriptAnalyzer.psd1 configuration with custom analysis rules
  • feat(config): Added markdown-link-check.config.json with link validation settings

All scripts support JSON output for CI/CD integration, include verbose logging options, and provide detailed error reporting.

Resolves: #10

✅ - Generated by Copilot

Add seven PowerShell linting and validation scripts for code quality enforcement:
- Invoke-PSScriptAnalyzer.ps1: PowerShell code quality analysis with custom rules
- Invoke-LinkLanguageCheck.ps1: Validates markdown links and language consistency
- Link-Lang-Check.ps1: Checks for broken links in markdown files
- Markdown-Link-Check.ps1: Comprehensive markdown link validation
- Validate-MarkdownFrontmatter.ps1: Ensures markdown files have valid YAML frontmatter
- LintingHelpers.psm1: Shared PowerShell module with common validation functions
- scripts/README.md: Documentation for all script categories

All scripts support verbose output and integrate with CI/CD pipelines. Includes configuration files for PSScriptAnalyzer and markdown-link-check.

Resolves: #10

🔧 - Generated by Copilot
Copilot AI review requested due to automatic review settings November 6, 2025 07:46
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces a comprehensive linting infrastructure for the repository, adding PowerShell scripts and configuration files to enforce code quality standards and documentation consistency.

Key changes:

  • Added PSScriptAnalyzer wrapper with GitHub Actions integration for PowerShell static analysis
  • Created markdown frontmatter validation script to ensure consistent metadata across documentation
  • Implemented link language path detection to identify and fix URLs with 'en-us' segments
  • Added shared helper module for GitHub Actions integration with reusable functions

Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
scripts/linting/markdown-link-check.config.json Configuration file for markdown link validation with timeout and ignore patterns
scripts/linting/Validate-MarkdownFrontmatter.ps1 Script to validate YAML frontmatter fields and footer consistency in markdown files
scripts/linting/README.md Comprehensive documentation for all linting scripts, usage, and architecture
scripts/linting/PSScriptAnalyzer.psd1 PSScriptAnalyzer rule configuration with severity levels and exclusions
scripts/linting/Modules/LintingHelpers.psm1 Shared helper functions for file operations and GitHub Actions integration
scripts/linting/Markdown-Link-Check.ps1 Wrapper script for markdown-link-check npm package with repository-aware configuration
scripts/linting/Link-Lang-Check.ps1 Core logic for detecting and fixing language-specific paths in URLs
scripts/linting/Invoke-PSScriptAnalyzer.ps1 Wrapper for PSScriptAnalyzer with GitHub Actions annotations and reporting
scripts/linting/Invoke-LinkLanguageCheck.ps1 GitHub Actions wrapper for Link-Lang-Check.ps1 with annotation support
scripts/README.md Top-level documentation for scripts directory structure and usage

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

…scripts

Fixed PowerShell documentation formatting issues identified by Copilot review:

- Added blank line between comment block closing tag and param keyword in Validate-MarkdownFrontmatter.ps1 (line 47)

- Added newline before parameter description in Validate-MarkdownFrontmatter.ps1 (line 197)

- Added blank line between comment block closing tag and param keyword in Validate-MarkdownFrontmatter.ps1 (line 201)

- Added blank line after closing brace before comment in Validate-MarkdownFrontmatter.ps1 (lines 311-312)

- Added blank line after closing braces before comment in Validate-MarkdownFrontmatter.ps1 (lines 481-482)

- Removed duplicate .OUTPUTS directive in Link-Lang-Check.ps1 (line 155)

These changes improve code readability and follow PowerShell documentation best practices.

🔒 - Generated by Copilot
Copy link
Copy Markdown
Collaborator

@agreaves-ms agreaves-ms left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All scripts should have a corresponding npm run script for ease of use and discovery

Resolves merge conflict in PSScriptAnalyzer.psd1 by accepting main branch version which excludes PSUseSingularNouns and PSUseShouldProcessForStateChangingFunctions rules with appropriate justifications.
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 8 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- add lint:ps for PowerShell linting
- add lint:links for link and language checking
- add lint:md-links for markdown link validation
- add lint:frontmatter for frontmatter validation
- add lint:all to run all linting checks

🧹 - Generated by Copilot
@WilliamBerryiii
Copy link
Copy Markdown
Member Author

All scripts should have a corresponding npm run script for ease of use and discovery

done

- cache .Trim() result to avoid redundant calls in Validate-MarkdownFrontmatter
- remove duplicate repoRoot assignment
- add documentation for regex pattern limitations
- improve extension matching efficiency in LintingHelpers
- move comment-based help blocks inside function definitions

🔍 - Generated by Copilot
Copilot AI review requested due to automatic review settings November 12, 2025 02:20
@WilliamBerryiii WilliamBerryiii merged commit 66be136 into main Nov 12, 2025
7 checks passed
@WilliamBerryiii WilliamBerryiii deleted the feature/linting-scripts branch November 12, 2025 02:23
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated 4 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +16 to +17
This directory contains PowerShell scripts for validating code quality and documentation standards in the `hve-core` repository.

Copy link

Copilot AI Nov 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The README begins with content before the top-level heading, violating the markdown guidelines. According to the coding guidelines, files should begin with a top-level heading as the first line unless YAML frontmatter with a title is present. Since frontmatter exists with a title field, this is acceptable, but consider starting directly with the heading or removing the preamble text to maintain consistency with markdown best practices.

Suggested change
This directory contains PowerShell scripts for validating code quality and documentation standards in the `hve-core` repository.

Copilot uses AI. Check for mistakes.
WilliamBerryiii pushed a commit that referenced this pull request Jan 19, 2026
🤖 I have created a release *beep* *boop*
---


##
[1.1.0](hve-core-v1.0.0...hve-core-v1.1.0)
(2026-01-19)


### ✨ Features

* **.devcontainer:** add development container configuration
([#24](#24))
([45debf5](45debf5))
* **.github:** add github metadata and mcp configuration
([#23](#23))
([1cb898d](1cb898d))
* **agent:** Add automated installation via hve-core-installer agent
([#82](#82))
([a2716d5](a2716d5))
* **agents:** add brd-builder.agent.md for building BRDs
([#122](#122))
([bfdc9f3](bfdc9f3))
* **agents:** redesign installer with Codespaces support and method
documentation ([#123](#123))
([6329fc0](6329fc0))
* **ai:** Establish AI-Assisted Development Framework
([#48](#48))
([f5199a4](f5199a4))
* **build:** implement automated release management with release-please
([#86](#86))
([90150e2](90150e2))
* **chatmodes:** add architecture diagram builder agent
([#145](#145))
([db24637](db24637))
* **config:** add development tools configuration files
([#19](#19))
([9f97522](9f97522))
* **config:** add npm package configuration and dependencies
([#20](#20))
([fcba198](fcba198))
* **copilot:** add GitHub Copilot instruction files
([#22](#22))
([4927284](4927284))
* **copilot:** add specialized chat modes for development workflows
([#21](#21))
([ae8495f](ae8495f))
* **docs:** add comprehensive AI artifact contribution documentation
([#76](#76))
([d81cf96](d81cf96))
* **docs:** add getting started guide for project configuration
([#57](#57))
([3b864fa](3b864fa))
* **docs:** add repository foundation and documentation files
([#18](#18))
([ad7efb6](ad7efb6)),
closes [#2](#2)
* **docs:** add RPI workflow documentation and restructure docs folder
([#102](#102))
([c3af708](c3af708))
* **extension:** hve core vs code extension
([#149](#149))
([041a1fd](041a1fd))
* **extension:** implement pre-release versioning with agent maturity
filtering ([#179](#179))
([fb38233](fb38233))
* **instructions:** add authoring standards for prompt engineering
artifacts ([#177](#177))
([5de3af9](5de3af9))
* **instructions:** add extension quick install and enhance installer
agent ([#176](#176))
([48e3d58](48e3d58))
* **instructions:** add VS Code variant prompt and gitignore
recommendation to installer
([#185](#185))
([b400493](b400493))
* **instructions:** add writing style guide for markdown content
([#151](#151))
([02df6a8](02df6a8))
* **instructions:** consolidate C# guidelines and update prompt agent
fields ([#158](#158))
([65342d4](65342d4))
* **instructions:** provide guidance on using safe commands to reduce
interactive prompting
([#117](#117))
([1268580](1268580))
* **linting:** add linting and validation scripts
([#26](#26))
([66be136](66be136))
* **prompt-builder:** enhance prompt engineering instructions and
validation protocols
([#155](#155))
([bc5004f](bc5004f))
* **prompts:** add ADR placement planning and update template paths
([#69](#69))
([380885f](380885f))
* **prompts:** add git workflow prompts from edge-ai
([#84](#84))
([56d66b6](56d66b6))
* **prompts:** add github-add-issue prompt and github-issue-manager
chatmode with delegation pattern
([#55](#55))
([d0e1789](d0e1789))
* **prompts:** add PR template discovery and integration to pull-request
prompt ([#141](#141))
([b8a4c7a](b8a4c7a))
* **prompts:** add task research initiation prompt and rpi
agent([#124](#124))
([5113e3b](5113e3b))
* **release:** implement release management strategy
([#161](#161))
([6164c3b](6164c3b))
* Risk Register Prompt
([#146](#146))
([843982c](843982c))
* **scripts:** enhanced JSON Schema validation for markdown frontmatter
([#59](#59))
([aba152c](aba152c))
* **security:** add checksum validation infrastructure
([#106](#106))
([07528fb](07528fb))
* **security:** add security scanning scripts
([#25](#25))
([82de5a1](82de5a1))
* **workflows:** add CodeQL security analysis to PR validation
([#132](#132))
([e5b6e8f](e5b6e8f))
* **workflows:** add orchestration workflows and documentation
([#29](#29))
([de442e0](de442e0))
* **workflows:** add security reusable workflows
([#28](#28))
([2c74399](2c74399))
* **workflows:** add validation reusable workflows
([#27](#27))
([f52352d](f52352d))


### 🐛 Bug Fixes

* **build:** add token parameter to release-please action
([#166](#166))
([c9189ec](c9189ec))
* **build:** disable MD012 lint rule in CHANGELOG for release-please
compatibility ([#173](#173))
([54502d8](54502d8)),
closes [#172](#172)
* **build:** pin npm commands for OpenSSF Scorecard compliance
([#181](#181))
([c29db54](c29db54))
* **build:** remediate GHSA-g9mf-h72j-4rw9 undici vulnerability
([#188](#188))
([634bf36](634bf36))
* **build:** seed CHANGELOG.md with version entry for release-please
frontmatter preservation
([#170](#170))
([2b299ac](2b299ac))
* **build:** use GitHub App token for release-please
([#167](#167))
([070e042](070e042))
* **build:** use hashtable splatting for named parameters
([#164](#164))
([02a965f](02a965f))
* **devcontainer:** remove unused Python requirements check
([#78](#78))
([f17a872](f17a872)),
closes [#77](#77)
* **docs:** fix broken links and update validation for .vscode/README.md
([#118](#118))
([160ae7a](160ae7a))
* **docs:** improve language consistency in Automated Installation
section ([#139](#139))
([a932918](a932918))
* **docs:** replace install button anchor with VS Code protocol handler
([#111](#111))
([41a265e](41a265e))
* **docs:** update install badges to use aka.ms redirect URLs
([#114](#114))
([868f655](868f655))
* **linting:** use cross-platform path separators in gitignore pattern
matching ([#121](#121))
([3f0aa1b](3f0aa1b))
* **scripts:** accepts the token (YYYY-MM-dd) in frontmatter validation
([#133](#133))
([2648215](2648215))
* **tools:** correct Method 5 path resolution in hve-core-installer
([#129](#129))
([57ef20d](57ef20d))


### 📚 Documentation

* add comprehensive RPI workflow documentation
([#153](#153))
([cbaa4a9](cbaa4a9))
* enhance README with contributing, responsible AI, and legal sections
([#52](#52))
([a424adc](a424adc))


### ♻️ Refactoring

* **instructions:** consolidate and enhance AI artifact guidelines
([#206](#206))
([54dd959](54dd959))
* migrate chatmodes to agents architecture
([#210](#210))
([712b0b7](712b0b7))


### 🔧 Maintenance

* **build:** clean up workflow permissions for Scorecard compliance
([#183](#183))
([64686e7](64686e7))
* **deps-dev:** bump cspell in the npm-dependencies group
([#61](#61))
([38650eb](38650eb))
* **deps-dev:** bump glob from 10.4.5 to 10.5.0
([#74](#74))
([b3ca9fd](b3ca9fd))
* **deps-dev:** bump markdownlint-cli2 from 0.19.1 to 0.20.0 in the
npm-dependencies group
([#134](#134))
([ebfbe84](ebfbe84))
* **deps-dev:** bump the npm-dependencies group across 1 directory with
2 updates ([#109](#109))
([936ab84](936ab84))
* **deps-dev:** bump the npm-dependencies group with 2 updates
([#30](#30))
([cf99cbf](cf99cbf))
* **deps:** bump actions/upload-artifact from 5.0.0 to 6.0.0 in the
github-actions group
([#142](#142))
([91eac8a](91eac8a))
* **deps:** bump js-yaml, markdown-link-check and markdownlint-cli2
([#75](#75))
([af03d0e](af03d0e))
* **deps:** bump the github-actions group with 2 updates
([#108](#108))
([3e56313](3e56313))
* **deps:** bump the github-actions group with 2 updates
([#135](#135))
([4538a03](4538a03))
* **deps:** bump the github-actions group with 2 updates
([#62](#62))
([d1e0c09](d1e0c09))
* **deps:** bump the github-actions group with 3 updates
([#87](#87))
([ed550f4](ed550f4))
* **deps:** bump the github-actions group with 6 updates
([#162](#162))
([ec5bb12](ec5bb12))
* **devcontainer:** enhance gitleaks installation with checksum
verification ([#100](#100))
([5a8507d](5a8507d))
* **devcontainer:** refactor setup scripts for improved dependency
management ([#94](#94))
([f5f50d1](f5f50d1)),
closes [#98](#98)
* **security:** configure GitHub branch protection for OpenSSF
compliance ([#191](#191))
([90aab1a](90aab1a))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: hve-core-release-please[bot] <254602402+hve-core-release-please[bot]@users.noreply.github.com>
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.

Add linting and validation scripts

5 participants