@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 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: `astro-typescript-turborepo`, `phaser-turborepo`, `godot-csharp`, `forge-shell` (minimal — default for `create`).
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 four kinds of projects. You pick one when you start — everything else is automatic.
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
- - **Websites, 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.
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 Forge globally
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 Forge globally
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
- - **Windsurf can't find `forge`**Close and reopen Windsurf after installing Forge. IDEs need to restart to pick up new global commands.
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 project.** Open a terminal (PowerShell on Windows, Terminal on Ubuntu) and run:
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
- forge create --name my-site --profile astro-typescript-turborepo
189
+ mkdir my-game
190
+ cd my-game
191
+ pnpm dlx @warpgogol/forge create --in-place --profile phaser-turborepo
229
192
  ```
230
193
 
231
- Replace `my-site` with your project name (lowercase letters and hyphens). This creates a new folder with everything Forge needs — skills, configuration, and project structure. For other project types, use a different `--profile`:
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 | Profile flag |
234
- | --------------------------------------- | -------------------------------------- |
235
- | Website (landing page, blog, portfolio) | `--profile astro-typescript-turborepo` |
236
- | Browser game (2D, arcade, puzzle) | `--profile phaser-turborepo` |
237
- | Godot game (desktop, mobile, 2D/3D) | `--profile godot-csharp` |
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 that was created in step 1 in Windsurf or your preferred IDE.
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 website for my photography studio.
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 (website, game, library, etc.)
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 websites and games)
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 websites and 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.
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
- forge create --name my-project
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 created folder in your AI IDE.
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 (website, game, library, etc.)
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 new project (scaffold + init + skills + AGENTS.md in one command)
301
- forge create --name my-project
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
- forge create --name my-site --profile astro-typescript-turborepo
305
- forge create --name my-game --profile phaser-turborepo
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
- If Forge is not installed globally, use `pnpm dlx` instead:
274
+ mkdir my-godot-game && cd my-godot-game
275
+ pnpm dlx @warpgogol/forge create --in-place --profile godot-csharp
312
276
 
313
- ```sh
314
- pnpm dlx @warpgogol/forge create --name my-project
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
- forge create --name my-project
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 (Astro, Phaser, Godot, etc.)
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 (`astro.config.*`, `phaser.config.*`, `project.godot`, etc.).
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. Install the latest version
373
- pnpm add -g @warpgogol/forge@latest
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` bootstraps a new project with forge.yaml, skills, and docs directories
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
- - **Вебсайти, ігри, проєкти Godot** — встановіть `@warpgogol/werkstatt` (рушій) плюс відповідний плагін стеку. Навичка `forge-bootstrap` налаштовує прив'язки автоматично; самі пакети потрібно встановити як devDependencies.
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 — Глобальне встановлення Forge
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 — Глобальне встановлення Forge
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
- - **Windsurf не бачить `forge`** Закрийте та знову відкрийте Windsurf після встановлення Forge. IDE потрібно перезапустити, щоб підхопити нові глобальні команди.
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. **Створіть проєкт Forge.** Відкрийте термінал (PowerShell на Windows, Термінал на Ubuntu) і виконайте:
186
+ 1. **Створіть папку проєкту та згенеруйте каркас Forge на місці.** Відкрийте термінал (PowerShell на Windows, Термінал на Ubuntu) і виконайте:
226
187
 
227
188
  ```sh
228
- forge create --name my-site --profile astro-typescript-turborepo
189
+ mkdir my-game
190
+ cd my-game
191
+ pnpm dlx @warpgogol/forge create --in-place --profile phaser-turborepo
229
192
  ```
230
193
 
231
- Замініть `my-site` на назву вашого проєкту (малі літери та дефіси). Це створить нову папку з усьом, що потрібно Forge — навичками, конфігурацією та структурою проєкту. Для інших типів проєктів використовуйте інший `--profile`:
194
+ Назва проєкту визначається з назви папки (`my-game` у цьому прикладі). Ви можете перевизначити її прапорцем `--name`. Це наповнює поточну папку усьом, що потрібно Forge — навичками, конфігурацією та структурою проєкту. Для інших типів проєктів використовуйте інший `--profile`:
232
195
 
233
- | Що ви хочете створити | Прапорець профілю |
234
- | ---------------------------------------- | -------------------------------------- |
235
- | Вебсайт (лендінг, блог, портфоліо) | `--profile astro-typescript-turborepo` |
236
- | Браузерна гра (2D, аркада, головоломка) | `--profile phaser-turborepo` |
237
- | Гра Godot (десктоп, мобільний, 2D/3D) | `--profile godot-csharp` |
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.** Відкрийте папку, створену на кроці 1, у Windsurf або вашому 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. **Дивіться попередній перегляд.** Для вебсайтів та ігор ШІ-агент дасть вам посилання localhost. Натисніть його — ваш проєкт уже запущений. Коли ви описуєте зміни, агент оновлює проєкт, а попередній перегляд оновлюється автоматично.
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
- forge create --name my-project
235
+ mkdir my-project
236
+ cd my-project
237
+ pnpm dlx @warpgogol/forge create --in-place --profile forge-shell
274
238
  ```
275
239
 
276
- Потім відкрийте створену папку в вашому IDE.
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
- # Створити новий проєкт (каркас + ініціалізація + навички + AGENTS.md однією командою)
301
- forge create --name my-project
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
- forge create --name my-site --profile astro-typescript-turborepo
305
- forge create --name my-game --profile phaser-turborepo
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
- Якщо Forge не встановлено глобально, використовуйте `pnpm dlx`:
274
+ mkdir my-godot-game && cd my-godot-game
275
+ pnpm dlx @warpgogol/forge create --in-place --profile godot-csharp
312
276
 
313
- ```sh
314
- pnpm dlx @warpgogol/forge create --name my-project
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
- forge create --name my-project
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
- # - Автоматично визначить стек (Astro, Phaser, Godot тощо)
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 автоматично визначає відповідний профіль, перевіряючи файли-маркери (`astro.config.*`, `phaser.config.*`, `project.godot` тощо).
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 add -g @warpgogol/forge@latest
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` ініціалізує новий проєкт з forge.yaml, навичками та директоріями документації
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