forge-workflow 1.0.0 → 1.1.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/install.sh CHANGED
@@ -1,88 +1,1062 @@
1
1
  #!/bin/bash
2
- # Forge - 9-Stage TDD-First Workflow Installer
2
+ # Forge v1.1.0 - Universal AI Agent Workflow Installer
3
3
  # https://github.com/harshanandak/forge
4
+ #
5
+ # Interactive installer - select only the agents you use
6
+ #
7
+ # Usage:
8
+ # ./install.sh # Interactive mode
9
+ # ./install.sh --quick # Auto-select all agents, use defaults
10
+ # ./install.sh --skip-external # Skip external services configuration
4
11
 
5
12
  set -e
6
13
 
14
+ # ============================================
15
+ # PARSE CLI FLAGS
16
+ # ============================================
17
+ QUICK_MODE=false
18
+ SKIP_EXTERNAL=false
19
+ for arg in "$@"; do
20
+ case $arg in
21
+ --quick) QUICK_MODE=true ;;
22
+ --skip-external) SKIP_EXTERNAL=true ;;
23
+ --help|-h)
24
+ echo "Forge Installer"
25
+ echo ""
26
+ echo "Usage: ./install.sh [OPTIONS]"
27
+ echo ""
28
+ echo "Options:"
29
+ echo " --quick Auto-select all agents, use defaults for services"
30
+ echo " --skip-external Skip external services configuration"
31
+ echo " --help, -h Show this help message"
32
+ exit 0
33
+ ;;
34
+ esac
35
+ done
36
+
37
+ # Cleanup on error
38
+ cleanup_on_error() {
39
+ echo -e "\n${RED}Installation failed. Partial files may remain.${NC}"
40
+ echo "Run 'rm -rf .claude .cursor .windsurf .kilocode .opencode .continue .github .agent .roo .env.local' to clean up."
41
+ }
42
+ trap cleanup_on_error ERR
43
+
7
44
  REPO="harshanandak/forge"
8
45
  BRANCH="main"
9
46
  BASE_URL="https://raw.githubusercontent.com/$REPO/$BRANCH"
10
47
 
48
+ # Colors for output
49
+ RED='\033[0;31m'
50
+ GREEN='\033[0;32m'
51
+ YELLOW='\033[1;33m'
52
+ BLUE='\033[0;34m'
53
+ CYAN='\033[0;36m'
54
+ NC='\033[0m' # No Color
55
+
11
56
  echo ""
12
- echo " ___ "
13
- echo " | _|___ _ _ ___ ___ "
14
- echo " | _| . || '_|| . || -_|"
15
- echo " |_| |___||_| |_ ||___|"
16
- echo " |___| "
57
+ echo -e "${CYAN} ███████╗ ██████╗ ██████╗ ██████╗ ███████╗${NC}"
58
+ echo -e "${CYAN} ██╔════╝██╔═══██╗██╔══██╗██╔════╝ ██╔════╝${NC}"
59
+ echo -e "${CYAN} █████╗ ██║ ██║██████╔╝██║ ███╗█████╗ ${NC}"
60
+ echo -e "${CYAN} ██╔══╝ ██║ ██║██╔══██╗██║ ██║██╔══╝ ${NC}"
61
+ echo -e "${CYAN} ██║ ╚██████╔╝██║ ██║╚██████╔╝███████╗${NC}"
62
+ echo -e "${CYAN} ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝${NC}"
63
+ echo -e "${GREEN} v1.1.0${NC}"
17
64
  echo ""
18
- echo "Installing Forge - 9-Stage TDD-First Workflow..."
65
+ echo -e "${GREEN} Universal AI Agent Workflow${NC}"
19
66
  echo ""
20
67
 
21
- # Create directories
22
- echo "Creating directories..."
23
- mkdir -p .claude/commands
24
- mkdir -p .claude/rules
25
- mkdir -p .claude/skills/parallel-ai
26
- mkdir -p .claude/skills/sonarcloud
27
- mkdir -p .claude/scripts
28
- mkdir -p docs/research
29
-
30
- # Download commands
31
- echo "Downloading workflow commands..."
32
- for cmd in status research plan dev check ship review merge verify; do
33
- curl -fsSL "$BASE_URL/.claude/commands/$cmd.md" -o ".claude/commands/$cmd.md"
34
- echo " ✓ $cmd.md"
35
- done
68
+ # ============================================
69
+ # PREREQUISITE VALIDATION
70
+ # ============================================
71
+ echo -e "${YELLOW}Checking prerequisites...${NC}"
36
72
 
37
- # Download rules
38
- echo "Downloading workflow rules..."
39
- curl -fsSL "$BASE_URL/.claude/rules/workflow.md" -o ".claude/rules/workflow.md"
40
- echo " ✓ workflow.md"
73
+ PREREQ_WARNINGS=()
74
+ PREREQ_ERRORS=()
75
+ PKG_MANAGER="npm"
41
76
 
