arcane-cli 1.13.1 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -30,7 +30,7 @@ npm install -g arcane-cli # then: spell init
30
30
 
31
31
  <div align="center">
32
32
 
33
- **🔁 opinionated lifecycle** &nbsp;·&nbsp; **📜 <!--count:spells-->41<!--/count:spells--> spells** &nbsp;·&nbsp; **🤖 <!--count:agents-->12<!--/count:agents--> agents** &nbsp;·&nbsp; **⚖️ <!--count:governance-->25<!--/count:governance--> governance standards** &nbsp;·&nbsp; **📝 markdown-native** &nbsp;·&nbsp; **🔌 tested with Claude Code, GitHub Copilot and Codex · GitHub or Azure DevOps**
33
+ **🔁 opinionated lifecycle** &nbsp;·&nbsp; **📜 <!--count:spells-->42<!--/count:spells--> spells** &nbsp;·&nbsp; **🤖 <!--count:agents-->12<!--/count:agents--> agents** &nbsp;·&nbsp; **⚖️ <!--count:governance-->25<!--/count:governance--> governance standards** &nbsp;·&nbsp; **📝 markdown-native** &nbsp;·&nbsp; **🔌 tested with Claude Code, GitHub Copilot and Codex · GitHub or Azure DevOps**
34
34
 
35
35
  </div>
36
36
 
@@ -113,21 +113,21 @@ It isn't a prompt snippet — it's a full framework. Everything installs into yo
113
113
 
114
114
  | Layer | What you get |
115
115
  | --- | --- |
116
- | 📜 **Spells** | **<!--count:spells-->41<!--/count:spells-->** prompt-driven workflows spanning the entire lifecycle — planning, architecture, implementation, testing, review, shipping, session management, and ops. |
116
+ | 📜 **Spells** | **<!--count:spells-->42<!--/count:spells-->** prompt-driven workflows spanning the entire lifecycle — planning, architecture, implementation, testing, review, shipping, session management, and ops. |
117
117
  | ⚖️ **Governance** | **<!--count:governance-->25<!--/count:governance-->** battle-tested standards as drop-in templates: git conventions, testing standards, CI/CD, threat model, ADR format, naming, security hardening, and more. |
118
118
  | 🤖 **Agents** | **<!--count:agents-->12<!--/count:agents-->** ready-made agent personas with roles, clusters, and a gamified autonomy model — assign work and power levels per repo. |
119
119
  | 🛠️ **CLI** | `spell init / add / update / status / uninstall` — install by profile or à la carte, and keep everything in sync as new versions ship. `spell report` turns a program's `PLAN.md` into a Show Report — a generated completion page — offline. |
120
120
 
121
121
  <!-- arcane:start -->
122
122
  <details>
123
- <summary><b>📜 The full spell catalogue (41)</b></summary>
123
+ <summary><b>📜 The full spell catalogue (42)</b></summary>
124
124
 
125
125
  **Session** — `open-session` · `close-session` · `commit-work` · `status` · `arcane-version`
126
126
  **Capture** — `save-idea` · `todo` · `feedback` · `suggest-feature` · `document` · `verification-ledger` · `brainstorm` · `explain-concept`
127
127
  **Delivery** — `create-pull-request` · `sync-pull-request` · `address-review`
128
128
  **Review** — `review` · `review-batch`
129
129
  **Planning** — `plan` · `architect` · `scope` · `product-review`
130
- **Build** — `implement` · `test` · `full-cycle` · `bug` · `bump` · `dotnet-expert` · `security-review` · `ship` · `enchant` · `generate-bot-icons` · `make-discoverable` · `scry` · `eas-store-deploy` · `compliance`
130
+ **Build** — `implement` · `test` · `full-cycle` · `bug` · `bump` · `dotnet-expert` · `security-review` · `ship` · `enchant` · `generate-bot-icons` · `make-discoverable` · `scry` · `eas-store-deploy` · `compliance` · `app-store-accounts`
131
131
  **Docs** — `adopt-docs`
132
132
  **Venture** — `summon-venture` · `manifest`
133
133
  **Meta** — `present-arcane` · `check-drift`
@@ -148,6 +148,7 @@ It isn't a prompt snippet — it's a full framework. Everything installs into yo
148
148
 
149
149
  ## What the framework does
150
150
 
151
+ <!-- arcane:capabilities:start -->
151
152
  Every line says how it holds, because a rule nobody checks should not read like one that is checked. *CLI:* the `spell` command, or a hook it installs, does it. *Spell step:* your AI client does it when the work runs through the spells. *Convention:* the standards ask for it; nothing checks it.
152
153
 
153
154
  **The memory lives in your repository.**
@@ -177,6 +178,7 @@ Every line says how it holds, because a rule nobody checks should not read like
177
178
  - It does not intercept raw git. A commit you type by hand skips the spells' approval and test gates; any hook it installed still runs.
