tapflow is a self-hosted service that runs iOS simulators and Android emulators in a web browser, letting teams view mobile builds, streams, and recordings on infrastructure they control. Mobile QA teams and other developers use it to test apps without relying on shared physical devices or uploading builds to a cloud provider. The catalogue entries support operating tapflow and its mobile testing workflows.
Borrowing it
Nothing to install: this file belongs to jo-duchan/tapflow. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/jo-duchan/tapflow/main/.claude/commands/promote-decision.mdgit clone --depth 1 https://github.com/jo-duchan/tapflowWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/jo-duchan/tapflow/promote-decision)<a href="https://agentmods.dev/commands/jo-duchan/tapflow/promote-decision"><img src="https://agentmods.dev/badge/commands/jo-duchan/tapflow/promote-decision/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/commands/jo-duchan/tapflow/promote-decision"><img src="https://agentmods.dev/badge/commands/jo-duchan/tapflow/promote-decision.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00073 | $0.01440 |
| Opus 5.5 | $0.00029 | $0.00576 |
| Sonnet 5.5 | $0.00015 | $0.00288 |
| Haiku 4.5 | $0.00007 | $0.00144 |
Grade A, and why
promote-decision scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 80 lines — stays where its author put it; the contents beside it link to each section on GitHub.
.work/archive/(비공개 KO 작업로그)를 소스로, 기여자·기여자의 LLM이 코드를 바꾸기 전에 읽어야 할 결정·근거를 contributing/(공개, 커밋됨)으로 승격한다. .work/는 자유롭게 쓰는 사설 스크래치패드로 그대로 두고, 공유 가치가 있는 것만 골라 영어로 큐레이션해 옮긴다.
인자(선택): 승격 대상을 좁히는 주제·키워드 또는 특정 archive 파일 경로. 생략 시 .work/archive/ 전체를 후보로 스캔한다.
절차
1. 인벤토리 수집
- 스키마 SSOT를 먼저 읽는다:
contributing/README.md— 2단 frontmatter 스키마·type어휘·작성 규칙. 이 커맨드는 스키마를 재정의하지 않고 그 파일을 따른다. - 승격 대상(중복 제거 기준):
contributing/*.md전부 +INDEX.mdDocumentation 섹션. - 소스:
.work/archive/*.md(인자로 좁혀졌으면 해당 범위만). 읽기 전용 — 원본을 수정·삭제하지 않는다.
2. 후보 선별
archive 파일에서 공유 가치가 있는 것만 고른다. 판정 기준:
- 승격한다: 코드에 드러나지 않는 왜 — 의도적 비대칭("이건 버그가 아니라 이런 이유로 이렇게 뒀다"), 시도했다 버린 접근과 그 이유(사족 dead end), 리버스 엔지니어링 사실, 근본 원인까지 추적한 진단, 계측·튜닝 레퍼런스.
- 승격하지 않는다: 일상적 구현 내역(코드가 SoT), 이미 뒤집힌·낡은 결정, 진행 중이라 아직 정착 안 된 판단, 이번 작업에만 해당하는 일회성 메모.
3. 중복 제거
후보를 기존 contributing/ 문서와 주제 단위로 대조한다(파일명이 아니라 내용). 이미 다뤄진 결정은 제외하고, 기존 문서에 보강이 맞는 경우(새 섹션 추가)와 신규 파일이 맞는 경우를 구분한다.
4. 보안·프라이버시 게이트 (비가역 경계)
승격은 비공개 → 공개 이동이고, 한번 push되면 git 히스토리에 영구히 남는다. 초안을 만들기 전에 각 후보 내용을 스캔한다:
- 키·토큰·비밀번호·인증 정보, 내부 호스트/IP, 절대 경로(
/Users/...), 개인 이메일·실명, 미공개 계획·내부 URL. - 하나라도 걸리면 그 후보는 초안 생성을 보류하고, 무엇을 마스킹·삭제해야 공개 가능한지 사용자에게 보고한 뒤 확인을 받는다. 확신이 안 서면 승격하지 않는다.
5. 초안 작성
승인된(또는 민감정보 없는) 후보마다 contributing/<slug>.md를 만든다:
- 영어로, 기계 번역이 아니라 큐레이션. KO 작업로그의 맥락·근거·버린 접근은 보존하되, 시간순 잡음·사족·개인 메모는 걷어낸다.
contributing/README.md의 2단 스키마로 frontmatter를 얹는다.type/topics는 필수,status는 수명주기 있는 문서에만,related는 형제 문서가 있을 때.updated날짜는 아는 값만 — 지어내지 않는다.- 기존 문서 보강이면 새 파일 대신 해당 문서에 섹션을 추가한다.
6. 산문 점검
작성한 산문에 /ai-tells en detect <파일>을 돌려 AI 흔적을 잡고, 걸린 구간만 교정한다. (docs 계열이라 필요 시 rewrite 허용 — 마케팅 규칙과 무관.)
7. 등재
새 문서(또는 보강)를 두 곳에 등록한다:
contributing/README.md의 "Current records" 표.- 루트
INDEX.md의 "Engineering decision & rationale records —contributing/" 표.
제약
- 절대 커밋·PR을 만들지 않는다. 초안 생성 후 반드시 멈춰 사용자 승인을 받는다.
- 파일별 승인 게이트: 승격 후보를 한 번에 일괄 확정하지 않는다. 각 초안 + 출처가 된 archive 파일 + 무엇을 걷어냈는지를 제시하고, 사용자가 건건이 keep/버림을 정한다.
.work/archive/원본은 읽기 전용 — 수정·삭제·이동하지 않는다. 승격은 복제이지 이동이 아니다.- 스키마는
contributing/README.md가 단일 소스. 이 커맨드에서 필드를 새로 정의하지 않는다. - 확신이 안 서면 승격하지 않는다. 잘못 공개하는 비용 > 기록 안 하는 비용.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago Changed db6e89a0a54e
- 2mo ago First seen · 80 lines · 73 tokens per session scan A 002ead6ee402
promote-decision is a command published in the GitHub repository jo-duchan/tapflow (1,616 stars, last pushed yesterday), licensed MIT. It adds 73 tokens to every session and 1,440 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
promote-decision compared with commands from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| promote-decisionjo-duchan/tapflow | Command | 1.6k | yesterday | MIT | A | 73 | Claude Code |
| instrumentnexus-labs-automation/mobile-observability | Command | 116 | 2mo ago | MIT | A | 0 | Claude Code |
| app-store-auditmjmirza/app-store-compliance | Command | 403 | yesterday | none | A | 35 | Claude Code |
| audit-claudekelvinkosbab/AppBootstrapAI | Command | 8 | today | MIT | A | 27 | Claude Code |
| claudekelvinkosbab/AppBootstrapAI | Command | 8 | today | MIT | A | 19 | Claude Code |
| feature-learnahmed3elshaer/everything-claude-code-mobile | Command | 66 | 4mo ago | MIT | A | 21 | Claude Code |
| checklistgithub/spec-kit | Command | 148k | yesterday | MIT | A | 13 | Claude Code |