Skip to content

chore: prepare repo for open-source publication - #103

Merged
amondnet merged 5 commits into
mainfrom
amondnet/oss
Jul 1, 2026
Merged

chore: prepare repo for open-source publication#103
amondnet merged 5 commits into
mainfrom
amondnet/oss

Conversation

@amondnet

@amondnet amondnet commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Summary

Two changes to prepare this repository for open-source publication:

  1. Claude Code settings OSS split — moved internal passionfactory marketplace plugins and the local code-intelligence directory-source marketplace out of the committed .claude/settings.json into a gitignored .claude/settings.local.json (untracked, not part of this PR). The committed settings.json now only lists public plugins (@pleaseai, @claude-plugins-official).
  2. Community health files + package metadata — added CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md, .github/PULL_REQUEST_TEMPLATE.md, and .github/ISSUE_TEMPLATE/{bug_report.md,feature_request.md,config.yml}; added license: "MIT" and repository fields to package.json.

Changes

  • .claude/settings.json — remove internal-only plugin entries and extraKnownMarketplaces
  • package.json — add license and repository
  • CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md (new)
  • .github/PULL_REQUEST_TEMPLATE.md (new)
  • .github/ISSUE_TEMPLATE/bug_report.md, feature_request.md, config.yml (new)

Remaining OSS checklist (follow-ups)

  • Switch publishing from bun publish to npm publish --provenance
  • Set up release-please
  • Wire up SonarCloud / Codecov
  • Add a license note to README

Test Plan

  • Verified .claude/settings.local.json remains untracked/gitignored and was not included in this PR
  • Confirmed .claude/settings.json and package.json diffs contain only the intended changes

Summary by cubic

Prepares the repo for open source: removes internal Claude Code settings, adds community docs and templates, unifies package repository URLs to pleaseai/code-intelligence, and enables verifiable npm releases with provenance. CI now pins all third‑party GitHub Actions (including codecov) to SHAs.

  • Refactors

    • Cleaned .claude/settings.json: removed internal plugins and the local marketplace; kept only public plugins (@pleaseai, @claude-plugins-official).
    • Added license: "MIT" and repository to root package.json; updated all packages’ repository.url to https://github.com/pleaseai/code-intelligence; fixed generated binary README link.
    • Hardened release/CI: release-please publishes with npm publish --provenance; local publish:npm uses npm; pinned Actions (actions/checkout, oven-sh/setup-bun, actions/setup-node, actions/cache, googleapis/release-please-action, actions/create-github-app-token, codecov/codecov-action) to commit SHAs.
  • New Features

    • Added CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md.
    • Added GitHub templates: PR template and issue templates (bug, feature, config).

Written for commit 7d5b031. Summary will update on new commits.

Summary by CodeRabbit

  • Documentation
    • Added a code of conduct, security policy, and contributing guide to clarify collaboration, reporting, and responsible disclosure.
  • New Features
    • Introduced standardized GitHub issue templates (bug + feature request) and a pull request template for consistent submissions.
  • Chores
    • Updated repository/licensing metadata across packages.
    • Improved the npm release process to publish with provenance, and tightened release workflow configuration for reliability.
  • Developer Experience
    • Refreshed local AI tooling plugin allowlist to streamline available plugins.

- Split internal passionfactory plugins and the local code-intelligence
  directory-source marketplace out of .claude/settings.json into a
  gitignored .claude/settings.local.json; committed settings.json now
  only lists public plugins (@pleaseai, @claude-plugins-official).
- Add community health files: CONTRIBUTING.md, CODE_OF_CONDUCT.md,
  SECURITY.md, .github/PULL_REQUEST_TEMPLATE.md, and
  .github/ISSUE_TEMPLATE/{bug_report.md,feature_request.md,config.yml}.
- Add MIT license and repository fields to package.json.
@coderabbitai

coderabbitai Bot commented Jul 1, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The head commit changed during the review from 4a0f629 to 7d5b031.

📝 Walkthrough

Walkthrough

This PR adds community documentation and GitHub templates, updates package repository metadata and publish commands, and changes generated README repository links plus release provenance settings.

Changes

Community health documentation

