kramme-cc-workflow/skills/kramme:pr:copy-review/SKILL.md
Review PR and local changes for unnecessary, redundant, or duplicative UI text — labels, descriptions, placeholders, tooltips, and instructions that the UI already communicates through its structure. Supports inline report output with --inline.
npx skillsauth add abildtoft/kramme-cc-workflow kramme:pr:copy-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
4 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Review branch changes and local work for unnecessary UI text using the shared rubric in references/copy-review-rubric.md.
Arguments: "$ARGUMENTS"
Shared rubric: Read references/copy-review-rubric.md before filtering files or launching reviewers. It defines UI-relevant file rules, redundancy categories, confidence/severity rules, finding format, and exclusions.
--base <branch> flag provided, store as BASE_BRANCH_OVERRIDE--threshold N flag provided, store as custom_threshold (0-100). Only findings with confidence >= N will be reported. If not provided, set custom_threshold=75.--inline flag provided, set INLINE_MODE=truereferences/copy-review-rubric.md.AGENTS.md, CLAUDE.md, .github/copilot-instructions.md, markdown instruction files in repo-root .claude/, or equivalents).Use the shared plugin script to resolve the base branch and build the unified change scope (committed PR diff + staged + unstaged + untracked). It uses the same 3-tier strategy: explicit --base, PR target branch, then origin/HEAD/origin/main/origin/master. It runs in strict mode, so fetch failures stop the workflow with the script's stderr message.
COLLECT_ARGS=(--strict --format json)
[ -n "${BASE_BRANCH_OVERRIDE:-}" ] && COLLECT_ARGS+=(--base "$BASE_BRANCH_OVERRIDE")
RESOLVED=$("${CLAUDE_PLUGIN_ROOT}/scripts/collect-review-diff.sh" "${COLLECT_ARGS[@]}") || {
echo "Base/diff collection failed; see the message above and stop." >&2
exit 1
}
REVIEW_DIFF_FIELDS=$(mktemp "${TMPDIR:-/tmp}/review-diff.XXXXXX") || {
echo "Could not create temporary review-diff file; stop." >&2
exit 1
}
"${CLAUDE_PLUGIN_ROOT}/scripts/collect-review-diff.sh" --decode-json \
<<< "$RESOLVED" > "$REVIEW_DIFF_FIELDS" || {
rm -f "$REVIEW_DIFF_FIELDS"
echo "Base/diff decoding failed; see the message above and stop." >&2
exit 1
}
if ! {
IFS= read -r -d '' BASE_REF \
&& IFS= read -r -d '' BASE_BRANCH \
&& IFS= read -r -d '' MERGE_BASE \
&& IFS= read -r -d '' CHANGED_FILES
} < "$REVIEW_DIFF_FIELDS"; then
rm -f "$REVIEW_DIFF_FIELDS"
echo "Decoded review-diff fields were incomplete; stop." >&2
exit 1
fi
rm -f "$REVIEW_DIFF_FIELDS"
The shared JSON decoder sets BASE_REF, BASE_BRANCH, MERGE_BASE, and newline-delimited CHANGED_FILES. Use CHANGED_FILES for the file filtering below.
Filter changed paths using the UI-relevant file rules in references/copy-review-rubric.md.
After identifying the changed UI files, discover any additional nested instruction files that apply to those files (for example AGENTS.md, CLAUDE.md, .github/copilot-instructions.md, markdown instruction files in a nearby .claude/ directory, or tool-specific equivalents) and merge those constraints into the conventions from Step 2 before launching the reviewer agent.
If no UI-relevant files found, reply inline with the following message (regardless of INLINE_MODE) and stop. Do not create or update COPY_REVIEW_OVERVIEW.md.
No UI-relevant files detected in this PR or local working tree.
Changed files: {comma-separated list of file extensions or paths from the unified change scope}
No UI copy to review.
If COPY_REVIEW_OVERVIEW.md exists in the project root:
Launch kramme:copy-reviewer using the platform's agent-invocation primitive with:
references/copy-review-rubric.mdBASE_BRANCH, BASE_REF, and MERGE_BASE from Step 3git diff "$MERGE_BASE"...HEADgit diff --cachedgit diffgit ls-files --others --exclude-standard (agent should treat these as new files and review full file content)After collecting findings from the copy reviewer:
BASE_BRANCHIf no separate agent runtime is available, perform the same copy review and relevance validation directly in the main thread. If an invoked copy reviewer or relevance validator is unavailable, times out, or returns output that cannot be parsed as findings, surface the failure to the user with the agent name and what was attempted, then stop without writing COPY_REVIEW_OVERVIEW.md. Do not fabricate findings or silently continue with an empty result.
If COPY_REVIEW_OVERVIEW.md was found in Step 4:
After validation and filtering, organize findings into severity tiers:
If INLINE_MODE=true:
assets/copy-review-report-format.mdCOPY_REVIEW_OVERVIEW.mdOtherwise:
COPY_REVIEW_OVERVIEW.md in the project root using the report format from assets/copy-review-report-format.md/kramme:workflow-artifacts:cleanupIf Critical or Important findings were found:
INLINE_MODE=false, suggest running /kramme:pr:resolve-review; auto/local discovery will find COPY_REVIEW_OVERVIEW.md and ask which overview to resolve if multiple local review files exist.INLINE_MODE=true, suggest re-running with the inline report content passed as the argument: /kramme:pr:resolve-review <paste report> — or invoke it in the same session so chat context contains the report.Organize findings summary in the terminal output:
# Copy Review Complete
## Relevance Filter
- X findings validated as in-scope
- X findings filtered (pre-existing or out-of-scope)
- X findings filtered (previously addressed)
## Results
- Critical: X
- Important: X
- Suggestions: X
Report output: {inline reply | COPY_REVIEW_OVERVIEW.md}
To resolve findings: `/kramme:pr:resolve-review`
/kramme:pr:copy-review
/kramme:pr:copy-review --base develop
/kramme:pr:copy-review --threshold 85
/kramme:pr:copy-review --inline
tools
Requires Linear MCP. Implements one Linear issue end to end, selects applicable code-review, convention, and PR-refactor gates, runs them to bounded convergence, verifies, and optionally opens the PR and iterates on CI and review feedback until green. Use when the user wants a single Linear issue taken from implementation through a clean Pull Request. Not for implementation-only work, SIW-tracked issues, stacked PRs, existing PR updates, or post-merge rollout.
development
Reviews PR and local changes for convention drift and overcaution against documented rules and mined peer-file practice. Use for new patterns, dependencies, abstractions, or defensive complexity that departs from established practice; every finding cites evidence. Supports --inline. Not for general code quality (use kramme:pr:code-review) or spec review (use kramme:siw:spec-audit --team).
testing
Charts huge or foggy initiatives into a local `.context` decision map and resolves one typed frontier ticket per session until the work is ready for SIW or another execution workflow. Use when the route to a destination cannot fit in one agent session or parallel workspaces need coordinated planning state. Not for clear specs, ordinary issue decomposition, implementation, or Linear-native tracking.
development
Investigates a question against primary sources and saves one cited Markdown artifact. Use for reading legwork: official docs/API facts, source-code or spec checks, standards, and first-party service behavior before planning or implementation. Not for making product or architecture decisions, implementing code, broad web search, secondary blog summaries, or uncited answers.