j-pster/psters_ai_workflow/commit-changes-repo-worker

Claude Code and agent skill by j-pster/psters_ai_workflow

Trust tier 2
  • community
  • ext:[{"type":"hook","description":"Pre/post lifecycle hooks"}]
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Per-repo commit worker. Analyzes ALL changed files independently, groups them by ticket, and makes MULTIPLE focused commits — one per logical group. Spawned in parallel by /pwf-commit-changes (one instance per repo). Never create branches or push.

Install

npx vskill@latest install j-pster/psters_ai_workflow/commit-changes-repo-worker

Semi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard

SKILL.md

The same SKILL.md was published earlier as sideminddev/sm-skills/commit-changes-repo-worker.

Commit Changes Repo Worker

A focused, self-contained worker that handles one repository end-to-end: inspect files → classify each file by ticket → group → make multiple targeted commits → report.

Spawned as a generalPurpose subagent (model: fast) from the /pwf-commit-changes command. All instances run in parallel (one per repo).


Inputs (provided in the parent prompt)

VariableDescription
REPO_PATHAbsolute path to the git repository
REPO_NAMEShort repo name (e.g. frontend, backend)
TICKET_LISTNewline-separated list of TICKET-XXX: title entries

Step 1 — Discover Changed Files

Run:

bash
git -C <REPO_PATH> status --short

Parse the output to get a list of all changed/untracked files (any status: M, A, D, ??, R, etc.).

If the list is empty → skip to Step 5 (nothing_to_commit).


Step 2 — Analyze Each File Independently

For every file identified in Step 1, fetch its individual diff:

bash
# For tracked/modified/staged files:
git -C <REPO_PATH> diff HEAD -- "<file>"
# If the above returns nothing (e.g. newly staged or untracked):
git -C <REPO_PATH> diff --cached -- "<file>"

For each file, determine:

  • What it does (based on file path + diff content)
  • Which ticket from TICKET_LIST it most likely relates to, or NONE

Matching heuristics:

  • File name/path aligns with the ticket's feature area (e.g. tasks/ → ticket about tasks)
  • Diff content (added/removed lines) matches the ticket description
  • If a file clearly belongs to multiple tickets, assign it to the one with the highest coverage
  • Config, tooling, migration, and infra files with no clear ticket → assign NONE

Build a map: file → TICKET-XXX (or NONE)


Step 3 — Group Files by Ticket

Group all files by their assigned ticket:

Group 1: TICKET-727 → [src/app/features/tasks/components/task-detail/task-detail.component.html]
Group 2: TICKET-726 → [src/app/shared/components/text-input/text-input.component.scss, ...]
Group 3: NONE → [src/database/migrations/1234567-SomeMigration.ts]

Rules:

  • Each ticket gets its own commit group.
  • NONE files that are clearly related to each other (e.g. multiple migration files for the same feature) can be grouped into a single NONE commit.
  • NONE files from completely unrelated areas should get separate commits (e.g. a backend migration + a frontend config change → two separate NONE commits).
  • If only one group exists (all files map to the same ticket, or all are NONE), that's fine — just one commit.

Step 4 — Make One Commit Per Group

For each group, in order (ticket groups first, NONE groups last):

4a — Build the commit message

Format: [TICKET-XXXX] <emoji> <type>(<scope>): <subject>

Commit type + emoji reference:

EmojiTypeWhen
🚀featnew user-visible feature
🐛fixbug fix
♻️refactorcode restructuring, no behaviour change
🎨styleSCSS/CSS/formatting only
⚡perfperformance improvement
✅testtests only
📝docsdocumentation
🔧choremaintenance, config, tooling, dependencies
🔒securitysecurity fix
🚧wipincomplete / in-progress work

Rules:

  • [TICKET-XXXX] prefix only when the group has a matched ticket; omit for NONE.
  • <scope> = the main module/feature affected (e.g. tasks, projects, migrations).
  • <subject> ≤ 50 characters, English, imperative mood ("fix", not "fixed"/"fixes").
  • Subject must be descriptive of what this group actually changes — not generic.
4b — Stage only the files in this group
bash
git -C <REPO_PATH> add -- <file1> <file2> ...

For deleted files and renamed files, git add handles them correctly with --.

4c — Commit
bash
git -C <REPO_PATH> commit -m "$(cat <<'EOF'
<commit_message>
EOF
)"

Repeat Steps 4a–4c for every group before moving to the next.


Step 5 — Report

Reply with exactly this JSON and nothing else:

json
{
"repo": "<REPO_NAME>",
"status": "committed | failed | nothing_to_commit",
"commits": [
{
"ticket": "TICKET-XXX or NONE",
"message": "[TICKET-727] 🐛 fix(tasks): move back-to-table button to right side",
"files": ["path/to/file1.ts", "path/to/file2.html"],
"result": "ok | failed",
"error": null
},
{
"ticket": "TICKET-726",
"message": "[TICKET-726] 🐛 fix(text-input): allow clicking inside widget",
"files": ["path/to/text-input.component.scss"],
"result": "ok | failed",
"error": null
}
],
"error": "<top-level error or null>"
}
  • committed — at least one commit succeeded.
  • nothing_to_commit — no changed files found in Step 1.
  • failed — all commit attempts failed; include error.

Constraints

  • No branches — commit on the current branch only.
  • No push — local commits only; do not run git push.
  • No interactive commands — do not run git rebase -i, git add -p, etc.
  • No bulk staging — never run git add -A; always stage specific files per commit group.
  • Do not abort on pre-commit hook failure — report failed on that group's result, continue with remaining groups.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Extension points

  • hookPre/post lifecycle hooks

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/j-pster/psters_ai_workflow/commit-changes-repo-worker/badge)](https://verified-skill.com/skills/j-pster/psters_ai_workflow/commit-changes-repo-worker)

Something wrong with this skill or its page? Tell us.