Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions docs/CATALOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,13 @@ Meta-cognition: brainstorm, challenge, blind-spot scan, fact-check.

Version-control workflows: repo init, commit, pull/merge request, release tag, issue.

| Skill | Role | Actions |
| ----------------- | ------------------------------------------------------------------------------- | ----------------------- |
| `00-repo-init` | Initialize a repo: git init, default branch, bootstrap commit, optional remote | `01-init`, `02-publish` |
| `01-commit` | Create an atomic conventional commit | `01-commit` |
| `02-pull-request` | Create a draft pull or merge request | `01-pull-request` |
| `03-release-tag` | Cut a semver release with annotated tag and notes | `01-release-tag` |
| `04-issue-create` | Create an issue in the configured ticketing tool | `01-issue-create` |
| Skill | Role | Actions |
| ----------------- | ------------------------------------------------------------------------------ | --------------------------------------- |
| `00-repo-init` | Initialize a repo: git init, default branch, bootstrap commit, optional remote | `01-init`, `02-publish` |
| `01-commit` | Commit atomically; safely retry scoped hook fixes | `01-collect`, `02-message`, `03-commit` |
| `02-pull-request` | Create a draft pull or merge request | `01-pull-request` |
| `03-release-tag` | Cut a semver release with annotated tag and notes | `01-release-tag` |
| `04-issue-create` | Create an issue in the configured ticketing tool | `01-issue-create` |

## 🎼 aidd-orchestrator

Expand Down
2 changes: 1 addition & 1 deletion plugins/aidd-vcs/CATALOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Auto-generated index of skills, agents, references and assets shipped by the `ai
| `actions` | [02-message.md](skills/01-commit/actions/02-message.md) | - |
| `actions` | [03-commit.md](skills/01-commit/actions/03-commit.md) | - |
| `assets` | [commit-template.md](skills/01-commit/assets/commit-template.md) | `VCS commit message template` |
| `-` | [SKILL.md](skills/01-commit/SKILL.md) | `Create an atomic git commit with a conventional message, optionally pushing. Use when the user wants to commit changes, optionally pushing the branch. Not for amending, rebasing, opening a pull request, or tagging a release.` |
| `-` | [SKILL.md](skills/01-commit/SKILL.md) | `Create atomic conventional commits; safely retry scoped hook fixes; optionally push. Use when the user wants to commit changes, optionally pushing the branch. Not for amending, rebasing, opening a pull request, or tagging a release.` |

#### `skills/02-pull-request`

Expand Down
2 changes: 1 addition & 1 deletion plugins/aidd-vcs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Covers all external artifact creation: repo init, commits, pull/merge requests,
| Bracket ID | Skill | Description |
|---|---|---|
| [3.0] | [repo-init](skills/00-repo-init/SKILL.md) | Initialize a repo: git init, default branch, bootstrap commit, CONTRIBUTING.md, optional remote. |
| [3.1] | [commit](skills/01-commit/SKILL.md) | Create a git commit with proper conventional message format. |
| [3.1] | [commit](skills/01-commit/SKILL.md) | Commit atomically; safely retry scoped hook fixes. |
| [3.2] | [pull-request](skills/02-pull-request/SKILL.md) | Create PR (GitHub) or MR (GitLab) with filled template. |
| [3.3] | [release-tag](skills/03-release-tag/SKILL.md) | Create and push a semantic version git tag with release notes. |
| [3.4] | [issue-create](skills/04-issue-create/SKILL.md) | Create issues in the configured ticketing tool. |
Expand Down
16 changes: 8 additions & 8 deletions plugins/aidd-vcs/skills/01-commit/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
---
name: 01-commit
description: Create an atomic git commit with a conventional message, optionally pushing. Use when the user wants to commit changes, optionally pushing the branch. Not for amending, rebasing, opening a pull request, or tagging a release.
description: Create atomic conventional commits; safely retry scoped hook fixes; optionally push. Use when the user wants to commit changes, optionally pushing the branch. Not for amending, rebasing, opening a pull request, or tagging a release.
argument-hint: paths | auto | push
---

# Commit

Stage the right changes, write the message, commit. `01 → 02 → 03`.
Stage, message, commit. `01 → 02 → 03`.

## Actions

| # | Action | Step |
| --- | --------- | ----------------------------------------------------- |
| 01 | `collect` | Review the change and stage what belongs in one commit |
| 02 | `message` | Write the conventional message |
| 03 | `commit` | Commit, and push when asked |
| # | Action | Step |
| --- | --------- | ---------------------------------------------- |
| 01 | `collect` | Stage one concern |
| 02 | `message` | Write the conventional message |
| 03 | `commit` | Commit, safely retry scoped fixes, push if asked |

Several concerns means several commits: repeat the chain, one concern at a time.
Before running an action, read its file in `actions/`, not only the table or assets.
Expand All @@ -25,7 +25,7 @@ Before running an action, read its file in `actions/`, not only the table or ass
- One concern per commit. Imperative mood. The body says why, not what.
- Reference the issue in the body when there is one.
- Never `--force` push; `--force-with-lease` only when explicitly asked.
- A hook that rejects the commit is not this skill's job: report which hook and why, then stop. Re-stage only files a hook auto-formatted.
- Retry a rejected hook only for deterministic changes within the current commit's files. Never broaden the change to make a check pass.
- `auto` never prompts. `interactive` confirms before staging and before each split.
- Commits locally by default; pushes as well only when the push option is set.

Expand Down
12 changes: 7 additions & 5 deletions plugins/aidd-vcs/skills/01-commit/actions/03-commit.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
# 03 - Commit

Record the commit, and push when asked.
Record the commit, safely retry scoped hook fixes, and push when asked.

## Input

The staged set from `01-collect`, the message from `02-message`, and whether to push (a trailing `push` argument).

## Output

The commit sha, the branch, and whether it was pushed.
The commit sha, branch, correction count, and push outcome.

## Process

1. **Commit.** Run `git commit` with the message.
2. **Hook.** If a pre-commit hook rejects it, report which hook and why, then stop; fixing it is the caller's job. Re-stage and retry once only when the hook merely auto-formatted files.
2. **Retry.** On hook rejection, re-stage and retry only a deterministic correction within the current commit's files. Stop and report the hook and error when it needs judgment, leaves scope, makes no progress, or fails three times.
3. **Push.** When asked, push the branch. Use `--force-with-lease` only when explicitly required, never `--force`.
4. **Report.** Return the short sha, subject, file count, correction count, and push outcome.

## Test

- `git rev-parse HEAD` returns the new sha and its message matches the project convention.
- A rejecting hook leaves no commit and a clear report, not a retry loop.
- When pushed, the remote branch shows the sha.
- Every correction and re-staged file belongs to the current commit's staged files.
- An ambiguous, out-of-scope, no-progress, or third failed correction leaves no commit and reports the blocker.
- When pushed, the remote branch shows the final sha.