@warpgogol/forge 1.2.2 → 2.2.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/AGENTS.md +2 -1
- package/README.md +55 -89
- package/README.uk.md +55 -89
- package/package.json +1 -1
- package/profiles/forge-shell.yaml +122 -1
- package/profiles/godot-csharp.yaml +467 -10
- package/profiles/phaser-turborepo.yaml +139 -3
- package/skills/_shared/fo-pipeline-conventions.md +55 -0
- package/skills/fo/fo-doc-audit/SKILL.md +2 -2
- package/skills/fo/fo-idea-i-just-want-to-see-the-plan/SKILL.md +2 -0
- package/skills/fo/fo-idea-i-just-want-to-see-the-result/SKILL.md +7 -3
- package/skills/fo/fo-idea-implement/SKILL.md +50 -46
- package/skills/fo/fo-session-retro/SKILL.md +2 -2
- package/src/onboarding/templates/behavioral-layer-core.md +4 -5
- package/src/onboarding/templates/root-agents-business.md +1 -1
- package/src/onboarding/templates/root-agents-creative.md +1 -1
- package/profiles/astro-typescript-turborepo.yaml +0 -231
package/AGENTS.md
CHANGED
|
@@ -70,6 +70,7 @@ Skills live in `skills/` and are synced to `.agents/skills/` by `create`. Each s
|
|
|
70
70
|
- **When editing a skill in `packages/forge/skills/`**, the synced copy in `.agents/skills/<name>/SKILL.md` MUST also be committed in the same session — `create` is not run automatically after manual edits. Stale `.agents/skills/` copies cause `doctor` to report drift.
|
|
71
71
|
- **Canonical sync path is flat**: `.agents/skills/<name>/SKILL.md` (e.g. `.agents/skills/fo-idea-implement/SKILL.md`). Both `create` (`init.ts`) and `upgrade` (`upgrade.ts`) sync to this flat path. A nested `.agents/skills/fo/<name>/SKILL.md` path is NOT created or maintained by forge — it is a stale artifact if present and should be removed.
|
|
72
72
|
- **`FORGE_SKILLS[].path` is relative to the forge package root** and already includes the `skills/` prefix — resolve via `path.join(forgeRoot, skill.path)` (see `init.ts`). Never join a `skillsRoot` with `skill.path`: that produces a doubled `skills/skills/` prefix and silently finds nothing.
|
|
73
|
+
- **When renumbering steps in SKILL.md files** (inserting or removing a numbered step), grep for hard-coded step numbers across all `.md` files in the repo. Cross-references to `fo-idea-implement` step numbers exist in `PREFERENCES.md`, `fo-doc-audit/SKILL.md`, and `fo-session-retro/SKILL.md` — these break silently when steps shift. Always update all cross-references in the same commit.
|
|
73
74
|
|
|
74
75
|
The `concerns` field uses a four-level taxonomy (RFC-0523): `read-only` (no file modifications), `document-only` (modifies `.md` files only), `content-mutation` (modifies content `.md`/`.yaml` but not executable code), `code-mutation` (modifies `.ts`/`.astro` code). `skill.validate` enforces this via SKILL-12.
|
|
75
76
|
|
|
@@ -151,7 +152,7 @@ Stack profiles are YAML documents under `profiles/` describing a supported stack
|
|
|
151
152
|
- **MUST NOT** scaffold into a non-empty directory — no `--force` flag.
|
|
152
153
|
- **MUST NOT** add stack profiles for stacks forge cannot scaffold end-to-end.
|
|
153
154
|
- **MUST** reference all template files in `profiles/<profile>-templates/` from the profile YAML (`workspaceTypes[].agentsMdTemplate` or `firstWorkspace.files`) or document them in the `agentsMdTemplate` file. Unreferenced template files are orphan artifacts that operators cannot discover.
|
|
154
|
-
- Shipped profiles: `
|
|
155
|
+
- Shipped profiles: `phaser-turborepo`, `godot-csharp`, `forge-shell` (minimal — default for `create`).
|
|
155
156
|
- **MUST** include a `.github/workflows/ci.yml` template in every stack profile's `workspace.files` list. The CI template MUST include `concurrency` (cancel superseded PR runs), `permissions: contents: read` at workflow level, `timeout-minutes` per job, `env: TZ: UTC` per job, `actions/checkout@v5`, and `actions/setup-node@v5` with Node 24. New projects inherit reliable CI from the scaffold — operators should not need to hand-write CI from scratch.
|
|
156
157
|
|
|
157
158
|
### Domain fields (RFC-0638)
|
package/README.md
CHANGED
|
@@ -6,11 +6,10 @@ Portable governance engine for AI-assisted project development. Provides skills,
|
|
|
6
6
|
|
|
7
7
|
## What you can build with Forge
|
|
8
8
|
|
|
9
|
-
Forge supports
|
|
9
|
+
Forge supports three kinds of projects. You pick one when you start — everything else is automatic.
|
|
10
10
|
|
|
11
11
|
| Project type | What it is | Example ideas |
|
|
12
12
|
| --- | --- | --- |
|
|
13
|
-
| **Website** | A public website or web app — pages, blog, portfolio, landing page, online store | Photography studio site, restaurant website, SaaS landing page |
|
|
14
13
|
| **Browser game** | An interactive game that runs in a web browser — 2D, arcade, puzzle, adventure | Catch falling stars, tile-matching puzzle, platformer |
|
|
15
14
|
| **Governance / library** | A code library or governance-only project — no website, no game, no video, just structure and documentation | npm package, internal toolkit, documentation hub |
|
|
16
15
|
| **Godot game** | A desktop or mobile game built with Godot 4.x and C# — 2D, 3D, platformer, RPG | Top-down adventure, 3D platformer, puzzle game |
|
|
@@ -29,21 +28,17 @@ For full project lifecycle management — missions, releases, deployment, certif
|
|
|
29
28
|
| --- | --- | --- |
|
|
30
29
|
| `@warpgogol/werkstatt` | Runtime engine — missions, releases, Leitstand deployment, certification, Bordbuch, artifact store | All project types with lifecycle management |
|
|
31
30
|
| `@warpgogol/werkstatt-shared` | Shared infrastructure — checks, integration, ontology, passport | Installed automatically with the engine |
|
|
32
|
-
| `@warpgogol/werkstatt-site` | Astro site plugin — build pipeline, content checks, codegen, deploy adapters | Website projects (`astro-typescript-turborepo`) |
|
|
33
31
|
| `@warpgogol/werkstatt-game` | Phaser game plugin — game validators, Vite build, deploy adapters | Browser game projects (`phaser-turborepo`) |
|
|
34
32
|
| `@warpgogol/werkstatt-godot` | Godot plugin — scene validators, dotnet build, itch.io deploy, Godot skills | Godot game projects (`godot-csharp`) |
|
|
35
33
|
|
|
36
34
|
### When you need these packages
|
|
37
35
|
|
|
38
36
|
- **Governance-only projects** (RFCs, ADRs, skills, documentation hubs) — Forge alone is sufficient.
|
|
39
|
-
- **
|
|
37
|
+
- **Games, Godot projects** — install `@warpgogol/werkstatt` (the engine) plus the matching stack plugin. The `forge-bootstrap` skill configures bindings automatically; the packages themselves must be installed as devDependencies.
|
|
40
38
|
|
|
41
39
|
### Installing engine packages
|
|
42
40
|
|
|
43
41
|
```sh
|
|
44
|
-
# Website project
|
|
45
|
-
pnpm add -D @warpgogol/werkstatt @warpgogol/werkstatt-site
|
|
46
|
-
|
|
47
42
|
# Browser game project
|
|
48
43
|
pnpm add -D @warpgogol/werkstatt @warpgogol/werkstatt-game
|
|
49
44
|
|
|
@@ -106,23 +101,7 @@ pnpm --version
|
|
|
106
101
|
|
|
107
102
|
You should see a version number like `10.x.x`.
|
|
108
103
|
|
|
109
|
-
#### Step 3 — Install
|
|
110
|
-
|
|
111
|
-
Installing Forge globally means the `forge` command is available everywhere on your computer, not just inside one project:
|
|
112
|
-
|
|
113
|
-
```sh
|
|
114
|
-
pnpm add -g @warpgogol/forge
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
Verify:
|
|
118
|
-
|
|
119
|
-
```sh
|
|
120
|
-
forge --version
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
You should see a version number. Forge is now installed and ready.
|
|
124
|
-
|
|
125
|
-
#### Step 4 — Install an AI-powered IDE
|
|
104
|
+
#### Step 3 — Install an AI-powered IDE
|
|
126
105
|
|
|
127
106
|
Forge works through conversation with an AI agent. You need an IDE that supports AI agents. We recommend **Windsurf** (tested with Forge):
|
|
128
107
|
|
|
@@ -164,23 +143,7 @@ pnpm --version
|
|
|
164
143
|
|
|
165
144
|
You should see a version number like `10.x.x`.
|
|
166
145
|
|
|
167
|
-
#### Step 3 — Install
|
|
168
|
-
|
|
169
|
-
Installing Forge globally means the `forge` command is available everywhere on your computer, not just inside one project:
|
|
170
|
-
|
|
171
|
-
```sh
|
|
172
|
-
pnpm add -g @warpgogol/forge
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
Verify:
|
|
176
|
-
|
|
177
|
-
```sh
|
|
178
|
-
forge --version
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
You should see a version number. Forge is now installed and ready.
|
|
182
|
-
|
|
183
|
-
#### Step 4 — Install an AI-powered IDE
|
|
146
|
+
#### Step 3 — Install an AI-powered IDE
|
|
184
147
|
|
|
185
148
|
Forge works through conversation with an AI agent. You need an IDE that supports AI agents. We recommend **Windsurf** (tested with Forge):
|
|
186
149
|
|
|
@@ -207,10 +170,8 @@ dotnet --version
|
|
|
207
170
|
### Troubleshooting
|
|
208
171
|
|
|
209
172
|
- **"command not found" after installing Node.js** — Close and reopen your terminal (Ubuntu) or PowerShell (Windows). The system needs to reload the list of available commands.
|
|
210
|
-
- **"EACCES permission denied" on Ubuntu when installing Forge globally** — Run `sudo pnpm add -g @warpgogol/forge` instead.
|
|
211
173
|
- **"corepack: command not found"** — Your Node.js version is too old. Install Node.js 24+ using the steps above.
|
|
212
|
-
- **
|
|
213
|
-
- **AI agent doesn't know about Forge** — You opened an empty folder, but the AI agent has no Forge context. Run `forge create --name my-project --profile astro-typescript-turborepo` (or the appropriate profile) in a terminal first, then open the created folder in your IDE. The `forge create` command populates the folder with skills, configuration, and `AGENTS.md` — without it, the AI agent can't discover Forge.
|
|
174
|
+
- **AI agent doesn't know about Forge** — You opened an empty folder, but the AI agent has no Forge context. Run `pnpm dlx @warpgogol/forge create --in-place --profile phaser-turborepo` (or the appropriate profile) in a terminal first, then open the folder in your IDE. The `forge create` command populates the current folder with skills, configuration, and `AGENTS.md` — without it, the AI agent can't discover Forge.
|
|
214
175
|
|
|
215
176
|
---
|
|
216
177
|
|
|
@@ -222,26 +183,27 @@ You need to run one command in the terminal to create your project. After that,
|
|
|
222
183
|
|
|
223
184
|
#### Start a new project from scratch
|
|
224
185
|
|
|
225
|
-
1. **Create a Forge
|
|
186
|
+
1. **Create a project folder and scaffold Forge in-place.** Open a terminal (PowerShell on Windows, Terminal on Ubuntu) and run:
|
|
226
187
|
|
|
227
188
|
```sh
|
|
228
|
-
|
|
189
|
+
mkdir my-game
|
|
190
|
+
cd my-game
|
|
191
|
+
pnpm dlx @warpgogol/forge create --in-place --profile phaser-turborepo
|
|
229
192
|
```
|
|
230
193
|
|
|
231
|
-
|
|
194
|
+
The project name is derived from the folder name (`my-game` in this example). You can override it with `--name`. This populates the current folder with everything Forge needs — skills, configuration, and project structure. For other project types, use a different `--profile`:
|
|
232
195
|
|
|
233
|
-
| What you want to build
|
|
234
|
-
|
|
|
235
|
-
|
|
|
236
|
-
|
|
|
237
|
-
|
|
|
238
|
-
| Library or governance-only project | `--profile forge-shell` |
|
|
196
|
+
| What you want to build | Profile flag |
|
|
197
|
+
| ----------------------------------- | ---------------------------- |
|
|
198
|
+
| Browser game (2D, arcade, puzzle) | `--profile phaser-turborepo` |
|
|
199
|
+
| Godot game (desktop, mobile, 2D/3D) | `--profile godot-csharp` |
|
|
200
|
+
| Library or governance-only project | `--profile forge-shell` |
|
|
239
201
|
|
|
240
|
-
2. **Open the project folder in your AI IDE.** Open the folder
|
|
202
|
+
2. **Open the project folder in your AI IDE.** Open the folder from step 1 in Windsurf or your preferred IDE.
|
|
241
203
|
|
|
242
204
|
3. **Tell the AI agent what you want to build.** Just type it in the chat, in your own words. For example:
|
|
243
205
|
|
|
244
|
-
> I want to build a
|
|
206
|
+
> I want to build a Godot game where you catch falling stars.
|
|
245
207
|
|
|
246
208
|
Or:
|
|
247
209
|
|
|
@@ -252,12 +214,12 @@ You need to run one command in the terminal to create your project. After that,
|
|
|
252
214
|
> I want to create a TypeScript library for calculating astrology charts.
|
|
253
215
|
|
|
254
216
|
That's it. The AI agent will do everything else:
|
|
255
|
-
- Set up the project structure based on what you described (
|
|
217
|
+
- Set up the project structure based on what you described (game, library, etc.)
|
|
256
218
|
- Configure language preferences and project settings
|
|
257
|
-
- Start a live preview so you can see your work (for
|
|
219
|
+
- Start a live preview so you can see your work (for games)
|
|
258
220
|
- Tell you the URL to open in your browser
|
|
259
221
|
|
|
260
|
-
4. **Watch the preview.** For
|
|
222
|
+
4. **Watch the preview.** For games, the AI agent will give you a localhost link. Click it — your project is already running. As you describe changes, the agent updates the project and the preview refreshes automatically.
|
|
261
223
|
|
|
262
224
|
For governance and library projects, there's no visual preview — the agent will set up the project structure and tell you when it's ready.
|
|
263
225
|
|
|
@@ -267,20 +229,22 @@ You need to run one command in the terminal to create your project. After that,
|
|
|
267
229
|
|
|
268
230
|
If you already have a project somewhere else and want to move it into Forge:
|
|
269
231
|
|
|
270
|
-
1. **Create a Forge project.** Open a terminal and run:
|
|
232
|
+
1. **Create a Forge project.** Open a terminal, create a folder, and run:
|
|
271
233
|
|
|
272
234
|
```sh
|
|
273
|
-
|
|
235
|
+
mkdir my-project
|
|
236
|
+
cd my-project
|
|
237
|
+
pnpm dlx @warpgogol/forge create --in-place --profile forge-shell
|
|
274
238
|
```
|
|
275
239
|
|
|
276
|
-
Then open the
|
|
240
|
+
Then open the folder in your AI IDE.
|
|
277
241
|
|
|
278
242
|
2. **Tell the AI agent:**
|
|
279
243
|
|
|
280
244
|
> I want to bring my existing project into Forge. It's located at /path/to/my/project.
|
|
281
245
|
|
|
282
246
|
The agent will:
|
|
283
|
-
- Detect what kind of project it is (
|
|
247
|
+
- Detect what kind of project it is (game, library, etc.)
|
|
284
248
|
- Move all your files into the new Forge project — including hidden files like `.env`
|
|
285
249
|
- Optionally bring your git history
|
|
286
250
|
- Verify everything builds correctly
|
|
@@ -294,40 +258,43 @@ Just tell the AI agent. It can check the project's health, fix issues, and expla
|
|
|
294
258
|
|
|
295
259
|
### For developers — CLI commands
|
|
296
260
|
|
|
297
|
-
#### Create a new project
|
|
261
|
+
#### Create a new project (in-place)
|
|
298
262
|
|
|
299
263
|
```sh
|
|
300
|
-
# Create a
|
|
301
|
-
|
|
264
|
+
# Create a project folder, then scaffold Forge in-place
|
|
265
|
+
# pnpm dlx downloads Forge temporarily — no global install needed
|
|
266
|
+
mkdir my-project
|
|
267
|
+
cd my-project
|
|
268
|
+
pnpm dlx @warpgogol/forge create --in-place --profile forge-shell
|
|
302
269
|
|
|
303
270
|
# With a specific stack profile
|
|
304
|
-
|
|
305
|
-
forge create --
|
|
306
|
-
forge create --name my-godot-game --profile godot-csharp
|
|
307
|
-
forge create --name my-library --profile forge-shell
|
|
308
|
-
|
|
309
|
-
```
|
|
271
|
+
mkdir my-game && cd my-game
|
|
272
|
+
pnpm dlx @warpgogol/forge create --in-place --profile phaser-turborepo
|
|
310
273
|
|
|
311
|
-
|
|
274
|
+
mkdir my-godot-game && cd my-godot-game
|
|
275
|
+
pnpm dlx @warpgogol/forge create --in-place --profile godot-csharp
|
|
312
276
|
|
|
313
|
-
|
|
314
|
-
pnpm dlx @warpgogol/forge create --name my-
|
|
277
|
+
# Override the project name (derived from folder name by default)
|
|
278
|
+
pnpm dlx @warpgogol/forge create --in-place --profile forge-shell --name my-custom-name
|
|
315
279
|
```
|
|
316
280
|
|
|
281
|
+
After scaffolding, Forge is installed as a local devDependency. Use `pnpm exec forge` for all subsequent commands within the project:
|
|
282
|
+
|
|
317
283
|
#### Bring an existing project into Forge
|
|
318
284
|
|
|
319
285
|
There is no CLI command for transplant — it is an interactive, AI-guided process:
|
|
320
286
|
|
|
321
287
|
```sh
|
|
322
|
-
# 1. Create a new empty Forge project
|
|
323
|
-
|
|
288
|
+
# 1. Create a new empty Forge project (in-place)
|
|
289
|
+
mkdir my-project && cd my-project
|
|
290
|
+
pnpm dlx @warpgogol/forge create --in-place --profile forge-shell
|
|
324
291
|
|
|
325
292
|
# 2. Open the project in Windsurf (tested with forge) or your preferred IDE
|
|
326
293
|
|
|
327
294
|
# 3. Run the /forge-bootstrap skill and choose "transplant" mode
|
|
328
295
|
# The skill will:
|
|
329
296
|
# - Ask for the path to your existing codebase
|
|
330
|
-
# - Detect the stack automatically (
|
|
297
|
+
# - Detect the stack automatically (Phaser, Godot, etc.)
|
|
331
298
|
# - Migrate all files (including .env and git-ignored files)
|
|
332
299
|
# - Optionally transfer git history
|
|
333
300
|
# - Verify the build
|
|
@@ -337,13 +304,13 @@ forge create --name my-project
|
|
|
337
304
|
|
|
338
305
|
```sh
|
|
339
306
|
# Check project health
|
|
340
|
-
forge doctor
|
|
307
|
+
pnpm exec forge doctor
|
|
341
308
|
|
|
342
309
|
# Validate RFCs
|
|
343
|
-
forge rfc.validate
|
|
310
|
+
pnpm exec forge rfc.validate
|
|
344
311
|
|
|
345
312
|
# List available skills
|
|
346
|
-
forge skill.list
|
|
313
|
+
pnpm exec forge skill.list
|
|
347
314
|
```
|
|
348
315
|
|
|
349
316
|
## Stack profiles
|
|
@@ -353,30 +320,29 @@ A stack profile defines the project scaffold: directory structure, dependencies,
|
|
|
353
320
|
| Profile | Project type | Description | First workspace | Use case |
|
|
354
321
|
| --- | --- | --- | --- | --- |
|
|
355
322
|
| `forge-shell` | Governance / library | Minimal Forge shell (default) | — | Governance-only projects, libraries, non-web projects |
|
|
356
|
-
| `astro-typescript-turborepo` | Website | Astro + TypeScript + pnpm + Turborepo | `sites/my-site` | Websites, web apps, content-driven sites |
|
|
357
323
|
| `phaser-turborepo` | Browser game | Phaser + TypeScript + pnpm + Turborepo | `games/my-game` | Browser games, interactive experiences |
|
|
358
324
|
| `godot-csharp` | Godot game | Godot 4.x + C# + pnpm + Turborepo | `games/my-game` | Desktop/mobile games, Godot-based interactive projects |
|
|
359
325
|
|
|
360
326
|
```sh
|
|
361
327
|
# List available profiles (after install)
|
|
362
|
-
forge profile.validate
|
|
328
|
+
pnpm exec forge profile.validate
|
|
363
329
|
```
|
|
364
330
|
|
|
365
|
-
When you bring an existing project through the `/forge-bootstrap` transplant mode, Forge detects the matching profile automatically by checking for marker files (`
|
|
331
|
+
When you bring an existing project through the `/forge-bootstrap` transplant mode, Forge detects the matching profile automatically by checking for marker files (`phaser.config.*`, `project.godot`, etc.).
|
|
366
332
|
|
|
367
333
|
## Upgrade flow
|
|
368
334
|
|
|
369
335
|
When a new version of `@warpgogol/forge` is published, consumers upgrade additively:
|
|
370
336
|
|
|
371
337
|
```sh
|
|
372
|
-
# 1.
|
|
373
|
-
pnpm
|
|
338
|
+
# 1. Update Forge to the latest version (local devDependency)
|
|
339
|
+
pnpm update @warpgogol/forge
|
|
374
340
|
|
|
375
341
|
# 2. Sync skills and binding defaults from the installed version
|
|
376
|
-
forge upgrade
|
|
342
|
+
pnpm exec forge upgrade
|
|
377
343
|
|
|
378
344
|
# 3. Check project health
|
|
379
|
-
forge doctor
|
|
345
|
+
pnpm exec forge doctor
|
|
380
346
|
```
|
|
381
347
|
|
|
382
348
|
`forge upgrade` is additive — it never overwrites operator-set bindings, never deletes files, and is idempotent. It updates `forge.syncedVersion` in `forge.yaml` to track the last synced version. Use `--dry-run` to preview changes.
|
|
@@ -396,12 +362,12 @@ forge doctor
|
|
|
396
362
|
|
|
397
363
|
The typical forge project lifecycle:
|
|
398
364
|
|
|
399
|
-
1. **Create** — `forge create
|
|
365
|
+
1. **Create** — `pnpm dlx @warpgogol/forge create --in-place --profile <profile>` scaffolds a new project in the current directory with forge.yaml, skills, and docs directories
|
|
400
366
|
2. **IDE** — open the project in Windsurf (tested with forge) or your preferred IDE
|
|
401
367
|
3. **Bootstrap** — run `/forge-bootstrap` to configure the project interactively. The skill supports two modes:
|
|
402
368
|
- **Greenfield** — start a new project from scratch: pick a stack, fill in bindings, init git
|
|
403
369
|
- **Transplant** — bring an existing codebase into Forge: detect the stack, migrate code (including git-ignored files like `.env`), optionally transfer git history, verify the build
|
|
404
|
-
4. **Upgrade** — when a new `@warpgogol/forge` version is published, run `forge upgrade` to sync skills and binding defaults additively
|
|
370
|
+
4. **Upgrade** — when a new `@warpgogol/forge` version is published, run `pnpm exec forge upgrade` to sync skills and binding defaults additively
|
|
405
371
|
|
|
406
372
|
## forge.yaml
|
|
407
373
|
|
package/README.uk.md
CHANGED
|
@@ -6,11 +6,10 @@
|
|
|
6
6
|
|
|
7
7
|
## Що можна створити за допомогою Forge
|
|
8
8
|
|
|
9
|
-
Forge підтримує
|
|
9
|
+
Forge підтримує три типи проєктів. Ви обираєте один на старті — все інше відбувається автоматично.
|
|
10
10
|
|
|
11
11
|
| Тип проєкту | Що це | Приклади |
|
|
12
12
|
| --- | --- | --- |
|
|
13
|
-
| **Вебсайт** | Публічний сайт або вебзастосунок — сторінки, блог, портфоліо, лендінг, інтернет-магазин | Сайт фотостудії, сайт ресторану, лендінг SaaS |
|
|
14
13
|
| **Браузерна гра** | Інтерактивна гра, що працює в браузері — 2D, аркада, головоломка, пригода | Лови зірки, головоломка з плитками, платформер |
|
|
15
14
|
| **Управління / бібліотека** | Бібліотека коду або проєкт лише з управлінською структурою — без сайту, без гри, без відео, лише структура та документація | npm-пакет, внутрішній інструмент, центр документації |
|
|
16
15
|
| **Гра Godot** | Десктопна або мобільна гра на Godot 4.x з C# — 2D, 3D, платформер, RPG | Пригода з виглядом зверху, 3D-платформер, головоломка |
|
|
@@ -29,21 +28,17 @@ Forge — це **шар управління**: навички, RFC/ADR робо
|
|
|
29
28
|
| --- | --- | --- |
|
|
30
29
|
| `@warpgogol/werkstatt` | Рушій runtime — місії, релізи, розгортання Leitstand, сертифікація, Bordbuch, сховище артефактів | Усі типи проєктів з управлінням життєвим циклом |
|
|
31
30
|
| `@warpgogol/werkstatt-shared` | Спільна інфраструктура — перевірки, інтеграція, онтологія, паспорт | Встановлюється автоматично з рушієм |
|
|
32
|
-
| `@warpgogol/werkstatt-site` | Плагін Astro-сайту — конвеєр збірки, перевірки контенту, codegen, адаптери розгортання | Вебсайт-проєкти (`astro-typescript-turborepo`) |
|
|
33
31
|
| `@warpgogol/werkstatt-game` | Плагін Phaser-гри — валідатори гри, збірка Vite, адаптери розгортання | Проєкти браузерних ігор (`phaser-turborepo`) |
|
|
34
32
|
| `@warpgogol/werkstatt-godot` | Плагін Godot — валідатори сцен, збірка dotnet, розгортання itch.io, навички Godot | Проєкти ігор Godot (`godot-csharp`) |
|
|
35
33
|
|
|
36
34
|
### Коли потрібні ці пакети
|
|
37
35
|
|
|
38
36
|
- **Проєкти лише з управлінням** (RFC, ADR, навички, центри документації) — Forge сам по собі достатній.
|
|
39
|
-
-
|
|
37
|
+
- **Ігри, проєкти Godot** — встановіть `@warpgogol/werkstatt` (рушій) плюс відповідний плагін стеку. Навичка `forge-bootstrap` налаштовує прив'язки автоматично; самі пакети потрібно встановити як devDependencies.
|
|
40
38
|
|
|
41
39
|
### Встановлення пакунків рушія
|
|
42
40
|
|
|
43
41
|
```sh
|
|
44
|
-
# Проєкт вебсайту
|
|
45
|
-
pnpm add -D @warpgogol/werkstatt @warpgogol/werkstatt-site
|
|
46
|
-
|
|
47
42
|
# Проєкт браузерної гри
|
|
48
43
|
pnpm add -D @warpgogol/werkstatt @warpgogol/werkstatt-game
|
|
49
44
|
|
|
@@ -106,23 +101,7 @@ pnpm --version
|
|
|
106
101
|
|
|
107
102
|
Ви маєте побачити номер версії, наприклад `10.x.x`.
|
|
108
103
|
|
|
109
|
-
#### Крок 3 —
|
|
110
|
-
|
|
111
|
-
Глобальне встановлення означає, що команда `forge` доступна скрізь на вашому комп'ютері, а не лише в одному проєкті:
|
|
112
|
-
|
|
113
|
-
```sh
|
|
114
|
-
pnpm add -g @warpgogol/forge
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
Перевірте:
|
|
118
|
-
|
|
119
|
-
```sh
|
|
120
|
-
forge --version
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
Ви маєте побачити номер версії. Forge встановлено та готовий до роботи.
|
|
124
|
-
|
|
125
|
-
#### Крок 4 — Встановлення IDE зі штучним інтелектом
|
|
104
|
+
#### Крок 3 — Встановлення IDE зі штучним інтелектом
|
|
126
105
|
|
|
127
106
|
Forge працює через розмову з ШІ-агентом. Вам потрібне IDE, що підтримує ШІ-агентів. Рекомендуємо **Windsurf** (протестовано з Forge):
|
|
128
107
|
|
|
@@ -164,23 +143,7 @@ pnpm --version
|
|
|
164
143
|
|
|
165
144
|
Ви маєте побачити номер версії, наприклад `10.x.x`.
|
|
166
145
|
|
|
167
|
-
#### Крок 3 —
|
|
168
|
-
|
|
169
|
-
Глобальне встановлення означає, що команда `forge` доступна скрізь на вашому комп'ютері, а не лише в одному проєкті:
|
|
170
|
-
|
|
171
|
-
```sh
|
|
172
|
-
pnpm add -g @warpgogol/forge
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
Перевірте:
|
|
176
|
-
|
|
177
|
-
```sh
|
|
178
|
-
forge --version
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
Ви маєте побачити номер версії. Forge встановлено та готовий до роботи.
|
|
182
|
-
|
|
183
|
-
#### Крок 4 — Встановлення IDE зі штучним інтелектом
|
|
146
|
+
#### Крок 3 — Встановлення IDE зі штучним інтелектом
|
|
184
147
|
|
|
185
148
|
Forge працює через розмову з ШІ-агентом. Вам потрібне IDE, що підтримує ШІ-агентів. Рекомендуємо **Windsurf** (протестовано з Forge):
|
|
186
149
|
|
|
@@ -207,10 +170,8 @@ dotnet --version
|
|
|
207
170
|
### Усунення проблем
|
|
208
171
|
|
|
209
172
|
- **«command not found» після встановлення Node.js** — Закрийте та знову відкрийте термінал (Ubuntu) або PowerShell (Windows). Системі потрібно перезавантажити список доступних команд.
|
|
210
|
-
- **«EACCES permission denied» в Ubuntu під час глобального встановлення Forge** — Виконайте `sudo pnpm add -g @warpgogol/forge`.
|
|
211
173
|
- **«corepack: command not found»** — Ваша версія Node.js занадто стара. Встановіть Node.js 24+ за кроками вище.
|
|
212
|
-
- **
|
|
213
|
-
- **ШІ-агент не знає про Forge** — Ви відкрили порожню папку, але ШІ-агент не має контексту Forge. Спочатку виконайте `forge create --name my-project --profile astro-typescript-turborepo` (або відповідний профіль) у терміналі, потім відкрийте створену папку в вашому IDE. Команда `forge create` наповнює папку навичками, конфігурацією та `AGENTS.md` — без цього ШІ-агент не може виявити Forge.
|
|
174
|
+
- **ШІ-агент не знає про Forge** — Ви відкрили порожню папку, але ШІ-агент не має контексту Forge. Спочатку виконайте `pnpm dlx @warpgogol/forge create --in-place --profile phaser-turborepo` (або відповідний профіль) у терміналі, потім відкрийте папку в вашому IDE. Команда `forge create` наповнює поточну папку навичками, конфігурацією та `AGENTS.md` — без цього ШІ-агент не може виявити Forge.
|
|
214
175
|
|
|
215
176
|
---
|
|
216
177
|
|
|
@@ -222,26 +183,27 @@ dotnet --version
|
|
|
222
183
|
|
|
223
184
|
#### Створення нового проєкту з нуля
|
|
224
185
|
|
|
225
|
-
1. **Створіть
|
|
186
|
+
1. **Створіть папку проєкту та згенеруйте каркас Forge на місці.** Відкрийте термінал (PowerShell на Windows, Термінал на Ubuntu) і виконайте:
|
|
226
187
|
|
|
227
188
|
```sh
|
|
228
|
-
|
|
189
|
+
mkdir my-game
|
|
190
|
+
cd my-game
|
|
191
|
+
pnpm dlx @warpgogol/forge create --in-place --profile phaser-turborepo
|
|
229
192
|
```
|
|
230
193
|
|
|
231
|
-
|
|
194
|
+
Назва проєкту визначається з назви папки (`my-game` у цьому прикладі). Ви можете перевизначити її прапорцем `--name`. Це наповнює поточну папку усьом, що потрібно Forge — навичками, конфігурацією та структурою проєкту. Для інших типів проєктів використовуйте інший `--profile`:
|
|
232
195
|
|
|
233
|
-
| Що ви хочете створити | Прапорець профілю
|
|
234
|
-
| ---------------------------------------- |
|
|
235
|
-
|
|
|
236
|
-
|
|
|
237
|
-
|
|
|
238
|
-
| Бібліотека або проєкт лише з управлінням | `--profile forge-shell` |
|
|
196
|
+
| Що ви хочете створити | Прапорець профілю |
|
|
197
|
+
| ---------------------------------------- | ---------------------------- |
|
|
198
|
+
| Браузерна гра (2D, аркада, головоломка) | `--profile phaser-turborepo` |
|
|
199
|
+
| Гра Godot (десктоп, мобільний, 2D/3D) | `--profile godot-csharp` |
|
|
200
|
+
| Бібліотека або проєкт лише з управлінням | `--profile forge-shell` |
|
|
239
201
|
|
|
240
|
-
2. **Відкрийте папку проєкту в вашому IDE.** Відкрийте
|
|
202
|
+
2. **Відкрийте папку проєкту в вашому IDE.** Відкрийте папку з кроку 1 у Windsurf або вашому IDE.
|
|
241
203
|
|
|
242
204
|
3. **Скажіть ШІ-агенту, що ви хочете створити.** Просто напишіть це в чаті своїми словами. Наприклад:
|
|
243
205
|
|
|
244
|
-
> Я хочу зробити
|
|
206
|
+
> Я хочу зробити гру на Godot, де ловиш зірки, що падають.
|
|
245
207
|
|
|
246
208
|
Або:
|
|
247
209
|
|
|
@@ -252,12 +214,12 @@ dotnet --version
|
|
|
252
214
|
> Я хочу створити TypeScript-бібліотеку для розрахунку астрологічних карт.
|
|
253
215
|
|
|
254
216
|
Це все. ШІ-агент зробить усе інше:
|
|
255
|
-
- Налаштує структуру проєкту залежно від того, що ви описали (
|
|
217
|
+
- Налаштує структуру проєкту залежно від того, що ви описали (гра, бібліотека тощо)
|
|
256
218
|
- Налаштує мовні вподобання та параметри проєкту
|
|
257
|
-
- Запустить живий попередній перегляд, щоб ви бачили свою роботу (для
|
|
219
|
+
- Запустить живий попередній перегляд, щоб ви бачили свою роботу (для ігор)
|
|
258
220
|
- Скаже вам URL для відкриття в браузері
|
|
259
221
|
|
|
260
|
-
4. **Дивіться попередній перегляд.** Для
|
|
222
|
+
4. **Дивіться попередній перегляд.** Для ігор ШІ-агент дасть вам посилання localhost. Натисніть його — ваш проєкт уже запущений. Коли ви описуєте зміни, агент оновлює проєкт, а попередній перегляд оновлюється автоматично.
|
|
261
223
|
|
|
262
224
|
Для проєктів управління та бібліотек візуального попереднього перегляду немає — агент налаштує структуру проєкту та скаже, коли все готово.
|
|
263
225
|
|
|
@@ -267,20 +229,22 @@ dotnet --version
|
|
|
267
229
|
|
|
268
230
|
Якщо ви вже маєте проєкт десь інше і хочете перенести його у Forge:
|
|
269
231
|
|
|
270
|
-
1. **Створіть проєкт Forge.** Відкрийте
|
|
232
|
+
1. **Створіть проєкт Forge.** Відкрийте термінал, створіть папку і виконайте:
|
|
271
233
|
|
|
272
234
|
```sh
|
|
273
|
-
|
|
235
|
+
mkdir my-project
|
|
236
|
+
cd my-project
|
|
237
|
+
pnpm dlx @warpgogol/forge create --in-place --profile forge-shell
|
|
274
238
|
```
|
|
275
239
|
|
|
276
|
-
Потім відкрийте
|
|
240
|
+
Потім відкрийте папку в вашому IDE.
|
|
277
241
|
|
|
278
242
|
2. **Скажіть ШІ-агенту:**
|
|
279
243
|
|
|
280
244
|
> Я хочу перенести свій наявний проєкт у Forge. Він знаходиться за шляхом /path/to/my/project.
|
|
281
245
|
|
|
282
246
|
Агент:
|
|
283
|
-
- Визначить, який це тип проєкту (
|
|
247
|
+
- Визначить, який це тип проєкту (гра, бібліотека тощо)
|
|
284
248
|
- Перемістить усі ваші файли у новий проєкт Forge — включно з прихованими файлами на кшталт `.env`
|
|
285
249
|
- За бажанням перенесе вашу історію git
|
|
286
250
|
- Перевірить, чи все коректно збирається
|
|
@@ -294,40 +258,43 @@ dotnet --version
|
|
|
294
258
|
|
|
295
259
|
### Для розробників — CLI-команди
|
|
296
260
|
|
|
297
|
-
#### Створення нового проєкту
|
|
261
|
+
#### Створення нового проєкту (на місці)
|
|
298
262
|
|
|
299
263
|
```sh
|
|
300
|
-
#
|
|
301
|
-
|
|
264
|
+
# Створіть папку проєкту, потім згенеруйте каркас Forge на місці
|
|
265
|
+
# pnpm dlx завантажує Forge тимчасово — глобальне встановлення не потрібне
|
|
266
|
+
mkdir my-project
|
|
267
|
+
cd my-project
|
|
268
|
+
pnpm dlx @warpgogol/forge create --in-place --profile forge-shell
|
|
302
269
|
|
|
303
270
|
# З конкретним профілем стеку
|
|
304
|
-
|
|
305
|
-
forge create --
|
|
306
|
-
forge create --name my-godot-game --profile godot-csharp
|
|
307
|
-
forge create --name my-library --profile forge-shell
|
|
308
|
-
|
|
309
|
-
```
|
|
271
|
+
mkdir my-game && cd my-game
|
|
272
|
+
pnpm dlx @warpgogol/forge create --in-place --profile phaser-turborepo
|
|
310
273
|
|
|
311
|
-
|
|
274
|
+
mkdir my-godot-game && cd my-godot-game
|
|
275
|
+
pnpm dlx @warpgogol/forge create --in-place --profile godot-csharp
|
|
312
276
|
|
|
313
|
-
|
|
314
|
-
pnpm dlx @warpgogol/forge create --name my-
|
|
277
|
+
# Перевизначити назву проєкту (за замовчуванням визначається з назви папки)
|
|
278
|
+
pnpm dlx @warpgogol/forge create --in-place --profile forge-shell --name my-custom-name
|
|
315
279
|
```
|
|
316
280
|
|
|
281
|
+
Після створення каркаса Forge встановлюється як локальна devDependency. Використовуйте `pnpm exec forge` для всіх наступних команд у проєкті:
|
|
282
|
+
|
|
317
283
|
#### Перенесення наявного проєкту у Forge
|
|
318
284
|
|
|
319
285
|
CLI-команди для перенесення немає — це інтерактивний процес під керівництвом ШІ:
|
|
320
286
|
|
|
321
287
|
```sh
|
|
322
|
-
# 1. Створіть новий порожній проєкт Forge
|
|
323
|
-
|
|
288
|
+
# 1. Створіть новий порожній проєкт Forge (на місці)
|
|
289
|
+
mkdir my-project && cd my-project
|
|
290
|
+
pnpm dlx @warpgogol/forge create --in-place --profile forge-shell
|
|
324
291
|
|
|
325
292
|
# 2. Відкрийте проєкт у Windsurf (протестовано з Forge) або вашому IDE
|
|
326
293
|
|
|
327
294
|
# 3. Запустіть навичку /forge-bootstrap і оберіть режим "transplant"
|
|
328
295
|
# Навичка:
|
|
329
296
|
# - Запитає шлях до вашого наявного коду
|
|
330
|
-
# - Автоматично визначить стек (
|
|
297
|
+
# - Автоматично визначить стек (Phaser, Godot тощо)
|
|
331
298
|
# - Перенесе всі файли (включно з .env та git-ігнорованими)
|
|
332
299
|
# - За бажанням перенесе історію git
|
|
333
300
|
# - Перевірить збірку
|
|
@@ -337,13 +304,13 @@ forge create --name my-project
|
|
|
337
304
|
|
|
338
305
|
```sh
|
|
339
306
|
# Перевірити стан проєкту
|
|
340
|
-
forge doctor
|
|
307
|
+
pnpm exec forge doctor
|
|
341
308
|
|
|
342
309
|
# Валідувати RFC
|
|
343
|
-
forge rfc.validate
|
|
310
|
+
pnpm exec forge rfc.validate
|
|
344
311
|
|
|
345
312
|
# Список доступних навичок
|
|
346
|
-
forge skill.list
|
|
313
|
+
pnpm exec forge skill.list
|
|
347
314
|
```
|
|
348
315
|
|
|
349
316
|
## Профілі стеку
|
|
@@ -353,30 +320,29 @@ forge skill.list
|
|
|
353
320
|
| Профіль | Тип проєкту | Опис | Перший робочий простір | Призначення |
|
|
354
321
|
| --- | --- | --- | --- | --- |
|
|
355
322
|
| `forge-shell` | Управління / бібліотека | Мінімальний каркас Forge (за замовчуванням) | — | Проєкти лише з управлінням, бібліотеки, невеб-проєкти |
|
|
356
|
-
| `astro-typescript-turborepo` | Вебсайт | Astro + TypeScript + pnpm + Turborepo | `sites/my-site` | Вебсайти, вебзастосунки, контентні сайти |
|
|
357
323
|
| `phaser-turborepo` | Браузерна гра | Phaser + TypeScript + pnpm + Turborepo | `games/my-game` | Браузерні ігри, інтерактивні досвіди |
|
|
358
324
|
| `godot-csharp` | Гра Godot | Godot 4.x + C# + pnpm + Turborepo | `games/my-game` | Десктопні/мобільні ігри, інтерактивні проєкти на Godot |
|
|
359
325
|
|
|
360
326
|
```sh
|
|
361
327
|
# Список доступних профілів (після встановлення)
|
|
362
|
-
forge profile.validate
|
|
328
|
+
pnpm exec forge profile.validate
|
|
363
329
|
```
|
|
364
330
|
|
|
365
|
-
Коли ви переносите наявний проєкт через режим `/forge-bootstrap` transplant, Forge автоматично визначає відповідний профіль, перевіряючи файли-маркери (`
|
|
331
|
+
Коли ви переносите наявний проєкт через режим `/forge-bootstrap` transplant, Forge автоматично визначає відповідний профіль, перевіряючи файли-маркери (`phaser.config.*`, `project.godot` тощо).
|
|
366
332
|
|
|
367
333
|
## Процес оновлення
|
|
368
334
|
|
|
369
335
|
Коли публікується нова версія `@warpgogol/forge`, споживачі оновлюються адитивно:
|
|
370
336
|
|
|
371
337
|
```sh
|
|
372
|
-
# 1.
|
|
373
|
-
pnpm
|
|
338
|
+
# 1. Оновити Forge до останньої версії (локальна devDependency)
|
|
339
|
+
pnpm update @warpgogol/forge
|
|
374
340
|
|
|
375
341
|
# 2. Синхронізувати навички та стандартні прив'язки з встановленої версії
|
|
376
|
-
forge upgrade
|
|
342
|
+
pnpm exec forge upgrade
|
|
377
343
|
|
|
378
344
|
# 3. Перевірити стан проєкту
|
|
379
|
-
forge doctor
|
|
345
|
+
pnpm exec forge doctor
|
|
380
346
|
```
|
|
381
347
|
|
|
382
348
|
`forge upgrade` — адитивний: він ніколи не перезаписує прив'язки, встановлені оператором, ніколи не видаляє файли та є ідемпотентним. Він оновлює `forge.syncedVersion` у `forge.yaml`, щоб відстежувати останню синхронізовану версію. Використовуйте `--dry-run` для попереднього перегляду змін.
|
|
@@ -396,12 +362,12 @@ forge doctor
|
|
|
396
362
|
|
|
397
363
|
Типовий життєвий цикл проєкту Forge:
|
|
398
364
|
|
|
399
|
-
1. **Створення** — `forge create
|
|
365
|
+
1. **Створення** — `pnpm dlx @warpgogol/forge create --in-place --profile <профіль>` генерує каркас нового проєкту в поточній директорії з forge.yaml, навичками та директоріями документації
|
|
400
366
|
2. **IDE** — відкрийте проєкт у Windsurf (протестовано з Forge) або вашому IDE
|
|
401
367
|
3. **Bootstrap** — запустіть `/forge-bootstrap` для інтерактивного налаштування проєкту. Навичка підтримує два режими:
|
|
402
368
|
- **Greenfield** — створення нового проєкту з нуля: оберіть стек, заповніть прив'язки, ініціалізуйте git
|
|
403
369
|
- **Transplant** — перенесення наявного коду у Forge: визначення стеку, міграція коду (включно з git-ігнорованими файлами на кшталт `.env`), за бажанням перенесення історії git, перевірка збірки
|
|
404
|
-
4. **Оновлення** — коли публікується нова версія `@warpgogol/forge`, запустіть `forge upgrade` для адитивної синхронізації навичок та стандартних прив'язок
|
|
370
|
+
4. **Оновлення** — коли публікується нова версія `@warpgogol/forge`, запустіть `pnpm exec forge upgrade` для адитивної синхронізації навичок та стандартних прив'язок
|
|
405
371
|
|
|
406
372
|
## forge.yaml
|
|
407
373
|
|