Best for
- Pull requests with multiple new modules that wire together
- Releases combining work from multiple contributors or branches
- Milestones where quality gates must pass before proceeding
terrylica/cc-skills/plugins/quality-tools/skills/pre-ship-review/SKILL.md
Run a structured quality review before shipping code at any checkpoint such as PRs, releases, or milestones. Use whenever the user says.
Decision brief
Structured quality review before shipping code at any checkpoint: PRs, releases, milestones. Catches the failures that occur at integration boundaries -- where contracts, examples, constants, and tests must all agree.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/terrylica/cc-skills --skill "plugins/quality-tools/skills/pre-ship-review"Inspect the Agent Skill "pre-ship-review" from https://github.com/terrylica/cc-skills/blob/05f53c5b24a445c1895e9b0590212e66cd70f39e/plugins/quality-tools/skills/pre-ship-review/SKILL.md at commit 05f53c5b24a445c1895e9b0590212e66cd70f39e. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Run static analysis tools on changed files. Skip any tool that is not installed (graceful degradation).
Run static analysis tools on changed files. Skip any tool that is not installed (graceful degradation).
Invoke existing cc-skills that complement external tools.
These checks require understanding intent, domain correctness, and architectural fitness. Go through each one manually.
Use before any significant code shipment:
Permission review
The documentation asks the agent to run terminal commands or scripts.
git diff --name-only $(git merge-base HEAD main)...HEADEvidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 98/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 61 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Structured quality review before shipping code at any checkpoint: PRs, releases, milestones. Catches the failures that occur at integration boundaries -- where contracts, examples, constants, and tests must all agree.
Core thesis: AI-generated code excels at isolated components but fails systematically at boundaries between components. This skill systematically checks those boundaries.
Self-Evolving Skill: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.
Use before any significant code shipment:
NOT needed for: single-file cosmetic changes, documentation-only updates, dependency bumps.
MANDATORY: Select and load the appropriate template before starting review.
1. Detect changed files and scope (git diff --name-only against base branch)
2. Run Phase 1 - External tool checks (Pyright, Vulture, import-linter, deptry, Semgrep, Griffe)
3. Run Phase 2 - cc-skills orchestration (code-hardcode-audit, dead-code-detector, pr-gfm-validator)
4. Run Phase 2 conditional checks based on file types changed
5. Phase 3 - Verify every function parameter has at least one caller passing it by name
6. Phase 3 - Verify every config/example parameter maps to an actual function kwarg
7. Phase 3 - Check for architecture boundary violations (hardcoded feature lists, cross-layer coupling)
8. Phase 3 - Verify domain constants and formulas are correct (cross-reference cited sources)
9. Phase 3 - Audit test quality - do tests test what they claim (not side effects)?
10. Phase 3 - Check for implicit dependencies between new components
11. Phase 3 - Look for O(n^2) patterns where O(n) suffices
12. Phase 3 - Verify error messages give actionable guidance
13. Phase 3 - Confirm examples reflect actual behavior, not aspirational behavior
14. Compile findings report with severity and suggested fixes
1. Verify the fix addresses root cause, not symptom
2. Verify the fix does not mask information flow
3. Check that new test reproduces the original bug (fails without fix)
4. Run Phase 1 - External tool checks on changed files
5. Run Phase 2 - cc-skills checks on changed files
6. Verify constants consistency if any values changed
7. Compile findings report
1. Verify all callers updated to match new signatures
2. Run Phase 1 - External tool checks (especially Griffe for API drift)
3. Run Phase 2 - cc-skills checks (especially dead-code-detector)
4. Verify examples/docs updated to match new parameter names
5. Verify no dead imports from removed features
6. Check for introduced cross-boundary coupling
7. Compile findings report
Run static analysis tools on changed files. Skip any tool that is not installed (graceful degradation).
Detect scope:
git diff --name-only $(git merge-base HEAD main)...HEAD
Run in parallel:
pyright --outputjson <changed_py_files> # Type contracts
vulture <changed_py_files> --min-confidence 80 # Dead code / YAGNI
lint-imports # Architecture boundaries
deptry . # Dependency hygiene
semgrep --config .semgrep/ <changed_files> # Custom pattern rules
griffe check --against main <package> # API signature drift
What each tool catches:
| Tool | Anti-Pattern | Install |
|---|---|---|
| Pyright (strict) | Interface contracts, return types, cross-file type errors | pip install pyright |
| Vulture | Dead code, unused constants/imports (YAGNI) | pip install vulture |
| import-linter | Architecture boundary violations, forbidden imports | pip install import-linter |
| deptry | Unused/missing/transitive dependencies | pip install deptry |
| Semgrep | Non-determinism, silent param absorption, banned patterns | brew install semgrep |
| Griffe | Breaking API changes, signature drift vs base branch | pip install griffe |
Graceful degradation: If a tool is not installed, log a warning and skip it. Never fail the entire review because one optional tool is missing.
For detailed tool procedures, see Automated Checks Reference. For installation instructions, see Tool Install Guide.
Invoke existing cc-skills that complement external tools.
Always run:
Run conditionally based on changed file types:
| Condition | Skill to invoke |
|---|---|
| Python files changed | impl-standards (error handling, constants, logging) |
| 500+ lines changed | code-clone-assistant (duplicate code detection) |
| Plugin/hook files changed | plugin-validator (structure, silent failures) |
| Markdown/docs changed | link-validation (broken links, path policy) |
These checks require understanding intent, domain correctness, and architectural fitness. Go through each one manually.
Check 1: Architecture Boundaries
Check 2: Domain Correctness
Check 3: Test Quality
Check 4: Dependency Transparency
Check 5: Performance
Check 6: Error Message Quality
Check 7: Example Accuracy
**kwargs or **_?For detailed check procedures, see Judgment Checks Reference.
Phase 1 (Tools):
- [ ] Pyright strict passes on changed files (no type errors)
- [ ] Vulture finds no unused code in new files (or allowlisted)
- [ ] import-linter passes (no architecture boundary violations)
- [ ] deptry passes (no unused/missing dependencies)
- [ ] Semgrep custom rules pass (no non-determinism, no silent param absorption)
- [ ] Griffe shows no unintended API breaking changes vs base branch
Phase 2 (cc-skills):
- [ ] code-hardcode-audit passes (no magic numbers or secrets)
- [ ] dead-code-detector passes (no unused code)
- [ ] PR description links valid (pr-gfm-validator)
Phase 3 (Judgment):
- [ ] No new cross-boundary coupling introduced
- [ ] Domain constants and formulas are mathematically correct
- [ ] Tests actually test what they claim (not side effects)
- [ ] Implicit dependencies between components are documented
- [ ] No O(n^2) where O(n) suffices
- [ ] Error messages give actionable guidance
- [ ] Examples reflect actual behavior, not aspirational behavior
This skill is built on a taxonomy of 9 integration boundary anti-patterns. For the full catalog with examples, detection heuristics, and fix approaches, see Anti-Pattern Catalog.
| # | Anti-Pattern | Detection Method |
|---|---|---|
| 1 | Interface contract violation | Pyright + Griffe + manual trace |
| 2 | Misleading examples | Semgrep + manual config-to-code comparison |
| 3 | Architecture boundary violation | import-linter + manual review |
| 4 | Incorrect domain constants | Semgrep + domain expertise |
| 5 | Testing gaps | mutmut + manual test audit |
| 6 | Non-determinism | Semgrep custom rules |
| 7 | YAGNI | Vulture + dead-code-detector |
| 8 | Hidden dependencies | Manual dependency trace |
| 9 | Performance anti-patterns | Manual complexity analysis |
After modifying THIS skill:
references/ links resolve correctlyreferences/evolution-log.md| Issue | Cause | Solution |
|---|---|---|
| Tool not found | External tool not installed | Install per tool-install-guide.md or skip (graceful degradation) |
| Too many Vulture false positives | Framework entry points look unused | Create allowlist: vulture --make-whitelist > whitelist.py |
| Semgrep too slow | Large codebase scan | Scope to changed files only: semgrep --include=<changed> |
| import-linter has no contracts | Project not configured | Add [importlinter] section to pyproject.toml |
| Griffe reports false breaking changes | Intentional API change | Use griffe check --against main --allow-breaking |
| Phase 3 finds nothing but reviewer finds issues | New anti-pattern category | Add to catalog and evolution-log.md |
| cc-skill not triggering | Skill not installed in marketplace | Verify with /plugin list |
For detailed information, see:
After this skill completes, reflect before closing the task:
Do NOT defer. The next invocation inherits whatever you leave behind.
Frequently asked questions
Structured quality review before shipping code at any checkpoint: PRs, releases, milestones. Catches the failures that occur at integration boundaries -- where contracts, examples, constants, and tests must all agree.
The source record exposes this install command: npx skills add https://github.com/terrylica/cc-skills --skill "plugins/quality-tools/skills/pre-ship-review". Inspect the command and pinned source before running it.
Static rules flagged exec-script in the source; the page lists the matching lines and excerpts.
Alternatives
oaustegard/claude-skills
Generate hierarchical _FEATURES.md files that describe what a codebase DOES from a user/consumer perspective, anchored to source symbols via tree-sitting. Supports large complex codebases through feature-driven decomposition into sub-feature files. Uses a multi-pass synthesis: orientation → detail → overview rewrite. Use when someone says "what does this do", "document features", "feature inventory", "_FEATURES.md", or needs to understand a codebase's purpose before modifying it. Complements tre
dancingteeth/unified-code-review
Risk-first code review for PRs and branch audits: blast-radius triage, agent-authored discipline (tests first, intent evidence), call-graph pincer for integration defects between modules, then structural code-judo bar. Use when reviewing PRs, auditing agent-written diffs, catching rubber-stamp green CI, or wiring bugs single-file review misses. Prefer over structure-only thermo-nuclear review alone. Do not use for unrelated coding tasks or as an always-on rule.
PaulRBerg/agent-skills
Create/scaffold/init a project-local agent skill under `.agents/skills` in an ordinary repository; defer to repository instructions that define a source catalog and lifecycle.
NintendaDev/unikit-ai
Generate and maintain the project's TECHNICAL documentation from its codebase — scans the project structure, tech stack, and module boundaries, then writes a lean README landing page plus detailed topic pages (architecture, modules, setup, build, APIs), only the docs that are relevant. Use whenever the user wants to create, update, or validate documentation of the CODE or the project itself, e.g. "generate documentation", "create docs", "write the README", "update the project docs", "document th