Layer / File(s) Summary
Community governance documentation
CODE_OF_CONDUCT.md, CONTRIBUTING.md, SECURITY.md
Adds Code of Conduct, contributing guidance, and security reporting instructions.
Issue and PR templates
.github/ISSUE_TEMPLATE/bug_report.md, .github/ISSUE_TEMPLATE/feature_request.md, .github/ISSUE_TEMPLATE/config.yml, .github/PULL_REQUEST_TEMPLATE.md
Adds bug and feature request issue templates, template configuration, and a pull request template.

Package publishing metadata

Layer / File(s) Summary
Package metadata and plugin config
package.json, .claude/settings.json
Adds root license and repository metadata and narrows the Claude plugin allowlist.
Publish commands and workflow
package.json, .github/workflows/release-please.yml
Updates npm publish commands and adds provenance to release publishing.
Repository URL updates
packages/binaries/package.json, packages/code/package.json, packages/dora/package.json, packages/format/package.json, packages/logger/package.json, packages/lsp/package.json, scripts/generate-packages.ts
Updates repository URLs in package manifests and generated native-package README links.

Estimated code review effort: 2 (Simple) | ~15 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main goal of preparing the repository for open-source release.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch amondnet/oss

Comment @coderabbitai help to get the list of available commands.

@gemini-code-assist gemini-code-assist 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.

Code Review

This pull request establishes repository standards and community guidelines by adding issue and pull request templates, a Code of Conduct, contributing instructions, and a security policy. It also cleans up enabled plugins in .claude/settings.json and adds license and repository metadata to package.json. The review feedback recommends further improving the package.json metadata by adding bugs and homepage fields to enhance the package's presentation on npm.

Comment thread package.json
Comment on lines +8 to +11
"repository": {
"type": "git",
"url": "git+https://github.com/chatbot-pf/code-intelligence.git"
},

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

[MEDIUM] package.json에 bugs 및 homepage 필드 추가 권장

Problem: 오픈소스 배포를 위해 package.json에 license와 repository 필드를 추가했으나, bugs와 homepage 필드가 누락되어 있습니다.
Rationale: npm에 패키지를 공개할 때 bugs 및 homepage 필드를 지정하면, npmjs.com 페이지에 버그 리포트 링크와 홈페이지 링크가 올바르게 표시되어 사용자 편의성이 향상됩니다.
Suggestion: package.json의 repository 필드 아래에 bugs와 homepage 필드를 추가하여 패키지 메타데이터를 보완해 주세요.

  "repository": {
    "type": "git",
    "url": "git+https://github.com/chatbot-pf/code-intelligence.git"
  },
  "bugs": {
    "url": "https://github.com/chatbot-pf/code-intelligence/issues"
  },
  "homepage": "https://github.com/chatbot-pf/code-intelligence#readme",

@greptile-apps

greptile-apps Bot commented Jul 1, 2026

Copy link
Copy Markdown

Greptile Summary

This PR prepares the repository for open-source publication by cleaning internal plugin references from .claude/settings.json, adding standard community health files (CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md, issue/PR templates), and hardening CI/CD by pinning all GitHub Actions to commit SHAs and enabling npm provenance publishing.

  • Settings cleanup: Removes passionfactory marketplace plugins and the local code-intelligence directory source from the committed settings.json, moving them to the gitignored settings.local.json.
  • Package metadata: Adds license: "MIT" and repository to root and sub-package package.json files; corrects all repository.url fields to pleaseai/code-intelligence (from various stale org names).
  • CI hardening: All third-party Actions are pinned to full SHAs in both ci.yml and release-please.yml; release publishing switches from bun publish to npm publish --provenance.

Confidence Score: 5/5

Safe to merge — changes are additive community/metadata files and CI hardening with no functional code impact.

The diff is entirely configuration, documentation, and workflow changes. Plugin removals from settings.json are intentional OSS cleanup. Package repository URL corrections are accurate. SHA-pinning of Actions and enabling npm provenance are straightforward improvements. The only noteworthy item is that CODE_OF_CONDUCT.md and SECURITY.md list security@passionfactory.ai as the enforcement/fallback contact, which is inconsistent with the public pleaseai brand — but this has no runtime impact and is easy to follow up on.

