Skip to content

Add /landed skill for post-merge lifecycle#25

Merged
stranma merged 5 commits intomasterfrom
feat/add-landed-skill
Mar 10, 2026
Merged

Add /landed skill for post-merge lifecycle#25
stranma merged 5 commits intomasterfrom
feat/add-landed-skill

Conversation

@stranma
Copy link
Owner

@stranma stranma commented Mar 10, 2026

Summary

  • Add /landed skill that runs after a PR merges: verifies merge CI, optionally checks deployments (via .claude/deploy.json), cleans up local and remote feature branches, and identifies the next phase for P-scope work
  • Remove /catchup command whose context-restoration role was redundant with /sync
  • Update development workflow documentation from sync-design-done to sync-design-done-landed, closing the post-merge gap

Test plan

  • Verify tests pass: python -m pytest tests/test_skills.py tests/test_commands.py -v -- 94 passed
  • Confirm /landed SKILL.md exists at .claude/skills/landed/SKILL.md with correct frontmatter (name, description, allowed-tools, disable-model-invocation)
  • Confirm /catchup command file is removed and its tests are removed from test_commands.py
  • Verify .claude/deploy.json is gitignored and .claude/deploy.json.example is committed
  • Review CLAUDE.md, DEVELOPMENT_PROCESS.md, and CHANGELOG.md for consistent documentation of the new workflow
  • Full test suite: 412 passed
  • CI: all 7 checks pass
  • CodeRabbit review: 1 actionable comment fixed (phase detection logic in Step 5)

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added /landed skill for post-merge lifecycle, including merge CI verification, optional deployment checks, automatic branch cleanup, and next-phase identification.
  • Chores

    • Removed /catchup command due to feature overlap with /sync.
    • Added deployment configuration template.

Close the post-merge gap in the sync-design-done workflow by adding a
/landed skill that verifies merge CI, optionally checks deployments,
cleans up branches, and identifies next phases. Remove /catchup which
overlapped with /sync.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link

coderabbitai bot commented Mar 10, 2026

Warning

Rate limit exceeded

@stranma has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 16 minutes and 20 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 04423d92-196a-411c-9c29-1c9658f888db

📥 Commits

Reviewing files that changed from the base of the PR and between bdf84fe and bf5bd65.

📒 Files selected for processing (2)
  • .claude/skills/landed/SKILL.md
  • docs/DECISIONS.md
📝 Walkthrough

Walkthrough

Replaces the /catchup command with a new /landed post-merge lifecycle skill, adds a deployment config example and gitignore entry, updates development docs and changelog to include /landed, and adjusts tests to remove catchup checks and validate the new landed skill.

Changes

Cohort / File(s) Summary
Command Removal
​.claude/commands/catchup.md, tests/test_commands.py
Deleted the /catchup command and removed related test cases validating its documentation content.
Landed Skill Addition
​.claude/skills/landed/SKILL.md, tests/test_skills.py
Added /landed SKILL.md with step-by-step post-merge workflow (detect merged PR, verify CI, optional deployment checks, branch cleanup, next-phase determination) and extended tests for the new skill.
Deployment Configuration
​.claude/deploy.json.example, .gitignore
Added example .claude/deploy.json.example (environments, workflows, health_check) and ignored .claude/deploy.json for local overrides.
Documentation Updates
CLAUDE.md, docs/CHANGELOG.md, docs/DEVELOPMENT_PROCESS.md
Updated development process to include /landed, documented removal of /catchup, added post-merge guidance and changelog entries reflecting the new skill and deployment template.

Sequence Diagram(s)

