kramme-cc-workflow/skills/kramme:docs:out-of-scope/SKILL.md
(experimental) Record, check, append, or reconsider rejected enhancement concepts in the project's `.out-of-scope/` directory. One markdown file per concept; substantive reason + prior-request list. Use when the team rejects an enhancement and wants to remember why, or when checking whether a new request matches a prior rejection. Not for bug rejections (close as wontfix with a comment), not for deferrals (use issue priority/status instead), not for cross-repo aggregation.
npx skillsauth add abildtoft/kramme-cc-workflow kramme:docs:out-of-scopeInstall 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.
Maintain a .out-of-scope/ directory at the project root: one short markdown file per rejected enhancement concept, capturing what was rejected and why so future sessions can check before re-litigating.
Use this skill when:
check looks up matches by concept similarity.append records the new request alongside the original.reconsider removes the entry.Route elsewhere if:
wontfix with a comment. This skill is for enhancement scope, not bug triage.record will gate on this distinction./kramme:docs:adr, which preserves rejected alternatives inside the ADR itself./kramme:siw:close's decision log.$ARGUMENTS by spaces. The first token is the subcommand.record, check, append, reconsider as exclusive subcommands.append, the last token is the issue reference and the rest form the concept — but only when the last token looks like an issue reference (#123, ABC-123, or a URL). If it does not (e.g. append dark mode), treat all remaining tokens as the concept and ask the user for the issue reference instead of guessing.Lowercase, replace spaces and underscores with hyphens, strip characters outside [a-z0-9-], collapse repeated hyphens. Example: "Dark Mode" → dark-mode. The skill always keys files by slug; the user-facing concept name is preserved verbatim inside the file body.
If the computed slug is empty (the concept was missing or contained no usable characters), print an error naming the offending input and stop before any file operation. This guard applies to every subcommand, including append when the concept token is missing.
record <concept>Capture a settled rejection.
Slug the concept.
If .out-of-scope/<slug>.md already exists, ask whether the user meant append. Stop unless overridden.
Settled-vs-deferral gate — ask the user (via the structured question tool when available, otherwise in plain prose) and wait for an explicit choice:
header: "Is this a settled rejection?"
question: "Recording a rejection here means future sessions will surface it before re-litigating. Is this a settled decision, or a deferral that might come back later?"
options:
- "Settled rejection — record it"
- "Deferral — cancel"
If the user picks deferral, stop without writing.
Gather rejection content from the user in prose — these are free-text fields, not multiple choice, so do not use AskUserQuestion here. Pull from the surrounding conversation where the answer is already known and ask for the rest:
Create the directory if missing (mkdir -p .out-of-scope).
Render and write .out-of-scope/<slug>.md from assets/out-of-scope-template.md:
{Concept Name} → user-facing concept (preserve original casing, not the slug).{YYYY-MM-DD} → today's absolute date. Capture the date in the file body so git mv, re-checkout, or copy operations cannot reset it via mtime.{name or role} → decider.If .gitignore would hide .out-of-scope/, ask once per record run (via the structured question tool when available, otherwise in plain prose — wait for an explicit choice) whether to keep it gitignored or remove the ignore rule. Default recommendation: committed (institutional memory).
Print recorded .out-of-scope/<slug>.md.
check <concept>Look up whether a concept has been rejected before.
If .out-of-scope/ is missing or empty, print no prior rejections recorded and stop.
List filenames in .out-of-scope/ (ls .out-of-scope/).
Reason about which slugs plausibly match the concept. Concept similarity is judgmental, not fuzzy: dark-mode and night-theme plausibly match; dark-mode and darken-image-filter do not.
For each plausible match, read the file body and surface:
This is similar to `.out-of-scope/<slug>.md` (decided <date>) — we rejected this before because <one-line summary of "Why this is out of scope">. Continue, or honor the prior rejection?
Ask the user (via the structured question tool when available, otherwise in plain prose) and wait for an explicit choice:
header: "Honor prior rejection?"
question: "<surface format above>"
options:
- "Honor the prior rejection — stop"
- "Continue anyway"
If continuing, note the prior rejection in subsequent output so callers can see the override.
If no plausible match, print no prior rejections found for <concept>.
append <concept> <issue-ref>Record an additional request that asked for an already-rejected concept.
.out-of-scope/<slug>.md.record. Stop unless overridden.<issue-ref> already appears under "Prior requests", print <issue-ref> already recorded in .out-of-scope/<slug>.md and stop — re-running must not duplicate bullets.- <issue-ref> — <short context>. Ask for the short context if not provided.appended <issue-ref> to .out-of-scope/<slug>.md.reconsider <concept>Remove a rejection that no longer applies.
Slug the concept; locate .out-of-scope/<slug>.md.
If absent, print no rejection recorded for <concept> and stop.
Read the file and surface its content so the user sees what is being removed.
Confirm with the user (via the structured question tool when available, otherwise in plain prose) and wait for an explicit choice:
header: "Remove this rejection?"
question: "Removing means future sessions will no longer surface it. Continue?"
options:
- "Remove"
- "Keep"
If confirmed, delete the file. Print removed .out-of-scope/<slug>.md — rejection no longer recorded.
Reopening the original issue is a separate action — this skill does not touch Linear or git history.
Files in .out-of-scope/ follow the canonical structure in assets/out-of-scope-template.md — the single source of truth; read it before rendering. The load-bearing elements, in order:
# {Concept Name} — the first heading; check matches against it.Decided: {YYYY-MM-DD} Decided by: {name or role} — date and decider on one line.## Why this is out of scope — the substantive reason, plus an optional code sample.## Prior requests — the bullet list append grows.check looks up files by slug and first-heading match; append locates the "Prior requests" list by heading. Manual edits must preserve heading text and order.
Skills that read .out-of-scope/ during their context-gathering phase — discovery, issue-definition, and refactor-planning skills among them — each carry their own inline instruction so they stay self-contained when this skill is missing. The shared protocol they follow:
ls .out-of-scope/ (or equivalent). If absent or empty, skip silently.This is similar to .out-of-scope/<slug>.md (decided <date>) — we rejected this before because <one-line summary>. Continue, or honor the prior rejection?.out-of-scope/<slug>.md is created with the canonical template after record.Decided: line in the file body is today's absolute date (not just file mtime).check surfaces matches by concept similarity, not by exact slug equality only.append grows the "Prior requests" list by one bullet per new issue reference; a duplicate reference is rejected, not re-appended.reconsider deletes the matching file and prints a confirmation.development
Runs kramme:pr:code-review as a closeout review loop for local or PR branch changes before commit, ship, or final response. Use when the user asks for autoreview, second-model review, or a final code-review pass after non-trivial edits. Not for UX, visual, accessibility, or product review.
development
Guides topic-level understanding verification for a PR, branch, feature, document, spec, design decision, bug fix, or other concrete subject. Use when the user asks to confirm, quiz, drill, teach-and-check, or verify that they understand a topic. Maintains a topic-specific checklist artifact and requires demonstrated understanding before marking the topic complete. Not for ordinary explanations without verification, end-of-session summaries, or code/test correctness checks.
testing
Design a CI/CD pipeline with quality gates, a <10-minute budget, feature-flag lifecycle, and an exit checklist. Use when adding a new CI pipeline, changing gate configuration, or planning a rollout for a new service. Complementary to kramme:pr:fix-ci (which fixes failures in an existing pipeline). Covers gate ordering, secrets storage, branch protection, rollback mechanism, and staged-rollout guardrails — not a rollout-execution runbook.
tools
--- name: kramme:visual:demo-reel description: Capture local demo evidence for observable product behavior: screenshots, before/after image sets, browser reels, terminal recordings, and short GIF/video proof. Use when shipping UI changes, CLI features, or any change where PR reviewers would benefit from visual or behavioral evidence. argument-hint: "[what to capture] [--url <url>|auto] [--tier static|before-after|browser-reel|terminal-recording]" disable-model-invocation: true user-invocable: tr