No files require special attention. The enforcement email in CODE_OF_CONDUCT.md and SECURITY.md could be revisited before the repo goes fully public.

Important Files Changed

Filename Overview
.claude/settings.json Removed internal passionfactory plugins and extraKnownMarketplaces local source; retained only public @pleaseai and @claude-plugins-official plugins.
.github/workflows/ci.yml Pinned all GitHub Actions to full commit SHAs with version comments — good supply-chain hardening for a public repo.
.github/workflows/release-please.yml Pinned all actions to SHAs; switched npm publish to use --provenance (drops old NPM_CONFIG_PROVENANCE: false env) and the publish job already has id-token: write for OIDC.
CODE_OF_CONDUCT.md Standard Contributor Covenant 2.1 added; enforcement contact email is security@passionfactory.ai, which is the internal company domain rather than a public-facing pleaseai address.
SECURITY.md Good security policy pointing to GitHub private advisory reporting; fallback contact is security@passionfactory.ai, matching the CoC but inconsistent with the public OSS pleaseai branding.
package.json Added license: MIT and repository pointing to pleaseai/code-intelligence; publish:npm now uses npm publish instead of bun publish.
scripts/generate-packages.ts Fixed generated binary README link from anthropics/ to pleaseai/code-intelligence.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Push to main] --> B{release-please job}
    B -- release_created=true --> C[publish job]
    B -- no release --> Z[done]
    C --> D[actions/checkout SHA-pinned]
    D --> E[setup-bun SHA-pinned]
    E --> F[setup-node SHA-pinned\nregistry-url=npmjs]
    F --> G[actions/cache SHA-pinned]
    G --> H[bun install]
    H --> I[bun run build:npm]
    I --> J["npm publish --provenance --access public\n(loop: npm/code-* + npm/code)"]
    J --> K[Packages published with OIDC provenance]
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[Push to main] --> B{release-please job}
    B -- release_created=true --> C[publish job]
    B -- no release --> Z[done]
    C --> D[actions/checkout SHA-pinned]
    D --> E[setup-bun SHA-pinned]
    E --> F[setup-node SHA-pinned\nregistry-url=npmjs]
    F --> G[actions/cache SHA-pinned]
    G --> H[bun install]
    H --> I[bun run build:npm]
    I --> J["npm publish --provenance --access public\n(loop: npm/code-* + npm/code)"]
    J --> K[Packages published with OIDC provenance]
Loading

Reviews (4): Last reviewed commit: "Merge remote-tracking branch 'origin/mai..." | Re-trigger Greptile

Comment thread .github/ISSUE_TEMPLATE/config.yml
Comment thread package.json
Comment thread CONTRIBUTING.md
@codecov

codecov Bot commented Jul 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🤖 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 `@CONTRIBUTING.md`:
- Around line 9-29: The bootstrap section still tells users to run mise install
even though this repo has no mise configuration and already relies on bun@1.3.5.
Update the setup instructions in CONTRIBUTING.md to remove the mise step and
keep only the bun-based install and run commands, so the workflow matches the
repo’s actual toolchain and scripts.
🪄 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: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: f8b8d226-8d29-413d-a763-a7185fc7a5cf

📥 Commits

Reviewing files that changed from the base of the PR and between 8af00cc and f2e5940.

📒 Files selected for processing (9)
  • .claude/settings.json
  • .github/ISSUE_TEMPLATE/bug_report.md
  • .github/ISSUE_TEMPLATE/config.yml
  • .github/ISSUE_TEMPLATE/feature_request.md
  • .github/PULL_REQUEST_TEMPLATE.md
  • CODE_OF_CONDUCT.md
  • CONTRIBUTING.md
  • SECURITY.md
  • package.json
💤 Files with no reviewable changes (1)
  • .claude/settings.json

Comment thread CONTRIBUTING.md
Comment on lines +9 to +29
```bash
git clone https://github.com/chatbot-pf/code-intelligence.git
cd code-intelligence
mise install # install pinned tool versions (if the repo uses mise)
bun install # install dependencies
```

