claude-autopm 1.11.6 → 1.11.10

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 CHANGED
@@ -99,7 +99,29 @@ During installation, you'll be asked to:
99
99
  | **Azure DevOps** | Azure Boards & Pipelines | Enterprise, Agile teams |
100
100
  | **Skip for now** | Local files only | Evaluation, offline work |
101
101
 
102
- #### 3. Initialize PM System (1 minute)
102
+ #### 3. Update Existing Installation
103
+
104
+ ```bash
105
+ # Update to latest framework version
106
+ autopm update
107
+
108
+ # Or force update with options
109
+ autopm update --force --no-backup
110
+ ```
111
+
112
+ **Update features:**
113
+ - 🔄 **Smart Updates** - Preserves your configuration and project data
114
+ - 📦 **Automatic Backup** - Creates backup before updating (can be disabled)
115
+ - ⚙️ **Config Preservation** - Keeps your settings, teams, and provider config
116
+ - 📁 **Data Protection** - Preserves epics, PRDs, and all project files
117
+ - 🔧 **Version Detection** - Only updates when necessary
118
+
119
+ **Update options:**
120
+ - `--force` - Force update even if versions match
121
+ - `--no-backup` - Skip backup creation
122
+ - `--no-preserve-config` - Don't preserve configuration files
123
+
124
+ #### 4. Initialize PM System (1 minute)
103
125
 
104
126
  ```bash
105
127
  # In Claude Code, run:
@@ -109,7 +131,7 @@ During installation, you'll be asked to:
109
131
  /init include rules from .claude/CLAUDE.md
110
132
  ```
111
133
 
112
- #### 3.5 Provider Configuration (NEW)
134
+ #### 4.5 Provider Configuration (NEW)
113
135
 
114
136
  ```bash
115
137
  # View current configuration
package/bin/autopm.js CHANGED
@@ -43,6 +43,49 @@ function main() {
43
43
  }
44
44
  }
45
45
  )
46
+ .command('update', 'Update ClaudeAutoPM framework to latest version in current project',
47
+ (yargs) => {
48
+ return yargs
49
+ .option('force', {
50
+ describe: 'Force update even if project structure differs',
51
+ type: 'boolean',
52
+ default: false
53
+ })
54
+ .option('backup', {
55
+ describe: 'Create backup before updating',
56
+ type: 'boolean',
57
+ default: true
58
+ })
59
+ .option('preserve-config', {
60
+ describe: 'Preserve existing configuration files',
61
+ type: 'boolean',
62
+ default: true
63
+ })
64
+ .example('autopm update', 'Update to latest version')
65
+ .example('autopm update --force', 'Force update ignoring conflicts')
66
+ .example('autopm update --no-backup', 'Update without creating backup');
67
+ },
68
+ (argv) => {
69
+ // Delegate to the update script
70
+ const { execSync } = require('child_process');
71
+ const updatePath = path.join(__dirname, '..', 'install', 'update.sh');
72
+ try {
73
+ const env = {
74
+ ...process.env,
75
+ AUTOPM_FORCE: argv.force ? '1' : '0',
76
+ AUTOPM_BACKUP: argv.backup ? '1' : '0',
77
+ AUTOPM_PRESERVE_CONFIG: argv.preserveConfig ? '1' : '0'
78
+ };
79
+ execSync(`bash ${updatePath}`, {
80
+ stdio: 'inherit',
81
+ env
82
+ });
83
+ } catch (error) {
84
+ console.error('Update failed:', error.message);
85
+ process.exit(1);
86
+ }
87
+ }
88
+ )
46
89
  .command('guide [action]', 'Interactive setup guide and documentation generator (deprecated: use --help)',
47
90
  (yargs) => {
48
91
  return yargs
@@ -158,6 +201,7 @@ function main() {
158
201
  .epilogue(`
159
202
  📖 Quick Start:
160
203
  autopm install # Install ClaudeAutoPM in current directory
204
+ autopm update # Update to latest framework version
161
205
  autopm team load frontend # Load React/UI development agents
162
206
  claude --dangerously-skip-permissions . # Open Claude Code
163
207
 
package/install/README.md CHANGED
@@ -7,6 +7,7 @@ This directory contains installation and configuration scripts for the **ClaudeA
7
7
  | File | Description |
8
8
  |------|-------------|
9
9
  | `install.sh` | Main installation script for ClaudeAutoPM framework |
