create-loomstack-app 0.0.3 → 0.0.4
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 +15 -8
- package/dist/{chunk-PJ2RR44E.js → chunk-7TBRLYYV.js} +13 -13
- package/dist/cli.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -17,22 +17,29 @@ pnpm loomstack init
|
|
|
17
17
|
|
|
18
18
|
Use `pnpm loomstack init --no-start` to initialize without starting Docker, or `pnpm loomstack init --skip-install` when dependencies are managed separately.
|
|
19
19
|
|
|
20
|
-
##
|
|
20
|
+
## Build your first feature with a coding agent
|
|
21
|
+
|
|
22
|
+
Open the initialized project in your preferred coding agent—for example, Claude Code:
|
|
21
23
|
|
|
22
24
|
```bash
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
claude
|
|
26
|
+
# or: codex
|
|
27
|
+
# or: pi
|
|
25
28
|
```
|
|
26
29
|
|
|
27
|
-
Then describe the product behavior
|
|
30
|
+
Then describe the product behavior you want:
|
|
28
31
|
|
|
29
32
|
```text
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
Read the root AGENTS.md first. Create a new feature named weather using the
|
|
34
|
+
canonical LoomStack workflow, then read the feature-local AGENTS.md before
|
|
35
|
+
editing it. Build a weather app with a UI where users enter a location. Query
|
|
36
|
+
a free online weather API that requires no paid account, persist each requested
|
|
37
|
+
weather response in PostgreSQL, and let users view the returned weather and
|
|
38
|
+
previous searches. Keep API and database access out of the UI. Generate,
|
|
39
|
+
verify, and test the feature before finishing.
|
|
33
40
|
```
|
|
34
41
|
|
|
35
|
-
|
|
42
|
+
The agent will use LoomStack's structured context, scaffold the feature, edit only canonical authored files, regenerate wiring, and verify the result. LoomStack keeps product behavior in feature slices while generated files contain wiring only.
|
|
36
43
|
|
|
37
44
|
## What gets created
|
|
38
45
|
|
|
@@ -677,7 +677,7 @@ function appTemplateFiles(appName) {
|
|
|
677
677
|
return {
|
|
678
678
|
"package.json": `${JSON.stringify({
|
|
679
679
|
name: appName,
|
|
680
|
-
version: "0.0.
|
|
680
|
+
version: "0.0.4",
|
|
681
681
|
private: true,
|
|
682
682
|
type: "module",
|
|
683
683
|
packageManager: "pnpm@11.11.0",
|
|
@@ -694,10 +694,10 @@ function appTemplateFiles(appName) {
|
|
|
694
694
|
build: "pnpm generate && pnpm -r --filter './apps/*' build"
|
|
695
695
|
},
|
|
696
696
|
devDependencies: {
|
|
697
|
-
"@loomstack/cli": "^0.0.
|
|
698
|
-
"@loomstack/react": "^0.0.
|
|
699
|
-
"@loomstack/runtime": "^0.0.
|
|
700
|
-
"@loomstack/postgres": "^0.0.
|
|
697
|
+
"@loomstack/cli": "^0.0.4",
|
|
698
|
+
"@loomstack/react": "^0.0.4",
|
|
699
|
+
"@loomstack/runtime": "^0.0.4",
|
|
700
|
+
"@loomstack/postgres": "^0.0.4",
|
|
701
701
|
"@types/node": "^24.0.0",
|
|
702
702
|
"@types/react": "^19.0.0",
|
|
703
703
|
"@types/react-dom": "^19.0.0",
|
|
@@ -931,13 +931,13 @@ volumes:
|
|
|
931
931
|
"features/.gitkeep": "",
|
|
932
932
|
"apps/web/package.json": `${JSON.stringify({
|
|
933
933
|
name: `@${appName}/web`,
|
|
934
|
-
version: "0.0.
|
|
934
|
+
version: "0.0.4",
|
|
935
935
|
private: true,
|
|
936
936
|
type: "module",
|
|
937
937
|
scripts: { dev: "vite", build: "vite build" },
|
|
938
938
|
dependencies: {
|
|
939
|
-
"@loomstack/react": "^0.0.
|
|
940
|
-
"@loomstack/runtime": "^0.0.
|
|
939
|
+
"@loomstack/react": "^0.0.4",
|
|
940
|
+
"@loomstack/runtime": "^0.0.4",
|
|
941
941
|
"@vitejs/plugin-react": "^6.0.3",
|
|
942
942
|
react: "^19.2.7",
|
|
943
943
|
"react-dom": "^19.2.7",
|
|
@@ -996,14 +996,14 @@ export default defineConfig({
|
|
|
996
996
|
`,
|
|
997
997
|
"apps/api/package.json": `${JSON.stringify({
|
|
998
998
|
name: `@${appName}/api`,
|
|
999
|
-
version: "0.0.
|
|
999
|
+
version: "0.0.4",
|
|
1000
1000
|
private: true,
|
|
1001
1001
|
type: "module",
|
|
1002
1002
|
scripts: { dev: "tsx watch src/server.ts", build: "tsup src/server.ts --format esm --clean" },
|
|
1003
1003
|
dependencies: {
|
|
1004
|
-
"@loomstack/koa": "^0.0.
|
|
1005
|
-
"@loomstack/runtime": "^0.0.
|
|
1006
|
-
"@loomstack/postgres": "^0.0.
|
|
1004
|
+
"@loomstack/koa": "^0.0.4",
|
|
1005
|
+
"@loomstack/runtime": "^0.0.4",
|
|
1006
|
+
"@loomstack/postgres": "^0.0.4",
|
|
1007
1007
|
koa: "^3.2.1",
|
|
1008
1008
|
"koa-bodyparser": "^4.4.1"
|
|
1009
1009
|
},
|
|
@@ -1065,7 +1065,7 @@ function createApp(parentInput, appName) {
|
|
|
1065
1065
|
throw new GeneratorFailure([frameworkError("loomstack5002", { message: `Target directory already exists: ${appName}.`, file: appName })]);
|
|
1066
1066
|
}
|
|
1067
1067
|
mkdirSync3(root, { recursive: false });
|
|
1068
|
-
return renderApp(root, appName, [`cd ${appName}`, "pnpm install", "loomstack init"]);
|
|
1068
|
+
return renderApp(root, appName, [`cd ${appName}`, "pnpm install", "pnpm loomstack init"]);
|
|
1069
1069
|
}
|
|
1070
1070
|
|
|
1071
1071
|
// src/index.ts
|
package/dist/cli.js
CHANGED
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-loomstack-app",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"description": "Create a full-stack loomstack application",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"yaml": "^2.9.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@loomstack/generator": "0.0.
|
|
23
|
+
"@loomstack/generator": "0.0.4"
|
|
24
24
|
},
|
|
25
25
|
"engines": {
|
|
26
26
|
"node": ">=22.0.0"
|