42
- # Download skills
43
- echo "Downloading skills..."
44
- for file in SKILL.md README.md api-reference.md quick-reference.md research-workflows.md; do
45
- curl -fsSL "$BASE_URL/.claude/skills/parallel-ai/$file" -o ".claude/skills/parallel-ai/$file" 2>/dev/null || true
46
- done
47
- echo " ✓ parallel-ai"
77
+ # Required: Git
78
+ if ! command -v git &> /dev/null; then
79
+ PREREQ_ERRORS+=("git - Install from https://git-scm.com")
80
+ else
81
+ echo -e " ${GREEN}✓${NC} git $(git --version | cut -d' ' -f3)"
82
+ fi
83
+
84
+ # Required: GitHub CLI
85
+ if ! command -v gh &> /dev/null; then
86
+ PREREQ_ERRORS+=("gh (GitHub CLI) - Install from https://cli.github.com")
87
+ else
88
+ echo -e " ${GREEN}✓${NC} gh $(gh --version | head -1 | cut -d' ' -f3)"
89
+ # Check if authenticated
90
+ if ! gh auth status &> /dev/null 2>&1; then
91
+ PREREQ_WARNINGS+=("GitHub CLI not authenticated. Run: gh auth login")
92
+ fi
93
+ fi
94
+
95
+ # Required: Node.js 20+
96
+ if command -v node &> /dev/null; then
97
+ node_version=$(node -v | cut -d'v' -f2 | cut -d'.' -f1)
98
+ if [ "$node_version" -lt 20 ]; then
99
+ PREREQ_ERRORS+=("Node.js 20+ required (current: $(node -v))")
100
+ else
101
+ echo -e " ${GREEN}✓${NC} node $(node -v)"
102
+ fi
103
+ else
104
+ PREREQ_ERRORS+=("Node.js 20+ - Install from https://nodejs.org")
105
+ fi
106
+
107
+ # Required: curl (for downloading files)
108
+ if ! command -v curl &> /dev/null; then
109
+ PREREQ_ERRORS+=("curl - Install from your package manager (apt install curl, brew install curl)")
110
+ else
111
+ echo -e " ${GREEN}✓${NC} curl $(curl --version | head -1 | cut -d' ' -f2)"
112
+ fi
113
+
114
+ # Detect package manager
115
+ if command -v bun &> /dev/null; then
116
+ PKG_MANAGER="bun"
117
+ echo -e " ${GREEN}✓${NC} bun $(bun --version) (detected as package manager)"
118
+ elif command -v pnpm &> /dev/null; then
119
+ PKG_MANAGER="pnpm"
120
+ echo -e " ${GREEN}✓${NC} pnpm $(pnpm --version) (detected as package manager)"
121
+ elif command -v yarn &> /dev/null; then
122
+ PKG_MANAGER="yarn"
123
+ echo -e " ${GREEN}✓${NC} yarn $(yarn --version) (detected as package manager)"
124
+ elif command -v npm &> /dev/null; then
125
+ PKG_MANAGER="npm"
126
+ echo -e " ${GREEN}✓${NC} npm $(npm --version) (detected as package manager)"
127
+ else
128
+ PREREQ_ERRORS+=("npm, yarn, pnpm, or bun - Install a package manager")
129
+ fi
130
+
131
+ # Also detect from lock files if present
132
+ if [ -f "bun.lockb" ] || [ -f "bun.lock" ]; then
133
+ PKG_MANAGER="bun"
134
+ elif [ -f "pnpm-lock.yaml" ]; then
135
+ PKG_MANAGER="pnpm"
136
+ elif [ -f "yarn.lock" ]; then
137
+ PKG_MANAGER="yarn"
138
+ fi
139
+
140
+ # Show errors
141
+ if [ ${#PREREQ_ERRORS[@]} -gt 0 ]; then
142
+ echo ""
143
+ echo -e "${RED}❌ Missing required tools:${NC}"
144
+ for err in "${PREREQ_ERRORS[@]}"; do
145
+ echo -e " ${RED}-${NC} $err"
146
+ done
147
+ echo ""
148
+ echo "Please install missing tools and try again."
149
+ exit 1
150
+ fi
151
+
152
+ # Show warnings
153
+ if [ ${#PREREQ_WARNINGS[@]} -gt 0 ]; then
154
+ echo ""
155
+ echo -e "${YELLOW}⚠️ Warnings:${NC}"
156
+ for warn in "${PREREQ_WARNINGS[@]}"; do
157
+ echo -e " ${YELLOW}-${NC} $warn"
158
+ done
159
+ fi
160
+
161
+ echo ""
162
+ echo -e " ${GREEN}Package manager: $PKG_MANAGER${NC}"
163
+ echo ""
164
+
165
+ # ============================================
166
+ # DETECT EXISTING INSTALLATION
167
+ # ============================================
168
+ EXISTING_INSTALL=false
169
+ AGENTS_BACKUP_CREATED=false
170
+ if [ -f "AGENTS.md" ] && [ -d ".claude/commands" ]; then
171
+ EXISTING_INSTALL=true
172
+ echo -e "${YELLOW}Found existing Forge installation.${NC}"
173
+ echo ""
174
+ fi
48
175
 
49
- curl -fsSL "$BASE_URL/.claude/skills/sonarcloud/SKILL.md" -o ".claude/skills/sonarcloud/SKILL.md" 2>/dev/null || true
50
- echo " ✓ sonarcloud"
176
+ # ============================================
177
+ # AGENT SELECTION
178
+ # ============================================
51
179
 
52
- # Download scripts
53
- echo "Downloading scripts..."
54
- curl -fsSL "$BASE_URL/.claude/scripts/load-env.sh" -o ".claude/scripts/load-env.sh"
55
- chmod +x .claude/scripts/load-env.sh
56
- echo " ✓ load-env.sh"
180
+ # Parse selection
181
+ INSTALL_CLAUDE=false
182
+ INSTALL_CURSOR=false
183
+ INSTALL_WINDSURF=false
184
+ INSTALL_KILOCODE=false
185
+ INSTALL_ANTIGRAVITY=false
186
+ INSTALL_COPILOT=false
187
+ INSTALL_CONTINUE=false
188
+ INSTALL_OPENCODE=false
189
+ INSTALL_CLINE=false
190
+ INSTALL_ROO=false
191
+ INSTALL_AIDER=false
192
+
193
+ # Track Context7 MCP auto-installation
194
+ CONTEXT7_INSTALLED_CLAUDE=false
195
+ CONTEXT7_INSTALLED_CONTINUE=false
196
+
197
+ if [ "$QUICK_MODE" = true ]; then
198
+ # Quick mode: auto-select all agents
199
+ echo -e "${YELLOW}Quick mode: Installing for all agents...${NC}"
200
+ INSTALL_CLAUDE=true
201
+ INSTALL_CURSOR=true
202
+ INSTALL_WINDSURF=true
203
+ INSTALL_KILOCODE=true
204
+ INSTALL_ANTIGRAVITY=true
205
+ INSTALL_COPILOT=true
206
+ INSTALL_CONTINUE=true
207
+ INSTALL_OPENCODE=true
208
+ INSTALL_CLINE=true
209
+ INSTALL_ROO=true
210
+ INSTALL_AIDER=true
211
+ else
212
+ # Interactive mode: prompt user for selection
213
+ echo -e "${YELLOW}Which AI coding agents do you use?${NC}"
214
+ echo -e "${BLUE}(Enter numbers separated by spaces, or 'all' for everything)${NC}"
215
+ echo ""
216
+ echo " 1) Claude Code - Anthropic's CLI agent"
217
+ echo " 2) Cursor - AI-first code editor"
218
+ echo " 3) Windsurf - Codeium's agentic IDE"
219
+ echo " 4) Kilo Code - VS Code extension"
220
+ echo " 5) Google Antigravity - Google's agent IDE"
221
+ echo " 6) GitHub Copilot - GitHub's AI assistant"
222
+ echo " 7) Continue - Open-source AI assistant"
223
+ echo " 8) OpenCode - Open-source agent"
224
+ echo " 9) Cline - VS Code agent extension"
225
+ echo " 10) Roo Code - Cline fork with modes"
226
+ echo " 11) Aider - Terminal-based agent"
227
+ echo ""
228
+ echo -e " ${GREEN}all) Install for all agents${NC}"
229
+ echo ""
230
+
231
+ read -p "Your selection (e.g., '1 2 3' or 'all'): " selection
232
+
233
+ if [[ "$selection" == "all" ]]; then
234
+ INSTALL_CLAUDE=true
235
+ INSTALL_CURSOR=true
236
+ INSTALL_WINDSURF=true
237
+ INSTALL_KILOCODE=true
238
+ INSTALL_ANTIGRAVITY=true
239
+ INSTALL_COPILOT=true
240
+ INSTALL_CONTINUE=true
241
+ INSTALL_OPENCODE=true
242
+ INSTALL_CLINE=true
243
+ INSTALL_ROO=true
244
+ INSTALL_AIDER=true
245
+ else
246
+ for num in $selection; do
247
+ case $num in
248
+ 1) INSTALL_CLAUDE=true ;;
249
+ 2) INSTALL_CURSOR=true ;;
250
+ 3) INSTALL_WINDSURF=true ;;
251
+ 4) INSTALL_KILOCODE=true ;;
252
+ 5) INSTALL_ANTIGRAVITY=true ;;
253
+ 6) INSTALL_COPILOT=true ;;
254
+ 7) INSTALL_CONTINUE=true ;;
255
+ 8) INSTALL_OPENCODE=true ;;
256
+ 9) INSTALL_CLINE=true ;;
257
+ 10) INSTALL_ROO=true ;;
258
+ 11) INSTALL_AIDER=true ;;
259
+ esac
260
+ done
261
+ fi
262
+ fi
263
+
264
+ echo ""
265
+ echo -e "${BLUE}Installing Forge workflow...${NC}"
266
+ echo ""
267
+
268
+ # ============================================
269
+ # ALWAYS CREATE: Core directories and AGENTS.md
270
+ # ============================================
271
+ echo "Creating core directories..."
272
+ mkdir -p docs/planning docs/research
273
+
274
+ # Backup existing AGENTS.md before overwriting
275
+ if [ -f "AGENTS.md" ]; then
276
+ cp AGENTS.md AGENTS.md.backup
277
+ AGENTS_BACKUP_CREATED=true
278
+ echo -e " ${YELLOW}Backed up: AGENTS.md -> AGENTS.md.backup${NC}"
279
+ fi
280
+
281
+ # Download universal AGENTS.md
282
+ echo "Downloading AGENTS.md (universal standard)..."
283
+ curl -fsSL "$BASE_URL/AGENTS.md" -o "AGENTS.md"
284
+ echo -e " ${GREEN}Created: AGENTS.md${NC}"
57
285
 
