ship-create 1.0.0 → 1.1.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 +31 -9
- package/create.mjs +13 -0
- package/package.json +1 -1
- package/templates/.claude/skills/ship-method/SKILL.md +52 -0
package/README.md
CHANGED
|
@@ -1,39 +1,61 @@
|
|
|
1
|
-
#
|
|
1
|
+
# ship-create
|
|
2
2
|
|
|
3
|
-
A zero-dependency, zero-API-key project scaffolder for The SHIP Method OS.
|
|
3
|
+
A zero-dependency, zero-API-key project scaffolder for The SHIP Method OS. Published on npm as [`ship-create`](https://www.npmjs.com/package/ship-create) — no git clone, no API key, nothing to sign up for before your first command works.
|
|
4
4
|
|
|
5
5
|
## Run It
|
|
6
6
|
|
|
7
|
-
From the
|
|
7
|
+
From anywhere — an empty folder, your desktop, wherever you want the new project to land:
|
|
8
8
|
|
|
9
9
|
```
|
|
10
|
-
|
|
10
|
+
npx ship-create
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
That's it. No
|
|
13
|
+
That's it. No global install needed. You do need [Node.js](https://nodejs.org) installed (18 or newer) — if `node -v` works in your terminal, you're ready.
|
|
14
|
+
|
|
15
|
+
> Prefer a permanent global command? `npm install -g ship-create`, then just run `ship-create`.
|
|
14
16
|
|
|
15
17
|
## What It Asks
|
|
16
18
|
|
|
17
19
|
1. **Project name** — e.g. "Acme CRM"
|
|
18
|
-
2. **What you're building** —
|
|
20
|
+
2. **What you're building** — one of 8 product types (SaaS, CRM, membership, lead-gen, directory, dashboard, internal tool, marketplace)
|
|
19
21
|
3. **Which AI tool you mainly use** — ChatGPT, Claude, Gemini, Cursor, or Windsurf
|
|
20
22
|
|
|
21
23
|
## What It Creates
|
|
22
24
|
|
|
23
|
-
A new folder at
|
|
25
|
+
A new folder at `./<your-project-slug>/`, in whatever directory you ran the command from, containing:
|
|
24
26
|
|
|
25
|
-
- The full
|
|
27
|
+
- The full starter-kit app shell (sale page, member area, backoffice — working Next.js + Tailwind code on mock data)
|
|
26
28
|
- `AGENTS.md`, `CLAUDE.md`, `.cursorrules`, `.windsurfrules` — copied in, so Cursor/Windsurf/Claude Code enforce the SHIP order automatically the moment you open the folder
|
|
27
29
|
- `docs/PROJECT.md` — pre-filled with your project name and product type
|
|
28
30
|
- `docs/<TYPE>_TEMPLATE.md` — the starter pack matching what you're building
|
|
29
31
|
- `docs/HUMAN_FLOW.md` — blank template, ready for Stage 2
|
|
32
|
+
- `docs/PROMPTS.md` — the full Idea → Code prompt chain
|
|
30
33
|
- `docs/FIRST_PROMPT.txt` — a ready-to-paste prompt for whichever AI tool you picked, with `PROJECT.md` already loaded into it
|
|
31
34
|
- `NEXT_STEPS.md` — plain-language instructions for what to do next, tailored to your AI tool choice
|
|
32
35
|
|
|
36
|
+
Everything it needs is bundled inside this package's own `templates/` folder — nothing is read from the SHIP Method OS repo at runtime, so it works standalone via `npx` for anyone, without access to that (private) repo.
|
|
37
|
+
|
|
33
38
|
## Why No API Key
|
|
34
39
|
|
|
35
40
|
If you already pay for ChatGPT Plus, Claude Pro, or Gemini Advanced, requiring a *separate* API key (different billing, different signup, different rate limits) to use this CLI would be pure friction. Instead, the CLI prepares the exact prompt you need and tells you where to paste it — into the tool you already have open in a browser tab.
|
|
36
41
|
|
|
37
42
|
## Re-running
|
|
38
43
|
|
|
39
|
-
The CLI refuses to overwrite an existing
|
|
44
|
+
The CLI refuses to overwrite an existing `./<slug>/` folder in your current directory — pick a different project name, or delete the old folder first if you want to start over.
|
|
45
|
+
|
|
46
|
+
## Maintaining This Package
|
|
47
|
+
|
|
48
|
+
This folder lives inside the private `the-ship-method-os` repo but publishes as a separate public package. If the source templates change (`starter-kit/`, `01-STRUCTURE/PROJECT.md`, `02-HUMAN-FLOW/HUMAN_FLOW.md`, `03-INSTRUCTION/PROMPTS.md`, `06-TEMPLATES/*.md`, or the root agent rule files), re-sync them into `templates/` and bump the version before publishing:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
# from the repo root
|
|
52
|
+
cp -R starter-kit ship-cli/templates/starter-kit
|
|
53
|
+
rm -rf ship-cli/templates/starter-kit/{node_modules,.next,package-lock.json,next-env.d.ts,tsconfig.tsbuildinfo}
|
|
54
|
+
cp 01-STRUCTURE/PROJECT.md 02-HUMAN-FLOW/HUMAN_FLOW.md 03-INSTRUCTION/PROMPTS.md ship-cli/templates/docs/
|
|
55
|
+
cp 06-TEMPLATES/*.md ship-cli/templates/docs/product-types/
|
|
56
|
+
cp AGENTS.md CLAUDE.md .cursorrules .windsurfrules ship-cli/templates/
|
|
57
|
+
|
|
58
|
+
cd ship-cli
|
|
59
|
+
npm version patch # or minor/major
|
|
60
|
+
npm publish --access public
|
|
61
|
+
```
|
package/create.mjs
CHANGED
|
@@ -186,6 +186,14 @@ async function main() {
|
|
|
186
186
|
}
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
+
// 2b. Copy the Claude Code skill (.claude/skills/ship-method/SKILL.md) so
|
|
190
|
+
// Claude Code can explicitly invoke the SHIP workflow as a skill, not
|
|
191
|
+
// just follow it as a passive rules file.
|
|
192
|
+
const claudeSkillSrc = path.join(TEMPLATES_DIR, ".claude");
|
|
193
|
+
if (fs.existsSync(claudeSkillSrc)) {
|
|
194
|
+
copyRecursiveExcluding(claudeSkillSrc, path.join(outDir, ".claude"), new Set());
|
|
195
|
+
}
|
|
196
|
+
|
|
189
197
|
// 3. Create a docs/ folder with a pre-filled PROJECT.md and the matching product-type template.
|
|
190
198
|
const docsDir = path.join(outDir, "docs");
|
|
191
199
|
fs.mkdirSync(docsDir, { recursive: true });
|
|
@@ -281,6 +289,11 @@ This folder includes AGENTS.md / CLAUDE.md / .cursorrules / .windsurfrules.
|
|
|
281
289
|
If you open this folder in Cursor, Windsurf, or Claude Code, those tools
|
|
282
290
|
will automatically enforce filling Structure and Human Flow before
|
|
283
291
|
generating feature code — you don't need to do anything extra.
|
|
292
|
+
|
|
293
|
+
If you use Claude Code specifically, there's also a \`.claude/skills/ship-method/SKILL.md\`
|
|
294
|
+
— Claude can invoke it directly as a skill (not just a passive rule file)
|
|
295
|
+
whenever you ask it to build a feature or review whether something is
|
|
296
|
+
ready to ship.
|
|
284
297
|
`;
|
|
285
298
|
|
|
286
299
|
fs.writeFileSync(path.join(outDir, "NEXT_STEPS.md"), nextSteps);
|
package/package.json
CHANGED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ship-method
|
|
3
|
+
description: Use when starting any new product, feature, or "build me an app" request — before writing any application code. Walks through Structure, Human Flow, Instruction, Publish in order, using this repo's templates. Also use when asked to review whether a project is "ready to build" or "ready to ship."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# The SHIP Method
|
|
7
|
+
|
|
8
|
+
You are operating inside a project built with **The SHIP Method OS**. The method has four phases, run strictly in order:
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
S — STRUCTURE → H — HUMAN FLOW → I — INSTRUCTION → P — PUBLISH
|
|
12
|
+
(what & why) (the experience) (AI-ready specs) (ship it)
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
The single most common reason AI-built products end up broken, scope-creeped, or unshippable: someone skips Structure and Human Flow and goes straight to "build me an app." This skill exists to stop that.
|
|
16
|
+
|
|
17
|
+
## When to Use This Skill
|
|
18
|
+
|
|
19
|
+
- The user describes a new product/feature idea and wants something built
|
|
20
|
+
- The user asks you to generate code for a feature that doesn't have a filled spec yet
|
|
21
|
+
- The user asks "is this ready to build?" or "is this ready to ship?"
|
|
22
|
+
- You're about to scaffold, design a schema, or write business logic and no `PROJECT.md` / `HUMAN_FLOW.md` exists yet for it
|
|
23
|
+
|
|
24
|
+
## The Checklist
|
|
25
|
+
|
|
26
|
+
Work through these gates in order. Do not let scope, urgency, or the user saying "just build it fast" skip a gate without at least naming what's being skipped.
|
|
27
|
+
|
|
28
|
+
- [ ] **Gate 1 — Structure exists.** Find or create `PROJECT.md` (template: `01-STRUCTURE/PROJECT.md` in this repo, or `docs/PROJECT.md` if this is a `ship-create`-generated project). Vision, Problem Statement, Target Audience, and MVP Scope must be filled — not placeholder brackets.
|
|
29
|
+
- [ ] **Gate 2 — Human Flow exists.** Find or create `HUMAN_FLOW.md`. Every core screen needs a happy path and at least one error/empty state defined before it gets built.
|
|
30
|
+
- [ ] **Gate 3 — Instruction exists.** Functional requirements, data model, and API contract are written somewhere concrete (`AI_BUILD_SPEC.md` / `docs/PROJECT.md`'s feature section) before you generate feature code.
|
|
31
|
+
- [ ] **Gate 4 — Publish readiness.** Before telling the user something is "done," check it against the relevant checklist (`QA_CHECKLIST.md`, `LAUNCH_CHECKLIST.md`) rather than declaring success from a clean build alone.
|
|
32
|
+
|
|
33
|
+
## How to Apply This
|
|
34
|
+
|
|
35
|
+
1. **If Gate 1 or 2 is missing or full of `[bracket placeholders]`:** stop, don't generate feature code. Instead, ask the user one specific question at a time to fill the gap — pull questions directly from the relevant template's section headers. Scaffolding, config, and boilerplate are fine to write anytime; business logic and feature code are gated.
|
|
36
|
+
2. **If the user insists on skipping a gate** ("just build it, skip the docs"): comply, but say once, briefly, what's being skipped and the most likely thing that breaks later as a result. Don't refuse repeatedly or lecture.
|
|
37
|
+
3. **If all gates are filled:** proceed normally — generate code straight from the spec, and flag if a code request contradicts what's already written in `PROJECT.md` or `HUMAN_FLOW.md` rather than silently overriding it.
|
|
38
|
+
4. **When asked "is this ready to build/ship?":** walk the checklist above explicitly and report which gates pass/fail, rather than giving a vague yes/no.
|
|
39
|
+
|
|
40
|
+
## Reference Files (when present in this repo)
|
|
41
|
+
|
|
42
|
+
| Need | File |
|
|
43
|
+
|---|---|
|
|
44
|
+
| Business goals, scope, MVP | `01-STRUCTURE/PROJECT.md`, `01-STRUCTURE/MVP_SCOPE.md` |
|
|
45
|
+
| User journeys, screens | `02-HUMAN-FLOW/HUMAN_FLOW.md`, `02-HUMAN-FLOW/SCREEN_PLANNING.md` |
|
|
46
|
+
| Specs, prompt chain | `03-INSTRUCTION/AI_BUILD_SPEC.md`, `03-INSTRUCTION/PROMPTS.md` |
|
|
47
|
+
| Pre-launch checks | `04-PUBLISH/QA_CHECKLIST.md`, `04-PUBLISH/LAUNCH_CHECKLIST.md` |
|
|
48
|
+
| Product-type starter pack | `06-TEMPLATES/<TYPE>_TEMPLATE.md` |
|
|
49
|
+
| Design consistency | `12-DESIGN-SYSTEM/DESIGN_SYSTEM.md` |
|
|
50
|
+
| Stack decisions | `13-TECH-STACK/STACK_DECISION_MATRIX.md` |
|
|
51
|
+
|
|
52
|
+
If this is a project generated by `ship-create`, the same files exist under `docs/` instead of the numbered folders above.
|