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.
- package/README.md +92 -0
- package/agents/fos-executor.md +460 -0
- package/agents/fos-plan-checker.md +386 -0
- package/agents/fos-planner.md +416 -0
- package/agents/fos-researcher.md +358 -0
- package/agents/fos-verifier.md +491 -0
- package/bin/fos-tools.cjs +794 -0
- package/bin/install.js +234 -0
- package/commands/fos/add-feature.md +29 -0
- package/commands/fos/discuss.md +31 -0
- package/commands/fos/execute.md +35 -0
- package/commands/fos/new-app.md +39 -0
- package/commands/fos/new-milestone.md +28 -0
- package/commands/fos/next.md +29 -0
- package/commands/fos/plan.md +37 -0
- package/commands/fos/ship.md +29 -0
- package/commands/fos/status.md +22 -0
- package/package.json +30 -0
- package/references/app-patterns.md +501 -0
- package/references/deployment.md +395 -0
- package/references/module-inference.md +349 -0
- package/references/sdk-surface.md +1622 -0
- package/references/verification-rules.md +404 -0
- package/templates/app/gitignore +25 -0
- package/templates/app/index.css +111 -0
- package/templates/app/index.html +19 -0
- package/templates/app/layout.tsx +45 -0
- package/templates/app/main-router.tsx +17 -0
- package/templates/app/main-simple.tsx +19 -0
- package/templates/app/package.json +36 -0
- package/templates/app/postcss.config.js +5 -0
- package/templates/app/router.tsx +22 -0
- package/templates/app/sdk-context.tsx +33 -0
- package/templates/app/test-setup.ts +19 -0
- package/templates/app/tsconfig.json +22 -0
- package/templates/app/vercel.json +127 -0
- package/templates/app/vite.config.ts +15 -0
- package/templates/state/context.md +248 -0
- package/templates/state/manifest.json +11 -0
- package/templates/state/plan.md +187 -0
- package/templates/state/project.md +118 -0
- package/templates/state/requirements.md +133 -0
- package/templates/state/roadmap.md +129 -0
- package/templates/state/state.md +131 -0
- package/templates/state/summary.md +273 -0
- package/workflows/add-feature.md +234 -0
- package/workflows/discuss.md +310 -0
- package/workflows/execute-plan.md +222 -0
- package/workflows/execute.md +338 -0
- package/workflows/new-app.md +331 -0
- package/workflows/new-milestone.md +258 -0
- package/workflows/next.md +157 -0
- package/workflows/plan.md +310 -0
- package/workflows/ship.md +296 -0
- package/workflows/status.md +145 -0
package/bin/install.js
ADDED
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
const fs = require('fs');
|
|
5
|
+
const path = require('path');
|
|
6
|
+
|
|
7
|
+
// ─────────────────────────────────────────────
|
|
8
|
+
// Frontier OS App Builder — Installer
|
|
9
|
+
// Copies commands, agents, workflows, references,
|
|
10
|
+
// and templates into ~/.claude/
|
|
11
|
+
// ─────────────────────────────────────────────
|
|
12
|
+
|
|
13
|
+
const VERSION = '1.0.0';
|
|
14
|
+
const PRODUCT = 'frontier-os-app-builder';
|
|
15
|
+
|
|
16
|
+
// Source: this repo
|
|
17
|
+
const SRC_ROOT = path.resolve(__dirname, '..');
|
|
18
|
+
|
|
19
|
+
// Target: ~/.claude/
|
|
20
|
+
const CLAUDE_HOME = path.join(require('os').homedir(), '.claude');
|
|
21
|
+
const FOS_HOME = path.join(CLAUDE_HOME, PRODUCT);
|
|
22
|
+
|
|
23
|
+
// Manifest tracking file
|
|
24
|
+
const MANIFEST_PATH = path.join(FOS_HOME, 'fos-file-manifest.json');
|
|
25
|
+
|
|
26
|
+
// ── Helpers ──────────────────────────────────
|
|
27
|
+
|
|
28
|
+
function log(msg) { console.log(` ${msg}`); }
|
|
29
|
+
function success(msg) { console.log(`\x1b[32m ✓\x1b[0m ${msg}`); }
|
|
30
|
+
function warn(msg) { console.log(`\x1b[33m !\x1b[0m ${msg}`); }
|
|
31
|
+
function err(msg) { console.error(`\x1b[31m ✗\x1b[0m ${msg}`); }
|
|
32
|
+
|
|
33
|
+
function ensureDir(dir) {
|
|
34
|
+
if (!fs.existsSync(dir)) {
|
|
35
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function copyFile(src, dest) {
|
|
40
|
+
ensureDir(path.dirname(dest));
|
|
41
|
+
fs.copyFileSync(src, dest);
|
|
42
|
+
return dest;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function copyDir(srcDir, destDir) {
|
|
46
|
+
const copied = [];
|
|
47
|
+
if (!fs.existsSync(srcDir)) return copied;
|
|
48
|
+
|
|
49
|
+
for (const entry of fs.readdirSync(srcDir, { withFileTypes: true })) {
|
|
50
|
+
const srcPath = path.join(srcDir, entry.name);
|
|
51
|
+
const destPath = path.join(destDir, entry.name);
|
|
52
|
+
|
|
53
|
+
if (entry.isDirectory()) {
|
|
54
|
+
copied.push(...copyDir(srcPath, destPath));
|
|
55
|
+
} else if (entry.isFile()) {
|
|
56
|
+
copyFile(srcPath, destPath);
|
|
57
|
+
copied.push(destPath);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return copied;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function removeFile(filePath) {
|
|
64
|
+
if (fs.existsSync(filePath)) {
|
|
65
|
+
fs.unlinkSync(filePath);
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function removeDirIfEmpty(dir) {
|
|
72
|
+
if (fs.existsSync(dir)) {
|
|
73
|
+
const entries = fs.readdirSync(dir);
|
|
74
|
+
if (entries.length === 0) {
|
|
75
|
+
fs.rmdirSync(dir);
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// ── Install ──────────────────────────────────
|
|
83
|
+
|
|
84
|
+
function install() {
|
|
85
|
+
console.log(`\n\x1b[1mFrontier OS App Builder v${VERSION}\x1b[0m\n`);
|
|
86
|
+
|
|
87
|
+
// Check ~/.claude/ exists
|
|
88
|
+
if (!fs.existsSync(CLAUDE_HOME)) {
|
|
89
|
+
err(`~/.claude/ not found. Is Claude Code installed?`);
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const installedFiles = [];
|
|
94
|
+
|
|
95
|
+
// 1. Commands → ~/.claude/commands/fos/
|
|
96
|
+
log('Installing commands...');
|
|
97
|
+
const cmdSrc = path.join(SRC_ROOT, 'commands', 'fos');
|
|
98
|
+
const cmdDest = path.join(CLAUDE_HOME, 'commands', 'fos');
|
|
99
|
+
const cmdFiles = copyDir(cmdSrc, cmdDest);
|
|
100
|
+
installedFiles.push(...cmdFiles);
|
|
101
|
+
success(`${cmdFiles.length} commands → ~/.claude/commands/fos/`);
|
|
102
|
+
|
|
103
|
+
// 2. Agents → ~/.claude/agents/
|
|
104
|
+
log('Installing agents...');
|
|
105
|
+
const agentSrc = path.join(SRC_ROOT, 'agents');
|
|
106
|
+
const agentDest = path.join(CLAUDE_HOME, 'agents');
|
|
107
|
+
if (fs.existsSync(agentSrc)) {
|
|
108
|
+
for (const file of fs.readdirSync(agentSrc)) {
|
|
109
|
+
if (file.startsWith('fos-') && file.endsWith('.md')) {
|
|
110
|
+
const dest = copyFile(path.join(agentSrc, file), path.join(agentDest, file));
|
|
111
|
+
installedFiles.push(dest);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const agentCount = installedFiles.filter(f => f.includes('/agents/fos-')).length;
|
|
116
|
+
success(`${agentCount} agents → ~/.claude/agents/`);
|
|
117
|
+
|
|
118
|
+
// 3. Workflows → ~/.claude/frontier-os-app-builder/workflows/
|
|
119
|
+
log('Installing workflows...');
|
|
120
|
+
const wfSrc = path.join(SRC_ROOT, 'workflows');
|
|
121
|
+
const wfDest = path.join(FOS_HOME, 'workflows');
|
|
122
|
+
const wfFiles = copyDir(wfSrc, wfDest);
|
|
123
|
+
installedFiles.push(...wfFiles);
|
|
124
|
+
success(`${wfFiles.length} workflows → ~/.claude/${PRODUCT}/workflows/`);
|
|
125
|
+
|
|
126
|
+
// 4. References → ~/.claude/frontier-os-app-builder/references/
|
|
127
|
+
log('Installing references...');
|
|
128
|
+
const refSrc = path.join(SRC_ROOT, 'references');
|
|
129
|
+
const refDest = path.join(FOS_HOME, 'references');
|
|
130
|
+
const refFiles = copyDir(refSrc, refDest);
|
|
131
|
+
installedFiles.push(...refFiles);
|
|
132
|
+
success(`${refFiles.length} references → ~/.claude/${PRODUCT}/references/`);
|
|
133
|
+
|
|
134
|
+
// 5. Templates → ~/.claude/frontier-os-app-builder/templates/
|
|
135
|
+
log('Installing templates...');
|
|
136
|
+
const tplSrc = path.join(SRC_ROOT, 'templates');
|
|
137
|
+
const tplDest = path.join(FOS_HOME, 'templates');
|
|
138
|
+
const tplFiles = copyDir(tplSrc, tplDest);
|
|
139
|
+
installedFiles.push(...tplFiles);
|
|
140
|
+
success(`${tplFiles.length} templates → ~/.claude/${PRODUCT}/templates/`);
|
|
141
|
+
|
|
142
|
+
// 6. CLI tool → ~/.claude/frontier-os-app-builder/bin/
|
|
143
|
+
log('Installing CLI tool...');
|
|
144
|
+
const binSrc = path.join(SRC_ROOT, 'bin', 'fos-tools.cjs');
|
|
145
|
+
const binDest = path.join(FOS_HOME, 'bin', 'fos-tools.cjs');
|
|
146
|
+
if (fs.existsSync(binSrc)) {
|
|
147
|
+
copyFile(binSrc, binDest);
|
|
148
|
+
installedFiles.push(binDest);
|
|
149
|
+
success(`CLI tool → ~/.claude/${PRODUCT}/bin/fos-tools.cjs`);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// 7. Write manifest
|
|
153
|
+
const manifest = {
|
|
154
|
+
version: VERSION,
|
|
155
|
+
installed_at: new Date().toISOString(),
|
|
156
|
+
files: installedFiles
|
|
157
|
+
};
|
|
158
|
+
ensureDir(path.dirname(MANIFEST_PATH));
|
|
159
|
+
fs.writeFileSync(MANIFEST_PATH, JSON.stringify(manifest, null, 2));
|
|
160
|
+
installedFiles.push(MANIFEST_PATH);
|
|
161
|
+
|
|
162
|
+
// Summary
|
|
163
|
+
console.log(`\n\x1b[32m ✓ Installed ${installedFiles.length} files\x1b[0m\n`);
|
|
164
|
+
console.log(` Usage:\n`);
|
|
165
|
+
console.log(` 1. Create a directory for your new app`);
|
|
166
|
+
console.log(` 2. Run: /fos:new-app "your app description"`);
|
|
167
|
+
console.log(` 3. Follow the guided workflow\n`);
|
|
168
|
+
console.log(` Commands: /fos:new-app, /fos:discuss, /fos:plan, /fos:execute,`);
|
|
169
|
+
console.log(` /fos:ship, /fos:new-milestone, /fos:add-feature,`);
|
|
170
|
+
console.log(` /fos:next, /fos:status\n`);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// ── Uninstall ────────────────────────────────
|
|
174
|
+
|
|
175
|
+
function uninstall() {
|
|
176
|
+
console.log(`\n\x1b[1mUninstalling Frontier OS App Builder\x1b[0m\n`);
|
|
177
|
+
|
|
178
|
+
let removed = 0;
|
|
179
|
+
|
|
180
|
+
// Load manifest
|
|
181
|
+
if (fs.existsSync(MANIFEST_PATH)) {
|
|
182
|
+
const manifest = JSON.parse(fs.readFileSync(MANIFEST_PATH, 'utf-8'));
|
|
183
|
+
for (const file of manifest.files) {
|
|
184
|
+
if (removeFile(file)) removed++;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// Clean up directories
|
|
189
|
+
const dirsToClean = [
|
|
190
|
+
path.join(CLAUDE_HOME, 'commands', 'fos'),
|
|
191
|
+
path.join(FOS_HOME, 'workflows'),
|
|
192
|
+
path.join(FOS_HOME, 'references'),
|
|
193
|
+
path.join(FOS_HOME, 'templates', 'app'),
|
|
194
|
+
path.join(FOS_HOME, 'templates', 'state'),
|
|
195
|
+
path.join(FOS_HOME, 'templates'),
|
|
196
|
+
path.join(FOS_HOME, 'bin'),
|
|
197
|
+
FOS_HOME
|
|
198
|
+
];
|
|
199
|
+
|
|
200
|
+
for (const dir of dirsToClean) {
|
|
201
|
+
removeDirIfEmpty(dir);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// Remove agent files
|
|
205
|
+
const agentDir = path.join(CLAUDE_HOME, 'agents');
|
|
206
|
+
if (fs.existsSync(agentDir)) {
|
|
207
|
+
for (const file of fs.readdirSync(agentDir)) {
|
|
208
|
+
if (file.startsWith('fos-') && file.endsWith('.md')) {
|
|
209
|
+
if (removeFile(path.join(agentDir, file))) removed++;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
console.log(`\x1b[32m ✓ Removed ${removed} files\x1b[0m\n`);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// ── Main ─────────────────────────────────────
|
|
218
|
+
|
|
219
|
+
const args = process.argv.slice(2);
|
|
220
|
+
|
|
221
|
+
if (args.includes('--uninstall')) {
|
|
222
|
+
uninstall();
|
|
223
|
+
} else if (args.includes('--help') || args.includes('-h')) {
|
|
224
|
+
console.log(`
|
|
225
|
+
Frontier OS App Builder Installer
|
|
226
|
+
|
|
227
|
+
Usage:
|
|
228
|
+
node install.js Install to ~/.claude/
|
|
229
|
+
node install.js --uninstall Remove from ~/.claude/
|
|
230
|
+
node install.js --help Show this help
|
|
231
|
+
`);
|
|
232
|
+
} else {
|
|
233
|
+
install();
|
|
234
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fos:add-feature
|
|
3
|
+
description: Add a feature as a new phase to the current milestone
|
|
4
|
+
argument-hint: '"feature description"'
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Bash
|
|
9
|
+
- AskUserQuestion
|
|
10
|
+
---
|
|
11
|
+
<objective>
|
|
12
|
+
Add a new feature to the current milestone. Infers required SDK modules, creates a new phase in the roadmap, updates manifest with new permissions.
|
|
13
|
+
|
|
14
|
+
**After this command:** Run `/clear` then `/fos:discuss <N>` for the new phase.
|
|
15
|
+
</objective>
|
|
16
|
+
|
|
17
|
+
<execution_context>
|
|
18
|
+
@$HOME/.claude/frontier-os-app-builder/workflows/add-feature.md
|
|
19
|
+
@$HOME/.claude/frontier-os-app-builder/references/module-inference.md
|
|
20
|
+
@$HOME/.claude/frontier-os-app-builder/references/sdk-surface.md
|
|
21
|
+
</execution_context>
|
|
22
|
+
|
|
23
|
+
<context>
|
|
24
|
+
$ARGUMENTS
|
|
25
|
+
</context>
|
|
26
|
+
|
|
27
|
+
<process>
|
|
28
|
+
Execute the add-feature workflow from @$HOME/.claude/frontier-os-app-builder/workflows/add-feature.md end-to-end.
|
|
29
|
+
</process>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fos:discuss
|
|
3
|
+
description: Discuss gray area decisions for a phase before planning
|
|
4
|
+
argument-hint: "<phase-number>"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Bash
|
|
9
|
+
- AskUserQuestion
|
|
10
|
+
---
|
|
11
|
+
<objective>
|
|
12
|
+
Gather implementation decisions for a phase by identifying gray areas and discussing them with the developer. Produces CONTEXT.md that downstream planning and execution agents will honor.
|
|
13
|
+
|
|
14
|
+
**Creates:**
|
|
15
|
+
- `.frontier-app/phases/XX-name/XX-CONTEXT.md` — decisions, discretion areas, deferred ideas
|
|
16
|
+
|
|
17
|
+
**After this command:** Run `/clear` then `/fos:plan <N>` to create execution plans.
|
|
18
|
+
</objective>
|
|
19
|
+
|
|
20
|
+
<execution_context>
|
|
21
|
+
@$HOME/.claude/frontier-os-app-builder/workflows/discuss.md
|
|
22
|
+
@$HOME/.claude/frontier-os-app-builder/references/sdk-surface.md
|
|
23
|
+
</execution_context>
|
|
24
|
+
|
|
25
|
+
<context>
|
|
26
|
+
Phase: $ARGUMENTS
|
|
27
|
+
</context>
|
|
28
|
+
|
|
29
|
+
<process>
|
|
30
|
+
Execute the discuss workflow from @$HOME/.claude/frontier-os-app-builder/workflows/discuss.md end-to-end.
|
|
31
|
+
</process>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fos:execute
|
|
3
|
+
description: Execute all plans in a phase with automatic verification
|
|
4
|
+
argument-hint: "<phase-number>"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Edit
|
|
9
|
+
- Glob
|
|
10
|
+
- Grep
|
|
11
|
+
- Bash
|
|
12
|
+
- Task
|
|
13
|
+
- AskUserQuestion
|
|
14
|
+
---
|
|
15
|
+
<objective>
|
|
16
|
+
Execute all plans in a phase using wave-based execution, then automatically verify the result.
|
|
17
|
+
|
|
18
|
+
**Flow:** Analyze plan dependencies → spawn executor agents (parallel within waves) → spawn verifier agent
|
|
19
|
+
|
|
20
|
+
Orchestrator stays lean: discover plans, group into waves, spawn subagents, collect results. Each executor gets a fresh context window with the full execute-plan workflow.
|
|
21
|
+
|
|
22
|
+
**After this command:** Routes to `/fos:discuss <N+1>` for the next phase, or `/fos:ship` if all phases are done.
|
|
23
|
+
</objective>
|
|
24
|
+
|
|
25
|
+
<execution_context>
|
|
26
|
+
@$HOME/.claude/frontier-os-app-builder/workflows/execute.md
|
|
27
|
+
</execution_context>
|
|
28
|
+
|
|
29
|
+
<context>
|
|
30
|
+
Phase: $ARGUMENTS
|
|
31
|
+
</context>
|
|
32
|
+
|
|
33
|
+
<process>
|
|
34
|
+
Execute the execute workflow from @$HOME/.claude/frontier-os-app-builder/workflows/execute.md end-to-end.
|
|
35
|
+
</process>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fos:new-app
|
|
3
|
+
description: Create a new Frontier OS app from a natural language description
|
|
4
|
+
argument-hint: '"app description" [--auto]'
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Bash
|
|
9
|
+
- Task
|
|
10
|
+
- AskUserQuestion
|
|
11
|
+
---
|
|
12
|
+
<objective>
|
|
13
|
+
Initialize a new Frontier OS app through guided flow: gather requirements, infer SDK modules from description, create phased roadmap.
|
|
14
|
+
|
|
15
|
+
**Creates:**
|
|
16
|
+
- `.frontier-app/PROJECT.md` — app vision, SDK modules, constraints
|
|
17
|
+
- `.frontier-app/REQUIREMENTS.md` — scoped requirements
|
|
18
|
+
- `.frontier-app/ROADMAP.md` — phased execution plan
|
|
19
|
+
- `.frontier-app/STATE.md` — project memory
|
|
20
|
+
- `.frontier-app/manifest.json` — machine-readable metadata
|
|
21
|
+
|
|
22
|
+
**After this command:** Run `/clear` then `/fos:discuss 1` to discuss Phase 1 approach.
|
|
23
|
+
</objective>
|
|
24
|
+
|
|
25
|
+
<execution_context>
|
|
26
|
+
@$HOME/.claude/frontier-os-app-builder/workflows/new-app.md
|
|
27
|
+
@$HOME/.claude/frontier-os-app-builder/references/sdk-surface.md
|
|
28
|
+
@$HOME/.claude/frontier-os-app-builder/references/module-inference.md
|
|
29
|
+
@$HOME/.claude/frontier-os-app-builder/references/app-patterns.md
|
|
30
|
+
</execution_context>
|
|
31
|
+
|
|
32
|
+
<context>
|
|
33
|
+
$ARGUMENTS
|
|
34
|
+
</context>
|
|
35
|
+
|
|
36
|
+
<process>
|
|
37
|
+
Execute the new-app workflow from @$HOME/.claude/frontier-os-app-builder/workflows/new-app.md end-to-end.
|
|
38
|
+
Preserve all workflow gates (validation, approvals, routing).
|
|
39
|
+
</process>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fos:new-milestone
|
|
3
|
+
description: Start a new version milestone (v2, v3...) with additional features
|
|
4
|
+
argument-hint: '"feature descriptions"'
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Bash
|
|
9
|
+
- AskUserQuestion
|
|
10
|
+
---
|
|
11
|
+
<objective>
|
|
12
|
+
Archive the current milestone and start a new one. Gathers new feature descriptions, infers SDK modules, creates new phases in the roadmap.
|
|
13
|
+
|
|
14
|
+
**After this command:** Run `/clear` then `/fos:discuss <N>` for the first phase of the new milestone.
|
|
15
|
+
</objective>
|
|
16
|
+
|
|
17
|
+
<execution_context>
|
|
18
|
+
@$HOME/.claude/frontier-os-app-builder/workflows/new-milestone.md
|
|
19
|
+
@$HOME/.claude/frontier-os-app-builder/references/module-inference.md
|
|
20
|
+
</execution_context>
|
|
21
|
+
|
|
22
|
+
<context>
|
|
23
|
+
$ARGUMENTS
|
|
24
|
+
</context>
|
|
25
|
+
|
|
26
|
+
<process>
|
|
27
|
+
Execute the new-milestone workflow from @$HOME/.claude/frontier-os-app-builder/workflows/new-milestone.md end-to-end.
|
|
28
|
+
</process>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fos:next
|
|
3
|
+
description: Auto-route to the next step in the workflow
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Bash
|
|
7
|
+
---
|
|
8
|
+
<objective>
|
|
9
|
+
Determine and route to the next logical step based on current project state.
|
|
10
|
+
|
|
11
|
+
Reads `.frontier-app/STATE.md` and the project artifacts to determine what's needed next:
|
|
12
|
+
- No context for current phase → `/fos:discuss N`
|
|
13
|
+
- No plans for current phase → `/fos:plan N`
|
|
14
|
+
- Unexecuted plans → `/fos:execute N`
|
|
15
|
+
- All phases done → `/fos:ship`
|
|
16
|
+
- Already shipped → `/fos:new-milestone` or `/fos:add-feature`
|
|
17
|
+
</objective>
|
|
18
|
+
|
|
19
|
+
<execution_context>
|
|
20
|
+
@$HOME/.claude/frontier-os-app-builder/workflows/next.md
|
|
21
|
+
</execution_context>
|
|
22
|
+
|
|
23
|
+
<context>
|
|
24
|
+
$ARGUMENTS
|
|
25
|
+
</context>
|
|
26
|
+
|
|
27
|
+
<process>
|
|
28
|
+
Execute the next workflow from @$HOME/.claude/frontier-os-app-builder/workflows/next.md end-to-end.
|
|
29
|
+
</process>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fos:plan
|
|
3
|
+
description: Research existing apps and create execution plans for a phase
|
|
4
|
+
argument-hint: "<phase-number>"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Bash
|
|
9
|
+
- Task
|
|
10
|
+
- AskUserQuestion
|
|
11
|
+
---
|
|
12
|
+
<objective>
|
|
13
|
+
Create execution plans for a phase by researching existing Frontier OS apps, then planning with verification.
|
|
14
|
+
|
|
15
|
+
**Flow:** Spawn researcher → planner → plan-checker (max 3 revision loops)
|
|
16
|
+
|
|
17
|
+
**Creates:**
|
|
18
|
+
- `.frontier-app/phases/XX-name/XX-RESEARCH.md` — patterns from existing apps
|
|
19
|
+
- `.frontier-app/phases/XX-name/XX-YY-PLAN.md` — executable plans with tasks
|
|
20
|
+
|
|
21
|
+
**After this command:** Run `/clear` then `/fos:execute <N>` to build the phase.
|
|
22
|
+
</objective>
|
|
23
|
+
|
|
24
|
+
<execution_context>
|
|
25
|
+
@$HOME/.claude/frontier-os-app-builder/workflows/plan.md
|
|
26
|
+
@$HOME/.claude/frontier-os-app-builder/references/sdk-surface.md
|
|
27
|
+
@$HOME/.claude/frontier-os-app-builder/references/app-patterns.md
|
|
28
|
+
</execution_context>
|
|
29
|
+
|
|
30
|
+
<context>
|
|
31
|
+
Phase: $ARGUMENTS
|
|
32
|
+
</context>
|
|
33
|
+
|
|
34
|
+
<process>
|
|
35
|
+
Execute the plan workflow from @$HOME/.claude/frontier-os-app-builder/workflows/plan.md end-to-end.
|
|
36
|
+
Preserve the plan-checker verification loop (max 3 iterations).
|
|
37
|
+
</process>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fos:ship
|
|
3
|
+
description: Deploy to Vercel and register app in Frontier app store
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Write
|
|
7
|
+
- Bash
|
|
8
|
+
- AskUserQuestion
|
|
9
|
+
---
|
|
10
|
+
<objective>
|
|
11
|
+
Deploy the Frontier OS app to Vercel and optionally register it in the Frontier app store.
|
|
12
|
+
|
|
13
|
+
**Flow:** Preflight checks (build, tests, verification) → Vercel deploy → app registration
|
|
14
|
+
|
|
15
|
+
**After this command:** `/fos:new-milestone` to plan v2, or `/fos:add-feature` to extend.
|
|
16
|
+
</objective>
|
|
17
|
+
|
|
18
|
+
<execution_context>
|
|
19
|
+
@$HOME/.claude/frontier-os-app-builder/workflows/ship.md
|
|
20
|
+
@$HOME/.claude/frontier-os-app-builder/references/deployment.md
|
|
21
|
+
</execution_context>
|
|
22
|
+
|
|
23
|
+
<context>
|
|
24
|
+
$ARGUMENTS
|
|
25
|
+
</context>
|
|
26
|
+
|
|
27
|
+
<process>
|
|
28
|
+
Execute the ship workflow from @$HOME/.claude/frontier-os-app-builder/workflows/ship.md end-to-end.
|
|
29
|
+
</process>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fos:status
|
|
3
|
+
description: Show current project state — milestone, phases, modules, progress
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Bash
|
|
7
|
+
---
|
|
8
|
+
<objective>
|
|
9
|
+
Display the current state of the Frontier OS app project: milestone, phases with status, SDK modules, permissions, and what to do next.
|
|
10
|
+
</objective>
|
|
11
|
+
|
|
12
|
+
<execution_context>
|
|
13
|
+
@$HOME/.claude/frontier-os-app-builder/workflows/status.md
|
|
14
|
+
</execution_context>
|
|
15
|
+
|
|
16
|
+
<context>
|
|
17
|
+
$ARGUMENTS
|
|
18
|
+
</context>
|
|
19
|
+
|
|
20
|
+
<process>
|
|
21
|
+
Execute the status workflow from @$HOME/.claude/frontier-os-app-builder/workflows/status.md end-to-end.
|
|
22
|
+
</process>
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "frontier-os-app-builder",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Meta-prompting framework for building Frontier OS apps with Claude Code",
|
|
5
|
+
"author": "BerlinhouseLabs",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"bin": {
|
|
8
|
+
"frontier-os-app-builder": "./bin/install.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"bin/",
|
|
12
|
+
"commands/",
|
|
13
|
+
"agents/",
|
|
14
|
+
"workflows/",
|
|
15
|
+
"references/",
|
|
16
|
+
"templates/",
|
|
17
|
+
"README.md"
|
|
18
|
+
],
|
|
19
|
+
"keywords": [
|
|
20
|
+
"frontier-os",
|
|
21
|
+
"claude-code",
|
|
22
|
+
"frontier-sdk",
|
|
23
|
+
"app-builder",
|
|
24
|
+
"meta-prompting"
|
|
25
|
+
],
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "https://github.com/BerlinhouseLabs/frontier-os-app-builder.git"
|
|
29
|
+
}
|
|
30
|
+
}
|