docs(me): default ship/create-pr to squash auto-merge - #658
Conversation
…o ship Remove the parallel fan-out orchestrator and promote the shipping-and-launch pre-launch checklist skill to the `ship` name. The two skills overlapped in purpose and the checklist-driven skill is the one worth keeping.
create-pr: always squash --auto unless user explicitly requests another strategy. ship: exempt push/PR/merge from approval prompts inside the ship flow; delegate to create-pr.
Resolves conflict in plugins/me/skills/ship/SKILL.md by taking the rewritten three-phase ship skill from main and re-applying the squash auto-merge exception for the PR flow inside ship. Also fixes pre-existing MD029 ordered-list violations exposed by lint after merge.
📝 WalkthroughWalkthroughThis PR removes the autoresearch plugin completely, bumps plugin versions to 17.11.1, updates the create-pr merge policy to default to auto-squash, and redesigns the ship workflow from fan-out orchestration to a three-phase deploy/verify/rollback pattern with explicit approval gates. ChangesPlugin lifecycle and workflow updates
Sequence Diagram(s)sequenceDiagram
participant User
participant CreatePR as create-pr skill
participant Monitor as Monitor tool
participant GH as GitHub API
User->>CreatePR: Invoke create-pr
CreatePR->>GH: gh pr merge --auto --squash (default)
CreatePR->>Monitor: Invoke wait-for-merge.sh
Monitor->>GH: Poll PR status
alt Terminal: MERGED
Monitor-->>CreatePR: MERGED event
CreatePR->>CreatePR: Continue to PR body
else Terminal: CI_FAILED
Monitor-->>CreatePR: CI_FAILED event
CreatePR->>User: Request log review
CreatePR->>CreatePR: Invoke me:fix-pr
CreatePR->>Monitor: Re-invoke wait-for-merge.sh
else Terminal: CLOSED
Monitor-->>CreatePR: CLOSED event
CreatePR->>CreatePR: Stop
end
sequenceDiagram
participant Dev
participant Ship as ship skill
participant DeployConvention as Project Deploy Convention
participant PostDeploy as Post-deploy verifier
Dev->>Ship: Invoke /ship
Ship->>Ship: Classify changes (deployable vs. non-deployable)
alt Non-deployable
Ship-->>Dev: Skip deploy/verify phases
else Deployable
Ship->>DeployConvention: Read deploy commands, health checks, rollback
Ship->>Ship: Phase 1: pre-deploy checks
Ship->>Ship: Phase 2: deploy (await approval)
Ship->>PostDeploy: Phase 3: health checks, smoke flows, logs
alt Verification OK
PostDeploy-->>Dev: Ship complete
else Verification FAIL
PostDeploy->>PostDeploy: Draft rollback command
PostDeploy-->>Dev: Evidence collected, awaiting approval
end
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
⚔️ Resolve merge conflicts
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@plugins/me/skills/ship/SKILL.md`:
- Line 150: The SKILL.md file contains broken links to non-existent checklist
files; update SKILL.md to either point to the correct existing checklist
locations or add the missing checklist files under a new references directory.
Specifically fix the three referenced paths
"references/performance-checklist.md", "references/accessibility-checklist.md",
and "references/security-checklist.md" by (a) replacing each link with the
correct repo path if those checklists live elsewhere, or (b) creating the
corresponding files in plugins/me/skills/ship/references/ with the expected
checklist content (or stubs) and commit them so the links resolve; ensure link
text remains descriptive and test the links render correctly in SKILL.md.
- Around line 23-26: Update the user-facing docs and skill invocation text to
state that the ship flow runs push, PR creation and merge automatically (no
per-step prompts), that it delegates PR creation/merge to the me:create-pr skill
and performs a squash auto-merge using gh pr merge --auto --squash, and include
a short note about behavior when GitHub/repo protections block merging (e.g.,
the flow will fail or report the block rather than pausing for manual
confirmation); make these edits in SKILL.md and the ship invocation response so
users see the auto-squash/auto-merge behavior up front.
In `@tests/codex_plugin_json.bats`:
- Line 10: The test's expected_plugins array is missing the "datadog" plugin;
update the expected_plugins variable instances in the test cases to include
"datadog" (so the array becomes ("jira" "me" "ralph" "datadog")) to match the
marketplace entry (source ./plugins/datadog and skills ./skills/) and apply this
same change to all occurrences of expected_plugins in the test file.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: cdf09beb-e519-47a7-bed0-c7114dbce4d0
📒 Files selected for processing (24)
.agents/plugins/marketplace.json.claude-plugin/marketplace.jsonREADME.mdplugins/autoresearch/.claude-plugin/plugin.jsonplugins/autoresearch/.codex-plugin/plugin.jsonplugins/autoresearch/commands/autoresearch.mdplugins/autoresearch/hooks/autoresearch-context.shplugins/autoresearch/hooks/hooks.jsonplugins/autoresearch/skills/autoresearch/SKILL.mdplugins/datadog/.claude-plugin/plugin.jsonplugins/datadog/.codex-plugin/plugin.jsonplugins/jira/.claude-plugin/plugin.jsonplugins/jira/.codex-plugin/plugin.jsonplugins/me/.claude-plugin/plugin.jsonplugins/me/.codex-plugin/plugin.jsonplugins/me/README.mdplugins/me/skills/create-pr/SKILL.mdplugins/me/skills/setup/settings.jsonplugins/me/skills/ship/SKILL.mdplugins/me/skills/shipping-and-launch/SKILL.mdplugins/ralph/.claude-plugin/plugin.jsonplugins/ralph/.codex-plugin/plugin.jsontests/codex_marketplace_json.batstests/codex_plugin_json.bats
💤 Files with no reviewable changes (10)
- plugins/autoresearch/hooks/hooks.json
- plugins/autoresearch/hooks/autoresearch-context.sh
- plugins/autoresearch/skills/autoresearch/SKILL.md
- plugins/autoresearch/.codex-plugin/plugin.json
- README.md
- .agents/plugins/marketplace.json
- plugins/autoresearch/.claude-plugin/plugin.json
- plugins/me/skills/shipping-and-launch/SKILL.md
- plugins/autoresearch/commands/autoresearch.md
- plugins/me/skills/setup/settings.json
| **Exception — PR flow inside ship:** push, PR creation, and merge are part of the ship flow itself, | ||
| so run them automatically without prompting. Always squash-merge via `gh pr merge --auto --squash` | ||
| (delegate to `me:create-pr`, which defaults to squash auto-merge). The user invoked ship to drive | ||
| the release end-to-end; pausing on each git step defeats the purpose. |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check if ship behavior is documented in user-facing README or quickstart
rg -n -C3 --type=md 'ship.*automatic|ship.*without.*prompt|ship.*auto.*merge'Repository: baleen37/bstack
Length of output: 1874
Ship auto-squash merge runs without per-step user prompting—call it out in user-facing docs.
The ship exception grants the ship flow automatic push/PR creation/merge authority (delegated to me:create-pr) and always uses gh pr merge --auto --squash, bypassing any “ask before changing shared state” pause between those git steps. Make sure /ship user-facing documentation (or the skill invocation response) clearly states that invoking ship will auto-squash-merge the PR without pausing for manual confirmation/diff review, and clarifies what happens if merge is blocked by repo/GitHub protections.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@plugins/me/skills/ship/SKILL.md` around lines 23 - 26, Update the user-facing
docs and skill invocation text to state that the ship flow runs push, PR
creation and merge automatically (no per-step prompts), that it delegates PR
creation/merge to the me:create-pr skill and performs a squash auto-merge using
gh pr merge --auto --squash, and include a short note about behavior when
GitHub/repo protections block merging (e.g., the flow will fail or report the
block rather than pausing for manual confirmation); make these edits in SKILL.md
and the ship invocation response so users see the auto-squash/auto-merge
behavior up front.
|
|
||
| - **Code quality** — tests pass, lint/type/build clean, code reviewed (use `me:review`, `me:test`) | ||
| - **Security** — no secrets, audit clean, auth/CORS/rate limits in place (use `me:security-auditor`) | ||
| - **Performance / a11y** — see `references/performance-checklist.md`, `references/accessibility-checklist.md` |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check if the referenced checklist files exist
fd --type f --full-path 'plugins/me/skills/ship/references/(security-checklist|performance-checklist|accessibility-checklist)\.md'Repository: baleen37/bstack
Length of output: 41
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# 1) List the references/ directory
echo "== references directory (if exists) =="
ls -la plugins/me/skills/ship/references 2>/dev/null || echo "MISSING: plugins/me/skills/ship/references"
# 2) Check exact filenames
echo
echo "== exact file checks =="
for f in security-checklist.md performance-checklist.md accessibility-checklist.md; do
if [ -f "plugins/me/skills/ship/references/$f" ]; then
echo "FOUND: plugins/me/skills/ship/references/$f"
else
echo "MISSING: plugins/me/skills/ship/references/$f"
fi
done
# 3) Fallback: show any *checklist*.md in that directory
echo
echo "== *checklist*.md present =="
fd -t f "checklist" plugins/me/skills/ship/references -g "*.md" || echo "none"Repository: baleen37/bstack
Length of output: 594
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== Find exact checklist filenames anywhere in repo =="
for f in security-checklist.md performance-checklist.md accessibility-checklist.md; do
echo "-- $f --"
fd -t f --hidden --follow -i "$f" . || true
echo
done
echo "== Find any *checklist*.md =="
fd -t f --hidden --follow -i "*checklist*.md" . | head -n 50Repository: baleen37/bstack
Length of output: 550
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== Exact filename existence (repo-wide) =="
for f in security-checklist.md performance-checklist.md accessibility-checklist.md; do
echo "-- $f --"
find . -type f -name "$f" 2>/dev/null | head -n 20 || true
echo
done
echo "== Inspect SKILL.md references around mentioned lines =="
# Print a window around the relevant lines (150 and 179)
sed -n '130,190p' plugins/me/skills/ship/SKILL.md | nl -ba | sed -n '1,80p'Repository: baleen37/bstack
Length of output: 316
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== Exact filename existence (repo-wide) =="
for f in security-checklist.md performance-checklist.md accessibility-checklist.md; do
echo "-- $f --"
find . -type f -name "$f" 2>/dev/null | head -n 20
echo
done
echo "== Inspect SKILL.md references around mentioned lines =="
# Show line numbers using awk
awk 'NR>=130 && NR<=190 {printf "%d:%s\n", NR, $0}' plugins/me/skills/ship/SKILL.mdRepository: baleen37/bstack
Length of output: 3519
Fix broken checklist references in plugins/me/skills/ship/SKILL.md.
references/performance-checklist.md, references/accessibility-checklist.md, and references/security-checklist.md are linked at lines 150 and 179, but none of these files exist in the repo (and plugins/me/skills/ship/references/ is missing).
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@plugins/me/skills/ship/SKILL.md` at line 150, The SKILL.md file contains
broken links to non-existent checklist files; update SKILL.md to either point to
the correct existing checklist locations or add the missing checklist files
under a new references directory. Specifically fix the three referenced paths
"references/performance-checklist.md", "references/accessibility-checklist.md",
and "references/security-checklist.md" by (a) replacing each link with the
correct repo path if those checklists live elsewhere, or (b) creating the
corresponding files in plugins/me/skills/ship/references/ with the expected
checklist content (or stubs) and commit them so the links resolve; ensure link
text remains descriptive and test the links render correctly in SKILL.md.
|
|
||
| @test "codex plugin manifests exist for skill plugins only" { | ||
| local expected_plugins=("autoresearch" "jira" "me" "ralph") | ||
| local expected_plugins=("jira" "me" "ralph") |
There was a problem hiding this comment.
Missing datadog plugin in test expectations.
The expected_plugins array includes only jira, me, and ralph, but the marketplace contains a fourth plugin datadog with source ./plugins/datadog. The provided plugins/datadog/.codex-plugin/plugin.json (line 18) shows "skills": "./skills/", indicating it's a skill plugin that should be validated by these tests.
🔧 Proposed fix to include datadog
- local expected_plugins=("jira" "me" "ralph")
+ local expected_plugins=("datadog" "jira" "me" "ralph")Apply this change to all four test cases (lines 10, 20, 28, and 40).
Also applies to: 20-20, 28-28, 40-40
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@tests/codex_plugin_json.bats` at line 10, The test's expected_plugins array
is missing the "datadog" plugin; update the expected_plugins variable instances
in the test cases to include "datadog" (so the array becomes ("jira" "me"
"ralph" "datadog")) to match the marketplace entry (source ./plugins/datadog and
skills ./skills/) and apply this same change to all occurrences of
expected_plugins in the test file.
Pull request was closed
Summary
create-pr: 항상gh pr merge --auto --squash로 기본 동작 변경. 다른 머지 전략은 사용자가 명시적으로 요청할 때만.ship: ship 흐름 내 push/PR/merge는 승인 프롬프트 없이 자동 진행 (me:create-pr에 위임). 그 외 위험 액션(배포·태깅·인프라 등)은 여전히 승인 필요.Test plan
Summary by CodeRabbit
Features Removed
Updates
Documentation