Skip to content

Commit 2ca9e17

Browse files
elkinjosetmclaude
andauthored
Rename prd-forge to stonecut (#108)
Rename the project, CLI command, skill names, directory conventions, and all references across source, tests, and documentation. - Package: prd-forge → stonecut - CLI command: forge → stonecut - Local dir: .forge/ → .stonecut/ - Skills: forge-{interview,prd,issues} → stonecut-{interview,prd,issues} - Branch pattern: forge/<slug> → stonecut/<slug> - Remove legacy skill migration code (forge:* and forge-*) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent f337146 commit 2ca9e17

File tree

18 files changed

+210
-248
lines changed

18 files changed

+210
-248
lines changed

DESIGN.md

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
# Forge — Design Document
1+
# Stonecut — Design Document
22

3-
Forge is a CLI tool that executes PRD-driven development workflows using agentic coding CLIs. It picks up issues (vertical slices from a PRD), spawns headless CLI sessions to implement them, handles bookkeeping, and creates pull requests with execution reports.
3+
Stonecut is a CLI tool that executes PRD-driven development workflows using agentic coding CLIs. It picks up issues (vertical slices from a PRD), spawns headless CLI sessions to implement them, handles bookkeeping, and creates pull requests with execution reports.
44

55
This document captures the design decisions for the initial build and future roadmap.
66

77
## Naming
88

9-
- **Project name:** Forge (repo: forge-orchestrator)
10-
- **CLI command:** `forge`
11-
- **Rationale:** A PRD is a blueprint, issues are the pieces, the tool forges them into reality. The primary execution entry point is `forge run`, with source selection handled by flags.
9+
- **Project name:** Stonecut (repo: stonecut)
10+
- **CLI command:** `stonecut`
11+
- **Rationale:** A PRD is a blueprint, issues are the pieces, the tool cuts them precisely into reality. The primary execution entry point is `stonecut run`, with source selection handled by flags.
1212

1313
## CLI Commands
1414

1515
```
16-
forge run --local <name> -i <N|all> [--runner <name>]
17-
forge run --github <number> -i <N|all> [--runner <name>]
16+
stonecut run --local <name> -i <N|all> [--runner <name>]
17+
stonecut run --github <number> -i <N|all> [--runner <name>]
1818
```
1919

2020
### Flags
@@ -29,12 +29,12 @@ forge run --github <number> -i <N|all> [--runner <name>]
2929

3030
### Sources
3131

32-
- **`forge run --local <name>`** — local PRD. Looks in `.forge/<name>/` for `prd.md` and `issues/`.
33-
- **`forge run --github <number>`** — GitHub PRD. Issue number on the current repo, tasks are sub-issues.
32+
- **`stonecut run --local <name>`** — local PRD. Looks in `.stonecut/<name>/` for `prd.md` and `issues/`.
33+
- **`stonecut run --github <number>`** — GitHub PRD. Issue number on the current repo, tasks are sub-issues.
3434

3535
## Runner Architecture
3636

37-
Forge uses a runner abstraction to support multiple agentic coding CLIs. The architecture consists of:
37+
Stonecut uses a runner abstraction to support multiple agentic coding CLIs. The architecture consists of:
3838

3939
### Runner Interface
4040

@@ -81,27 +81,27 @@ Modules throw typed errors. Only `cli.ts` catches errors, formats user-facing me
8181
- On success: close issue / update `status.json`, log to `progress.txt`.
8282
- On failure: record error, move on.
8383
6. Loops until iterations exhausted.
84-
7. After all iterations: push branch, create PR with Forge Report.
84+
7. After all iterations: push branch, create PR with Stonecut Report.
8585

8686
### Prompt
8787

8888
Single `execute.md` template with placeholders. The template is CLI-agnostic — runner-specific behavior is encapsulated in the adapter, not the prompt.
8989

9090
## Pre-execution Flow
9191

92-
Before spawning the first session, Forge prompts the user:
92+
Before spawning the first session, Stonecut prompts the user:
9393

94-
1. **Branch name** — with a sensible suggestion using the unified `forge/<slug>` convention. Local mode uses the spec name, GitHub mode uses the PRD title slug, and GitHub falls back to `forge/issue-<number>` when needed.
94+
1. **Branch name** — with a sensible suggestion using the unified `stonecut/<slug>` convention. Local mode uses the spec name, GitHub mode uses the PRD title slug, and GitHub falls back to `stonecut/issue-<number>` when needed.
9595
2. **Base branch / PR target** — suggests `main`.
9696

9797
Interactive prompts use `@clack/prompts`.
9898

9999
## PR Report
100100

101-
At the end of a run, Forge pushes the branch and creates a PR with a report:
101+
At the end of a run, Stonecut pushes the branch and creates a PR with a report:
102102

103103
```markdown
104-
## Forge Report
104+
## Stonecut Report
105105

106106
**Runner:** claude
107107

@@ -114,21 +114,21 @@ In GitHub mode, the PR title is the PRD issue title, with `PRD #<number>` as the
114114

115115
## Local Spec Structure
116116

117-
Local specs live in `.forge/` at the repo root:
117+
Local specs live in `.stonecut/` at the repo root:
118118

119119
```
120-
.forge/
120+
.stonecut/
121121
└── my-feature/
122122
├── prd.md # The PRD (created by write-a-prd skill)
123123
├── issues/
124124
│ ├── 01-setup.md # Vertical slice issues (created by prd-to-issues skill)
125125
│ ├── 02-core.md
126126
│ └── 03-api.md
127-
├── status.json # Auto-created by Forge
128-
└── progress.txt # Auto-created by Forge
127+
├── status.json # Auto-created by Stonecut
128+
└── progress.txt # Auto-created by Stonecut
129129
```
130130

131-
Whether `.forge/` is gitignored is the developer's decision per repo. Forge does not touch `.gitignore`.
131+
Whether `.stonecut/` is gitignored is the developer's decision per repo. Stonecut does not touch `.gitignore`.
132132

133133
## GitHub Mode
134134

@@ -148,7 +148,7 @@ Whether `.forge/` is gitignored is the developer's decision per repo. Forge does
148148
## Project Structure
149149

150150
```
151-
prd-forge/
151+
stonecut/
152152
├── package.json
153153
├── tsconfig.json
154154
├── src/
@@ -168,9 +168,9 @@ prd-forge/
168168
│ ├── templates/
169169
│ │ └── execute.md # prompt template
170170
│ └── skills/
171-
│ ├── forge-interview/
172-
│ ├── forge-prd/
173-
│ └── forge-issues/
171+
│ ├── stonecut-interview/
172+
│ ├── stonecut-prd/
173+
│ └── stonecut-issues/
174174
└── tests/
175175
├── cli.test.ts
176176
├── local.test.ts
@@ -190,24 +190,24 @@ Skills remain as Claude Code skills. They are not invoked by the CLI on day one
190190

191191
## Pipeline
192192

193-
Ideas can come from anywhere — a GitHub issue, a Jira ticket, a Slack thread, an MCP server, or just a conversation. Forge doesn't prescribe where ideas originate. The pipeline starts once you're ready to act on one:
193+
Ideas can come from anywhere — a GitHub issue, a Jira ticket, a Slack thread, an MCP server, or just a conversation. Stonecut doesn't prescribe where ideas originate. The pipeline starts once you're ready to act on one:
194194

195-
1. **Interview** — Stress-test the idea via `/forge-interview`.
196-
2. **PRD** — Write the spec via `/forge-prd`. Saves to a local file (`.forge/<name>/prd.md`) or a GitHub issue labeled `prd`.
197-
3. **Issues** — Break the PRD into vertical slices via `/forge-issues`. Creates local markdown files or GitHub sub-issues.
198-
4. **Execute**`forge run` picks up the issues and implements them sequentially.
195+
1. **Interview** — Stress-test the idea via `/stonecut-interview`.
196+
2. **PRD** — Write the spec via `/stonecut-prd`. Saves to a local file (`.stonecut/<name>/prd.md`) or a GitHub issue labeled `prd`.
197+
3. **Issues** — Break the PRD into vertical slices via `/stonecut-issues`. Creates local markdown files or GitHub sub-issues.
198+
4. **Execute**`stonecut run` picks up the issues and implements them sequentially.
199199

200200
### Suggested practice: managing your idea backlog with GitHub labels
201201

202202
For projects using GitHub issues, we recommend a label-driven flow to track ideas before they enter the pipeline:
203203

204204
1. **Capture** — Create a GitHub issue with the `roadmap` label. This is the idea backlog entry, regardless of where the idea originated.
205-
2. **Interview** — Run `/forge-interview` on the idea. Discussion happens on the roadmap issue.
206-
3. **PRD** — Run `/forge-prd`. The roadmap issue is closed with a comment linking forward to the new PRD issue. The PRD issue is created with the `prd` label and links back to the roadmap issue for history.
207-
4. **Issues** — Run `/forge-issues`. Sub-issues are created and linked to the PRD issue.
208-
5. **Execute**`forge run --github <prd_number>` implements the sub-issues. Each is closed on completion.
209-
6. **PR**Forge pushes the branch and creates a PR. The PR body includes "Closes #prd_number", so the PRD issue is auto-closed when the PR merges.
205+
2. **Interview** — Run `/stonecut-interview` on the idea. Discussion happens on the roadmap issue.
206+
3. **PRD** — Run `/stonecut-prd`. The roadmap issue is closed with a comment linking forward to the new PRD issue. The PRD issue is created with the `prd` label and links back to the roadmap issue for history.
207+
4. **Issues** — Run `/stonecut-issues`. Sub-issues are created and linked to the PRD issue.
208+
5. **Execute**`stonecut run --github <prd_number>` implements the sub-issues. Each is closed on completion.
209+
6. **PR**Stonecut pushes the branch and creates a PR. The PR body includes "Closes #prd_number", so the PRD issue is auto-closed when the PR merges.
210210

211211
This keeps each artifact (idea, spec, implementation tickets) as a separate issue with a clear purpose and traceable lineage.
212212

213-
See [GitHub issues labeled `roadmap`](https://github.com/elkinjosetm/prd-forge/labels/roadmap) for current ideas.
213+
See [GitHub issues labeled `roadmap`](https://github.com/elkinjosetm/stonecut/labels/roadmap) for current ideas.

NOTICE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Skills
44

5-
The skills in `src/skills/` (`forge-interview`, `forge-prd`, `forge-issues`) are
5+
The skills in `src/skills/` (`stonecut-interview`, `stonecut-prd`, `stonecut-issues`) are
66
derived from works by **Matt Pocock**, originally published under the MIT License at:
77

88
- [grill-me](https://github.com/mattpocock/skills/tree/main/grill-me)
@@ -16,7 +16,7 @@ Original copyright notice:
1616
1717
## Technique
1818

19-
The autonomous agentic execution loop used by the `forge` CLI is inspired by the
19+
The autonomous agentic execution loop used by the `stonecut` CLI is inspired by the
2020
**Ralph technique**, conceived by **Geoffrey Huntley** and described at:
2121

2222
- https://ghuntley.com/ralph/

README.md

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
# PRD Forge
1+
# Stonecut
22

3-
A CLI that drives PRD-driven development with agentic coding CLIs. You write the PRD, Forge executes the issues one by one.
3+
A CLI that drives PRD-driven development with agentic coding CLIs. You write the PRD, Stonecut executes the issues one by one.
44

55
## Workflow
66

77
Ideas can come from anywhere — Jira tickets, Slack threads, MCP servers, or just a conversation. The pipeline starts once you're ready to act on one:
88

9-
1. **`/forge-interview`** — Stress-test the idea. Get grilled on the plan until it's solid.
10-
2. **`/forge-prd`** — Turn the validated idea into a PRD (local file or GitHub issue).
11-
3. **`/forge-issues`** — Break the PRD into independently-grabbable issues (local markdown files or GitHub sub-issues).
12-
4. **`forge run`** — Execute the issues sequentially with an agentic coding CLI.
9+
1. **`/stonecut-interview`** — Stress-test the idea. Get grilled on the plan until it's solid.
10+
2. **`/stonecut-prd`** — Turn the validated idea into a PRD (local file or GitHub issue).
11+
3. **`/stonecut-issues`** — Break the PRD into independently-grabbable issues (local markdown files or GitHub sub-issues).
12+
4. **`stonecut run`** — Execute the issues sequentially with an agentic coding CLI.
1313

14-
Steps 1–3 are Claude Code skills installed via `forge setup-skills`. Step 4 is the Forge CLI.
14+
Steps 1–3 are Claude Code skills installed via `stonecut setup-skills`. Step 4 is the Stonecut CLI.
1515

1616
### Suggested: managing your idea backlog
1717

@@ -28,20 +28,20 @@ For projects using GitHub issues, we recommend tracking ideas with a `roadmap` l
2828
### Install from npm
2929

3030
```sh
31-
bun add -g prd-forge
31+
bun add -g stonecut
3232
```
3333

34-
This makes the `forge` command globally available. Then install the Claude Code skills:
34+
This makes the `stonecut` command globally available. Then install the Claude Code skills:
3535

3636
```sh
37-
forge setup-skills
37+
stonecut setup-skills
3838
```
3939

4040
### Install from source
4141

4242
```sh
43-
git clone https://github.com/elkinjosetm/prd-forge.git
44-
cd prd-forge
43+
git clone https://github.com/elkinjosetm/stonecut.git
44+
cd stonecut
4545
bun install
4646
```
4747

@@ -68,26 +68,26 @@ bun test
6868

6969
## Usage
7070

71-
Forge has one execution command (`run`) with two sources (`--local` for local PRDs, `--github` for GitHub PRDs). All execution is headless — Forge runs the issues autonomously and creates a PR when done.
71+
Stonecut has one execution command (`run`) with two sources (`--local` for local PRDs, `--github` for GitHub PRDs). All execution is headless — Stonecut runs the issues autonomously and creates a PR when done.
7272

73-
### `forge run --local` — Local PRDs
73+
### `stonecut run --local` — Local PRDs
7474

7575
```sh
7676
# Run 5 issues, then push and create a PR
77-
forge run --local my-feature -i 5
77+
stonecut run --local my-feature -i 5
7878

7979
# Run all remaining issues
80-
forge run --local my-feature -i all
80+
stonecut run --local my-feature -i all
8181
```
8282

83-
### `forge run --github` — GitHub PRDs
83+
### `stonecut run --github` — GitHub PRDs
8484

8585
```sh
8686
# Run 5 sub-issues
87-
forge run --github 42 -i 5
87+
stonecut run --github 42 -i 5
8888

8989
# Run all remaining sub-issues
90-
forge run --github 42 -i all
90+
stonecut run --github 42 -i all
9191
```
9292

9393
### Flags
@@ -100,26 +100,26 @@ forge run --github 42 -i all
100100

101101
### Pre-execution prompts
102102

103-
Before starting, Forge:
103+
Before starting, Stonecut:
104104

105105
1. Checks for a clean working tree
106-
2. Prompts for a branch name (suggests `forge/<slug>` — local uses the spec name, GitHub uses the PRD title slug, with `forge/issue-<number>` fallback)
106+
2. Prompts for a branch name (suggests `stonecut/<slug>` — local uses the spec name, GitHub uses the PRD title slug, with `stonecut/issue-<number>` fallback)
107107
3. Prompts for a base branch / PR target (suggests `main`)
108108
4. Creates or checks out the branch
109109

110110
### After a run
111111

112-
Forge automatically pushes the branch, creates a PR, and includes a Forge Report listing each issue with its status (completed or failed with error reason). The report also shows which runner was used. Timing stats are printed per iteration and for the full session.
112+
Stonecut automatically pushes the branch, creates a PR, and includes a Stonecut Report listing each issue with its status (completed or failed with error reason). The report also shows which runner was used. Timing stats are printed per iteration and for the full session.
113113
In GitHub mode, the PR title defaults to the PRD issue title with a `PRD #<number>` fallback if the title is unavailable.
114114

115115
## Sources
116116

117-
### Local mode (`forge run --local <name>`)
117+
### Local mode (`stonecut run --local <name>`)
118118

119-
Expects a local PRD directory at `.forge/<name>/` with this structure:
119+
Expects a local PRD directory at `.stonecut/<name>/` with this structure:
120120

121121
```
122-
.forge/my-feature/
122+
.stonecut/my-feature/
123123
├── prd.md # The full PRD
124124
├── issues/
125125
│ ├── 01-setup.md # Issue files, numbered for ordering
@@ -129,7 +129,7 @@ Expects a local PRD directory at `.forge/<name>/` with this structure:
129129
└── progress.txt # Auto-created: timestamped completion log
130130
```
131131

132-
### GitHub mode (`forge run --github <number>`)
132+
### GitHub mode (`stonecut run --github <number>`)
133133

134134
Works with GitHub issues instead of local files:
135135

@@ -143,20 +143,20 @@ Works with GitHub issues instead of local files:
143143
The repo ships three Claude Code skills for steps 1–3 of the workflow. Install them with:
144144

145145
```sh
146-
forge setup-skills
146+
stonecut setup-skills
147147
```
148148

149-
This creates symlinks in `~/.claude/skills/` pointing to the installed package. Once linked, they're available as `/forge-interview`, `/forge-prd`, and `/forge-issues` in any Claude Code session.
149+
This creates symlinks in `~/.claude/skills/` pointing to the installed package. Once linked, they're available as `/stonecut-interview`, `/stonecut-prd`, and `/stonecut-issues` in any Claude Code session.
150150

151151
For non-default Claude Code installations, pass `--target` with the Claude root path:
152152

153153
```sh
154-
forge setup-skills --target ~/.claude-acme
154+
stonecut setup-skills --target ~/.claude-acme
155155
```
156156

157157
To remove the symlinks:
158158

159159
```sh
160-
forge remove-skills # default (~/.claude)
161-
forge remove-skills --target ~/.claude-acme
160+
stonecut remove-skills # default (~/.claude)
161+
stonecut remove-skills --target ~/.claude-acme
162162
```

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
{
2-
"name": "prd-forge",
2+
"name": "stonecut",
33
"version": "1.0.0",
44
"description": "CLI that drives PRD-driven development with agentic coding CLIs",
55
"license": "MIT",
66
"repository": {
77
"type": "git",
8-
"url": "https://github.com/elkinjosetm/prd-forge.git"
8+
"url": "https://github.com/elkinjosetm/stonecut.git"
99
},
1010
"keywords": [
1111
"cli",
@@ -21,7 +21,7 @@
2121
"README.md"
2222
],
2323
"bin": {
24-
"forge": "./src/cli.ts"
24+
"stonecut": "./src/cli.ts"
2525
},
2626
"scripts": {
2727
"lint": "eslint src/ tests/",

0 commit comments

Comments
 (0)