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
Correct five broken Wimlib README links, install the selected review skills, and include the shared documentation-audit checker fix.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The no-input and missing-file branches print errors without setting a failure status, so successful cleanup can return success for rejected input. Callers checking the exit code cannot detect the failure. Track an explicit result code, set it on validation failures, and return it after cleanup.
Trim without FOR /F to preserve leading spaces and exclamation marks
FOR /F skips semicolon-prefixed values such as ;Hello, leaving their leading spaces, and assigning %%a with delayed expansion enabled can strip literal exclamation marks. Trim directly from the variable rather than parsing it through FOR /F, and preserve literal characters when returning the value to the caller.
Generate enough padding for widths larger than the fixed suffix
Appending a fixed 50 spaces cannot satisfy widths larger than the input length plus 50. For example, padRight x 100 emits only 51 characters because substring expansion cannot extend a shorter string. Generate enough padding for the requested width before slicing.
Save and return the task result after cleanup
.github/skills/batch-files/assets/task.txt:89
The task result is not saved before logging and cleanup, which can overwrite a failure status and make Task Scheduler report success. The missing-target branch at lines 108–110 also never returns a failure code. Make validation failures return nonzero, capture the result immediately after _runMyTask, and return that saved result after cleanup.
Every log call requires WMIC, but this skill does not list it as a prerequisite and its own Windows-command reference notes that it is disabled by default on Windows 11. On machines without WMIC, logging prints a command-not-found error and formats an unset _dtMyTask, producing invalid timestamps. Use PowerShell's locale-independent Get-Date or detect WMIC and provide a fallback.
Check script paths only in executable command positions
This matches every whitespace-prefixed ./... token, including arguments rather than just executed scripts. A valid documented command such as python ./scripts/render.py --output ./out/report.json produces a high-severity missing-script-file finding for the output file, even though it is supposed to be created by the command. Restrict script-path checking to executable/interpreter positions instead of treating output and other arguments as scripts.
Parse multiline Python imports to detect referenced modules
The import-name capture stops at the first newline, so a normal parenthesized import such as from package import ( followed by config, on the next line never adds config to the referenced names. package/config.py is then marked unreferenced, and build() reports any settings read there as unable to take effect even though the module is imported. Handle multiline import lists, preferably using Python's ast.ImportFrom nodes for Python files.
Match Markdown fence character and length in command scanning
The command scanner uses a different fence parser from the link scanner: it ignores ~~~ fences and toggles on every triple-backtick prefix, including shorter fences embedded inside a four-backtick example. Consequently documented commands can be skipped, or prose after an incorrectly recognized closing fence can be audited as commands. Track the opening fence character and length and require a matching closing fence.
Track multiline inline-code spans when checking links
Inline code spans can cross line boundaries, but this substitution handles each line independently. For a valid span containing a newline followed by [Fake](missing.md), build() still emits a high-severity broken-link finding for that literal example. Track matching backtick delimiters across lines while preserving line numbers, so multiline code spans receive the same exclusion as single-line spans.
Explicitly documenting $env:windir and $env:COMPUTERNAME still produces undocumented-env findings because documentation matching requires uppercase names containing underscores. Recognize explicit $env: references and normalize them like code reads before applying the generic prose heuristic.
Remove recovery steps that create a persistent authentication bypass
This recovery advice leaves an unauthenticated pre-login SYSTEM shell and creates an administrator account with a published fixed password, without restoring the modified sign-in binary. Following it on an endpoint introduces a persistent authentication bypass. Remove those instructions and direct users to an authorized, supported recovery or password-reset process instead.
Define how prerelease tags affect version selection
.github/skills/github-release/SKILL.md:244
Both tag-discovery snippets accept prerelease tags such as v2.0.0-rc.1, but that value cannot be split into three integer components as instructed here. The workflow does not define whether to promote the prerelease to 2.0.0 or bump from the last stable release, so following this step can calculate the wrong version. Explicitly handle prerelease tags and define the promotion policy, or select only stable tags and treat the absence of a stable tag as the first-release case.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Unresolved correctness issues cause inaccurate documentation audits around working directories and make targets/options, while batch helpers lose literal exclamation marks and return success for unknown functions.
An unknown function prints an error but reaches cleanup without setting a failure status. With an initially successful caller, it returns success, so callers using && or if errorlevel cannot detect a misspelled function name. Run cleanup and explicitly return a nonzero exit code on this branch.
Use delayed expansion to preserve exclamation marks
Delayed expansion is enabled here, but percent expansion inserts the input into the command before the exclamation-mark scan. Consequently, call myLib padRight "Hello!" 10 loses the literal ! before padding. Read the stored argument through delayed expansion instead; characters inside the expanded value are not scanned again.
Targets from every Makefile are merged, so a root-level make clean passes the audit when only tools/Makefile defines clean. Keep target inventories keyed by directory and check the Makefile selected by each invocation, including cd and make -C.
CMD_MAKE treats the first token after make as a target, so valid make -j4 build commands are reported as missing target -j4, while make -j build skips checking build. Parse options separately from targets so parallel-build examples are checked correctly.
Resolve script paths against the current working directory
A README containing cd tools followed by python check.py reports a missing script even when tools/check.py exists, because script checks ignore the tracked working directory. Resolve each script invocation against its execution directory at that point in the fenced block, including directory changes on the same line.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Human assessment is needed to weigh a critical release-baseline selection error and several validation and exit-status issues omitted from the published review.
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
Unresolved defects skip Makefile and workspace validation, produce false Markdown link findings, and cause batch scripts to corrupt arguments or report success for rejected input.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
The nested SETLOCAL/ENDLOCAL transfers and delayed-expansion escaping require Windows cmd.exe validation with the CI-pinned Pester version, which was unavailable during this review.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Intricate CMD delayed-expansion and ENDLOCAL value transfers, plus Windows file-lock cleanup behavior, require maintainer validation in Windows CMD with the repository’s Pester version.
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
The PowerShell tag filter accepts Unicode digits that cannot be converted to System.Version, causing discovery errors and inconsistent behavior with the Bash example.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
The CMD templates’ multi-phase expansion and nested SETLOCAL/ENDLOCAL transfers require cmd.exe runtime validation and the full Windows/Pester regression suite, which this review could not exercise.
Validation follow-up for the runtime note. On PR head 0150d08106e469c64a2f8cf62151b8b8b1a6dd65, I ran the full Pester suite under Windows PowerShell 5.1.26100.9818 and Pester 6.2.0: 160 passed, 0 failed, 0 skipped, 0 not run. BatchExecutable.Tests.ps1, BatchLibrary.Tests.ps1, and BatchTask.Tests.ps1 execute the .cmd templates through $env:ComSpec /d /c, including nested SETLOCAL/ENDLOCAL and delayed-expansion handoffs. GitHub Actions run 41769412751 for this exact head also passed the standalone PowerShell regression harnesses, Pester, and manifest verification.
Return the existing invalid-width error when padRight receives no width or an empty width.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
REM ============================================================
call :main %*
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
github-actions-hardening,pester-should-migration,docs-sync-audit,github-release, andbatch-files.Validation
git diff --checkpassed.