sequenceDiagram
  participant User as User
  participant Landed as /landed Skill
  participant GitHub as GitHub API
  participant CI as CI System
  participant Deploy as Deployment/HealthCheck
  participant Git as Git Remote

  User->>Landed: invoke /landed for merged PR
  Landed->>GitHub: fetch PR metadata & merge status
  GitHub-->>Landed: PR merged info
  Landed->>CI: query merge CI runs/status
  CI-->>Landed: CI pass/fail
  alt deployment configured
    Landed->>Deploy: check environment health via `.claude/deploy.json`
    Deploy-->>Landed: deployment healthy/unhealthy
  end
  Landed->>Git: delete remote branch (if requested)
  Git-->>Landed: deletion result
  Landed-->>User: summary (PR, CI, deployment, cleanup, next steps)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add /landed skill for post-merge lifecycle' accurately summarizes the main change: introducing a new post-merge workflow skill, which aligns with the primary objective of the PR.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/add-landed-skill

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

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

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.claude/skills/landed/SKILL.md:
- Around line 80-84: Step 5 in .claude/skills/landed/SKILL.md currently looks
for phase-level checkbox markers but the IMPLEMENTATION_PLAN.md tracks phase
completion in the "Quick Status Summary" table instead; update the
phase-detection logic in Step 5 to parse the "Quick Status Summary" table in
docs/IMPLEMENTATION_PLAN.md (rows under the table header) and treat a phase as
complete only when its status cell equals "Complete", then pick the next phase
whose status is not "Complete" and summarize its description and dependencies.
Ensure the code that implements Step 5 references the "Quick Status Summary"
table header string and the phase names from that table rather than searching
for `- [ ]`/`- [x]` checklist items.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 5970636d-1170-44bb-a53c-d8ec0b6ab291

📥 Commits

Reviewing files that changed from the base of the PR and between 0a9f904 and fdea9da.

📒 Files selected for processing (9)
  • .claude/commands/catchup.md
  • .claude/deploy.json.example
  • .claude/skills/landed/SKILL.md
  • .gitignore
  • CLAUDE.md
  • docs/CHANGELOG.md
  • docs/DEVELOPMENT_PROCESS.md
  • tests/test_commands.py
  • tests/test_skills.py
💤 Files with no reviewable changes (2)
  • .claude/commands/catchup.md
  • tests/test_commands.py

stranma and others added 2 commits March 10, 2026 01:29
The IMPLEMENTATION_PLAN.md tracks phase completion via a "Quick Status
Summary" table, not phase-level checkboxes. Update Step 5 to match.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Consolidate two ### Added sections into one and place Removed/Changed
entries in their correct existing sections.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.claude/skills/landed/SKILL.md:
- Around line 21-23: Update the fenced code blocks in
.claude/skills/landed/SKILL.md to satisfy markdownlint by ensuring there is a
blank line before and after each triple-backtick fence and by declaring the
language for each fence (for example use ```bash for the gh commands and ```text
for output blocks). Specifically edit the blocks containing the command "gh pr
list --state merged --head <branch> --json number,title,mergeCommit -L 1", the
block with "gh run list --branch master -L 5 --json
status,conclusion,databaseId,name,headSha", and the output block that begins
with "# Landed" to add a blank line above and below the fences and add
appropriate language annotations (bash/text) so the linter warnings are
resolved.
- Around line 54-56: The deployment watcher currently queries the latest
workflow run globally using the command string 'gh run list --workflow
<workflow> -L 1 --json status,conclusion,databaseId', which can pick up stale
runs; update the command to filter by the merge commit SHA (use the --commit
<merge_sha> flag) so it only considers runs for the current merge, and ensure
any documentation text around 'health_check' and the '/landed' verification step
mentions that the merge SHA is passed to the gh run list call.
- Around line 33-45: The doc currently treats CI as a single-run check (uses `gh
run list --branch master -L 5 --json ...`) which can miss other workflow runs
for the same merge commit; change the guidance to increase the result window
(e.g., `-L 20`), filter the list by `headSha` to select all runs for the merge
commit SHA, then evaluate all matched runs: if any are `in_progress` watch them
(`gh run watch <id>`), if any have `conclusion=failure` show failed logs (`gh
run view <id> --log-failed`) and ask whether failures are recurring or
PR-specific (suggest adding `/done` validation or pre-merge CI for recurring
issues), and only proceed when all matched runs are `completed` with
`conclusion=success`.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 3f6766dc-ce92-4211-b13c-af9429664794

📥 Commits

Reviewing files that changed from the base of the PR and between fdea9da and bdf84fe.

📒 Files selected for processing (2)
  • .claude/skills/landed/SKILL.md
  • docs/CHANGELOG.md

stranma and others added 2 commits March 10, 2026 01:41
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ys, markdown lint

- CI verification now fetches -L 20 runs and filters by headSha to
  check all workflow runs for the merge commit, not just one
- Deployment check uses --commit <sha> to avoid verifying stale runs
- Fenced code blocks have language annotations and blank line spacing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@stranma stranma merged commit 55a8670 into master Mar 10, 2026
7 checks passed
@stranma stranma deleted the feat/add-landed-skill branch March 10, 2026 00:48
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