claudeforge-cli 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -22
- package/package.json +1 -1
- package/templates/claude/commands/setup-project.md.tpl +133 -40
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> Forge production-ready AI agent projects — agents, slash commands, memory, CI/CD, and devcontainers in one command.
|
|
4
4
|
|
|
5
|
-
[](https://www.npmjs.com/package/claudeforge)
|
|
5
|
+
[](https://www.npmjs.com/package/claudeforge-cli)
|
|
6
6
|
[](https://pypi.org/project/claudeforge)
|
|
7
7
|
[](LICENSE)
|
|
8
8
|
[](https://nodejs.org)
|
|
@@ -12,6 +12,42 @@
|
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
+
## Requirements
|
|
16
|
+
|
|
17
|
+
> **Node.js 18+ is required regardless of how you install claudeforge.**
|
|
18
|
+
> The CLI is built on Node.js — the pip package is a thin wrapper that delegates to it automatically.
|
|
19
|
+
|
|
20
|
+
| Requirement | Version | Notes |
|
|
21
|
+
|-------------|---------|-------|
|
|
22
|
+
| Node.js | 18+ | Required for the CLI — install first |
|
|
23
|
+
| npm | any | Included with Node.js |
|
|
24
|
+
| Python | 3.8+ | Only needed if installing via pip |
|
|
25
|
+
| Claude Code | latest | IDE extension for slash commands |
|
|
26
|
+
|
|
27
|
+
### Install Node.js (if you don't have it)
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# macOS
|
|
31
|
+
brew install node
|
|
32
|
+
|
|
33
|
+
# macOS / Linux — via nvm (recommended)
|
|
34
|
+
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
|
35
|
+
nvm install 20
|
|
36
|
+
|
|
37
|
+
# Ubuntu / Debian
|
|
38
|
+
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
|
|
39
|
+
sudo apt-get install -y nodejs
|
|
40
|
+
|
|
41
|
+
# Windows — download installer from https://nodejs.org
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Verify:
|
|
45
|
+
```bash
|
|
46
|
+
node --version # should print v18 or higher
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
15
51
|
## Table of Contents
|
|
16
52
|
|
|
17
53
|
- [What It Does](#what-it-does)
|
|
@@ -50,19 +86,23 @@
|
|
|
50
86
|
|
|
51
87
|
### via npm (recommended)
|
|
52
88
|
|
|
89
|
+
Best if you already have Node.js installed.
|
|
90
|
+
|
|
53
91
|
```bash
|
|
54
|
-
npm install -g claudeforge
|
|
92
|
+
npm install -g claudeforge-cli
|
|
55
93
|
```
|
|
56
94
|
|
|
57
95
|
### via pip
|
|
58
96
|
|
|
97
|
+
Best if you primarily work in Python environments. Node.js 18+ must still be installed on your system (see [Requirements](#requirements) above).
|
|
98
|
+
|
|
59
99
|
```bash
|
|
60
100
|
pip install claudeforge
|
|
61
101
|
```
|
|
62
102
|
|
|
63
|
-
>
|
|
103
|
+
> The pip package is a thin wrapper — when you run `claudeforge`, it locates Node.js on your PATH and delegates all commands to the Node.js CLI automatically. No manual Node.js setup is required beyond having it installed.
|
|
64
104
|
|
|
65
|
-
Verify installation
|
|
105
|
+
### Verify installation
|
|
66
106
|
|
|
67
107
|
```bash
|
|
68
108
|
claudeforge --version
|
|
@@ -376,24 +416,39 @@ The CLI handles file scaffolding. The AI work happens inside the IDE where Claud
|
|
|
376
416
|
|
|
377
417
|
## Troubleshooting
|
|
378
418
|
|
|
379
|
-
**`claudeforge: command not found
|
|
419
|
+
**`claudeforge: command not found` after npm install**
|
|
380
420
|
```bash
|
|
381
|
-
# npm
|
|
382
|
-
npm
|
|
383
|
-
#
|
|
384
|
-
|
|
421
|
+
# Ensure npm global bin is on PATH
|
|
422
|
+
export PATH="$(npm prefix -g)/bin:$PATH"
|
|
423
|
+
# Add to ~/.zshrc or ~/.bashrc to persist
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
**`claudeforge: command not found` after pip install**
|
|
427
|
+
```bash
|
|
428
|
+
# Ensure pip user bin is on PATH
|
|
385
429
|
export PATH="$HOME/.local/bin:$PATH"
|
|
430
|
+
# Add to ~/.zshrc or ~/.bashrc to persist
|
|
386
431
|
```
|
|
387
432
|
|
|
388
|
-
|
|
433
|
+
**`Node.js is required but was not found on PATH`**
|
|
434
|
+
|
|
435
|
+
This happens when installing via pip — Node.js must be installed separately.
|
|
436
|
+
|
|
389
437
|
```bash
|
|
390
438
|
# macOS
|
|
391
439
|
brew install node
|
|
392
|
-
|
|
440
|
+
|
|
441
|
+
# macOS / Linux — via nvm
|
|
442
|
+
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
|
443
|
+
nvm install 20
|
|
444
|
+
|
|
445
|
+
# Ubuntu / Debian
|
|
393
446
|
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
|
|
394
447
|
sudo apt-get install -y nodejs
|
|
395
448
|
```
|
|
396
449
|
|
|
450
|
+
After installing Node.js, open a new terminal and retry.
|
|
451
|
+
|
|
397
452
|
**`/setup-project` didn't generate anything**
|
|
398
453
|
Make sure you ran `claudeforge init` first — the `.claude/commands/` directory must exist for slash commands to work.
|
|
399
454
|
|
|
@@ -415,17 +470,6 @@ Confirm you're running Claude Code (not just Copilot Chat). The `.claude/command
|
|
|
415
470
|
|
|
416
471
|
---
|
|
417
472
|
|
|
418
|
-
## Requirements
|
|
419
|
-
|
|
420
|
-
| Requirement | Version | Notes |
|
|
421
|
-
|-------------|---------|-------|
|
|
422
|
-
| Node.js | 18+ | Required for the CLI |
|
|
423
|
-
| npm | any | Included with Node.js |
|
|
424
|
-
| Python | 3.8+ | Only if installing via pip |
|
|
425
|
-
| Claude Code | latest | IDE extension for slash commands |
|
|
426
|
-
|
|
427
|
-
---
|
|
428
|
-
|
|
429
473
|
## License
|
|
430
474
|
|
|
431
475
|
MIT
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: AI-fill the complete Claude Code project configuration. Run after `claudeforge project "description"` — or run it directly with your project description as the argument. Generates CLAUDE.md, settings, agents, commands, memory, and more.
|
|
2
|
+
description: AI-fill the complete Claude Code project configuration. Run after `claudeforge project "description"` — or run it directly with your project description as the argument. Generates CLAUDE.md, settings, skills, agents, commands, memory, and more.
|
|
3
3
|
allowed-tools: Read, Write, Edit, MultiEdit, Bash(git status:*), Bash(git log:*), Bash(ls:*), Bash(find:*), Bash(cat:*), Bash(rm:*)
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -46,7 +46,7 @@ Write a complete `CLAUDE.md` that includes:
|
|
|
46
46
|
|
|
47
47
|
**Gotchas**: 3–5 non-obvious things about this stack (e.g., "FastAPI route order matters — more specific routes must be declared before generic ones").
|
|
48
48
|
|
|
49
|
-
**Workflow**: How to use `/commit`, `/review-pr`, and
|
|
49
|
+
**Workflow**: How to use `/commit`, `/review-pr`, and which skills and agents apply to this project.
|
|
50
50
|
|
|
51
51
|
### 2b. Update `.claude/settings.json`
|
|
52
52
|
|
|
@@ -84,37 +84,114 @@ Always keep `context7`. Add servers based on the stack:
|
|
|
84
84
|
### 2e. Rewrite `memory/project_ai_workflow.md`
|
|
85
85
|
|
|
86
86
|
Write a complete, project-specific workflow document:
|
|
87
|
-
- Which
|
|
87
|
+
- Which skills load automatically and when (be explicit: "the `prisma` skill loads whenever writing database queries")
|
|
88
|
+
- Which agents to use and when (be explicit: "use `security-auditor` whenever adding auth or payment logic")
|
|
88
89
|
- Which slash commands map to which tasks
|
|
89
90
|
- MCP servers available and how to invoke them
|
|
90
91
|
- Project-specific AI conventions (e.g., "always read `src/db/schema.py` before writing queries")
|
|
91
92
|
- Any architectural decisions that Claude should know and respect
|
|
92
93
|
|
|
93
|
-
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### 2f. Infer and Create Skills — Domain Specialists
|
|
97
|
+
|
|
98
|
+
**Skills** live in `.claude/skills/` and are loaded as context *before* Claude writes code. They encode how to write code correctly for a specific domain in this project — like a senior developer's internal style guide baked into Claude's context.
|
|
99
|
+
|
|
100
|
+
#### Step 1 — Identify the distinct technical domains in this project
|
|
101
|
+
|
|
102
|
+
Read the project description and detected files. Extract every distinct technical concern that has its own patterns, conventions, or APIs. Each is a candidate for a skill. Think domain-by-domain:
|
|
103
|
+
|
|
104
|
+
- "Next.js SaaS with Stripe, Prisma, and Clerk auth"
|
|
105
|
+
→ domains: Next.js components/pages, Stripe payments, Prisma queries, Clerk authentication
|
|
106
|
+
- "Go gRPC microservice with PostgreSQL and Redis"
|
|
107
|
+
→ domains: gRPC service definitions, PostgreSQL queries, Redis caching
|
|
108
|
+
- "React Native app with Firebase and Expo"
|
|
109
|
+
→ domains: React Native screens/navigation, Firebase Firestore, Firebase Auth, Expo config
|
|
110
|
+
- "Django REST API with Celery and S3"
|
|
111
|
+
→ domains: Django REST endpoints, Celery tasks, S3 file handling
|
|
112
|
+
- "Rust CLI tool for CSV parsing"
|
|
113
|
+
→ domains: CLI argument parsing, CSV parsing/transformation, Rust error handling
|
|
114
|
+
|
|
115
|
+
There is no fixed number — create as many skills as there are meaningful, distinct domains with non-obvious conventions. A simple project may need 2. A complex one may need 6.
|
|
116
|
+
|
|
117
|
+
#### Step 2 — Create a SKILL.md for each domain
|
|
118
|
+
|
|
119
|
+
Each skill lives at `.claude/skills/<domain-name>/SKILL.md`.
|
|
120
|
+
|
|
121
|
+
Every skill file must have:
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
---
|
|
125
|
+
description: "<precise trigger condition — when should Claude load this skill>"
|
|
126
|
+
---
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
The `description` is the most important field. Write it as a specific trigger condition so Claude loads it at exactly the right moment:
|
|
130
|
+
- Good: `"Load when writing or modifying any Stripe payment intent, webhook handler, or subscription logic"`
|
|
131
|
+
- Bad: `"Stripe knowledge"`
|
|
132
|
+
|
|
133
|
+
The skill body must read like a senior developer's internal guide for this domain in this specific project. Include:
|
|
134
|
+
|
|
135
|
+
1. **Overview** — what this domain does in this project, which files/folders it lives in
|
|
136
|
+
2. **Conventions** — naming patterns, file structure, how new files should be organized
|
|
137
|
+
3. **Key patterns** — the specific way this project does things (e.g., "all Prisma queries go through `src/lib/db.ts`, never import PrismaClient directly")
|
|
138
|
+
4. **Integration points** — how this domain connects to others (e.g., "Stripe webhooks call the same service layer as the REST API")
|
|
139
|
+
5. **Common mistakes** — non-obvious pitfalls specific to this stack/version
|
|
140
|
+
6. **Examples** — 1–2 short, concrete code snippets showing the right pattern for this project
|
|
141
|
+
|
|
142
|
+
#### Step 3 — Always create the base `project-conventions` skill
|
|
143
|
+
|
|
144
|
+
Update `.claude/skills/project-conventions/SKILL.md` with project-specific conventions:
|
|
145
|
+
- Commit message format
|
|
146
|
+
- PR conventions
|
|
147
|
+
- General code style rules that apply across all domains
|
|
148
|
+
- How to name files, variables, functions in this project
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
### 2g. Infer and Create Agents — Reviewers and Auditors
|
|
153
|
+
|
|
154
|
+
**Agents** live in `.claude/agents/` and are invoked as focused subagents to *review, audit, or run a workflow* independently. They have tool access. Do not create agents for writing code — that is what skills are for.
|
|
155
|
+
|
|
156
|
+
#### Step 1 — Identify domains that have non-obvious review risks
|
|
157
|
+
|
|
158
|
+
Not every domain needs a reviewer agent. Only create one when a focused checklist genuinely adds value — e.g., database migrations (irreversible), payment flows (financial risk), auth logic (security risk), caching strategies (correctness risk).
|
|
159
|
+
|
|
160
|
+
Examples by project type:
|
|
161
|
+
- "Next.js SaaS with Stripe, Prisma, and Clerk" → `stripe-reviewer` (payment correctness), `db-reviewer` (migration safety)
|
|
162
|
+
- "Go gRPC microservice with PostgreSQL and Redis" → `db-reviewer` (query performance), `api-reviewer` (gRPC contract safety)
|
|
163
|
+
- "React Native app with Firebase" → `security-auditor` (Firebase rules, auth), `performance-reviewer` (React Native render performance)
|
|
164
|
+
- "Django REST API with Celery" → `api-reviewer` (REST conventions), `db-reviewer` (ORM query safety)
|
|
165
|
+
|
|
166
|
+
#### Step 2 — Create a reviewer agent for each high-risk domain
|
|
94
167
|
|
|
95
|
-
|
|
168
|
+
Each agent file at `.claude/agents/<name>.md` must have:
|
|
96
169
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
170
|
+
```
|
|
171
|
+
---
|
|
172
|
+
description: "<precise trigger — when Claude should invoke this agent>"
|
|
173
|
+
---
|
|
174
|
+
```
|
|
100
175
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
176
|
+
The agent body must include:
|
|
177
|
+
1. A focused role statement — what this agent reviews and why it matters
|
|
178
|
+
2. A numbered checklist specific to this stack and domain
|
|
179
|
+
3. A clear output format: severity rating per issue, actionable fix suggestion
|
|
104
180
|
|
|
105
|
-
|
|
106
|
-
- `data-validator.md` — Validates data pipelines: schema consistency, null handling, statistical reasonableness
|
|
107
|
-
- `ml-reviewer.md` — Reviews model code: data leakage, correct train/val/test splits, metric definitions
|
|
181
|
+
#### Step 3 — Always create these two agents regardless of project type
|
|
108
182
|
|
|
109
|
-
|
|
110
|
-
- `security-auditor.md` —
|
|
183
|
+
- `code-reviewer.md` — General code review across correctness, error handling, style, test coverage, and documentation. Invoked before every PR.
|
|
184
|
+
- `security-auditor.md` — Reviews any code touching auth, secrets, input validation, or external APIs. No tool access restrictions.
|
|
111
185
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
-
|
|
115
|
-
-
|
|
186
|
+
#### Rules for all agents
|
|
187
|
+
|
|
188
|
+
- `description` must be a specific trigger condition, not a job title
|
|
189
|
+
- Reviewer checklists must be tailored to the actual stack — not generic
|
|
190
|
+
- Every agent must have a clear output format with severity levels
|
|
191
|
+
|
|
192
|
+
---
|
|
116
193
|
|
|
117
|
-
###
|
|
194
|
+
### 2h. Create 2–4 Slash Commands
|
|
118
195
|
|
|
119
196
|
Create command files in `.claude/commands/` specific to this workflow:
|
|
120
197
|
|
|
@@ -126,7 +203,7 @@ Create command files in `.claude/commands/` specific to this workflow:
|
|
|
126
203
|
|
|
127
204
|
Each command must use `!` dynamic context (e.g., `!git diff`, `!npm test 2>&1`) and have a clear `## Task` section.
|
|
128
205
|
|
|
129
|
-
###
|
|
206
|
+
### 2i. Append `.gitignore` Tech-Stack Patterns
|
|
130
207
|
|
|
131
208
|
Append a labeled section with patterns for this stack. Examples:
|
|
132
209
|
- Python: `__pycache__/`, `*.pyc`, `.pytest_cache/`, `.mypy_cache/`, `.ruff_cache/`, `dist/`, `*.egg-info/`
|
|
@@ -150,25 +227,30 @@ rm -f SETUP_CONTEXT.md
|
|
|
150
227
|
|
|
151
228
|
After all files are written, go back and add a documentation header to each one so users know what they're looking at and what to customize.
|
|
152
229
|
|
|
153
|
-
For each file written, prepend (or add at an appropriate location):
|
|
154
|
-
|
|
155
230
|
**CLAUDE.md** — add at the top after the title:
|
|
156
231
|
```
|
|
157
232
|
> **Setup status**: Generated by claudeforge. Update the Commands table with your actual
|
|
158
233
|
> project commands after verifying them. Fill in the Gotchas section as you discover them.
|
|
159
234
|
```
|
|
160
235
|
|
|
161
|
-
**`.claude/settings.json`** — add a `_readme` key
|
|
236
|
+
**`.claude/settings.json`** — add a `_readme` key:
|
|
162
237
|
```json
|
|
163
|
-
"_readme": "Team-shared Claude Code settings. Personal overrides go in settings.local.json (gitignored).
|
|
238
|
+
"_readme": "Team-shared Claude Code settings. Personal overrides go in settings.local.json (gitignored)."
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**Each skill file** — after the frontmatter, add:
|
|
242
|
+
```
|
|
243
|
+
<!-- WHAT THIS IS: A skill that loads as context when Claude works in this domain.
|
|
244
|
+
HOW IT WORKS: Claude reads this automatically before writing code that matches the description.
|
|
245
|
+
HOW TO CUSTOMIZE: Update the patterns and examples below as your project evolves.
|
|
246
|
+
THINGS TO ADD: New conventions, discovered gotchas, team-specific patterns. -->
|
|
164
247
|
```
|
|
165
248
|
|
|
166
249
|
**Each agent file** — after the frontmatter, add:
|
|
167
250
|
```
|
|
168
|
-
<!-- WHAT THIS IS: A
|
|
251
|
+
<!-- WHAT THIS IS: A reviewer agent Claude invokes to audit this domain.
|
|
169
252
|
HOW TO INVOKE: Claude uses this automatically when the task matches the description.
|
|
170
|
-
HOW TO CUSTOMIZE: Edit the checklist items
|
|
171
|
-
THINGS TO ADD: Project-specific anti-patterns, naming conventions, architectural rules. -->
|
|
253
|
+
HOW TO CUSTOMIZE: Edit the checklist items to match your project's specific patterns. -->
|
|
172
254
|
```
|
|
173
255
|
|
|
174
256
|
**Each command file** — after the frontmatter, add:
|
|
@@ -205,9 +287,29 @@ Generated by `/setup-project` on [today's date].
|
|
|
205
287
|
| `.env.example` | Documents required env vars | Update with any new vars; never commit real values |
|
|
206
288
|
| `.mcp.json` | MCP servers your team shares | Add connection strings to .env for any DB servers |
|
|
207
289
|
| `memory/project_ai_workflow.md` | AI conventions for this project | Update as your workflow evolves; Claude reads this every session |
|
|
208
|
-
| [
|
|
290
|
+
| [skill files] | Domain expertise loaded before writing code | Update conventions as the project evolves |
|
|
291
|
+
| [agent files] | Specialized reviewer agents | Customize checklists to add project-specific patterns |
|
|
209
292
|
| [command files] | Slash commands for your workflow | Edit the ## Task section to match your exact needs |
|
|
210
293
|
|
|
294
|
+
## Skills Available
|
|
295
|
+
|
|
296
|
+
Claude loads these automatically before writing code in each domain:
|
|
297
|
+
|
|
298
|
+
| Skill | Loaded When |
|
|
299
|
+
|-------|------------|
|
|
300
|
+
| `project-conventions` | Always — applies to all code |
|
|
301
|
+
| *(project-specific skills)* | See `.claude/skills/` for the full list |
|
|
302
|
+
|
|
303
|
+
## Agents Available
|
|
304
|
+
|
|
305
|
+
Claude invokes these automatically to review and audit:
|
|
306
|
+
|
|
307
|
+
| Agent | Invoked When |
|
|
308
|
+
|-------|-------------|
|
|
309
|
+
| `code-reviewer` | After writing code, before PR |
|
|
310
|
+
| `security-auditor` | Any auth, secrets, or input-handling code |
|
|
311
|
+
| *(project-specific reviewers)* | See `.claude/agents/` for the full list |
|
|
312
|
+
|
|
211
313
|
## Slash Commands Available
|
|
212
314
|
|
|
213
315
|
Run these in the Claude Code chat window:
|
|
@@ -223,15 +325,6 @@ Run these in the Claude Code chat window:
|
|
|
223
325
|
| `/scaffold-structure` | Once — creates the src/, tests/, etc. directory structure |
|
|
224
326
|
| [project commands] | See .claude/commands/ for project-specific commands |
|
|
225
327
|
|
|
226
|
-
## Agents Available
|
|
227
|
-
|
|
228
|
-
Claude uses these automatically based on what you're doing:
|
|
229
|
-
|
|
230
|
-
| Agent | Invoked When |
|
|
231
|
-
|-------|-------------|
|
|
232
|
-
| `code-reviewer` | After writing code, before PR |
|
|
233
|
-
| [project agents] | See .claude/agents/ for project-specific agents |
|
|
234
|
-
|
|
235
328
|
## Next Steps
|
|
236
329
|
|
|
237
330
|
1. **Verify commands** in `CLAUDE.md` — run each one and confirm they work
|
|
@@ -247,7 +340,7 @@ Claude uses these automatically based on what you're doing:
|
|
|
247
340
|
|
|
248
341
|
Print a clear summary of everything that was done:
|
|
249
342
|
|
|
250
|
-
1. List every
|
|
343
|
+
1. List every skill created with its trigger description
|
|
251
344
|
2. List every agent created with its trigger description
|
|
252
345
|
3. List every slash command created with its use case
|
|
253
346
|
4. State the exact next step: "Run `/scaffold-structure` in Claude Code to create your project's directory structure"
|