If the repo does not use mise, follow the setup in its `README.md`.

## Development workflow

1. Create a branch from `main` (e.g. `feat/short-description` or `fix/issue-123`).
2. Make focused changes — keep each pull request to one logical change.
3. Run the checks below and make sure they pass.
4. Open a pull request and fill out the template.

```bash
bun run lint # lint and format
bun run test # run the test suite
bun run build # ensure it builds
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
python - <<'PY'
import json
from pathlib import Path

pkg = json.loads(Path("package.json").read_text())
print("packageManager:", pkg.get("packageManager"))
print("scripts:", sorted(pkg.get("scripts", {})))
PY

Repository: pleaseai/code-intelligence

Length of output: 332


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '--- toolchain-related files ---\n'
git ls-files | grep -E '(^|/)(\.mise\.toml|mise\.toml|\.tool-versions|package\.json|README\.md|CONTRIBUTING\.md)$' || true

printf '\n--- CONTRIBUTING.md excerpt ---\n'
nl -ba CONTRIBUTING.md | sed -n '1,80p'

printf '\n--- toolchain config probes ---\n'
for f in .mise.toml mise.toml .tool-versions package.json; do
  if [ -f "$f" ]; then
    printf '\n[%s]\n' "$f"
    nl -ba "$f" | sed -n '1,120p'
  fi
done

printf '\n--- mentions of mise in repo ---\n'
rg -n '\bmise\b' -g '!**/node_modules/**' -g '!**/dist/**' -g '!**/build/**' . || true

printf '\n--- mentions of bun in repo ---\n'
rg -n '\bbun\b' -g '!**/node_modules/**' -g '!**/dist/**' -g '!**/build/**' . || true

Repository: pleaseai/code-intelligence

Length of output: 255


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'package.json scripts and packageManager:\n'
python3 - <<'PY'
import json
from pathlib import Path
pkg = json.loads(Path("package.json").read_text())
print("packageManager =", pkg.get("packageManager"))
print("scripts =", sorted(pkg.get("scripts", {})))
PY

Repository: pleaseai/code-intelligence

Length of output: 375


🏁 Script executed:

#!/bin/bash
set -euo pipefail

if [ -f README.md ]; then
  printf '--- README.md mentions of setup commands ---\n'
  rg -n 'bun install|mise install|packageManager|test|lint|build' README.md || true
fi

Repository: pleaseai/code-intelligence

Length of output: 255


🏁 Script executed:

#!/bin/bash
set -euo pipefail

python3 - <<'PY'
from pathlib import Path
import re

text = Path("CONTRIBUTING.md").read_text()
for needle in ["mise install", "bun install", "bun run lint", "bun run test", "bun run build"]:
    print(needle, "=>", bool(re.search(re.escape(needle), text)))
PY

Repository: pleaseai/code-intelligence

Length of output: 269


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '--- toolchain-related files ---'
git ls-files | grep -E '(^|/)(\.mise\.toml|mise\.toml|\.tool-versions|package\.json|README\.md|CONTRIBUTING\.md)$' || true

echo
echo '--- CONTRIBUTING.md excerpt ---'
nl -ba CONTRIBUTING.md | sed -n '1,80p'

echo
echo '--- toolchain config probes ---'
for f in .mise.toml mise.toml .tool-versions package.json; do
  if [ -f "$f" ]; then
    echo
    echo "[$f]"
    nl -ba "$f" | sed -n '1,160p'
  fi
done

echo
echo '--- mentions of mise in repo ---'
rg -n '\bmise\b' -g '!**/node_modules/**' -g '!**/dist/**' -g '!**/build/**' . || true

echo
echo '--- mentions of bun install in repo ---'
rg -n 'bun install|bun run lint|bun run test|bun run build' -g '!**/node_modules/**' -g '!**/dist/**' -g '!**/build/**' . || true

echo
echo '--- README.md mentions of setup commands ---'
if [ -f README.md ]; then
  rg -n 'bun install|mise install|packageManager|test|lint|build' README.md || true
fi

Repository: pleaseai/code-intelligence

Length of output: 1558


🏁 Script executed:

#!/bin/bash
set -euo pipefail

python3 - <<'PY'
from pathlib import Path
for name in [".mise.toml", "mise.toml", ".tool-versions"]:
    p = Path(name)
    print(name, "exists =", p.exists())
    if p.exists():
        print(p.read_text()[:2000])
PY

Repository: pleaseai/code-intelligence

Length of output: 245


Remove the mise install step. This repo is pinned to bun@1.3.5 and exposes the expected bun run lint/test/build scripts, but it doesn’t declare any mise config, so the bootstrap instructions are misleading.

🤖 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 `@CONTRIBUTING.md` around lines 9 - 29, The bootstrap section still tells users
to run mise install even though this repo has no mise configuration and already
relies on bun@1.3.5. Update the setup instructions in CONTRIBUTING.md to remove
the mise step and keep only the bun-based install and run commands, so the
workflow matches the repo’s actual toolchain and scripts.

@cubic-dev-ai cubic-dev-ai 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.

2 issues found across 9 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="CONTRIBUTING.md">

<violation number="1" location="CONTRIBUTING.md:10">
P2: The clone URL uses `chatbot-pf/code-intelligence` but the canonical public org for this repository appears to be `pleaseai`. Contributors following these instructions will clone from the wrong location. Update to match the authoritative GitHub org.</violation>
</file>
Architecture diagram
sequenceDiagram
    participant Dev as Developer
    participant Claude as Claude Code
    participant SettingsJson as settings.json (committed)
    participant SettingsLocal as settings.local.json (gitignored)
    participant PluginAPI as Plugin Registry / Marketplace

    Note over Dev,PluginAPI: Runtime interaction after open-source separation

    Dev->>Dev: git clone – gets public settings.json only
    Dev->>Dev: manually creates .claude/settings.local.json (internal)

    Claude->>SettingsJson: reads enabledPlugins (now only public)
    SettingsJson-->>Claude: [@pleaseai, @claude-plugins-official, etc.]

    Claude->>SettingsLocal: reads extra known marketplaces & internal plugins
    alt local file present
        SettingsLocal-->>Claude: [passionfactory, code-intelligence directory]
    end

    Claude->>PluginAPI: fetch plugin definitions from all sources
    PluginAPI-->>Claude: plugin capabilities & MCP tools

    Note over Claude: Internal plugins no longer exposed in committed code
    Note over SettingsJson: This file is now safe for public publication
Loading

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread package.json Outdated
Comment thread CONTRIBUTING.md
## Getting started

```bash
git clone https://github.com/chatbot-pf/code-intelligence.git

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: The clone URL uses chatbot-pf/code-intelligence but the canonical public org for this repository appears to be pleaseai. Contributors following these instructions will clone from the wrong location. Update to match the authoritative GitHub org.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At CONTRIBUTING.md, line 10:

