feat(linting): add linting and validation scripts#26
Conversation
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
There was a problem hiding this comment.
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
agreaves-ms
left a comment
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
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
There was a problem hiding this comment.
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.
| This directory contains PowerShell scripts for validating code quality and documentation standards in the `hve-core` repository. | ||
|
|
There was a problem hiding this comment.
[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.
| This directory contains PowerShell scripts for validating code quality and documentation standards in the `hve-core` repository. |
…ent-creator # refactor(agents): simplify content creator resource loading and add category placement rules
🤖 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>
Added comprehensive PowerShell linting and validation scripts with shared helper module, enabling automated code quality checks across the repository.
All scripts support JSON output for CI/CD integration, include verbose logging options, and provide detailed error reporting.
Resolves: #10
✅ - Generated by Copilot