@warpgogol/forge 0.17.0 → 0.17.2
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 +251 -36
- package/README.uk.md +490 -0
- package/bin/cli.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,26 +1,223 @@
|
|
|
1
1
|
# @warpgogol/forge
|
|
2
2
|
|
|
3
|
+
[Українська](README.uk.md) | English
|
|
4
|
+
|
|
3
5
|
Portable governance engine for AI-assisted project development. Provides skills, RFC/ADR workflows, naming conventions, spec vendoring, and a CLI — all framework-agnostic and dependency-free (only `yaml` + `zod`).
|
|
4
6
|
|
|
5
|
-
##
|
|
7
|
+
## What you can build with Forge
|
|
8
|
+
|
|
9
|
+
Forge supports four kinds of projects. You pick one when you start — everything else is automatic.
|
|
10
|
+
|
|
11
|
+
| Project type | What it is | Example ideas |
|
|
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
|
+
| **Browser game** | An interactive game that runs in a web browser — 2D, arcade, puzzle, adventure | Catch falling stars, tile-matching puzzle, platformer |
|
|
15
|
+
| **Video** | A programmatic video composition — animated logo, intro, product showcase, motion design | Brand intro video, product demo, social media ad clip |
|
|
16
|
+
| **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 |
|
|
17
|
+
|
|
18
|
+
Each project type gets its own scaffold: the right folder structure, the right dependencies, the right tools. You don't need to know what any of those are — Forge sets them up for you.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Complete installation guide (from zero)
|
|
23
|
+
|
|
24
|
+
If you've never programmed before, this section takes you from a completely empty computer to a working Forge setup. Follow the steps for your operating system.
|
|
25
|
+
|
|
26
|
+
### What you need
|
|
27
|
+
|
|
28
|
+
You need two free programs:
|
|
29
|
+
|
|
30
|
+
- **Node.js** (version 22 or newer) — lets your computer run JavaScript tools.
|
|
31
|
+
- **pnpm** — the package manager Forge uses to install dependencies. It's built into Node.js and just needs to be switched on.
|
|
32
|
+
|
|
33
|
+
Both are free. You install Node.js first, then enable pnpm with a single command.
|
|
34
|
+
|
|
35
|
+
### Ubuntu
|
|
36
|
+
|
|
37
|
+
#### Step 1 — Install Node.js
|
|
38
|
+
|
|
39
|
+
1. Open the **Terminal** app (press `Ctrl + Alt + T`, or search for "Terminal" in your applications).
|
|
40
|
+
|
|
41
|
+
2. Download and install Node.js 22 (LTS) by pasting this command and pressing Enter:
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt-get install -y nodejs
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
You'll be asked for your password — type it (you won't see the characters as you type, that's normal) and press Enter.
|
|
48
|
+
|
|
49
|
+
3. Verify it worked:
|
|
50
|
+
|
|
51
|
+
```sh
|
|
52
|
+
node --version
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
You should see a version number like `v22.x.x`, not an error message.
|
|
56
|
+
|
|
57
|
+
#### Step 2 — Enable pnpm
|
|
58
|
+
|
|
59
|
+
Node.js includes a tool called **Corepack** that manages package managers. Enable pnpm with:
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
corepack enable pnpm
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Verify:
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
pnpm --version
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
You should see a version number like `10.x.x`.
|
|
72
|
+
|
|
73
|
+
#### Step 3 — Install Forge globally
|
|
74
|
+
|
|
75
|
+
Installing Forge globally means the `forge` command is available everywhere on your computer, not just inside one project:
|
|
76
|
+
|
|
77
|
+
```sh
|
|
78
|
+
pnpm add -g @warpgogol/forge
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Verify:
|
|
82
|
+
|
|
83
|
+
```sh
|
|
84
|
+
forge --version
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
You should see a version number. Forge is now installed and ready.
|
|
88
|
+
|
|
89
|
+
#### Step 4 — Install an AI-powered IDE
|
|
90
|
+
|
|
91
|
+
Forge works through conversation with an AI agent. You need an IDE that supports AI agents. We recommend **Windsurf** (tested with Forge):
|
|
92
|
+
|
|
93
|
+
1. Go to [windsurf.com](https://windsurf.com) and download the Linux version.
|
|
94
|
+
2. Open the downloaded file and follow the installer.
|
|
95
|
+
3. Launch Windsurf.
|
|
96
|
+
|
|
97
|
+
You can also use **Cursor** ([cursor.com](https://cursor.com)) or any IDE that supports AI agent skills.
|
|
98
|
+
|
|
99
|
+
### Windows
|
|
100
|
+
|
|
101
|
+
#### Step 1 — Install Node.js
|
|
102
|
+
|
|
103
|
+
1. Go to [nodejs.org](https://nodejs.org) in your web browser.
|
|
104
|
+
2. Download the **LTS version** (it will say "LTS" and "Recommended for Most Users"). It should be version 22.x or newer.
|
|
105
|
+
3. Run the downloaded installer (`.msi` file). Accept all default options by clicking **Next** through each screen, then **Install**. If Windows asks for permission, click **Yes**.
|
|
106
|
+
|
|
107
|
+
4. Verify it worked. Open **PowerShell** (search for "PowerShell" in the Start menu) and type:
|
|
108
|
+
|
|
109
|
+
```sh
|
|
110
|
+
node --version
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
You should see a version number like `v22.x.x`, not an error message.
|
|
114
|
+
|
|
115
|
+
#### Step 2 — Enable pnpm
|
|
116
|
+
|
|
117
|
+
Node.js includes a tool called **Corepack** that manages package managers. Enable pnpm with:
|
|
118
|
+
|
|
119
|
+
```sh
|
|
120
|
+
corepack enable pnpm
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Verify:
|
|
124
|
+
|
|
125
|
+
```sh
|
|
126
|
+
pnpm --version
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
You should see a version number like `10.x.x`.
|
|
130
|
+
|
|
131
|
+
#### Step 3 — Install Forge globally
|
|
132
|
+
|
|
133
|
+
Installing Forge globally means the `forge` command is available everywhere on your computer, not just inside one project:
|
|
134
|
+
|
|
135
|
+
```sh
|
|
136
|
+
pnpm add -g @warpgogol/forge
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Verify:
|
|
140
|
+
|
|
141
|
+
```sh
|
|
142
|
+
forge --version
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
You should see a version number. Forge is now installed and ready.
|
|
146
|
+
|
|
147
|
+
#### Step 4 — Install an AI-powered IDE
|
|
148
|
+
|
|
149
|
+
Forge works through conversation with an AI agent. You need an IDE that supports AI agents. We recommend **Windsurf** (tested with Forge):
|
|
150
|
+
|
|
151
|
+
1. Go to [windsurf.com](https://windsurf.com) and download the Windows version.
|
|
152
|
+
2. Run the downloaded installer and follow the setup wizard.
|
|
153
|
+
3. Launch Windsurf.
|
|
154
|
+
|
|
155
|
+
You can also use **Cursor** ([cursor.com](https://cursor.com)) or any IDE that supports AI agent skills.
|
|
156
|
+
|
|
157
|
+
### Optional — Install FFmpeg (only for video projects)
|
|
158
|
+
|
|
159
|
+
If you're planning to create **video** projects (the `editframe` profile), you need **FFmpeg** — a free tool for processing video and audio.
|
|
160
|
+
|
|
161
|
+
**Ubuntu:**
|
|
6
162
|
|
|
7
163
|
```sh
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
pnpm add @warpgogol/forge
|
|
164
|
+
sudo apt-get install -y ffmpeg
|
|
165
|
+
ffmpeg -version
|
|
11
166
|
```
|
|
12
167
|
|
|
168
|
+
**Windows:**
|
|
169
|
+
|
|
170
|
+
1. Go to [ffmpeg.org/download.html](https://ffmpeg.org/download.html) in your browser.
|
|
171
|
+
2. Download a Windows build (look for "Windows builds" — the gyan.dev or BtbN builds are good choices).
|
|
172
|
+
3. Extract the downloaded `.zip` file to a folder, e.g. `C:\ffmpeg`.
|
|
173
|
+
4. Add FFmpeg to your system PATH:
|
|
174
|
+
- Open the Start menu, search for "Environment Variables", and click "Edit the system environment variables".
|
|
175
|
+
- Click **Environment Variables**.
|
|
176
|
+
- Under "System variables" (or "User variables"), find **Path**, select it, and click **Edit**.
|
|
177
|
+
- Click **New** and type `C:\ffmpeg\bin` (or wherever you extracted FFmpeg, in the `bin` subfolder).
|
|
178
|
+
- Click **OK** on all three windows.
|
|
179
|
+
5. Close and reopen PowerShell, then verify:
|
|
180
|
+
|
|
181
|
+
```sh
|
|
182
|
+
ffmpeg -version
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
You should see version information, not an error.
|
|
186
|
+
|
|
187
|
+
### Troubleshooting
|
|
188
|
+
|
|
189
|
+
- **"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.
|
|
190
|
+
- **"EACCES permission denied" on Ubuntu when installing Forge globally** — Run `sudo pnpm add -g @warpgogol/forge` instead.
|
|
191
|
+
- **"corepack: command not found"** — Your Node.js version is too old. Install Node.js 22+ using the steps above.
|
|
192
|
+
- **Windsurf can't find `forge`** — Close and reopen Windsurf after installing Forge. IDEs need to restart to pick up new global commands.
|
|
193
|
+
- **AI agent doesn't know about Forge** — You opened an empty folder, but the AI agent has no Forge context. Run `forge create my-project --profile editframe` (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.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
13
197
|
## Quick start
|
|
14
198
|
|
|
15
|
-
### For creative operators —
|
|
199
|
+
### For creative operators — one command, then just talk
|
|
16
200
|
|
|
17
|
-
You
|
|
201
|
+
You need to run one command in the terminal to create your project. After that, everything works through conversation with an AI agent — no more commands.
|
|
18
202
|
|
|
19
203
|
#### Start a new project from scratch
|
|
20
204
|
|
|
21
|
-
1. **Create
|
|
205
|
+
1. **Create a Forge project.** Open a terminal (PowerShell on Windows, Terminal on Ubuntu) and run:
|
|
206
|
+
|
|
207
|
+
```sh
|
|
208
|
+
forge create my-brand-video --profile editframe
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Replace `my-brand-video` 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`:
|
|
22
212
|
|
|
23
|
-
|
|
213
|
+
| What you want to build | Profile flag |
|
|
214
|
+
| ----------------------------------------- | -------------------------------------- |
|
|
215
|
+
| Video (brand video, intro, motion design) | `--profile editframe` |
|
|
216
|
+
| Website (landing page, blog, portfolio) | `--profile astro-typescript-turborepo` |
|
|
217
|
+
| Browser game (2D, arcade, puzzle) | `--profile phaser-turborepo` |
|
|
218
|
+
| Library or governance-only project | `--profile forge-shell` |
|
|
219
|
+
|
|
220
|
+
2. **Open the project folder in your AI IDE.** Open the folder that was created in step 1 in Windsurf or your preferred IDE.
|
|
24
221
|
|
|
25
222
|
3. **Tell the AI agent what you want to build.** Just type it in the chat, in your own words. For example:
|
|
26
223
|
|
|
@@ -34,33 +231,44 @@ You don't need to know what a terminal is. You don't need to type a single comma
|
|
|
34
231
|
|
|
35
232
|
> I want to make a browser game where you catch falling stars.
|
|
36
233
|
|
|
234
|
+
Or:
|
|
235
|
+
|
|
236
|
+
> I want to create a TypeScript library for calculating astrology charts.
|
|
237
|
+
|
|
37
238
|
That's it. The AI agent will do everything else:
|
|
38
|
-
-
|
|
39
|
-
- Set up the project structure based on what you described (video, website, game, etc.)
|
|
239
|
+
- Set up the project structure based on what you described (video, website, game, library, etc.)
|
|
40
240
|
- Configure language preferences and project settings
|
|
41
|
-
- Start a live preview so you can see your work
|
|
241
|
+
- Start a live preview so you can see your work (for websites, games, and videos)
|
|
42
242
|
- Tell you the URL to open in your browser
|
|
43
243
|
|
|
44
|
-
4. **Watch the preview.**
|
|
244
|
+
4. **Watch the preview.** For websites, games, and videos, 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.
|
|
245
|
+
|
|
246
|
+
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.
|
|
45
247
|
|
|
46
|
-
5. **Create together.** From here on, you just talk. Want a different color? Want to add a scene? Want to change the music? Just say it. The agent handles all the technical work.
|
|
248
|
+
5. **Create together.** From here on, you just talk. Want a different color? Want to add a scene? Want to change the music? Want to add a new function to your library? Just say it. The agent handles all the technical work.
|
|
47
249
|
|
|
48
250
|
#### Bring an existing project into Forge
|
|
49
251
|
|
|
50
252
|
If you already have a project somewhere else and want to move it into Forge:
|
|
51
253
|
|
|
52
|
-
1. **Create
|
|
254
|
+
1. **Create a Forge project.** Open a terminal and run:
|
|
255
|
+
|
|
256
|
+
```sh
|
|
257
|
+
forge create my-project
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Then open the created folder in your AI IDE.
|
|
53
261
|
|
|
54
262
|
2. **Tell the AI agent:**
|
|
55
263
|
|
|
56
264
|
> I want to bring my existing project into Forge. It's located at /path/to/my/project.
|
|
57
265
|
|
|
58
266
|
The agent will:
|
|
59
|
-
- Detect what kind of project it is (website, video, game, etc.)
|
|
267
|
+
- Detect what kind of project it is (website, video, game, library, etc.)
|
|
60
268
|
- Move all your files into the new Forge project — including hidden files like `.env`
|
|
61
269
|
- Optionally bring your git history
|
|
62
270
|
- Verify everything builds correctly
|
|
63
|
-
- Start a live preview
|
|
271
|
+
- Start a live preview (for visual project types)
|
|
64
272
|
|
|
65
273
|
#### What if something goes wrong?
|
|
66
274
|
|
|
@@ -74,15 +282,20 @@ Just tell the AI agent. It can check the project's health, fix issues, and expla
|
|
|
74
282
|
|
|
75
283
|
```sh
|
|
76
284
|
# Create a new project (scaffold + init + skills + AGENTS.md in one command)
|
|
77
|
-
|
|
285
|
+
forge create my-project
|
|
78
286
|
|
|
79
287
|
# With a specific stack profile
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
288
|
+
forge create my-site --profile astro-typescript-turborepo
|
|
289
|
+
forge create my-game --profile phaser-turborepo
|
|
290
|
+
forge create my-video --profile editframe
|
|
291
|
+
forge create my-library --profile forge-shell
|
|
292
|
+
|
|
293
|
+
```
|
|
83
294
|
|
|
84
|
-
|
|
85
|
-
|
|
295
|
+
If Forge is not installed globally, use `pnpm dlx` instead:
|
|
296
|
+
|
|
297
|
+
```sh
|
|
298
|
+
pnpm dlx @warpgogol/forge create my-project
|
|
86
299
|
```
|
|
87
300
|
|
|
88
301
|
#### Bring an existing project into Forge
|
|
@@ -91,7 +304,7 @@ There is no CLI command for transplant — it is an interactive, AI-guided proce
|
|
|
91
304
|
|
|
92
305
|
```sh
|
|
93
306
|
# 1. Create a new empty Forge project
|
|
94
|
-
|
|
307
|
+
forge create my-project
|
|
95
308
|
|
|
96
309
|
# 2. Open the project in Windsurf (tested with forge) or your preferred IDE
|
|
97
310
|
|
|
@@ -108,29 +321,31 @@ npx forge create my-project
|
|
|
108
321
|
|
|
109
322
|
```sh
|
|
110
323
|
# Check project health
|
|
111
|
-
|
|
324
|
+
forge doctor
|
|
112
325
|
|
|
113
326
|
# Validate RFCs
|
|
114
|
-
|
|
327
|
+
forge rfc.validate
|
|
115
328
|
|
|
116
329
|
# List available skills
|
|
117
|
-
|
|
330
|
+
forge skill.list
|
|
118
331
|
```
|
|
119
332
|
|
|
120
333
|
## Stack profiles
|
|
121
334
|
|
|
122
335
|
A stack profile defines the project scaffold: directory structure, dependencies, CI config, and first workspace. Choose a profile with `--profile` when creating a new project.
|
|
123
336
|
|
|
124
|
-
| Profile | Description | First workspace | Use case |
|
|
125
|
-
| --- | --- | --- | --- |
|
|
126
|
-
| `forge-shell` | Minimal Forge shell (default) | — | Governance-only projects, libraries, non-web projects |
|
|
127
|
-
| `astro-typescript-turborepo` | Astro + TypeScript + pnpm + Turborepo | `sites/my-site` | Websites, web apps, content-driven sites |
|
|
128
|
-
| `phaser-turborepo` | Phaser + TypeScript + pnpm + Turborepo | `games/my-game` | Browser games, interactive experiences |
|
|
129
|
-
| `editframe` | Editframe React + Vite + TailwindCSS | `compositions/my-first-video` | Video compositions, brand videos, motion design |
|
|
337
|
+
| Profile | Project type | Description | First workspace | Use case |
|
|
338
|
+
| --- | --- | --- | --- | --- |
|
|
339
|
+
| `forge-shell` | Governance / library | Minimal Forge shell (default) | — | Governance-only projects, libraries, non-web projects |
|
|
340
|
+
| `astro-typescript-turborepo` | Website | Astro + TypeScript + pnpm + Turborepo | `sites/my-site` | Websites, web apps, content-driven sites |
|
|
341
|
+
| `phaser-turborepo` | Browser game | Phaser + TypeScript + pnpm + Turborepo | `games/my-game` | Browser games, interactive experiences |
|
|
342
|
+
| `editframe` | Video | Editframe React + Vite + TailwindCSS | `compositions/my-first-video` | Video compositions, brand videos, motion design |
|
|
343
|
+
|
|
344
|
+
The `editframe` profile also supports an **HTML template** (instead of React) for users who prefer web components over JSX. Choose between the two during project setup.
|
|
130
345
|
|
|
131
346
|
```sh
|
|
132
347
|
# List available profiles (after install)
|
|
133
|
-
|
|
348
|
+
forge profile.validate
|
|
134
349
|
```
|
|
135
350
|
|
|
136
351
|
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.*`, `editframe.config.*`, etc.).
|
|
@@ -141,13 +356,13 @@ When a new version of `@warpgogol/forge` is published, consumers upgrade additiv
|
|
|
141
356
|
|
|
142
357
|
```sh
|
|
143
358
|
# 1. Install the latest version
|
|
144
|
-
|
|
359
|
+
pnpm add -g @warpgogol/forge@latest
|
|
145
360
|
|
|
146
361
|
# 2. Sync skills and binding defaults from the installed version
|
|
147
|
-
|
|
362
|
+
forge upgrade
|
|
148
363
|
|
|
149
364
|
# 3. Check project health
|
|
150
|
-
|
|
365
|
+
forge doctor
|
|
151
366
|
```
|
|
152
367
|
|
|
153
368
|
`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.
|
package/README.uk.md
ADDED
|
@@ -0,0 +1,490 @@
|
|
|
1
|
+
# @warpgogol/forge
|
|
2
|
+
|
|
3
|
+
Українська | [English](README.md)
|
|
4
|
+
|
|
5
|
+
Портативний рушій управління для розробки проєктів за допомогою ШІ. Надає навички, RFC/ADR робочі процеси, угоди про найменування, вендоринг специфікацій та CLI — все незалежне від фреймворку та без зайвих залежностей (тільки `yaml` + `zod`).
|
|
6
|
+
|
|
7
|
+
## Що можна створити за допомогою Forge
|
|
8
|
+
|
|
9
|
+
Forge підтримує чотири типи проєктів. Ви обираєте один на старті — все інше відбувається автоматично.
|
|
10
|
+
|
|
11
|
+
| Тип проєкту | Що це | Приклади |
|
|
12
|
+
| --- | --- | --- |
|
|
13
|
+
| **Вебсайт** | Публічний сайт або вебзастосунок — сторінки, блог, портфоліо, лендінг, інтернет-магазин | Сайт фотостудії, сайт ресторану, лендінг SaaS |
|
|
14
|
+
| **Браузерна гра** | Інтерактивна гра, що працює в браузері — 2D, аркада, головоломка, пригода | Лови зірки, головоломка з плитками, платформер |
|
|
15
|
+
| **Відео** | Програмна відеокомпозиція — анімований логотип, інтро, презентація продукту, motion-дизайн | Брендове інтро, демо продукту, реклама для соцмереж |
|
|
16
|
+
| **Управління / бібліотека** | Бібліотека коду або проєкт лише з управлінською структурою — без сайту, без гри, без відео, лише структура та документація | npm-пакет, внутрішній інструмент, центр документації |
|
|
17
|
+
|
|
18
|
+
Кожен тип проєкту отримує власний каркас: правильну структуру папок, правильні залежності, правильні інструменти. Вам не потрібно знати, що це таке — Forge налаштує все за вас.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Повний посібник зі встановлення (з нуля)
|
|
23
|
+
|
|
24
|
+
Якщо ви ніколи раніше не програмували, цей розділ проведе вас від абсолютно порожнього комп'ютера до робочого налаштування Forge. Виконайте кроки для вашої операційної системи.
|
|
25
|
+
|
|
26
|
+
### Що вам потрібно
|
|
27
|
+
|
|
28
|
+
Потрібні дві безкоштовні програми:
|
|
29
|
+
|
|
30
|
+
- **Node.js** (версія 22 або новіша) — дозволяє вашому комп'ютеру запускати JavaScript-інструменти.
|
|
31
|
+
- **pnpm** — менеджер пакетів, який Forge використовує для встановлення залежностей. Він вбудований у Node.js і його лише треба увімкнути.
|
|
32
|
+
|
|
33
|
+
Обидві програми безкоштовні. Спочатку встановлюєте Node.js, потім вмикаєте pnpm однією командою.
|
|
34
|
+
|
|
35
|
+
### Ubuntu
|
|
36
|
+
|
|
37
|
+
#### Крок 1 — Встановлення Node.js
|
|
38
|
+
|
|
39
|
+
1. Відкрийте програму **Термінал** (натисніть `Ctrl + Alt + T` або знайдіть «Термінал» у ваших програмах).
|
|
40
|
+
|
|
41
|
+
2. Завантажте та встановіть Node.js 22 (LTS), вставивши цю команду та натиснувши Enter:
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt-get install -y nodejs
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Вас попросять ввести пароль — введіть його (символи не відображатимуться під час введення, це нормально) і натисніть Enter.
|
|
48
|
+
|
|
49
|
+
3. Перевірте, чи все працює:
|
|
50
|
+
|
|
51
|
+
```sh
|
|
52
|
+
node --version
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Ви маєте побачити номер версії, наприклад `v22.x.x`, а не повідомлення про помилку.
|
|
56
|
+
|
|
57
|
+
#### Крок 2 — Увімкнення pnpm
|
|
58
|
+
|
|
59
|
+
Node.js містить інструмент **Corepack**, який керує менеджерами пакетів. Увімкніть pnpm командою:
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
corepack enable pnpm
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Перевірте:
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
pnpm --version
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Ви маєте побачити номер версії, наприклад `10.x.x`.
|
|
72
|
+
|
|
73
|
+
#### Крок 3 — Глобальне встановлення Forge
|
|
74
|
+
|
|
75
|
+
Глобальне встановлення означає, що команда `forge` доступна скрізь на вашому комп'ютері, а не лише в одному проєкті:
|
|
76
|
+
|
|
77
|
+
```sh
|
|
78
|
+
pnpm add -g @warpgogol/forge
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Перевірте:
|
|
82
|
+
|
|
83
|
+
```sh
|
|
84
|
+
forge --version
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Ви маєте побачити номер версії. Forge встановлено та готовий до роботи.
|
|
88
|
+
|
|
89
|
+
#### Крок 4 — Встановлення IDE зі штучним інтелектом
|
|
90
|
+
|
|
91
|
+
Forge працює через розмову з ШІ-агентом. Вам потрібне IDE, що підтримує ШІ-агентів. Рекомендуємо **Windsurf** (протестовано з Forge):
|
|
92
|
+
|
|
93
|
+
1. Перейдіть на [windsurf.com](https://windsurf.com) та завантажте версію для Linux.
|
|
94
|
+
2. Відкрийте завантажений файл і дотримуйтесь інструкцій установника.
|
|
95
|
+
3. Запустіть Windsurf.
|
|
96
|
+
|
|
97
|
+
Можете також використовувати **Cursor** ([cursor.com](https://cursor.com)) або будь-яке IDE, що підтримує навички ШІ-агентів.
|
|
98
|
+
|
|
99
|
+
### Windows
|
|
100
|
+
|
|
101
|
+
#### Крок 1 — Встановлення Node.js
|
|
102
|
+
|
|
103
|
+
1. Відкрийте [nodejs.org](https://nodejs.org) у вашому браузері.
|
|
104
|
+
2. Завантажте **LTS-версію** (на ній буде написано «LTS» та «Recommended for Most Users»). Версія має бути 22.x або новіша.
|
|
105
|
+
3. Запустіть завантажений установник (файл `.msi`). Прийміть усі стандартні параметри, натискаючи **Next** на кожному екрані, потім **Install**. Якщо Windows попросить дозвіл, натисніть **Yes**.
|
|
106
|
+
|
|
107
|
+
4. Перевірте, чи все працює. Відкрийте **PowerShell** (знайдіть «PowerShell» у меню Пуск) і введіть:
|
|
108
|
+
|
|
109
|
+
```sh
|
|
110
|
+
node --version
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Ви маєте побачити номер версії, наприклад `v22.x.x`, а не повідомлення про помилку.
|
|
114
|
+
|
|
115
|
+
#### Крок 2 — Увімкнення pnpm
|
|
116
|
+
|
|
117
|
+
Node.js містить інструмент **Corepack**, який керує менеджерами пакетів. Увімкніть pnpm командою:
|
|
118
|
+
|
|
119
|
+
```sh
|
|
120
|
+
corepack enable pnpm
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Перевірте:
|
|
124
|
+
|
|
125
|
+
```sh
|
|
126
|
+
pnpm --version
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Ви маєте побачити номер версії, наприклад `10.x.x`.
|
|
130
|
+
|
|
131
|
+
#### Крок 3 — Глобальне встановлення Forge
|
|
132
|
+
|
|
133
|
+
Глобальне встановлення означає, що команда `forge` доступна скрізь на вашому комп'ютері, а не лише в одному проєкті:
|
|
134
|
+
|
|
135
|
+
```sh
|
|
136
|
+
pnpm add -g @warpgogol/forge
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Перевірте:
|
|
140
|
+
|
|
141
|
+
```sh
|
|
142
|
+
forge --version
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Ви маєте побачити номер версії. Forge встановлено та готовий до роботи.
|
|
146
|
+
|
|
147
|
+
#### Крок 4 — Встановлення IDE зі штучним інтелектом
|
|
148
|
+
|
|
149
|
+
Forge працює через розмову з ШІ-агентом. Вам потрібне IDE, що підтримує ШІ-агентів. Рекомендуємо **Windsurf** (протестовано з Forge):
|
|
150
|
+
|
|
151
|
+
1. Перейдіть на [windsurf.com](https://windsurf.com) та завантажте версію для Windows.
|
|
152
|
+
2. Запустіть завантажений установник і дотримуйтесь майстра налаштування.
|
|
153
|
+
3. Запустіть Windsurf.
|
|
154
|
+
|
|
155
|
+
Можете також використовувати **Cursor** ([cursor.com](https://cursor.com)) або будь-яке IDE, що підтримує навички ШІ-агентів.
|
|
156
|
+
|
|
157
|
+
### Додатково — Встановлення FFmpeg (лише для відеопроєктів)
|
|
158
|
+
|
|
159
|
+
Якщо ви плануєте створювати **відеопроєкти** (профіль `editframe`), вам потрібен **FFmpeg** — безкоштовний інструмент для обробки відео та аудіо.
|
|
160
|
+
|
|
161
|
+
**Ubuntu:**
|
|
162
|
+
|
|
163
|
+
```sh
|
|
164
|
+
sudo apt-get install -y ffmpeg
|
|
165
|
+
ffmpeg -version
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**Windows:**
|
|
169
|
+
|
|
170
|
+
1. Відкрийте [ffmpeg.org/download.html](https://ffmpeg.org/download.html) у браузері.
|
|
171
|
+
2. Завантажте збірку для Windows (шукайте «Windows builds» — збірки gyan.dev або BtbN — хороші варіанти).
|
|
172
|
+
3. Розпакуйте завантажений `.zip` файл у папку, наприклад `C:\ffmpeg`.
|
|
173
|
+
4. Додайте FFmpeg до системної змінної PATH:
|
|
174
|
+
- Відкрийте меню Пуск, знайдіть «Environment Variables» і натисніть «Edit the system environment variables».
|
|
175
|
+
- Натисніть **Environment Variables**.
|
|
176
|
+
- У розділі «System variables» (або «User variables») знайдіть **Path**, виберіть його та натисніть **Edit**.
|
|
177
|
+
- Натисніть **New** і введіть `C:\ffmpeg\bin` (або туди, куди ви розпакували FFmpeg, у підпапку `bin`).
|
|
178
|
+
- Натисніть **OK** у всіх трьох вікнах.
|
|
179
|
+
5. Закрийте та знову відкрийте PowerShell, потім перевірте:
|
|
180
|
+
|
|
181
|
+
```sh
|
|
182
|
+
ffmpeg -version
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Ви маєте побачити інформацію про версію, а не помилку.
|
|
186
|
+
|
|
187
|
+
### Усунення проблем
|
|
188
|
+
|
|
189
|
+
- **«command not found» після встановлення Node.js** — Закрийте та знову відкрийте термінал (Ubuntu) або PowerShell (Windows). Системі потрібно перезавантажити список доступних команд.
|
|
190
|
+
- **«EACCES permission denied» в Ubuntu під час глобального встановлення Forge** — Виконайте `sudo pnpm add -g @warpgogol/forge`.
|
|
191
|
+
- **«corepack: command not found»** — Ваша версія Node.js занадто стара. Встановіть Node.js 22+ за кроками вище.
|
|
192
|
+
- **Windsurf не бачить `forge`** — Закрийте та знову відкрийте Windsurf після встановлення Forge. IDE потрібно перезапустити, щоб підхопити нові глобальні команди.
|
|
193
|
+
- **ШІ-агент не знає про Forge** — Ви відкрили порожню папку, але ШІ-агент не має контексту Forge. Спочатку виконайте `forge create my-project --profile editframe` (або відповідний профіль) у терміналі, потім відкрийте створену папку в вашому IDE. Команда `forge create` наповнює папку навичками, конфігурацією та `AGENTS.md` — без цього ШІ-агент не може виявити Forge.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Швидкий старт
|
|
198
|
+
|
|
199
|
+
### Для креативних операторів — одна команда, потім просто розмовляйте
|
|
200
|
+
|
|
201
|
+
Потрібно виконати одну команду в терміналі для створення проєкту. Після цього все працює через розмову з ШІ-агентом — більше команд не потрібно.
|
|
202
|
+
|
|
203
|
+
#### Створення нового проєкту з нуля
|
|
204
|
+
|
|
205
|
+
1. **Створіть проєкт Forge.** Відкрийте термінал (PowerShell на Windows, Термінал на Ubuntu) і виконайте:
|
|
206
|
+
|
|
207
|
+
```sh
|
|
208
|
+
forge create my-brand-video --profile editframe
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Замініть `my-brand-video` на назву вашого проєкту (малі літери та дефіси). Це створить нову папку з усьом, що потрібно Forge — навичками, конфігурацією та структурою проєкту. Для інших типів проєктів використовуйте інший `--profile`:
|
|
212
|
+
|
|
213
|
+
| Що ви хочете створити | Прапорець профілю |
|
|
214
|
+
| -------------------------------------------- | -------------------------------------- |
|
|
215
|
+
| Відео (брендове відео, інтро, motion-дизайн) | `--profile editframe` |
|
|
216
|
+
| Вебсайт (лендінг, блог, портфоліо) | `--profile astro-typescript-turborepo` |
|
|
217
|
+
| Браузерна гра (2D, аркада, головоломка) | `--profile phaser-turborepo` |
|
|
218
|
+
| Бібліотека або проєкт лише з управлінням | `--profile forge-shell` |
|
|
219
|
+
|
|
220
|
+
2. **Відкрийте папку проєкту в вашому IDE.** Відкрийте папку, створену на кроці 1, у Windsurf або вашому IDE.
|
|
221
|
+
|
|
222
|
+
3. **Скажіть ШІ-агенту, що ви хочете створити.** Просто напишіть це в чаті своїми словами. Наприклад:
|
|
223
|
+
|
|
224
|
+
> Я хочу створити брендове відео для своєї кав'ярні. Воно має мати анімований логотип, коротке інтро та презентацію продукту.
|
|
225
|
+
|
|
226
|
+
Або:
|
|
227
|
+
|
|
228
|
+
> Я хочу зробити вебсайт для своєї фотостудії.
|
|
229
|
+
|
|
230
|
+
Або:
|
|
231
|
+
|
|
232
|
+
> Я хочу створити браузерну гру, де ловиш зірки, що падають.
|
|
233
|
+
|
|
234
|
+
Або:
|
|
235
|
+
|
|
236
|
+
> Я хочу створити TypeScript-бібліотеку для розрахунку астрологічних карт.
|
|
237
|
+
|
|
238
|
+
Це все. ШІ-агент зробить усе інше:
|
|
239
|
+
- Налаштує структуру проєкту залежно від того, що ви описали (відео, вебсайт, гра, бібліотека тощо)
|
|
240
|
+
- Налаштує мовні вподобання та параметри проєкту
|
|
241
|
+
- Запустить живий попередній перегляд, щоб ви бачили свою роботу (для вебсайтів, ігор та відео)
|
|
242
|
+
- Скаже вам URL для відкриття в браузері
|
|
243
|
+
|
|
244
|
+
4. **Дивіться попередній перегляд.** Для вебсайтів, ігор та відео ШІ-агент дасть вам посилання localhost. Натисніть його — ваш проєкт уже запущений. Коли ви описуєте зміни, агент оновлює проєкт, а попередній перегляд оновлюється автоматично.
|
|
245
|
+
|
|
246
|
+
Для проєктів управління та бібліотек візуального попереднього перегляду немає — агент налаштує структуру проєкту та скаже, коли все готово.
|
|
247
|
+
|
|
248
|
+
5. **Створюйте разом.** Далі ви просто розмовляєте. Хочете інший колір? Хочете додати сцену? Хочете змінити музику? Хочете додати нову функцію до бібліотеки? Просто скажіть. Агент виконає всю технічну роботу.
|
|
249
|
+
|
|
250
|
+
#### Перенесення наявного проєкту у Forge
|
|
251
|
+
|
|
252
|
+
Якщо ви вже маєте проєкт десь інше і хочете перенести його у Forge:
|
|
253
|
+
|
|
254
|
+
1. **Створіть проєкт Forge.** Відкрийте термінал і виконайте:
|
|
255
|
+
|
|
256
|
+
```sh
|
|
257
|
+
forge create my-project
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Потім відкрийте створену папку в вашому IDE.
|
|
261
|
+
|
|
262
|
+
2. **Скажіть ШІ-агенту:**
|
|
263
|
+
|
|
264
|
+
> Я хочу перенести свій наявний проєкт у Forge. Він знаходиться за шляхом /path/to/my/project.
|
|
265
|
+
|
|
266
|
+
Агент:
|
|
267
|
+
- Визначить, який це тип проєкту (вебсайт, відео, гра, бібліотека тощо)
|
|
268
|
+
- Перемістить усі ваші файли у новий проєкт Forge — включно з прихованими файлами на кшталт `.env`
|
|
269
|
+
- За бажанням перенесе вашу історію git
|
|
270
|
+
- Перевірить, чи все коректно збирається
|
|
271
|
+
- Запустить живий попередній перегляд (для візуальних типів проєктів)
|
|
272
|
+
|
|
273
|
+
#### Що робити, якщо щось пішло не так?
|
|
274
|
+
|
|
275
|
+
Просто скажіть ШІ-агенту. Він може перевірити стан проєкту, виправити проблеми та пояснити, що сталося — все простою мовою. Вам ніколи не потрібно відкривати термінал або вводити команди самостійно.
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
### Для розробників — CLI-команди
|
|
280
|
+
|
|
281
|
+
#### Створення нового проєкту
|
|
282
|
+
|
|
283
|
+
```sh
|
|
284
|
+
# Створити новий проєкт (каркас + ініціалізація + навички + AGENTS.md однією командою)
|
|
285
|
+
forge create my-project
|
|
286
|
+
|
|
287
|
+
# З конкретним профілем стеку
|
|
288
|
+
forge create my-site --profile astro-typescript-turborepo
|
|
289
|
+
forge create my-game --profile phaser-turborepo
|
|
290
|
+
forge create my-video --profile editframe
|
|
291
|
+
forge create my-library --profile forge-shell
|
|
292
|
+
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
Якщо Forge не встановлено глобально, використовуйте `pnpm dlx`:
|
|
296
|
+
|
|
297
|
+
```sh
|
|
298
|
+
pnpm dlx @warpgogol/forge create my-project
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
#### Перенесення наявного проєкту у Forge
|
|
302
|
+
|
|
303
|
+
CLI-команди для перенесення немає — це інтерактивний процес під керівництвом ШІ:
|
|
304
|
+
|
|
305
|
+
```sh
|
|
306
|
+
# 1. Створіть новий порожній проєкт Forge
|
|
307
|
+
forge create my-project
|
|
308
|
+
|
|
309
|
+
# 2. Відкрийте проєкт у Windsurf (протестовано з Forge) або вашому IDE
|
|
310
|
+
|
|
311
|
+
# 3. Запустіть навичку /forge-bootstrap і оберіть режим "transplant"
|
|
312
|
+
# Навичка:
|
|
313
|
+
# - Запитає шлях до вашого наявного коду
|
|
314
|
+
# - Автоматично визначить стек (Astro, Phaser, Editframe тощо)
|
|
315
|
+
# - Перенесе всі файли (включно з .env та git-ігнорованими)
|
|
316
|
+
# - За бажанням перенесе історію git
|
|
317
|
+
# - Перевірить збірку
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
#### Діагностика та перевірка
|
|
321
|
+
|
|
322
|
+
```sh
|
|
323
|
+
# Перевірити стан проєкту
|
|
324
|
+
forge doctor
|
|
325
|
+
|
|
326
|
+
# Валідувати RFC
|
|
327
|
+
forge rfc.validate
|
|
328
|
+
|
|
329
|
+
# Список доступних навичок
|
|
330
|
+
forge skill.list
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
## Профілі стеку
|
|
334
|
+
|
|
335
|
+
Профіль стеку визначає каркас проєкту: структуру директорій, залежності, конфігурацію CI та перший робочий простір. Оберіть профіль прапорцем `--profile` під час створення проєкту.
|
|
336
|
+
|
|
337
|
+
| Профіль | Тип проєкту | Опис | Перший робочий простір | Призначення |
|
|
338
|
+
| --- | --- | --- | --- | --- |
|
|
339
|
+
| `forge-shell` | Управління / бібліотека | Мінімальний каркас Forge (за замовчуванням) | — | Проєкти лише з управлінням, бібліотеки, невеб-проєкти |
|
|
340
|
+
| `astro-typescript-turborepo` | Вебсайт | Astro + TypeScript + pnpm + Turborepo | `sites/my-site` | Вебсайти, вебзастосунки, контентні сайти |
|
|
341
|
+
| `phaser-turborepo` | Браузерна гра | Phaser + TypeScript + pnpm + Turborepo | `games/my-game` | Браузерні ігри, інтерактивні досвіди |
|
|
342
|
+
| `editframe` | Відео | Editframe React + Vite + TailwindCSS | `compositions/my-first-video` | Відеокомпозиції, брендові відео, motion-дизайн |
|
|
343
|
+
|
|
344
|
+
Профіль `editframe` також підтримує **HTML-шаблон** (замість React) для користувачів, які віддають перевагу веб-компонентам замість JSX. Оберіть між ними під час налаштування проєкту.
|
|
345
|
+
|
|
346
|
+
```sh
|
|
347
|
+
# Список доступних профілів (після встановлення)
|
|
348
|
+
forge profile.validate
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
Коли ви переносите наявний проєкт через режим `/forge-bootstrap` transplant, Forge автоматично визначає відповідний профіль, перевіряючи файли-маркери (`astro.config.*`, `phaser.config.*`, `editframe.config.*` тощо).
|
|
352
|
+
|
|
353
|
+
## Процес оновлення
|
|
354
|
+
|
|
355
|
+
Коли публікується нова версія `@warpgogol/forge`, споживачі оновлюються адитивно:
|
|
356
|
+
|
|
357
|
+
```sh
|
|
358
|
+
# 1. Встановити останню версію
|
|
359
|
+
pnpm add -g @warpgogol/forge@latest
|
|
360
|
+
|
|
361
|
+
# 2. Синхронізувати навички та стандартні прив'язки з встановленої версії
|
|
362
|
+
forge upgrade
|
|
363
|
+
|
|
364
|
+
# 3. Перевірити стан проєкту
|
|
365
|
+
forge doctor
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
`forge upgrade` — адитивний: він ніколи не перезаписує прив'язки, встановлені оператором, ніколи не видаляє файли та є ідемпотентним. Він оновлює `forge.syncedVersion` у `forge.yaml`, щоб відстежувати останню синхронізовану версію. Використовуйте `--dry-run` для попереднього перегляду змін.
|
|
369
|
+
|
|
370
|
+
## Що дає Forge
|
|
371
|
+
|
|
372
|
+
- **44 навички** (fo-pipeline, grilling, preferences, написання навичок, Editframe відеокомпозиція) — розгортаються у `.agents/skills/` командою `forge create`
|
|
373
|
+
- **RFC робочий процес** — створення, валідація, список, граф, архівування, acceptance-зондування, журнали рішень, DNA-трасування
|
|
374
|
+
- **ADR робочий процес** — легковісні архітектурні записи рішень
|
|
375
|
+
- **Вендоринг специфікацій** — вендоринг зовнішніх пакетів специфікацій як незмінних знімків з маніфестами цілісності
|
|
376
|
+
- **Угоди про найменування** — linting kebab-case
|
|
377
|
+
- **Linting робочих процесів** — валідація frontmatter та посилань у `.agents/workflows/`
|
|
378
|
+
- **Каркаси стеків** — створення нового pnpm + Turborepo монорепозиторію з профілю
|
|
379
|
+
- **Контракт прив'язок** — декодування специфічних для проєкту команд/шляхів із навичок через `forge.yaml`
|
|
380
|
+
|
|
381
|
+
## Життєвий цикл
|
|
382
|
+
|
|
383
|
+
Типовий життєвий цикл проєкту Forge:
|
|
384
|
+
|
|
385
|
+
1. **Створення** — `forge create` ініціалізує новий проєкт з forge.yaml, навичками та директоріями документації
|
|
386
|
+
2. **IDE** — відкрийте проєкт у Windsurf (протестовано з Forge) або вашому IDE
|
|
387
|
+
3. **Bootstrap** — запустіть `/forge-bootstrap` для інтерактивного налаштування проєкту. Навичка підтримує два режими:
|
|
388
|
+
- **Greenfield** — створення нового проєкту з нуля: оберіть стек, заповніть прив'язки, ініціалізуйте git
|
|
389
|
+
- **Transplant** — перенесення наявного коду у Forge: визначення стеку, міграція коду (включно з git-ігнорованими файлами на кшталт `.env`), за бажанням перенесення історії git, перевірка збірки
|
|
390
|
+
4. **Оновлення** — коли публікується нова версія `@warpgogol/forge`, запустіть `forge upgrade` для адитивної синхронізації навичок та стандартних прив'язок
|
|
391
|
+
|
|
392
|
+
## forge.yaml
|
|
393
|
+
|
|
394
|
+
Єдине джерело істини для конфігурації проєкту. Створюється командою `forge create`:
|
|
395
|
+
|
|
396
|
+
```yaml
|
|
397
|
+
schema: forge/config@1
|
|
398
|
+
project:
|
|
399
|
+
name: my-project
|
|
400
|
+
stack: [typescript]
|
|
401
|
+
packageManager: pnpm
|
|
402
|
+
paths:
|
|
403
|
+
rfcsDir: docs/rfcs
|
|
404
|
+
adrsDir: docs/adrs
|
|
405
|
+
skillsDir: .agents/skills
|
|
406
|
+
bindings:
|
|
407
|
+
schema: forge/bindings@1
|
|
408
|
+
commands:
|
|
409
|
+
validateRfc: "forge rfc.validate {id} --json"
|
|
410
|
+
typecheck: "pnpm run build:check"
|
|
411
|
+
test: "pnpm test"
|
|
412
|
+
paths:
|
|
413
|
+
invariantsFile: docs/architecture-dna.md
|
|
414
|
+
terminology:
|
|
415
|
+
invariants: DNA
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
## Програмний API
|
|
419
|
+
|
|
420
|
+
```ts
|
|
421
|
+
import {
|
|
422
|
+
forgeCoreModule,
|
|
423
|
+
forgeRfcModule,
|
|
424
|
+
loadForgeConfig,
|
|
425
|
+
resolveBinding,
|
|
426
|
+
FORGE_SKILLS,
|
|
427
|
+
} from "@warpgogol/forge";
|
|
428
|
+
|
|
429
|
+
// Завантажити конфігурацію
|
|
430
|
+
const config = loadForgeConfig(process.cwd());
|
|
431
|
+
|
|
432
|
+
// Розв'язати прив'язку
|
|
433
|
+
const cmd = resolveBinding(config, "commands.validateRfc", { id: "RFC-0001" });
|
|
434
|
+
|
|
435
|
+
// Зареєструвати модулі у вашому реєстрі
|
|
436
|
+
const registry = /* ваш ForgeModuleRegistry */;
|
|
437
|
+
await forgeCoreModule.register(registry);
|
|
438
|
+
await forgeRfcModule.register(registry);
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
## Архітектура
|
|
442
|
+
|
|
443
|
+
| Директорія | Призначення |
|
|
444
|
+
| --- | --- |
|
|
445
|
+
| `src/` | Портативне ядро — типи, конфігурація, реєстр навичок, валідатори, онбординг. Нуль імпортів `@warpgogol/*`. |
|
|
446
|
+
| `os/` | Реєстрації ForgeModule. `compass` та `werkstatt` динамічно імпортують `@warpgogol/site-kernel-*` (м'яка деградація в автономному режимі). |
|
|
447
|
+
| `bin/` | Точка входу CLI (команда `forge`). |
|
|
448
|
+
| `skills/` | 44 визначення навичок (36 fo + 5 спільних + 3 мета) з frontmatter SKILL.md. |
|
|
449
|
+
| `scripts/` | Перевірка гігієни публікації (`publish-check.mjs`), запускається `prepublishOnly`. |
|
|
450
|
+
| `profiles/` | Профілі стеків для `forge.scaffold`. |
|
|
451
|
+
|
|
452
|
+
## Публікація в npm
|
|
453
|
+
|
|
454
|
+
Цей пакет публікується в реєстр npm як `@warpgogol/forge`. Нижче описано, як опублікувати нову версію.
|
|
455
|
+
|
|
456
|
+
### Передумови
|
|
457
|
+
|
|
458
|
+
- Обліковий запис npm з правами публікації в організації `@warpgogol`.
|
|
459
|
+
- Встановлені Node.js та pnpm локально.
|
|
460
|
+
|
|
461
|
+
### Створення токена доступу
|
|
462
|
+
|
|
463
|
+
1. Увійдіть на [npmjs.com](https://www.npmjs.com/).
|
|
464
|
+
2. Перейдіть до **Access Tokens** (аватар → Access Tokens).
|
|
465
|
+
3. Натисніть **Generate New Token** → оберіть **Classic Token** → тип **Publish**.
|
|
466
|
+
4. Скопіюйте згенерований токен — він показується лише один раз.
|
|
467
|
+
|
|
468
|
+
### Публікація нової версії
|
|
469
|
+
|
|
470
|
+
Виконайте такі команди з директорії `packages/forge`:
|
|
471
|
+
|
|
472
|
+
```sh
|
|
473
|
+
# 1. Автентифікація в npm (інтерактивно — запитає username, password, OTP)
|
|
474
|
+
npm login
|
|
475
|
+
|
|
476
|
+
# 2. Зберегти auth-токен для реєстру (використайте токен з попереднього кроку)
|
|
477
|
+
npm config set //registry.npmjs.org/:_authToken=<TOKEN>
|
|
478
|
+
|
|
479
|
+
# 3. Підняти patch-версію (оновлює package.json + створює git commit + tag)
|
|
480
|
+
npm version patch
|
|
481
|
+
|
|
482
|
+
# 4. Опублікувати пакет публічно
|
|
483
|
+
npm publish --access public
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
Після публікації перевірте нову версію на [npmjs.com/package/@warpgogol/forge](https://www.npmjs.com/package/@warpgogol/forge).
|
|
487
|
+
|
|
488
|
+
## Ліцензія
|
|
489
|
+
|
|
490
|
+
Apache-2.0
|
package/bin/cli.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { fileURLToPath } from "node:url";
|
|
2
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
3
3
|
import { dirname, resolve } from "node:path";
|
|
4
4
|
|
|
5
5
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
6
|
-
const distEntry = resolve(__dirname, "..", "dist", "bin", "cli.js");
|
|
6
|
+
const distEntry = pathToFileURL(resolve(__dirname, "..", "dist", "bin", "cli.js")).href;
|
|
7
7
|
|
|
8
8
|
try {
|
|
9
9
|
await import(distEntry);
|