← ClaudeAtlas

doctorlisted

Use when keel blocked or warned about something unexpectedly, or to understand the current repo's lifecycle state - explains what keel sees, what each rule name means, and why it decided what it did.
submtd/shipyard · ★ 1 · Code & Development · score 74
Install: claude install-skill submtd/shipyard
# keel doctor ## 1. Gather the state git rev-parse --show-toplevel git symbolic-ref --short HEAD git remote -v gh repo view --json viewerPermission -q .viewerPermission cat .keel.json gh auth status ## 2. Report what keel sees - config: topology, protected branches (production/integration), review policy, merge strategies, whether a changelog is required - current branch, and which kind keel classifies it as (production, integration, feature, release, hotfix, or other) - your permission level, and whether `gh` is authenticated ## 3. Explain the block If keel denied something, the message carried a rule name in brackets. If more than one rule fired, the first bracketed name is the primary reason; anything after `Also: [rule] ...` fired too but wasn't the blocking cause - worth fixing, but not why the command stopped. What each name means: - **`protected-write`** - the commit or push targets a protected branch (matched by name - `production` or `integration` from `.keel.json`). For a push, keel reads the *destination* refspec, so `git push origin HEAD:main` counts as targeting `main` even from a feature branch. Use `keel:start-work` instead of committing or pushing directly. **Known limitation:** this check matches on branch *name*, not on which repo or remote owns it. keel cannot tell your fork's own `main` apart from the canonical repo's `main` - both are just a branch named `main`. So pushing to `main` on a fork you fully c