forge-dev 0.1.4__tar.gz → 0.2.1__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.
- forge_dev-0.2.1/.release-please-manifest.json +3 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/CHANGELOG.md +20 -0
- forge_dev-0.2.1/PKG-INFO +181 -0
- forge_dev-0.2.1/README.md +152 -0
- forge_dev-0.2.1/forge_core/cli.py +660 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/forge_core/editor_bridge.py +162 -71
- {forge_dev-0.1.4 → forge_dev-0.2.1}/forge_core/models.py +26 -1
- {forge_dev-0.1.4 → forge_dev-0.2.1}/forge_core/phases/coherence.py +1 -1
- {forge_dev-0.1.4 → forge_dev-0.2.1}/forge_core/phases/intake.py +118 -65
- {forge_dev-0.1.4 → forge_dev-0.2.1}/forge_core/registry.py +31 -6
- {forge_dev-0.1.4 → forge_dev-0.2.1}/pyproject.toml +1 -1
- forge_dev-0.1.4/.release-please-manifest.json +0 -3
- forge_dev-0.1.4/PKG-INFO +0 -271
- forge_dev-0.1.4/README.md +0 -242
- forge_dev-0.1.4/forge_core/cli.py +0 -968
- {forge_dev-0.1.4 → forge_dev-0.2.1}/.github/workflows/publish.yml +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/.github/workflows/release-please.yml +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/.gitignore +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/.release-please-config.json +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/claude_skill/SKILL.md +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/forge_core/__init__.py +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/forge_core/agents/__init__.py +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/forge_core/auditor.py +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/forge_core/detector.py +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/forge_core/phases/__init__.py +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/forge_core/phases/context.py +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/forge_core/standards/api-first-design.yaml +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/forge_core/standards/microservice-packaging.yaml +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/forge_core/standards/observability.yaml +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/forge_core/standards/security-baseline.yaml +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/forge_core/standards/type-safety.yaml +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/forge_core/templates/__init__.py +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/forge_core/utils/__init__.py +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/mcp_server/__init__.py +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/mcp_server/server.py +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/references/implementation-phases.md +0 -0
- {forge_dev-0.1.4 → forge_dev-0.2.1}/setup.sh +0 -0
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.2.1](https://github.com/luiskcr/forge/compare/v0.2.0...v0.2.1) (2026-04-12)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* teach CLAUDE.md and skill to handle stack conflicts explicitly ([1414623](https://github.com/luiskcr/forge/commit/141462333a918c24c928fd1dce32f25ff4ba3062))
|
|
9
|
+
|
|
10
|
+
## [0.2.0](https://github.com/luiskcr/forge/compare/v0.1.4...v0.2.0) (2026-04-12)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### ⚠ BREAKING CHANGES
|
|
14
|
+
|
|
15
|
+
* removes forge status, journal, standards, upgrade, assess, mcps, sync, audit, and the context/brief/config command groups. Forge is now a 3-command compliance agent.
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* brief command group with schema validation and context cross-check ([4e0496a](https://github.com/luiskcr/forge/commit/4e0496a301e18eb1df115d98c9d37653d13d0bfe))
|
|
20
|
+
* collapse CLI to init/check/intake; file-based workflow ([623712e](https://github.com/luiskcr/forge/commit/623712eac2631505f2e8e99de007f45149496ca4))
|
|
21
|
+
* ship standards and upgrade the intake prompt ([cf69a78](https://github.com/luiskcr/forge/commit/cf69a782c6f5c47be4874c1cd1dbe673c5cf5735))
|
|
22
|
+
|
|
3
23
|
## [0.1.4](https://github.com/luiskcr/forge/compare/v0.1.3...v0.1.4) (2026-04-12)
|
|
4
24
|
|
|
5
25
|
|
forge_dev-0.2.1/PKG-INFO
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: forge-dev
|
|
3
|
+
Version: 0.2.1
|
|
4
|
+
Summary: AI-Native Development Workflow Engine
|
|
5
|
+
Author: NaiaTech
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Keywords: ai,development,mcp,scaffold,workflow
|
|
8
|
+
Classifier: Development Status :: 3 - Alpha
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Topic :: Software Development :: Code Generators
|
|
14
|
+
Requires-Python: >=3.11
|
|
15
|
+
Requires-Dist: click>=8.1.0
|
|
16
|
+
Requires-Dist: gitpython>=3.1.0
|
|
17
|
+
Requires-Dist: httpx>=0.27.0
|
|
18
|
+
Requires-Dist: jinja2>=3.1
|
|
19
|
+
Requires-Dist: mcp>=1.0.0
|
|
20
|
+
Requires-Dist: pydantic>=2.0
|
|
21
|
+
Requires-Dist: pyyaml>=6.0
|
|
22
|
+
Requires-Dist: rich>=13.0
|
|
23
|
+
Provides-Extra: dev
|
|
24
|
+
Requires-Dist: mypy>=1.10; extra == 'dev'
|
|
25
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
26
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
27
|
+
Requires-Dist: ruff>=0.4; extra == 'dev'
|
|
28
|
+
Description-Content-Type: text/markdown
|
|
29
|
+
|
|
30
|
+
# Forge — Compliance Agent for AI-Assisted Development
|
|
31
|
+
|
|
32
|
+
Forge is a **compliance agent** for teams building software with AI code editors (Claude Code, Cursor, Copilot, Windsurf). It does not write code, plan features, or generate scaffolding — your AI editor already does that better. What Forge does is keep the editor *in check*: it captures your stack decisions, standards, patterns, and regulatory constraints in one place, and delivers them to the editor through the files it already reads (`CLAUDE.md`, `.claude/skills/`, `.cursorrules`, etc.).
|
|
33
|
+
|
|
34
|
+
The editor decides *what* to build and *how*. Forge enforces the *rules that must hold*.
|
|
35
|
+
|
|
36
|
+
> ⚠️ **Alpha (0.x)** — commands and file layouts may still change between releases.
|
|
37
|
+
|
|
38
|
+
## What Forge actually does
|
|
39
|
+
|
|
40
|
+
- **Captures** project-level decisions in `.forge/context.yaml` (cloud, stack, database, auth, IaC, regulatory).
|
|
41
|
+
- **Detects** the stack of an existing repo from `package.json`, `pyproject.toml`, `main.bicep`, `docker-compose.yml`, `.github/workflows/`, etc. Anything it can't detect is marked `unspecified` so the AI editor can fill it in.
|
|
42
|
+
- **Ships** opinionated standards (security, observability, type-safety, api-first, microservice-packaging) that get injected into `CLAUDE.md`.
|
|
43
|
+
- **Generates** `CLAUDE.md`, a Claude Code skill, and a discovery prompt from all of the above. Every session of your AI editor reads this automatically.
|
|
44
|
+
- **Maintains** a `.forge/journal.md` where the AI editor appends project-specific learnings across sessions.
|
|
45
|
+
- **Validates** everything is internally consistent with a single `forge check` command.
|
|
46
|
+
- **Normalizes** a requirement document (PRD, user story, conversation) into a structured brief via `forge intake`.
|
|
47
|
+
|
|
48
|
+
## What Forge does NOT do
|
|
49
|
+
|
|
50
|
+
- Plan features or produce implementation plans. That is Claude's job.
|
|
51
|
+
- Write or scaffold code, infrastructure, migrations, auth flows, or tests.
|
|
52
|
+
- Run code audits by itself. Your editor reads the standards from `CLAUDE.md` and checks files as it edits them.
|
|
53
|
+
- Call LLMs. Forge is pure Python and file I/O; the intelligence is in your editor.
|
|
54
|
+
- Replace `~/.claude/CLAUDE.md` global preferences. Forge only owns per-project files.
|
|
55
|
+
|
|
56
|
+
## Installation
|
|
57
|
+
|
|
58
|
+
Forge is published on PyPI as `forge-dev`. The recommended way is [`uv`](https://github.com/astral-sh/uv), which manages its own Python and isolates CLI tools automatically:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh # one-time: install uv
|
|
62
|
+
uv tool install forge-dev
|
|
63
|
+
forge --version
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
<details>
|
|
67
|
+
<summary>Alternatives: <code>pipx</code>, <code>pip</code>, or from source</summary>
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
pipx install forge-dev
|
|
71
|
+
# or
|
|
72
|
+
pip install forge-dev
|
|
73
|
+
# or
|
|
74
|
+
git clone https://github.com/luiskcr/forge.git && cd forge && pip install -e ".[dev]"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
</details>
|
|
78
|
+
|
|
79
|
+
Requires Python ≥ 3.11. If you use `uv`, it will download a compatible Python automatically.
|
|
80
|
+
|
|
81
|
+
### Updating
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
uv tool upgrade forge-dev # or: pipx upgrade forge-dev / pip install --upgrade forge-dev
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
> **Note for macOS users on Tahoe (macOS 26):** the Homebrew bottles for `python@3.13` / `python@3.14` currently ship a broken `pyexpat` module that breaks `pip`, `pipx`, and `venv`. If you hit `Symbol not found: _XML_SetAllocTrackerActivationThreshold`, use `uv` — it bundles its own Python and avoids the issue.
|
|
88
|
+
|
|
89
|
+
## The 3 commands
|
|
90
|
+
|
|
91
|
+
| Command | What it does |
|
|
92
|
+
|---|---|
|
|
93
|
+
| `forge init` | Create or refresh the project. Detects stack, generates `CLAUDE.md`, `.claude/skills/forge/SKILL.md`, and — if anything is unclear — a `.forge/discovery_prompt.md` the editor uses to fill in the gaps. |
|
|
94
|
+
| `forge check` | Validate current state. Reports context completeness, brief ↔ context consistency, and registry health. Exits non-zero on critical issues. |
|
|
95
|
+
| `forge intake <file>` | Turn a requirement document into `.forge/intake_prompt.md`. The prompt tells the AI editor to produce `.forge/brief.yaml` in the required schema, cross-checking it against `.forge/context.yaml`. |
|
|
96
|
+
|
|
97
|
+
That's the whole surface. Everything else is file-based: edit `.forge/context.yaml`, `.forge/brief.yaml`, `.forge/journal.md`, or `~/.forge/user/standards/*.yaml` with your editor's Write/Edit tool, then run `forge init` to refresh `CLAUDE.md`.
|
|
98
|
+
|
|
99
|
+
## Typical flow
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# 1. In a brand-new project
|
|
103
|
+
mkdir my-app && cd my-app
|
|
104
|
+
forge init
|
|
105
|
+
# → asks a few questions (mission, type, cloud, IaC, ...) if this is a greenfield repo
|
|
106
|
+
# → creates .forge/, CLAUDE.md, .claude/skills/forge/SKILL.md
|
|
107
|
+
|
|
108
|
+
# 2. In an existing project
|
|
109
|
+
cd existing-repo
|
|
110
|
+
forge init
|
|
111
|
+
# → detects backend/frontend/cloud/database/auth/IaC/CI-CD from config files
|
|
112
|
+
# → writes .forge/discovery_prompt.md listing fields it could not detect
|
|
113
|
+
# → open Claude Code / Cursor and ask it to "resolve the Forge discovery prompt"
|
|
114
|
+
# the editor reads .forge/discovery_prompt.md, explores the repo, edits
|
|
115
|
+
# .forge/context.yaml directly, and runs forge init to refresh CLAUDE.md
|
|
116
|
+
|
|
117
|
+
# 3. You have a requirement doc
|
|
118
|
+
forge intake requirements.md
|
|
119
|
+
# → writes .forge/intake_prompt.md for the AI editor
|
|
120
|
+
# → the editor produces .forge/brief.yaml (YAML matching the ForgeBrief schema)
|
|
121
|
+
# → run forge check to validate it against context
|
|
122
|
+
|
|
123
|
+
# 4. Before every commit / at the end of a session
|
|
124
|
+
forge check
|
|
125
|
+
# ✓ context — all fields resolved
|
|
126
|
+
# ✓ brief — consistent with context
|
|
127
|
+
# ✓ standards — 5 core, 2 user
|
|
128
|
+
# All good.
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## How the editor knows about Forge
|
|
132
|
+
|
|
133
|
+
When you run `forge init`, two files are written that your AI editor reads automatically:
|
|
134
|
+
|
|
135
|
+
- **`CLAUDE.md`** at the repo root — contains the full set of standards, stack rules, patterns, journal entries, and self-audit instructions. Claude Code reads this at the start of every session.
|
|
136
|
+
- **`.claude/skills/forge/SKILL.md`** — a Claude Code skill that fires whenever the editor is about to write or modify code. It tells the editor: read `CLAUDE.md`, respect every rule, append learnings to `.forge/journal.md`, and run `forge check` before declaring work complete.
|
|
137
|
+
|
|
138
|
+
Your editor does not need any new tool or MCP server to use Forge — it just reads the files Forge writes.
|
|
139
|
+
|
|
140
|
+
## Repository layout Forge creates
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
project/
|
|
144
|
+
├── CLAUDE.md ← editor instructions (do not edit manually)
|
|
145
|
+
├── .claude/skills/forge/SKILL.md ← Claude Code skill
|
|
146
|
+
└── .forge/
|
|
147
|
+
├── context.yaml ← stack, cloud, auth, regulatory decisions
|
|
148
|
+
├── brief.yaml ← (optional) normalized requirement
|
|
149
|
+
├── journal.md ← project-specific learnings the editor appends
|
|
150
|
+
├── discovery_prompt.md ← (appears when fields are unresolved)
|
|
151
|
+
├── intake_prompt.md ← (appears after forge intake)
|
|
152
|
+
└── overrides/
|
|
153
|
+
└── README.md ← drop project-specific standard overrides here
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
And globally:
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
~/.forge/
|
|
160
|
+
├── core/standards/ ← standards shipped with the installed forge_dev wheel
|
|
161
|
+
└── user/
|
|
162
|
+
├── config.yaml ← your personal defaults (all `unspecified` until you set them)
|
|
163
|
+
├── standards/*.yaml ← standards you've added manually
|
|
164
|
+
├── patterns/*.yaml ← approved patterns
|
|
165
|
+
├── anti-patterns/*.yaml ← prohibited patterns
|
|
166
|
+
└── mcps.yaml ← your MCP registry
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## MCP server (experimental)
|
|
170
|
+
|
|
171
|
+
Forge also exposes an MCP server mirroring the CLI, so editors that speak MCP can invoke Forge operations as tools:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
python -m mcp_server.server
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
The MCP surface is currently larger than the CLI (it exposes the old commands too). A minimal 3-tool version matching the CLI surface is on the roadmap.
|
|
178
|
+
|
|
179
|
+
## License
|
|
180
|
+
|
|
181
|
+
MIT
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Forge — Compliance Agent for AI-Assisted Development
|
|
2
|
+
|
|
3
|
+
Forge is a **compliance agent** for teams building software with AI code editors (Claude Code, Cursor, Copilot, Windsurf). It does not write code, plan features, or generate scaffolding — your AI editor already does that better. What Forge does is keep the editor *in check*: it captures your stack decisions, standards, patterns, and regulatory constraints in one place, and delivers them to the editor through the files it already reads (`CLAUDE.md`, `.claude/skills/`, `.cursorrules`, etc.).
|
|
4
|
+
|
|
5
|
+
The editor decides *what* to build and *how*. Forge enforces the *rules that must hold*.
|
|
6
|
+
|
|
7
|
+
> ⚠️ **Alpha (0.x)** — commands and file layouts may still change between releases.
|
|
8
|
+
|
|
9
|
+
## What Forge actually does
|
|
10
|
+
|
|
11
|
+
- **Captures** project-level decisions in `.forge/context.yaml` (cloud, stack, database, auth, IaC, regulatory).
|
|
12
|
+
- **Detects** the stack of an existing repo from `package.json`, `pyproject.toml`, `main.bicep`, `docker-compose.yml`, `.github/workflows/`, etc. Anything it can't detect is marked `unspecified` so the AI editor can fill it in.
|
|
13
|
+
- **Ships** opinionated standards (security, observability, type-safety, api-first, microservice-packaging) that get injected into `CLAUDE.md`.
|
|
14
|
+
- **Generates** `CLAUDE.md`, a Claude Code skill, and a discovery prompt from all of the above. Every session of your AI editor reads this automatically.
|
|
15
|
+
- **Maintains** a `.forge/journal.md` where the AI editor appends project-specific learnings across sessions.
|
|
16
|
+
- **Validates** everything is internally consistent with a single `forge check` command.
|
|
17
|
+
- **Normalizes** a requirement document (PRD, user story, conversation) into a structured brief via `forge intake`.
|
|
18
|
+
|
|
19
|
+
## What Forge does NOT do
|
|
20
|
+
|
|
21
|
+
- Plan features or produce implementation plans. That is Claude's job.
|
|
22
|
+
- Write or scaffold code, infrastructure, migrations, auth flows, or tests.
|
|
23
|
+
- Run code audits by itself. Your editor reads the standards from `CLAUDE.md` and checks files as it edits them.
|
|
24
|
+
- Call LLMs. Forge is pure Python and file I/O; the intelligence is in your editor.
|
|
25
|
+
- Replace `~/.claude/CLAUDE.md` global preferences. Forge only owns per-project files.
|
|
26
|
+
|
|
27
|
+
## Installation
|
|
28
|
+
|
|
29
|
+
Forge is published on PyPI as `forge-dev`. The recommended way is [`uv`](https://github.com/astral-sh/uv), which manages its own Python and isolates CLI tools automatically:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh # one-time: install uv
|
|
33
|
+
uv tool install forge-dev
|
|
34
|
+
forge --version
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
<details>
|
|
38
|
+
<summary>Alternatives: <code>pipx</code>, <code>pip</code>, or from source</summary>
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
pipx install forge-dev
|
|
42
|
+
# or
|
|
43
|
+
pip install forge-dev
|
|
44
|
+
# or
|
|
45
|
+
git clone https://github.com/luiskcr/forge.git && cd forge && pip install -e ".[dev]"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
</details>
|
|
49
|
+
|
|
50
|
+
Requires Python ≥ 3.11. If you use `uv`, it will download a compatible Python automatically.
|
|
51
|
+
|
|
52
|
+
### Updating
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
uv tool upgrade forge-dev # or: pipx upgrade forge-dev / pip install --upgrade forge-dev
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
> **Note for macOS users on Tahoe (macOS 26):** the Homebrew bottles for `python@3.13` / `python@3.14` currently ship a broken `pyexpat` module that breaks `pip`, `pipx`, and `venv`. If you hit `Symbol not found: _XML_SetAllocTrackerActivationThreshold`, use `uv` — it bundles its own Python and avoids the issue.
|
|
59
|
+
|
|
60
|
+
## The 3 commands
|
|
61
|
+
|
|
62
|
+
| Command | What it does |
|
|
63
|
+
|---|---|
|
|
64
|
+
| `forge init` | Create or refresh the project. Detects stack, generates `CLAUDE.md`, `.claude/skills/forge/SKILL.md`, and — if anything is unclear — a `.forge/discovery_prompt.md` the editor uses to fill in the gaps. |
|
|
65
|
+
| `forge check` | Validate current state. Reports context completeness, brief ↔ context consistency, and registry health. Exits non-zero on critical issues. |
|
|
66
|
+
| `forge intake <file>` | Turn a requirement document into `.forge/intake_prompt.md`. The prompt tells the AI editor to produce `.forge/brief.yaml` in the required schema, cross-checking it against `.forge/context.yaml`. |
|
|
67
|
+
|
|
68
|
+
That's the whole surface. Everything else is file-based: edit `.forge/context.yaml`, `.forge/brief.yaml`, `.forge/journal.md`, or `~/.forge/user/standards/*.yaml` with your editor's Write/Edit tool, then run `forge init` to refresh `CLAUDE.md`.
|
|
69
|
+
|
|
70
|
+
## Typical flow
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# 1. In a brand-new project
|
|
74
|
+
mkdir my-app && cd my-app
|
|
75
|
+
forge init
|
|
76
|
+
# → asks a few questions (mission, type, cloud, IaC, ...) if this is a greenfield repo
|
|
77
|
+
# → creates .forge/, CLAUDE.md, .claude/skills/forge/SKILL.md
|
|
78
|
+
|
|
79
|
+
# 2. In an existing project
|
|
80
|
+
cd existing-repo
|
|
81
|
+
forge init
|
|
82
|
+
# → detects backend/frontend/cloud/database/auth/IaC/CI-CD from config files
|
|
83
|
+
# → writes .forge/discovery_prompt.md listing fields it could not detect
|
|
84
|
+
# → open Claude Code / Cursor and ask it to "resolve the Forge discovery prompt"
|
|
85
|
+
# the editor reads .forge/discovery_prompt.md, explores the repo, edits
|
|
86
|
+
# .forge/context.yaml directly, and runs forge init to refresh CLAUDE.md
|
|
87
|
+
|
|
88
|
+
# 3. You have a requirement doc
|
|
89
|
+
forge intake requirements.md
|
|
90
|
+
# → writes .forge/intake_prompt.md for the AI editor
|
|
91
|
+
# → the editor produces .forge/brief.yaml (YAML matching the ForgeBrief schema)
|
|
92
|
+
# → run forge check to validate it against context
|
|
93
|
+
|
|
94
|
+
# 4. Before every commit / at the end of a session
|
|
95
|
+
forge check
|
|
96
|
+
# ✓ context — all fields resolved
|
|
97
|
+
# ✓ brief — consistent with context
|
|
98
|
+
# ✓ standards — 5 core, 2 user
|
|
99
|
+
# All good.
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## How the editor knows about Forge
|
|
103
|
+
|
|
104
|
+
When you run `forge init`, two files are written that your AI editor reads automatically:
|
|
105
|
+
|
|
106
|
+
- **`CLAUDE.md`** at the repo root — contains the full set of standards, stack rules, patterns, journal entries, and self-audit instructions. Claude Code reads this at the start of every session.
|
|
107
|
+
- **`.claude/skills/forge/SKILL.md`** — a Claude Code skill that fires whenever the editor is about to write or modify code. It tells the editor: read `CLAUDE.md`, respect every rule, append learnings to `.forge/journal.md`, and run `forge check` before declaring work complete.
|
|
108
|
+
|
|
109
|
+
Your editor does not need any new tool or MCP server to use Forge — it just reads the files Forge writes.
|
|
110
|
+
|
|
111
|
+
## Repository layout Forge creates
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
project/
|
|
115
|
+
├── CLAUDE.md ← editor instructions (do not edit manually)
|
|
116
|
+
├── .claude/skills/forge/SKILL.md ← Claude Code skill
|
|
117
|
+
└── .forge/
|
|
118
|
+
├── context.yaml ← stack, cloud, auth, regulatory decisions
|
|
119
|
+
├── brief.yaml ← (optional) normalized requirement
|
|
120
|
+
├── journal.md ← project-specific learnings the editor appends
|
|
121
|
+
├── discovery_prompt.md ← (appears when fields are unresolved)
|
|
122
|
+
├── intake_prompt.md ← (appears after forge intake)
|
|
123
|
+
└── overrides/
|
|
124
|
+
└── README.md ← drop project-specific standard overrides here
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
And globally:
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
~/.forge/
|
|
131
|
+
├── core/standards/ ← standards shipped with the installed forge_dev wheel
|
|
132
|
+
└── user/
|
|
133
|
+
├── config.yaml ← your personal defaults (all `unspecified` until you set them)
|
|
134
|
+
├── standards/*.yaml ← standards you've added manually
|
|
135
|
+
├── patterns/*.yaml ← approved patterns
|
|
136
|
+
├── anti-patterns/*.yaml ← prohibited patterns
|
|
137
|
+
└── mcps.yaml ← your MCP registry
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## MCP server (experimental)
|
|
141
|
+
|
|
142
|
+
Forge also exposes an MCP server mirroring the CLI, so editors that speak MCP can invoke Forge operations as tools:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
python -m mcp_server.server
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
The MCP surface is currently larger than the CLI (it exposes the old commands too). A minimal 3-tool version matching the CLI surface is on the roadmap.
|
|
149
|
+
|
|
150
|
+
## License
|
|
151
|
+
|
|
152
|
+
MIT
|