kramme-cc-workflow/skills/kramme:pr:product-review/SKILL.md
Deep product review of branch and local changes. Evaluates user-value alignment, flow completeness, missing states, copy/defaults, permission behavior, adjacent-flow regressions, and prioritization quality. Infers likely user goals and non-goals when rationale is missing. Not for UX heuristics, accessibility, or visual consistency -- use pr:ux-review for those. Supports inline report output with --inline.
npx skillsauth add abildtoft/kramme-cc-workflow kramme:pr:product-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Deep product review of branch changes and local work. Evaluates user-value alignment, flow completeness, missing states, copy/defaults, permission behavior, and adjacent-flow regressions.
Arguments: "$ARGUMENTS"
--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. Default: 70--inline flag provided, set INLINE_MODE=trueBefore launching agents:
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. All changed files in CHANGED_FILES are relevant for product review -- no file-type filtering.
After identifying the changed 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 changed files at all:
No changes detected in this branch or local working tree.
Nothing to review.
Action: Stop.
If PRODUCT_REVIEW_OVERVIEW.md exists in the project root:
Previously addressed findings have the format:
path/to/file.ts:123If the file exists but contains no parseable entries in this format (e.g., it was hand-edited, partially written, or follows an older schema), skip the previously-addressed filtering in Step 7 and continue with all findings active. Do not stop the workflow.
Launch kramme:product-reviewer via the Task tool with:
BASE_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)custom_threshold if provided in Step 1, otherwise pass 70 (e.g., "Only report findings with confidence >= {threshold}"). Do not rely on the agent's internal default.After collecting findings from the product reviewer:
BASE_BRANCHAgent failure handling. If the product 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 PRODUCT_REVIEW_OVERVIEW.md. Do not fabricate findings or silently continue with an empty result.
If PRODUCT_REVIEW_OVERVIEW.md was found in Step 4:
After validation and filtering, organize findings into severity tiers:
If INLINE_MODE=true:
assets/product-review-report-format.mdPRODUCT_REVIEW_OVERVIEW.mdOtherwise:
PRODUCT_REVIEW_OVERVIEW.md in the project root using the report format from assets/product-review-report-format.md/kramme:workflow-artifacts:cleanupEmit the terminal output below. When there are Critical or Important findings, the embedded resolve commands serve as the action plan; when there are none, omit the "To resolve findings" block.
# Product 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
- Open Questions: X
Report output: {inline reply | PRODUCT_REVIEW_OVERVIEW.md}
To resolve findings:
- If file output was used: `/kramme:pr:resolve-review`
- If inline output was used: `/kramme:pr:resolve-review <paste inline report>`
/kramme:pr:product-review
/kramme:pr:product-review --base develop
/kramme:pr:product-review --threshold 85
/kramme:pr:product-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.