ai-forge-cli 2.0.3__tar.gz → 2.1.0__tar.gz
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.
- {ai_forge_cli-2.0.3 → ai_forge_cli-2.1.0}/LICENSE +5 -5
- ai_forge_cli-2.1.0/PKG-INFO +98 -0
- ai_forge_cli-2.1.0/README.md +72 -0
- ai_forge_cli-2.1.0/pyproject.toml +56 -0
- ai_forge_cli-2.1.0/src/ai_forge_cli.egg-info/PKG-INFO +98 -0
- ai_forge_cli-2.1.0/src/ai_forge_cli.egg-info/SOURCES.txt +38 -0
- ai_forge_cli-2.1.0/src/ai_forge_cli.egg-info/requires.txt +4 -0
- ai_forge_cli-2.1.0/src/cli/__init__.py +3 -0
- {ai_forge_cli-2.0.3 → ai_forge_cli-2.1.0}/src/cli/__main__.py +1 -0
- ai_forge_cli-2.1.0/src/cli/assets/agents_skills/forge-build/SKILL.md +163 -0
- ai_forge_cli-2.1.0/src/cli/assets/agents_skills/forge-cast/SKILL.md +108 -0
- ai_forge_cli-2.1.0/src/cli/assets/agents_skills/forge-discover/SKILL.md +203 -0
- ai_forge_cli-2.1.0/src/cli/assets/agents_skills/forge-plan/SKILL.md +128 -0
- ai_forge_cli-2.1.0/src/cli/assets/agents_skills/forge-review/SKILL.md +137 -0
- ai_forge_cli-2.1.0/src/cli/assets/agents_skills/forge-spec/SKILL.md +225 -0
- ai_forge_cli-2.1.0/src/cli/assets/agents_skills/forge-validate/SKILL.md +116 -0
- ai_forge_cli-2.1.0/src/cli/assets/docs/forge-v2-architecture.md +594 -0
- ai_forge_cli-2.1.0/src/cli/assets/docs/forge-v2-schema.md +802 -0
- ai_forge_cli-2.1.0/src/cli/assets/frameworks/cast/FRAMEWORK.md +32 -0
- ai_forge_cli-2.1.0/src/cli/assets/frameworks/discover/FRAMEWORK.md +68 -0
- ai_forge_cli-2.1.0/src/cli/assets/frameworks/plan/FRAMEWORK.md +35 -0
- ai_forge_cli-2.1.0/src/cli/assets/frameworks/review/FRAMEWORK.md +30 -0
- ai_forge_cli-2.1.0/src/cli/assets/frameworks/spec/FRAMEWORK.md +60 -0
- ai_forge_cli-2.1.0/src/cli/assets/frameworks/validate/FRAMEWORK.md +31 -0
- ai_forge_cli-2.1.0/src/cli/commands/__init__.py +11 -0
- ai_forge_cli-2.1.0/src/cli/commands/base.py +17 -0
- ai_forge_cli-2.1.0/src/cli/commands/context.py +283 -0
- ai_forge_cli-2.1.0/src/cli/commands/graph.py +1042 -0
- ai_forge_cli-2.1.0/src/cli/commands/init.py +461 -0
- ai_forge_cli-2.1.0/src/cli/commands/list.py +114 -0
- ai_forge_cli-2.1.0/src/cli/common.py +32 -0
- ai_forge_cli-2.1.0/src/cli/forge.py +32 -0
- ai_forge_cli-2.1.0/src/cli/schema.py +148 -0
- ai_forge_cli-2.1.0/src/cli/workbench.py +34 -0
- ai_forge_cli-2.1.0/tests/test_cli.py +146 -0
- ai_forge_cli-2.1.0/tests/test_examples.py +32 -0
- ai_forge_cli-2.0.3/PKG-INFO +0 -8
- ai_forge_cli-2.0.3/README.md +0 -269
- ai_forge_cli-2.0.3/pyproject.toml +0 -24
- ai_forge_cli-2.0.3/src/ai_forge_cli.egg-info/PKG-INFO +0 -8
- ai_forge_cli-2.0.3/src/ai_forge_cli.egg-info/SOURCES.txt +0 -57
- ai_forge_cli-2.0.3/src/ai_forge_cli.egg-info/requires.txt +0 -1
- ai_forge_cli-2.0.3/src/cli/__init__.py +0 -2
- ai_forge_cli-2.0.3/src/cli/bundle.py +0 -104
- ai_forge_cli-2.0.3/src/cli/commands/__init__.py +0 -32
- ai_forge_cli-2.0.3/src/cli/commands/base.py +0 -26
- ai_forge_cli-2.0.3/src/cli/commands/context.py +0 -65
- ai_forge_cli-2.0.3/src/cli/commands/find.py +0 -121
- ai_forge_cli-2.0.3/src/cli/commands/graph.py +0 -715
- ai_forge_cli-2.0.3/src/cli/commands/init.py +0 -302
- ai_forge_cli-2.0.3/src/cli/commands/inspect.py +0 -153
- ai_forge_cli-2.0.3/src/cli/commands/list_cmd.py +0 -72
- ai_forge_cli-2.0.3/src/cli/commands/update.py +0 -77
- ai_forge_cli-2.0.3/src/cli/commands/validate.py +0 -396
- ai_forge_cli-2.0.3/src/cli/common.py +0 -114
- ai_forge_cli-2.0.3/src/cli/forge.py +0 -69
- ai_forge_cli-2.0.3/src/cli/framework.yaml +0 -228
- ai_forge_cli-2.0.3/src/cli/index.py +0 -277
- ai_forge_cli-2.0.3/src/cli/skills/forge-build/SKILL.md +0 -146
- ai_forge_cli-2.0.3/src/cli/skills/forge-build/references/framework.md +0 -571
- ai_forge_cli-2.0.3/src/cli/skills/forge-build/references/framework.yaml +0 -228
- ai_forge_cli-2.0.3/src/cli/skills/forge-build/references/templates.yaml +0 -371
- ai_forge_cli-2.0.3/src/cli/skills/forge-cast/SKILL.md +0 -136
- ai_forge_cli-2.0.3/src/cli/skills/forge-cast/references/framework.md +0 -571
- ai_forge_cli-2.0.3/src/cli/skills/forge-cast/references/framework.yaml +0 -228
- ai_forge_cli-2.0.3/src/cli/skills/forge-cast/references/templates.yaml +0 -371
- ai_forge_cli-2.0.3/src/cli/skills/forge-design/SKILL.md +0 -107
- ai_forge_cli-2.0.3/src/cli/skills/forge-design/references/framework.md +0 -571
- ai_forge_cli-2.0.3/src/cli/skills/forge-design/references/framework.yaml +0 -228
- ai_forge_cli-2.0.3/src/cli/skills/forge-design/references/templates.yaml +0 -371
- ai_forge_cli-2.0.3/src/cli/skills/forge-review/SKILL.md +0 -218
- ai_forge_cli-2.0.3/src/cli/skills/forge-review/references/framework.md +0 -571
- ai_forge_cli-2.0.3/src/cli/skills/forge-review/references/framework.yaml +0 -228
- ai_forge_cli-2.0.3/src/cli/skills/forge-review/references/templates.yaml +0 -371
- ai_forge_cli-2.0.3/src/cli/skills/forge-spec/SKILL.md +0 -144
- ai_forge_cli-2.0.3/src/cli/skills/forge-spec/references/framework.md +0 -571
- ai_forge_cli-2.0.3/src/cli/skills/forge-spec/references/framework.yaml +0 -228
- ai_forge_cli-2.0.3/src/cli/skills/forge-spec/references/templates.yaml +0 -371
- ai_forge_cli-2.0.3/src/cli/skills/forge-validate/SKILL.md +0 -143
- ai_forge_cli-2.0.3/src/cli/skills/forge-validate/references/framework.md +0 -571
- ai_forge_cli-2.0.3/src/cli/skills/forge-validate/references/framework.yaml +0 -228
- ai_forge_cli-2.0.3/src/cli/skills/forge-validate/references/templates.yaml +0 -371
- ai_forge_cli-2.0.3/src/cli/walker.py +0 -275
- ai_forge_cli-2.0.3/tests/test_cli.py +0 -153
- ai_forge_cli-2.0.3/tests/test_find.py +0 -106
- ai_forge_cli-2.0.3/tests/test_index.py +0 -157
- ai_forge_cli-2.0.3/tests/test_init.py +0 -105
- ai_forge_cli-2.0.3/tests/test_update.py +0 -97
- ai_forge_cli-2.0.3/tests/test_walker.py +0 -113
- {ai_forge_cli-2.0.3 → ai_forge_cli-2.1.0}/setup.cfg +0 -0
- {ai_forge_cli-2.0.3 → ai_forge_cli-2.1.0}/src/ai_forge_cli.egg-info/dependency_links.txt +0 -0
- {ai_forge_cli-2.0.3 → ai_forge_cli-2.1.0}/src/ai_forge_cli.egg-info/entry_points.txt +0 -0
- {ai_forge_cli-2.0.3 → ai_forge_cli-2.1.0}/src/ai_forge_cli.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2026
|
|
3
|
+
Copyright (c) 2026 Will Defina
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
9
9
|
copies of the Software, and to permit persons to whom the Software is
|
|
10
10
|
furnished to do so, subject to the following conditions:
|
|
11
11
|
|
|
12
|
-
The above copyright notice and this permission notice shall be included in
|
|
13
|
-
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
14
|
|
|
15
15
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
16
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
17
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
18
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
-
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ai-forge-cli
|
|
3
|
+
Version: 2.1.0
|
|
4
|
+
Summary: Forge V2 schema runtime and workbench CLI
|
|
5
|
+
Author: Will Defina
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/GreyFlames07/forge
|
|
8
|
+
Project-URL: Repository, https://github.com/GreyFlames07/forge
|
|
9
|
+
Project-URL: Issues, https://github.com/GreyFlames07/forge/issues
|
|
10
|
+
Project-URL: Documentation, https://github.com/GreyFlames07/forge
|
|
11
|
+
Keywords: forge,software-architecture,schema,cli,agentic-development
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Environment :: Console
|
|
17
|
+
Classifier: Topic :: Software Development :: Code Generators
|
|
18
|
+
Classifier: Topic :: Software Development :: Documentation
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
Requires-Dist: pyyaml>=6.0
|
|
23
|
+
Provides-Extra: dev
|
|
24
|
+
Requires-Dist: pytest>=8; extra == "dev"
|
|
25
|
+
Dynamic: license-file
|
|
26
|
+
|
|
27
|
+
# Forge V2
|
|
28
|
+
|
|
29
|
+
Forge V2 is a schema runtime, workbench CLI, and skill/framework system for building software vertically while preserving a working bootstrap path throughout the build.
|
|
30
|
+
|
|
31
|
+
## What is in this repo
|
|
32
|
+
|
|
33
|
+
- `docs/forge-v2-schema.md` — the V2 schema contract
|
|
34
|
+
- `docs/forge-v2-architecture.md` — the V2 architecture and workbench model
|
|
35
|
+
- `frameworks/` — stage framework definitions
|
|
36
|
+
- `skills/` — skill source files
|
|
37
|
+
- `.agents/skills/` — installable agent skill folders
|
|
38
|
+
- `src/cli/` — the Forge V2 CLI
|
|
39
|
+
|
|
40
|
+
## Local development
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
uv venv --python 3.13 .venv
|
|
44
|
+
uv pip install -e . pytest
|
|
45
|
+
.venv/bin/pytest -q
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Install the CLI and skills locally
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
./scripts/install-skills.sh install
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
This links the packaged Forge skills into:
|
|
55
|
+
|
|
56
|
+
- `~/.claude/skills` for Claude Code
|
|
57
|
+
- `~/.codex/skills` for Codex
|
|
58
|
+
- `~/.agents/skills` for agentskills.io-compatible clients such as VS Code Copilot and Cursor
|
|
59
|
+
- `~/.copilot/skills` as an additional Copilot-local target when `~/.copilot/` already exists
|
|
60
|
+
|
|
61
|
+
## Build distributions
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
uv build
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
This produces:
|
|
68
|
+
|
|
69
|
+
- `dist/*.tar.gz`
|
|
70
|
+
- `dist/*.whl`
|
|
71
|
+
|
|
72
|
+
## Release model
|
|
73
|
+
|
|
74
|
+
- CI runs tests and a smoke build on `main` pushes and PRs
|
|
75
|
+
- tagged releases `v*.*.*` build sdist and wheel
|
|
76
|
+
- release workflow publishes artifacts to GitHub Releases and PyPI
|
|
77
|
+
|
|
78
|
+
## Quick smoke test
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
./.venv/bin/forge init --root /tmp/forge-smoke --profile cli-tool --name "Smoke" --id smoke
|
|
82
|
+
./.venv/bin/forge list --forge-dir /tmp/forge-smoke/forge
|
|
83
|
+
./.venv/bin/forge context core --forge-dir /tmp/forge-smoke/forge
|
|
84
|
+
./.venv/bin/forge graph --forge-dir /tmp/forge-smoke/forge --no-open
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
`forge init` vendors the Forge docs, frameworks, and project-local `.agents/skills/` into the initialized directory, then symlinks those project-local skills into the home scan directories above unless you pass `--no-vendor-assets` or `--no-link-skills`.
|
|
88
|
+
|
|
89
|
+
## Public CLI vs workbench
|
|
90
|
+
|
|
91
|
+
The public CLI is intentionally small:
|
|
92
|
+
|
|
93
|
+
- `forge init`
|
|
94
|
+
- `forge list`
|
|
95
|
+
- `forge context`
|
|
96
|
+
- `forge graph`
|
|
97
|
+
|
|
98
|
+
`forge/workbench/` remains part of the framework, but it is an internal artifact model used by the stage skills. It stores build-planning and validation state for agent workflows; it is not a separate public command surface.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Forge V2
|
|
2
|
+
|
|
3
|
+
Forge V2 is a schema runtime, workbench CLI, and skill/framework system for building software vertically while preserving a working bootstrap path throughout the build.
|
|
4
|
+
|
|
5
|
+
## What is in this repo
|
|
6
|
+
|
|
7
|
+
- `docs/forge-v2-schema.md` — the V2 schema contract
|
|
8
|
+
- `docs/forge-v2-architecture.md` — the V2 architecture and workbench model
|
|
9
|
+
- `frameworks/` — stage framework definitions
|
|
10
|
+
- `skills/` — skill source files
|
|
11
|
+
- `.agents/skills/` — installable agent skill folders
|
|
12
|
+
- `src/cli/` — the Forge V2 CLI
|
|
13
|
+
|
|
14
|
+
## Local development
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
uv venv --python 3.13 .venv
|
|
18
|
+
uv pip install -e . pytest
|
|
19
|
+
.venv/bin/pytest -q
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Install the CLI and skills locally
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
./scripts/install-skills.sh install
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
This links the packaged Forge skills into:
|
|
29
|
+
|
|
30
|
+
- `~/.claude/skills` for Claude Code
|
|
31
|
+
- `~/.codex/skills` for Codex
|
|
32
|
+
- `~/.agents/skills` for agentskills.io-compatible clients such as VS Code Copilot and Cursor
|
|
33
|
+
- `~/.copilot/skills` as an additional Copilot-local target when `~/.copilot/` already exists
|
|
34
|
+
|
|
35
|
+
## Build distributions
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
uv build
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
This produces:
|
|
42
|
+
|
|
43
|
+
- `dist/*.tar.gz`
|
|
44
|
+
- `dist/*.whl`
|
|
45
|
+
|
|
46
|
+
## Release model
|
|
47
|
+
|
|
48
|
+
- CI runs tests and a smoke build on `main` pushes and PRs
|
|
49
|
+
- tagged releases `v*.*.*` build sdist and wheel
|
|
50
|
+
- release workflow publishes artifacts to GitHub Releases and PyPI
|
|
51
|
+
|
|
52
|
+
## Quick smoke test
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
./.venv/bin/forge init --root /tmp/forge-smoke --profile cli-tool --name "Smoke" --id smoke
|
|
56
|
+
./.venv/bin/forge list --forge-dir /tmp/forge-smoke/forge
|
|
57
|
+
./.venv/bin/forge context core --forge-dir /tmp/forge-smoke/forge
|
|
58
|
+
./.venv/bin/forge graph --forge-dir /tmp/forge-smoke/forge --no-open
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
`forge init` vendors the Forge docs, frameworks, and project-local `.agents/skills/` into the initialized directory, then symlinks those project-local skills into the home scan directories above unless you pass `--no-vendor-assets` or `--no-link-skills`.
|
|
62
|
+
|
|
63
|
+
## Public CLI vs workbench
|
|
64
|
+
|
|
65
|
+
The public CLI is intentionally small:
|
|
66
|
+
|
|
67
|
+
- `forge init`
|
|
68
|
+
- `forge list`
|
|
69
|
+
- `forge context`
|
|
70
|
+
- `forge graph`
|
|
71
|
+
|
|
72
|
+
`forge/workbench/` remains part of the framework, but it is an internal artifact model used by the stage skills. It stores build-planning and validation state for agent workflows; it is not a separate public command surface.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "ai-forge-cli"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
description = "Forge V2 schema runtime and workbench CLI"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
license-files = ["LICENSE"]
|
|
12
|
+
requires-python = ">=3.11"
|
|
13
|
+
dependencies = ["pyyaml>=6.0"]
|
|
14
|
+
authors = [
|
|
15
|
+
{name = "Will Defina"}
|
|
16
|
+
]
|
|
17
|
+
keywords = ["forge", "software-architecture", "schema", "cli", "agentic-development"]
|
|
18
|
+
classifiers = [
|
|
19
|
+
"Programming Language :: Python :: 3",
|
|
20
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
21
|
+
"Programming Language :: Python :: 3.11",
|
|
22
|
+
"Operating System :: OS Independent",
|
|
23
|
+
"Environment :: Console",
|
|
24
|
+
"Topic :: Software Development :: Code Generators",
|
|
25
|
+
"Topic :: Software Development :: Documentation",
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
[project.urls]
|
|
29
|
+
Homepage = "https://github.com/GreyFlames07/forge"
|
|
30
|
+
Repository = "https://github.com/GreyFlames07/forge"
|
|
31
|
+
Issues = "https://github.com/GreyFlames07/forge/issues"
|
|
32
|
+
Documentation = "https://github.com/GreyFlames07/forge"
|
|
33
|
+
|
|
34
|
+
[project.scripts]
|
|
35
|
+
forge = "cli.forge:main"
|
|
36
|
+
|
|
37
|
+
[project.optional-dependencies]
|
|
38
|
+
dev = ["pytest>=8"]
|
|
39
|
+
|
|
40
|
+
[tool.setuptools.dynamic]
|
|
41
|
+
version = {attr = "cli.__version__"}
|
|
42
|
+
|
|
43
|
+
[tool.setuptools.packages.find]
|
|
44
|
+
where = ["src"]
|
|
45
|
+
include = ["cli*"]
|
|
46
|
+
|
|
47
|
+
[tool.setuptools.package-data]
|
|
48
|
+
cli = [
|
|
49
|
+
"assets/docs/*.md",
|
|
50
|
+
"assets/frameworks/*/FRAMEWORK.md",
|
|
51
|
+
"assets/agents_skills/*/SKILL.md",
|
|
52
|
+
]
|
|
53
|
+
|
|
54
|
+
[tool.pytest.ini_options]
|
|
55
|
+
testpaths = ["tests"]
|
|
56
|
+
pythonpath = ["src"]
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ai-forge-cli
|
|
3
|
+
Version: 2.1.0
|
|
4
|
+
Summary: Forge V2 schema runtime and workbench CLI
|
|
5
|
+
Author: Will Defina
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/GreyFlames07/forge
|
|
8
|
+
Project-URL: Repository, https://github.com/GreyFlames07/forge
|
|
9
|
+
Project-URL: Issues, https://github.com/GreyFlames07/forge/issues
|
|
10
|
+
Project-URL: Documentation, https://github.com/GreyFlames07/forge
|
|
11
|
+
Keywords: forge,software-architecture,schema,cli,agentic-development
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Environment :: Console
|
|
17
|
+
Classifier: Topic :: Software Development :: Code Generators
|
|
18
|
+
Classifier: Topic :: Software Development :: Documentation
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
Requires-Dist: pyyaml>=6.0
|
|
23
|
+
Provides-Extra: dev
|
|
24
|
+
Requires-Dist: pytest>=8; extra == "dev"
|
|
25
|
+
Dynamic: license-file
|
|
26
|
+
|
|
27
|
+
# Forge V2
|
|
28
|
+
|
|
29
|
+
Forge V2 is a schema runtime, workbench CLI, and skill/framework system for building software vertically while preserving a working bootstrap path throughout the build.
|
|
30
|
+
|
|
31
|
+
## What is in this repo
|
|
32
|
+
|
|
33
|
+
- `docs/forge-v2-schema.md` — the V2 schema contract
|
|
34
|
+
- `docs/forge-v2-architecture.md` — the V2 architecture and workbench model
|
|
35
|
+
- `frameworks/` — stage framework definitions
|
|
36
|
+
- `skills/` — skill source files
|
|
37
|
+
- `.agents/skills/` — installable agent skill folders
|
|
38
|
+
- `src/cli/` — the Forge V2 CLI
|
|
39
|
+
|
|
40
|
+
## Local development
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
uv venv --python 3.13 .venv
|
|
44
|
+
uv pip install -e . pytest
|
|
45
|
+
.venv/bin/pytest -q
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Install the CLI and skills locally
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
./scripts/install-skills.sh install
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
This links the packaged Forge skills into:
|
|
55
|
+
|
|
56
|
+
- `~/.claude/skills` for Claude Code
|
|
57
|
+
- `~/.codex/skills` for Codex
|
|
58
|
+
- `~/.agents/skills` for agentskills.io-compatible clients such as VS Code Copilot and Cursor
|
|
59
|
+
- `~/.copilot/skills` as an additional Copilot-local target when `~/.copilot/` already exists
|
|
60
|
+
|
|
61
|
+
## Build distributions
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
uv build
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
This produces:
|
|
68
|
+
|
|
69
|
+
- `dist/*.tar.gz`
|
|
70
|
+
- `dist/*.whl`
|
|
71
|
+
|
|
72
|
+
## Release model
|
|
73
|
+
|
|
74
|
+
- CI runs tests and a smoke build on `main` pushes and PRs
|
|
75
|
+
- tagged releases `v*.*.*` build sdist and wheel
|
|
76
|
+
- release workflow publishes artifacts to GitHub Releases and PyPI
|
|
77
|
+
|
|
78
|
+
## Quick smoke test
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
./.venv/bin/forge init --root /tmp/forge-smoke --profile cli-tool --name "Smoke" --id smoke
|
|
82
|
+
./.venv/bin/forge list --forge-dir /tmp/forge-smoke/forge
|
|
83
|
+
./.venv/bin/forge context core --forge-dir /tmp/forge-smoke/forge
|
|
84
|
+
./.venv/bin/forge graph --forge-dir /tmp/forge-smoke/forge --no-open
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
`forge init` vendors the Forge docs, frameworks, and project-local `.agents/skills/` into the initialized directory, then symlinks those project-local skills into the home scan directories above unless you pass `--no-vendor-assets` or `--no-link-skills`.
|
|
88
|
+
|
|
89
|
+
## Public CLI vs workbench
|
|
90
|
+
|
|
91
|
+
The public CLI is intentionally small:
|
|
92
|
+
|
|
93
|
+
- `forge init`
|
|
94
|
+
- `forge list`
|
|
95
|
+
- `forge context`
|
|
96
|
+
- `forge graph`
|
|
97
|
+
|
|
98
|
+
`forge/workbench/` remains part of the framework, but it is an internal artifact model used by the stage skills. It stores build-planning and validation state for agent workflows; it is not a separate public command surface.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
README.md
|
|
3
|
+
pyproject.toml
|
|
4
|
+
src/ai_forge_cli.egg-info/PKG-INFO
|
|
5
|
+
src/ai_forge_cli.egg-info/SOURCES.txt
|
|
6
|
+
src/ai_forge_cli.egg-info/dependency_links.txt
|
|
7
|
+
src/ai_forge_cli.egg-info/entry_points.txt
|
|
8
|
+
src/ai_forge_cli.egg-info/requires.txt
|
|
9
|
+
src/ai_forge_cli.egg-info/top_level.txt
|
|
10
|
+
src/cli/__init__.py
|
|
11
|
+
src/cli/__main__.py
|
|
12
|
+
src/cli/common.py
|
|
13
|
+
src/cli/forge.py
|
|
14
|
+
src/cli/schema.py
|
|
15
|
+
src/cli/workbench.py
|
|
16
|
+
src/cli/assets/agents_skills/forge-build/SKILL.md
|
|
17
|
+
src/cli/assets/agents_skills/forge-cast/SKILL.md
|
|
18
|
+
src/cli/assets/agents_skills/forge-discover/SKILL.md
|
|
19
|
+
src/cli/assets/agents_skills/forge-plan/SKILL.md
|
|
20
|
+
src/cli/assets/agents_skills/forge-review/SKILL.md
|
|
21
|
+
src/cli/assets/agents_skills/forge-spec/SKILL.md
|
|
22
|
+
src/cli/assets/agents_skills/forge-validate/SKILL.md
|
|
23
|
+
src/cli/assets/docs/forge-v2-architecture.md
|
|
24
|
+
src/cli/assets/docs/forge-v2-schema.md
|
|
25
|
+
src/cli/assets/frameworks/cast/FRAMEWORK.md
|
|
26
|
+
src/cli/assets/frameworks/discover/FRAMEWORK.md
|
|
27
|
+
src/cli/assets/frameworks/plan/FRAMEWORK.md
|
|
28
|
+
src/cli/assets/frameworks/review/FRAMEWORK.md
|
|
29
|
+
src/cli/assets/frameworks/spec/FRAMEWORK.md
|
|
30
|
+
src/cli/assets/frameworks/validate/FRAMEWORK.md
|
|
31
|
+
src/cli/commands/__init__.py
|
|
32
|
+
src/cli/commands/base.py
|
|
33
|
+
src/cli/commands/context.py
|
|
34
|
+
src/cli/commands/graph.py
|
|
35
|
+
src/cli/commands/init.py
|
|
36
|
+
src/cli/commands/list.py
|
|
37
|
+
tests/test_cli.py
|
|
38
|
+
tests/test_examples.py
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: forge-build
|
|
3
|
+
description: >
|
|
4
|
+
Forge V2 build skill. Use when the schema is complete enough for the target slices, the plan exists,
|
|
5
|
+
and the user wants working implementation code and tests generated while preserving runnability. Acts
|
|
6
|
+
as an orchestrator: validates readiness, consults the plan, dispatches implementation work using
|
|
7
|
+
forge context, checks bootstrap continuously, and updates workbench status and validation evidence.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# forge-build
|
|
11
|
+
|
|
12
|
+
Read before starting:
|
|
13
|
+
|
|
14
|
+
- `docs/forge-v2-schema.md`
|
|
15
|
+
- `docs/forge-v2-architecture.md`
|
|
16
|
+
- `frameworks/build/FRAMEWORK.md`
|
|
17
|
+
- `forge/workbench/discovery.md`
|
|
18
|
+
- `forge/workbench/plan.yaml`
|
|
19
|
+
|
|
20
|
+
## Purpose
|
|
21
|
+
|
|
22
|
+
Implement the planned slices while keeping the system runnable.
|
|
23
|
+
|
|
24
|
+
This stage is not a free-form code generator. It is a bootstrap-first implementation orchestrator.
|
|
25
|
+
|
|
26
|
+
`forge/workbench/*` files are internal framework artifacts in V2. They are produced and consumed by the stage skills; they are not separate public CLI commands.
|
|
27
|
+
|
|
28
|
+
## Non-negotiables
|
|
29
|
+
|
|
30
|
+
1. Bootstrap first. No broad implementation before the bootstrap path exists.
|
|
31
|
+
2. Run bootstrap as early as possible.
|
|
32
|
+
3. Build against the running bootstrap when possible.
|
|
33
|
+
4. Re-check startup, bootstrap, and affected flows after each material slice.
|
|
34
|
+
5. If automation is insufficient, require operator verification instead of pretending coverage exists.
|
|
35
|
+
6. Schema files are frozen during a build run. Do not silently edit schema truth to make implementation easier.
|
|
36
|
+
|
|
37
|
+
## Inputs
|
|
38
|
+
|
|
39
|
+
- schema under `forge/`
|
|
40
|
+
- `forge/workbench/plan.yaml`
|
|
41
|
+
- existing repo state
|
|
42
|
+
- verification items
|
|
43
|
+
|
|
44
|
+
## Workbench Outputs
|
|
45
|
+
|
|
46
|
+
- `forge/workbench/status.yaml`
|
|
47
|
+
- `forge/workbench/validation.md`
|
|
48
|
+
|
|
49
|
+
## Source Control Outputs
|
|
50
|
+
|
|
51
|
+
At each meaningful checkpoint, the build stage should also update source control state.
|
|
52
|
+
|
|
53
|
+
Checkpoint examples:
|
|
54
|
+
|
|
55
|
+
- bootstrap first becomes runnable
|
|
56
|
+
- a planned slice lands
|
|
57
|
+
- a meaningful runtime or contract change lands without breaking bootstrap
|
|
58
|
+
|
|
59
|
+
Expected behavior:
|
|
60
|
+
|
|
61
|
+
1. inspect git state
|
|
62
|
+
2. summarize the checkpoint in plain language
|
|
63
|
+
3. create a checkpoint commit when the human or repo policy allows it
|
|
64
|
+
4. push or update the GitHub branch when a remote exists and credentials are available
|
|
65
|
+
5. if push is not possible, stop at a clean local checkpoint and record the next action explicitly
|
|
66
|
+
|
|
67
|
+
## Step 1 — Readiness Gate
|
|
68
|
+
|
|
69
|
+
Before writing code:
|
|
70
|
+
|
|
71
|
+
1. inspect the plan
|
|
72
|
+
2. inspect the bootstrap definition
|
|
73
|
+
3. use `forge list` and `forge context` to confirm the relevant schema objects and IDs
|
|
74
|
+
4. stop if the schema is structurally ambiguous or incomplete
|
|
75
|
+
|
|
76
|
+
If bootstrap is underspecified, route back to `forge-spec` or `forge-plan` rather than guessing.
|
|
77
|
+
|
|
78
|
+
## Step 2 — Bootstrap Assessment
|
|
79
|
+
|
|
80
|
+
Establish:
|
|
81
|
+
|
|
82
|
+
- whether bootstrap already exists in runnable form
|
|
83
|
+
- what commands or checks prove it
|
|
84
|
+
- what operator verification is required
|
|
85
|
+
|
|
86
|
+
If bootstrap does not exist yet:
|
|
87
|
+
|
|
88
|
+
- implement the minimum bootstrap slice first
|
|
89
|
+
- do not parallelize expansion work ahead of it
|
|
90
|
+
|
|
91
|
+
## Step 3 — Execution Plan
|
|
92
|
+
|
|
93
|
+
Work slice by slice from `forge/workbench/plan.yaml`.
|
|
94
|
+
|
|
95
|
+
For each slice:
|
|
96
|
+
|
|
97
|
+
1. load schema context through `forge context`
|
|
98
|
+
2. identify touched units, operations, surfaces, flows, and stores
|
|
99
|
+
3. implement the smallest complete version of that slice
|
|
100
|
+
4. run the declared checks
|
|
101
|
+
5. update workbench status
|
|
102
|
+
6. update git/GitHub at the slice checkpoint when the change is meaningful
|
|
103
|
+
|
|
104
|
+
## Step 4 — Subagent Dispatch
|
|
105
|
+
|
|
106
|
+
When delegation is useful, subagents should receive:
|
|
107
|
+
|
|
108
|
+
- the slice or target ID
|
|
109
|
+
- the instruction to call `forge context <id>`
|
|
110
|
+
- the architecture and layout rules implied by the repo and plan
|
|
111
|
+
- the requirement to implement exactly what the schema declares
|
|
112
|
+
|
|
113
|
+
Subagents should not be given giant inlined schema dumps when the CLI can provide context directly.
|
|
114
|
+
|
|
115
|
+
## Step 5 — Failure Handling
|
|
116
|
+
|
|
117
|
+
If a slice fails:
|
|
118
|
+
|
|
119
|
+
1. identify whether the failure is implementation, architecture, or schema ambiguity
|
|
120
|
+
2. retry implementation failures with specific feedback
|
|
121
|
+
3. stop immediately on schema ambiguity and surface it to the human
|
|
122
|
+
4. if bootstrap breaks, repair bootstrap before continuing
|
|
123
|
+
|
|
124
|
+
## Step 6 — Checkpoint Source Control
|
|
125
|
+
|
|
126
|
+
At each checkpoint:
|
|
127
|
+
|
|
128
|
+
1. confirm bootstrap and the touched slice still work at the declared level
|
|
129
|
+
2. review `git status`
|
|
130
|
+
3. prepare a checkpoint summary tied to the slice or bootstrap milestone
|
|
131
|
+
4. create a checkpoint commit if permitted
|
|
132
|
+
5. push the branch or update the open GitHub branch if permitted and possible
|
|
133
|
+
|
|
134
|
+
Do not batch many meaningful slice landings into one opaque commit when the framework can keep checkpoints intelligible.
|
|
135
|
+
|
|
136
|
+
## Failure Routing
|
|
137
|
+
|
|
138
|
+
- If bootstrap is missing or underspecified, stop and route back to `forge-plan` or `forge-spec`.
|
|
139
|
+
- If implementation pressure reveals missing or conflicting contracts, stop and route back to `forge-spec` instead of mutating schema truth ad hoc.
|
|
140
|
+
- If the current plan no longer reflects the real execution order, stop and route back to `forge-plan`.
|
|
141
|
+
- If operator verification is required before expansion, stop after bootstrap hardening and hand off to `forge-validate` or the human operator.
|
|
142
|
+
- If a GitHub update is required by the workflow but remote state, permissions, or branch policy block it, stop and surface that operational blocker instead of silently continuing.
|
|
143
|
+
|
|
144
|
+
## Completion
|
|
145
|
+
|
|
146
|
+
When a slice lands:
|
|
147
|
+
|
|
148
|
+
1. record status in `forge/workbench/status.yaml`
|
|
149
|
+
2. record validation evidence in `forge/workbench/validation.md`
|
|
150
|
+
3. state whether bootstrap was preserved, expanded, or regressed
|
|
151
|
+
4. state whether the checkpoint was committed locally, pushed to GitHub, or blocked operationally
|
|
152
|
+
|
|
153
|
+
When all planned slices for the run are complete:
|
|
154
|
+
|
|
155
|
+
1. summarize files written
|
|
156
|
+
2. summarize bootstrap health
|
|
157
|
+
3. recommend `forge-validate`
|
|
158
|
+
|
|
159
|
+
## Key Constraints
|
|
160
|
+
|
|
161
|
+
- Do not continue building through a broken bootstrap.
|
|
162
|
+
- Do not claim a slice is done without running its declared checks.
|
|
163
|
+
- Do not hide operator-required checks in prose; they must correspond to verification items.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: forge-cast
|
|
3
|
+
description: >
|
|
4
|
+
Forge V2 casting skill for existing codebases. Use when a user has an implemented project and wants
|
|
5
|
+
to derive a draft Forge V2 schema from the code, config, tests, and contracts that already exist.
|
|
6
|
+
Produces draft V2 schema files plus a cast report that separates high-confidence evidence from open
|
|
7
|
+
uncertainty.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# forge-cast
|
|
11
|
+
|
|
12
|
+
Read before starting:
|
|
13
|
+
|
|
14
|
+
- `docs/forge-v2-schema.md`
|
|
15
|
+
- `docs/forge-v2-architecture.md`
|
|
16
|
+
- `frameworks/cast/FRAMEWORK.md`
|
|
17
|
+
|
|
18
|
+
## Purpose
|
|
19
|
+
|
|
20
|
+
Translate an existing codebase into a draft Forge V2 schema and workbench context.
|
|
21
|
+
|
|
22
|
+
This stage should never invent requirements that the repo does not support.
|
|
23
|
+
|
|
24
|
+
## Evidence Standard
|
|
25
|
+
|
|
26
|
+
When signals disagree, prefer:
|
|
27
|
+
|
|
28
|
+
1. executable code and typed schemas
|
|
29
|
+
2. config and deployment artifacts
|
|
30
|
+
3. tests
|
|
31
|
+
4. machine-readable contracts
|
|
32
|
+
5. repository docs
|
|
33
|
+
6. naming heuristics
|
|
34
|
+
|
|
35
|
+
Low-confidence conclusions belong in `forge/workbench/cast-report.md`, not as hard schema truth.
|
|
36
|
+
|
|
37
|
+
## Output Artifacts
|
|
38
|
+
|
|
39
|
+
| File | Contents |
|
|
40
|
+
|------|----------|
|
|
41
|
+
| `forge/system.yaml` | Draft system identity and posture |
|
|
42
|
+
| `forge/verticals/*.yaml` | Capability slices inferred from repo seams |
|
|
43
|
+
| `forge/units/*.yaml` | Runtime boundaries inferred from services, apps, workers, or CLIs |
|
|
44
|
+
| `forge/types/*.yaml` | Canonical types inferred from code and contracts |
|
|
45
|
+
| `forge/operations/*.yaml` | Business actions inferred from handlers, commands, jobs, or services |
|
|
46
|
+
| `forge/surfaces/*.yaml` | Reachability bindings inferred from routes, queues, cron jobs, or commands |
|
|
47
|
+
| `forge/stores/*.yaml` | Persistence backbones inferred from config and code |
|
|
48
|
+
| `forge/flows/*.yaml` | Higher-confidence end-to-end journeys inferred from orchestration paths |
|
|
49
|
+
| `forge/bootstrap.yaml` | Draft first working slice inferred from the most central runnable path |
|
|
50
|
+
| `forge/verification/**/*` | Starter checks inferred from health routes, tests, or obvious workflows |
|
|
51
|
+
| `forge/workbench/discovery.md` | Repo-level observations and rationale |
|
|
52
|
+
| `forge/workbench/cast-report.md` | Uncertain candidates, gaps, and questions for human review |
|
|
53
|
+
|
|
54
|
+
## Process
|
|
55
|
+
|
|
56
|
+
### Step 1 — Assess the Repo
|
|
57
|
+
|
|
58
|
+
Before writing anything:
|
|
59
|
+
|
|
60
|
+
- identify the runtime profile
|
|
61
|
+
- identify runnable entrypoints
|
|
62
|
+
- identify exposed interfaces
|
|
63
|
+
- identify persistent storage
|
|
64
|
+
- identify the likeliest bootstrap path
|
|
65
|
+
|
|
66
|
+
### Step 2 — Draft High-Confidence Schema
|
|
67
|
+
|
|
68
|
+
Write only what is strongly supported:
|
|
69
|
+
|
|
70
|
+
- system
|
|
71
|
+
- units
|
|
72
|
+
- obvious verticals
|
|
73
|
+
- canonical operations
|
|
74
|
+
- surfaces
|
|
75
|
+
- stores
|
|
76
|
+
- bootstrap
|
|
77
|
+
|
|
78
|
+
### Step 3 — Record Uncertainty
|
|
79
|
+
|
|
80
|
+
Anything supported only weakly should go to `forge/workbench/cast-report.md` with:
|
|
81
|
+
|
|
82
|
+
- inferred object
|
|
83
|
+
- evidence source
|
|
84
|
+
- confidence level
|
|
85
|
+
- question for the human
|
|
86
|
+
|
|
87
|
+
### Step 4 — Hand Over
|
|
88
|
+
|
|
89
|
+
Recommend the human review:
|
|
90
|
+
|
|
91
|
+
- the bootstrap draft
|
|
92
|
+
- operation boundaries
|
|
93
|
+
- auth contexts
|
|
94
|
+
- verification gaps
|
|
95
|
+
|
|
96
|
+
Then route to `forge-spec` and `forge-review`.
|
|
97
|
+
|
|
98
|
+
## Failure Routing
|
|
99
|
+
|
|
100
|
+
- If the inferred bootstrap path is weak or contradictory, stop and route to `forge-discover` instead of pretending the repo already implies one clear path.
|
|
101
|
+
- If the repo exposes operations or contracts ambiguously, draft only the high-confidence subset and route the rest to `forge-spec`.
|
|
102
|
+
- If the human asks for implementation changes during cast, stop and hand off to `forge-build` only after the inferred schema is reviewed.
|
|
103
|
+
|
|
104
|
+
## Key Constraints
|
|
105
|
+
|
|
106
|
+
- no speculative requirements
|
|
107
|
+
- no implementation changes
|
|
108
|
+
- no fake certainty
|