agentleFS
FuDesign2008FuDesign2008/open-skills/skills/delivery-discipline/SKILL.md

delivery-discipline

Skill6 starsChanged 6 days agoMITView on GitHub

Optional code-delivery discipline: decide whether this run needs commit + PR/MR, then commit/push via git-commit and create or update the PR/MR. Use after verification (and OpenSpec archive when the host requires it) and before feature-branch-closeout. Do NOT use for protected-branch merge (merge-discipline) or release→main shipping (git-release-finish). Triggers — 「提交并开PR」「提交并开MR」「代码交付」「开PR」「开MR」「delivery-discipline」 / deliver code, commit and open PR, open merge request.

2 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

12 rules. About 0 are common, 7 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈7

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  • could be automatic: a setting could enforce it
  1. Distinctive:

    After verification is green (or pendings are explicitly listed) — and after OpenSpec archive when the host requires archive before delivery …

    line 29
  2. Very specific:

    When skipping: state the reason in one line and return to the host (typically feature-branch-closeout or retrospective).

    line 43
  3. Distinctive:

    When delivery is needed (dirty tree, ahead commits, or user/host requested PR): continue.

    line 45
  4. Very specific:

    If there are uncommitted changes: load git-commit with execute=true (unless the user asked for manual commit commands only).

    line 49
  5. Very specific:

    If the tree is clean but the branch is ahead of the remote: push as part of git-commit's auto flow, or push explicitly if commit was …

    line 50
  6. Distinctive:

    If already committed and already pushed: continue to §3 without re-committing.

    line 51
  7. Distinctive:

    Idempotency: never create an empty commit.

    line 53
  8. Very specific:

    If an open PR/MR already exists for this head branch: update title/body when the host supplies new {pr-body-extra}.

    line 58
  9. Distinctive:

    If none exists: create one against the default / protected base branch.

    line 59
  10. Distinctive:

    Stop after presenting the PR/MR URL.

    line 63
  11. Very specific:

    solve-workflow / opsx-solve-workflow: after verify (and archive for opsx), load this skill, then feature-branch-closeout, then …

    line 71
  12. Distinctive:

    Prefer not copying commit-message or PR-body prose into hosts beyond the field map.

    line 74

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Delivery Discipline

Shared skill — single source of truth for optional post-verify code delivery: need-delivery gate → commit/push → open or update PR/MR. Hosts declare it in dependencies and abort if missing — no silent fallback.

Layering: git-commit (commit/push) → this skill (delivery orchestration) → feature-branch-closeout (menu) → merge-discipline (merge gates). Do not fold merge or release shipping into this skill.

Prerequisite skill check

On load, verify git-commit is available; if missing, abort with install hint (npx skills add FuDesign2008/open-skills -g --skill git-commit --yes). No silent degrade.

Placeholder contracts

PlaceholderMeaningWho supplies
{pr-body-extra}Host-specific PR/MR body sections (Jira link, OpenSpec path, scenario tables, etc.)Referencing host, at the call site
{commit-context}Optional commit fields (type, scope, subject, jira_id)Host or inferred from branch/diff

When this applies

After verification is green (or pendings are explicitly listed) — and after OpenSpec archive when the host requires archive before delivery — when the run may need commits and/or a PR/MR.

Not this skill: merge into a protected branch; release-tag / release→main flows; commit-only with no PR intent (call git-commit directly).

1. Need-delivery gate

Skip the rest of this skill (no commit, no PR) when any of the following holds:

SignalMeaning
Clean delivery surfaceNo uncommitted changes and no commits ahead of the intended PR base (or no feature branch work to publish)
User declinedUser said this run should not deliver / no PR / analysis-only
Host marked non-deliveryHost path is analysis-only or equivalent with no code (or artifact) changes to publish

When skipping: state the reason in one line and return to the host (typically feature-branch-closeout or retrospective). Do not open an empty PR.

When delivery is needed (dirty tree, ahead commits, or user/host requested PR): continue.

2. Commit / push

  1. If there are uncommitted changes: load git-commit with execute=true (unless the user asked for manual commit commands only). Pass {commit-context} when the host has Jira IDs or a fixed message format.
  2. If the tree is clean but the branch is ahead of the remote: push as part of git-commit's auto flow, or push explicitly if commit was skipped.
  3. If already committed and already pushed: continue to §3 without re-committing.

Idempotency: never create an empty commit; never re-commit the same tip “for ceremony.”

3. Open or update PR/MR

  1. Detect the remote host (gh / glab / equivalent — agent picks native CLI).
  2. If an open PR/MR already exists for this head branch: update title/body when the host supplies new {pr-body-extra}; ensure the branch is pushed.
  3. If none exists: create one against the default / protected base branch.
  4. Minimum body (always): summary of intent, changed-file overview, verification status (Executed / Pending per completion-evidence-discipline honesty when the host has verification notes).
  5. Append {pr-body-extra} exactly as the host provided (do not drop Jira/OpenSpec fields).

Stop after presenting the PR/MR URL. Do not merge.

4. Return to host

Hand back: branch name, tip SHA, PR/MR URL (or “skipped — <reason>”). Hosts then load feature-branch-closeout for merge / keep / continue (and PR-only if delivery was skipped earlier and the user later chooses open PR — closeout option 1 re-enters this skill).

Host integration

  • solve-workflow / opsx-solve-workflow: after verify (and archive for opsx), load this skill, then feature-branch-closeout, then retrospective.
  • jira-fix-workflow stage 9 / opsx-jira-fix-workflow post-archive delivery: thin-reference this skill; pass Jira/OpenSpec fields via {pr-body-extra} and {commit-context}.
  • feature-branch-closeout option “Open / update PR”: load this skill (idempotent).
  • Prefer not copying commit-message or PR-body prose into hosts beyond the field map.

Forbidden

  • Merging the PR/MR from this skill
  • Embedding merge-discipline Parts A–D
  • Requiring a PR on every host run (gate in §1 is mandatory)
  • Silent no-op when the user explicitly asked to open a PR and the tree has deliverables

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.