Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
435fc90
fix(cli): scope plugin restore to --tool, collapse double materializa…
blafourcade Jul 24, 2026
595bb50
fix(cli): document intentional force on internal build-cache rebuild …
blafourcade Jul 24, 2026
454e4af
refactor(cli): inject shared StatusUseCase/RestoreUseCase/UpdateOneTo…
blafourcade Jul 24, 2026
bc50a55
fix(cli): resolve buildClaudeStyleMarketplaceEntry and PluginTranslat…
blafourcade Jul 24, 2026
bb3f213
refactor(aidd-refine): 01-brainstorm moves from fixed probing loop to…
blafourcade Jul 24, 2026
dfae328
ci(deps): bump github/codeql-action/init from 4.37.0 to 4.37.3 (#476)
dependabot[bot] Jul 24, 2026
fa5f600
ci(deps): bump actions/checkout from 7.0.0 to 7.0.1 (#458)
dependabot[bot] Jul 24, 2026
3068893
ci(deps): bump actions/setup-node from 6.4.0 to 7.0.0 (#459)
dependabot[bot] Jul 24, 2026
c362b6a
chore(deps-dev): bump @types/node from 24.10.15 to 26.1.1 in /cli (#480)
dependabot[bot] Jul 24, 2026
547768c
chore(deps-dev): bump @commitlint/cli from 19.8.1 to 21.2.1 in /cli (…
dependabot[bot] Jul 24, 2026
ed20ec0
chore(deps): bump commander from 12.1.0 to 15.0.0 in /cli (#479)
dependabot[bot] Jul 24, 2026
4efc1c8
chore(deps-dev): bump typescript from 5.9.3 to 7.0.2 in /cli (#484)
dependabot[bot] Jul 24, 2026
5fe9da6
fix(cli): derive framework build's SUPPORTED_TARGETS from the build r…
blafourcade Jul 24, 2026
535235a
test(cli): add AiTool registry conformance suite (#516)
blafourcade Jul 27, 2026
5159990
refactor(cli): inject PostInstallPipelineUseCase and GitignoreUseCase…
blafourcade Jul 27, 2026
d7e7341
fix(cli): surface menu errors instead of swallowing them into an infi…
blafourcade Jul 27, 2026
44f778a
fix(ci): promote.yml recognizes squash-merged back-merges as sync bou…
blafourcade Jul 27, 2026
7eebdac
fix(cli): drop the auth gate from self-update (#525)
blafourcade Jul 27, 2026
78ef786
test(cli): drop ticket and point-in-time references from test comment…
blafourcade Jul 27, 2026
1a65bee
fix(cli): move marketplace refresh --force cache clear into its use-c…
blafourcade Jul 27, 2026
da40902
fix(cli): ide uninstall removes the settings keys it merged in (#529)
blafourcade Jul 27, 2026
60ca418
fix(cli): report each status/doctor scope once, under an accurate lab…
blafourcade Jul 27, 2026
6d4beab
test(cli): pin the report-and-continue policy in UpdateOneToolUseCase…
blafourcade Jul 27, 2026
afc24ee
chore(deps-dev): bump @types/node from 26.1.1 to 26.1.2 in /cli (#534)
dependabot[bot] Jul 27, 2026
11b6c13
chore(deps-dev): bump knip from 6.27.0 to 6.29.0 in /cli (#536)
dependabot[bot] Jul 27, 2026
b1dce58
chore(deps-dev): bump jscpd from 5.0.12 to 5.0.14 in /cli (#537)
dependabot[bot] Jul 27, 2026
d3e6101
chore(deps): bump smol-toml from 1.6.1 to 1.7.1 in /cli (#538)
dependabot[bot] Jul 27, 2026
2ed2225
refactor(cli): detect plugin drift through one implementation (#532)
blafourcade Jul 28, 2026
c7d7f95
fix(cli): repair the broken pnpm lockfile (#542)
blafourcade Jul 28, 2026
3b25c6b
feat(aidd-pm): add evidence-bounded spike skill (#543)
blafourcade Jul 28, 2026
12d9904
fix: framework headline (#520)
alexsoyes Jul 28, 2026
ad199e9
refactor(cli): resolve the plugin base dir in one place (#544)
blafourcade Jul 28, 2026
63c8ff0
test(cli): cover the built-tree update path before refactoring it (#541)
blafourcade Jul 28, 2026
965f93c
refactor(cli): share the plugin translator pipeline (#546)
blafourcade Jul 28, 2026
8949b44
refactor(cli): resolve plugin catalogs through one path (#547)
blafourcade Jul 29, 2026
87efed7
refactor(cli): resolve marketplaces through one path (#549)
blafourcade Jul 29, 2026
c817200
test(cli): cover install and restore before generalizing them (#550)
blafourcade Jul 29, 2026
cbf6a91
feat(aidd-pm): add Product Brief discovery skill (#551)
blafourcade Jul 29, 2026
30194ac
refactor(cli): install content sections through one engine (#552)
blafourcade Jul 29, 2026
2c2fdd9
refactor(cli): update ai and ide tools through one implementation (#553)
blafourcade Jul 29, 2026
9571732
refactor(cli): decide restores in one place (#554)
blafourcade Jul 29, 2026
ba84c35
fix(cli): report restore outcomes it previously hid (#555)
blafourcade Jul 29, 2026
613efc1
fix(cli): stop update and restore materializing marketplace plugins (…
blafourcade Jul 29, 2026
3a8b51d
fix(cli): remove the build force option that never did anything (#557)
blafourcade Jul 29, 2026
ff55dd9
docs: fix marketplace install steps and note host-wide duplicate comm…
davidmohamedfr Jul 30, 2026
722b245
docs(framework): simplify contribution to one issue-first path (#562)
blafourcade Jul 31, 2026
30f6693
chore(deps-dev): bump lefthook from 1.13.6 to 2.1.10 in /cli (#535)
dependabot[bot] Jul 31, 2026
c8253d5
chore(deps-dev): bump @commitlint/config-conventional from 19.8.1 to …
dependabot[bot] Jul 31, 2026
a773003
docs(framework): fix ROADMAP.md link, dedupe RELEASE.md, drop UPGRADE…
blafourcade Jul 31, 2026
1b1a49a
chore(deps): bump @inquirer/prompts from 7.10.1 to 8.5.2 in /cli (#540)
dependabot[bot] Jul 31, 2026
c9e639a
ci(deps): bump github/codeql-action/autobuild from 4.37.1 to 4.37.3 (…
dependabot[bot] Jul 22, 2026
4c4f6fd
ci(deps): bump github/codeql-action/analyze from 4.37.1 to 4.37.3 (#475)
dependabot[bot] Jul 22, 2026
5a81961
ci(framework): reconcile knip/lefthook drift from an excluded sync co…
blafourcade Jul 31, 2026
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
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
{
"name": "aidd-pm",
"source": "./plugins/aidd-pm",
"description": "Product management: ticket-info, user-stories, prd, spec",
"description": "Product management: ticket-info, user-stories, product-brief, prd, spec, spike",
"strict": true,
"recommended": true
},
Expand Down
4 changes: 2 additions & 2 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Default reviewers for every change in this repository.
# GitHub assigns these reviewers automatically when a pull request is opened.
# Only Habilité AIDD maintainers can approve and merge - see GOVERNANCE.md.
# Only AIDD Maintainers can approve and merge - see GOVERNANCE.md.
# See https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
* @ai-driven-dev/habilitated
* @ai-driven-dev/trusted-partners
6 changes: 0 additions & 6 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,3 @@ contact_links:
- name: Discord community
url: https://discord.gg/EWySJSpjWs
about: Ask questions, get help, or chat with the AI-Driven Dev community in real time.
- name: Website
url: https://www.ai-driven-dev.fr/
about: Read the AI-Driven Dev methodology, guides, and announcements.
- name: Report a security vulnerability
url: https://github.com/ai-driven-dev/framework/security/advisories/new
about: Disclose a vulnerability privately via GitHub Security Advisories. Do not open a public issue.
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
name: 🗺️ Roadmap item
description: "Maintainer-authored work: a skill, a refactor, a rule to enforce"
name: 📋 Detailed Contribution
description: "Propose a scoped change: a skill, a refactor, a rule to enforce"
title: "<type>(<scope>): "
type: Task
body:
- type: markdown
attributes:
value: |
For maintainers planning framework work. Reporting a bug or asking for a feature as a user?
Use the **Bug Report** or **Feature Request** form instead.
Issue-first: a maintainer validates this before any PR is opened (see [CONTRIBUTING.md](https://github.com/ai-driven-dev/framework/blob/main/CONTRIBUTING.md)).
Reporting a bug? Use the **Bug Report** form instead.

The title carries its own scope, matching `commitlint.config.cjs`: `feat(aidd-pm):`, `fix(framework):`, `refactor(aidd-context):`.
- type: textarea
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
name: ✨ Feature Request
description: Propose new content or an improvement to the framework
name: 🌱 Quick Contribution
description: Propose a change or new content for the framework, minimal form
title: "feat(<scope>): "
type: Feature
body:
- type: markdown
attributes:
value: |
Have an idea? You can also post and upvote it in
[Discussions](https://github.com/ai-driven-dev/framework/discussions) -
popular ideas get promoted to a roadmap vote (see [ROADMAP.md](https://github.com/ai-driven-dev/framework/blob/main/ROADMAP.md)).
Issue-first: a maintainer validates this before any PR is opened (see [CONTRIBUTING.md](https://github.com/ai-driven-dev/framework/blob/main/CONTRIBUTING.md)).
Want to discuss an idea first? Post it in [Discussions](https://github.com/ai-driven-dev/framework/discussions).
- type: textarea
id: problem
attributes:
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/back-merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
app-id: ${{ secrets.AIDD_BOT_APP_ID }}
private-key: ${{ secrets.AIDD_BOT_PRIVATE_KEY }}

- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: next
fetch-depth: 0
Expand Down Expand Up @@ -58,6 +58,10 @@ jobs:
BRANCH="back-merge/main-to-next-${{ github.run_id }}"
git checkout -b "$BRANCH" origin/main
git push origin "$BRANCH"
# promote.yml matches this exact title prefix to recognize a
# squash-merged conflict resolution as a sync boundary (this repo
# disallows merge-commit PRs, so this can't land as a real merge
# commit). Keep both in sync if you change it.
gh pr create --base next --head "$BRANCH" \
--title "chore: back-merge main into next (conflicts)" \
--body "Automated back-merge hit conflicts (CHANGELOG / manifest / version files). Resolve manually, then merge into next." \
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
contents: read
pull-requests: read
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
- uses: wagoid/commitlint-github-action@b948419dd99f3fd78a6548d48f94e3df7f6bf3ed # v6.2.1
Expand Down Expand Up @@ -112,7 +112,7 @@ jobs:
if: needs.release-please.outputs.release_created == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Build clean marketplace bundle
# A self-contained marketplace a user can extract and register with
Expand Down Expand Up @@ -159,9 +159,9 @@ jobs:
- { tool: codex, mode: flat, flag: "--flat" }
- { tool: opencode, mode: flat, flag: "--flat" }
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "22"

Expand Down Expand Up @@ -211,7 +211,7 @@ jobs:
echo "released=false" >> $GITHUB_OUTPUT
fi

- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
if: steps.check.outputs.released == 'true'

- name: Get plugin version
Expand Down Expand Up @@ -248,12 +248,12 @@ jobs:
if: needs.release-please.outputs.paths_released != '' && contains(fromJSON(needs.release-please.outputs.paths_released), 'cli')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install pnpm
run: |
corepack enable
corepack prepare pnpm@latest --activate
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "22"
- run: cd cli && pnpm install --frozen-lockfile
Expand All @@ -274,7 +274,7 @@ jobs:
# `npm publish`, not `pnpm publish`: pnpm's OIDC support is unverified/
# buggy as of this writing (pnpm/pnpm#9812, #11513) — npm's own CLI is
# the reference implementation for its own feature.
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "22"
registry-url: "https://registry.npmjs.org"
Expand Down
24 changes: 12 additions & 12 deletions .github/workflows/cli-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,12 @@ jobs:
name: cli / Typecheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install pnpm
run: |
corepack enable
corepack prepare pnpm@latest --activate
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "22"
- run: cd cli && pnpm install --frozen-lockfile
Expand All @@ -39,12 +39,12 @@ jobs:
name: cli / Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install pnpm
run: |
corepack enable
corepack prepare pnpm@latest --activate
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "22"
- run: cd cli && pnpm install --frozen-lockfile
Expand All @@ -54,14 +54,14 @@ jobs:
name: cli / Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install expect (TTY persona tests)
run: sudo apt-get update && sudo apt-get install -y expect
- name: Install pnpm
run: |
corepack enable
corepack prepare pnpm@latest --activate
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "22"
- run: cd cli && pnpm install --frozen-lockfile
Expand All @@ -71,12 +71,12 @@ jobs:
name: cli / Build & Bundle Budget
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install pnpm
run: |
corepack enable
corepack prepare pnpm@latest --activate
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "22"
- run: cd cli && pnpm install --frozen-lockfile
Expand All @@ -87,12 +87,12 @@ jobs:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install pnpm
run: |
corepack enable
corepack prepare pnpm@latest --activate
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "22"
- run: cd cli && pnpm install --frozen-lockfile
Expand All @@ -103,12 +103,12 @@ jobs:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install pnpm
run: |
corepack enable
corepack prepare pnpm@latest --activate
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "22"
- run: cd cli && pnpm install --frozen-lockfile
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,18 +28,18 @@ jobs:
language: [javascript-typescript]
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Initialize CodeQL
uses: github/codeql-action/init@99df26d4f13ea111d4ec1a7dddef6063f76b97e9 # v4.37.0
uses: github/codeql-action/init@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3
with:
languages: ${{ matrix.language }}
queries: security-and-quality

- name: Autobuild
uses: github/codeql-action/autobuild@7188fc363630916deb702c7fdcf4e481b751f97a # v4.37.1
uses: github/codeql-action/autobuild@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@7188fc363630916deb702c7fdcf4e481b751f97a # v4.37.1
uses: github/codeql-action/analyze@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3
with:
category: "/language:${{ matrix.language }}"
38 changes: 33 additions & 5 deletions .github/workflows/promote.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
app-id: ${{ secrets.AIDD_BOT_APP_ID }}
private-key: ${{ secrets.AIDD_BOT_PRIVATE_KEY }}

- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
token: ${{ steps.app-token.outputs.token }}
Expand All @@ -50,14 +50,42 @@ jobs:
BRANCH="promote/next-to-main-linear"
git switch -C "$BRANCH" origin/main

mapfile -t MERGES < <(git rev-list --first-parent --merges --reverse origin/main..origin/next)
if [ "${#MERGES[@]}" -ge 2 ]; then
START="${MERGES[$((${#MERGES[@]} - 2))]}"
# A "sync commit" marks a point where main's history was already
# folded into next by back-merge.yml, so it (and everything before
# it) must NOT be replayed onto main again. back-merge.yml lands a
# sync two ways:
# - no conflicts: a direct-pushed real merge commit (2 parents)
# - conflicts: a PR merged by squash (this repo disallows
# merge-commit PRs), whose subject is stamped verbatim from
# back-merge.yml's fixed PR title
# Both must count as boundaries, or a squash sync gets mistaken for
# genuine next-only work and cherry-picked back onto main, colliding
# with content main already has. Keep the title prefix below in
# sync with back-merge.yml's `gh pr create --title`.
is_sync_commit() {
git rev-parse --verify -q "$1^2" >/dev/null 2>&1 && return 0
local subject
subject="$(git log -1 --format=%s "$1")"
[[ "$subject" == "chore: back-merge main into next"* ]]
}

mapfile -t CANDIDATES < <(git rev-list --first-parent --reverse origin/main..origin/next)
SYNCS=()
for c in "${CANDIDATES[@]}"; do
is_sync_commit "$c" && SYNCS+=("$c")
done

if [ "${#SYNCS[@]}" -ge 2 ]; then
START="${SYNCS[$((${#SYNCS[@]} - 2))]}"
else
START="origin/main"
fi

mapfile -t COMMITS < <(git rev-list --first-parent --reverse --no-merges "${START}..origin/next")
COMMITS=()
while IFS= read -r c; do
is_sync_commit "$c" || COMMITS+=("$c")
done < <(git rev-list --first-parent --reverse "${START}..origin/next")

if [ "${#COMMITS[@]}" -eq 0 ]; then
echo "No commits to promote."
exit 0
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ jobs:
CI: "true"
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "22"

Expand Down
Loading