frontier-os-app-builder 1.0.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.
Files changed (55) hide show
  1. package/README.md +92 -0
  2. package/agents/fos-executor.md +460 -0
  3. package/agents/fos-plan-checker.md +386 -0
  4. package/agents/fos-planner.md +416 -0
  5. package/agents/fos-researcher.md +358 -0
  6. package/agents/fos-verifier.md +491 -0
  7. package/bin/fos-tools.cjs +794 -0
  8. package/bin/install.js +234 -0
  9. package/commands/fos/add-feature.md +29 -0
  10. package/commands/fos/discuss.md +31 -0
  11. package/commands/fos/execute.md +35 -0
  12. package/commands/fos/new-app.md +39 -0
  13. package/commands/fos/new-milestone.md +28 -0
  14. package/commands/fos/next.md +29 -0
  15. package/commands/fos/plan.md +37 -0
  16. package/commands/fos/ship.md +29 -0
  17. package/commands/fos/status.md +22 -0
  18. package/package.json +30 -0
  19. package/references/app-patterns.md +501 -0
  20. package/references/deployment.md +395 -0
  21. package/references/module-inference.md +349 -0
  22. package/references/sdk-surface.md +1622 -0
  23. package/references/verification-rules.md +404 -0
  24. package/templates/app/gitignore +25 -0
  25. package/templates/app/index.css +111 -0
  26. package/templates/app/index.html +19 -0
  27. package/templates/app/layout.tsx +45 -0
  28. package/templates/app/main-router.tsx +17 -0
  29. package/templates/app/main-simple.tsx +19 -0
  30. package/templates/app/package.json +36 -0
  31. package/templates/app/postcss.config.js +5 -0
  32. package/templates/app/router.tsx +22 -0
  33. package/templates/app/sdk-context.tsx +33 -0
  34. package/templates/app/test-setup.ts +19 -0
  35. package/templates/app/tsconfig.json +22 -0
  36. package/templates/app/vercel.json +127 -0
  37. package/templates/app/vite.config.ts +15 -0
  38. package/templates/state/context.md +248 -0
  39. package/templates/state/manifest.json +11 -0
  40. package/templates/state/plan.md +187 -0
  41. package/templates/state/project.md +118 -0
  42. package/templates/state/requirements.md +133 -0
  43. package/templates/state/roadmap.md +129 -0
  44. package/templates/state/state.md +131 -0
  45. package/templates/state/summary.md +273 -0
  46. package/workflows/add-feature.md +234 -0
  47. package/workflows/discuss.md +310 -0
  48. package/workflows/execute-plan.md +222 -0
  49. package/workflows/execute.md +338 -0
  50. package/workflows/new-app.md +331 -0
  51. package/workflows/new-milestone.md +258 -0
  52. package/workflows/next.md +157 -0
  53. package/workflows/plan.md +310 -0
  54. package/workflows/ship.md +296 -0
  55. package/workflows/status.md +145 -0
