Ecc tools/understand quickly 1779240667939#51
Conversation
This workflow sets up a CI pipeline for Node.js applications, including installation of dependencies, building the code, and running tests across multiple Node.js versions.
…ickly/agents/openai.yaml)
…/inherited/understand-quickly-instincts.yaml)
📝 WalkthroughWalkthroughThis PR establishes an AI-assisted development environment for the understand-quickly repository by introducing repository skill documentation, Claude identity and behavior instincts, a multi-agent Codex framework, and Node.js CI automation. The changes define coding conventions, extract repository patterns, configure specialized agent roles with MCP integrations, and enable automated testing across multiple Node.js versions. ChangesRepository AI Configuration and Development Infrastructure
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Thanks for your first PR to understand-quickly! A maintainer will review shortly. If this adds a new entry to |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6bbb480705
ℹ️ 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".
|
|
||
| strategy: | ||
| matrix: | ||
| node-version: [18.x, 20.x, 22.x] |
There was a problem hiding this comment.
Remove unsupported Node 18 from CI
This matrix makes the new build job run on Node 18 for every push/PR, but the package declares engines.node as >=20.0.0 and the existing workflows use .nvmrc (20) via node-version-file. That adds an unsupported CI leg which can fail or block otherwise valid PRs due to runtime/dependency behavior the project does not claim to support; keep the matrix to supported versions or use .nvmrc here as the other workflows do.
Useful? React with 👍 / 👎.
| "schemaVersion": "1.0", | ||
| "generatedBy": "ecc-tools", | ||
| "generatedAt": "2026-05-20T01:30:45.793Z", | ||
| "repo": "https://github.com/cryptofixyup/understand-quickly", |
There was a problem hiding this comment.
Point ECC metadata at the canonical repo
This generated manifest records the repository as cryptofixyup/understand-quickly, while the package metadata and README consistently identify the canonical project as looptech-ai/understand-quickly. Any ECC tooling that uses this manifest to refresh generated files, fetch reference data, or attribute the generated skill will target the wrong fork/repository; the companion instincts file repeats the same source repo, so the generated baseline should be regenerated or corrected to the canonical URL.
Useful? React with 👍 / 👎.
| ```markdown | ||
| # understand-quickly Development Patterns |
There was a problem hiding this comment.
Add required skill frontmatter
The Codex-facing skill is referenced from .codex/AGENTS.md, but the SKILL.md starts with a fenced code block instead of the required top-level YAML frontmatter containing name and description. In Codex skill loading, those fields are what make a skill discoverable and triggerable, so this generated repo skill will not be invoked despite being installed; remove the wrapper fence and add the required frontmatter before the Markdown body.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Actionable comments posted: 11
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.agents/skills/understand-quickly/SKILL.md:
- Line 1: The top-level triple-backtick fence surrounding the entire SKILL.md is
malformed and must be removed so the inner language-specific fenced code blocks
render correctly; open the SKILL.md and delete the initial ```markdown and the
final closing ``` that wrap the whole file while leaving all inner fenced blocks
(the language-specific examples at the ranges noted: 18-20, 25-28, 73-83, and
the trailing 91) intact and ensure the example block around the table row for
"/review" ends with a single closing fence (```), preserving the inner fences
and Markdown structure.
- Around line 85-90: The Commands table block in SKILL.md needs a blank line
before and after it to satisfy markdownlint MD058; update the section containing
the table (the lines with "## Commands" and the pipe-table rows for /contribute,
/write-test, /review) by inserting one empty line immediately above the table
header and one empty line immediately below the final table row so the table is
separated from surrounding text.
In @.claude/homunculus/instincts/inherited/understand-quickly-instincts.yaml:
- Around line 100-101: The test-location rule in the YAML that mandates "Place
tests in the tests/ or __tests__/ directory" conflicts with the project's skill
documentation that requires colocated *.test.ts files; update the rule in
understand-quickly-instincts.yaml to permit colocated tests (or remove the
fixed-directory mandate) so it mirrors the skill docs and avoid contradictory
behavior—search for the exact rule string "Place tests in the tests/ or
__tests__/ directory" and modify it to allow colocated test files next to source
modules (and apply the same change where the duplicate appears).
- Around line 16-26: The YAML file "Understand Quickly Commit Length" currently
uses Markdown headers and prose which breaks YAML parsing; replace each Markdown
block with a single YAML mapping for that instinct (e.g., use a top-level
mapping whose key is the instinct name like "Understand Quickly Commit Length"
and scalar fields such as action: "Write moderate-length commit messages (~59
characters)" and evidence: ["Average commit message length: 59 chars", "Based on
2 commits"]) so that each instinct is a valid YAML mapping with scalar/string or
sequence values instead of Markdown prose.
In @.claude/skills/understand-quickly/SKILL.md:
- Around line 85-90: The markdown table under the "## Commands" heading (the
Commands table listing /contribute, /write-test, /review) needs a blank line
inserted immediately before the table and another blank line immediately after
it to satisfy markdownlint MD058; update the SKILL.md content so there is a
single empty line between the heading and the table and a single empty line
after the table block.
- Line 1: Remove the top-level wrapping triple-backtick fence that encloses the
entire document so the inner example fenced code blocks render correctly;
specifically, open the file and delete the initial and final outer ``` that
contain the whole doc while preserving each inner example fenced block (the
example ```...``` sections already present), and apply the same fix for the
other malformed nested fenced blocks called out in the review (the additional
inner example fences elsewhere in the document).
In @.codex/AGENTS.md:
- Around line 24-26: The wording is contradictory: it first states "No dedicated
workflow command files were generated" then refers to "these workflow files";
update the sentence around that phrase so it consistently references either the
absence of generated files or the available templates — for example, replace
"Use these workflow files as reusable task scaffolds when the detected
repository workflows recur." with wording that clearly points to provided
templates or examples (e.g., "Use the workflow templates below as reusable task
scaffolds..." or "If workflow files are added later, use them as reusable task
scaffolds...") so the message no longer implies both "none were generated" and
"these files" at the same time.
In @.codex/config.toml:
- Line 14: The config uses floating MCP package tags (e.g., the args entries
containing "`@upstash/context7-mcp`@latest" and "`@playwright/mcp`@latest"); replace
these with pinned version strings for reproducibility and supply-chain safety by
updating the args arrays to reference explicit versions (e.g.,
"`@upstash/context7-mcp`@<version>" and "`@playwright/mcp`@<version>"). Locate the
args entries in .codex/config.toml (the strings "`@upstash/context7-mcp`@latest"
and "`@playwright/mcp`@latest") and substitute the desired semver or commit-based
versions, ensuring both occurrences are updated and tested.
In @.github/workflows/node.js.yml:
- Line 19: Update the GitHub Actions Node.js test matrix by removing the EOL
18.x entry from the node-version matrix (the node-version array in the workflow)
so it only tests supported runtimes (e.g., [20.x, 22.x]); locate the matrix
definition that contains "node-version: [18.x, 20.x, 22.x]" and change it to
exclude 18.x, and run the workflow locally or in CI to verify jobs still resolve
and any setup-node steps continue to work with the remaining versions.
- Around line 24-28: Replace the floating actions/setup-node@v4 reference with
the specific commit SHA for the v4 tag to avoid supply-chain risk: locate the
workflow step that uses actions/setup-node@v4 and change the ref to the commit
SHA corresponding to the v4 release (e.g., replace "uses: actions/setup-node@v4"
with the same uses value pinned to the v4 commit SHA); keep the existing inputs
(node-version and cache) unchanged after pinning.
- Line 23: Replace the unpinned checkout action and add the credential setting:
update the uses line that currently says "uses: actions/checkout@v4" to pin to a
specific commit SHA (replace tag with the chosen commit SHA for
actions/checkout) and add a with block setting "persist-credentials: false" so
the checkout step reads the pinned SHA and includes persist-credentials: false;
target the checkout step identified by "uses: actions/checkout@v4" and the
"persist-credentials" setting to implement this change.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: d637eb2c-89e3-4da4-8e3c-bb7d25dde8f9
📒 Files selected for processing (16)
.agents/skills/understand-quickly/SKILL.md.agents/skills/understand-quickly/agents/openai.yaml.claude/ecc-tools.json.claude/homunculus/instincts/inherited/understand-quickly-instincts.yaml.claude/identity.json.claude/skills/understand-quickly/SKILL.md.codex/AGENTS.md.codex/agents/docs-researcher.toml.codex/agents/explorer.toml.codex/agents/reviewer.toml.codex/config.toml.github/workflows/node.js.ymlREADME.mdregistry.jsonsite/.well-known/repos.jsonsite/stats.json
📜 Review details
🧰 Additional context used
🪛 markdownlint-cli2 (0.22.1)
.agents/skills/understand-quickly/SKILL.md
[warning] 86-86: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
[warning] 90-90: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
[warning] 91-91: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
.claude/skills/understand-quickly/SKILL.md
[warning] 86-86: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
[warning] 90-90: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
[warning] 91-91: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🪛 YAMLlint (1.38.0)
.claude/homunculus/instincts/inherited/understand-quickly-instincts.yaml
[error] 24-24: syntax error: expected '', but found ''
(syntax)
🪛 zizmor (1.25.2)
.github/workflows/node.js.yml
[warning] 23-23: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false
(artipacked)
[error] 23-23: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)
(unpinned-uses)
[error] 25-25: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)
(unpinned-uses)
🔇 Additional comments (11)
.github/workflows/node.js.yml (1)
29-31: LGTM!.agents/skills/understand-quickly/agents/openai.yaml (1)
1-6: LGTM!.claude/identity.json (1)
1-14: LGTM!.claude/ecc-tools.json (1)
1-251: LGTM!.codex/agents/docs-researcher.toml (1)
1-9: LGTM!.codex/agents/explorer.toml (1)
1-9: LGTM!.codex/agents/reviewer.toml (1)
1-9: LGTM!README.md (1)
190-192: LGTM!site/.well-known/repos.json (1)
8-8: LGTM!Also applies to: 16-16, 24-24
site/stats.json (1)
3-3: LGTM!registry.json (1)
3-3: LGTM!Also applies to: 22-22, 49-49, 68-68, 103-103, 120-120, 147-147
| @@ -0,0 +1,91 @@ | |||
| ```markdown | |||
There was a problem hiding this comment.
Fix malformed nested fenced code blocks in the skill doc.
The file is wrapped in a top-level code fence (Line 1 to Line 91) while also containing inner fences, which breaks Markdown structure and causes render/lint issues. Remove the outer fence and keep only the inner language-specific examples.
Proposed fix
-```markdown
# understand-quickly Development Patterns
...
-| /review | Review code for conventions and test coverage |
-```
+| /review | Review code for conventions and test coverage |Also applies to: 18-20, 25-28, 73-83, 91-91
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.agents/skills/understand-quickly/SKILL.md at line 1, The top-level
triple-backtick fence surrounding the entire SKILL.md is malformed and must be
removed so the inner language-specific fenced code blocks render correctly; open
the SKILL.md and delete the initial ```markdown and the final closing ``` that
wrap the whole file while leaving all inner fenced blocks (the language-specific
examples at the ranges noted: 18-20, 25-28, 73-83, and the trailing 91) intact
and ensure the example block around the table row for "/review" ends with a
single closing fence (```), preserving the inner fences and Markdown structure.
| ## Commands | ||
| | Command | Purpose | | ||
| |----------------|----------------------------------------------------| | ||
| | /contribute | Start the code contribution workflow | | ||
| | /write-test | Begin writing or updating tests for your code | | ||
| | /review | Review code for conventions and test coverage | |
There was a problem hiding this comment.
Add blank lines around the commands table.
Insert a blank line before and after the table to satisfy markdownlint MD058.
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 86-86: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
[warning] 90-90: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.agents/skills/understand-quickly/SKILL.md around lines 85 - 90, The
Commands table block in SKILL.md needs a blank line before and after it to
satisfy markdownlint MD058; update the section containing the table (the lines
with "## Commands" and the pipe-table rows for /contribute, /write-test,
/review) by inserting one empty line immediately above the table header and one
empty line immediately below the final table row so the table is separated from
surrounding text.
| # Understand Quickly Commit Length | ||
|
|
||
| ## Action | ||
|
|
||
| Write moderate-length commit messages (~59 characters) | ||
|
|
||
| ## Evidence | ||
|
|
||
| - Average commit message length: 59 chars | ||
| - Based on 2 commits | ||
|
|
There was a problem hiding this comment.
This instincts file is not valid YAML and will fail to load.
After each YAML header block, the Markdown section (# ..., ## Action, bullet text) is emitted as plain YAML content, which causes parsing errors (matching the syntax error near Line 24). Convert each instinct to a single YAML mapping with scalar fields (e.g., action, evidence) instead of Markdown prose blocks.
🧰 Tools
🪛 YAMLlint (1.38.0)
[error] 24-24: syntax error: expected '', but found ''
(syntax)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.claude/homunculus/instincts/inherited/understand-quickly-instincts.yaml
around lines 16 - 26, The YAML file "Understand Quickly Commit Length" currently
uses Markdown headers and prose which breaks YAML parsing; replace each Markdown
block with a single YAML mapping for that instinct (e.g., use a top-level
mapping whose key is the instinct name like "Understand Quickly Commit Length"
and scalar fields such as action: "Write moderate-length commit messages (~59
characters)" and evidence: ["Average commit message length: 59 chars", "Based on
2 commits"]) so that each instinct is a valid YAML mapping with scalar/string or
sequence values instead of Markdown prose.
| Place tests in the tests/ or __tests__/ directory, mirroring src structure | ||
|
|
There was a problem hiding this comment.
Test-location guidance conflicts with the skill documentation.
This file mandates separate test directories (tests/ or __tests__/), but both skill docs instruct colocated *.test.ts files beside modules. These conflicting rules will produce inconsistent agent behavior.
Also applies to: 273-274
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.claude/homunculus/instincts/inherited/understand-quickly-instincts.yaml
around lines 100 - 101, The test-location rule in the YAML that mandates "Place
tests in the tests/ or __tests__/ directory" conflicts with the project's skill
documentation that requires colocated *.test.ts files; update the rule in
understand-quickly-instincts.yaml to permit colocated tests (or remove the
fixed-directory mandate) so it mirrors the skill docs and avoid contradictory
behavior—search for the exact rule string "Place tests in the tests/ or
__tests__/ directory" and modify it to allow colocated test files next to source
modules (and apply the same change where the duplicate appears).
| @@ -0,0 +1,91 @@ | |||
| ```markdown | |||
There was a problem hiding this comment.
Fix malformed nested fenced code blocks in the Claude skill doc.
This file has the same outer fence + inner fence nesting problem, so Markdown rendering is broken. Remove the top-level wrapping fence and keep only the example fences.
Also applies to: 18-20, 25-28, 73-83, 91-91
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.claude/skills/understand-quickly/SKILL.md at line 1, Remove the top-level
wrapping triple-backtick fence that encloses the entire document so the inner
example fenced code blocks render correctly; specifically, open the file and
delete the initial and final outer ``` that contain the whole doc while
preserving each inner example fenced block (the example ```...``` sections
already present), and apply the same fix for the other malformed nested fenced
blocks called out in the review (the additional inner example fences elsewhere
in the document).
| - No dedicated workflow command files were generated for this repo. | ||
|
|
||
| Use these workflow files as reusable task scaffolds when the detected repository workflows recur. No newline at end of file |
There was a problem hiding this comment.
Clarify “these workflow files” reference.
Line 24 says no workflow command files were generated, but Line 26 refers to “these workflow files.” Reword to avoid contradictory guidance.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.codex/AGENTS.md around lines 24 - 26, The wording is contradictory: it
first states "No dedicated workflow command files were generated" then refers to
"these workflow files"; update the sentence around that phrase so it
consistently references either the absence of generated files or the available
templates — for example, replace "Use these workflow files as reusable task
scaffolds when the detected repository workflows recur." with wording that
clearly points to provided templates or examples (e.g., "Use the workflow
templates below as reusable task scaffolds..." or "If workflow files are added
later, use them as reusable task scaffolds...") so the message no longer implies
both "none were generated" and "these files" at the same time.
|
|
||
| [mcp_servers.context7] | ||
| command = "npx" | ||
| args = ["-y", "@upstash/context7-mcp@latest"] |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify all floating MCP package references in Codex config files.
fd -i 'config.toml|*.toml' .codex --exec rg -n --no-heading '`@latest`|"\^|"\~'Repository: looptech-ai/understand-quickly
Length of output: 384
🏁 Script executed:
rg -n --no-heading '`@latest`|@\\^|@~' .codex --glob '*.toml'Repository: looptech-ai/understand-quickly
Length of output: 219
Pin MCP package versions instead of using @latest.
.codex/config.toml contains floating MCP versions:
args = ["-y", "`@upstash/context7-mcp`@latest"]and
args = ["-y", "`@playwright/mcp`@latest", "--extension"]Pin explicit versions for @upstash/context7-mcp and @playwright/mcp to keep agent behavior reproducible and reduce supply-chain drift risk.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.codex/config.toml at line 14, The config uses floating MCP package tags
(e.g., the args entries containing "`@upstash/context7-mcp`@latest" and
"`@playwright/mcp`@latest"); replace these with pinned version strings for
reproducibility and supply-chain safety by updating the args arrays to reference
explicit versions (e.g., "`@upstash/context7-mcp`@<version>" and
"`@playwright/mcp`@<version>"). Locate the args entries in .codex/config.toml (the
strings "`@upstash/context7-mcp`@latest" and "`@playwright/mcp`@latest") and
substitute the desired semver or commit-based versions, ensuring both
occurrences are updated and tested.
|
|
||
| strategy: | ||
| matrix: | ||
| node-version: [18.x, 20.x, 22.x] |
There was a problem hiding this comment.
Remove Node.js 18.x from the test matrix—it's past End-of-Life.
Node.js 18.x reached End-of-Life on April 30, 2025. Testing against an EOL version that no longer receives security patches creates a false sense of compatibility and may encourage users to run production workloads on an insecure runtime.
🔒 Proposed fix to remove EOL Node.js version
- node-version: [18.x, 20.x, 22.x]
+ node-version: [20.x, 22.x]📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| node-version: [18.x, 20.x, 22.x] | |
| node-version: [20.x, 22.x] |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/node.js.yml at line 19, Update the GitHub Actions Node.js
test matrix by removing the EOL 18.x entry from the node-version matrix (the
node-version array in the workflow) so it only tests supported runtimes (e.g.,
[20.x, 22.x]); locate the matrix definition that contains "node-version: [18.x,
20.x, 22.x]" and change it to exclude 18.x, and run the workflow locally or in
CI to verify jobs still resolve and any setup-node steps continue to work with
the remaining versions.
| # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ | ||
|
|
||
| steps: | ||
| - uses: actions/checkout@v4 |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Fetch the latest commit SHA for actions/checkout v4 tag
gh api repos/actions/checkout/git/ref/tags/v4 --jq '.object.sha' || \
gh api repos/actions/checkout/commits/v4 --jq '.sha'Repository: looptech-ai/understand-quickly
Length of output: 115
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== workflow file =="
ls -la .github/workflows/node.js.yml
sed -n '1,120p' .github/workflows/node.js.yml | nl -ba | sed -n '15,60p'
echo
echo "== find checkout usages =="
rg -n "uses:\s*actions/checkout@v4|uses:\s*actions/checkout@" .github/workflows/node.js.yml .github/workflows -S || true
echo
echo "== find persist-credentials =="
rg -n "persist-credentials" .github/workflows/node.js.yml .github/workflows -S || trueRepository: looptech-ai/understand-quickly
Length of output: 233
🏁 Script executed:
#!/bin/bash
set -u
echo "== workflow file =="
ls -la .github/workflows/node.js.yml
echo "== lines 1-120 =="
cat -n .github/workflows/node.js.yml | sed -n '1,120p'
echo
echo "== find checkout usages =="
rg -n "uses:\s*actions/checkout@v4|uses:\s*actions/checkout@" .github/workflows/node.js.yml .github/workflows -S || true
echo
echo "== find persist-credentials =="
rg -n "persist-credentials" .github/workflows/node.js.yml .github/workflows -S || trueRepository: looptech-ai/understand-quickly
Length of output: 2070
Pin actions/checkout to a commit SHA and set persist-credentials: false (in .github/workflows/node.js.yml)
uses: actions/checkout@v4is an unpinned tag (should be a commit SHA).- This workflow has no
persist-credentialsoverride, so the GitHub token can remain available to later steps.
Apply fix
- - uses: actions/checkout@v4
+ - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
+ with:
+ persist-credentials: false🧰 Tools
🪛 zizmor (1.25.2)
[warning] 23-23: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false
(artipacked)
[error] 23-23: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)
(unpinned-uses)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/node.js.yml at line 23, Replace the unpinned checkout
action and add the credential setting: update the uses line that currently says
"uses: actions/checkout@v4" to pin to a specific commit SHA (replace tag with
the chosen commit SHA for actions/checkout) and add a with block setting
"persist-credentials: false" so the checkout step reads the pinned SHA and
includes persist-credentials: false; target the checkout step identified by
"uses: actions/checkout@v4" and the "persist-credentials" setting to implement
this change.
| - name: Use Node.js ${{ matrix.node-version }} | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: ${{ matrix.node-version }} | ||
| cache: 'npm' |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Fetch the latest commit SHA for actions/setup-node v4 tag
gh api repos/actions/setup-node/git/ref/tags/v4 --jq '.object.sha' || \
gh api repos/actions/setup-node/commits/v4 --jq '.sha'Repository: looptech-ai/understand-quickly
Length of output: 115
Pin actions/setup-node to a commit SHA.
actions/setup-node@v4 is a floating tag; pinning prevents supply-chain risk if the tag is moved/compromised.
🔒 Proposed fix (pin to v4 tag commit SHA)
- name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v4
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - name: Use Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: 'npm' | |
| - name: Use Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: 'npm' |
🧰 Tools
🪛 zizmor (1.25.2)
[error] 25-25: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)
(unpinned-uses)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/node.js.yml around lines 24 - 28, Replace the floating
actions/setup-node@v4 reference with the specific commit SHA for the v4 tag to
avoid supply-chain risk: locate the workflow step that uses
actions/setup-node@v4 and change the ref to the commit SHA corresponding to the
v4 release (e.g., replace "uses: actions/setup-node@v4" with the same uses value
pinned to the v4 commit SHA); keep the existing inputs (node-version and cache)
unchanged after pinning.
What
Why
Type of change
registry.jsonfor an existing format.schemas/<name>@<int>.jsonplusok/badfixtures.Checklist
idmatchesowner/repoand is unique.okfixture validates, thebadfixture fails.npm testis green locally.npm run validateis green (or the PR explains why agraph_url404s in CI).Signed-off-by:line per DCO, or note in the PR that you'd like help adding one.For non-technical contributors 👋
If this is your first PR, just fill in What and Why. A maintainer will help with anything else.
Summary by CodeRabbit