Signing, builds, uploads and an originality check

apple signing status|ensure: bundle id capabilities, a distribution certificate from a key made locally (kept in .storebound/signing, never printed), App Store profiles installed for Xcode; Developer ID 403 explained.
apple build / apple upload: xcodebuild archive + export with a generated ExportOptions.plist, next build number, App Store Connect API build upload (or altool), processing wait. Native, Capacitor, React Native, Flutter, Unity projects.
play build / play upload: Gradle bundleRelease with the upload key passed through the environment, next versionCode read back from the AAB, testing tracks only.
originality: offline Guideline 4.3 check (name, listing text, icon and screenshot perceptual hashes, project structure).
New skill build-and-sign; zero new dependencies.
This commit is contained in:
CRTkafa 2026-10-11 23:42:48 +08:00
parent 346d80e07e
commit 41319562d8
36 changed files with 2786 additions and 28 deletions

View file

@ -1,6 +1,6 @@
---
name: portfolio-originality
description: Originality gate for studios and developers that ship many similar mobile apps or games (templates, white-label apps, reskins) - score a planned or finished app or game against your own catalogue (mechanic, content, art, metadata, screenshots), require a clear differentiator, and suggest merging thin ideas, to avoid App Store Guideline 4.3 (spam) and Play repetitive content rejections. Use before starting a new app or game, before submitting one, or after a 4.3 / "repetitive content" rejection.
description: Originality gate for studios and developers that ship many similar mobile apps or games (templates, white-label apps, reskins) - measure listing text, icon, screenshot and project similarity offline with storebound originality, score a planned or finished app or game against your own catalogue (mechanic, content, art, metadata, screenshots), require a clear differentiator, and suggest merging thin ideas, to avoid App Store Guideline 4.3 (spam) and Play repetitive content rejections. Use before starting a new app or game, before submitting one, or after a 4.3 / "repetitive content" rejection.
---
# Portfolio originality (Guideline 4.3 gate)
@ -14,6 +14,17 @@ Studios with a template engine and white-label / reskinned apps hit this first.
subtitle, short description, keywords, screenshot captions).
- The catalogue: the same for every app or game you have published or submitted (store links are fine).
## Measure first (offline)
`storebound originality --against <folder>` compares this app with your other apps: each folder with a
`storebound.config.ts`, or a folder holding several (one level down); or list them once in `originality.against`.
Per pair it reports a 0-100 % likeness for the **name**, the **listing text** (word frequency + copied 3-word
phrases), the **icon** and the **screenshots** (perceptual hashes: dHash + DCT pHash of the icon and of the rendered
screenshots of the first language, PNG decoded in TypeScript, JPEG / WebP through ffmpeg if installed), and the
**project structure** (same file layout, byte-identical files; build output and dependencies left out), an overall
score, why a pair is flagged (overall >= 70 % by default, `--threshold`, or one axis nearly identical) and what to
change. `--json` for agents (MCP tool `originality`); exit 1 when a pair is flagged. It measures what reviewers see
and what a template shares; it cannot judge the core mechanic or content. Feed its numbers into the scores below.
## Score each pair (new app vs each catalogue app), 0 = identical, 2 = clearly different
| axis | 0 | 1 | 2 |
|---|---|---|---|
@ -38,5 +49,6 @@ If the sentence needs the words "theme", "skin", "colours" or "levels" to work,
- After a 4.3 rejection: list the concrete differences in the reply (`review-rejections`); if there are none, merge.
## Output for the owner
A table per catalogue app with the five scores, the total, the differentiator sentence, and a recommendation:
A table per catalogue app with the `storebound originality` likeness per axis, the five scores, the total, the
differentiator sentence, and a recommendation:
ship / ship after <change> / merge into <app>.