10
+ | `update.sh` | Update existing installation to latest framework version |
10
11
  | `merge-claude.sh` | Helper script for merging CLAUDE.md configurations |
11
12
  | `README.md` | This documentation file |
12
13
 
@@ -25,11 +26,22 @@ cd ClaudeAutoPM
25
26
 
26
27
  ### Update Existing Installation
27
28
 
29
+ **Recommended method (via CLI):**
28
30
  ```bash
29
- # Run installer in project with existing ClaudeAutoPM:
30
- ./install/install.sh
31
+ # Update to latest framework version (recommended)
32
+ autopm update
31
33
 
32
- # It will automatically detect existing installation and offer update
34
+ # Force update with options
35
+ autopm update --force --no-backup
36
+ ```
37
+
38
+ **Manual method (direct script):**
39
+ ```bash
40
+ # Run update script directly
41
+ ./install/update.sh
42
+
43
+ # Or use installer (legacy method)
44
+ ./install/install.sh
33
45
  ```
34
46
 
35
47
  ## 📋 Installation Script (`install.sh`)
@@ -86,6 +98,68 @@ cd ClaudeAutoPM
86
98
  - Updates only changed files
87
99
  - Offers merge assistance for `CLAUDE.md`
88
100
 
101
+ ## 🔄 Update Script (`update.sh`)
102
+
103
+ ### What It Does
104
+
105
+ **Smart Framework Updates** that preserve your work:
106
+
107
+ ✅ **Version Management:**
108
+ - Detects current and new framework versions
109
+ - Only updates when necessary (unless forced)
110
+ - Shows clear before/after version information
111
+
112
+ ✅ **Data Protection:**
113
+ - Creates automatic backup before updating
114
+ - Preserves all configuration files (`config.json`, `.env.local`, etc.)
115
+ - Protects project data (`epics/`, `prds/` directories)
116
+ - Maintains custom settings and team configurations
117
+
118
+ ✅ **Framework Updates:**
119
+ - Updates all framework components (`agents/`, `commands/`, `rules/`, etc.)
120
+ - Installs new features and capabilities
121
+ - Fixes bugs and security issues
122
+ - Updates documentation and examples
123
+
124
+ ### Usage
125
+
126
+ ```bash
127
+ # Standard update (recommended)
128
+ autopm update
129
+
130
+ # Force update regardless of version
131
+ autopm update --force
132
+
133
+ # Update without backup (not recommended)
134
+ autopm update --no-backup
135
+
136
+ # Update without preserving config (fresh start)
137
+ autopm update --no-preserve-config
138
+ ```
139
+
140
+ ### Safety Features
141
+
142
+ 🛡️ **Automatic Backup** - Creates timestamped backup before any changes
143
+ 🔒 **Config Preservation** - Keeps your settings and customizations
144
+ 📁 **Data Protection** - Never touches your epics, PRDs, or project files
145
+ ⚡ **Quick Rollback** - Easy to restore from backup if needed
146
+
147
+ ### What Gets Updated
148
+
149
+ **Framework Components (Updated):**
150
+ - `agents/` - Latest agent definitions and capabilities
151
+ - `commands/` - New PM commands and improvements
152
+ - `scripts/` - Bug fixes and performance improvements
153
+ - `rules/` - Updated development patterns
154
+ - `templates/` - New project templates
155
+
156
+ **Your Data (Preserved):**
157
+ - `config.json` - Your provider and settings
158
+ - `epics/` - All your epic files and tasks
159
+ - `prds/` - All your product requirements
160
+ - `teams.json` - Your team configurations
161
+ - `.env.local` - Your environment variables
162
+
89
163
  ## 🤖 Merge Helper (`merge-claude.sh`)
90
164
 
91
165
  ### What It Does
