Skip to content

feat(commit-push): run skill with sonnet model#28

Merged
giwankim merged 1 commit into
mainfrom
giwankim/commit-push-sonnet-model
Apr 30, 2026
Merged

feat(commit-push): run skill with sonnet model#28
giwankim merged 1 commit into
mainfrom
giwankim/commit-push-sonnet-model

Conversation

@giwankim

@giwankim giwankim commented Apr 30, 2026

Copy link
Copy Markdown
Owner

Summary

  • Adds model: sonnet to the commit-push skill frontmatter so the skill executes with Sonnet instead of inheriting the conversation model (typically Opus).

Test Plan

  • Invoke /commit-push while running on Opus and confirm the skill runs on Sonnet

Open in Devin Review

Add model: sonnet to frontmatter so the skill executes with the cheaper
Sonnet model rather than inheriting the current conversation model (Opus).
@coderabbitai

coderabbitai Bot commented Apr 30, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 2fc052d7-f04c-46a9-b030-4da2a6ee3d33

📥 Commits

Reviewing files that changed from the base of the PR and between 5a905d4 and 907a317.

📒 Files selected for processing (1)
  • skills/commit-push/SKILL.md
📜 Recent review details
🧰 Additional context used
🧠 Learnings (7)
📓 Common learnings
Learnt from: giwankim
Repo: giwankim/my-claude-code PR: 26
File: skills/commit-push/SKILL.md:82-93
Timestamp: 2026-04-19T22:41:52.404Z
Learning: In `skills/commit-push/SKILL.md` (PR `#26`), the hook-failure policy in Step 5.4 was tightened in commit 5a27de3: (a) fixer is determined from hook stderr + file types with concrete examples (prettier, ruff/black, gofmt, markdownlint-cli, shfmt); checks with no auto-fix go directly to abort; (b) bounded retry of ≤2 fixer-driven retries (≤3 total git commit attempts per iteration — two retries because eslint --fix can need multiple passes for cascading autofixes); (c) on exhausted retries OR no determinable fixer, the group is marked FAILED and the loop aborts — do NOT attempt remaining groups, do NOT reconcile, do NOT push. Abort was chosen over skip to preserve the atomic-batch invariant (consistent with the secret filter's design philosophy). Steps 6, 7, and 8 all condition on the abort flag. Eval 21 covers the always-fail no-fixer path; eval 7 covers retry-succeeds.
Learnt from: giwankim
Repo: giwankim/my-claude-code PR: 0
File: :0-0
Timestamp: 2026-04-19T22:28:43.115Z
Learning: In `skills/commit-push/SKILL.md`, the YAML frontmatter `description` field is intentionally dense (~400 chars) because it is the primary signal read by skill-matcher models when deciding whether to invoke `/commit-push` for a user utterance. Each phrase covers a distinct invocation pattern (e.g., "auto-detect and multi-commit splits", "--single/-1", "as one commit", "file args", "--select", "secret-file filtering"). Trimming for human readability would reduce trigger recall. This density is a deliberate design choice, not a documentation defect.
Learnt from: giwankim
Repo: giwankim/my-claude-code PR: 26
File: skills/commit-push/SKILL.md:29-33
Timestamp: 2026-04-19T12:13:30.522Z
Learning: In `skills/commit-push/SKILL.md`, the secret filter (step 2b) is an absolute safety invariant: it cannot be bypassed by any flag (`--single`, `-1`, `--select`, or explicit `file` args). Users who hit a false positive have three workarounds: (a) rename the file so it no longer matches the pattern, (b) adjust the filter rules in the skill, or (c) commit the file manually outside the skill (`git add` + `git commit` + `git push`). Re-invoking `/commit-push` with `--select` or explicit `file` args will NOT re-include a filtered file. This is enforced by evals 9 and 18 in `skills/commit-push/evals/evals.json`.
Learnt from: giwankim
Repo: giwankim/my-claude-code PR: 26
File: skills/commit-push/SKILL.md:46-48
Timestamp: 2026-04-20T01:59:05.817Z
Learning: In `skills/commit-push/SKILL.md` rule 3.4, root CI service config files (e.g., `.codecov.yml`, `codecov.yaml`, `.travis.yml`, `.sonarcloud.properties`) map to the `ci` scope, consistent with rule 3.2's ".github/ → ci" principle. `.circleci/config.yml` is directory-prefixed and is handled by rule 3.3 (top-level directory), NOT rule 3.4 (root files only). This mapping was added to fix an inconsistency where the cross-rule merging example referenced `.codecov.yml` → `ci` but rule 3.4 had no such mapping.
Learnt from: giwankim
Repo: giwankim/my-claude-code PR: 27
File: skills/commit-push/evals/evals.json:0-0
Timestamp: 2026-04-21T14:25:43.183Z
Learning: In `skills/commit-push/SKILL.md`, the `permissions.deny` prefix-glob entries (e.g., `Bash(git push -f:*)`, `Bash(git push --force:*)`, `Bash(git push --delete:*)`) have a systematic coverage gap: flag-first forms like `git push -f origin main` ARE caught because the command starts with the deny prefix, but remote-first forms like `git push origin main -f` are NOT caught because the remote argument appears before the flag, breaking the prefix match. This is a property of how prefix-globs work — not a per-example surprise — and is the correct illustrative example to use when explaining the deny-list leak in documentation or evals.
📚 Learning: 2026-04-19T22:28:43.115Z
Learnt from: giwankim
Repo: giwankim/my-claude-code PR: 0
File: :0-0
Timestamp: 2026-04-19T22:28:43.115Z
Learning: In `skills/commit-push/SKILL.md`, the YAML frontmatter `description` field is intentionally dense (~400 chars) because it is the primary signal read by skill-matcher models when deciding whether to invoke `/commit-push` for a user utterance. Each phrase covers a distinct invocation pattern (e.g., "auto-detect and multi-commit splits", "--single/-1", "as one commit", "file args", "--select", "secret-file filtering"). Trimming for human readability would reduce trigger recall. This density is a deliberate design choice, not a documentation defect.

Applied to files:

  • skills/commit-push/SKILL.md
📚 Learning: 2026-04-19T22:41:52.404Z
Learnt from: giwankim
Repo: giwankim/my-claude-code PR: 26
File: skills/commit-push/SKILL.md:82-93
Timestamp: 2026-04-19T22:41:52.404Z
Learning: In `skills/commit-push/SKILL.md` (PR `#26`), the hook-failure policy in Step 5.4 was tightened in commit 5a27de3: (a) fixer is determined from hook stderr + file types with concrete examples (prettier, ruff/black, gofmt, markdownlint-cli, shfmt); checks with no auto-fix go directly to abort; (b) bounded retry of ≤2 fixer-driven retries (≤3 total git commit attempts per iteration — two retries because eslint --fix can need multiple passes for cascading autofixes); (c) on exhausted retries OR no determinable fixer, the group is marked FAILED and the loop aborts — do NOT attempt remaining groups, do NOT reconcile, do NOT push. Abort was chosen over skip to preserve the atomic-batch invariant (consistent with the secret filter's design philosophy). Steps 6, 7, and 8 all condition on the abort flag. Eval 21 covers the always-fail no-fixer path; eval 7 covers retry-succeeds.

Applied to files:

  • skills/commit-push/SKILL.md
📚 Learning: 2026-04-19T12:13:30.522Z
Learnt from: giwankim
Repo: giwankim/my-claude-code PR: 26
File: skills/commit-push/SKILL.md:29-33
Timestamp: 2026-04-19T12:13:30.522Z
Learning: In `skills/commit-push/SKILL.md`, the secret filter (step 2b) is an absolute safety invariant: it cannot be bypassed by any flag (`--single`, `-1`, `--select`, or explicit `file` args). Users who hit a false positive have three workarounds: (a) rename the file so it no longer matches the pattern, (b) adjust the filter rules in the skill, or (c) commit the file manually outside the skill (`git add` + `git commit` + `git push`). Re-invoking `/commit-push` with `--select` or explicit `file` args will NOT re-include a filtered file. This is enforced by evals 9 and 18 in `skills/commit-push/evals/evals.json`.

Applied to files:

  • skills/commit-push/SKILL.md
📚 Learning: 2026-04-20T01:59:05.817Z
Learnt from: giwankim
Repo: giwankim/my-claude-code PR: 26
File: skills/commit-push/SKILL.md:46-48
Timestamp: 2026-04-20T01:59:05.817Z
Learning: In `skills/commit-push/SKILL.md` rule 3.4, root CI service config files (e.g., `.codecov.yml`, `codecov.yaml`, `.travis.yml`, `.sonarcloud.properties`) map to the `ci` scope, consistent with rule 3.2's ".github/ → ci" principle. `.circleci/config.yml` is directory-prefixed and is handled by rule 3.3 (top-level directory), NOT rule 3.4 (root files only). This mapping was added to fix an inconsistency where the cross-rule merging example referenced `.codecov.yml` → `ci` but rule 3.4 had no such mapping.

Applied to files:

  • skills/commit-push/SKILL.md
📚 Learning: 2026-04-20T01:58:53.110Z
Learnt from: giwankim
Repo: giwankim/my-claude-code PR: 26
File: skills/commit-push/SKILL.md:10-10
Timestamp: 2026-04-20T01:58:53.110Z
Learning: In `skills/commit-push/SKILL.md`, the secret filter's "cannot be bypassed" invariant has a second enforcement requirement beyond per-file name-matching: `git status --porcelain` (default mode) collapses entirely untracked directories into a single `?? dir/` entry. The candidate file set must expand every such directory entry via `git ls-files --others --exclude-standard -- <dir>/` into constituent leaf file paths *before* step 2b secret filtering and *before* step 5 staging. The `--select` interactive picker must also show expanded file paths (not `dir/` placeholders). `git add` in step 5.1 must only accept explicit file paths — directory pathspecs like `git add <dir>/` are explicitly forbidden because they bypass individual file-level secret checks. Eval 22 covers this invariant: scratch repo with `newdir/notes.txt` + `newdir/.env`; assertions are (1) candidate set = `{newdir/notes.txt}`, (2) reply lists `newdir/.env` as excluded, (3) `newdir/.env` stays untracked post-run, (4) only o...

Applied to files:

  • skills/commit-push/SKILL.md
📚 Learning: 2026-04-21T14:25:43.183Z
Learnt from: giwankim
Repo: giwankim/my-claude-code PR: 27
File: skills/commit-push/evals/evals.json:0-0
Timestamp: 2026-04-21T14:25:43.183Z
Learning: When using prefix-globs in `permissions.deny` entries (for example, deny patterns meant to match commands via a prefix like `Bash(git push -f:*)`), remember that prefix matching is order-sensitive: commands where the remote/path comes before the flag (e.g., `git push origin main -f`, `git push origin main --delete ...`) will not match prefix-globs that assume the flag appears immediately after `git push`. Ensure deny-list documentation/evals include such remote-first counterexamples and update the deny patterns (or add additional deny entries) so the intended coverage isn’t broken by argument order.

Applied to files:

  • skills/commit-push/SKILL.md
🔇 Additional comments (1)
skills/commit-push/SKILL.md (1)

3-3: Frontmatter model override looks correct.

model: sonnet is a clean, scoped metadata change that matches the PR goal without affecting the workflow logic below.


📝 Walkthrough

Summary by CodeRabbit

  • Chores
    • Updated skill metadata configuration.

Walkthrough

The commit-push skill metadata was updated to specify model: sonnet in the frontmatter. No functional changes to workflows, prompts, logic, or command behavior were made.

Changes

Cohort / File(s) Summary
Skill Configuration
skills/commit-push/SKILL.md
Added model: sonnet field to frontmatter metadata.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Suggested labels

enhancement

Poem

🐰 A sonnet for the skill, how refined!
One line, one choice, a model so divine,
The rabbit hops through metadata with glee,
This tiny tweak makes workflows shine, you see! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and accurately describes the main change: adding the sonnet model specification to the commit-push skill.
Description check ✅ Passed The description is directly related to the changeset, explaining why the model field was added and providing a clear test plan.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch giwankim/commit-push-sonnet-model

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.

❤️ Share
Review rate limit: 0/1 reviews remaining, refill in 60 minutes.

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

@sonarqubecloud

Copy link
Copy Markdown

@devin-ai-integration devin-ai-integration 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.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Open in Devin Review

@giwankim giwankim merged commit 1ab6e4e into main Apr 30, 2026
6 checks passed
@giwankim giwankim deleted the giwankim/commit-push-sonnet-model branch April 30, 2026 04:32
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