rshankras/originality-check
Guideline-4.3 anti-spam / originality gate — score whether an app (and each portfolio addition) is meaningfully distinct in function, content, and metadata before you invest or submit. Use at validation/new-app time and again before submission. Protects the whole developer account from 4.3 (spam/duplicate) rejections. NOT rejection-handler (that works an existing rejection) and NOT competitive-analysis (that positions in the market).
npx skills add https://github.com/rshankras/claude-code-apple-skills --skill originality-check
Decide, with evidence, whether an app is *distinct enough to exist* — before you build it or submit it.
> At portfolio scale, shipping many similar small apps risks Guideline 4.3 (spam / duplicate)
> — this is the go/no-go distinctness gate that keeps that from happening.
rejection-handler. That works a rejection you *already have*. This is upstream — itprevents the 4.3 by catching sameness before you ship.
competitive-analysis / market-research. Those size demand and position you in themarket. This judges *distinctness* (function + content + metadata) vs your own portfolio and vs
near-identical competitors — a spam risk, not a demand question.
validate / new-app (don't build a dup) and before submit(don't trip 4.3). Also periodically across the portfolio (internal cannibalization / template-sameness).
.planning/VALIDATION.md (competitor + market data). If missing/stale, gather freshvia WebSearch or the product/competitive-analysis skill.
list_apps / get_metadata).list_apps → for each shipped app read its positioning(get_metadata). Does the candidate overlap one you already ship in function, **code
template, or metadata**? Two apps that differ only in theme/reskin = 4.3 risk.
VALIDATION.md if present; otherwise WebSearch for closelook-alikes. Judge: is the core function a thin reskin of an existing app, or a genuine wedge?
that is only skin-deep:
| Dimension | Distinct if… |
|---|---|
| Function | it does something materially different, not a template swap |
| Content / data | unique data or content, not a generic wrapper |
| Metadata | name / keywords / screenshots not near-identical to siblings or competitors |
| UX / value | a real reason a user picks *this* one |
app, add the unique wedge, or drop it); if approved, name the specific wedge that MUST be built
to clear 4.3.
app instead.
.planning/ (VALIDATION or STATE). For aborderline-approved app, record the wedge as a build requirement so plan/build deliver it.
if borderline — the specific differentiation that must ship before submission.
strong app over several thin ones.
App Review Guidelines (captured 2026-07).
Take rshankras/originality-check from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.