@oaklandzoo/ostup 0.1.0 → 0.1.1
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 +17 -14
- package/package.json +1 -1
- package/src/mvp-flow.mjs +2 -2
- package/src/summary.mjs +4 -1
- package/src/templates.mjs +1 -0
- package/templates/START_HERE.md +41 -0
package/README.md
CHANGED
|
@@ -54,32 +54,35 @@ through creating them when you reach that step.
|
|
|
54
54
|
|
|
55
55
|
## Install
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
### Path A: from npm (after `ostup` is published)
|
|
57
|
+
The fastest path:
|
|
60
58
|
|
|
61
59
|
```
|
|
62
|
-
npx ostup init
|
|
60
|
+
npx @oaklandzoo/ostup init
|
|
63
61
|
```
|
|
64
62
|
|
|
65
|
-
That is the whole install. `npx` downloads ostup on first run
|
|
63
|
+
That is the whole install. `npx` downloads ostup on first run, nothing
|
|
64
|
+
to install permanently.
|
|
65
|
+
|
|
66
|
+
If you'd rather install it globally so the command is just `ostup`:
|
|
66
67
|
|
|
67
|
-
|
|
68
|
+
```
|
|
69
|
+
npm install -g @oaklandzoo/ostup
|
|
70
|
+
ostup --version # should print 0.1.0
|
|
71
|
+
ostup init
|
|
72
|
+
```
|
|
68
73
|
|
|
69
|
-
###
|
|
74
|
+
### Alternate: install from source
|
|
70
75
|
|
|
71
|
-
If you cloned
|
|
76
|
+
If you cloned https://github.com/DubsFan/goodshin and want to run from
|
|
77
|
+
your local checkout:
|
|
72
78
|
|
|
73
79
|
```
|
|
74
80
|
cd /path/to/goodshin/ostup
|
|
75
|
-
npm install
|
|
76
|
-
npm link
|
|
77
|
-
ostup --version
|
|
81
|
+
npm install
|
|
82
|
+
npm link
|
|
83
|
+
ostup --version
|
|
78
84
|
```
|
|
79
85
|
|
|
80
|
-
After `npm link` you can run `ostup` from any folder. You only do this
|
|
81
|
-
once per machine.
|
|
82
|
-
|
|
83
86
|
## Use
|
|
84
87
|
|
|
85
88
|
In Terminal, navigate to the parent folder where you want the new
|
package/package.json
CHANGED
package/src/mvp-flow.mjs
CHANGED
|
@@ -57,14 +57,14 @@ export async function runMvp({ flags = {}, cwd = process.cwd() } = {}) {
|
|
|
57
57
|
await ensureFreshTarget(targetDir, flags.force);
|
|
58
58
|
await mkdir(targetDir, { recursive: true });
|
|
59
59
|
|
|
60
|
+
await maybeScaffoldStack({ stack: answers.stack, projectName: answers.projectName, targetDir });
|
|
61
|
+
|
|
60
62
|
await ingestMaterials({
|
|
61
63
|
targetDir,
|
|
62
64
|
ingestPath: answers.ingestPath,
|
|
63
65
|
isDryRun: isDryRun(),
|
|
64
66
|
});
|
|
65
67
|
|
|
66
|
-
await maybeScaffoldStack({ stack: answers.stack, projectName: answers.projectName, targetDir });
|
|
67
|
-
|
|
68
68
|
const tokens = buildTokenMap({
|
|
69
69
|
projectName: answers.projectName,
|
|
70
70
|
displayName: answers.displayName,
|
package/src/summary.mjs
CHANGED
|
@@ -22,7 +22,10 @@ export function renderSummary({ targetDir, repoUrl, deployUrl, profile, projectN
|
|
|
22
22
|
lines.push(
|
|
23
23
|
` Profile: ${profile || 'goodshin'}`,
|
|
24
24
|
'================================================',
|
|
25
|
-
` Next
|
|
25
|
+
` Next steps:`,
|
|
26
|
+
` 1. cd ${projectName}`,
|
|
27
|
+
` 2. claude (or codex, gemini, your preferred CLI agent)`,
|
|
28
|
+
` 3. Open START_HERE.md and paste the prompt as your first message`,
|
|
26
29
|
'================================================',
|
|
27
30
|
''
|
|
28
31
|
);
|
package/src/templates.mjs
CHANGED
|
@@ -23,6 +23,7 @@ export const REGISTRY = [
|
|
|
23
23
|
{ src: '.claude/commands/generate-tasks.md', dest: '.claude/commands/generate-tasks.md' },
|
|
24
24
|
{ src: 'CLAUDE.md', dest: 'CLAUDE.md' },
|
|
25
25
|
{ src: 'AGENTS.md', dest: 'AGENTS.md' },
|
|
26
|
+
{ src: 'START_HERE.md', dest: 'START_HERE.md' },
|
|
26
27
|
{ src: 'HANDOFF.md', dest: 'HANDOFF.md' },
|
|
27
28
|
{ src: 'docs/PROJECT_STATE.md', dest: 'docs/PROJECT_STATE.md' },
|
|
28
29
|
{ src: 'docs/MANUAL_TASKS.md', dest: 'docs/MANUAL_TASKS.md' },
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Start here
|
|
2
|
+
|
|
3
|
+
You just scaffolded **{{DISPLAY_NAME}}** with ostup. This file tells you exactly what to do next.
|
|
4
|
+
|
|
5
|
+
## Step 1: open this folder in your CLI agent
|
|
6
|
+
|
|
7
|
+
In Terminal, from inside this folder:
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
claude
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
(Or `codex`, `gemini`, or whichever CLI agent you use.)
|
|
14
|
+
|
|
15
|
+
## Step 2: paste this as your first message
|
|
16
|
+
|
|
17
|
+
Copy the entire block between the lines and paste it as your first message to the agent:
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
Read everything in `{{INPUTS_PATH}}` thoroughly. The operator dropped source materials there: research, reference repos, brand assets, notes. Also read `CLAUDE.md` and `AGENTS.md` for project rules.
|
|
22
|
+
|
|
23
|
+
Then, based on what is in `{{INPUTS_PATH}}`, ask the operator up to 3 clarifying questions about what to build. After the operator answers, propose a 30 to 60 minute MVP scope as a numbered list. Do not write code until the operator approves the scope.
|
|
24
|
+
|
|
25
|
+
If `{{INPUTS_PATH}}` is empty or has only a README, ask the operator what they want to build instead.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## What happens after that
|
|
30
|
+
|
|
31
|
+
1. The agent reads your project rules + your source material.
|
|
32
|
+
2. The agent asks you a few questions.
|
|
33
|
+
3. You answer.
|
|
34
|
+
4. The agent proposes a scope.
|
|
35
|
+
5. You approve (or push back).
|
|
36
|
+
6. The agent builds the MVP and pushes commits to your GitHub repo.
|
|
37
|
+
7. Vercel auto-deploys each push, so your live URL updates as the agent works.
|
|
38
|
+
|
|
39
|
+
## When you no longer need this file
|
|
40
|
+
|
|
41
|
+
Delete it. It is for first-session orientation only and does not affect your app.
|