178
179
  - The credential scan looks for known patterns: it can find a leak, never prove a commit is clean.
179
180
  - The push controls stop an accidental push, not a determined operator.
181
+ <!-- arcane:capabilities:end -->
180
182
 
181
183
  ---
182
184
 
@@ -0,0 +1,6 @@
1
+ ---
2
+ name: spell-app-store-accounts
3
+ description: Use PROACTIVELY when a new venture or product needs an Apple Developer Program or Google Play Console developer account created, before any app can be built for the stores.
4
+ ---
5
+
6
+ This skill is the Arcane `spell-app-store-accounts` spell. Read `.arcane/spells/spell-app-store-accounts.md` and follow it as the complete workflow.
@@ -0,0 +1,438 @@
1
+ ---
2
+ name: Spell — App Store Accounts
3
+ description: Enroll a new business or product in the Apple Developer Program and Google Play Console — Organization vs Individual, the D-U-N-S prerequisite, verification documents, fees, realistic timelines, and post-approval hardening. Stops at approved, hardened accounts; shipping builds is spell-eas-store-deploy's job.
4
+ tagline: Open Apple and Google Play developer accounts
5
+ claude_description: Use PROACTIVELY when a new venture or product needs an Apple Developer Program or Google Play Console developer account created, before any app can be built for the stores.
6
+ argument-hint: Which store(s) to enroll in (apple, google, or both), who is enrolling (a legal entity or an individual), and any deadline by which the accounts must be active
7
+ agent: agent
8
+ ---
9
+
10
+ ## Executive Summary
11
+
12
+ - This spell takes a founder from "we need store accounts" to **two approved, hardened developer
13
+ accounts** — one in the Apple Developer Program, one in Google Play Console — for a new business or
14
+ product. It is written at the level of *what you need, why it exists, and how long to budget*, not
15
+ as a click-by-click walkthrough: the consoles change their screens often; the requirements rarely.
16
+ - **Account creation only.** It ends when both accounts are approved, paid for, and hardened. Creating
17
+ an app record, certificates, builds, listings, and submissions belongs to `spell-eas-store-deploy`.
18
+ - **The two stores are independent enrollments.** Different accounts, different verifiers, different
19
+ fees, different timelines. Track them as two separate checklists from day one; never let one
20
+ store's "approved" stand in for the other's.
21
+ - **Timeline is the point.** An Organization enrollment with Apple routinely takes two to four weeks
22
+ end to end because an external party (Dun & Bradstreet) sits in the critical path and Apple's
23
+ verification does not always announce its next step. Google is usually faster but has its own
24
+ verification tasks and deadlines. Start both well before any launch date.
25
+ - **Privacy rail.** This process handles government ID, formation documents, ownership percentages
26
+ and revenue figures. Those are entered by the operator, directly into the store's or Dun &
27
+ Bradstreet's own forms — never pasted into an AI session, a repository, or a shared document.
28
+
29
+ **Facts last verified: 2026-10-27**, against Apple's and Google's own support pages (linked inline).
30
+ Fees, document lists, deadlines and verification programs change. When this date is more than about
31
+ six months old, re-check every figure below against the live page before quoting it to an operator,
32
+ and update this line.
33
+
34
+ ---
35
+
36
+ ## Placeholders
37
+
38
+ | Placeholder | What it is | Resolution rule |
39
+ | --- | --- | --- |
40
+ | `{LLC_NAME}` | The exact legal entity name that will own the accounts (Organization enrollment only). | Resolve from the project's own context (`project.md`, a venture's `legal.md`, `.arcane.json`); if unset, **ask** — and ask for it as it appears on the tax registration, punctuation included. |
41
+ | `{BUSINESS_NAME}` | The public-facing brand or product name (the "developer name" the stores display). | Resolve from the project's README or PRD frontmatter; if unset, ask. It may differ from `{LLC_NAME}`. |
42
+ | `{OPERATOR_DOMAIN}` | The domain the business owns and uses for its website and work email. | Ask if unset. Both stores tie an Organization account to a domain the entity controls. |
43
+
44
+ Never assume any of these. A wrong legal name here does not produce a local mistake — it produces a
45
+ failed verification weeks later.
46
+
47
+ ## Context files
48
+
49
+ - `project.md` / `.arcane.json` — business context: who is enrolling, whether a legal entity exists,
50
+ any deadline. If missing, ask.
51
+ - A venture's `legal.md`, if the hub created one with `spell-summon-venture` — the entity's legal
52
+ checklist usually already records the formation state, the registered name and whether a D-U-N-S
53
+ exists. If missing, proceed from the operator's answers.
54
+ - [governance/mobile-release-standards.md](../../.arcane/governance/mobile-release-standards.md) —
55
+ `MR-11` (the Google Play public developer address is sourced from D-U-N-S and locks in on
56
+ confirmation) is cited by ID in Step 2. **If the file is not installed**, this spell still runs in
57
+ full — cite it as `MR-11 (rationale unavailable — install the standards doc)`.
58
+
59
+ This spell reads nothing else, and it works in a repo with no Arcane context files at all: every
60
+ input it needs can be answered by the operator in a few sentences.
61
+
62
+ ---
63
+
64
+ ## Step 0 — Decide the enrollment type, per store
65
+
66
+ Resolve this first; it determines everything that follows, and in practice it is not reversible
67
+ without starting over.
68
+
69
+ ### Apple Developer Program: Organization vs Individual
70
+
71
+ | Enroll as | When it applies | What Apple requires that the other type does not |
72
+ | --- | --- | --- |
73
+ | **Organization** | A legal entity (corporation, LLC, limited partnership or equivalent) will own the apps and the contract with Apple. | A D-U-N-S Number registered to that exact legal entity; a signer with authority to bind it; a work email on the entity's domain; a publicly reachable website on that domain. The entity's legal name becomes the public seller name. |
74
+ | **Individual** | A natural person owns the apps. Sole proprietors, DBAs, trade names and branches enroll here — Apple does not accept them as organizations. | Only the person's own legal name, address and payment card. The person's legal name becomes the public seller name. |
75
+
76
+ Apple's statement of these rules: <https://developer.apple.com/support/enrollment/> and
77
+ <https://developer.apple.com/support/D-U-N-S/>.
78
+
79
+ ### Google Play Console: Organization vs Personal
80
+
81
+ | Register as | When it applies | What Google requires that the other type does not |
82
+ | --- | --- | --- |
83
+ | **Organization** | A legal entity owns the apps — and **mandatory** for some app categories regardless of preference: financial services, health and medical, apps using the VPN service class, and government apps. | A D-U-N-S Number; organization name and address (taken from the linked Google Payments profile and required to match the Dun & Bradstreet record); an organization phone number and website; a verified developer phone number shown on the public profile. |
84
+ | **Personal** | A natural person owns the apps. | Identity verification of the person; and, for personal accounts created after 2023-11-13, a **closed test with at least 12 testers opted in for 14 consecutive days** before the account may publish to production. |
85
+
86
+ Google's statements: <https://support.google.com/googleplay/android-developer/answer/13628312>
87
+ (account details and verification), <https://support.google.com/googleplay/android-developer/answer/10788890>
88
+ (which services must register as an Organization), and
89
+ <https://support.google.com/googleplay/android-developer/answer/14151465> (the closed-testing rule).
90
+
91
+ Google's documentation does not describe converting a Personal account into an Organization account
92
+ or back. Treat the choice as permanent for planning purposes; if the business will ever hold the
93
+ apps, register the Organization from the start.
94
+
95
+ ### Record the decision
96
+
97
+ Write both choices down in the enrollment tracker (template in **Output**) before touching either
98
+ console, with the one-line reason for each.
99
+
100
+ ---
101
+
102
+ ## Step 1 — Gather what both stores will ask for
103
+
104
+ Collect everything below **before** starting either enrollment, so neither verification stalls on a
105
+ missing document. Each row says why the store wants it; the "why" is what tells you whether a
106
+ substitute will be accepted.
107
+
108
+ | You need | Why it exists | Notes |
109
+ | --- | --- | --- |
110
+ | **The exact legal entity name** (Organization only) | Both stores verify the entity against third-party records — Apple against Dun & Bradstreet, Google against Dun & Bradstreet and the Google Payments profile. A name that differs by a character fails the match. | Copy it from the tax registration or the state filing, **punctuation included**: "Example Co LLC" and "Example Co, LLC" are two different names to a verifier. Use the same spelling in the tax records, the state registration, the D-U-N-S record, both stores, and the Payments profile. |
111
+ | **A D-U-N-S Number** (Organization only) | The nine-digit business identifier Dun & Bradstreet issues; both stores use it to confirm the entity exists and has legal-entity status. | Free. Step 2 covers obtaining or correcting one; it is the longest external dependency. |
112
+ | **A dedicated store account per store** — an Apple Account and a Google Account | The enrolling account becomes the account holder of record; everything (billing, agreements, team membership) hangs off it. | Use a mailbox on `{OPERATOR_DOMAIN}` that the business controls, not a personal address. Apple requires two-factor authentication on the Apple Account before enrollment can start. |
113
+ | **A work email on the entity's domain** (Organization only) | Apple verifies that the signer belongs to the organization through the domain. | Create it before enrolling. |
114
+ | **A publicly reachable website on that domain** | Apple requires a functional public site tied to the organization's domain; Google asks for the organization's website and offers to verify ownership of it. | A parked domain with minimal content does not satisfy Apple. A short real page about the business does. |
115
+ | **A signer with authority to bind the entity** (Apple Organization) | Apple needs someone who can legally accept the Program License Agreement for the entity: an owner or founder, an executive, a senior project lead, or an employee granted that authority. | If the signer is not the owner or founder, Apple asks for a reference who can confirm their authority — have that person's name and contact ready and warn them they may be called. |
116
+ | **Government photo ID** of the enrolling person | Both stores verify the natural person behind the account. | A current passport or driver's license, front and back, in the same legal name used everywhere else. |
117
+ | **Formation documents / state filing** (Organization) | Proof that the legal entity exists and who controls it. | The articles or certificate of formation, plus the most recent state annual filing that lists the current managers, members or officers. Google's accepted-document list names a state-issued certificate of business registration. Apple may ask for notarized true copies. |
118
+ | **An employment-verification letter** (Apple Organization, when asked) | Apple confirms the signer's relationship to the entity. A sole owner has no employer to write one. | A sole owner writes and signs it themselves, on the entity's letterhead, stating their title and that they have authority to bind the entity. This is routine, not a workaround. |
119
+ | **Phone numbers that answer** | Both stores verify phone numbers with one-time codes and may call; Google keeps the organization phone on file and the developer phone on the public profile. | Decide which number is public before entering it. |
120
+ | **A payment card in the enroller's own name** | Apple delays enrollment and requests photo ID when the card belongs to someone else. Google requires a valid card for the fee and may use it in identity checks. | Not a prepaid card for Google. |
121
+ | **A Google Payments profile** in the legal name and address | Google reads the legal name and address from it and requires them to match the D-U-N-S record. | Create or correct it before registering; a mismatch later triggers a "no longer verified" banner and a deadline. |
122
+
123
+ Nothing in this table is typed into the AI session. The operator gathers it privately; the spell only
124
+ confirms each row is **ready** or **missing**.
125
+
126
+ ---
127
+
128
+ ## Step 2 — D-U-N-S (Organization enrollments, both stores)
129
+
130
+ A D-U-N-S Number is a free, nine-digit identifier that Dun & Bradstreet assigns to a business
131
+ location. Apple and Google both treat it as the authoritative proof that an entity exists, has legal
132
+ status (not a sole proprietorship or trade name), and sits at a given address. One number serves both
133
+ stores.
134
+
135
+ 1. **Look it up first.** Dun & Bradstreet may already have assigned one. Apple's enrollment flow
136
+ hands off to a D&B lookup (reachable from <https://developer.apple.com/enroll/> and from Apple's
137
+ D-U-N-S support page); searching by legal name and address either returns the existing number or
138
+ offers to request a new one.
139
+ 2. **If none exists, request one through that same handoff.** D&B then sends a Business Information
140
+ Report questionnaire (dozens of fields: general information, operations, history, finance). It asks
141
+ for ownership percentages, revenue, headcount and personal contact details. **The operator completes
142
+ it privately and returns it directly to D&B** — not in an AI chat, not in a repository, not in a
143
+ shared document. The spell's only job here is to note "questionnaire returned on YYYY-MM-DD" in the
144
+ tracker.
145
+ 3. **Budget the wait.** Apple's page says to allow up to 5 business days for D&B to issue the
146
+ number and that expediting does not shorten it; after that, allow up to 2 more business days for
147
+ Apple to receive the record from D&B before enrolling. If more than two weeks pass, email D&B.
148
+ D&B may phone to verify the business; an unanswered call can stall or decline the request, so keep
149
+ the phone number you gave them answered.
150
+ 4. **If a number already exists, check what is on file.** The name and address on the D&B record are
151
+ what both stores will display and verify against. Google in particular publishes the developer
152
+ address from the D-U-N-S record and offers only "confirm" or "contact D&B" — confirming first locks
153
+ in whatever is there (`MR-11`). Correct the record at D&B **before** enrolling, and expect
154
+ propagation to take days to weeks. A D&B record update request can itself be declined if D&B cannot
155
+ reach the business at the new address, so answer their call.
156
+ 5. **Name discipline.** The legal name you give D&B must be character-for-character the name on the
157
+ tax registration and the state filing. This is the single most common cause of a verification that
158
+ fails weeks later with no obvious error.
159
+
160
+ Apple's own statement of the timings: <https://developer.apple.com/support/D-U-N-S/>. The D-U-N-S
161
+ Number itself is business data, not a secret, but it is an identifier: keep it in the venture's private
162
+ records, never in a public repository or a spell.
163
+
164
+ ---
165
+
166
+ ## Step 3 — Apple Developer Program
167
+
168
+ Entry point: <https://developer.apple.com/enroll/>. Enrollment is also available through the Apple
169
+ Developer app on an iPhone or iPad (in some regions, only there), where the membership is an annual
170
+ auto-renewing subscription instead of a yearly purchase.
171
+
172
+ ### What the enrollment asks for
173
+
174
+ 1. Sign in with the dedicated Apple Account from Step 1 (two-factor authentication on; first and last
175
+ name fields hold the signer's **legal** name — an alias or company name there delays approval).
176
+ 2. Choose the entity type decided in Step 0.
177
+ 3. Organization: enter `{LLC_NAME}`, the D-U-N-S Number, the entity's address, the signer's title and
178
+ a work email on `{OPERATOR_DOMAIN}`, and the website. Apple pre-fills some fields from the D&B
179
+ record — read them rather than accepting them: the pre-filled address is whatever the D-U-N-S
180
+ requester gave D&B, which is not always the entity's registered address. The address Apple holds
181
+ here is the contract address; the public listing address is configured separately later, so choose
182
+ the one that matches the entity's records.
183
+ 4. Individual: enter the person's legal name, address (no P.O. box) and phone.
184
+ 5. Accept the agreement. Apple issues an **Enrollment ID** — record it in the tracker; every later
185
+ contact with Apple Developer Support needs it.
186
+
187
+ ### Verification
188
+
189
+ Apple Developer Support verifies the information before you can pay. For organizations this is a
190
+ human review, and it may produce a request for documents through a secure upload link: the signer's
191
+ government photo ID, the formation documents and latest state filing, and proof of the signer's
192
+ authority (the employment-verification letter from Step 1, self-signed by a sole owner). Notarized
193
+ copies may be requested. Once uploaded, Apple typically commits to a next step within about two
194
+ business days.
195
+
196
+ **Apple does not always send the next email.** Enrollments have sat for nearly two weeks with no
197
+ message because the document request was never sent, and the account page showing "pending" is not
198
+ evidence anyone is working on it. **If about five business days pass with no update, call Apple
199
+ Developer Support with the Enrollment ID** rather than waiting. Phone contact has produced the missing
200
+ document request on the spot; silence has not. Apple's contact options:
201
+ <https://developer.apple.com/contact/>.
202
+
203
+ ### Fee and activation
204
+
205
+ - **99 USD per membership year**, shown in local currency where Apple prices locally. Nonprofits,
206
+ accredited educational institutions and government entities may request a fee waiver. Source:
207
+ <https://developer.apple.com/programs/enroll/>.
208
+ - **Payment is prompted only after verification succeeds.** Apple emails that the enrollment is
209
+ verified and the membership can be purchased; nothing is charged before that. Pay with a card in the
210
+ signer's own name.
211
+ - Membership confirmation normally arrives within 24 hours of purchase. If it does not, contact Apple
212
+ with the Enrollment ID.
213
+ - Calendar the renewal date now. A lapsed membership removes the apps from sale.
214
+
215
+ ---
216
+
217
+ ## Step 4 — Google Play Console
218
+
219
+ Entry point: <https://play.google.com/console/signup>.
220
+
221
+ ### What the registration asks for
222
+
223
+ 1. Sign in with the dedicated Google Account from Step 1 and link (or create) a Google Payments
224
+ profile whose legal name and address exactly match the D-U-N-S record for an Organization, or the
225
+ person's ID for a Personal account.
226
+ 2. Choose the account type decided in Step 0.
227
+ 3. Enter the public **developer name** (`{BUSINESS_NAME}`; it can differ from the legal name and can
228
+ be changed later), the contact email and phone Google uses to reach you, the developer email (and,
229
+ for an Organization, the developer phone) shown on the public profile, and — for an Organization —
230
+ the D-U-N-S Number, organization phone and website.
231
+ 4. Accept the Developer Distribution Agreement and pay the fee. **Unlike Apple, Google charges before
232
+ verification**, and the fee is not refunded if the identity information is judged invalid — one more
233
+ reason to finish Step 1 first.
234
+
235
+ ### Fee
236
+
237
+ **25 USD, one time, per account.** No renewal. Prepaid cards are not accepted. Source:
238
+ <https://support.google.com/googleplay/android-developer/answer/6112435>.
239
+
240
+ ### Verification tasks
241
+
242
+ After payment the console lists verification tasks; nothing can be published until they are done,
243
+ and some unlock only after others complete. Expect, in roughly this order:
244
+
245
+ - **Contact details** — the contact email, contact phone and developer email (and developer phone
246
+ for an Organization) are each confirmed with a one-time code. They must keep working for the life of
247
+ the account; Google uses them for policy notices with deadlines.
248
+ - **Identity** — upload the enrolling person's government photo ID. Do this first; it has the longest
249
+ review queue.
250
+ - **Organization** (Organization accounts) — D-U-N-S match plus a registration document, typically
251
+ the state-issued certificate of business registration or the latest state filing showing the
252
+ current address. Google may also use the organization phone number to verify.
253
+ - **Website** — proven through Google Search Console domain verification. A DNS TXT record is the
254
+ method to prefer: it needs no site changes and works before the site is finished. Some registrars
255
+ offer a one-click connector that writes the record for you.
256
+ - **Phone numbers** — unlock only after identity and organization documents are approved; Google
257
+ states this explicitly, so a greyed-out phone task is not a defect.
258
+ - **Payment method** (only if the account will sell anything) — a small deposit challenge or bank
259
+ documents, which Google says can take up to five days.
260
+ - **Android device** — the account owner confirms access to an Android device through the Play
261
+ Console mobile app before publishing.
262
+
263
+ With every document from Step 1 ready, all of these have been completed in a single day; without
264
+ them, each becomes its own wait. Budget a week regardless.
265
+
266
+ ### Standing obligations
267
+
268
+ - The legal name and address in the Payments profile must keep matching the Dun & Bradstreet record.
269
+ When they drift, the console shows an "organization name or address is no longer verified" banner
270
+ with a deadline; missing it restricts the account and removes its apps from Google Play.
271
+ - Personal accounts created after 2023-11-13 must pass the 12-tester, 14-day closed test before
272
+ production access is granted — that is a launch-timeline item, not a formality. Organization
273
+ accounts do not carry this requirement.
274
+ - Google has been widening developer identity verification since 2023, including a program announced
275
+ in 2025 to extend it to apps distributed outside Google Play. Re-check the current scope at
276
+ <https://support.google.com/googleplay/android-developer/answer/13628312> when the "last verified"
277
+ date above is stale.
278
+
279
+ ---
280
+
281
+ ## Step 5 — Timeline
282
+
283
+ Plan the enrollments as two parallel tracks that share only Steps 1 and 2. Figures are planning
284
+ budgets, not promises; the stores publish few hard numbers.
285
+
286
+ | Phase | Budget | Driven by |
287
+ | --- | --- | --- |
288
+ | Gather documents, create accounts, build the website page (Step 1) | 1–3 days | The operator |
289
+ | D-U-N-S issuance or correction (Step 2) | 5 business days issuance + 2 for Apple to receive; up to 2 weeks before escalating; days to weeks for an address correction to propagate | Dun & Bradstreet |
290
+ | Apple verification, including a document request (Step 3) | 1–2 weeks when Apple is responsive; longer when nobody calls | Apple Developer Support |
291
+ | Apple payment and activation | Same day to 24 hours | Apple |
292
+ | Google registration and verification tasks (Step 4) | Same day to 1 week; payment-method verification up to 5 days | Google |
293
+ | Post-approval hardening (Step 6) | Half a day | The operator |
294
+
295
+ **Rules of thumb**
296
+
297
+ - An Apple Organization enrollment from zero (no D-U-N-S yet) realistically takes **two to four
298
+ weeks**. Google from zero takes **a few days to a week**.
299
+ - Start at least **one week earlier than the earliest date the accounts must be active** — and that
300
+ week is a buffer on top of the budgets above, not the budget itself. The first time a deadline is
301
+ missed is usually because the D&B wait was discovered during enrollment rather than before it.
302
+ - Not every blocker can be resolved in a session. When the next step is "wait for D&B" or "wait for
303
+ Apple", record the date in the tracker, set a reminder for the escalation point, and stop — do not
304
+ look for workarounds.
305
+
306
+ ---
307
+
308
+ ## Step 6 — Post-approval hardening
309
+
310
+ Do this the day each account is approved, before anyone builds against it.
311
+
312
+ - [ ] **Two-factor authentication** on every account that can reach the stores: the Apple Account,
313
+ the Google Account, and the mailbox on `{OPERATOR_DOMAIN}` that both accounts recover through.
314
+ Recovery phone numbers and backup codes belong to the business, not to one person's personal
315
+ devices only.
316
+ - [ ] **Account holder succession.** Both stores hang the whole account off the enrolling identity.
317
+ Record who the account holder / account owner is and how a co-founder regains access if that
318
+ person is unavailable — in the venture's private records, not in a repository.
319
+ - [ ] **Team roles, least privilege.** Apple: add teammates by role (Admin, App Manager, Developer,
320
+ Marketing, Finance) rather than sharing the account holder's sign-in; the Account Holder role
321
+ stays with the signer. Google: add users to the developer account with per-app or account-level
322
+ permissions; keep the owner role to one business-controlled account. Nobody shares credentials
323
+ for either store.
324
+ - [ ] **Certificate and key governance.** Decide, before the first build, who may create a
325
+ distribution certificate, an App Store Connect API key, or a Google Play service-account key;
326
+ where those secrets live (a secrets manager, never a repository or a chat); and when they rotate.
327
+ `spell-eas-store-deploy` assumes these decisions are already made.
328
+ - [ ] **Public-facing data check.** Confirm the seller name, the public developer email and (Google)
329
+ the public developer address are the ones you intend to publish — they are now live on the
330
+ store even before any app is.
331
+ - [ ] **Calendar the recurring obligations:** Apple's annual renewal; Google's verification-deadline
332
+ notices (watch the contact email); the D-U-N-S record whenever the entity's address or name
333
+ changes, since both stores re-verify against it.
334
+ - [ ] **Close the tracker:** approval dates, Enrollment ID, the account holder, where the private
335
+ records live. Then hand off to `spell-eas-store-deploy`.
336
+
337
+ ---
338
+
339
+ ## Output
340
+
341
+ The spell produces one **enrollment tracker**, kept in the venture's private operations records
342
+ (never in a public repository), with the two stores as independent sections:
343
+
344
+ ```markdown
345
+ ## Store developer accounts — {BUSINESS_NAME}
346
+
347
+ **Enrolling as:** Apple: Organization | Individual — <reason>. Google: Organization | Personal — <reason>.
348
+ **Deadline the accounts must be active by:** YYYY-MM-DD (buffer applied: start by YYYY-MM-DD)
349
+
350
+ ### Shared prerequisites
351
+ - [ ] Legal entity name confirmed against tax registration and state filing (punctuation included)
352
+ - [ ] D-U-N-S: existing / requested YYYY-MM-DD / issued YYYY-MM-DD; record checked (name, address)
353
+ - [ ] Dedicated store accounts created; 2FA on
354
+ - [ ] Website live on the entity's domain; work email on the domain
355
+ - [ ] Documents ready: photo ID, formation docs + latest state filing, authority letter
356
+
357
+ ### Apple Developer Program
358
+ - [ ] Enrollment submitted YYYY-MM-DD — Enrollment ID recorded privately
359
+ - [ ] Document request received / uploaded YYYY-MM-DD
360
+ - [ ] Escalation date (5 business days of silence): YYYY-MM-DD — called: yes/no
361
+ - [ ] Verified; fee paid YYYY-MM-DD; renewal calendared
362
+ - [ ] Hardened (Step 6)
363
+
364
+ ### Google Play Console
365
+ - [ ] Registered and fee paid YYYY-MM-DD
366
+ - [ ] Verification tasks: contact details / identity / organization / website / phone / payment method / device
367
+ - [ ] Hardened (Step 6)
368
+
369
+ ### Needs you
370
+ - <the one operator action currently blocking either track>
371
+ ```
372
+
373
+ ### Acceptance checklist
374
+
375
+ The spell did its job when:
376
+
377
+ - Both store sections of the tracker read "approved", with dates, and the two were never merged into
378
+ one status.
379
+ - The legal entity name is identical across the tax registration, the state filing, the D-U-N-S
380
+ record, both store accounts and the Google Payments profile.
381
+ - Every Step 6 box is checked, and the account holder succession is written down somewhere private.
382
+ - No identifier from the process — D-U-N-S Number, Enrollment ID, support case number, ID document,
383
+ revenue figure — appears in the repository, in this spell, or in the session transcript.
384
+
385
+ ### Reporting
386
+
387
+ End every run with a short report. The steps only the operator can take — filling in the D&B
388
+ questionnaire, uploading documents, paying a fee, phoning Apple — are required operator actions:
389
+
390
+ <!-- fragment:needs-you:start -->
391
+ **Needs you — required operator actions.** When this run leaves an action that only the operator can take, and the work is not correct or complete until it is taken, report it in one block at the very top of the final report, before every other section and before any optional next step:
392
+
393
+ ```markdown
394
+ ## ⚠ Needs you
395
+
396
+ - <exactly what to do: the command, the link, or the question> — <why the agent cannot do it itself>
397
+ ```
398
+
399
+ - **What belongs in it:** an action the work needs that only the operator can take — approving or merging a pull request, accepting a decision record, answering a question the work is waiting on, confirming a `guarded` push, running an interactive command such as `spell unblock-push`, or a step on an external platform the agent cannot reach. An optional suggestion, a next spell to run, or anything the agent could do itself is not a required action and stays out of the block.
400
+ - **One line per action.** Say exactly what to do, then, after the dash, why the agent cannot do it. Write the command, link or question out in full; never point elsewhere with "see above".
401
+ - **Never only among optional steps.** An action required for correctness is never listed only under next steps, suggestions, `Carry Forward` or `What's Next?`. It may be repeated there, but it always appears in this block.
402
+ - **Omit it when empty.** When nothing needs the operator, leave the block out entirely: no heading and no "None" line.
403
+ - **Every final report.** The block belongs in whatever report ends the run, including a report written when the spell stops early.
404
+ - Enforcement: explicitly advisory prose (ARC-023) — no check reads a spell's actual output for this block; it holds by these instructions alone.
405
+ <!-- fragment:needs-you:end -->
406
+
407
+ ---
408
+
409
+ ## Rules
410
+
411
+ - **The operator drives the browser.** The spell never signs in to a store, never enters a payment
412
+ method, and never fills in an identity or questionnaire form. It prepares, tracks and reminds.
413
+ - **Sensitive data stays out of the session.** Do not ask the operator to paste ID details,
414
+ ownership percentages, revenue, the D&B questionnaire, or support correspondence into the chat; do
415
+ not write identifiers (D-U-N-S Number, Enrollment ID, case numbers) into any repository file. The
416
+ tracker records *that* a step happened and *when*, not the data it carried.
417
+ - **Validate before starting.** Refuse to proceed past Step 0 until the entity type, the exact legal
418
+ name (or the individual's legal name) and the deadline are known. Refuse to start an Organization
419
+ enrollment for an entity that is not a legal entity — a DBA or trade name — and explain why.
420
+ - **Verify the facts against the live source when the "last verified" date is stale.** Fees and
421
+ verification rules are quoted here as of that date; where this spell and the store's own page
422
+ disagree, the store's page wins, and this spell gets updated.
423
+ - **Two trackers, not one.** Never report a single "store accounts: done". Each store's status is
424
+ stated on its own.
425
+ - **Stop cleanly on external waits.** When the critical path is D&B or Apple, record the date and
426
+ the escalation point and end the run; do not improvise alternatives to the wait.
427
+ - **Out of scope:** app records, bundle identifiers, certificates, provisioning, builds, listings,
428
+ submissions, and anything after the account is hardened. Point to `spell-eas-store-deploy`.
429
+
430
+ ## Related
431
+
432
+ - **Feeds into:** `spell-eas-store-deploy.md` — it begins with "confirm Apple Developer Program
433
+ enrollment is active" and "create the Google Play Console app listing", which is exactly where this
434
+ spell ends.
435
+ - **Consumes from:** `spell-summon-venture.md` — a venture's `legal.md`, when one exists, is where
436
+ the legal-entity facts this spell needs are first recorded.
437
+ - [Mobile Release Standards](../../.arcane/governance/mobile-release-standards.md) — `MR-11`, the
438
+ D-U-N-S-sourced public address.
@@ -0,0 +1,13 @@
1
+ ---
2
+ description: Use PROACTIVELY when a new venture or product needs an Apple Developer Program or Google Play Console developer account created, before any app can be built for the stores.
3
+ ---
4
+
5
+ # App Store Accounts
6
+
7
+ Invoke the Arcane `spell-app-store-accounts` spell workflow.
8
+
9
+ See the full prompt at `.arcane/spells/spell-app-store-accounts.md` for the complete workflow definition.
10
+
11
+ ---
12
+
13
+ @.arcane/spells/spell-app-store-accounts.md
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: Spell — App Store Accounts
3
+ description: Enroll a new business or product in the Apple Developer Program and Google Play Console — Organization vs Individual, the D-U-N-S prerequisite, verification documents, fees, realistic timelines, and post-approval hardening. Stops at approved, hardened accounts; shipping builds is spell-eas-store-deploy's job.
4
+ tagline: Open Apple and Google Play developer accounts
5
+ claude_description: Use PROACTIVELY when a new venture or product needs an Apple Developer Program or Google Play Console developer account created, before any app can be built for the stores.
6
+ argument-hint: Which store(s) to enroll in (apple, google, or both), who is enrolling (a legal entity or an individual), and any deadline by which the accounts must be active
7
+ agent: agent
8
+ ---
9
+
10
+ This prompt is the Arcane `spell-app-store-accounts` spell. Read [`.arcane/spells/spell-app-store-accounts.md`](../../.arcane/spells/spell-app-store-accounts.md) and follow it as the complete workflow.
package/dist/index.js CHANGED
@@ -1206,10 +1206,15 @@ var COMPONENTS = [
1206
1206
  ".arcane/spells/spell-compliance.md",
1207
1207
  ".github/prompts/spell-compliance.prompt.md",
1208
1208
  ".claude/commands/spell-compliance.md",
1209
- ".agents/skills/spell-compliance/SKILL.md"
1209
+ ".agents/skills/spell-compliance/SKILL.md",
1210
+ ".arcane/spells/spell-app-store-accounts.md",
1211
+ ".github/prompts/spell-app-store-accounts.prompt.md",
1212
+ ".claude/commands/spell-app-store-accounts.md",
1213
+ ".agents/skills/spell-app-store-accounts/SKILL.md"
1210
1214
  ],
1211
1215
  // spell-make-discoverable cites the first two for every EV-/WD- rationale;
1212
- // spell-eas-store-deploy and spell-compliance consume the last two.
1216
+ // spell-eas-store-deploy and spell-compliance consume the last two
1217
+ // (spell-app-store-accounts cites mobile-release-standards' MR-11 as well).
1213
1218
  requires: [
1214
1219
  "external-verification-standards",
1215
1220
  "web-discoverability-standards",