@@ -0,0 +1,310 @@
1
+ <purpose>
2
+ Research existing Frontier OS apps for relevant patterns, then create detailed execution plans for a phase. Uses a three-agent pipeline: researcher -> planner -> plan-checker, with a revision loop if the checker finds issues. Produces RESEARCH.md and one or more PLAN.md files that the execute workflow will consume.
3
+ </purpose>
4
+
5
+ <required_reading>
6
+ Read all files referenced by the invoking prompt's execution_context before starting.
7
+ </required_reading>
8
+
9
+ <available_agent_types>
10
+ Valid FOS subagent types (use exact names):
11
+ - fos-researcher — Researches existing Frontier OS apps for patterns
12
+ - fos-planner — Creates detailed execution plans from research + context
13
+ - fos-plan-checker — Reviews plan quality before execution
14
+ - fos-executor — Executes plan tasks, commits, creates SUMMARY.md
15
+ - fos-verifier — Verifies phase completion, checks quality gates
16
+ </available_agent_types>
17
+
18
+ <process>
19
+
20
+ <step name="initialize" priority="first">
21
+ **Phase number from argument (required).**
22
+
23
+ ```bash
24
+ INIT=$(node "$HOME/.claude/frontier-os-app-builder/bin/fos-tools.cjs" init plan "$PHASE")
25
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
26
+ ```
27
+
28
+ Parse JSON for: `phase`, `phase_dir`, `has_context`, `has_research`, `existing_plans`, `manifest`, `state`, `project_path`, `roadmap_path`, `template_home`, `version`.
29
+
30
+ **If .frontier-app/ not found:**
31
+ ```
32
+ Error: No .frontier-app/ directory found.
33
+
34
+ Run `/fos:new-app` first to initialize your Frontier OS app.
35
+ ```
36
+ Exit workflow.
37
+
38
+ **If `phase_dir` is null:** Create the phase directory:
39
+ ```bash
40
+ PADDED=$(printf "%02d" $PHASE)
41
+ # Extract phase name from ROADMAP.md
42
+ mkdir -p ".frontier-app/phases/${PADDED}-${PHASE_SLUG}"
43
+ ```
44
+
45
+ **If `has_context` is false and PHASE > 1:**
46
+ ```
47
+ Warning: No CONTEXT.md for Phase [N]. Planning without user context may
48
+ produce plans that miss important decisions.
49
+
50
+ Recommended: Run `/fos:discuss [N]` first to capture implementation decisions.
51
+ Continue anyway? (y/n)
52
+ ```
53
+
54
+ **If `existing_plans` is not empty:**
55
+ Use AskUserQuestion:
56
+ - header: "Existing Plans"
57
+ - question: "Phase [N] already has [count] plan(s). What do you want to do?"
58
+ - options:
59
+ - "Replan" — Delete existing plans and create new ones
60
+ - "View plans" — Show existing plans before deciding
61
+ - "Keep them" — Skip planning, proceed to execution
62
+
63
+ **If "Keep them":** Exit with next-up `/fos:execute N`.
64
+ **If "Replan":** Continue (plans will be overwritten).
65
+ </step>
66
+
67
+ <step name="spawn_researcher">
68
+ **Spawn fos-researcher to study existing Frontier OS apps.**
69
+
70
+ The researcher examines production apps at `~/frontieros/frontier-os-app-*` to find patterns relevant to this phase.
71
+
72
+ ```
73
+ Task(
74
+ subagent_type="fos-researcher",
75
+ prompt="
76
+ <objective>
77
+ Research existing Frontier OS apps for patterns relevant to Phase $PHASE: $PHASE_NAME.
78
+ Produce RESEARCH.md with concrete, copy-ready findings for the planner.
79
+ </objective>
80
+
81
+ <execution_context>
82
+ @$HOME/.claude/frontier-os-app-builder/agents/fos-researcher.md
83
+ @$HOME/.claude/frontier-os-app-builder/references/sdk-surface.md
84
+ @$HOME/.claude/frontier-os-app-builder/references/app-patterns.md
85
+ </execution_context>
86
+
87
+ <files_to_read>
88
+ Read these files at execution start using the Read tool:
89
+ - .frontier-app/PROJECT.md (App vision, SDK modules, constraints)
90
+ - .frontier-app/manifest.json (Declared permissions and metadata)
91
+ - .frontier-app/ROADMAP.md (Phase goal and requirements)
92
+ - $PHASE_DIR/$PADDED-CONTEXT.md (User decisions, if exists)
93
+ </files_to_read>
94
+
95
+ <output>
96
+ Write RESEARCH.md to: $PHASE_DIR/$PADDED-RESEARCH.md
97
+ </output>
98
+ "
99
+ )
100
+ ```
101
+
102
+ **After researcher completes:** Verify RESEARCH.md was created:
103
+ ```bash
104
+ test -f "$PHASE_DIR/$PADDED-RESEARCH.md" && echo "RESEARCH.md created" || echo "RESEARCH.md missing"
105
+ ```
106
+
107
+ **If Phase 1 (Scaffold):** Research is minimal — the scaffold pattern is standardized. The researcher should focus on confirming the latest SDK initialization pattern and any recent changes to production app structure. Keep research lightweight.
108
+ </step>
109
+
110
+ <step name="spawn_planner">
111
+ **Spawn fos-planner to create execution plans.**
112
+
113
+ The planner reads RESEARCH.md + CONTEXT.md + PROJECT.md and creates one or more PLAN.md files.
114
+
115
+ ```
116
+ Task(
117
+ subagent_type="fos-planner",
118
+ prompt="
119
+ <objective>
120
+ Create execution plans for Phase $PHASE: $PHASE_NAME.
121
+ Each plan is a vertical slice — model + logic + UI for one coherent piece of functionality.
122
+ Plans must be specific enough for an executor agent to implement without asking questions.
123
+ </objective>
124
+
125
+ <execution_context>
126
+ @$HOME/.claude/frontier-os-app-builder/templates/state/plan.md
127
+ @$HOME/.claude/frontier-os-app-builder/references/sdk-surface.md
128
+ @$HOME/.claude/frontier-os-app-builder/references/app-patterns.md
129
+ @$HOME/.claude/frontier-os-app-builder/references/verification-rules.md
130
+ </execution_context>
131
+
132
+ <files_to_read>
133
+ Read these files at execution start using the Read tool:
134
+ - .frontier-app/PROJECT.md (App vision, SDK modules, constraints)
135
+ - .frontier-app/manifest.json (Declared permissions and metadata)
136
+ - .frontier-app/ROADMAP.md (Phase goal, success criteria, requirements)
137
+ - $PHASE_DIR/$PADDED-RESEARCH.md (Research findings from production apps)
138
+ - $PHASE_DIR/$PADDED-CONTEXT.md (User decisions, if exists)
139
+ </files_to_read>
140
+
141
+ <planning_rules>
142
+ - Phase 1 (Scaffold): ALWAYS exactly 1 plan. Uses templates from templates/app/.
143
+ - Feature phases: 1-3 plans. Prefer fewer, larger plans over many small ones.
144
+ - Each plan gets 2-3 tasks. Tasks are atomic — one clear action each.
145
+ - Wave 1 = no dependencies. Wave 2 = depends on Wave 1. Usually 1 wave is enough.
146
+ - Vertical slices: Plan 01 = Event listing (hook + component + route), NOT Plan 01 = All hooks.
147
+ - SDK methods: Specify exact import, method signature, expected return type.
148
+ - Every plan MUST include verification tasks (build, typecheck, dev server).
149
+ - Every plan MUST reference the execute-plan workflow in execution_context.
150
+ - Use the plan template frontmatter format exactly.
151
+ </planning_rules>
152
+
153
+ <output>
154
+ Write plan files to: $PHASE_DIR/${PADDED}-01-PLAN.md, ${PADDED}-02-PLAN.md, etc.
155
+ </output>
156
+ "
157
+ )
158
+ ```
159
+
160
+ **After planner completes:** Verify plans were created:
161
+ ```bash
162
+ ls "$PHASE_DIR/"*-PLAN.md 2>/dev/null | wc -l
163
+ ```
164
+ </step>
165
+
166
+ <step name="spawn_plan_checker">
167
+ **Spawn fos-plan-checker to verify plan quality.**
168
+
169
+ ```
170
+ Task(
171
+ subagent_type="fos-plan-checker",
172
+ prompt="
173
+ <objective>
174
+ Review the plans for Phase $PHASE: $PHASE_NAME.
175
+ Check for completeness, correctness, and executability.
176
+ Return PASS or FAIL with specific feedback.
177
+ </objective>
178
+
179
+ <files_to_read>
180
+ Read these files at execution start using the Read tool:
181
+ - .frontier-app/PROJECT.md (App vision — verify plans align)
182
+ - .frontier-app/ROADMAP.md (Phase requirements — verify all covered)
183
+ - $PHASE_DIR/$PADDED-CONTEXT.md (User decisions — verify plans honor them)
184
+ - All PLAN.md files in $PHASE_DIR/
185
+ </files_to_read>
186
+
187
+ <check_criteria>
188
+ 1. **Coverage:** Do plans address all phase requirements from ROADMAP.md?
189
+ 2. **Context honor:** Do plans respect all decisions in CONTEXT.md? No locked decisions overridden?
190
+ 3. **SDK correctness:** Are SDK methods referenced with correct signatures and permissions?
191
+ 4. **Task specificity:** Is every task concrete enough to implement without ambiguity?
192
+ 5. **Verification:** Does every plan include build + typecheck verification?
193
+ 6. **Dependencies:** Are wave assignments correct? No circular deps?
194
+ 7. **File conflicts:** Do any plans modify the same files in the same wave?
195
+ 8. **Frontier compliance:** Dark theme, iframe detection, SdkProvider wrapping — all covered?
196
+ </check_criteria>
197
+
198
+ <output>
199
+ Return a structured result:
200
+ - verdict: PASS or FAIL
201
+ - issues: list of specific issues found (if FAIL)
202
+ - suggestions: optional improvements (even if PASS)
203
+ </output>
204
+ "
205
+ )
206
+ ```
207
+ </step>
208
+
209
+ <step name="revision_loop">
210
+ **If plan-checker returns FAIL: revise plans.**
211
+
212
+ Maximum 3 revision loops. Each loop:
213
+
214
+ 1. Parse the checker's feedback — extract specific issues
215
+ 2. Re-spawn the planner with the feedback:
216
+
217
+ ```
218
+ Task(
219
+ subagent_type="fos-planner",
220
+ prompt="
221
+ <objective>
222
+ REVISE execution plans for Phase $PHASE: $PHASE_NAME.
223
+ The plan-checker found issues that must be fixed.
224
+ </objective>
225
+
226
+ <feedback>
227
+ [Paste specific issues from plan-checker]
228
+ </feedback>
229
+
230
+ <files_to_read>
231
+ - All existing PLAN.md files in $PHASE_DIR/ (read and revise in place)
232
+ - .frontier-app/PROJECT.md
233
+ - .frontier-app/ROADMAP.md
234
+ - $PHASE_DIR/$PADDED-CONTEXT.md
235
+ - $PHASE_DIR/$PADDED-RESEARCH.md
236
+ </files_to_read>
237
+
238
+ <output>
239
+ Overwrite the existing PLAN.md files with corrected versions.
240
+ </output>
241
+ "
242
+ )
243
+ ```
244
+
245
+ 3. Re-spawn plan-checker on revised plans
246
+ 4. If PASS: break loop. If FAIL again: loop (up to 3 times)
247
+
248
+ **If still FAIL after 3 loops:**
249
+ ```
250
+ Warning: Plan-checker found issues after 3 revision attempts.
251
+ Remaining issues:
252
+ - [issue 1]
253
+ - [issue 2]
254
+
255
+ You can:
256
+ - Proceed to execution with known issues
257
+ - Manually review and fix plans in $PHASE_DIR/
258
+ - Re-run /fos:plan $PHASE to start fresh
259
+ ```
260
+ </step>
261
+
262
+ <step name="commit_and_update_state">
263
+ **Commit planning artifacts and update state.**
264
+
265
+ ```bash
266
+ git add ".frontier-app/phases/"
267
+ git commit -m "docs: Phase $PHASE plans — [plan_count] plan(s) created
268
+
269
+ Phase: $PHASE_NAME
270
+ Plans: [list of plan names/objectives]
271
+ Checker: [PASS/FAIL with loop count]"
272
+ ```
273
+
274
+ **Update STATE.md:**
275
+ ```bash
276
+ node "$HOME/.claude/frontier-os-app-builder/bin/fos-tools.cjs" state update status "ready-to-execute"
277
+ node "$HOME/.claude/frontier-os-app-builder/bin/fos-tools.cjs" state update next_action "/fos:execute $PHASE"
278
+ node "$HOME/.claude/frontier-os-app-builder/bin/fos-tools.cjs" state update phase "$PHASE"
279
+ ```
280
+
281
+ Also update STATE.md body:
282
+ - Last activity: [today] — Planned Phase [N]: [count] plans
283
+ - Session Continuity: next-command = /fos:execute N
284
+ </step>
285
+
286
+ <step name="next_up">
287
+ **Display completion and next step.**
288
+
289
+ ```
290
+ ## Phase [N]: [Name] — Plans Created
291
+
292
+ Created [count] plan(s):
293
+
294
+ | Plan | Wave | Objective | Tasks |
295
+ |------|------|-----------|-------|
296
+ | $PADDED-01 | 1 | [objective] | [count] |
297
+ | $PADDED-02 | 1 | [objective] | [count] |
298
+
299
+ Plan checker: [PASS / PASS after N revisions]
300
+
301
+ ────────────────────────────────────────
302
+ Next up: `/fos:execute [N]`
303
+ Execute the plans — build the code, commit atomically, verify results.
304
+
305
+ Run `/clear` first to free your context window.
306
+ ────────────────────────────────────────
307
+ ```
308
+ </step>
309
+
310
+ </process>
@@ -0,0 +1,296 @@
1
+ <purpose>
2
+ Deploy the Frontier OS app to Vercel and optionally register it in the Frontier app store. Runs preflight checks (build, typecheck, tests), deploys to Vercel, and guides through app registration via the ThirdParty SDK module.
3
+ </purpose>
4
+
5
+ <required_reading>
6
+ Read all files referenced by the invoking prompt's execution_context before starting.
7
+ </required_reading>
8
+
9
+ <available_agent_types>
10
+ Valid FOS subagent types (use exact names):
11
+ - fos-researcher — Researches existing Frontier OS apps for patterns
12
+ - fos-planner — Creates detailed execution plans from research + context
13
+ - fos-plan-checker — Reviews plan quality before execution
14
+ - fos-executor — Executes plan tasks, commits, creates SUMMARY.md
15
+ - fos-verifier — Verifies phase completion, checks quality gates
16
+ </available_agent_types>
17
+
18
+ <process>
19
+
20
+ <step name="initialize" priority="first">
21
+ **Load project state and verify readiness.**
22
+
23
+ ```bash
24
+ INIT=$(node "$HOME/.claude/frontier-os-app-builder/bin/fos-tools.cjs" init ship)
25
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
26
+ ```
27
+
28
+ Parse JSON for: `manifest`, `state`, `all_verified`, `project_path`, `roadmap_path`, `version`.
29
+
30
+ **If .frontier-app/ not found:**
31
+ ```
32
+ Error: No .frontier-app/ directory found.
33
+
34
+ Run `/fos:new-app` first to initialize your Frontier OS app.
35
+ ```
36
+ Exit workflow.
37
+
38
+ **If `all_verified` is false:**
39
+ ```
40
+ Warning: Not all phases have been verified.
41
+
42
+ Recommended: Run `/fos:status` to see which phases are incomplete.
43
+ Continue with deployment anyway? Some features may be missing.
44
+ ```
45
+
46
+ Use AskUserQuestion:
47
+ - header: "Incomplete Phases"
48
+ - question: "Deploy with incomplete phases?"
49
+ - options:
50
+ - "Deploy anyway" — Ship what's built
51
+ - "Check status first" — Run /fos:status to see what's missing
52
+ - "Cancel" — Go back and finish phases
53
+
54
+ **If "Check status first" or "Cancel":** Exit workflow.
55
+
56
+ **Display ship summary:**
57
+ ```
58
+ ## Ship: [App Name]
59
+
60
+ **Description:** [from manifest]
61
+ **SDK Modules:** [from manifest]
62
+ **Permissions:** [count]
63
+ **Dev Port:** [from manifest]
64
+ ```
65
+ </step>
66
+
67
+ <step name="preflight_checks">
68
+ **Run all preflight checks. ALL must pass before deployment.**
69
+
70
+ ```bash
71
+ echo "=== Preflight Checks ==="
72
+
73
+ # 1. TypeScript compilation
74
+ echo "--- TypeScript ---"
75
+ npx tsc --noEmit 2>&1
76
+ TSC_STATUS=$?
77
+
78
+ # 2. Vite build
79
+ echo "--- Build ---"
80
+ npm run build 2>&1
81
+ BUILD_STATUS=$?
82
+
83
+ # 3. Tests (if configured)
84
+ echo "--- Tests ---"
85
+ if grep -q '"test"' package.json 2>/dev/null; then
86
+ npx vitest run --reporter=verbose 2>&1
87
+ TEST_STATUS=$?
88
+ else
89
+ echo "No test script found — skipping"
90
+ TEST_STATUS=0
91
+ fi
92
+
93
+ # 4. FOS structure validation
94
+ echo "--- Structure ---"
95
+ node "$HOME/.claude/frontier-os-app-builder/bin/fos-tools.cjs" validate structure
96
+ STRUCT_STATUS=$?
97
+
98
+ # 5. FOS permissions validation
99
+ echo "--- Permissions ---"
100
+ node "$HOME/.claude/frontier-os-app-builder/bin/fos-tools.cjs" validate permissions
101
+ PERMS_STATUS=$?
102
+ ```
103
+
104
+ **Report results:**
105
+ ```
106
+ ## Preflight Results
107
+
108
+ | Check | Status |
109
+ |-------|--------|
110
+ | TypeScript | [PASS/FAIL] |
111
+ | Build | [PASS/FAIL] |
112
+ | Tests | [PASS/FAIL/SKIPPED] |
113
+ | Structure | [PASS/FAIL] |
114
+ | Permissions | [PASS/FAIL] |
115
+ ```
116
+
117
+ **If ANY check fails:**
118
+ ```
119
+ Preflight failed. Fix the issues above before deploying.
120
+
121
+ [For TypeScript errors: show the specific errors]
122
+ [For build errors: show the Vite error output]
123
+ [For test failures: show failing test names]
124
+ [For structure issues: list missing files or patterns]
125
+ [For permission issues: list missing permissions]
126
+ ```
127
+
128
+ **Do NOT proceed to deployment if preflight fails.** The user must fix issues and re-run `/fos:ship`.
129
+ </step>
130
+
131
+ <step name="check_vercel_cli">
132
+ **Check if Vercel CLI is available.**
133
+
134
+ ```bash
135
+ which vercel 2>/dev/null && vercel --version 2>/dev/null
136
+ ```
137
+
138
+ **If Vercel CLI not found:**
139
+ ```
140
+ Vercel CLI is not installed. Install it to deploy:
141
+
142
+ npm i -g vercel
143
+
144
+ Then log in:
145
+
146
+ vercel login
147
+
148
+ After that, re-run `/fos:ship`.
149
+ ```
150
+
151
+ Use AskUserQuestion:
152
+ - header: "Vercel CLI"
153
+ - question: "Vercel CLI is not installed. What do you want to do?"
154
+ - options:
155
+ - "Install it now" — Run `npm i -g vercel` and continue
156
+ - "Skip deployment" — Just run preflight, I'll deploy manually
157
+ - "Cancel" — Exit
158
+
159
+ **If "Install it now":**
160
+ ```bash
161
+ npm i -g vercel
162
+ echo "Vercel installed. Run 'vercel login' to authenticate, then re-run /fos:ship."
163
+ ```
164
+ Exit — user needs to authenticate manually.
165
+
166
+ **If "Skip deployment":** Jump to update_state step, mark as "preflight-passed".
167
+ </step>
168
+
169
+ <step name="deploy_to_vercel">
170
+ **Deploy to Vercel production.**
171
+
172
+ ```bash
173
+ # Check if already linked to a Vercel project
174
+ if [ -d ".vercel" ]; then
175
+ echo "Vercel project already linked."
176
+ else
177
+ echo "First deployment — Vercel will prompt for project setup."
178
+ fi
179
+
180
+ # Deploy to production
181
+ vercel --prod 2>&1
182
+ DEPLOY_STATUS=$?
183
+ ```
184
+
185
+ **If deployment succeeds:**
186
+ Extract the deployment URL from output.
187
+
188
+ ```
189
+ ## Deployed
190
+
191
+ URL: [deployment URL]
192
+ Status: Live
193
+
194
+ The app is now accessible at the URL above.
195
+ ```
196
+
197
+ **If deployment fails:**
198
+ ```
199
+ Deployment failed. Common issues:
200
+ - Not authenticated: run `vercel login`
201
+ - Build error on Vercel: check the build output above
202
+ - Missing environment variables: check Vercel dashboard
203
+ ```
204
+ </step>
205
+
206
+ <step name="app_registration">
207
+ **Optionally register the app in the Frontier app store.**
208
+
209
+ Use AskUserQuestion:
210
+ - header: "App Store"
211
+ - question: "Register this app in the Frontier app store? This makes it discoverable to Frontier OS users."
212
+ - options:
213
+ - "Register now" — Guide me through ThirdParty.createApp()
214
+ - "Later" — Skip registration, I'll do it manually
215
+ - "Not needed" — This is a private/internal app
216
+
217
+ **If "Register now":**
218
+ ```
219
+ ## App Registration
220
+
221
+ To register your app in the Frontier app store, you'll need to call the
222
+ ThirdParty SDK module's createApp() method. Here's how:
223
+
224
+ 1. Open the Frontier OS developer portal
225
+ 2. Navigate to "My Apps"
226
+ 3. Click "Register New App"
227
+ 4. Fill in:
228
+ - **Name:** [from manifest]
229
+ - **Description:** [from manifest]
230
+ - **URL:** [deployment URL from step 4]
231
+ - **Permissions:** [from manifest — the permissions your app requests]
232
+
233
+ Or use the SDK programmatically:
234
+ ```typescript
235
+ const thirdParty = sdk.getThirdParty();
236
+ await thirdParty.createApp({
237
+ name: "[app name]",
238
+ description: "[description]",
239
+ url: "[deployment URL]",
240
+ permissions: [/* from manifest */]
241
+ });
242
+ ```
243
+
244
+ Note: App registration requires developer access. If you don't have it,
245
+ contact a Frontier OS admin.
246
+ ```
247
+
248
+ **If "Later" or "Not needed":** Continue to update_state.
249
+ </step>
250
+
251
+ <step name="update_state">
252
+ **Update STATE.md for ship completion.**
253
+
254
+ ```bash
255
+ node "$HOME/.claude/frontier-os-app-builder/bin/fos-tools.cjs" state update status "shipped"
256
+ node "$HOME/.claude/frontier-os-app-builder/bin/fos-tools.cjs" state update next_action "/fos:new-milestone"
257
+ ```
258
+
259
+ Update STATE.md body:
260
+ - Status: Shipped
261
+ - Last activity: [today] — Deployed to Vercel
262
+ - Deployment URL: [URL if available]
263
+ - App store: [Registered / Not registered]
264
+ - Next command: /fos:new-milestone or /fos:add-feature
265
+
266
+ ```bash
267
+ git add .frontier-app/
268
+ git commit -m "docs: v1 shipped — deployed to Vercel
269
+
270
+ URL: [deployment URL or 'manual deployment']
271
+ Preflight: all checks passed
272
+ App store: [registered/skipped]"
273
+ ```
274
+ </step>
275
+
276
+ <step name="next_up">
277
+ **Display completion and next steps.**
278
+
279
+ ```
280
+ ## Shipped: [App Name]
281
+
282
+ [If deployed:] Live at: [URL]
283
+ [If skipped:] Preflight passed — deploy manually when ready.
284
+
285
+ Milestone v1 is complete. What's next?
286
+
287
+ ────────────────────────────────────────
288
+ Next up: `/fos:new-milestone` or `/fos:add-feature`
289
+ Start v2 with new features, or add a feature to the current milestone.
290
+
291
+ Run `/clear` first to free your context window.
292
+ ────────────────────────────────────────
293
+ ```
294
+ </step>
295
+
296
+ </process>