Not in the top 1,000 by GitHub stars
gongnyang/stickerforge
캐릭터 이미지 한 장으로 인쇄용 스티커 수백 장을 뽑는 Codex, Claude Code 스킬
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/stickerforge/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 7f4ef91840a6
No earlier version was observed for comparison.
Verified commit 7f4ef91840a66b72de444b5c25fb5f14c97218a8
git clone --filter=blob:none --no-checkout https://github.com/gongnyang/stickerforge.git .hotskills/gongnyang-stickerforge && git -C .hotskills/gongnyang-stickerforge checkout --detach 7f4ef91840a66b72de444b5c25fb5f14c97218a8
# Copy each selected skill directory from .hotskills/gongnyang-stickerforge into .claude/skills/<skill-name>/Heat
Insufficient historyNot enough history yet to measure heat. It appears after a few days of data.
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- stickerforge
skills/stickerforge
How it works
stickerforge
When your agent uses it
Turns one character image into hundreds of print-ready transparent PNG stickers. Plans concepts, checks duplicates, runs a pilot, batch-generates with Codex image generation or an OpenAI/Gemini key, gates alpha and fake-checkerboard backgrounds, retries failures twice, exports a contact sheet and die-cut notes. Use for sticker packs, character sticker sets, emoji or messenger stickers, print stickers, mascot sticker sheets. Korean triggers - 스티커 만들어, 스티커 팩, 캐릭터 스티커 대량 생성, 이모티콘 스티커, 인쇄용 스티커, 칼선, 스티커 시트, 투명 PNG 스티커, 컨셉 100개.
What it loads into context
Frontmatter
181 tokensAlways available to the agent
SKILL.md
1,264 tokensWhen the skill is activated
Reference documents
9,405 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Invariants
- Stages
- When to read what
- Runtime
- Output contract
Scripts executed separately
scripts/alpha_clean.pyscripts/cleanup.pyscripts/doctor.pyscripts/gates/_common.pyscripts/gates/g01_size.pyscripts/gates/g02_alpha.pyscripts/gates/g03_checker.pyscripts/gates/g04_margin.pyscripts/gates/g05_outline.pyscripts/gates/g06_dup.pyscripts/manifest.pyscripts/postprocess.pyscripts/providers/__init__.pyscripts/providers/codex.pyscripts/providers/gemini.pyscripts/providers/openai.pyscripts/run.pyscripts/sheet.pytests/make_fixtures.pytests/run_tests.py
Files
../../.claude-plugin/marketplace.jsonasset279 bytes../../.claude-plugin/plugin.jsonasset466 bytesSKILL.mdcore4,911 bytesagents/openai.yamlasset282 bytesexamples/tiny-project/refs/gongnyang.jpgasset46,352 bytesexamples/tiny-project/spec.jsonasset937 bytesreferences/failure-playbook.mddoc3,054 bytesreferences/print-guide.mddoc2,277 bytesreferences/providers.mddoc3,940 bytesreferences/s0-intake.mddoc2,447 bytesreferences/s1-concepts.mddoc2,436 bytesreferences/s2-pilot.mddoc1,445 bytesreferences/s3-generate.mddoc2,894 bytesreferences/s4-gates.mddoc1,969 bytesreferences/s5-retry.mddoc1,448 bytesreferences/s6-export.mddoc1,340 bytesschemas/manifest.schema.jsonasset1,028 bytesschemas/spec.schema.jsonasset3,510 bytesscripts/CODEX_ONLY_RESULT.mddoc2,675 bytesscripts/alpha_clean.pyruns1,516 bytesscripts/cleanup.pyruns1,678 bytesscripts/doctor.pyruns2,793 bytesscripts/gates/README.mddoc1,701 bytesscripts/gates/_common.pyruns1,825 bytesscripts/gates/g01_size.pyruns1,127 bytesscripts/gates/g02_alpha.pyruns1,296 bytesscripts/gates/g03_checker.pyruns3,559 bytesscripts/gates/g04_margin.pyruns1,440 bytesscripts/gates/g05_outline.pyruns4,031 bytesscripts/gates/g06_dup.pyruns2,562 bytesscripts/manifest.pyruns1,946 bytesscripts/postprocess.pyruns1,690 bytesscripts/providers/PROVIDER_STATUS.mddoc1,777 bytesscripts/providers/__init__.pyruns418 bytesscripts/providers/codex.pyruns4,190 bytesscripts/providers/gemini.pyruns2,889 bytesscripts/providers/openai.pyruns3,671 bytesscripts/run.pyruns19,981 bytesscripts/sheet.pyruns1,739 bytesstyles/chibi-soft.mddoc825 bytesstyles/flat-vector.mddoc816 bytesstyles/mono-ink.mddoc823 bytesstyles/original-match.mddoc986 bytesstyles/retro-mission-patch.mddoc897 bytesstyles/toy-3d.mddoc911 bytestemplates/concept-lines.example.mddoc1,384 bytestemplates/spec.example.jsonasset884 bytestests/REAL_RESULT.mddoc1,241 bytestests/make_fixtures.pyruns4,351 bytestests/run_tests.pyruns7,558 bytes
Read SKILL.md
# stickerforge
One reference character in, a gated set of transparent PNG stickers out. Work in a project folder outside this skill folder. Scripts live in `scripts/` and are run, not read. Run `scripts/doctor.py` first; it detects the runtime and stops when image generation is unavailable.
## Invariants
1. Three human checks only: style (A), pilot (B), final (C). No batch run before B.
2. The reference is always the original character image. Generated images are never used as references.
3. Transparent output: ask for `transparent_background=true`, then clean alpha (12 and below to 0, 240 and above to 255). A checkerboard painted into pixels is a fail, not a transparent image.
4. Never add text on top of an image afterwards. A wrong glyph means regenerate.
5. Concepts are compared against the full concept list before generation. Duplicates are dropped.
6. Front model for the Codex path: gpt-6.1-terra at medium effort. Pass the prompt verbatim. No lighter model; quality drops in practice.
7. Collect images by the `thread_id` from `codex exec --json`, never by time window.
8. Resume from `manifest.jsonl`: append one row per state change, the last row for an id wins. Retry limit is 2 per sticker.View the complete source on GitHubSkills included
- stickerforge
Repository facts
- License
- MIT
- Created
- Nov 6, 2026
- Last pushed
- Nov 6, 2026
- Forks
- 6
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 7, 2026
- No broad tool permissions
- No dangerous shell commands
- 28 network referencesin 5 files: stickerforge/scripts/providers/openai.py:38 stickerforge/scripts/providers/gemini.py:1 .claude-plugin/plugin.json:4 and 2 more
- 2 obfuscation signalsin 2 files: stickerforge/scripts/providers/gemini.py:37 stickerforge/scripts/providers/openai.py:55
- No instruction overrides
- 20 executable scriptsin 20 files: stickerforge/scripts/alpha_clean.py:1 stickerforge/scripts/cleanup.py:1 stickerforge/scripts/doctor.py:1 and 17 more
- 25 references to secretsin 9 files: stickerforge/scripts/doctor.py:27 stickerforge/references/providers.md:9 stickerforge/scripts/providers/gemini.py:1 and 6 more
- No requests to vote in Hot
Show all 75 signals by file
.claude-plugin/plugin.json
- Network accessline 4
"version": "0.1.0", "author": { "name": "kongnyang" }, "homepage": "https://github.com/gongnyang/stickerforge", - Network accessline 5
"author": { "name": "kongnyang" }, "homepage": "https://github.com/gongnyang/stickerforge", "repository": "https://github.com/gongnyang/stickerforge", - Network accessline 6
"homepage": "https://github.com/gongnyang/stickerforge", - Network accessline 7
"repository": "https://github.com/gongnyang/stickerforge",
skills/stickerforge/SKILL.md
- Access to secretsline 59
[Credential-related source omitted]
skills/stickerforge/references/providers.md
skills/stickerforge/schemas/manifest.schema.json
skills/stickerforge/schemas/spec.schema.json
skills/stickerforge/scripts/alpha_clean.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/stickerforge/scripts/cleanup.py
skills/stickerforge/scripts/doctor.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 27
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted] - Access to secretsline 36
[Credential-related source omitted] - Access to secretsline 52
[Credential-related source omitted] - Access to secretsline 53
[Credential-related source omitted]
skills/stickerforge/scripts/gates/_common.py
- Executable scriptline 1
Executable file
skills/stickerforge/scripts/gates/g01_size.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/stickerforge/scripts/gates/g02_alpha.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/stickerforge/scripts/gates/g03_checker.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/stickerforge/scripts/gates/g04_margin.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/stickerforge/scripts/gates/g05_outline.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/stickerforge/scripts/gates/g06_dup.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/stickerforge/scripts/manifest.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/stickerforge/scripts/postprocess.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/stickerforge/scripts/providers/PROVIDER_STATUS.md
skills/stickerforge/scripts/providers/__init__.py
- Executable scriptline 1
Executable file
skills/stickerforge/scripts/providers/codex.py
skills/stickerforge/scripts/providers/gemini.py
- Network accessline 1
[Credential-related source omitted] - Executable scriptline 1
[Credential-related source omitted] - Access to secretsline 1
[Credential-related source omitted] - Network accessline 2
엔드포인트: POST https://generativelanguage.googleapis.com/v1beta/models/<model>:generateContent - Access to secretsline 17
[Credential-related source omitted] - Access to secretsline 19
[Credential-related source omitted] - Network accessline 25
"data": base64.b64encode(Path(r).read_bytes()).decode()}}) body = {"contents": [{"parts": parts}], "generationConfig": {"responseModalities": ["IMAGE"]}} base = os.environ.get("GEMINI_BASE_URL", "https://generativelanguage.googleapi - Network accessline 26
body = {"contents": [{"parts": parts}], "generationConfig": {"responseModalities": ["IMAGE"]}} base = os.environ.get("GEMINI_BASE_URL", "https://generativelanguage.googleapis.com/v1beta") req = urllib.request.Request(f"{base}/models - Network accessline 27
[Credential-related source omitted] - Access to secretsline 27
[Credential-related source omitted] - Network accessline 28
req = urllib.request.Request(f"{base}/models/{model}:generateContent", data=json.dumps(body).encode(), - Network accessline 29
[Credential-related source omitted] - Network accessline 30
try: with urllib.request.urlopen(req, timeout=int(cfg.get("timeout", 420))) as r: resp = json.load(r) - Network accessline 31
with urllib.request.urlopen(req, timeout=int(cfg.get("timeout", 420))) as r: - Possible obfuscationline 37
img = base64.b64decode(d["data"]); break
skills/stickerforge/scripts/providers/openai.py
- Executable scriptline 1
[Credential-related source omitted] - Access to secretsline 1
[Credential-related source omitted] - Access to secretsline 32
[Credential-related source omitted] - Access to secretsline 34
[Credential-related source omitted] - Network accessline 38
chroma = job["transparent"] and not native prompt = job["prompt"] + (CHROMA_NOTE if chroma else "") base = os.environ.get("OPENAI_BASE_URL", "https://api.openai.com/v1") - Network accessline 39
prompt = job["prompt"] + (CHROMA_NOTE if chroma else "") base = os.environ.get("OPENAI_BASE_URL", "https://api.openai.com/v1") fields = {"model": model, "prompt": prompt, "n": "1", "size": size, "output_format": "png"} - Network accessline 40
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted] - Network accessline 46
if refs: data, ct = _multipart(fields, [("image[]", r) for r in refs]) req = urllib.request.Request(base + "/images/edits", data=data, headers={"Content-Type": ct}) - Network accessline 47
data, ct = _multipart(fields, [("image[]", r) for r in refs]) req = urllib.request.Request(base + "/images/edits", data=data, headers={"Content-Type": ct}) else: - Network accessline 48
req = urllib.request.Request(base + "/images/edits", data=data, headers={"Content-Type": ct}) - Network accessline 49
else: req = urllib.request.Request(base + "/images/generations", data=json.dumps(fields).encode(), headers={"Content-Type": "application/json"}) - Network accessline 50
req = urllib.request.Request(base + "/images/generations", data=json.dumps(fields).encode(), - Network accessline 51
headers={"Content-Type": "application/json"}) req.add_header("Authorization", "Bearer " + key) with urllib.request.urlopen(req, timeout=int(cfg.get("timeout", 420))) as r: - Network accessline 52
req.add_header("Authorization", "Bearer " + key) with urllib.request.urlopen(req, timeout=int(cfg.get("timeout", 420))) as r: body = json.load(r) - Network accessline 53
with urllib.request.urlopen(req, timeout=int(cfg.get("timeout", 420))) as r: - Possible obfuscationline 55
img = base64.b64decode(body["data"][0]["b64_json"])
skills/stickerforge/scripts/run.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/stickerforge/scripts/sheet.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/stickerforge/tests/make_fixtures.py
- Executable scriptline 1
#!/usr/bin/env python3
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 2 facts
- Contacts generativelanguage.googleapis.com, which SKILL.md, the README and the plugin manifest do not mentionstickerforge/scripts/providers/gemini.py:27High confidence
- Contacts api.openai.com, which SKILL.md, the README and the plugin manifest do not mentionstickerforge/scripts/providers/openai.py:40High confidence
Signal confidence: 67 facts
- Access to secrets in prose of the SKILL.mdstickerforge/SKILL.md:59Low confidence
- Access to secrets in prose of documentation: a variable, placeholder or call, not a stored valuestickerforge/references/providers.md:9Low confidence
- Access to secrets in prose of documentation: a variable, placeholder or call, not a stored valuestickerforge/references/providers.md:10Low confidence
- Access to secrets in prose of documentation: a variable, placeholder or call, not a stored valuestickerforge/references/providers.md:20Low confidence
- Access to secrets in prose of documentationstickerforge/references/providers.md:21Low confidence
- Executable script in code of a file that runsstickerforge/scripts/alpha_clean.py:1High confidence
- Executable script in code of a file that runsstickerforge/scripts/cleanup.py:1High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuestickerforge/scripts/cleanup.py:13Low confidence
- Executable script in code of a file that runsstickerforge/scripts/doctor.py:1High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuestickerforge/scripts/doctor.py:27Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuestickerforge/scripts/doctor.py:35Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuestickerforge/scripts/doctor.py:36Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuestickerforge/scripts/doctor.py:52Low confidence
- Access to secrets in code of a file that runsstickerforge/scripts/doctor.py:53High confidence
- Executable script in prose of a file that runsstickerforge/scripts/gates/_common.py:1Low confidence
- Executable script in code of a file that runsstickerforge/scripts/gates/g01_size.py:1High confidence
- Executable script in code of a file that runsstickerforge/scripts/gates/g02_alpha.py:1High confidence
- Executable script in code of a file that runsstickerforge/scripts/gates/g03_checker.py:1High confidence
- Executable script in code of a file that runsstickerforge/scripts/gates/g04_margin.py:1High confidence
- Executable script in code of a file that runsstickerforge/scripts/gates/g05_outline.py:1High confidence
- Executable script in code of a file that runsstickerforge/scripts/gates/g06_dup.py:1High confidence
- Executable script in code of a file that runsstickerforge/scripts/manifest.py:1High confidence
- Executable script in code of a file that runsstickerforge/scripts/postprocess.py:1High confidence
- Access to secrets in prose of documentationstickerforge/scripts/providers/PROVIDER_STATUS.md:8Low confidence
- Access to secrets in prose of documentationstickerforge/scripts/providers/PROVIDER_STATUS.md:9Low confidence
- Executable script in prose of a file that runsstickerforge/scripts/providers/__init__.py:1Low confidence
- Executable script in prose of a file that runsstickerforge/scripts/providers/codex.py:1Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuestickerforge/scripts/providers/codex.py:11Low confidence
- Network access in prose of a file that runsstickerforge/scripts/providers/gemini.py:1Low confidence
- Executable script in prose of a file that runsstickerforge/scripts/providers/gemini.py:1Low confidence
- Access to secrets in prose of a file that runs: a variable, placeholder or call, not a stored valuestickerforge/scripts/providers/gemini.py:1Low confidence
- Network access in prose of a file that runsstickerforge/scripts/providers/gemini.py:2Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuestickerforge/scripts/providers/gemini.py:17Low confidence
- Access to secrets in code of a file that runsstickerforge/scripts/providers/gemini.py:19High confidence
- Network access in code of a file that runsstickerforge/scripts/providers/gemini.py:25High confidence
- Network access in code of a file that runsstickerforge/scripts/providers/gemini.py:26High confidence
- Network access in code of a file that runsstickerforge/scripts/providers/gemini.py:27High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuestickerforge/scripts/providers/gemini.py:27Low confidence
- Network access in code of a file that runsstickerforge/scripts/providers/gemini.py:28High confidence
- Network access in code of a file that runsstickerforge/scripts/providers/gemini.py:29High confidence
- Network access in code of a file that runsstickerforge/scripts/providers/gemini.py:30High confidence
- Network access in code of a file that runsstickerforge/scripts/providers/gemini.py:31High confidence
- Possible obfuscation in code of a file that runsstickerforge/scripts/providers/gemini.py:37High confidence
- Executable script in prose of a file that runsstickerforge/scripts/providers/openai.py:1Low confidence
- Access to secrets in prose of a file that runs: a variable, placeholder or call, not a stored valuestickerforge/scripts/providers/openai.py:1Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuestickerforge/scripts/providers/openai.py:32Low confidence
- Access to secrets in code of a file that runsstickerforge/scripts/providers/openai.py:34High confidence
- Network access in code of a file that runsstickerforge/scripts/providers/openai.py:38High confidence
- Network access in code of a file that runsstickerforge/scripts/providers/openai.py:39High confidence
- Network access in code of a file that runsstickerforge/scripts/providers/openai.py:40High confidence
and 17 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md skills/stickerforge/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/stickerforge/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/stickerforge/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/stickerforge/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/stickerforge/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.