@@ -0,0 +1,263 @@
1
+ #!/bin/bash
2
+
3
+ # ClaudeAutoPM Update Script
4
+ # Updates existing installation to latest framework version
5
+
6
+ set -e
7
+
8
+ # Colors for output
9
+ RED='\033[0;31m'
10
+ GREEN='\033[0;32m'
11
+ YELLOW='\033[1;33m'
12
+ BLUE='\033[0;34m'
13
+ NC='\033[0m' # No Color
14
+
15
+ # Configuration from environment variables
16
+ FORCE_UPDATE=${AUTOPM_FORCE:-0}
17
+ CREATE_BACKUP=${AUTOPM_BACKUP:-1}
18
+ PRESERVE_CONFIG=${AUTOPM_PRESERVE_CONFIG:-1}
19
+
20
+ # Paths
21
+ CLAUDE_DIR=".claude"
22
+ BACKUP_DIR=".claude-backup-$(date +%Y%m%d-%H%M%S)"
23
+ AUTOPM_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
24
+ FRAMEWORK_SOURCE="$AUTOPM_ROOT/autopm/.claude"
25
+
26
+ echo -e "${BLUE}🔄 ClaudeAutoPM Framework Update${NC}"
27
+ echo -e "${BLUE}=================================${NC}"
28
+
29
+ # Check if this is a ClaudeAutoPM project
30
+ if [ ! -d "$CLAUDE_DIR" ]; then
31
+ echo -e "${RED}❌ Error: No .claude directory found${NC}"
32
+ echo -e "${YELLOW}💡 This doesn't appear to be a ClaudeAutoPM project${NC}"
33
+ echo -e "${YELLOW} Run 'autopm install' to install the framework${NC}"
34
+ exit 1
35
+ fi
36
+
37
+ # Check if config.json exists to verify it's our installation
38
+ if [ ! -f "$CLAUDE_DIR/config.json" ]; then
39
+ echo -e "${RED}❌ Error: No config.json found in .claude directory${NC}"
40
+ echo -e "${YELLOW}💡 This might not be a ClaudeAutoPM installation${NC}"
41
+ if [ "$FORCE_UPDATE" = "0" ]; then
42
+ echo -e "${YELLOW} Use --force to proceed anyway${NC}"
43
+ exit 1
44
+ fi
45
+ fi
46
+
47
+ # Get current version if available
48
+ CURRENT_VERSION=""
49
+ if [ -f "$CLAUDE_DIR/config.json" ]; then
50
+ CURRENT_VERSION=$(grep -o '"version"[[:space:]]*:[[:space:]]*"[^"]*"' "$CLAUDE_DIR/config.json" | sed 's/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/' || echo "unknown")
51
+ fi
52
+
53
+ # Get new version from package.json
54
+ NEW_VERSION=""
55
+ if [ -f "$AUTOPM_ROOT/package.json" ]; then
56
+ NEW_VERSION=$(grep -o '"version"[[:space:]]*:[[:space:]]*"[^"]*"' "$AUTOPM_ROOT/package.json" | sed 's/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/' || echo "unknown")
57
+ fi
58
+
59
+ echo -e "${BLUE}📋 Update Information:${NC}"
60
+ echo -e " Current version: ${CURRENT_VERSION:-unknown}"
61
+ echo -e " New version: ${NEW_VERSION:-unknown}"
62
+ echo -e " Project: $(pwd)"
63
+ echo ""
64
+
65
+ # Check if versions are the same
66
+ if [ "$CURRENT_VERSION" = "$NEW_VERSION" ] && [ "$FORCE_UPDATE" = "0" ]; then
67
+ echo -e "${GREEN}✅ Already up to date (v$CURRENT_VERSION)${NC}"
68
+ echo -e "${YELLOW}💡 Use --force to reinstall anyway${NC}"
69
+ exit 0
70
+ fi
71
+
72
+ # Create backup if requested
73
+ if [ "$CREATE_BACKUP" = "1" ]; then
74
+ echo -e "${YELLOW}📦 Creating backup...${NC}"
75
+ if cp -r "$CLAUDE_DIR" "$BACKUP_DIR"; then
76
+ echo -e "${GREEN}✅ Backup created: $BACKUP_DIR${NC}"
77
+ else
78
+ echo -e "${RED}❌ Failed to create backup${NC}"
79
+ exit 1
80
+ fi
81
+ fi
82
+
83
+ # Preserve important files
84
+ PRESERVED_FILES=()
85
+ if [ "$PRESERVE_CONFIG" = "1" ]; then
86
+ echo -e "${YELLOW}💾 Preserving configuration files...${NC}"
87
+
88
+ # List of files to preserve
89
+ FILES_TO_PRESERVE=(
90
+ "config.json"
91
+ "settings.local.json"
92
+ "teams.json"
93
+ ".env.local"
94
+ )
95
+
96
+ # Create temp directory for preserved files
97
+ TEMP_PRESERVE_DIR=$(mktemp -d)
98
+
99
+ for file in "${FILES_TO_PRESERVE[@]}"; do
100
+ if [ -f "$CLAUDE_DIR/$file" ]; then
101
+ cp "$CLAUDE_DIR/$file" "$TEMP_PRESERVE_DIR/"
102
+ PRESERVED_FILES+=("$file")
103
+ echo -e " 📄 Preserved: $file"
104
+ fi
105
+ done
106
+ fi
107
+
108
+ # Preserve epics and PRDs directories
109
+ echo -e "${YELLOW}📁 Preserving project data...${NC}"
110
+ PROJECT_DIRS=(
111
+ "epics"
112
+ "prds"
113
+ )
114
+
115
+ TEMP_PROJECT_DIR=$(mktemp -d)
116
+ for dir in "${PROJECT_DIRS[@]}"; do
117
+ if [ -d "$CLAUDE_DIR/$dir" ]; then
118
+ cp -r "$CLAUDE_DIR/$dir" "$TEMP_PROJECT_DIR/"
119
+ echo -e " 📂 Preserved: $dir/"
120
+ fi
121
+ done
122
+
123
+ # Remove old framework files (but preserve data)
124
+ echo -e "${YELLOW}🗑️ Removing old framework files...${NC}"
125
+
126
+ # List of framework directories to update
127
+ FRAMEWORK_DIRS=(
128
+ "agents"
129
+ "commands"
130
+ "rules"
131
+ "scripts"
132
+ "checklists"
133
+ "hooks"
134
+ "lib"
135
+ "mcp"
136
+ "providers"
137
+ "strategies"
138
+ "templates"
139
+ )
140
+
141
+ for dir in "${FRAMEWORK_DIRS[@]}"; do
142
+ if [ -d "$CLAUDE_DIR/$dir" ]; then
143
+ rm -rf "$CLAUDE_DIR/$dir"
144
+ echo -e " 🗑️ Removed: $dir/"
145
+ fi
146
+ done
147
+
148
+ # Remove framework files from root
149
+ FRAMEWORK_FILES=(
150
+ "base.md"
151
+ "mcp-servers.json"
152
+ )
153
+
154
+ for file in "${FRAMEWORK_FILES[@]}"; do
155
+ if [ -f "$CLAUDE_DIR/$file" ]; then
156
+ rm -f "$CLAUDE_DIR/$file"
157
+ echo -e " 🗑️ Removed: $file"
158
+ fi
159
+ done
160
+
161
+ # Copy new framework files
162
+ echo -e "${YELLOW}📥 Installing new framework files...${NC}"
163
+
164
+ if [ ! -d "$FRAMEWORK_SOURCE" ]; then
165
+ echo -e "${RED}❌ Error: Framework source not found at $FRAMEWORK_SOURCE${NC}"
166
+ exit 1
167
+ fi
168
+
169
+ # Copy framework directories
170
+ for dir in "${FRAMEWORK_DIRS[@]}"; do
171
+ if [ -d "$FRAMEWORK_SOURCE/$dir" ]; then
172
+ cp -r "$FRAMEWORK_SOURCE/$dir" "$CLAUDE_DIR/"
173
+ echo -e " ✅ Installed: $dir/"
174
+ fi
175
+ done
176
+
177
+ # Copy framework files
178
+ for file in "${FRAMEWORK_FILES[@]}"; do
179
+ if [ -f "$FRAMEWORK_SOURCE/$file" ]; then
180
+ cp "$FRAMEWORK_SOURCE/$file" "$CLAUDE_DIR/"
181
+ echo -e " ✅ Installed: $file"
182
+ fi
183
+ done
184
+
185
+ # Update config.json with new version and timestamp
186
+ if [ -f "$TEMP_PRESERVE_DIR/config.json" ]; then
187
+ # Update the preserved config with new version
188
+ sed -i.bak "s/\"version\"[[:space:]]*:[[:space:]]*\"[^\"]*\"/\"version\": \"$NEW_VERSION\"/" "$TEMP_PRESERVE_DIR/config.json" 2>/dev/null || true
189
+ sed -i.bak "s/\"updated\"[[:space:]]*:[[:space:]]*\"[^\"]*\"/\"updated\": \"$(date -u +"%Y-%m-%dT%H:%M:%SZ")\"/" "$TEMP_PRESERVE_DIR/config.json" 2>/dev/null || true
190
+ rm -f "$TEMP_PRESERVE_DIR/config.json.bak" 2>/dev/null || true
191
+ else
192
+ # Create new config if none exists
193
+ cat > "$TEMP_PRESERVE_DIR/config.json" << EOF
194
+ {
195
+ "version": "$NEW_VERSION",
196
+ "updated": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")",
197
+ "provider": "github"
198
+ }
199
+ EOF
200
+ fi
201
+
202
+ # Restore preserved files
203
+ if [ "$PRESERVE_CONFIG" = "1" ] && [ ${#PRESERVED_FILES[@]} -gt 0 ]; then
204
+ echo -e "${YELLOW}♻️ Restoring preserved files...${NC}"
205
+ for file in "${PRESERVED_FILES[@]}"; do
206
+ if [ -f "$TEMP_PRESERVE_DIR/$file" ]; then
207
+ cp "$TEMP_PRESERVE_DIR/$file" "$CLAUDE_DIR/"
208
+ echo -e " ♻️ Restored: $file"
209
+ fi
210
+ done
211
+ fi
212
+
213
+ # Restore project directories
214
+ echo -e "${YELLOW}♻️ Restoring project data...${NC}"
215
+ for dir in "${PROJECT_DIRS[@]}"; do
216
+ if [ -d "$TEMP_PROJECT_DIR/$dir" ]; then
217
+ cp -r "$TEMP_PROJECT_DIR/$dir" "$CLAUDE_DIR/"
218
+ echo -e " ♻️ Restored: $dir/"
219
+ fi
220
+ done
221
+
222
+ # Clean up temp directories
223
+ rm -rf "$TEMP_PRESERVE_DIR" "$TEMP_PROJECT_DIR" 2>/dev/null || true
224
+
225
+ # Update scripts permissions
226
+ if [ -d "$CLAUDE_DIR/scripts" ]; then
227
+ echo -e "${YELLOW}🔧 Setting script permissions...${NC}"
228
+ find "$CLAUDE_DIR/scripts" -name "*.sh" -exec chmod +x {} \; 2>/dev/null || true
229
+ find "$CLAUDE_DIR/hooks" -name "*.sh" -exec chmod +x {} \; 2>/dev/null || true
230
+ fi
231
+
232
+ # Success message
233
+ echo ""
234
+ echo -e "${GREEN}✅ Update completed successfully!${NC}"
235
+ echo ""
236
+ echo -e "${BLUE}📊 Summary:${NC}"
237
+ echo -e " Updated from: ${CURRENT_VERSION:-unknown} → $NEW_VERSION"
238
+ echo -e " Backup: ${CREATE_BACKUP:+$BACKUP_DIR}"
239
+ echo -e " Preserved: ${#PRESERVED_FILES[@]} config files, ${#PROJECT_DIRS[@]} project directories"
240
+ echo ""
241
+
242
+ # Show what's new (if we can detect major changes)
243
+ if [ "$CURRENT_VERSION" != "$NEW_VERSION" ]; then
244
+ echo -e "${BLUE}🆕 What's New in v$NEW_VERSION:${NC}"
245
+ echo -e " • Enhanced epic-decompose for multi-epic support"
246
+ echo -e " • Improved epic-sync with multi-epic workflows"
247
+ echo -e " • Updated release automation"
248
+ echo -e " • Better documentation and examples"
249
+ echo ""
250
+ fi
251
+
252
+ echo -e "${BLUE}🚀 Next Steps:${NC}"
253
+ echo -e " • Verify configuration: autopm config show"
254
+ echo -e " • Test PM commands: /pm:validate"
255
+ echo -e " • Check documentation: autopm --help"
256
+ echo ""
257
+
258
+ if [ "$CREATE_BACKUP" = "1" ]; then
259
+ echo -e "${YELLOW}💡 Backup Note:${NC}"
260
+ echo -e " Your backup is saved at: $BACKUP_DIR"
261
+ echo -e " Remove it when you're satisfied with the update"
262
+ echo ""
263
+ fi
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-autopm",
3
- "version": "1.11.6",
3
+ "version": "1.11.10",
4
4
  "description": "Autonomous Project Management Framework for Claude Code - Advanced AI-powered development automation",
5
5
  "main": "bin/autopm.js",
6
6
  "bin": {