Skip to content

feat/phase1 markdown powershell - #1

Merged
kyle-sexton merged 3 commits into
mainfrom
feat/phase1-markdown-powershell
Jun 22, 2026
Merged

feat/phase1 markdown powershell#1
kyle-sexton merged 3 commits into
mainfrom
feat/phase1-markdown-powershell

Conversation

@kyle-sexton

Copy link
Copy Markdown
Contributor
  • chore: scaffold ci-workflows repo
  • feat: add reusable markdown and powershell workflows with dogfood CI

kyle-sexton and others added 3 commits June 22, 2026 14:02
Vendor the base hygiene configs (.editorconfig, .gitattributes, .gitignore)
from the standards repo, add a weekly github-actions Dependabot config, and
document the reuse contract in the README.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add two SHA-pinnable reusable workflows consumed via uses:@sha:

- markdown.yml runs markdownlint-cli2 (inputs: globs, config, version,
  node-version), installing the pinned version via npx.
- powershell.yml runs PSScriptAnalyzer via the migrated runner script
  scripts/Invoke-Pssa.ps1 (inputs: paths, settings, exclude,
  analyzer-version). The runner lives here as execution; it self-checks-out
  via job.workflow_repository/job.workflow_sha (PAT-free) since a reusable
  workflow only receives the caller's checkout.

ci.yml dogfoods both lanes against this repo's vendored config copies and
aggregates them behind a local ci-status gateway job.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
An empty paths/exclude input split-and-filtered to $null, which the runner's
non-null parameter contract rejects (Cannot bind argument to 'Patterns').
Wrap both in @() so the empty case stays an empty array.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@kyle-sexton
kyle-sexton merged commit 6086ef9 into main Jun 22, 2026
7 checks passed
@kyle-sexton
kyle-sexton deleted the feat/phase1-markdown-powershell branch June 22, 2026 18:05

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 13f0bc6c6c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +44 to +45
repository: ${{ job.workflow_repository }}
ref: ${{ job.workflow_sha }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Checkout the reusable workflow repository

In cross-repo consumers of this reusable workflow, these expressions are empty because the documented contexts expose github.workflow_sha/job.workflow_ref, not job.workflow_repository or job.workflow_sha (GitHub docs); GitHub also evaluates missing properties to an empty string. That means the second checkout does not fetch the ci-workflows commit that contains scripts/Invoke-Pssa.ps1 (it falls back to the triggering repo/ref or otherwise has blank inputs), so the later Analyze step cannot run the runner script unless the caller happened to copy it.

Useful? React with 👍 / 👎.

VERSION: ${{ inputs.version }}
GLOBS: ${{ inputs.globs }}
# $GLOBS is intentionally unquoted so multiple glob arguments word-split.
run: npx --yes "markdownlint-cli2@$VERSION" --config "$CONFIG" $GLOBS

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Prevent Bash from pre-expanding markdown globs

When a caller uses the default **/*.md in a repo with a match like docs/guide.md, this unquoted expansion is performed by the GitHub runner's Bash before markdownlint-cli2 sees it; with Bash globstar off by default, the shell passes only its one-directory matches and omits root/deeper files such as README.md/a/b/file.md. markdownlint-cli2's own usage notes recommend quoting glob arguments because shells expand globs differently, so the advertised default no longer lints all Markdown in common layouts.

Useful? React with 👍 / 👎.

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.

1 participant