<comment>The clone URL uses `chatbot-pf/code-intelligence` but the canonical public org for this repository appears to be `pleaseai`. Contributors following these instructions will clone from the wrong location. Update to match the authoritative GitHub org.</comment>

<file context>
@@ -0,0 +1,44 @@
+## Getting started
+
+```bash
+git clone https://github.com/chatbot-pf/code-intelligence.git
+cd code-intelligence
+mise install        # install pinned tool versions (if the repo uses mise)
</file context>
Suggested change
git clone https://github.com/chatbot-pf/code-intelligence.git
git clone https://github.com/pleaseai/code-intelligence.git

Enable npm provenance in the release-please publish job (npm publish
--provenance --access public) and drop NPM_CONFIG_PROVENANCE: false.

Provenance binds the attestation to the repo CI builds from, so the
published package's repository.url must match. Point every package's
repository at the canonical pleaseai/code-intelligence (was stale:
pleaseai/code, chatbot-pf/code-please, chatbot-pf/code-intelligence
redirect) — generate-packages.ts copies packages/code's repository into
the published npm/code* artifacts.

Also switch the local publish:npm script from bun publish to npm publish
(bun publish does not support npm provenance) and fix the stale
anthropics/code URL in the generated binary README.

@coderabbitai coderabbitai 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.

🧹 Nitpick comments (1)
package.json (1)

29-29: 🩺 Stability & Availability | 🔵 Trivial | 💤 Low value

Lost idempotency safeguard on re-run.

Switching from bun publish --tolerate-republish to npm publish drops tolerance for republishing an already-published version. If this script fails partway through the npm/code-* loop and is re-run, earlier packages that already succeeded will now hard-fail instead of being skipped.

🤖 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 `@package.json` at line 29, The publish:npm script no longer tolerates
republishing, so reruns can fail on packages already published. Update the
publish flow in package.json to preserve idempotency by using the same
republish-safe behavior as before for the npm/code-* loop and the npm/code
publish step, so partial failures can be retried without hard-failing on earlier
successful publishes.
🤖 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.

Nitpick comments:
In `@package.json`:
- Line 29: The publish:npm script no longer tolerates republishing, so reruns
can fail on packages already published. Update the publish flow in package.json
to preserve idempotency by using the same republish-safe behavior as before for
the npm/code-* loop and the npm/code publish step, so partial failures can be
retried without hard-failing on earlier successful publishes.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c6d737ee-f8d4-4728-951c-813a1d2263e1

📥 Commits

Reviewing files that changed from the base of the PR and between f2e5940 and 4e77573.

📒 Files selected for processing (9)
  • .github/workflows/release-please.yml
  • package.json
  • packages/binaries/package.json
  • packages/code/package.json
  • packages/dora/package.json
  • packages/format/package.json
  • packages/logger/package.json
  • packages/lsp/package.json
  • scripts/generate-packages.ts
✅ Files skipped from review due to trivial changes (7)
  • packages/dora/package.json
  • packages/code/package.json
  • packages/binaries/package.json
  • packages/lsp/package.json
  • packages/logger/package.json
  • scripts/generate-packages.ts
  • packages/format/package.json

Pin all third-party GitHub Actions to full 40-char commit SHAs (with
version comments) per the OSS supply-chain standard — a moving tag can be
repointed at malicious code after review.

  create-github-app-token  v1.12.0
  release-please-action    v4.4.1
  checkout                 v4.3.1
  setup-bun                v2.2.0
  setup-node               v4.4.0
  cache                    v4.3.0

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🧹 Nitpick comments (2)
.github/workflows/release-please.yml (2)

59-61: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Pin Bun for reproducible release artifacts.

bun-version: latest leaves the publish build dependent on the version resolved at release time. Prefer a fixed version or bun-version-file from the repo’s toolchain metadata; the pinned setup action supports both forms. (raw.githubusercontent.com)

🤖 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/release-please.yml around lines 59 - 61, The release
workflow currently uses setup-bun with a floating bun-version, which makes
release builds non-reproducible. Update the bun setup step in the release-please
workflow to use a fixed Bun version or a bun-version-file from the repository’s
toolchain metadata, keeping the existing setup-bun action reference intact. Use
the bun setup step itself as the target for the change so the publish job always
resolves the same Bun version.

36-40: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Scope the GitHub App token to release-please’s minimum permissions (.github/workflows/release-please.yml:36-40).

actions/create-github-app-token inherits the app installation’s full permissions unless permission-* inputs are set, so pin this token to the scopes release-please needs (contents, pull-requests, issues) instead of using the broader default token.

🔒 Proposed hardening
       - uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1.12.0
         id: app-token
         with:
           app-id: ${{ secrets.PF_BOT_APP_ID }}
           private-key: ${{ secrets.PF_BOT_PRIVATE_KEY }}
+          permission-contents: write
+          permission-pull-requests: write
+          permission-issues: write
🤖 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/release-please.yml around lines 36 - 40, Scope the GitHub
App token used by the release-please workflow to the minimum required
permissions. In the release-please job that uses actions/create-github-app-token
and the app-token step, add the permission inputs for the exact release-please
scopes needed (contents, pull-requests, issues) so the generated token is not
granted the app installation’s broader default access.

Source: Linters/SAST tools

🤖 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 @.github/workflows/release-please.yml:
- Line 57: The publish job’s checkout step is still persisting repository
credentials, which is unnecessary for the install/build/publish flow. Update the
actions/checkout usage in the release-please workflow to explicitly disable
credential persistence by setting persist-credentials to false. Keep the change
scoped to the checkout step so later npm-related steps continue to work without
exposing the token.

---

Nitpick comments:
In @.github/workflows/release-please.yml:
- Around line 59-61: The release workflow currently uses setup-bun with a
floating bun-version, which makes release builds non-reproducible. Update the
bun setup step in the release-please workflow to use a fixed Bun version or a
bun-version-file from the repository’s toolchain metadata, keeping the existing
setup-bun action reference intact. Use the bun setup step itself as the target
for the change so the publish job always resolves the same Bun version.
- Around line 36-40: Scope the GitHub App token used by the release-please
workflow to the minimum required permissions. In the release-please job that
uses actions/create-github-app-token and the app-token step, add the permission
inputs for the exact release-please scopes needed (contents, pull-requests,
issues) so the generated token is not granted the app installation’s broader
default access.
🪄 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: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 3b6d73fd-ca07-44f6-81fd-8b631ee723aa

📥 Commits

Reviewing files that changed from the base of the PR and between 4e77573 and cba89a1.

📒 Files selected for processing (1)
  • .github/workflows/release-please.yml

id-token: write
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

Disable credential persistence on checkout in the publish job. The later steps only install, build, and publish npm packages, so the checkout token is unnecessary; set persist-credentials: false to keep repo credentials out of build scripts.

🔒 Proposed hardening
       - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
+        with:
+          persist-credentials: false
📝 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.

Suggested change
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
persist-credentials: false
🧰 Tools
🪛 zizmor (1.26.1)

[warning] 57-57: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false

(artipacked)

🤖 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/release-please.yml at line 57, The publish job’s checkout
step is still persisting repository credentials, which is unnecessary for the
install/build/publish flow. Update the actions/checkout usage in the
release-please workflow to explicitly disable credential persistence by setting
persist-credentials to false. Keep the change scoped to the checkout step so
later npm-related steps continue to work without exposing the token.

@cubic-dev-ai cubic-dev-ai 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.

1 issue found across 1 file (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name=".github/workflows/release-please.yml">

<violation number="1" location=".github/workflows/release-please.yml:57">
P2: Set `persist-credentials: false` on this checkout step. The publish job only needs source files for install/build/publish — it doesn't push commits. Leaving credentials persisted (the default) means the token is stored in `.git/config` where it could be read by npm lifecycle scripts during install or build, expanding the attack surface for supply-chain exploits.</violation>
</file>

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

id-token: write
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1

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: Set persist-credentials: false on this checkout step. The publish job only needs source files for install/build/publish — it doesn't push commits. Leaving credentials persisted (the default) means the token is stored in .git/config where it could be read by npm lifecycle scripts during install or build, expanding the attack surface for supply-chain exploits.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/workflows/release-please.yml, line 57:

<comment>Set `persist-credentials: false` on this checkout step. The publish job only needs source files for install/build/publish — it doesn't push commits. Leaving credentials persisted (the default) means the token is stored in `.git/config` where it could be read by npm lifecycle scripts during install or build, expanding the attack surface for supply-chain exploits.</comment>

<file context>
@@ -54,18 +54,18 @@ jobs:
       id-token: write
     steps:
-      - uses: actions/checkout@v4
+      - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
 
-      - uses: oven-sh/setup-bun@v2
</file context>
Suggested change
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
persist-credentials: false

amondnet added 2 commits July 1, 2026 18:52
Pin all third-party GitHub Actions in the CI workflow to full 40-char
commit SHAs (with version comments) per the OSS supply-chain standard.

  checkout        v4.3.1
  setup-bun       v2.2.0
  cache           v4.3.0
  codecov-action  v5.5.5
# Conflicts:
#	.github/workflows/release-please.yml
@sonarqubecloud

sonarqubecloud Bot commented Jul 1, 2026

Copy link
Copy Markdown

@amondnet
amondnet merged commit 07044c0 into main Jul 1, 2026
10 checks passed
@amondnet
amondnet deleted the amondnet/oss branch July 1, 2026 10:09
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