forge-workflow 1.4.3 → 1.4.4
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/.claude/skills/forge-workflow/SKILL.md +46 -0
- package/CLAUDE.md +25 -21
- package/bin/forge.js +63 -36
- package/package.json +1 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: forge-workflow
|
|
3
|
+
description: 9-stage TDD-first workflow for feature development. Use when building features, fixing bugs, or shipping PRs.
|
|
4
|
+
category: Development Workflow
|
|
5
|
+
tags: [tdd, workflow, pr, git, testing]
|
|
6
|
+
tools: [Bash, Read, Write, Edit, Grep, Glob]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Forge Workflow Skill
|
|
10
|
+
|
|
11
|
+
A TDD-first workflow for AI coding agents. Ship features with confidence.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
|
|
15
|
+
Automatically invoke this skill when the user wants to:
|
|
16
|
+
- Build a new feature
|
|
17
|
+
- Fix a bug
|
|
18
|
+
- Create a pull request
|
|
19
|
+
- Run the development workflow
|
|
20
|
+
|
|
21
|
+
## 9 Stages
|
|
22
|
+
|
|
23
|
+
| Stage | Command | Description |
|
|
24
|
+
|-------|---------|-------------|
|
|
25
|
+
| 1 | `/status` | Check current context, active work, recent completions |
|
|
26
|
+
| 2 | `/research` | Deep research with web search, document to docs/research/ |
|
|
27
|
+
| 3 | `/plan` | Create implementation plan, branch, OpenSpec if strategic |
|
|
28
|
+
| 4 | `/dev` | TDD development (RED-GREEN-REFACTOR cycles) |
|
|
29
|
+
| 5 | `/check` | Validation (type/lint/security/tests) |
|
|
30
|
+
| 6 | `/ship` | Create PR with full documentation |
|
|
31
|
+
| 7 | `/review` | Address ALL PR feedback |
|
|
32
|
+
| 8 | `/merge` | Update docs, merge PR, cleanup |
|
|
33
|
+
| 9 | `/verify` | Final documentation verification |
|
|
34
|
+
|
|
35
|
+
## Workflow Flow
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
/status -> /research -> /plan -> /dev -> /check -> /ship -> /review -> /merge -> /verify
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Core Principles
|
|
42
|
+
|
|
43
|
+
- **TDD-First**: Write tests BEFORE implementation (RED-GREEN-REFACTOR)
|
|
44
|
+
- **Research-First**: Understand before building, document decisions
|
|
45
|
+
- **Security Built-In**: OWASP Top 10 analysis for every feature
|
|
46
|
+
- **Documentation Progressive**: Update at each stage, verify at end
|
package/CLAUDE.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Project Instructions
|
|
2
2
|
|
|
3
3
|
This is a [describe what this project does in one sentence].
|
|
4
4
|
|
|
@@ -46,31 +46,35 @@ See [docs/WORKFLOW.md](docs/WORKFLOW.md) for complete workflow guide.
|
|
|
46
46
|
|
|
47
47
|
---
|
|
48
48
|
|
|
49
|
-
## MCP Servers
|
|
50
|
-
|
|
51
|
-
This project uses MCP servers for enhanced capabilities.
|
|
52
|
-
|
|
53
|
-
```json
|
|
54
|
-
{
|
|
55
|
-
"mcpServers": {
|
|
56
|
-
"context7": {
|
|
57
|
-
"command": "npx",
|
|
58
|
-
"args": ["-y", "@upstash/context7-mcp@latest"]
|
|
59
|
-
},
|
|
60
|
-
"grep-app": {
|
|
61
|
-
"command": "npx",
|
|
62
|
-
"args": ["-y", "@ai-tools-all/grep_app_mcp"]
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
```
|
|
49
|
+
## MCP Servers (Enhanced Capabilities)
|
|
50
|
+
|
|
51
|
+
This project uses MCP (Model Context Protocol) servers for enhanced capabilities. If your AI agent supports MCP, set up these servers:
|
|
67
52
|
|
|
68
|
-
**Available MCP servers
|
|
53
|
+
**Available MCP servers:**
|
|
69
54
|
|
|
70
55
|
- **Context7**: Up-to-date library documentation and API reference
|
|
71
56
|
- **grep.app**: Search 1M+ GitHub repos for real-world code examples
|
|
72
57
|
|
|
73
|
-
|
|
58
|
+
**Setup for your agent:**
|
|
59
|
+
|
|
60
|
+
See [.mcp.json.example](.mcp.json.example) for configuration. Setup varies by agent:
|
|
61
|
+
|
|
62
|
+
- **Claude Code**: Copy `.mcp.json.example` to `.mcp.json` in project root
|
|
63
|
+
- **Cline**: Add MCP servers in VSCode settings (Extensions > Cline > MCP Servers)
|
|
64
|
+
- **Continue**: Add to `.continue/config.json` under `mcpServers`
|
|
65
|
+
- **Cursor**: Check Cursor Settings > MCP for setup
|
|
66
|
+
- **Your agent**: If MCP-capable, configure using the example file
|
|
67
|
+
|
|
68
|
+
**Agent instructions:**
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
If you support MCP and don't have these servers configured:
|
|
72
|
+
1. Read .mcp.json.example to see the configuration
|
|
73
|
+
2. Set up Context7 and grep.app based on your MCP implementation
|
|
74
|
+
3. Verify by testing: "Search grep.app for React hooks examples"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
See [docs/TOOLCHAIN.md](docs/TOOLCHAIN.md) for detailed MCP setup instructions.
|
|
74
78
|
|
|
75
79
|
---
|
|
76
80
|
|
package/bin/forge.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Forge v1.3
|
|
4
|
+
* Forge v1.4.3 - Universal AI Agent Workflow
|
|
5
5
|
* https://github.com/harshanandak/forge
|
|
6
6
|
*
|
|
7
7
|
* Usage:
|
|
@@ -1458,13 +1458,49 @@ function showBanner(subtitle = 'Universal AI Agent Workflow') {
|
|
|
1458
1458
|
console.log(' ██╔══╝ ██║ ██║██╔══██╗██║ ██║██╔══╝ ');
|
|
1459
1459
|
console.log(' ██║ ╚██████╔╝██║ ██║╚██████╔╝███████╗');
|
|
1460
1460
|
console.log(' ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝');
|
|
1461
|
-
console.log(' v1.
|
|
1461
|
+
console.log(' v1.4.4');
|
|
1462
1462
|
console.log('');
|
|
1463
1463
|
if (subtitle) {
|
|
1464
1464
|
console.log(` ${subtitle}`);
|
|
1465
1465
|
}
|
|
1466
1466
|
}
|
|
1467
1467
|
|
|
1468
|
+
// Setup core documentation and directories
|
|
1469
|
+
function setupCoreDocs() {
|
|
1470
|
+
// Create core directories
|
|
1471
|
+
ensureDir('docs/planning');
|
|
1472
|
+
ensureDir('docs/research');
|
|
1473
|
+
|
|
1474
|
+
// Copy WORKFLOW.md
|
|
1475
|
+
const workflowSrc = path.join(packageDir, 'docs/WORKFLOW.md');
|
|
1476
|
+
if (copyFile(workflowSrc, 'docs/WORKFLOW.md')) {
|
|
1477
|
+
console.log(' Created: docs/WORKFLOW.md');
|
|
1478
|
+
}
|
|
1479
|
+
|
|
1480
|
+
// Copy research TEMPLATE.md
|
|
1481
|
+
const templateSrc = path.join(packageDir, 'docs/research/TEMPLATE.md');
|
|
1482
|
+
if (copyFile(templateSrc, 'docs/research/TEMPLATE.md')) {
|
|
1483
|
+
console.log(' Created: docs/research/TEMPLATE.md');
|
|
1484
|
+
}
|
|
1485
|
+
|
|
1486
|
+
// Create PROGRESS.md if not exists
|
|
1487
|
+
const progressPath = path.join(projectRoot, 'docs/planning/PROGRESS.md');
|
|
1488
|
+
if (!fs.existsSync(progressPath)) {
|
|
1489
|
+
writeFile('docs/planning/PROGRESS.md', `# Project Progress
|
|
1490
|
+
|
|
1491
|
+
## Current Focus
|
|
1492
|
+
<!-- What you're working on -->
|
|
1493
|
+
|
|
1494
|
+
## Completed
|
|
1495
|
+
<!-- Completed features -->
|
|
1496
|
+
|
|
1497
|
+
## Upcoming
|
|
1498
|
+
<!-- Next priorities -->
|
|
1499
|
+
`);
|
|
1500
|
+
console.log(' Created: docs/planning/PROGRESS.md');
|
|
1501
|
+
}
|
|
1502
|
+
}
|
|
1503
|
+
|
|
1468
1504
|
// Minimal installation (postinstall)
|
|
1469
1505
|
function minimalInstall() {
|
|
1470
1506
|
// Check if this looks like a project (has package.json)
|
|
@@ -1487,9 +1523,8 @@ function minimalInstall() {
|
|
|
1487
1523
|
showBanner();
|
|
1488
1524
|
console.log('');
|
|
1489
1525
|
|
|
1490
|
-
//
|
|
1491
|
-
|
|
1492
|
-
ensureDir('docs/research');
|
|
1526
|
+
// Setup core documentation
|
|
1527
|
+
setupCoreDocs();
|
|
1493
1528
|
|
|
1494
1529
|
// Copy AGENTS.md (only if not exists - preserve user customizations in minimal install)
|
|
1495
1530
|
const agentsPath = path.join(projectRoot, 'AGENTS.md');
|
|
@@ -1509,34 +1544,6 @@ function minimalInstall() {
|
|
|
1509
1544
|
}
|
|
1510
1545
|
}
|
|
1511
1546
|
|
|
1512
|
-
// Copy documentation
|
|
1513
|
-
const workflowSrc = path.join(packageDir, 'docs/WORKFLOW.md');
|
|
1514
|
-
if (copyFile(workflowSrc, 'docs/WORKFLOW.md')) {
|
|
1515
|
-
console.log(' Created: docs/WORKFLOW.md');
|
|
1516
|
-
}
|
|
1517
|
-
|
|
1518
|
-
const templateSrc = path.join(packageDir, 'docs/research/TEMPLATE.md');
|
|
1519
|
-
if (copyFile(templateSrc, 'docs/research/TEMPLATE.md')) {
|
|
1520
|
-
console.log(' Created: docs/research/TEMPLATE.md');
|
|
1521
|
-
}
|
|
1522
|
-
|
|
1523
|
-
// Create PROGRESS.md if not exists
|
|
1524
|
-
const progressPath = path.join(projectRoot, 'docs/planning/PROGRESS.md');
|
|
1525
|
-
if (!fs.existsSync(progressPath)) {
|
|
1526
|
-
writeFile('docs/planning/PROGRESS.md', `# Project Progress
|
|
1527
|
-
|
|
1528
|
-
## Current Focus
|
|
1529
|
-
<!-- What you're working on -->
|
|
1530
|
-
|
|
1531
|
-
## Completed
|
|
1532
|
-
<!-- Completed features -->
|
|
1533
|
-
|
|
1534
|
-
## Upcoming
|
|
1535
|
-
<!-- Next priorities -->
|
|
1536
|
-
`);
|
|
1537
|
-
console.log(' Created: docs/planning/PROGRESS.md');
|
|
1538
|
-
}
|
|
1539
|
-
|
|
1540
1547
|
console.log('');
|
|
1541
1548
|
console.log('Minimal installation complete!');
|
|
1542
1549
|
console.log('');
|
|
@@ -1897,6 +1904,11 @@ async function interactiveSetup() {
|
|
|
1897
1904
|
}
|
|
1898
1905
|
}
|
|
1899
1906
|
}
|
|
1907
|
+
console.log('');
|
|
1908
|
+
|
|
1909
|
+
// Setup core documentation
|
|
1910
|
+
setupCoreDocs();
|
|
1911
|
+
console.log('');
|
|
1900
1912
|
|
|
1901
1913
|
// Load Claude commands if needed
|
|
1902
1914
|
let claudeCommands = {};
|
|
@@ -1952,7 +1964,7 @@ async function interactiveSetup() {
|
|
|
1952
1964
|
// =============================================
|
|
1953
1965
|
console.log('');
|
|
1954
1966
|
console.log('==============================================');
|
|
1955
|
-
console.log(' Forge v1.3
|
|
1967
|
+
console.log(' Forge v1.4.3 Setup Complete!');
|
|
1956
1968
|
console.log('==============================================');
|
|
1957
1969
|
console.log('');
|
|
1958
1970
|
console.log('What\'s installed:');
|
|
@@ -2128,6 +2140,11 @@ async function quickSetup(selectedAgents, skipExternal) {
|
|
|
2128
2140
|
if (copyFile(agentsSrc, 'AGENTS.md')) {
|
|
2129
2141
|
console.log(' Created: AGENTS.md (universal standard)');
|
|
2130
2142
|
}
|
|
2143
|
+
console.log('');
|
|
2144
|
+
|
|
2145
|
+
// Setup core documentation
|
|
2146
|
+
setupCoreDocs();
|
|
2147
|
+
console.log('');
|
|
2131
2148
|
|
|
2132
2149
|
// Load Claude commands if needed
|
|
2133
2150
|
let claudeCommands = {};
|
|
@@ -2190,7 +2207,7 @@ async function quickSetup(selectedAgents, skipExternal) {
|
|
|
2190
2207
|
// Final summary
|
|
2191
2208
|
console.log('');
|
|
2192
2209
|
console.log('==============================================');
|
|
2193
|
-
console.log(' Forge v1.3
|
|
2210
|
+
console.log(' Forge v1.4.3 Quick Setup Complete!');
|
|
2194
2211
|
console.log('==============================================');
|
|
2195
2212
|
console.log('');
|
|
2196
2213
|
console.log('Next steps:');
|
|
@@ -2385,6 +2402,11 @@ async function interactiveSetupWithFlags(flags) {
|
|
|
2385
2402
|
}
|
|
2386
2403
|
}
|
|
2387
2404
|
}
|
|
2405
|
+
console.log('');
|
|
2406
|
+
|
|
2407
|
+
// Setup core documentation
|
|
2408
|
+
setupCoreDocs();
|
|
2409
|
+
console.log('');
|
|
2388
2410
|
|
|
2389
2411
|
// Load Claude commands if needed
|
|
2390
2412
|
let claudeCommands = {};
|
|
@@ -2445,7 +2467,7 @@ async function interactiveSetupWithFlags(flags) {
|
|
|
2445
2467
|
// =============================================
|
|
2446
2468
|
console.log('');
|
|
2447
2469
|
console.log('==============================================');
|
|
2448
|
-
console.log(' Forge v1.3
|
|
2470
|
+
console.log(' Forge v1.4.3 Setup Complete!');
|
|
2449
2471
|
console.log('==============================================');
|
|
2450
2472
|
console.log('');
|
|
2451
2473
|
console.log('What\'s installed:');
|
|
@@ -2581,6 +2603,11 @@ async function main() {
|
|
|
2581
2603
|
if (copyFile(agentsSrc, 'AGENTS.md')) {
|
|
2582
2604
|
console.log(' Created: AGENTS.md (universal standard)');
|
|
2583
2605
|
}
|
|
2606
|
+
console.log('');
|
|
2607
|
+
|
|
2608
|
+
// Setup core documentation
|
|
2609
|
+
setupCoreDocs();
|
|
2610
|
+
console.log('');
|
|
2584
2611
|
|
|
2585
2612
|
// Load Claude commands if needed
|
|
2586
2613
|
let claudeCommands = {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "forge-workflow",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.4",
|
|
4
4
|
"description": "9-stage TDD workflow for ALL AI coding agents (Claude, Cursor, Windsurf, Kilo, OpenCode, Copilot, Cline, Roo, Aider, Continue, Antigravity)",
|
|
5
5
|
"bin": {
|
|
6
6
|
"forge": "bin/forge.js"
|