58
286
  # Download documentation
59
287
  echo "Downloading documentation..."
60
- curl -fsSL "$BASE_URL/docs/WORKFLOW.md" -o "docs/WORKFLOW.md"
61
- echo " WORKFLOW.md"
288
+ curl -fsSL "$BASE_URL/docs/WORKFLOW.md" -o "docs/WORKFLOW.md" 2>/dev/null || true
289
+ curl -fsSL "$BASE_URL/docs/research/TEMPLATE.md" -o "docs/research/TEMPLATE.md" 2>/dev/null || true
290
+
291
+ # Create PROGRESS.md if not exists
292
+ if [ ! -f "docs/planning/PROGRESS.md" ]; then
293
+ cat > docs/planning/PROGRESS.md << 'EOF'
294
+ # Project Progress
295
+
296
+ ## Current Focus
297
+ <!-- What you're working on -->
298
+
299
+ ## Completed
300
+ <!-- Completed features -->
301
+
302
+ ## Upcoming
303
+ <!-- Next priorities -->
304
+ EOF
305
+ echo -e " ${GREEN}Created: docs/planning/PROGRESS.md${NC}"
306
+ fi
307
+
308
+ # ============================================
309
+ # HELPER FUNCTIONS
310
+ # ============================================
311
+
312
+ # Function to strip YAML frontmatter
313
+ strip_frontmatter() {
314
+ sed '1{/^---$/!q};1,/^---$/d;1,/^---$/d' "$1"
315
+ }
316
+
317
+ # Function to create symlink or copy (with proper error handling)
318
+ create_link() {
319
+ local source="$1"
320
+ local target="$2"
321
+ local target_dir
322
+ target_dir=$(dirname "$target")
323
+
324
+ # Create target directory if needed
325
+ if [ ! -d "$target_dir" ]; then
326
+ mkdir -p "$target_dir" 2>/dev/null || true
327
+ fi
328
+
329
+ # Remove existing file/link
330
+ rm -f "$target" 2>/dev/null || true
331
+
332
+ # Try symlink first, fallback to copy
333
+ if ln -s "$source" "$target" 2>/dev/null; then
334
+ echo -e " ${GREEN}Linked: $target -> $source${NC}"
335
+ elif cp "$source" "$target" 2>/dev/null; then
336
+ echo -e " ${YELLOW}⚠ Copied (symlinks not supported): $target${NC}"
337
+ else
338
+ echo -e " ${RED}Failed: Could not link or copy $target${NC}"
339
+ fi
340
+ }
341
+
342
+ # Universal SKILL.md content
343
+ SKILL_CONTENT='---
344
+ name: forge-workflow
345
+ description: 9-stage TDD-first workflow for feature development. Use when building features, fixing bugs, or shipping PRs.
346
+ category: Development Workflow
347
+ tags: [tdd, workflow, pr, git, testing]
348
+ tools: [Bash, Read, Write, Edit, Grep, Glob]
349
+ ---
350
+
351
+ # Forge Workflow Skill
352
+
353
+ A TDD-first workflow for AI coding agents. Ship features with confidence.
354
+
355
+ ## When to Use
356
+
357
+ Automatically invoke this skill when the user wants to:
358
+ - Build a new feature
359
+ - Fix a bug
360
+ - Create a pull request
361
+ - Run the development workflow
362
+
363
+ ## 9 Stages
364
+
365
+ | Stage | Command | Description |
366
+ |-------|---------|-------------|
367
+ | 1 | `/status` | Check current context, active work, recent completions |
368
+ | 2 | `/research` | Deep research with web search, document to docs/research/ |
369
+ | 3 | `/plan` | Create implementation plan, branch, OpenSpec if strategic |
370
+ | 4 | `/dev` | TDD development (RED-GREEN-REFACTOR cycles) |
371
+ | 5 | `/check` | Validation (type/lint/security/tests) |
372
+ | 6 | `/ship` | Create PR with full documentation |
373
+ | 7 | `/review` | Address ALL PR feedback |
374
+ | 8 | `/merge` | Update docs, merge PR, cleanup |
375
+ | 9 | `/verify` | Final documentation verification |
376
+
377
+ ## Workflow Flow
378
+
379
+ ```
380
+ /status -> /research -> /plan -> /dev -> /check -> /ship -> /review -> /merge -> /verify
381
+ ```
382
+
383
+ ## Core Principles
384
+
385
+ - **TDD-First**: Write tests BEFORE implementation (RED-GREEN-REFACTOR)
386
+ - **Research-First**: Understand before building, document decisions
387
+ - **Security Built-In**: OWASP Top 10 analysis for every feature
388
+ - **Documentation Progressive**: Update at each stage, verify at end
389
+ '
390
+
391
+ # ============================================
392
+ # CLAUDE CODE
393
+ # ============================================
394
+ if [ "$INSTALL_CLAUDE" = true ]; then
395
+ echo ""
396
+ echo -e "${CYAN}Setting up Claude Code...${NC}"
397
+
398
+ mkdir -p .claude/commands .claude/rules .claude/skills/forge-workflow .claude/scripts
399
+
400
+ # Download commands
401
+ for cmd in status research plan dev check ship review merge verify; do
402
+ curl -fsSL "$BASE_URL/.claude/commands/$cmd.md" -o ".claude/commands/$cmd.md" 2>/dev/null || true
403
+ done
404
+ echo -e " ${GREEN}Downloaded: 9 workflow commands${NC}"
405
+
406
+ # Download rules
407
+ curl -fsSL "$BASE_URL/.claude/rules/workflow.md" -o ".claude/rules/workflow.md" 2>/dev/null || true
408
+ echo -e " ${GREEN}Downloaded: workflow rules${NC}"
409
+
410
+ # Download scripts
411
+ curl -fsSL "$BASE_URL/.claude/scripts/load-env.sh" -o ".claude/scripts/load-env.sh" 2>/dev/null || true
412
+ chmod +x .claude/scripts/load-env.sh 2>/dev/null || true
413
+
414
+ # Create SKILL.md
415
+ echo "$SKILL_CONTENT" > .claude/skills/forge-workflow/SKILL.md
416
+ echo -e " ${GREEN}Created: forge-workflow skill${NC}"
417
+
418
+ # Create .mcp.json with Context7 MCP (auto-install for Claude Code)
419
+ if [ ! -f ".mcp.json" ]; then
420
+ cat > .mcp.json << 'MCP_EOF'
421
+ {
422
+ "mcpServers": {
423
+ "context7": {
424
+ "command": "npx",
425
+ "args": ["-y", "@upstash/context7-mcp@latest"]
426
+ }
427
+ }
428
+ }
429
+ MCP_EOF
430
+ echo -e " ${GREEN}Created: .mcp.json with Context7 MCP${NC}"
431
+ CONTEXT7_INSTALLED_CLAUDE=true
432
+ else
433
+ echo -e " ${YELLOW}Skipped: .mcp.json already exists${NC}"
434
+ fi
435
+
436
+ # Link CLAUDE.md -> AGENTS.md
437
+ create_link "AGENTS.md" "CLAUDE.md"
438
+ fi
439
+
440
+ # ============================================
441
+ # CURSOR
442
+ # ============================================
443
+ if [ "$INSTALL_CURSOR" = true ]; then
444
+ echo ""
445
+ echo -e "${CYAN}Setting up Cursor...${NC}"
446
+
447
+ mkdir -p .cursor/rules .cursor/skills/forge-workflow
448
+
449
+ # Create workflow.mdc rule
450
+ cat > .cursor/rules/forge-workflow.mdc << 'MDC_EOF'
451
+ ---
452
+ description: Forge 9-Stage TDD Workflow
453
+ alwaysApply: true
454
+ ---
455
+
456
+ # Forge Workflow Commands
457
+
458
+ Use these commands via `/command-name`:
459
+
460
+ 1. `/status` - Check current context, active work, recent completions
461
+ 2. `/research` - Deep research with web search, document to docs/research/
462
+ 3. `/plan` - Create implementation plan, branch, tracking
463
+ 4. `/dev` - TDD development (RED-GREEN-REFACTOR cycles)
464
+ 5. `/check` - Validation (type/lint/security/tests)
465
+ 6. `/ship` - Create PR with full documentation
466
+ 7. `/review` - Address ALL PR feedback
467
+ 8. `/merge` - Update docs, merge PR, cleanup
468
+ 9. `/verify` - Final documentation verification
469
+
470
+ See AGENTS.md for full workflow details.
471
+ MDC_EOF
472
+ echo -e " ${GREEN}Created: .cursor/rules/forge-workflow.mdc${NC}"
473
+
474
+ # Create SKILL.md
475
+ echo "$SKILL_CONTENT" > .cursor/skills/forge-workflow/SKILL.md
476
+ echo -e " ${GREEN}Created: forge-workflow skill${NC}"
477
+
478
+ # Link .cursorrules -> AGENTS.md
479
+ create_link "AGENTS.md" ".cursorrules"
480
+ fi
481
+
482
+ # ============================================
483
+ # WINDSURF
484
+ # ============================================
485
+ if [ "$INSTALL_WINDSURF" = true ]; then
486
+ echo ""
487
+ echo -e "${CYAN}Setting up Windsurf...${NC}"
488
+
489
+ mkdir -p .windsurf/workflows .windsurf/rules .windsurf/skills/forge-workflow
490
+
491
+ # Convert commands (strip YAML frontmatter)
492
+ if [ "$INSTALL_CLAUDE" = true ]; then
493
+ for cmd in .claude/commands/*.md; do
494
+ [ -f "$cmd" ] || continue
495
+ filename=$(basename "$cmd")
496
+ strip_frontmatter "$cmd" > ".windsurf/workflows/$filename" 2>/dev/null || cp "$cmd" ".windsurf/workflows/$filename"
497
+ done
498
+ echo -e " ${GREEN}Converted: 9 workflow commands${NC}"
62
499
 
63
- curl -fsSL "$BASE_URL/docs/research/TEMPLATE.md" -o "docs/research/TEMPLATE.md"
64
- echo " ✓ research/TEMPLATE.md"
500
+ # Copy rules
501
+ cp .claude/rules/workflow.md .windsurf/rules/workflow.md 2>/dev/null || true
502
+ fi
65
503
 
504
+ # Create SKILL.md
505
+ echo "$SKILL_CONTENT" > .windsurf/skills/forge-workflow/SKILL.md
506
+ echo -e " ${GREEN}Created: forge-workflow skill${NC}"
507
+
508
+ # Link .windsurfrules -> AGENTS.md
509
+ create_link "AGENTS.md" ".windsurfrules"
510
+ fi
511
+
512
+ # ============================================
513
+ # KILO CODE
514
+ # ============================================
515
+ if [ "$INSTALL_KILOCODE" = true ]; then
516
+ echo ""
517
+ echo -e "${CYAN}Setting up Kilo Code...${NC}"
518
+
519
+ mkdir -p .kilocode/workflows .kilocode/rules .kilocode/skills/forge-workflow
520
+
521
+ # Convert commands (strip YAML frontmatter)
522
+ if [ "$INSTALL_CLAUDE" = true ]; then
523
+ for cmd in .claude/commands/*.md; do
524
+ [ -f "$cmd" ] || continue
525
+ filename=$(basename "$cmd")
526
+ strip_frontmatter "$cmd" > ".kilocode/workflows/$filename" 2>/dev/null || cp "$cmd" ".kilocode/workflows/$filename"
527
+ done
528
+ echo -e " ${GREEN}Converted: 9 workflow commands${NC}"
529
+
530
+ # Copy rules
531
+ cp .claude/rules/workflow.md .kilocode/rules/workflow.md 2>/dev/null || true
532
+ fi
533
+
534
+ # Create SKILL.md
535
+ echo "$SKILL_CONTENT" > .kilocode/skills/forge-workflow/SKILL.md
536
+ echo -e " ${GREEN}Created: forge-workflow skill${NC}"
537
+ fi
538
+
539
+ # ============================================
540
+ # GOOGLE ANTIGRAVITY
541
+ # ============================================
542
+ if [ "$INSTALL_ANTIGRAVITY" = true ]; then
543
+ echo ""
544
+ echo -e "${CYAN}Setting up Google Antigravity...${NC}"
545
+
546
+ mkdir -p .agent/workflows .agent/rules .agent/skills/forge-workflow
547
+
548
+ # Convert commands (strip YAML frontmatter)
549
+ if [ "$INSTALL_CLAUDE" = true ]; then
550
+ for cmd in .claude/commands/*.md; do
551
+ [ -f "$cmd" ] || continue
552
+ filename=$(basename "$cmd")
553
+ strip_frontmatter "$cmd" > ".agent/workflows/$filename" 2>/dev/null || cp "$cmd" ".agent/workflows/$filename"
554
+ done
555
+ echo -e " ${GREEN}Converted: 9 workflow commands${NC}"
556
+
557
+ # Copy rules
558
+ cp .claude/rules/workflow.md .agent/rules/workflow.md 2>/dev/null || true
559
+ fi
560
+
561
+ # Create SKILL.md
562
+ echo "$SKILL_CONTENT" > .agent/skills/forge-workflow/SKILL.md
563
+ echo -e " ${GREEN}Created: forge-workflow skill${NC}"
564
+
565
+ # Link GEMINI.md -> AGENTS.md
566
+ create_link "AGENTS.md" "GEMINI.md"
567
+ fi
568
+
569
+ # ============================================
570
+ # GITHUB COPILOT
571
+ # ============================================
572
+ if [ "$INSTALL_COPILOT" = true ]; then
573
+ echo ""
574
+ echo -e "${CYAN}Setting up GitHub Copilot...${NC}"
575
+
576
+ mkdir -p .github/prompts .github/instructions
577
+
578
+ # Convert commands to .prompt.md
579
+ if [ "$INSTALL_CLAUDE" = true ]; then
580
+ for cmd in .claude/commands/*.md; do
581
+ [ -f "$cmd" ] || continue
582
+ basename_noext=$(basename "$cmd" .md)
583
+ filename="${basename_noext}.prompt.md"
584
+ strip_frontmatter "$cmd" > ".github/prompts/$filename" 2>/dev/null || cp "$cmd" ".github/prompts/$filename"
585
+ done
586
+ echo -e " ${GREEN}Converted: 9 workflow prompts${NC}"
587
+ fi
588
+
589
+ # Link copilot-instructions.md -> AGENTS.md
590
+ create_link "AGENTS.md" ".github/copilot-instructions.md"
591
+ fi
592
+
593
+ # ============================================
594
+ # CONTINUE
595
+ # ============================================
596
+ if [ "$INSTALL_CONTINUE" = true ]; then
597
+ echo ""
598
+ echo -e "${CYAN}Setting up Continue...${NC}"
599
+
600
+ mkdir -p .continue/prompts .continue/skills/forge-workflow
601
+
602
+ # Convert commands to .prompt with invokable: true
603
+ if [ "$INSTALL_CLAUDE" = true ]; then
604
+ for cmd in .claude/commands/*.md; do
605
+ [ -f "$cmd" ] || continue
606
+ basename_noext=$(basename "$cmd" .md)
607
+ filename="${basename_noext}.prompt"
608
+ {
609
+ echo "---"
610
+ echo "name: $basename_noext"
611
+ echo "description: Forge workflow command - $basename_noext"
612
+ echo "invokable: true"
613
+ echo "---"
614
+ echo ""
615
+ strip_frontmatter "$cmd" 2>/dev/null || cat "$cmd"
616
+ } > ".continue/prompts/$filename"
617
+ done
618
+ echo -e " ${GREEN}Converted: 9 workflow prompts${NC}"
619
+ fi
620
+
621
+ # Create SKILL.md
622
+ echo "$SKILL_CONTENT" > .continue/skills/forge-workflow/SKILL.md
623
+ echo -e " ${GREEN}Created: forge-workflow skill${NC}"
624
+
625
+ # Create config.yaml with Context7 MCP (auto-install for Continue)
626
+ if [ ! -f ".continue/config.yaml" ]; then
627
+ cat > .continue/config.yaml << 'CONTINUE_EOF'
628
+ # Continue Configuration
629
+ # https://docs.continue.dev/customize/deep-dives/configuration
630
+
631
+ name: Forge Workflow
632
+ version: "1.0"
633
+
634
+ # MCP Servers for enhanced capabilities
635
+ mcpServers:
636
+ - name: context7
637
+ command: npx
638
+ args:
639
+ - "-y"
640
+ - "@upstash/context7-mcp@latest"
641
+
642
+ # Rules loaded from .continuerules
643
+ CONTINUE_EOF
644
+ echo -e " ${GREEN}Created: config.yaml with Context7 MCP${NC}"
645
+ CONTEXT7_INSTALLED_CONTINUE=true
646
+ else
647
+ echo -e " ${YELLOW}Skipped: config.yaml already exists${NC}"
648
+ fi
649
+ fi
650
+
651
+ # ============================================
652
+ # OPENCODE
653
+ # ============================================
654
+ if [ "$INSTALL_OPENCODE" = true ]; then
655
+ echo ""
656
+ echo -e "${CYAN}Setting up OpenCode...${NC}"
657
+
658
+ mkdir -p .opencode/commands .opencode/skills/forge-workflow
659
+
660
+ # Copy commands as-is (same YAML format)
661
+ if [ "$INSTALL_CLAUDE" = true ]; then
662
+ cp .claude/commands/*.md .opencode/commands/ 2>/dev/null || true
663
+ echo -e " ${GREEN}Copied: 9 workflow commands${NC}"
664
+ fi
665
+
666
+ # Create SKILL.md
667
+ echo "$SKILL_CONTENT" > .opencode/skills/forge-workflow/SKILL.md
668
+ echo -e " ${GREEN}Created: forge-workflow skill${NC}"
669
+ fi
670
+
671
+ # ============================================
672
+ # CLINE
673
+ # ============================================
674
+ if [ "$INSTALL_CLINE" = true ]; then
675
+ echo ""
676
+ echo -e "${CYAN}Setting up Cline...${NC}"
677
+
678
+ mkdir -p .cline/skills/forge-workflow
679
+
680
+ # Create SKILL.md
681
+ echo "$SKILL_CONTENT" > .cline/skills/forge-workflow/SKILL.md
682
+ echo -e " ${GREEN}Created: forge-workflow skill${NC}"
683
+
684
+ # Link .clinerules -> AGENTS.md
685
+ create_link "AGENTS.md" ".clinerules"
686
+ fi
687
+
688
+ # ============================================
689
+ # ROO CODE
690
+ # ============================================
691
+ if [ "$INSTALL_ROO" = true ]; then
692
+ echo ""
693
+ echo -e "${CYAN}Setting up Roo Code...${NC}"
694
+
695
+ mkdir -p .roo/commands
696
+
697
+ # Convert commands (strip YAML frontmatter)
698
+ if [ "$INSTALL_CLAUDE" = true ]; then
699
+ for cmd in .claude/commands/*.md; do
700
+ [ -f "$cmd" ] || continue
701
+ filename=$(basename "$cmd")
702
+ strip_frontmatter "$cmd" > ".roo/commands/$filename" 2>/dev/null || cp "$cmd" ".roo/commands/$filename"
703
+ done
704
+ echo -e " ${GREEN}Converted: 9 workflow commands${NC}"
705
+ fi
706
+
707
+ # Link .clinerules -> AGENTS.md (Roo uses same as Cline)
708
+ if [ ! -f ".clinerules" ]; then
709
+ create_link "AGENTS.md" ".clinerules"
710
+ fi
711
+ fi
712
+
713
+ # ============================================
714
+ # AIDER
715
+ # ============================================
716
+ if [ "$INSTALL_AIDER" = true ]; then
717
+ echo ""
718
+ echo -e "${CYAN}Setting up Aider...${NC}"
719
+
720
+ # Aider uses AGENTS.md via config
721
+ # Create .aider.conf.yml if not exists
722
+ if [ ! -f ".aider.conf.yml" ]; then
723
+ cat > .aider.conf.yml << 'EOF'
724
+ # Aider configuration
725
+ # Read AGENTS.md for workflow instructions
726
+ read:
727
+ - AGENTS.md
728
+ - docs/WORKFLOW.md
729
+ EOF
730
+ echo -e " ${GREEN}Created: .aider.conf.yml${NC}"
731
+ else
732
+ echo -e " ${YELLOW}Skipped: .aider.conf.yml already exists${NC}"
733
+ echo -e " ${YELLOW}Add 'read: [AGENTS.md]' to your config manually${NC}"
734
+ fi
735
+ fi
736
+
737
+ # ============================================
738
+ # EXTERNAL SERVICES CONFIGURATION
739
+ # ============================================
740
+
741
+ # Skip external services if flag is set
742
+ if [ "$SKIP_EXTERNAL" = true ]; then
743
+ echo ""
744
+ echo -e "${YELLOW}Skipping external services configuration (--skip-external)${NC}"
745
+ echo "You can configure them later by editing .env.local"
746
+ configure_services="n"
747
+ elif [ "$QUICK_MODE" = true ]; then
748
+ # Quick mode: use defaults without prompting
749
+ echo ""
750
+ echo -e "${YELLOW}Quick mode: Using default service configuration...${NC}"
751
+ configure_services="y"
752
+ else
753
+ echo ""
754
+ echo -e "${YELLOW}=============================================="
755
+ echo -e " EXTERNAL SERVICES (Optional)"
756
+ echo -e "==============================================${NC}"
757
+ echo ""
758
+ echo "Would you like to configure external services?"
759
+ echo "(You can also add them later to .env.local)"
760
+ echo ""
761
+ read -p "Configure external services? (y/n): " configure_services
762
+ fi
763
+
764
+ if [[ "$configure_services" == "y" || "$configure_services" == "Y" || "$configure_services" == "yes" ]]; then
765
+
766
+ # Initialize .env.local with header if new
767
+ if [ ! -f ".env.local" ]; then
768
+ cat > .env.local << 'ENV_HEADER'
769
+ # Forge Workflow Configuration
770
+ # Generated by install.sh
771
+
772
+ ENV_HEADER
773
+ fi
774
+
775
+ # ============================================
776
+ # CODE REVIEW TOOL SELECTION
777
+ # ============================================
778
+ if [ "$QUICK_MODE" = true ]; then
779
+ # Quick mode: use default (option 1)
780
+ code_review_choice=1
781
+ else
782
+ echo ""
783
+ echo -e "${CYAN}Code Review Tool${NC}"
784
+ echo "Select your code review integration:"
785
+ echo ""
786
+ echo -e " ${GREEN}1)${NC} GitHub Code Quality (FREE, built-in) ${GREEN}[RECOMMENDED]${NC}"
787
+ echo " Zero setup - uses GitHub's built-in code quality features"
788
+ echo ""
789
+ echo -e " ${GREEN}2)${NC} CodeRabbit (FREE for open source)"
790
+ echo " AI-powered reviews - install GitHub App at https://coderabbit.ai"
791
+ echo ""
792
+ echo " 3) Greptile (Paid - \$99+/mo)"
793
+ echo " Enterprise code review - https://greptile.com"
794
+ echo ""
795
+ echo " 4) Skip code review integration"
796
+ echo ""
797
+ read -p "Select [1]: " code_review_choice
798
+ code_review_choice=${code_review_choice:-1}
799
+ fi
800
+
801
+ case $code_review_choice in
802
+ 1)
803
+ echo "CODE_REVIEW_TOOL=github-code-quality" >> .env.local
804
+ echo -e " ${GREEN}✓${NC} Using GitHub Code Quality (FREE)"
805
+ ;;
806
+ 2)
807
+ echo "CODE_REVIEW_TOOL=coderabbit" >> .env.local
808
+ echo "# CodeRabbit: Install GitHub App at https://coderabbit.ai" >> .env.local
809
+ echo -e " ${GREEN}✓${NC} Using CodeRabbit - Install the GitHub App to activate"
810
+ echo -e " ${BLUE}https://coderabbit.ai${NC}"
811
+ ;;
812
+ 3)
813
+ echo ""
814
+ read -s -p " Enter Greptile API key: " greptile_key
815
+ echo ""
816
+ if [ -n "$greptile_key" ]; then
817
+ echo "CODE_REVIEW_TOOL=greptile" >> .env.local
818
+ echo "GREPTILE_API_KEY=$greptile_key" >> .env.local
819
+ echo -e " ${GREEN}✓${NC} Greptile configured"
820
+ else
821
+ echo "CODE_REVIEW_TOOL=none" >> .env.local
822
+ echo -e " ${YELLOW}Skipped${NC} - No API key provided"
823
+ fi
824
+ ;;
825
+ 4|*)
826
+ echo "CODE_REVIEW_TOOL=none" >> .env.local
827
+ echo -e " ${YELLOW}Skipped${NC} code review integration"
828
+ ;;
829
+ esac
830
+
831
+ # ============================================
832
+ # CODE QUALITY TOOL SELECTION
833
+ # ============================================
834
+ if [ "$QUICK_MODE" = true ]; then
835
+ # Quick mode: use default (option 1)
836
+ code_quality_choice=1
837
+ else
838
+ echo ""
839
+ echo -e "${CYAN}Code Quality Tool${NC}"
840
+ echo "Select your code quality/security scanner:"
841
+ echo ""
842
+ echo -e " ${GREEN}1)${NC} ESLint only (FREE, built-in) ${GREEN}[RECOMMENDED]${NC}"
843
+ echo " No external server required - uses project's linting"
844
+ echo ""
845
+ echo " 2) SonarCloud (50k LoC free, cloud-hosted)"
846
+ echo " Get token: https://sonarcloud.io/account/security"
847
+ echo ""
848
+ echo " 3) SonarQube Community (FREE, self-hosted, unlimited LoC)"
849
+ echo " Run: docker run -d --name sonarqube -p 9000:9000 sonarqube:community"
850
+ echo ""
851
+ echo " 4) Skip code quality integration"
852
+ echo ""
853
+ read -p "Select [1]: " code_quality_choice
854
+ code_quality_choice=${code_quality_choice:-1}
855
+ fi
856
+
857
+ case $code_quality_choice in
858
+ 1)
859
+ echo "CODE_QUALITY_TOOL=eslint" >> .env.local
860
+ echo -e " ${GREEN}✓${NC} Using ESLint (built-in)"
861
+ ;;
862
+ 2)
863
+ echo ""
864
+ read -s -p " Enter SonarCloud token: " sonar_token
865
+ echo ""
866
+ read -p " Enter SonarCloud organization: " sonar_org
867
+ read -p " Enter SonarCloud project key: " sonar_project
868
+ if [ -n "$sonar_token" ]; then
869
+ echo "CODE_QUALITY_TOOL=sonarcloud" >> .env.local
870
+ echo "SONAR_TOKEN=$sonar_token" >> .env.local
871
+ [ -n "$sonar_org" ] && echo "SONAR_ORGANIZATION=$sonar_org" >> .env.local
872
+ [ -n "$sonar_project" ] && echo "SONAR_PROJECT_KEY=$sonar_project" >> .env.local
873
+ echo -e " ${GREEN}✓${NC} SonarCloud configured"
874
+ else
875
+ echo "CODE_QUALITY_TOOL=eslint" >> .env.local
876
+ echo -e " ${YELLOW}Falling back to ESLint${NC}"
877
+ fi
878
+ ;;
879
+ 3)
880
+ echo ""
881
+ echo -e " ${BLUE}SonarQube Self-Hosted Setup:${NC}"
882
+ echo " docker run -d --name sonarqube -p 9000:9000 sonarqube:community"
883
+ echo " Access: http://localhost:9000 (admin/admin)"
884
+ echo ""
885
+ read -p " Enter SonarQube URL [http://localhost:9000]: " sonarqube_url
886
+ sonarqube_url=${sonarqube_url:-http://localhost:9000}
887
+ read -s -p " Enter SonarQube token (optional): " sonarqube_token
888
+ echo ""
889
+
890
+ echo "CODE_QUALITY_TOOL=sonarqube" >> .env.local
891
+ echo "SONARQUBE_URL=$sonarqube_url" >> .env.local
892
+ [ -n "$sonarqube_token" ] && echo "SONARQUBE_TOKEN=$sonarqube_token" >> .env.local
893
+ echo "# SonarQube: docker run -d --name sonarqube -p 9000:9000 sonarqube:community" >> .env.local
894
+ echo -e " ${GREEN}✓${NC} SonarQube self-hosted configured"
895
+ ;;
896
+ 4|*)
897
+ echo "CODE_QUALITY_TOOL=none" >> .env.local
898
+ echo -e " ${YELLOW}Skipped${NC} code quality integration"
899
+ ;;
900
+ esac
901
+
902
+ # ============================================
903
+ # RESEARCH TOOL SELECTION
904
+ # ============================================
905
+ if [ "$QUICK_MODE" = true ]; then
906
+ # Quick mode: use default (option 1)
907
+ research_choice=1
908
+ else
909
+ echo ""
910
+ echo -e "${CYAN}Research Tool${NC}"
911
+ echo "Select your research tool for /research stage:"
912
+ echo ""
913
+ echo -e " ${GREEN}1)${NC} Manual research only ${GREEN}[DEFAULT]${NC}"
914
+ echo " Use web browser and codebase exploration"
915
+ echo ""
916
+ echo " 2) Parallel AI (comprehensive web research)"
917
+ echo " Get key: https://platform.parallel.ai"
918
+ echo ""
919
+ read -p "Select [1]: " research_choice
920
+ research_choice=${research_choice:-1}
921
+ fi
922
+
923
+ case $research_choice in
924
+ 2)
925
+ echo ""
926
+ read -s -p " Enter Parallel AI API key: " parallel_key
927
+ echo ""
928
+ if [ -n "$parallel_key" ]; then
929
+ echo "PARALLEL_API_KEY=$parallel_key" >> .env.local
930
+ echo -e " ${GREEN}✓${NC} Parallel AI configured"
931
+ else
932
+ echo -e " ${YELLOW}Skipped${NC} - No API key provided"
933
+ fi
934
+ ;;
935
+ 1|*)
936
+ echo -e " ${GREEN}✓${NC} Using manual research"
937
+ ;;
938
+ esac
939
+
940
+ # ============================================
941
+ # CONTEXT7 MCP - Library Documentation
942
+ # ============================================
943
+ echo ""
944
+ echo -e "${CYAN}Context7 MCP - Library Documentation${NC}"
945
+ echo "Provides up-to-date library docs for AI coding agents."
946
+ echo ""
947
+
948
+ # Show what was auto-installed
949
+ if [ "$CONTEXT7_INSTALLED_CLAUDE" = true ]; then
950
+ echo -e " ${GREEN}✓${NC} Auto-installed for Claude Code (.mcp.json)"
951
+ fi
952
+ if [ "$CONTEXT7_INSTALLED_CONTINUE" = true ]; then
953
+ echo -e " ${GREEN}✓${NC} Auto-installed for Continue (.continue/config.yaml)"
954
+ fi
955
+
956
+ # Check for agents that need manual setup
957
+ NEEDS_MANUAL_MCP=false
958
+ if [ "$INSTALL_CURSOR" = true ]; then
959
+ echo -e " ${YELLOW}!${NC} Cursor: Configure via Cursor Settings > MCP"
960
+ NEEDS_MANUAL_MCP=true
961
+ fi
962
+ if [ "$INSTALL_WINDSURF" = true ]; then
963
+ echo -e " ${YELLOW}!${NC} Windsurf: Install via Plugin Store"
964
+ NEEDS_MANUAL_MCP=true
965
+ fi
966
+ if [ "$INSTALL_CLINE" = true ]; then
967
+ echo -e " ${YELLOW}!${NC} Cline: Install via MCP Marketplace"
968
+ NEEDS_MANUAL_MCP=true
969
+ fi
970
+
971
+ if [ "$NEEDS_MANUAL_MCP" = true ]; then
972
+ echo ""
973
+ echo " Package: @upstash/context7-mcp@latest"
974
+ echo " Docs: https://github.com/upstash/context7-mcp"
975
+ fi
976
+
977
+ # ============================================
978
+ # Save package manager preference
979
+ # ============================================
980
+ echo "" >> .env.local
981
+ echo "# Package Manager (auto-detected)" >> .env.local
982
+ echo "PKG_MANAGER=$PKG_MANAGER" >> .env.local
983
+
984
+ # Add .env.local to .gitignore if not present
985
+ if [ -f ".gitignore" ]; then
986
+ if ! grep -q "\.env\.local" .gitignore; then
987
+ echo "" >> .gitignore
988
+ echo "# Local environment variables" >> .gitignore
989
+ echo ".env.local" >> .gitignore
990
+ fi
991
+ else
992
+ echo "# Local environment variables" > .gitignore
993
+ echo ".env.local" >> .gitignore
994
+ fi
995
+
996
+ echo ""
997
+ echo -e " ${GREEN}Configuration saved to .env.local${NC}"
998
+ echo -e " ${GREEN}Added .env.local to .gitignore${NC}"
999
+
1000
+ else
1001
+ echo ""
1002
+ echo "Skipping external services. You can configure them later by editing .env.local"
1003
+ fi
1004
+
1005
+ # ============================================
1006
+ # SUCCESS MESSAGE
1007
+ # ============================================
1008
+ echo ""
1009
+ echo -e "${GREEN}=============================================="
1010
+ echo -e " Forge v1.1.0 Setup Complete!"
1011
+ echo -e "==============================================${NC}"
1012
+ echo ""
1013
+
1014
+ # Show backup notification if created
1015
+ if [ "$AGENTS_BACKUP_CREATED" = true ]; then
1016
+ echo -e "${YELLOW}Note: Previous AGENTS.md backed up to AGENTS.md.backup${NC}"
1017
+ echo ""
1018
+ fi
1019
+
1020
+ # Show existing installation upgrade notice
1021
+ if [ "$EXISTING_INSTALL" = true ]; then
1022
+ echo -e "${GREEN}Existing installation upgraded successfully.${NC}"
1023
+ echo ""
1024
+ fi
1025
+
1026
+ # Show what was installed
1027
+ echo "Installed for:"
1028
+ [ "$INSTALL_CLAUDE" = true ] && echo -e " ${GREEN}*${NC} Claude Code (.claude/commands/)"
1029
+ [ "$INSTALL_CURSOR" = true ] && echo -e " ${GREEN}*${NC} Cursor (.cursor/rules/)"
1030
+ [ "$INSTALL_WINDSURF" = true ] && echo -e " ${GREEN}*${NC} Windsurf (.windsurf/workflows/)"
1031
+ [ "$INSTALL_KILOCODE" = true ] && echo -e " ${GREEN}*${NC} Kilo Code (.kilocode/workflows/)"
1032
+ [ "$INSTALL_ANTIGRAVITY" = true ] && echo -e " ${GREEN}*${NC} Google Antigravity (.agent/workflows/)"
1033
+ [ "$INSTALL_COPILOT" = true ] && echo -e " ${GREEN}*${NC} GitHub Copilot (.github/prompts/)"
1034
+ [ "$INSTALL_CONTINUE" = true ] && echo -e " ${GREEN}*${NC} Continue (.continue/prompts/)"
1035
+ [ "$INSTALL_OPENCODE" = true ] && echo -e " ${GREEN}*${NC} OpenCode (.opencode/commands/)"
1036
+ [ "$INSTALL_CLINE" = true ] && echo -e " ${GREEN}*${NC} Cline (.clinerules)"
1037
+ [ "$INSTALL_ROO" = true ] && echo -e " ${GREEN}*${NC} Roo Code (.roo/commands/)"
1038
+ [ "$INSTALL_AIDER" = true ] && echo -e " ${GREEN}*${NC} Aider (.aider.conf.yml)"
1039
+
1040
+ echo ""
1041
+ echo -e "${CYAN}=============================================="
1042
+ echo -e " GET STARTED"
1043
+ echo -e "==============================================${NC}"
1044
+ echo ""
1045
+ echo " /status - Check current context"
1046
+ echo " /research - Start researching a feature"
1047
+ echo " /plan - Create implementation plan"
1048
+ echo " /dev - Start TDD development"
1049
+ echo " /check - Run validation"
1050
+ echo " /ship - Create pull request"
1051
+ echo " /review - Address PR feedback"
1052
+ echo " /merge - Merge and cleanup"
1053
+ echo " /verify - Final documentation check"
66
1054
  echo ""
67
- echo " Forge installed successfully!"
1055
+ echo " Full guide: docs/WORKFLOW.md"
68
1056
  echo ""
69
- echo "┌─────────────────────────────────────────────────────────┐"
70
- echo "│ GET STARTED │"
71
- echo "├─────────────────────────────────────────────────────────┤"
72
- echo "│ /status - Check current context │"
73
- echo "│ /research - Start researching a feature │"
74
- echo "│ /plan - Create implementation plan │"
75
- echo "│ /dev - Start TDD development │"
76
- echo "│ /check - Run validation │"
77
- echo "│ /ship - Create pull request │"
78
- echo "│ /review - Address PR feedback │"
79
- echo "│ /merge - Merge and cleanup │"
80
- echo "│ /verify - Final documentation check │"
81
- echo "├─────────────────────────────────────────────────────────┤"
82
- echo "│ Full guide: docs/WORKFLOW.md │"
83
- echo "│ Research template: docs/research/TEMPLATE.md │"
84
- echo "└─────────────────────────────────────────────────────────┘"
1057
+ echo "Optional tools:"
1058
+ echo " - Beads: $PKG_MANAGER install -g @beads/bd && bd init"
1059
+ echo " - OpenSpec: $PKG_MANAGER install -g @fission-ai/openspec"
85
1060
  echo ""
86
- echo "Optional: Install Beads for issue tracking"
87
- echo " See: https://github.com/beads-ai/beads-cli"
1061
+ echo -e "${CYAN}Package manager detected: $PKG_MANAGER${NC}"
88
1062
  echo ""