@warpgogol/forge 1.1.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +8 -19
- package/README.md +93 -65
- package/README.uk.md +93 -65
- package/package.json +16 -3
- package/profiles/astro-typescript-turborepo.yaml +148 -1
- package/profiles/forge-shell.yaml +120 -1
- package/profiles/godot-csharp.yaml +280 -6
- package/profiles/phaser-turborepo.yaml +135 -1
- 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/skills/fo/fo-spec-ingest/SKILL.md +1 -1
- package/dist/bin/cli.d.ts +0 -3
- package/dist/bin/cli.d.ts.map +0 -1
- package/dist/bin/cli.js +0 -292
- package/dist/bin/cli.js.map +0 -1
- package/dist/os/adr/adr.module.d.ts +0 -3
- package/dist/os/adr/adr.module.d.ts.map +0 -1
- package/dist/os/adr/adr.module.js +0 -145
- package/dist/os/adr/adr.module.js.map +0 -1
- package/dist/os/adr/frontmatter-io.d.ts +0 -12
- package/dist/os/adr/frontmatter-io.d.ts.map +0 -1
- package/dist/os/adr/frontmatter-io.js +0 -67
- package/dist/os/adr/frontmatter-io.js.map +0 -1
- package/dist/os/adr/handlers/archive.d.ts +0 -24
- package/dist/os/adr/handlers/archive.d.ts.map +0 -1
- package/dist/os/adr/handlers/archive.js +0 -194
- package/dist/os/adr/handlers/archive.js.map +0 -1
- package/dist/os/adr/handlers/implement-stamp.d.ts +0 -4
- package/dist/os/adr/handlers/implement-stamp.d.ts.map +0 -1
- package/dist/os/adr/handlers/implement-stamp.js +0 -258
- package/dist/os/adr/handlers/implement-stamp.js.map +0 -1
- package/dist/os/adr/handlers/list-create.d.ts +0 -5
- package/dist/os/adr/handlers/list-create.d.ts.map +0 -1
- package/dist/os/adr/handlers/list-create.js +0 -165
- package/dist/os/adr/handlers/list-create.js.map +0 -1
- package/dist/os/adr/handlers/validate.d.ts +0 -4
- package/dist/os/adr/handlers/validate.d.ts.map +0 -1
- package/dist/os/adr/handlers/validate.js +0 -265
- package/dist/os/adr/handlers/validate.js.map +0 -1
- package/dist/os/adr/index.d.ts +0 -8
- package/dist/os/adr/index.d.ts.map +0 -1
- package/dist/os/adr/index.js +0 -18
- package/dist/os/adr/index.js.map +0 -1
- package/dist/os/adr/types.d.ts +0 -75
- package/dist/os/adr/types.d.ts.map +0 -1
- package/dist/os/adr/types.js +0 -55
- package/dist/os/adr/types.js.map +0 -1
- package/dist/os/audit/audit.module.d.ts +0 -3
- package/dist/os/audit/audit.module.d.ts.map +0 -1
- package/dist/os/audit/audit.module.js +0 -44
- package/dist/os/audit/audit.module.js.map +0 -1
- package/dist/os/audit/frontmatter-io.d.ts +0 -12
- package/dist/os/audit/frontmatter-io.d.ts.map +0 -1
- package/dist/os/audit/frontmatter-io.js +0 -71
- package/dist/os/audit/frontmatter-io.js.map +0 -1
- package/dist/os/audit/handlers/archive.d.ts +0 -4
- package/dist/os/audit/handlers/archive.d.ts.map +0 -1
- package/dist/os/audit/handlers/archive.js +0 -207
- package/dist/os/audit/handlers/archive.js.map +0 -1
- package/dist/os/audit/index.d.ts +0 -6
- package/dist/os/audit/index.d.ts.map +0 -1
- package/dist/os/audit/index.js +0 -16
- package/dist/os/audit/index.js.map +0 -1
- package/dist/os/audit/types.d.ts +0 -12
- package/dist/os/audit/types.d.ts.map +0 -1
- package/dist/os/audit/types.js +0 -17
- package/dist/os/audit/types.js.map +0 -1
- package/dist/os/compass/compass.module.d.ts +0 -3
- package/dist/os/compass/compass.module.d.ts.map +0 -1
- package/dist/os/compass/compass.module.js +0 -166
- package/dist/os/compass/compass.module.js.map +0 -1
- package/dist/os/compass/handlers/compass-audit-handler.d.ts +0 -36
- package/dist/os/compass/handlers/compass-audit-handler.d.ts.map +0 -1
- package/dist/os/compass/handlers/compass-audit-handler.js +0 -238
- package/dist/os/compass/handlers/compass-audit-handler.js.map +0 -1
- package/dist/os/compass/handlers/compass-change-summary-handler.d.ts +0 -19
- package/dist/os/compass/handlers/compass-change-summary-handler.d.ts.map +0 -1
- package/dist/os/compass/handlers/compass-change-summary-handler.js +0 -205
- package/dist/os/compass/handlers/compass-change-summary-handler.js.map +0 -1
- package/dist/os/compass/handlers/compass-inventory-handler.d.ts +0 -28
- package/dist/os/compass/handlers/compass-inventory-handler.d.ts.map +0 -1
- package/dist/os/compass/handlers/compass-inventory-handler.js +0 -213
- package/dist/os/compass/handlers/compass-inventory-handler.js.map +0 -1
- package/dist/os/compass/handlers/compass-inventory.d.ts +0 -30
- package/dist/os/compass/handlers/compass-inventory.d.ts.map +0 -1
- package/dist/os/compass/handlers/compass-inventory.js +0 -418
- package/dist/os/compass/handlers/compass-inventory.js.map +0 -1
- package/dist/os/compass/handlers/git-revision.d.ts +0 -8
- package/dist/os/compass/handlers/git-revision.d.ts.map +0 -1
- package/dist/os/compass/handlers/git-revision.js +0 -99
- package/dist/os/compass/handlers/git-revision.js.map +0 -1
- package/dist/os/compass/handlers/resolve-scan-root.d.ts +0 -3
- package/dist/os/compass/handlers/resolve-scan-root.d.ts.map +0 -1
- package/dist/os/compass/handlers/resolve-scan-root.js +0 -57
- package/dist/os/compass/handlers/resolve-scan-root.js.map +0 -1
- package/dist/os/compass/index.d.ts +0 -8
- package/dist/os/compass/index.d.ts.map +0 -1
- package/dist/os/compass/index.js +0 -19
- package/dist/os/compass/index.js.map +0 -1
- package/dist/os/core/core.module.d.ts +0 -3
- package/dist/os/core/core.module.d.ts.map +0 -1
- package/dist/os/core/core.module.js +0 -758
- package/dist/os/core/core.module.js.map +0 -1
- package/dist/os/core/handlers/assets-check.d.ts +0 -19
- package/dist/os/core/handlers/assets-check.d.ts.map +0 -1
- package/dist/os/core/handlers/assets-check.js +0 -89
- package/dist/os/core/handlers/assets-check.js.map +0 -1
- package/dist/os/core/handlers/assets-helpers.d.ts +0 -28
- package/dist/os/core/handlers/assets-helpers.d.ts.map +0 -1
- package/dist/os/core/handlers/assets-helpers.js +0 -128
- package/dist/os/core/handlers/assets-helpers.js.map +0 -1
- package/dist/os/core/handlers/assets-list.d.ts +0 -9
- package/dist/os/core/handlers/assets-list.d.ts.map +0 -1
- package/dist/os/core/handlers/assets-list.js +0 -72
- package/dist/os/core/handlers/assets-list.js.map +0 -1
- package/dist/os/core/handlers/build.d.ts +0 -16
- package/dist/os/core/handlers/build.d.ts.map +0 -1
- package/dist/os/core/handlers/build.js +0 -123
- package/dist/os/core/handlers/build.js.map +0 -1
- package/dist/os/core/handlers/determinism-check.d.ts +0 -20
- package/dist/os/core/handlers/determinism-check.d.ts.map +0 -1
- package/dist/os/core/handlers/determinism-check.js +0 -289
- package/dist/os/core/handlers/determinism-check.js.map +0 -1
- package/dist/os/core/handlers/dev.d.ts +0 -10
- package/dist/os/core/handlers/dev.d.ts.map +0 -1
- package/dist/os/core/handlers/dev.js +0 -102
- package/dist/os/core/handlers/dev.js.map +0 -1
- package/dist/os/core/handlers/knowledge-compact.d.ts +0 -4
- package/dist/os/core/handlers/knowledge-compact.d.ts.map +0 -1
- package/dist/os/core/handlers/knowledge-compact.js +0 -198
- package/dist/os/core/handlers/knowledge-compact.js.map +0 -1
- package/dist/os/core/handlers/pinned-check.d.ts +0 -49
- package/dist/os/core/handlers/pinned-check.d.ts.map +0 -1
- package/dist/os/core/handlers/pinned-check.js +0 -159
- package/dist/os/core/handlers/pinned-check.js.map +0 -1
- package/dist/os/core/handlers/pinned-init.d.ts +0 -19
- package/dist/os/core/handlers/pinned-init.d.ts.map +0 -1
- package/dist/os/core/handlers/pinned-init.js +0 -283
- package/dist/os/core/handlers/pinned-init.js.map +0 -1
- package/dist/os/core/handlers/pinned-types.d.ts +0 -29
- package/dist/os/core/handlers/pinned-types.d.ts.map +0 -1
- package/dist/os/core/handlers/pinned-types.js +0 -16
- package/dist/os/core/handlers/pinned-types.js.map +0 -1
- package/dist/os/core/handlers/pinned-validate.d.ts +0 -4
- package/dist/os/core/handlers/pinned-validate.d.ts.map +0 -1
- package/dist/os/core/handlers/pinned-validate.js +0 -248
- package/dist/os/core/handlers/pinned-validate.js.map +0 -1
- package/dist/os/core/handlers/profile-resolve.d.ts +0 -13
- package/dist/os/core/handlers/profile-resolve.d.ts.map +0 -1
- package/dist/os/core/handlers/profile-resolve.js +0 -65
- package/dist/os/core/handlers/profile-resolve.js.map +0 -1
- package/dist/os/core/handlers/release-prepare.d.ts +0 -25
- package/dist/os/core/handlers/release-prepare.d.ts.map +0 -1
- package/dist/os/core/handlers/release-prepare.js +0 -228
- package/dist/os/core/handlers/release-prepare.js.map +0 -1
- package/dist/os/core/handlers/release-publish.d.ts +0 -13
- package/dist/os/core/handlers/release-publish.d.ts.map +0 -1
- package/dist/os/core/handlers/release-publish.js +0 -173
- package/dist/os/core/handlers/release-publish.js.map +0 -1
- package/dist/os/core/handlers/validate.d.ts +0 -26
- package/dist/os/core/handlers/validate.d.ts.map +0 -1
- package/dist/os/core/handlers/validate.js +0 -208
- package/dist/os/core/handlers/validate.js.map +0 -1
- package/dist/os/core/handlers/workspace-deps.d.ts +0 -12
- package/dist/os/core/handlers/workspace-deps.d.ts.map +0 -1
- package/dist/os/core/handlers/workspace-deps.js +0 -39
- package/dist/os/core/handlers/workspace-deps.js.map +0 -1
- package/dist/os/core/index.d.ts +0 -2
- package/dist/os/core/index.d.ts.map +0 -1
- package/dist/os/core/index.js +0 -13
- package/dist/os/core/index.js.map +0 -1
- package/dist/os/exploration/exploration.module.d.ts +0 -3
- package/dist/os/exploration/exploration.module.d.ts.map +0 -1
- package/dist/os/exploration/exploration.module.js +0 -82
- package/dist/os/exploration/exploration.module.js.map +0 -1
- package/dist/os/exploration/frontmatter-io.d.ts +0 -13
- package/dist/os/exploration/frontmatter-io.d.ts.map +0 -1
- package/dist/os/exploration/frontmatter-io.js +0 -61
- package/dist/os/exploration/frontmatter-io.js.map +0 -1
- package/dist/os/exploration/handlers/archive.d.ts +0 -4
- package/dist/os/exploration/handlers/archive.d.ts.map +0 -1
- package/dist/os/exploration/handlers/archive.js +0 -135
- package/dist/os/exploration/handlers/archive.js.map +0 -1
- package/dist/os/exploration/handlers/list.d.ts +0 -4
- package/dist/os/exploration/handlers/list.d.ts.map +0 -1
- package/dist/os/exploration/handlers/list.js +0 -56
- package/dist/os/exploration/handlers/list.js.map +0 -1
- package/dist/os/exploration/handlers/show.d.ts +0 -4
- package/dist/os/exploration/handlers/show.d.ts.map +0 -1
- package/dist/os/exploration/handlers/show.js +0 -91
- package/dist/os/exploration/handlers/show.js.map +0 -1
- package/dist/os/exploration/index.d.ts +0 -7
- package/dist/os/exploration/index.d.ts.map +0 -1
- package/dist/os/exploration/index.js +0 -17
- package/dist/os/exploration/index.js.map +0 -1
- package/dist/os/exploration/types.d.ts +0 -38
- package/dist/os/exploration/types.d.ts.map +0 -1
- package/dist/os/exploration/types.js +0 -23
- package/dist/os/exploration/types.js.map +0 -1
- package/dist/os/mission/handlers/archive.d.ts +0 -4
- package/dist/os/mission/handlers/archive.d.ts.map +0 -1
- package/dist/os/mission/handlers/archive.js +0 -356
- package/dist/os/mission/handlers/archive.js.map +0 -1
- package/dist/os/mission/index.d.ts +0 -2
- package/dist/os/mission/index.d.ts.map +0 -1
- package/dist/os/mission/index.js +0 -2
- package/dist/os/mission/index.js.map +0 -1
- package/dist/os/mission/mission.module.d.ts +0 -3
- package/dist/os/mission/mission.module.d.ts.map +0 -1
- package/dist/os/mission/mission.module.js +0 -44
- package/dist/os/mission/mission.module.js.map +0 -1
- package/dist/os/mission/types.d.ts +0 -23
- package/dist/os/mission/types.d.ts.map +0 -1
- package/dist/os/mission/types.js +0 -18
- package/dist/os/mission/types.js.map +0 -1
- package/dist/os/naming/index.d.ts +0 -3
- package/dist/os/naming/index.d.ts.map +0 -1
- package/dist/os/naming/index.js +0 -14
- package/dist/os/naming/index.js.map +0 -1
- package/dist/os/naming/naming-convention.d.ts +0 -25
- package/dist/os/naming/naming-convention.d.ts.map +0 -1
- package/dist/os/naming/naming-convention.js +0 -324
- package/dist/os/naming/naming-convention.js.map +0 -1
- package/dist/os/naming/naming.module.d.ts +0 -3
- package/dist/os/naming/naming.module.d.ts.map +0 -1
- package/dist/os/naming/naming.module.js +0 -33
- package/dist/os/naming/naming.module.js.map +0 -1
- package/dist/os/notes/index.d.ts +0 -2
- package/dist/os/notes/index.d.ts.map +0 -1
- package/dist/os/notes/index.js +0 -10
- package/dist/os/notes/index.js.map +0 -1
- package/dist/os/notes/notes.module.d.ts +0 -3
- package/dist/os/notes/notes.module.d.ts.map +0 -1
- package/dist/os/notes/notes.module.js +0 -83
- package/dist/os/notes/notes.module.js.map +0 -1
- package/dist/os/plan/frontmatter-io.d.ts +0 -12
- package/dist/os/plan/frontmatter-io.d.ts.map +0 -1
- package/dist/os/plan/frontmatter-io.js +0 -69
- package/dist/os/plan/frontmatter-io.js.map +0 -1
- package/dist/os/plan/handlers/archive.d.ts +0 -4
- package/dist/os/plan/handlers/archive.d.ts.map +0 -1
- package/dist/os/plan/handlers/archive.js +0 -206
- package/dist/os/plan/handlers/archive.js.map +0 -1
- package/dist/os/plan/index.d.ts +0 -6
- package/dist/os/plan/index.d.ts.map +0 -1
- package/dist/os/plan/index.js +0 -16
- package/dist/os/plan/index.js.map +0 -1
- package/dist/os/plan/plan.module.d.ts +0 -3
- package/dist/os/plan/plan.module.d.ts.map +0 -1
- package/dist/os/plan/plan.module.js +0 -44
- package/dist/os/plan/plan.module.js.map +0 -1
- package/dist/os/plan/types.d.ts +0 -12
- package/dist/os/plan/types.d.ts.map +0 -1
- package/dist/os/plan/types.js +0 -17
- package/dist/os/plan/types.js.map +0 -1
- package/dist/os/program/discovery.d.ts +0 -61
- package/dist/os/program/discovery.d.ts.map +0 -1
- package/dist/os/program/discovery.js +0 -236
- package/dist/os/program/discovery.js.map +0 -1
- package/dist/os/program/handlers/complete.d.ts +0 -12
- package/dist/os/program/handlers/complete.d.ts.map +0 -1
- package/dist/os/program/handlers/complete.js +0 -344
- package/dist/os/program/handlers/complete.js.map +0 -1
- package/dist/os/program/handlers/lease.d.ts +0 -13
- package/dist/os/program/handlers/lease.d.ts.map +0 -1
- package/dist/os/program/handlers/lease.js +0 -322
- package/dist/os/program/handlers/lease.js.map +0 -1
- package/dist/os/program/handlers/seal.d.ts +0 -12
- package/dist/os/program/handlers/seal.d.ts.map +0 -1
- package/dist/os/program/handlers/seal.js +0 -265
- package/dist/os/program/handlers/seal.js.map +0 -1
- package/dist/os/program/handlers/validate.d.ts +0 -14
- package/dist/os/program/handlers/validate.d.ts.map +0 -1
- package/dist/os/program/handlers/validate.js +0 -164
- package/dist/os/program/handlers/validate.js.map +0 -1
- package/dist/os/program/lease.d.ts +0 -39
- package/dist/os/program/lease.d.ts.map +0 -1
- package/dist/os/program/lease.js +0 -129
- package/dist/os/program/lease.js.map +0 -1
- package/dist/os/program/program.module.d.ts +0 -3
- package/dist/os/program/program.module.d.ts.map +0 -1
- package/dist/os/program/program.module.js +0 -201
- package/dist/os/program/program.module.js.map +0 -1
- package/dist/os/program/schemas.d.ts +0 -225
- package/dist/os/program/schemas.d.ts.map +0 -1
- package/dist/os/program/schemas.js +0 -174
- package/dist/os/program/schemas.js.map +0 -1
- package/dist/os/program/state.d.ts +0 -38
- package/dist/os/program/state.d.ts.map +0 -1
- package/dist/os/program/state.js +0 -189
- package/dist/os/program/state.js.map +0 -1
- package/dist/os/rfc/acceptance.d.ts +0 -15
- package/dist/os/rfc/acceptance.d.ts.map +0 -1
- package/dist/os/rfc/acceptance.js +0 -310
- package/dist/os/rfc/acceptance.js.map +0 -1
- package/dist/os/rfc/decision-log.d.ts +0 -6
- package/dist/os/rfc/decision-log.d.ts.map +0 -1
- package/dist/os/rfc/decision-log.js +0 -269
- package/dist/os/rfc/decision-log.js.map +0 -1
- package/dist/os/rfc/dna-trace.d.ts +0 -27
- package/dist/os/rfc/dna-trace.d.ts.map +0 -1
- package/dist/os/rfc/dna-trace.js +0 -214
- package/dist/os/rfc/dna-trace.js.map +0 -1
- package/dist/os/rfc/frontmatter-io.d.ts +0 -18
- package/dist/os/rfc/frontmatter-io.d.ts.map +0 -1
- package/dist/os/rfc/frontmatter-io.js +0 -110
- package/dist/os/rfc/frontmatter-io.js.map +0 -1
- package/dist/os/rfc/handlers/archive.d.ts +0 -25
- package/dist/os/rfc/handlers/archive.d.ts.map +0 -1
- package/dist/os/rfc/handlers/archive.js +0 -247
- package/dist/os/rfc/handlers/archive.js.map +0 -1
- package/dist/os/rfc/handlers/check.d.ts +0 -4
- package/dist/os/rfc/handlers/check.d.ts.map +0 -1
- package/dist/os/rfc/handlers/check.js +0 -195
- package/dist/os/rfc/handlers/check.js.map +0 -1
- package/dist/os/rfc/handlers/implement-stamp.d.ts +0 -4
- package/dist/os/rfc/handlers/implement-stamp.d.ts.map +0 -1
- package/dist/os/rfc/handlers/implement-stamp.js +0 -420
- package/dist/os/rfc/handlers/implement-stamp.js.map +0 -1
- package/dist/os/rfc/handlers/index-graph.d.ts +0 -13
- package/dist/os/rfc/handlers/index-graph.d.ts.map +0 -1
- package/dist/os/rfc/handlers/index-graph.js +0 -192
- package/dist/os/rfc/handlers/index-graph.js.map +0 -1
- package/dist/os/rfc/handlers/lifecycle.d.ts +0 -13
- package/dist/os/rfc/handlers/lifecycle.d.ts.map +0 -1
- package/dist/os/rfc/handlers/lifecycle.js +0 -155
- package/dist/os/rfc/handlers/lifecycle.js.map +0 -1
- package/dist/os/rfc/handlers/list-create.d.ts +0 -6
- package/dist/os/rfc/handlers/list-create.d.ts.map +0 -1
- package/dist/os/rfc/handlers/list-create.js +0 -240
- package/dist/os/rfc/handlers/list-create.js.map +0 -1
- package/dist/os/rfc/handlers/pipeline-status.d.ts +0 -26
- package/dist/os/rfc/handlers/pipeline-status.d.ts.map +0 -1
- package/dist/os/rfc/handlers/pipeline-status.js +0 -124
- package/dist/os/rfc/handlers/pipeline-status.js.map +0 -1
- package/dist/os/rfc/handlers/shared.d.ts +0 -22
- package/dist/os/rfc/handlers/shared.d.ts.map +0 -1
- package/dist/os/rfc/handlers/shared.js +0 -105
- package/dist/os/rfc/handlers/shared.js.map +0 -1
- package/dist/os/rfc/handlers/supersede-propose.d.ts +0 -4
- package/dist/os/rfc/handlers/supersede-propose.d.ts.map +0 -1
- package/dist/os/rfc/handlers/supersede-propose.js +0 -203
- package/dist/os/rfc/handlers/supersede-propose.js.map +0 -1
- package/dist/os/rfc/handlers/validate-rules.d.ts +0 -32
- package/dist/os/rfc/handlers/validate-rules.d.ts.map +0 -1
- package/dist/os/rfc/handlers/validate-rules.js +0 -590
- package/dist/os/rfc/handlers/validate-rules.js.map +0 -1
- package/dist/os/rfc/handlers/validate.d.ts +0 -4
- package/dist/os/rfc/handlers/validate.d.ts.map +0 -1
- package/dist/os/rfc/handlers/validate.js +0 -108
- package/dist/os/rfc/handlers/validate.js.map +0 -1
- package/dist/os/rfc/handlers.d.ts +0 -7
- package/dist/os/rfc/handlers.d.ts.map +0 -1
- package/dist/os/rfc/handlers.js +0 -19
- package/dist/os/rfc/handlers.js.map +0 -1
- package/dist/os/rfc/index.d.ts +0 -18
- package/dist/os/rfc/index.d.ts.map +0 -1
- package/dist/os/rfc/index.js +0 -24
- package/dist/os/rfc/index.js.map +0 -1
- package/dist/os/rfc/rfc.module.d.ts +0 -3
- package/dist/os/rfc/rfc.module.d.ts.map +0 -1
- package/dist/os/rfc/rfc.module.js +0 -366
- package/dist/os/rfc/rfc.module.js.map +0 -1
- package/dist/os/rfc/types.d.ts +0 -483
- package/dist/os/rfc/types.d.ts.map +0 -1
- package/dist/os/rfc/types.js +0 -100
- package/dist/os/rfc/types.js.map +0 -1
- package/dist/os/rfc/verification-evidence.d.ts +0 -8
- package/dist/os/rfc/verification-evidence.d.ts.map +0 -1
- package/dist/os/rfc/verification-evidence.js +0 -184
- package/dist/os/rfc/verification-evidence.js.map +0 -1
- package/dist/os/session/atif-parser.d.ts +0 -29
- package/dist/os/session/atif-parser.d.ts.map +0 -1
- package/dist/os/session/atif-parser.js +0 -140
- package/dist/os/session/atif-parser.js.map +0 -1
- package/dist/os/session/frontmatter-io.d.ts +0 -31
- package/dist/os/session/frontmatter-io.d.ts.map +0 -1
- package/dist/os/session/frontmatter-io.js +0 -146
- package/dist/os/session/frontmatter-io.js.map +0 -1
- package/dist/os/session/handlers/archive.d.ts +0 -4
- package/dist/os/session/handlers/archive.d.ts.map +0 -1
- package/dist/os/session/handlers/archive.js +0 -241
- package/dist/os/session/handlers/archive.js.map +0 -1
- package/dist/os/session/handlers/list.d.ts +0 -4
- package/dist/os/session/handlers/list.d.ts.map +0 -1
- package/dist/os/session/handlers/list.js +0 -147
- package/dist/os/session/handlers/list.js.map +0 -1
- package/dist/os/session/handlers/save.d.ts +0 -6
- package/dist/os/session/handlers/save.d.ts.map +0 -1
- package/dist/os/session/handlers/save.js +0 -297
- package/dist/os/session/handlers/save.js.map +0 -1
- package/dist/os/session/handlers/validate.d.ts +0 -4
- package/dist/os/session/handlers/validate.d.ts.map +0 -1
- package/dist/os/session/handlers/validate.js +0 -188
- package/dist/os/session/handlers/validate.js.map +0 -1
- package/dist/os/session/index.d.ts +0 -9
- package/dist/os/session/index.d.ts.map +0 -1
- package/dist/os/session/index.js +0 -20
- package/dist/os/session/index.js.map +0 -1
- package/dist/os/session/session.module.d.ts +0 -3
- package/dist/os/session/session.module.d.ts.map +0 -1
- package/dist/os/session/session.module.js +0 -115
- package/dist/os/session/session.module.js.map +0 -1
- package/dist/os/session/types.d.ts +0 -101
- package/dist/os/session/types.d.ts.map +0 -1
- package/dist/os/session/types.js +0 -52
- package/dist/os/session/types.js.map +0 -1
- package/dist/os/spec/live-spec-list.d.ts +0 -4
- package/dist/os/spec/live-spec-list.d.ts.map +0 -1
- package/dist/os/spec/live-spec-list.js +0 -64
- package/dist/os/spec/live-spec-list.js.map +0 -1
- package/dist/os/spec/live-spec-merge.d.ts +0 -4
- package/dist/os/spec/live-spec-merge.d.ts.map +0 -1
- package/dist/os/spec/live-spec-merge.js +0 -345
- package/dist/os/spec/live-spec-merge.js.map +0 -1
- package/dist/os/spec/live-spec-show.d.ts +0 -4
- package/dist/os/spec/live-spec-show.d.ts.map +0 -1
- package/dist/os/spec/live-spec-show.js +0 -99
- package/dist/os/spec/live-spec-show.js.map +0 -1
- package/dist/os/spec/live-spec-types.d.ts +0 -71
- package/dist/os/spec/live-spec-types.d.ts.map +0 -1
- package/dist/os/spec/live-spec-types.js +0 -14
- package/dist/os/spec/live-spec-types.js.map +0 -1
- package/dist/os/spec/live-spec-validate.d.ts +0 -4
- package/dist/os/spec/live-spec-validate.d.ts.map +0 -1
- package/dist/os/spec/live-spec-validate.js +0 -140
- package/dist/os/spec/live-spec-validate.js.map +0 -1
- package/dist/os/spec/spec-materialize.d.ts +0 -21
- package/dist/os/spec/spec-materialize.d.ts.map +0 -1
- package/dist/os/spec/spec-materialize.js +0 -336
- package/dist/os/spec/spec-materialize.js.map +0 -1
- package/dist/os/spec/spec-schema.d.ts +0 -126
- package/dist/os/spec/spec-schema.d.ts.map +0 -1
- package/dist/os/spec/spec-schema.js +0 -118
- package/dist/os/spec/spec-schema.js.map +0 -1
- package/dist/os/spec/spec-status.d.ts +0 -33
- package/dist/os/spec/spec-status.d.ts.map +0 -1
- package/dist/os/spec/spec-status.js +0 -222
- package/dist/os/spec/spec-status.js.map +0 -1
- package/dist/os/spec/spec-validate.d.ts +0 -4
- package/dist/os/spec/spec-validate.d.ts.map +0 -1
- package/dist/os/spec/spec-validate.js +0 -435
- package/dist/os/spec/spec-validate.js.map +0 -1
- package/dist/os/spec/spec.module.d.ts +0 -3
- package/dist/os/spec/spec.module.d.ts.map +0 -1
- package/dist/os/spec/spec.module.js +0 -119
- package/dist/os/spec/spec.module.js.map +0 -1
- package/dist/os/werkstatt/handlers/lock.d.ts +0 -10
- package/dist/os/werkstatt/handlers/lock.d.ts.map +0 -1
- package/dist/os/werkstatt/handlers/lock.js +0 -153
- package/dist/os/werkstatt/handlers/lock.js.map +0 -1
- package/dist/os/werkstatt/handlers/schema.d.ts +0 -33
- package/dist/os/werkstatt/handlers/schema.d.ts.map +0 -1
- package/dist/os/werkstatt/handlers/schema.js +0 -42
- package/dist/os/werkstatt/handlers/schema.js.map +0 -1
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.d.ts +0 -15
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.d.ts.map +0 -1
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js +0 -144
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js.map +0 -1
- package/dist/os/werkstatt/handlers/werkstatt-lock-status.d.ts +0 -18
- package/dist/os/werkstatt/handlers/werkstatt-lock-status.d.ts.map +0 -1
- package/dist/os/werkstatt/handlers/werkstatt-lock-status.js +0 -43
- package/dist/os/werkstatt/handlers/werkstatt-lock-status.js.map +0 -1
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.d.ts +0 -11
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.d.ts.map +0 -1
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js +0 -79
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js.map +0 -1
- package/dist/os/werkstatt/index.d.ts +0 -7
- package/dist/os/werkstatt/index.d.ts.map +0 -1
- package/dist/os/werkstatt/index.js +0 -18
- package/dist/os/werkstatt/index.js.map +0 -1
- package/dist/os/werkstatt/werkstatt.module.d.ts +0 -3
- package/dist/os/werkstatt/werkstatt.module.d.ts.map +0 -1
- package/dist/os/werkstatt/werkstatt.module.js +0 -58
- package/dist/os/werkstatt/werkstatt.module.js.map +0 -1
- package/dist/os/workflow/handlers.d.ts +0 -12
- package/dist/os/workflow/handlers.d.ts.map +0 -1
- package/dist/os/workflow/handlers.js +0 -254
- package/dist/os/workflow/handlers.js.map +0 -1
- package/dist/os/workflow/index.d.ts +0 -4
- package/dist/os/workflow/index.d.ts.map +0 -1
- package/dist/os/workflow/index.js +0 -18
- package/dist/os/workflow/index.js.map +0 -1
- package/dist/os/workflow/types.d.ts +0 -69
- package/dist/os/workflow/types.d.ts.map +0 -1
- package/dist/os/workflow/types.js +0 -23
- package/dist/os/workflow/types.js.map +0 -1
- package/dist/os/workflow/workflow.module.d.ts +0 -3
- package/dist/os/workflow/workflow.module.d.ts.map +0 -1
- package/dist/os/workflow/workflow.module.js +0 -48
- package/dist/os/workflow/workflow.module.js.map +0 -1
- package/dist/src/cli-output.d.ts +0 -5
- package/dist/src/cli-output.d.ts.map +0 -1
- package/dist/src/cli-output.js +0 -53
- package/dist/src/cli-output.js.map +0 -1
- package/dist/src/config/forge-config.d.ts +0 -242
- package/dist/src/config/forge-config.d.ts.map +0 -1
- package/dist/src/config/forge-config.js +0 -359
- package/dist/src/config/forge-config.js.map +0 -1
- package/dist/src/forge-module.d.ts +0 -16
- package/dist/src/forge-module.d.ts.map +0 -1
- package/dist/src/forge-module.js +0 -15
- package/dist/src/forge-module.js.map +0 -1
- package/dist/src/index.d.ts +0 -36
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -56
- package/dist/src/index.js.map +0 -1
- package/dist/src/knowledge/budgets.d.ts +0 -38
- package/dist/src/knowledge/budgets.d.ts.map +0 -1
- package/dist/src/knowledge/budgets.js +0 -157
- package/dist/src/knowledge/budgets.js.map +0 -1
- package/dist/src/knowledge/compact.d.ts +0 -47
- package/dist/src/knowledge/compact.d.ts.map +0 -1
- package/dist/src/knowledge/compact.js +0 -320
- package/dist/src/knowledge/compact.js.map +0 -1
- package/dist/src/knowledge/index.d.ts +0 -7
- package/dist/src/knowledge/index.d.ts.map +0 -1
- package/dist/src/knowledge/index.js +0 -19
- package/dist/src/knowledge/index.js.map +0 -1
- package/dist/src/knowledge/parse.d.ts +0 -3
- package/dist/src/knowledge/parse.d.ts.map +0 -1
- package/dist/src/knowledge/parse.js +0 -205
- package/dist/src/knowledge/parse.js.map +0 -1
- package/dist/src/knowledge/promote.d.ts +0 -37
- package/dist/src/knowledge/promote.d.ts.map +0 -1
- package/dist/src/knowledge/promote.js +0 -120
- package/dist/src/knowledge/promote.js.map +0 -1
- package/dist/src/knowledge/schema.d.ts +0 -61
- package/dist/src/knowledge/schema.d.ts.map +0 -1
- package/dist/src/knowledge/schema.js +0 -64
- package/dist/src/knowledge/schema.js.map +0 -1
- package/dist/src/knowledge/serialize.d.ts +0 -3
- package/dist/src/knowledge/serialize.d.ts.map +0 -1
- package/dist/src/knowledge/serialize.js +0 -67
- package/dist/src/knowledge/serialize.js.map +0 -1
- package/dist/src/migration-adapters/git-utils.d.ts +0 -3
- package/dist/src/migration-adapters/git-utils.d.ts.map +0 -1
- package/dist/src/migration-adapters/git-utils.js +0 -56
- package/dist/src/migration-adapters/git-utils.js.map +0 -1
- package/dist/src/migration-adapters/ignored-files.d.ts +0 -12
- package/dist/src/migration-adapters/ignored-files.d.ts.map +0 -1
- package/dist/src/migration-adapters/ignored-files.js +0 -190
- package/dist/src/migration-adapters/ignored-files.js.map +0 -1
- package/dist/src/migration-adapters/index.d.ts +0 -8
- package/dist/src/migration-adapters/index.d.ts.map +0 -1
- package/dist/src/migration-adapters/index.js +0 -17
- package/dist/src/migration-adapters/index.js.map +0 -1
- package/dist/src/migration-adapters/node-typescript-pnpm/index.d.ts +0 -3
- package/dist/src/migration-adapters/node-typescript-pnpm/index.d.ts.map +0 -1
- package/dist/src/migration-adapters/node-typescript-pnpm/index.js +0 -141
- package/dist/src/migration-adapters/node-typescript-pnpm/index.js.map +0 -1
- package/dist/src/migration-adapters/phaser-pnpm/index.d.ts +0 -3
- package/dist/src/migration-adapters/phaser-pnpm/index.d.ts.map +0 -1
- package/dist/src/migration-adapters/phaser-pnpm/index.js +0 -142
- package/dist/src/migration-adapters/phaser-pnpm/index.js.map +0 -1
- package/dist/src/migration-adapters/registry.d.ts +0 -6
- package/dist/src/migration-adapters/registry.d.ts.map +0 -1
- package/dist/src/migration-adapters/registry.js +0 -55
- package/dist/src/migration-adapters/registry.js.map +0 -1
- package/dist/src/migration-adapters/types.d.ts +0 -35
- package/dist/src/migration-adapters/types.d.ts.map +0 -1
- package/dist/src/migration-adapters/types.js +0 -31
- package/dist/src/migration-adapters/types.js.map +0 -1
- package/dist/src/onboarding/agents-generate.d.ts +0 -30
- package/dist/src/onboarding/agents-generate.d.ts.map +0 -1
- package/dist/src/onboarding/agents-generate.js +0 -352
- package/dist/src/onboarding/agents-generate.js.map +0 -1
- package/dist/src/onboarding/create.d.ts +0 -12
- package/dist/src/onboarding/create.d.ts.map +0 -1
- package/dist/src/onboarding/create.js +0 -318
- package/dist/src/onboarding/create.js.map +0 -1
- package/dist/src/onboarding/doctor.d.ts +0 -45
- package/dist/src/onboarding/doctor.d.ts.map +0 -1
- package/dist/src/onboarding/doctor.js +0 -1108
- package/dist/src/onboarding/doctor.js.map +0 -1
- package/dist/src/onboarding/init.d.ts +0 -32
- package/dist/src/onboarding/init.d.ts.map +0 -1
- package/dist/src/onboarding/init.js +0 -291
- package/dist/src/onboarding/init.js.map +0 -1
- package/dist/src/onboarding/invariant-engine.d.ts +0 -17
- package/dist/src/onboarding/invariant-engine.d.ts.map +0 -1
- package/dist/src/onboarding/invariant-engine.js +0 -416
- package/dist/src/onboarding/invariant-engine.js.map +0 -1
- package/dist/src/onboarding/memory-scaffold.d.ts +0 -18
- package/dist/src/onboarding/memory-scaffold.d.ts.map +0 -1
- package/dist/src/onboarding/memory-scaffold.js +0 -151
- package/dist/src/onboarding/memory-scaffold.js.map +0 -1
- package/dist/src/onboarding/nested-agents-generate.d.ts +0 -18
- package/dist/src/onboarding/nested-agents-generate.d.ts.map +0 -1
- package/dist/src/onboarding/nested-agents-generate.js +0 -69
- package/dist/src/onboarding/nested-agents-generate.js.map +0 -1
- package/dist/src/onboarding/nested-agents-templates.d.ts +0 -26
- package/dist/src/onboarding/nested-agents-templates.d.ts.map +0 -1
- package/dist/src/onboarding/nested-agents-templates.js +0 -178
- package/dist/src/onboarding/nested-agents-templates.js.map +0 -1
- package/dist/src/onboarding/profile-validate.d.ts +0 -13
- package/dist/src/onboarding/profile-validate.d.ts.map +0 -1
- package/dist/src/onboarding/profile-validate.js +0 -109
- package/dist/src/onboarding/profile-validate.js.map +0 -1
- package/dist/src/onboarding/scaffold-project.d.ts +0 -12
- package/dist/src/onboarding/scaffold-project.d.ts.map +0 -1
- package/dist/src/onboarding/scaffold-project.js +0 -248
- package/dist/src/onboarding/scaffold-project.js.map +0 -1
- package/dist/src/onboarding/scaffold.d.ts +0 -15
- package/dist/src/onboarding/scaffold.d.ts.map +0 -1
- package/dist/src/onboarding/scaffold.js +0 -120
- package/dist/src/onboarding/scaffold.js.map +0 -1
- package/dist/src/onboarding/upgrade.d.ts +0 -25
- package/dist/src/onboarding/upgrade.d.ts.map +0 -1
- package/dist/src/onboarding/upgrade.js +0 -391
- package/dist/src/onboarding/upgrade.js.map +0 -1
- package/dist/src/onboarding/workspace-discovery.d.ts +0 -11
- package/dist/src/onboarding/workspace-discovery.d.ts.map +0 -1
- package/dist/src/onboarding/workspace-discovery.js +0 -138
- package/dist/src/onboarding/workspace-discovery.js.map +0 -1
- package/dist/src/profiles/profile-schema.d.ts +0 -351
- package/dist/src/profiles/profile-schema.d.ts.map +0 -1
- package/dist/src/profiles/profile-schema.js +0 -201
- package/dist/src/profiles/profile-schema.js.map +0 -1
- package/dist/src/profiles/stack-profile.d.ts +0 -168
- package/dist/src/profiles/stack-profile.d.ts.map +0 -1
- package/dist/src/profiles/stack-profile.js +0 -144
- package/dist/src/profiles/stack-profile.js.map +0 -1
- package/dist/src/profiles/terminology-utils.d.ts +0 -8
- package/dist/src/profiles/terminology-utils.d.ts.map +0 -1
- package/dist/src/profiles/terminology-utils.js +0 -31
- package/dist/src/profiles/terminology-utils.js.map +0 -1
- package/dist/src/registry.d.ts +0 -38
- package/dist/src/registry.d.ts.map +0 -1
- package/dist/src/registry.js +0 -135
- package/dist/src/registry.js.map +0 -1
- package/dist/src/skill-schema.d.ts +0 -30
- package/dist/src/skill-schema.d.ts.map +0 -1
- package/dist/src/skill-schema.js +0 -34
- package/dist/src/skill-schema.js.map +0 -1
- package/dist/src/types.d.ts +0 -152
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -17
- package/dist/src/types.js.map +0 -1
- package/dist/src/utils/fs-atomic.d.ts +0 -7
- package/dist/src/utils/fs-atomic.d.ts.map +0 -1
- package/dist/src/utils/fs-atomic.js +0 -81
- package/dist/src/utils/fs-atomic.js.map +0 -1
- package/dist/src/utils/fs-idempotent.d.ts +0 -2
- package/dist/src/utils/fs-idempotent.d.ts.map +0 -1
- package/dist/src/utils/fs-idempotent.js +0 -39
- package/dist/src/utils/fs-idempotent.js.map +0 -1
- package/dist/src/utils/fs-trash-sync.d.ts +0 -2
- package/dist/src/utils/fs-trash-sync.d.ts.map +0 -1
- package/dist/src/utils/fs-trash-sync.js +0 -34
- package/dist/src/utils/fs-trash-sync.js.map +0 -1
- package/dist/src/utils/fs-trash.d.ts +0 -2
- package/dist/src/utils/fs-trash.d.ts.map +0 -1
- package/dist/src/utils/fs-trash.js +0 -24
- package/dist/src/utils/fs-trash.js.map +0 -1
- package/dist/src/utils/fs.d.ts +0 -8
- package/dist/src/utils/fs.d.ts.map +0 -1
- package/dist/src/utils/fs.js +0 -60
- package/dist/src/utils/fs.js.map +0 -1
- package/dist/src/utils/generated-marker.d.ts +0 -21
- package/dist/src/utils/generated-marker.d.ts.map +0 -1
- package/dist/src/utils/generated-marker.js +0 -128
- package/dist/src/utils/generated-marker.js.map +0 -1
- package/dist/src/utils/hash.d.ts +0 -2
- package/dist/src/utils/hash.d.ts.map +0 -1
- package/dist/src/utils/hash.js +0 -18
- package/dist/src/utils/hash.js.map +0 -1
- package/dist/src/utils/index.d.ts +0 -9
- package/dist/src/utils/index.d.ts.map +0 -1
- package/dist/src/utils/index.js +0 -21
- package/dist/src/utils/index.js.map +0 -1
- package/dist/src/utils/string-utils.d.ts +0 -2
- package/dist/src/utils/string-utils.d.ts.map +0 -1
- package/dist/src/utils/string-utils.js +0 -19
- package/dist/src/utils/string-utils.js.map +0 -1
- package/dist/src/validators/note-frontmatter-validate.d.ts +0 -20
- package/dist/src/validators/note-frontmatter-validate.d.ts.map +0 -1
- package/dist/src/validators/note-frontmatter-validate.js +0 -117
- package/dist/src/validators/note-frontmatter-validate.js.map +0 -1
- package/dist/src/validators/note-link-validate.d.ts +0 -21
- package/dist/src/validators/note-link-validate.d.ts.map +0 -1
- package/dist/src/validators/note-link-validate.js +0 -121
- package/dist/src/validators/note-link-validate.js.map +0 -1
- package/dist/src/validators/note-orphan-detect.d.ts +0 -19
- package/dist/src/validators/note-orphan-detect.d.ts.map +0 -1
- package/dist/src/validators/note-orphan-detect.js +0 -123
- package/dist/src/validators/note-orphan-detect.js.map +0 -1
- package/dist/src/validators/port-validate.d.ts +0 -12
- package/dist/src/validators/port-validate.d.ts.map +0 -1
- package/dist/src/validators/port-validate.js +0 -78
- package/dist/src/validators/port-validate.js.map +0 -1
- package/dist/src/validators/skill-validate.d.ts +0 -29
- package/dist/src/validators/skill-validate.d.ts.map +0 -1
- package/dist/src/validators/skill-validate.js +0 -689
- package/dist/src/validators/skill-validate.js.map +0 -1
- package/profiles/editframe-templates/composition-agents.md +0 -69
- package/profiles/editframe-templates/composition.tsx +0 -81
- package/profiles/editframe-templates/html-composition-agents.md +0 -62
- package/profiles/editframe.yaml +0 -729
- package/profiles/obsidian-vault.yaml +0 -103
- package/skills/fo/ef-brand-video-generator/SKILL.md +0 -92
- package/skills/fo/ef-composition/SKILL.md +0 -156
- package/skills/fo/ef-composition-review/SKILL.md +0 -68
- package/skills/fo/ef-dev-server/SKILL.md +0 -107
- package/skills/fo/ef-editor-gui/SKILL.md +0 -131
- package/skills/fo/ef-motion-design/SKILL.md +0 -118
- package/skills/fo/ef-onboard/SKILL.md +0 -77
- package/skills/fo/ef-render-verify/SKILL.md +0 -56
- package/skills/fo/ef-webhooks/SKILL.md +0 -95
package/AGENTS.md
CHANGED
|
@@ -7,7 +7,7 @@ Portable governance skills and command modules extracted from the engine (RFC-03
|
|
|
7
7
|
- `src/` — portable, no kernel imports. Contains skill schema, registry, validators, onboarding handlers, config module, canonical types, and utilities.
|
|
8
8
|
- `os/` — ForgeModule registrations. RFC-0556: `os/compass/` and `os/werkstatt/` are fully autonomous — all command handlers are inlined in `os/*/handlers/` and no longer dynamically import `@warpgogol/*` packages. Other `os/` modules may still use dynamic imports where kernel integration is needed.
|
|
9
9
|
- `bin/` — CLI entrypoint (`forge` command) for autonomous usage without `@warpgogol/werkstatt`.
|
|
10
|
-
- `skills/` — forge-managed skill definitions (
|
|
10
|
+
- `skills/` — forge-managed skill definitions (35 fo skills + 5 shared + 3 meta = 43 skills). Project-declared skill packs (RFC-0539) live outside forge and are discovered via `discoverPackSkills` from `forge.yaml` `skillPacks` config.
|
|
11
11
|
|
|
12
12
|
## RFC-0855 program control-plane boundary
|
|
13
13
|
|
|
@@ -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
|
|
|
@@ -105,21 +106,9 @@ skillPacks:
|
|
|
105
106
|
- **MUST** use `hasGeneratedMarker()` from `utils/index.ts` for detecting generated file markers — never use raw `content.includes("GENERATED")` which is fragile and breaks if the marker format changes.
|
|
106
107
|
- **Compass shared flags:** New flags for compass commands MUST be added to the shared `compassScanFlags` object in `os/compass/compass.module.ts`, not to individual command definitions. The `compassScanFlags` object is spread into all compass commands that use `flags: { ...compassScanFlags }`, ensuring the flag is available consistently across the command family. Per-command flags that are unique to one command may be defined inline.
|
|
107
108
|
- **CLI flags must be wired to behavior.** Every flag declared in a command registration MUST affect the command's output or behavior — not just be read and stored. A flag that is read but never used is dead code and a contract violation. When adding a flag, implement its behavioral effect in the same commit. Verify by searching for the flag variable name in the handler function body.
|
|
108
|
-
- **Profile-driven workspace detection is domain-neutral.** `workspaceTypes` from a stack profile must replace hardcoded workspace detection for ALL domains, not just software. Do NOT gate `checkNestedAgentsMd` or `discoverWorkspaces` by `isSoftwareDomain` — that silently skips the check for non-software domains (
|
|
109
|
+
- **Profile-driven workspace detection is domain-neutral.** `workspaceTypes` from a stack profile must replace hardcoded workspace detection for ALL domains, not just software. Do NOT gate `checkNestedAgentsMd` or `discoverWorkspaces` by `isSoftwareDomain` — that silently skips the check for non-software domains (game, creative, etc.). When `workspaceTypes` is present, it fully replaces hardcoded detection; when absent, hardcoded detection is the fallback for all domains.
|
|
109
110
|
- **`command-registered` probes MUST fall back to command manifest.** The `command-registered` probe in `os/rfc/acceptance.ts` uses `commandRegistry?.listCommands()`, which only sees workspace-scoped commands (forge modules). App-scoped commands from `werkstatt-site/checks` are invisible to the workspace-level registry. Always include a `loadManifestCommandNames(workspaceRoot)` fallback, matching the pattern already used in `os/rfc/handlers/lifecycle.ts`. Without this, `rfc.acceptance.run` and `rfc.verification.emit` will falsely report app-scoped commands as "not registered".
|
|
110
111
|
|
|
111
|
-
## Editframe template rules
|
|
112
|
-
|
|
113
|
-
- **TimelineRoot MUST NOT be used inside Workbench.** `TimelineRoot` renders a `<div style="display: contents">` wrapper that breaks `EFWorkbenchElement.#initialize()` — it searches for `TemporalElement` among direct children of `ef-canvas`, but the div wrapper makes `ef-timegroup` a grandchild instead of a direct child. The correct structure is `Workbench > Configuration > Timegroup`. `TimelineRoot` is only valid outside `Workbench` (e.g. standalone render compositions without preview).
|
|
114
|
-
- **Text content MUST be passed as children, not via `text` prop.** `ef-text` reads text from child text nodes via `#captureRawText()`, not from the `text` attribute. Use `<Text style={{ color: "white" }}>Hello</Text>`, not `<Text text="Hello" color="white" />`.
|
|
115
|
-
- **Text styling MUST use the `style` prop or CSS classes, not HTML attributes.** `ef-text` does not read `x`, `y`, `fontSize`, `color`, `textAlign` as attributes. Pass them via `style={{ fontSize: "48px", color: "white" }}` or Tailwind classes.
|
|
116
|
-
- **Timegroup inside Workbench MUST have explicit dimensions.** Without `style={{ width, height }}`, `Timegroup` renders as a 0×0 inline element. Set dimensions matching the composition resolution (e.g. `1920px` × `1080px`).
|
|
117
|
-
- **main.tsx MUST set `height: 100%` on `html`, `body`, and `#root`** and override `ef-workbench { display: grid }` after importing `@editframe/elements/styles.css`. The document-level `ef-workbench { display: block }` rule overrides the shadow DOM `:host { display: grid }`, breaking the grid layout and making the preview invisible.
|
|
118
|
-
- **In `contain` mode, parent duration = max child duration.** If a child `Text` has `duration="5s"` but the parent `Timegroup` has `duration="10s"`, the composition will be 5s, not 10s. Always match child durations to the parent when using `contain` mode, or the composition will be silently shorter than expected.
|
|
119
|
-
- **`--ef-progress` CSS variable (0→1) is available on temporal elements** for driving animations. Use it in `style` props: `opacity: "min(1, var(--ef-progress, 0) * 5)"` fades in over the first 20% of the timeline. `transform: "scale(min(1, 0.8 + var(--ef-progress, 0) * 0.2))"` scales from 0.8 to 1.0. The variable is set by the temporal clock and updates during playback and scrubbing.
|
|
120
|
-
- **`PlaybackController.play()` after `ended` does NOT seek to 0** — this is a race condition in `@editframe/elements`. To make replay work, patch `play()` in a `useEffect` via a `ref` on the `Workbench` element: query `ef-configuration`, access `.playback`, and wrap `play()` to call `play({ from: 0 })` when `currentTime >= duration`. Also listen for the `playback-attached` event for late-bound controllers.
|
|
121
|
-
- **`@editframe/react` TypeScript types do not expose `ref` or accept all CSS string values.** Use `as any` casts (`const EFWorkbench = Workbench as any`, etc.) to bypass type errors without changing runtime behavior. This is required for `ref` on `Workbench` and for CSS function values like `min()` and `var()` in `style` props.
|
|
122
|
-
|
|
123
112
|
## RFC frontmatter: commands.changed (RFC-CMD-03)
|
|
124
113
|
|
|
125
114
|
The `commands.changed` field in RFC frontmatter must only list **registered CLI commands** (e.g. `compass.audit.baseline`, `mission.materialize`), not internal functions or handlers (e.g. `acquireLock`, `releaseLock`). `rfc.validate` enforces this via RFC-CMD-03: every entry in `commands.changed` must match a live command in the registry. Internal functions that are not registered as CLI commands must not appear in `commands.changed` — use `packagesImpacted` to indicate which packages were modified.
|
|
@@ -163,15 +152,15 @@ Stack profiles are YAML documents under `profiles/` describing a supported stack
|
|
|
163
152
|
- **MUST NOT** scaffold into a non-empty directory — no `--force` flag.
|
|
164
153
|
- **MUST NOT** add stack profiles for stacks forge cannot scaffold end-to-end.
|
|
165
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.
|
|
166
|
-
- Shipped profiles: `astro-typescript-turborepo`, `phaser-turborepo`, `forge-shell` (minimal — default for `create`)
|
|
155
|
+
- Shipped profiles: `astro-typescript-turborepo`, `phaser-turborepo`, `godot-csharp`, `forge-shell` (minimal — default for `create`).
|
|
167
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.
|
|
168
157
|
|
|
169
158
|
### Domain fields (RFC-0638)
|
|
170
159
|
|
|
171
160
|
The `forge/stack-profile@1` schema includes six optional domain-neutral fields that allow a profile to declare its domain model. All fields are optional — existing profiles without them parse and function identically.
|
|
172
161
|
|
|
173
|
-
- **`domain`** — string identifying the project domain (e.g. `software`, `
|
|
174
|
-
- **`terminology`** — map of universal concept keys to domain-specific terms (e.g. `artifact: "
|
|
162
|
+
- **`domain`** — string identifying the project domain (e.g. `software`, `game`, `book`, `music`, `illustration`). Used for profile detection and doctor output.
|
|
163
|
+
- **`terminology`** — map of universal concept keys to domain-specific terms (e.g. `artifact: "game"`). Open vocabulary; universal keys have built-in defaults exported as `TERMINOLOGY_DEFAULTS`. Missing keys fall back to the default term.
|
|
175
164
|
- **`artifacts`** — array of artifact definitions (id, extensions, produce/validate commands, determinism properties). Used by `doctor` for domain-specific health checks in follow-up RFCs.
|
|
176
165
|
- **`workspaceTypes`** — array of workspace type definitions (id, detection markers, associated skills, AGENTS.md template). Used by `forge.agents.generate` for per-domain workspace detection in follow-up RFCs.
|
|
177
166
|
- **`invariants`** — array of domain-specific invariant definitions (id matching `^[A-Z]+-\d+$`, rule text, severity). Schema only — enforcement is deferred to follow-up RFCs.
|
|
@@ -364,8 +353,8 @@ When publishing `@warpgogol/forge`, npm resolves the auth token from `.npmrc` fi
|
|
|
364
353
|
- **Golden fixture for `agents-generate`** — when adding or modifying sections in `agents-generate.ts`, the golden fixture `src/tests/fixtures/agents-generate-business-before.txt` MUST be updated to match the new generated output. The test `agents-generate-domain.test.ts` compares generated content against this fixture with `expect(content).toBe(goldenFixture)` — a mismatch fails the test.
|
|
365
354
|
- **SKILL-17 brand pattern must be case-sensitive** — the brand regex in `skill-validate.ts` uses a `@`-lookbehind to allow `@warpgogol/<pkg>` npm-scope references in skill instruction lines. Making the regex case-insensitive (`/gi`) defeats the lookbehind and false-flags every `@warpgogol` import as a brand violation. Keep the regex case-sensitive (`/g` only) so the `@`-scope allowance works correctly.
|
|
366
355
|
- **`vi.resetModules()` before `vi.doMock()` for Node builtins** — when mocking Node built-in modules (e.g. `node:child_process`) in vitest, `vi.resetModules()` MUST be called BEFORE `vi.doMock()`. Without `resetModules()` first, the module cache retains the original module and the mock is not applied on re-import via dynamic `import()`. After the test, call `vi.doUnmock()` and `vi.resetModules()` to restore. Discovered during `upgrade.test.ts` `--update-npm` mock testing.
|
|
367
|
-
- **Mock `execSync` for scaffold tests** — `runScaffoldProject` calls `execSync` to run `pnpm add` install commands, which fail in test environments without network access. Mock `node:child_process` with `vi.mock("node:child_process", async (importActual) => { const actual = await importActual(); return { ...actual, execSync: vi.fn(() => Buffer.from("mocked")) }; })` and use dynamic `await import("../onboarding/scaffold-project.ts")` after the mock. Use `vi.importActual` to preserve `execFile` (used by `promisify(execFile)` in forge/os/compass).
|
|
368
|
-
- **`runDoctor` profile resolution in tests** — `runDoctor` calls `resolveForgeRoot(workspaceRoot)` which searches for `packages/forge/` relative to the workspace root. In temp-directory tests, the forge package is not found, so profile-dependent checks (prerequisites, invariants) are silently skipped. Either pass `forgeRoot` in the `ForgeRuntimeContext` (preferred), or create a minimal `packages/forge/profiles/<id>.yaml` inside the temp directory.
|
|
356
|
+
- **Mock `execSync` for scaffold tests** — `runScaffoldProject` calls `execSync` to run `pnpm add` install commands, which fail in test environments without network access. Mock `node:child_process` with `vi.mock("node:child_process", async (importActual) => { const actual = await importActual(); return { ...actual, execSync: vi.fn(() => Buffer.from("mocked")) }; })` and use dynamic `await import("../onboarding/scaffold-project.ts")` after the mock. Use `vi.importActual` to preserve `execFile` (used by `promisify(execFile)` in forge/os/compass).
|
|
357
|
+
- **`runDoctor` profile resolution in tests** — `runDoctor` calls `resolveForgeRoot(workspaceRoot)` which searches for `packages/forge/` relative to the workspace root. In temp-directory tests, the forge package is not found, so profile-dependent checks (prerequisites, invariants) are silently skipped. Either pass `forgeRoot` in the `ForgeRuntimeContext` (preferred), or create a minimal `packages/forge/profiles/<id>.yaml` inside the temp directory.
|
|
369
358
|
|
|
370
359
|
## RFC frontmatter: versionBump for prose-only policy RFCs
|
|
371
360
|
|
package/README.md
CHANGED
|
@@ -12,13 +12,49 @@ Forge supports four kinds of projects. You pick one when you start — everythin
|
|
|
12
12
|
| --- | --- | --- |
|
|
13
13
|
| **Website** | A public website or web app — pages, blog, portfolio, landing page, online store | Photography studio site, restaurant website, SaaS landing page |
|
|
14
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
15
|
| **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
|
+
| **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 |
|
|
17
17
|
|
|
18
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
19
|
|
|
20
20
|
---
|
|
21
21
|
|
|
22
|
+
## Forge and the Werkstatt engine
|
|
23
|
+
|
|
24
|
+
Forge is the **governance layer** — skills, RFC/ADR workflows, naming conventions, spec vendoring, and the CLI. It is framework-agnostic and has zero runtime dependencies (only `yaml` + `zod`).
|
|
25
|
+
|
|
26
|
+
For full project lifecycle management — missions, releases, deployment, certification, quality checks, content codegen — Forge connects to the **Werkstatt engine** and **stack-specific plugins**. These are separate npm packages installed alongside Forge when you need runtime capabilities beyond governance.
|
|
27
|
+
|
|
28
|
+
| Package | Purpose | Required for |
|
|
29
|
+
| --- | --- | --- |
|
|
30
|
+
| `@warpgogol/werkstatt` | Runtime engine — missions, releases, Leitstand deployment, certification, Bordbuch, artifact store | All project types with lifecycle management |
|
|
31
|
+
| `@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
|
+
| `@warpgogol/werkstatt-game` | Phaser game plugin — game validators, Vite build, deploy adapters | Browser game projects (`phaser-turborepo`) |
|
|
34
|
+
| `@warpgogol/werkstatt-godot` | Godot plugin — scene validators, dotnet build, itch.io deploy, Godot skills | Godot game projects (`godot-csharp`) |
|
|
35
|
+
|
|
36
|
+
### When you need these packages
|
|
37
|
+
|
|
38
|
+
- **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.
|
|
40
|
+
|
|
41
|
+
### Installing engine packages
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
# Website project
|
|
45
|
+
pnpm add -D @warpgogol/werkstatt @warpgogol/werkstatt-site
|
|
46
|
+
|
|
47
|
+
# Browser game project
|
|
48
|
+
pnpm add -D @warpgogol/werkstatt @warpgogol/werkstatt-game
|
|
49
|
+
|
|
50
|
+
# Godot game project
|
|
51
|
+
pnpm add -D @warpgogol/werkstatt @warpgogol/werkstatt-godot
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
> **Note for agents:** When scaffolding a new project with `forge create`, always install the engine and matching stack plugin after the scaffold completes. The `forge.yaml` bindings reference commands from these packages (e.g. `pnpm exec werkstatt run rfc.validate`), and they will fail if the packages are not installed.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
22
58
|
## Complete installation guide (from zero)
|
|
23
59
|
|
|
24
60
|
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.
|
|
@@ -154,43 +190,27 @@ Forge works through conversation with an AI agent. You need an IDE that supports
|
|
|
154
190
|
|
|
155
191
|
You can also use **Cursor** ([cursor.com](https://cursor.com)) or any IDE that supports AI agent skills.
|
|
156
192
|
|
|
157
|
-
### Optional — Install
|
|
193
|
+
### Optional — Install Godot and .NET (only for Godot game projects)
|
|
194
|
+
|
|
195
|
+
If you're planning to create **Godot game** projects (the `godot-csharp` profile), you need two additional tools:
|
|
158
196
|
|
|
159
|
-
|
|
197
|
+
- **Godot 4.x** (with .NET support) — the game engine. Download it from [godotengine.org/download](https://godotengine.org/download). Make sure to choose the ".NET" version (not the standard version).
|
|
198
|
+
- **.NET SDK 8+** — the C# runtime and build tools. Download it from [dotnet.microsoft.com/download](https://dotnet.microsoft.com/download).
|
|
160
199
|
|
|
161
|
-
|
|
200
|
+
Verify both are installed:
|
|
162
201
|
|
|
163
202
|
```sh
|
|
164
|
-
|
|
165
|
-
|
|
203
|
+
godot --version
|
|
204
|
+
dotnet --version
|
|
166
205
|
```
|
|
167
206
|
|
|
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
207
|
### Troubleshooting
|
|
188
208
|
|
|
189
209
|
- **"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
210
|
- **"EACCES permission denied" on Ubuntu when installing Forge globally** — Run `sudo pnpm add -g @warpgogol/forge` instead.
|
|
191
211
|
- **"corepack: command not found"** — Your Node.js version is too old. Install Node.js 24+ using the steps above.
|
|
192
212
|
- **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 --
|
|
213
|
+
- **AI agent doesn't know about Forge** — You opened an empty folder, but the AI agent has no Forge context. Run `forge create --in-place --profile astro-typescript-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.
|
|
194
214
|
|
|
195
215
|
---
|
|
196
216
|
|
|
@@ -202,29 +222,27 @@ You need to run one command in the terminal to create your project. After that,
|
|
|
202
222
|
|
|
203
223
|
#### Start a new project from scratch
|
|
204
224
|
|
|
205
|
-
1. **Create a Forge
|
|
225
|
+
1. **Create a project folder and scaffold Forge in-place.** Open a terminal (PowerShell on Windows, Terminal on Ubuntu) and run:
|
|
206
226
|
|
|
207
227
|
```sh
|
|
208
|
-
|
|
228
|
+
mkdir my-site
|
|
229
|
+
cd my-site
|
|
230
|
+
forge create --in-place --profile astro-typescript-turborepo
|
|
209
231
|
```
|
|
210
232
|
|
|
211
|
-
|
|
233
|
+
The project name is derived from the folder name (`my-site` 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`:
|
|
212
234
|
|
|
213
|
-
| What you want to build
|
|
214
|
-
|
|
|
215
|
-
|
|
|
216
|
-
|
|
|
217
|
-
|
|
|
218
|
-
| Library or governance-only project
|
|
235
|
+
| What you want to build | Profile flag |
|
|
236
|
+
| --------------------------------------- | -------------------------------------- |
|
|
237
|
+
| Website (landing page, blog, portfolio) | `--profile astro-typescript-turborepo` |
|
|
238
|
+
| Browser game (2D, arcade, puzzle) | `--profile phaser-turborepo` |
|
|
239
|
+
| Godot game (desktop, mobile, 2D/3D) | `--profile godot-csharp` |
|
|
240
|
+
| Library or governance-only project | `--profile forge-shell` |
|
|
219
241
|
|
|
220
|
-
2. **Open the project folder in your AI IDE.** Open the folder
|
|
242
|
+
2. **Open the project folder in your AI IDE.** Open the folder from step 1 in Windsurf or your preferred IDE.
|
|
221
243
|
|
|
222
244
|
3. **Tell the AI agent what you want to build.** Just type it in the chat, in your own words. For example:
|
|
223
245
|
|
|
224
|
-
> I want to create a brand video for my coffee shop. It should have an animated logo, a short intro, and a product showcase.
|
|
225
|
-
|
|
226
|
-
Or:
|
|
227
|
-
|
|
228
246
|
> I want to build a website for my photography studio.
|
|
229
247
|
|
|
230
248
|
Or:
|
|
@@ -236,35 +254,37 @@ You need to run one command in the terminal to create your project. After that,
|
|
|
236
254
|
> I want to create a TypeScript library for calculating astrology charts.
|
|
237
255
|
|
|
238
256
|
That's it. The AI agent will do everything else:
|
|
239
|
-
- Set up the project structure based on what you described (
|
|
257
|
+
- Set up the project structure based on what you described (website, game, library, etc.)
|
|
240
258
|
- Configure language preferences and project settings
|
|
241
|
-
- Start a live preview so you can see your work (for websites
|
|
259
|
+
- Start a live preview so you can see your work (for websites and games)
|
|
242
260
|
- Tell you the URL to open in your browser
|
|
243
261
|
|
|
244
|
-
4. **Watch the preview.** For websites
|
|
262
|
+
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.
|
|
245
263
|
|
|
246
264
|
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.
|
|
247
265
|
|
|
248
|
-
5. **Create together.** From here on, you just talk. Want a different color? Want to add a scene? Want to
|
|
266
|
+
5. **Create together.** From here on, you just talk. Want a different color? Want to add a scene? Want to add a new function to your library? Just say it. The agent handles all the technical work.
|
|
249
267
|
|
|
250
268
|
#### Bring an existing project into Forge
|
|
251
269
|
|
|
252
270
|
If you already have a project somewhere else and want to move it into Forge:
|
|
253
271
|
|
|
254
|
-
1. **Create a Forge project.** Open a terminal and run:
|
|
272
|
+
1. **Create a Forge project.** Open a terminal, create a folder, and run:
|
|
255
273
|
|
|
256
274
|
```sh
|
|
257
|
-
|
|
275
|
+
mkdir my-project
|
|
276
|
+
cd my-project
|
|
277
|
+
forge create --in-place --profile forge-shell
|
|
258
278
|
```
|
|
259
279
|
|
|
260
|
-
Then open the
|
|
280
|
+
Then open the folder in your AI IDE.
|
|
261
281
|
|
|
262
282
|
2. **Tell the AI agent:**
|
|
263
283
|
|
|
264
284
|
> I want to bring my existing project into Forge. It's located at /path/to/my/project.
|
|
265
285
|
|
|
266
286
|
The agent will:
|
|
267
|
-
- Detect what kind of project it is (website,
|
|
287
|
+
- Detect what kind of project it is (website, game, library, etc.)
|
|
268
288
|
- Move all your files into the new Forge project — including hidden files like `.env`
|
|
269
289
|
- Optionally bring your git history
|
|
270
290
|
- Verify everything builds correctly
|
|
@@ -278,24 +298,33 @@ Just tell the AI agent. It can check the project's health, fix issues, and expla
|
|
|
278
298
|
|
|
279
299
|
### For developers — CLI commands
|
|
280
300
|
|
|
281
|
-
#### Create a new project
|
|
301
|
+
#### Create a new project (in-place)
|
|
282
302
|
|
|
283
303
|
```sh
|
|
284
|
-
# Create a
|
|
285
|
-
|
|
304
|
+
# Create a project folder, then scaffold Forge in-place
|
|
305
|
+
mkdir my-project
|
|
306
|
+
cd my-project
|
|
307
|
+
forge create --in-place --profile forge-shell
|
|
286
308
|
|
|
287
309
|
# With a specific stack profile
|
|
288
|
-
|
|
289
|
-
forge create --
|
|
290
|
-
forge create --name my-video --profile editframe
|
|
291
|
-
forge create --name my-library --profile forge-shell
|
|
310
|
+
mkdir my-site && cd my-site
|
|
311
|
+
forge create --in-place --profile astro-typescript-turborepo
|
|
292
312
|
|
|
313
|
+
mkdir my-game && cd my-game
|
|
314
|
+
forge create --in-place --profile phaser-turborepo
|
|
315
|
+
|
|
316
|
+
mkdir my-godot-game && cd my-godot-game
|
|
317
|
+
forge create --in-place --profile godot-csharp
|
|
318
|
+
|
|
319
|
+
# Override the project name (derived from folder name by default)
|
|
320
|
+
forge create --in-place --profile forge-shell --name my-custom-name
|
|
293
321
|
```
|
|
294
322
|
|
|
295
323
|
If Forge is not installed globally, use `pnpm dlx` instead:
|
|
296
324
|
|
|
297
325
|
```sh
|
|
298
|
-
|
|
326
|
+
mkdir my-project && cd my-project
|
|
327
|
+
pnpm dlx @warpgogol/forge create --in-place --profile forge-shell
|
|
299
328
|
```
|
|
300
329
|
|
|
301
330
|
#### Bring an existing project into Forge
|
|
@@ -303,15 +332,16 @@ pnpm dlx @warpgogol/forge create --name my-project
|
|
|
303
332
|
There is no CLI command for transplant — it is an interactive, AI-guided process:
|
|
304
333
|
|
|
305
334
|
```sh
|
|
306
|
-
# 1. Create a new empty Forge project
|
|
307
|
-
|
|
335
|
+
# 1. Create a new empty Forge project (in-place)
|
|
336
|
+
mkdir my-project && cd my-project
|
|
337
|
+
forge create --in-place --profile forge-shell
|
|
308
338
|
|
|
309
339
|
# 2. Open the project in Windsurf (tested with forge) or your preferred IDE
|
|
310
340
|
|
|
311
341
|
# 3. Run the /forge-bootstrap skill and choose "transplant" mode
|
|
312
342
|
# The skill will:
|
|
313
343
|
# - Ask for the path to your existing codebase
|
|
314
|
-
# - Detect the stack automatically (Astro, Phaser,
|
|
344
|
+
# - Detect the stack automatically (Astro, Phaser, Godot, etc.)
|
|
315
345
|
# - Migrate all files (including .env and git-ignored files)
|
|
316
346
|
# - Optionally transfer git history
|
|
317
347
|
# - Verify the build
|
|
@@ -339,16 +369,14 @@ A stack profile defines the project scaffold: directory structure, dependencies,
|
|
|
339
369
|
| `forge-shell` | Governance / library | Minimal Forge shell (default) | — | Governance-only projects, libraries, non-web projects |
|
|
340
370
|
| `astro-typescript-turborepo` | Website | Astro + TypeScript + pnpm + Turborepo | `sites/my-site` | Websites, web apps, content-driven sites |
|
|
341
371
|
| `phaser-turborepo` | Browser game | Phaser + TypeScript + pnpm + Turborepo | `games/my-game` | Browser games, interactive experiences |
|
|
342
|
-
| `
|
|
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.
|
|
372
|
+
| `godot-csharp` | Godot game | Godot 4.x + C# + pnpm + Turborepo | `games/my-game` | Desktop/mobile games, Godot-based interactive projects |
|
|
345
373
|
|
|
346
374
|
```sh
|
|
347
375
|
# List available profiles (after install)
|
|
348
376
|
forge profile.validate
|
|
349
377
|
```
|
|
350
378
|
|
|
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.*`, `
|
|
379
|
+
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.).
|
|
352
380
|
|
|
353
381
|
## Upgrade flow
|
|
354
382
|
|
|
@@ -369,7 +397,7 @@ forge doctor
|
|
|
369
397
|
|
|
370
398
|
## What forge gives you
|
|
371
399
|
|
|
372
|
-
- **44 skills** (fo-pipeline, grilling, preferences, skill authoring
|
|
400
|
+
- **44 skills** (fo-pipeline, grilling, preferences, skill authoring) — deployed to `.agents/skills/` by `forge create`
|
|
373
401
|
- **RFC workflow** — create, validate, list, graph, archive, acceptance probes, decision logs, DNA trace
|
|
374
402
|
- **ADR workflow** — lightweight architectural decision records
|
|
375
403
|
- **Spec vendoring** — vendor external spec packages as immutable snapshots with integrity manifests
|
|
@@ -382,7 +410,7 @@ forge doctor
|
|
|
382
410
|
|
|
383
411
|
The typical forge project lifecycle:
|
|
384
412
|
|
|
385
|
-
1. **Create** — `forge create
|
|
413
|
+
1. **Create** — `forge create --in-place --profile <profile>` scaffolds a new project in the current directory with forge.yaml, skills, and docs directories
|
|
386
414
|
2. **IDE** — open the project in Windsurf (tested with forge) or your preferred IDE
|
|
387
415
|
3. **Bootstrap** — run `/forge-bootstrap` to configure the project interactively. The skill supports two modes:
|
|
388
416
|
- **Greenfield** — start a new project from scratch: pick a stack, fill in bindings, init git
|