cpr — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited cpr (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Fire-and-forget workflow: commit -> push -> review -> release-please. The entire pipeline runs in the background so you can keep working.
Spawn a single background Agent with model: "sonnet" and run_in_background: true containing the full pipeline prompt below. After spawning, tell the user:
"CPR running in the background — you'll be notified when it's done."
Then stop. Do not block the conversation.
When the agent completes, relay its summary to the user.
Provide all of the following as the agent's prompt. Fill in the current branch name before dispatching.
You are running the CPR (Commit, Push, Release) pipeline. Execute each step sequentially. If a step fails, report the error and stop — do not continue to the next step.
Run these four commands in parallel to understand the repo state:
git statusgit diffgit diff --cachedgit log --oneline -10If there are no changes at all (nothing unstaged, staged, or untracked), skip to Step 2 — there may still be unpushed commits.
Otherwise, group related files into logical commits:
For each group, stage the specific files and commit with a conventional commit message that matches the style visible in git log:
feat(scope): description for new featuresfix(scope): description for bug fixesrefactor(scope): description for restructuringchore(scope): description for maintenanceRules:
--no-verify — always let git hooks runDetermine the current branch and push:
git pushgit push -u origin <branch>If push fails, report the error and stop.
Always runs, regardless of branch or release-please configuration. Bounded loop — max 2 iterations.
#### 3a. Determine the review range
Pick the diff range based on the branch:
git fetch origin
BASE=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name')
RANGE="origin/${BASE}...HEAD" git fetch --tags
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
RANGE="${LAST_TAG:+$LAST_TAG..}HEAD"If no tag exists, fall back to the last 20 commits: RANGE="HEAD~20..HEAD".
Inspect the range:
git log --oneline "$RANGE"
git diff "$RANGE"If the diff is empty, skip to Step 4.
#### 3b. Spawn the review sub-agent
Spawn foreground (blocking), review-only — do not let the sub-agent edit files:
subagent_type: general-purposedescription: "Review pushed changes"prompt: give the sub-agent the branch name, the range, and the diff output. Ask it to return a structured summary with three lists:blockers — correctness bugs, security issues, data-loss risks, clearly broken codewarnings — risky patterns, missing tests for critical paths, questionable designnits — style, naming, minor polishEach item must include file:line and a one-line description. End with an explicit line: VERDICT: PASS (no blockers) or VERDICT: FIX_REQUIRED (one or more blockers).
#### 3c. Act on the verdict
blockers. Do not touch warnings or nits — they go in the final summary.fix(review): <short description>). Same grouping rules as Step 1. Using fix: also ensures release-please picks them up on main.git push. On main, this updates the release-please PR automatically; on a feature branch, it updates the open PR (if any).RANGE and re-run the sub-agent review.Gate check — all three conditions must be true to proceed:
main or master.release-please-manifest.json existsrelease-please-config.json exists.github/workflows/*.yml file contains the string "release-please"If any condition fails, skip to Step 5.
#### 4a. Wait for the release-please PR
The push to main triggers a GitHub Actions workflow that creates (or updates) a release-please PR. Poll for it:
gh pr list --label "autorelease: pending" --json number,title,url --limit 1Check every 15 seconds for up to 5 minutes. If the PR already exists when you first check, proceed immediately.
If no PR appears after 5 minutes, report "release-please did not create a PR — commits may not contain releasable changes (check conventional commit prefixes)" and skip to Step 5.
#### 4b. Merge the release-please PR
First try a direct merge:
gh pr merge <number> --mergeIf that fails because checks haven't passed yet, enable auto-merge:
gh pr merge <number> --merge --autoThen poll until the PR is actually merged:
gh pr view <number> --json state --jq '.state'Check every 15 seconds for up to 10 minutes. If it doesn't merge in time, report the timeout and stop.
#### 4c. Monitor the release workflow
After the release-please PR merges, release-please runs again to create the actual GitHub release. Monitor the workflow:
gh run list --branch main --limit 1 --json status,conclusion,url,namePoll every 15 seconds for up to 10 minutes. Wait until status is completed. Report the conclusion (success/failure) and the run URL.
Report everything that happened:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.