proagents 1.6.21 → 1.6.22
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/settings.local.json +3 -1
- package/.proagents/.cursorrules +1 -1
- package/.proagents/.windsurfrules +1 -1
- package/.proagents/AGENTS.md +1 -1
- package/.proagents/AI_INSTRUCTIONS.md +29 -1
- package/.proagents/BOLT.md +1 -1
- package/.proagents/CLAUDE.md +1 -1
- package/.proagents/GEMINI.md +1 -1
- package/.proagents/KIRO.md +1 -1
- package/.proagents/LOVABLE.md +1 -1
- package/.proagents/REPLIT.md +1 -1
- package/.proagents/custom-commands.yaml +1 -1
- package/.proagents/proagents.config.yaml +55 -0
- package/.proagents/prompts/11-session-tracking.md +100 -0
- package/.proagents/prompts/13-commit.md +426 -0
- package/COMMANDS.md +19 -0
- package/lib/commands/init.js +5 -3
- package/package.json +1 -1
- package/.proagents/sessions/README.md +0 -5
|
@@ -175,7 +175,9 @@
|
|
|
175
175
|
"Bash(git -C /Users/prakash/Saeculum/AI/proAgents diff lib/commands/ai.js)",
|
|
176
176
|
"Bash(for f in .proagents/AI_INSTRUCTIONS.md .proagents/CLAUDE.md .proagents/AGENTS.md .proagents/.cursorrules .proagents/.windsurfrules .proagents/GEMINI.md .proagents/BOLT.md .proagents/REPLIT.md .proagents/LOVABLE.md .proagents/KIRO.md)",
|
|
177
177
|
"Bash(if grep -q \"AI directives\" \"$f\")",
|
|
178
|
-
"Bash(if grep -q \"ANY.*pa:.*command\" \"$f\")"
|
|
178
|
+
"Bash(if grep -q \"ANY.*pa:.*command\" \"$f\")",
|
|
179
|
+
"Bash(git worktree:*)",
|
|
180
|
+
"Bash(git worktree add:*)"
|
|
179
181
|
]
|
|
180
182
|
}
|
|
181
183
|
}
|
package/.proagents/.cursorrules
CHANGED
|
@@ -33,7 +33,7 @@ Commands that only READ, DISPLAY, or CONFIGURE:
|
|
|
33
33
|
- **Skip AFTER step** - No logging needed
|
|
34
34
|
|
|
35
35
|
**Examples:** `pa:help`, `pa:status`, `pa:progress`, `pa:history`,
|
|
36
|
-
`pa:ai-*`, `pa:config-*`, `pa:sync`
|
|
36
|
+
`pa:ai-*`, `pa:config-*`, `pa:sync`, `pa:commit`, `pa:commit-config`
|
|
37
37
|
|
|
38
38
|
### AFTER Workflow Commands (Auto-Log)
|
|
39
39
|
|
|
@@ -33,7 +33,7 @@ Commands that only READ, DISPLAY, or CONFIGURE:
|
|
|
33
33
|
- **Skip AFTER step** - No logging needed
|
|
34
34
|
|
|
35
35
|
**Examples:** `pa:help`, `pa:status`, `pa:progress`, `pa:history`,
|
|
36
|
-
`pa:ai-*`, `pa:config-*`, `pa:sync`
|
|
36
|
+
`pa:ai-*`, `pa:config-*`, `pa:sync`, `pa:commit`, `pa:commit-config`
|
|
37
37
|
|
|
38
38
|
### AFTER Workflow Commands (Auto-Log)
|
|
39
39
|
|
package/.proagents/AGENTS.md
CHANGED
|
@@ -37,7 +37,7 @@ Commands that only READ, DISPLAY, or CONFIGURE:
|
|
|
37
37
|
- **Skip AFTER step** - No logging needed
|
|
38
38
|
|
|
39
39
|
**Examples:** `pa:help`, `pa:status`, `pa:progress`, `pa:history`,
|
|
40
|
-
`pa:ai-*`, `pa:config-*`, `pa:sync`
|
|
40
|
+
`pa:ai-*`, `pa:config-*`, `pa:sync`, `pa:commit`, `pa:commit-config`
|
|
41
41
|
|
|
42
42
|
### AFTER Workflow Commands (Auto-Log)
|
|
43
43
|
|
|
@@ -35,7 +35,7 @@ Commands that only READ, DISPLAY, or CONFIGURE:
|
|
|
35
35
|
- **Skip AFTER step** - No logging needed
|
|
36
36
|
|
|
37
37
|
**Examples:** `pa:help`, `pa:status`, `pa:progress`, `pa:history`,
|
|
38
|
-
`pa:ai-*`, `pa:config-*`, `pa:sync`
|
|
38
|
+
`pa:ai-*`, `pa:config-*`, `pa:sync`, `pa:commit`, `pa:commit-config`
|
|
39
39
|
|
|
40
40
|
### AFTER Workflow Commands (Auto-Log)
|
|
41
41
|
|
|
@@ -470,6 +470,21 @@ Auto-detect issue numbers from user input and include in changelog:
|
|
|
470
470
|
|
|
471
471
|
---
|
|
472
472
|
|
|
473
|
+
## Smart Workflow & Worktrees
|
|
474
|
+
|
|
475
|
+
For smart workflow mode and worktree management:
|
|
476
|
+
|
|
477
|
+
**See:** `./.proagents/prompts/11-session-tracking.md`
|
|
478
|
+
|
|
479
|
+
### Quick Reference
|
|
480
|
+
|
|
481
|
+
| Feature | Description |
|
|
482
|
+
|---------|-------------|
|
|
483
|
+
| Smart Workflow | Small task → auto branch, Large task → ask user |
|
|
484
|
+
| Worktrees | Isolated directories for large/parallel tasks |
|
|
485
|
+
|
|
486
|
+
---
|
|
487
|
+
|
|
473
488
|
## Command Quick Reference
|
|
474
489
|
|
|
475
490
|
### Aliases
|
|
@@ -488,6 +503,7 @@ Auto-detect issue numbers from user input and include in changelog:
|
|
|
488
503
|
| `pa:rev` | `pa:review` |
|
|
489
504
|
| `pa:dbg` | `pa:debug` |
|
|
490
505
|
| `pa:l` | `pa:logs` |
|
|
506
|
+
| `pa:c` | `pa:commit` |
|
|
491
507
|
|
|
492
508
|
### Core Commands
|
|
493
509
|
| Command | Action |
|
|
@@ -592,6 +608,13 @@ Auto-detect issue numbers from user input and include in changelog:
|
|
|
592
608
|
| `pa:changelog-module X` | View module changelog |
|
|
593
609
|
| `pa:error "desc"` | Log error and solution |
|
|
594
610
|
|
|
611
|
+
### Worktree Commands
|
|
612
|
+
| Command | Action |
|
|
613
|
+
|---------|--------|
|
|
614
|
+
| `pa:worktree-create "name"` | Create worktree for large task |
|
|
615
|
+
| `pa:worktree-list` | List all active worktrees |
|
|
616
|
+
| `pa:worktree-remove "name"` | Remove worktree after merge |
|
|
617
|
+
|
|
595
618
|
### Configuration
|
|
596
619
|
| Command | Action |
|
|
597
620
|
|---------|--------|
|
|
@@ -691,6 +714,8 @@ When user types a `pa:` command:
|
|
|
691
714
|
| `pa:ai-add` | `./prompts/ai-add.md` |
|
|
692
715
|
| `pa:ai-remove` | `./prompts/ai-remove.md` |
|
|
693
716
|
| `pa:ai-sync` | `./prompts/ai-sync.md` |
|
|
717
|
+
| `pa:commit` | `./prompts/13-commit.md` |
|
|
718
|
+
| `pa:commit-config` | `./prompts/13-commit.md` |
|
|
694
719
|
|
|
695
720
|
---
|
|
696
721
|
|
|
@@ -762,6 +787,9 @@ ProAgents Help
|
|
|
762
787
|
pa:resume Quick resume with next action
|
|
763
788
|
pa:handoff Create handoff notes
|
|
764
789
|
pa:conflict-check Check for conflicts
|
|
790
|
+
pa:worktree-create Create worktree for large task
|
|
791
|
+
pa:worktree-list List all active worktrees
|
|
792
|
+
pa:worktree-remove Remove worktree after merge
|
|
765
793
|
|
|
766
794
|
Learning & Tracking:
|
|
767
795
|
pa:feedback "text" Log feedback for AI learning
|
package/.proagents/BOLT.md
CHANGED
|
@@ -33,7 +33,7 @@ Commands that only READ, DISPLAY, or CONFIGURE:
|
|
|
33
33
|
- **Skip AFTER step** - No logging needed
|
|
34
34
|
|
|
35
35
|
**Examples:** `pa:help`, `pa:status`, `pa:progress`, `pa:history`,
|
|
36
|
-
`pa:ai-*`, `pa:config-*`, `pa:sync`
|
|
36
|
+
`pa:ai-*`, `pa:config-*`, `pa:sync`, `pa:commit`, `pa:commit-config`
|
|
37
37
|
|
|
38
38
|
### AFTER Workflow Commands (Auto-Log)
|
|
39
39
|
|
package/.proagents/CLAUDE.md
CHANGED
|
@@ -33,7 +33,7 @@ Commands that only READ, DISPLAY, or CONFIGURE:
|
|
|
33
33
|
- **Skip AFTER step** - No logging needed
|
|
34
34
|
|
|
35
35
|
**Examples:** `pa:help`, `pa:status`, `pa:progress`, `pa:history`,
|
|
36
|
-
`pa:ai-*`, `pa:config-*`, `pa:sync`
|
|
36
|
+
`pa:ai-*`, `pa:config-*`, `pa:sync`, `pa:commit`, `pa:commit-config`
|
|
37
37
|
|
|
38
38
|
### AFTER Workflow Commands (Auto-Log)
|
|
39
39
|
|
package/.proagents/GEMINI.md
CHANGED
|
@@ -33,7 +33,7 @@ Commands that only READ, DISPLAY, or CONFIGURE:
|
|
|
33
33
|
- **Skip AFTER step** - No logging needed
|
|
34
34
|
|
|
35
35
|
**Examples:** `pa:help`, `pa:status`, `pa:progress`, `pa:history`,
|
|
36
|
-
`pa:ai-*`, `pa:config-*`, `pa:sync`
|
|
36
|
+
`pa:ai-*`, `pa:config-*`, `pa:sync`, `pa:commit`, `pa:commit-config`
|
|
37
37
|
|
|
38
38
|
### AFTER Workflow Commands (Auto-Log)
|
|
39
39
|
|
package/.proagents/KIRO.md
CHANGED
|
@@ -33,7 +33,7 @@ Commands that only READ, DISPLAY, or CONFIGURE:
|
|
|
33
33
|
- **Skip AFTER step** - No logging needed
|
|
34
34
|
|
|
35
35
|
**Examples:** `pa:help`, `pa:status`, `pa:progress`, `pa:history`,
|
|
36
|
-
`pa:ai-*`, `pa:config-*`, `pa:sync`
|
|
36
|
+
`pa:ai-*`, `pa:config-*`, `pa:sync`, `pa:commit`, `pa:commit-config`
|
|
37
37
|
|
|
38
38
|
### AFTER Workflow Commands (Auto-Log)
|
|
39
39
|
|
package/.proagents/LOVABLE.md
CHANGED
|
@@ -33,7 +33,7 @@ Commands that only READ, DISPLAY, or CONFIGURE:
|
|
|
33
33
|
- **Skip AFTER step** - No logging needed
|
|
34
34
|
|
|
35
35
|
**Examples:** `pa:help`, `pa:status`, `pa:progress`, `pa:history`,
|
|
36
|
-
`pa:ai-*`, `pa:config-*`, `pa:sync`
|
|
36
|
+
`pa:ai-*`, `pa:config-*`, `pa:sync`, `pa:commit`, `pa:commit-config`
|
|
37
37
|
|
|
38
38
|
### AFTER Workflow Commands (Auto-Log)
|
|
39
39
|
|
package/.proagents/REPLIT.md
CHANGED
|
@@ -33,7 +33,7 @@ Commands that only READ, DISPLAY, or CONFIGURE:
|
|
|
33
33
|
- **Skip AFTER step** - No logging needed
|
|
34
34
|
|
|
35
35
|
**Examples:** `pa:help`, `pa:status`, `pa:progress`, `pa:history`,
|
|
36
|
-
`pa:ai-*`, `pa:config-*`, `pa:sync`
|
|
36
|
+
`pa:ai-*`, `pa:config-*`, `pa:sync`, `pa:commit`, `pa:commit-config`
|
|
37
37
|
|
|
38
38
|
### AFTER Workflow Commands (Auto-Log)
|
|
39
39
|
|
|
@@ -25,7 +25,7 @@ standup:
|
|
|
25
25
|
sprint_review:
|
|
26
26
|
description: "Generate sprint review summary"
|
|
27
27
|
steps:
|
|
28
|
-
- "Read all session summaries from ./.proagents/
|
|
28
|
+
- "Read all session summaries from ./.proagents/worklog/"
|
|
29
29
|
- "Read ./CHANGELOG.md for completed features"
|
|
30
30
|
- "Generate sprint review with completed items, metrics, and highlights"
|
|
31
31
|
output: "./.proagents/sprint-reviews/YYYY-MM-DD.md"
|
|
@@ -40,6 +40,61 @@ git:
|
|
|
40
40
|
commit_convention: "conventional" # conventional | simple | custom
|
|
41
41
|
require_pr: true
|
|
42
42
|
|
|
43
|
+
# Pre-commit checks for pa:commit
|
|
44
|
+
pre_commit:
|
|
45
|
+
enabled: true # Master toggle for pre-commit checks
|
|
46
|
+
lint: true # Run linter before commit
|
|
47
|
+
type_check: true # Run type checker before commit
|
|
48
|
+
test_affected: false # Run tests for changed files
|
|
49
|
+
|
|
50
|
+
# Safety warnings for pa:commit
|
|
51
|
+
safety:
|
|
52
|
+
warn_main_branch: true # Warn if committing to main/master
|
|
53
|
+
warn_sensitive_files: true # Warn for .env, credentials, etc.
|
|
54
|
+
warn_large_files: true # Warn if file > threshold
|
|
55
|
+
large_file_threshold: 1048576 # 1MB in bytes
|
|
56
|
+
sensitive_patterns:
|
|
57
|
+
- ".env*"
|
|
58
|
+
- "credentials*"
|
|
59
|
+
- "secrets*"
|
|
60
|
+
- "*.pem"
|
|
61
|
+
- "*.key"
|
|
62
|
+
- "id_rsa*"
|
|
63
|
+
|
|
64
|
+
# Workflow Configuration
|
|
65
|
+
# Controls how AI handles task size and worktrees
|
|
66
|
+
workflow:
|
|
67
|
+
# Worktree mode: auto | always-ask | always-branch | always-worktree
|
|
68
|
+
# - auto: Small tasks use branch (no ask), large tasks ask user
|
|
69
|
+
# - always-ask: Always ask user for workflow choice
|
|
70
|
+
# - always-branch: Never use worktree, always simple branch
|
|
71
|
+
# - always-worktree: Always create worktree for each task
|
|
72
|
+
worktree_mode: "auto"
|
|
73
|
+
|
|
74
|
+
# Task size indicators for auto mode
|
|
75
|
+
task_indicators:
|
|
76
|
+
small:
|
|
77
|
+
- "fix typo"
|
|
78
|
+
- "small bug"
|
|
79
|
+
- "quick fix"
|
|
80
|
+
- "update text"
|
|
81
|
+
- "minor change"
|
|
82
|
+
- "hotfix"
|
|
83
|
+
large:
|
|
84
|
+
- "implement"
|
|
85
|
+
- "create feature"
|
|
86
|
+
- "refactor"
|
|
87
|
+
- "new module"
|
|
88
|
+
- "authentication"
|
|
89
|
+
- "payment"
|
|
90
|
+
- "integration"
|
|
91
|
+
- "migration"
|
|
92
|
+
|
|
93
|
+
# Worktree naming
|
|
94
|
+
worktree_naming:
|
|
95
|
+
prefix: "../" # Relative to current directory
|
|
96
|
+
format: "{project}-{taskname}" # e.g., myapp-user-auth
|
|
97
|
+
|
|
43
98
|
# Parallel Feature Development
|
|
44
99
|
parallel_features:
|
|
45
100
|
enabled: true
|
|
@@ -76,6 +76,106 @@ AI: "Fixed the login bug in src/auth/login.ts"
|
|
|
76
76
|
| `pa:session-start` | Begin work session (AUTO) |
|
|
77
77
|
| `pa:session-end` | End session (AUTO - logs on each change) |
|
|
78
78
|
| `pa:handoff` | Create detailed handoff |
|
|
79
|
+
| `pa:worktree-create "name"` | Create worktree for large task |
|
|
80
|
+
| `pa:worktree-list` | List all active worktrees |
|
|
81
|
+
| `pa:worktree-remove "name"` | Remove worktree after merge |
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Smart Workflow Mode
|
|
86
|
+
|
|
87
|
+
AI automatically detects task size and chooses workflow.
|
|
88
|
+
|
|
89
|
+
### Task Size Indicators
|
|
90
|
+
|
|
91
|
+
| Small Task | Large Task |
|
|
92
|
+
|------------|------------|
|
|
93
|
+
| "fix typo", "small bug", "quick fix" | "implement", "feature", "refactor" |
|
|
94
|
+
| 1-2 files | Multiple files |
|
|
95
|
+
| Single function | New module |
|
|
96
|
+
|
|
97
|
+
### Workflow Decision
|
|
98
|
+
|
|
99
|
+
Read `workflow.worktree_mode` from `proagents.config.yaml`:
|
|
100
|
+
|
|
101
|
+
- **auto** (default): Small → branch, Large → ask user
|
|
102
|
+
- **always-ask**: Always ask user
|
|
103
|
+
- **always-branch**: Never use worktree
|
|
104
|
+
- **always-worktree**: Always create worktree
|
|
105
|
+
|
|
106
|
+
### Small Task (Auto Branch)
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
User: "Fix the typo in README"
|
|
110
|
+
AI: [Creates branch, proceeds immediately, no question]
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Large Task (Ask User)
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
User: "Implement user authentication"
|
|
117
|
+
AI:
|
|
118
|
+
═══════════════════════════════════════
|
|
119
|
+
📋 LARGE TASK DETECTED
|
|
120
|
+
|
|
121
|
+
Task: "Implement user authentication"
|
|
122
|
+
|
|
123
|
+
1. Continue here (current branch)
|
|
124
|
+
2. Create worktree (isolated directory)
|
|
125
|
+
|
|
126
|
+
Which approach? [1/2]
|
|
127
|
+
═══════════════════════════════════════
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Worktree Commands
|
|
133
|
+
|
|
134
|
+
### pa:worktree-create "name"
|
|
135
|
+
|
|
136
|
+
Creates isolated worktree for task:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
git worktree add ../[project]-[name] feature/[name]
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Output:
|
|
143
|
+
```
|
|
144
|
+
═══════════════════════════════════════
|
|
145
|
+
✅ Worktree Created
|
|
146
|
+
|
|
147
|
+
Directory: ../myapp-user-auth/
|
|
148
|
+
Branch: feature/user-auth
|
|
149
|
+
|
|
150
|
+
Next Steps:
|
|
151
|
+
1. Open the new directory in your IDE
|
|
152
|
+
2. Work there - all changes go to feature/user-auth
|
|
153
|
+
3. When done: pa:worktree-remove "user-auth"
|
|
154
|
+
═══════════════════════════════════════
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### pa:worktree-list
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
git worktree list
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Output:
|
|
164
|
+
```
|
|
165
|
+
═══════════════════════════════════════
|
|
166
|
+
📁 Active Worktrees
|
|
167
|
+
|
|
168
|
+
/path/to/myapp main
|
|
169
|
+
/path/to/myapp-user-auth feature/user-auth [Claude]
|
|
170
|
+
/path/to/myapp-rate-limiting feature/rate-limiting [Cursor]
|
|
171
|
+
═══════════════════════════════════════
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### pa:worktree-remove "name"
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
git worktree remove ../myapp-[name]
|
|
178
|
+
```
|
|
79
179
|
|
|
80
180
|
---
|
|
81
181
|
|
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
# Smart Commit Workflow
|
|
2
|
+
|
|
3
|
+
Interactive commit with file selection, safety checks, and smart message generation.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## CRITICAL RULES - READ FIRST
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
11
|
+
!! !!
|
|
12
|
+
!! THIS IS AN INTERACTIVE COMMAND !!
|
|
13
|
+
!! !!
|
|
14
|
+
!! YOU MUST ASK USER AND WAIT FOR RESPONSE AT EACH STEP !!
|
|
15
|
+
!! !!
|
|
16
|
+
!! DO NOT: !!
|
|
17
|
+
!! - Skip steps !!
|
|
18
|
+
!! - Assume user choices !!
|
|
19
|
+
!! - Commit without explicit user confirmation !!
|
|
20
|
+
!! - Modify config without user selection !!
|
|
21
|
+
!! !!
|
|
22
|
+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Commands
|
|
28
|
+
|
|
29
|
+
| Command | Alias | Description |
|
|
30
|
+
|---------|-------|-------------|
|
|
31
|
+
| `pa:commit` | `pa:c` | Smart commit workflow |
|
|
32
|
+
| `pa:commit-config` | - | Configure pre-commit checks |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
# pa:commit Workflow
|
|
37
|
+
|
|
38
|
+
## Step 1: Show Current State and ASK
|
|
39
|
+
|
|
40
|
+
First, run these commands silently:
|
|
41
|
+
```bash
|
|
42
|
+
git status --porcelain
|
|
43
|
+
git diff --stat
|
|
44
|
+
git diff --cached --stat
|
|
45
|
+
git branch --show-current
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Then DISPLAY this to user and WAIT for their choice:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
═══════════════════════════════════════
|
|
52
|
+
SMART COMMIT
|
|
53
|
+
|
|
54
|
+
Current Branch: [branch name]
|
|
55
|
+
|
|
56
|
+
Staged Files:
|
|
57
|
+
[list staged files with +/- lines]
|
|
58
|
+
|
|
59
|
+
Unstaged Files:
|
|
60
|
+
[list unstaged files with +/- lines]
|
|
61
|
+
|
|
62
|
+
Untracked Files:
|
|
63
|
+
[list new files]
|
|
64
|
+
|
|
65
|
+
Which files do you want to commit?
|
|
66
|
+
|
|
67
|
+
1. Staged only
|
|
68
|
+
2. Unstaged only
|
|
69
|
+
3. All changes
|
|
70
|
+
4. Let me select specific files
|
|
71
|
+
|
|
72
|
+
Enter choice (1-4):
|
|
73
|
+
═══════════════════════════════════════
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**>>> STOP HERE. WAIT FOR USER TO RESPOND. <<<**
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Step 1b: Handle "Select Specific Files" (Option 4)
|
|
81
|
+
|
|
82
|
+
**ONLY if user chose option 4**, show numbered list of ALL files:
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
═══════════════════════════════════════
|
|
86
|
+
SELECT FILES TO COMMIT
|
|
87
|
+
|
|
88
|
+
1. AGENTS.md (+1, -1)
|
|
89
|
+
2. CLAUDE.md (+1, -1)
|
|
90
|
+
3. docs/releases/v0.0.1.md (+4, -1)
|
|
91
|
+
4. ios/IQAuditor.xcodeproj/project.pbxproj (+16, -10)
|
|
92
|
+
5. android/app/release/app-release.aab (new, 97MB)
|
|
93
|
+
|
|
94
|
+
Enter file numbers to INCLUDE (comma-separated):
|
|
95
|
+
Example: 1,2,3 or 1-3 or all
|
|
96
|
+
|
|
97
|
+
═══════════════════════════════════════
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**>>> STOP HERE. WAIT FOR USER TO RESPOND. <<<**
|
|
101
|
+
|
|
102
|
+
After user provides numbers, those are the ONLY files to commit.
|
|
103
|
+
**SKIP Step 2** (exclusions) since user already selected specific files.
|
|
104
|
+
Proceed directly to Step 3 (Safety Checks).
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Step 2: Ask About Exclusions
|
|
109
|
+
|
|
110
|
+
**SKIP this step if user chose option 4 in Step 1.**
|
|
111
|
+
|
|
112
|
+
Only for options 1, 2, or 3, ASK:
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
Any files to EXCLUDE from this commit?
|
|
116
|
+
|
|
117
|
+
Enter file paths (comma-separated) or "none":
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**>>> STOP HERE. WAIT FOR USER TO RESPOND. <<<**
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Step 3: Safety Checks
|
|
125
|
+
|
|
126
|
+
### 3a. Branch Check
|
|
127
|
+
|
|
128
|
+
If current branch is `main` or `master`, STOP and ASK:
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
WARNING: You are committing to 'main' branch!
|
|
132
|
+
|
|
133
|
+
What do you want to do?
|
|
134
|
+
|
|
135
|
+
1. Create a new branch first
|
|
136
|
+
2. Continue on main anyway
|
|
137
|
+
3. Cancel
|
|
138
|
+
|
|
139
|
+
Enter choice (1-3):
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**>>> STOP HERE. WAIT FOR USER TO RESPOND. <<<**
|
|
143
|
+
|
|
144
|
+
If user chose 1, ASK for branch name:
|
|
145
|
+
```
|
|
146
|
+
Enter new branch name (e.g., fix/bug-name):
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**>>> STOP HERE. WAIT FOR USER TO RESPOND. <<<**
|
|
150
|
+
|
|
151
|
+
### 3b. Sensitive File Check
|
|
152
|
+
|
|
153
|
+
Check if any selected file matches:
|
|
154
|
+
- `.env*`
|
|
155
|
+
- `credentials*`, `secrets*`
|
|
156
|
+
- `*.pem`, `*.key`, `id_rsa*`
|
|
157
|
+
|
|
158
|
+
If found, STOP and ASK:
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
WARNING: Sensitive file(s) detected!
|
|
162
|
+
|
|
163
|
+
- .env.local
|
|
164
|
+
- config/secrets.json
|
|
165
|
+
|
|
166
|
+
These files may contain secrets. What do you want to do?
|
|
167
|
+
|
|
168
|
+
1. Exclude these files and continue
|
|
169
|
+
2. Commit anyway (not recommended)
|
|
170
|
+
3. Cancel
|
|
171
|
+
|
|
172
|
+
Enter choice (1-3):
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**>>> STOP HERE. WAIT FOR USER TO RESPOND. <<<**
|
|
176
|
+
|
|
177
|
+
### 3c. Large File Check
|
|
178
|
+
|
|
179
|
+
Check if any file > 1MB. If found, STOP and ASK:
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
WARNING: Large file detected!
|
|
183
|
+
|
|
184
|
+
- assets/video.mp4 (15.2 MB)
|
|
185
|
+
|
|
186
|
+
Large files can slow down your repository.
|
|
187
|
+
|
|
188
|
+
1. Exclude this file
|
|
189
|
+
2. Commit anyway
|
|
190
|
+
3. Cancel
|
|
191
|
+
|
|
192
|
+
Enter choice (1-3):
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**>>> STOP HERE. WAIT FOR USER TO RESPOND. <<<**
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## Step 4: Generate Message and ASK
|
|
200
|
+
|
|
201
|
+
Analyze the diff and generate a commit message. Then SHOW and ASK:
|
|
202
|
+
|
|
203
|
+
```
|
|
204
|
+
═══════════════════════════════════════
|
|
205
|
+
SUGGESTED COMMIT MESSAGE
|
|
206
|
+
|
|
207
|
+
[type]([scope]): [description]
|
|
208
|
+
|
|
209
|
+
- [bullet point 1]
|
|
210
|
+
- [bullet point 2]
|
|
211
|
+
|
|
212
|
+
═══════════════════════════════════════
|
|
213
|
+
|
|
214
|
+
What do you want to do?
|
|
215
|
+
|
|
216
|
+
1. Use this message
|
|
217
|
+
2. Edit this message (tell me what to change)
|
|
218
|
+
3. I'll write my own message
|
|
219
|
+
4. Cancel
|
|
220
|
+
|
|
221
|
+
Enter choice (1-4):
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
**>>> STOP HERE. WAIT FOR USER TO RESPOND. <<<**
|
|
225
|
+
|
|
226
|
+
If user chose 2:
|
|
227
|
+
```
|
|
228
|
+
What would you like to change in the message?
|
|
229
|
+
```
|
|
230
|
+
**>>> STOP HERE. WAIT FOR USER TO RESPOND. <<<**
|
|
231
|
+
|
|
232
|
+
If user chose 3:
|
|
233
|
+
```
|
|
234
|
+
Enter your commit message:
|
|
235
|
+
```
|
|
236
|
+
**>>> STOP HERE. WAIT FOR USER TO RESPOND. <<<**
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Step 5: Confirm Before Commit
|
|
241
|
+
|
|
242
|
+
Before executing, show summary and ASK:
|
|
243
|
+
|
|
244
|
+
```
|
|
245
|
+
═══════════════════════════════════════
|
|
246
|
+
COMMIT SUMMARY
|
|
247
|
+
|
|
248
|
+
Files to commit:
|
|
249
|
+
- file1.ts
|
|
250
|
+
- file2.ts
|
|
251
|
+
|
|
252
|
+
Message:
|
|
253
|
+
feat(auth): Add password validation
|
|
254
|
+
|
|
255
|
+
Proceed with commit?
|
|
256
|
+
|
|
257
|
+
1. Yes, commit now
|
|
258
|
+
2. No, cancel
|
|
259
|
+
|
|
260
|
+
Enter choice (1-2):
|
|
261
|
+
═══════════════════════════════════════
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
**>>> STOP HERE. WAIT FOR USER TO RESPOND. <<<**
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## Step 6: Execute and Ask About Push
|
|
269
|
+
|
|
270
|
+
Only after user confirms, execute:
|
|
271
|
+
```bash
|
|
272
|
+
git add [selected files]
|
|
273
|
+
git commit -m "[message]"
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
Then show result and ASK:
|
|
277
|
+
|
|
278
|
+
```
|
|
279
|
+
Commit successful! [commit hash]
|
|
280
|
+
|
|
281
|
+
[commit message]
|
|
282
|
+
|
|
283
|
+
[X] files changed, [+] insertions, [-] deletions
|
|
284
|
+
|
|
285
|
+
Do you want to push now?
|
|
286
|
+
|
|
287
|
+
1. Yes, push to remote
|
|
288
|
+
2. No, I'll push later
|
|
289
|
+
|
|
290
|
+
Enter choice (1-2):
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
**>>> STOP HERE. WAIT FOR USER TO RESPOND. <<<**
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
# pa:commit-config Workflow
|
|
298
|
+
|
|
299
|
+
## CRITICAL: This is INTERACTIVE
|
|
300
|
+
|
|
301
|
+
```
|
|
302
|
+
DO NOT modify config without asking user!
|
|
303
|
+
DO NOT assume which settings to change!
|
|
304
|
+
SHOW current settings and ASK what to toggle!
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
## Step 1: Read and Display Current Config
|
|
308
|
+
|
|
309
|
+
Read `proagents.config.yaml` and DISPLAY:
|
|
310
|
+
|
|
311
|
+
```
|
|
312
|
+
═══════════════════════════════════════
|
|
313
|
+
COMMIT CONFIGURATION
|
|
314
|
+
|
|
315
|
+
Current Settings:
|
|
316
|
+
|
|
317
|
+
Pre-commit Checks:
|
|
318
|
+
1. [ON/OFF] Lint check
|
|
319
|
+
2. [ON/OFF] Type check
|
|
320
|
+
3. [ON/OFF] Test affected files
|
|
321
|
+
|
|
322
|
+
Safety Warnings:
|
|
323
|
+
4. [ON/OFF] Warn on main/master branch
|
|
324
|
+
5. [ON/OFF] Warn on sensitive files
|
|
325
|
+
6. [ON/OFF] Warn on large files (>1MB)
|
|
326
|
+
|
|
327
|
+
7. Save and exit
|
|
328
|
+
|
|
329
|
+
Which setting do you want to toggle? (1-7):
|
|
330
|
+
═══════════════════════════════════════
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
**>>> STOP HERE. WAIT FOR USER TO RESPOND. <<<**
|
|
334
|
+
|
|
335
|
+
## Step 2: Toggle and Show Updated
|
|
336
|
+
|
|
337
|
+
After user selects a number (1-6), toggle that setting and show updated list again.
|
|
338
|
+
|
|
339
|
+
Repeat until user selects 7 (Save and exit).
|
|
340
|
+
|
|
341
|
+
## Step 3: Save and Confirm
|
|
342
|
+
|
|
343
|
+
When user selects 7:
|
|
344
|
+
|
|
345
|
+
```
|
|
346
|
+
Saving configuration...
|
|
347
|
+
|
|
348
|
+
Updated settings:
|
|
349
|
+
- lint: true -> false
|
|
350
|
+
- type_check: true (unchanged)
|
|
351
|
+
|
|
352
|
+
Configuration saved to proagents.config.yaml
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
# Commit Message Rules
|
|
358
|
+
|
|
359
|
+
## Types
|
|
360
|
+
|
|
361
|
+
| Type | When to use |
|
|
362
|
+
|------|-------------|
|
|
363
|
+
| feat | New feature or functionality |
|
|
364
|
+
| fix | Bug fix |
|
|
365
|
+
| refactor | Code restructuring (no new feature) |
|
|
366
|
+
| docs | Documentation only |
|
|
367
|
+
| test | Adding or updating tests |
|
|
368
|
+
| chore | Maintenance, dependencies |
|
|
369
|
+
| style | Formatting, whitespace |
|
|
370
|
+
|
|
371
|
+
## Scope Detection
|
|
372
|
+
|
|
373
|
+
| File Path | Scope |
|
|
374
|
+
|-----------|-------|
|
|
375
|
+
| src/auth/* | auth |
|
|
376
|
+
| src/api/*, routes/* | api |
|
|
377
|
+
| src/components/* | ui |
|
|
378
|
+
| src/services/* | services |
|
|
379
|
+
| src/utils/*, lib/* | utils |
|
|
380
|
+
| tests/* | test |
|
|
381
|
+
|
|
382
|
+
## Format
|
|
383
|
+
|
|
384
|
+
```
|
|
385
|
+
type(scope): Short description (max 72 chars)
|
|
386
|
+
|
|
387
|
+
- Bullet point for each change
|
|
388
|
+
- Keep it concise
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
---
|
|
392
|
+
|
|
393
|
+
# Config Reference
|
|
394
|
+
|
|
395
|
+
```yaml
|
|
396
|
+
git:
|
|
397
|
+
pre_commit:
|
|
398
|
+
enabled: true
|
|
399
|
+
lint: true
|
|
400
|
+
type_check: true
|
|
401
|
+
test_affected: false
|
|
402
|
+
safety:
|
|
403
|
+
warn_main_branch: true
|
|
404
|
+
warn_sensitive_files: true
|
|
405
|
+
warn_large_files: true
|
|
406
|
+
large_file_threshold: 1048576
|
|
407
|
+
sensitive_patterns:
|
|
408
|
+
- ".env*"
|
|
409
|
+
- "credentials*"
|
|
410
|
+
- "secrets*"
|
|
411
|
+
- "*.pem"
|
|
412
|
+
- "*.key"
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
# Summary
|
|
418
|
+
|
|
419
|
+
| Step | Action | Requires User Input? |
|
|
420
|
+
|------|--------|---------------------|
|
|
421
|
+
| 1 | Show files | YES - which files |
|
|
422
|
+
| 2 | Exclusions | YES - any to exclude |
|
|
423
|
+
| 3 | Safety checks | YES - if warnings |
|
|
424
|
+
| 4 | Commit message | YES - use/edit/custom |
|
|
425
|
+
| 5 | Confirm | YES - proceed? |
|
|
426
|
+
| 6 | Push option | YES - push now? |
|
package/COMMANDS.md
CHANGED
|
@@ -27,6 +27,7 @@ Complete reference for CLI and AI (`pa:`) commands. For quick start, see [README
|
|
|
27
27
|
- [Documentation](#documentation)
|
|
28
28
|
- [Quality & Testing](#quality--testing)
|
|
29
29
|
- [Cross-AI Continuity](#cross-ai-continuity)
|
|
30
|
+
- [Worktree Management](#worktree-management)
|
|
30
31
|
- [Learning & Tracking](#learning--tracking)
|
|
31
32
|
- [Navigation & Flow](#navigation--flow)
|
|
32
33
|
- [Context & History](#context--history)
|
|
@@ -327,6 +328,21 @@ Type these in any AI assistant (Claude, ChatGPT, Gemini, Cursor, etc.)
|
|
|
327
328
|
|
|
328
329
|
---
|
|
329
330
|
|
|
331
|
+
## Worktree Management
|
|
332
|
+
|
|
333
|
+
| Command | Description |
|
|
334
|
+
|---------|-------------|
|
|
335
|
+
| `pa:worktree-create "name"` | Create worktree for large task |
|
|
336
|
+
| `pa:worktree-list` | List all active worktrees |
|
|
337
|
+
| `pa:worktree-remove "name"` | Remove worktree after merge |
|
|
338
|
+
|
|
339
|
+
**When to use worktrees:**
|
|
340
|
+
- Large features (days/weeks of work)
|
|
341
|
+
- Parallel work (multiple AIs or developers)
|
|
342
|
+
- Need to run/test multiple versions simultaneously
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
330
346
|
## Learning & Tracking
|
|
331
347
|
|
|
332
348
|
| Command | Description |
|
|
@@ -487,6 +503,9 @@ Type these in any AI assistant (Claude, ChatGPT, Gemini, Cursor, etc.)
|
|
|
487
503
|
|
|
488
504
|
| Command | Description |
|
|
489
505
|
|---------|-------------|
|
|
506
|
+
| `pa:commit` | Smart commit with file selection and message generation |
|
|
507
|
+
| `pa:c` | Alias for pa:commit |
|
|
508
|
+
| `pa:commit-config` | Configure pre-commit checks (lint, type-check, tests) |
|
|
490
509
|
| `pa:branch` | Branch management |
|
|
491
510
|
| `pa:merge` | Smart merge with conflict preview |
|
|
492
511
|
| `pa:conflict` | Resolve merge conflicts with AI |
|
package/lib/commands/init.js
CHANGED
|
@@ -15,7 +15,6 @@ const PRESERVE_PATHS = [
|
|
|
15
15
|
'.learning', // Learned patterns
|
|
16
16
|
'changelog', // Change history (user data)
|
|
17
17
|
'worklog', // Work context (user data)
|
|
18
|
-
'sessions', // Session data
|
|
19
18
|
'backups', // User backups
|
|
20
19
|
];
|
|
21
20
|
|
|
@@ -1322,6 +1321,9 @@ For detailed commands, see \`./.proagents/PROAGENTS.md\`
|
|
|
1322
1321
|
* Smart update - preserves user files, updates framework files
|
|
1323
1322
|
*/
|
|
1324
1323
|
async function smartUpdate(sourceDir, targetDir) {
|
|
1324
|
+
// Project root is parent of .proagents folder
|
|
1325
|
+
const projectRoot = join(targetDir, '..');
|
|
1326
|
+
|
|
1325
1327
|
// Backup preserved paths
|
|
1326
1328
|
const backups = {};
|
|
1327
1329
|
for (const path of PRESERVE_PATHS) {
|
|
@@ -1406,7 +1408,8 @@ async function smartUpdate(sourceDir, targetDir) {
|
|
|
1406
1408
|
console.log(chalk.green(`✓ Updated ${filesUpdated} framework files`));
|
|
1407
1409
|
|
|
1408
1410
|
// Merge config file - keep user values, add new options
|
|
1409
|
-
|
|
1411
|
+
// User config is at project root, not inside .proagents
|
|
1412
|
+
const userConfigPath = join(projectRoot, CONFIG_FILE);
|
|
1410
1413
|
const newConfigPath = join(sourceDir, CONFIG_FILE);
|
|
1411
1414
|
|
|
1412
1415
|
if (existsSync(newConfigPath)) {
|
|
@@ -1435,7 +1438,6 @@ async function smartUpdate(sourceDir, targetDir) {
|
|
|
1435
1438
|
}
|
|
1436
1439
|
|
|
1437
1440
|
// Copy AI instruction files for configured platforms (merges with existing files)
|
|
1438
|
-
const projectRoot = join(targetDir, '..');
|
|
1439
1441
|
const configPath = join(projectRoot, 'proagents.config.yaml');
|
|
1440
1442
|
const selectedPlatforms = loadPlatformConfig(configPath);
|
|
1441
1443
|
|
package/package.json
CHANGED