claude-autopm 1.23.2 → 1.24.2

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.
Files changed (26) hide show
  1. package/README.md +1 -1
  2. package/autopm/.claude/agents/frameworks/e2e-test-engineer.md +26 -1
  3. package/autopm/.claude/agents/frameworks/nats-messaging-expert.md +28 -3
  4. package/autopm/.claude/agents/frameworks/react-frontend-engineer.md +26 -1
  5. package/autopm/.claude/agents/frameworks/react-ui-expert.md +26 -1
  6. package/autopm/.claude/agents/frameworks/tailwindcss-expert.md +26 -1
  7. package/autopm/.claude/agents/frameworks/ux-design-expert.md +25 -1
  8. package/autopm/.claude/agents/languages/bash-scripting-expert.md +26 -1
  9. package/autopm/.claude/agents/languages/javascript-frontend-engineer.md +26 -1
  10. package/autopm/.claude/agents/languages/nodejs-backend-engineer.md +27 -1
  11. package/autopm/.claude/agents/languages/python-backend-engineer.md +27 -2
  12. package/autopm/.claude/agents/languages/python-backend-expert.md +26 -1
  13. package/autopm/.claude/commands/pm/context-create.md +136 -0
  14. package/autopm/.claude/commands/pm/context-prime.md +170 -0
  15. package/autopm/.claude/commands/pm/context-update.md +292 -0
  16. package/autopm/.claude/commands/pm/epic-decompose.md +19 -0
  17. package/autopm/.claude/commands/pm/epic-merge.md +2 -2
  18. package/autopm/.claude/lib/commands/pm/epicSyncTasks.js +190 -0
  19. package/autopm/.claude/scripts/pm/prd-parse.js +19 -1
  20. package/autopm/.claude/templates/context-templates/progress.md.template +25 -0
  21. package/autopm/.claude/templates/context-templates/project-brief.md.template +19 -0
  22. package/autopm/.claude/templates/context-templates/project-structure.md.template +23 -0
  23. package/autopm/.claude/templates/context-templates/tech-context.md.template +23 -0
  24. package/package.json +1 -1
  25. package/scripts/fix-invalid-command-refs.sh +141 -0
  26. package/scripts/fix-invalid-refs-simple.sh +49 -0
@@ -295,9 +295,27 @@ class PrdParser {
295
295
  console.log(` • Security: ${technicalApproach.security.length} controls`);
296
296
  }
297
297
 
298
+ // Determine if PRD is complex enough to suggest splitting
299
+ const componentCount =
300
+ (technicalApproach.frontend.length > 0 ? 1 : 0) +
301
+ (technicalApproach.backend.length > 0 ? 1 : 0) +
302
+ (technicalApproach.data.length > 0 ? 1 : 0) +
303
+ (technicalApproach.security.length > 0 ? 1 : 0);
304
+
305
+ const isComplexPrd = componentCount >= 3 || tasks.length > 10;
306
+
298
307
  console.log(`\nšŸ’” Next Steps:`);
299
308
  console.log(` 1. Review epic: /pm:epic-show ${featureName}`);
300
- console.log(` 2. Decompose into tasks: /pm:epic-decompose ${featureName}`);
309
+
310
+ if (isComplexPrd) {
311
+ console.log(` 2. Consider splitting into epics: /pm:epic-split ${featureName}`);
312
+ console.log(` (Complex PRD detected - ${componentCount} components, ${tasks.length} tasks)`);
313
+ console.log(` OR decompose as single epic: /pm:epic-decompose ${featureName}`);
314
+ } else {
315
+ console.log(` 2. Decompose into tasks: /pm:epic-decompose ${featureName}`);
316
+ console.log(` (For complex PRDs, consider: /pm:epic-split ${featureName})`);
317
+ }
318
+
301
319
  console.log(` 3. Sync to GitHub: /pm:epic-sync ${featureName}`);
302
320
  console.log(` 4. Start implementation: /pm:issue-start TASK-1`);
303
321
 
@@ -0,0 +1,25 @@
1
+ # Project Progress
2
+
3
+ ## Current Status
4
+ - Phase: [Phase name]
5
+ - Progress: [X]%
6
+ - Last Updated: [Date]
7
+
8
+ ## Completed
9
+ - [x] Task 1
10
+ - [x] Task 2
11
+
12
+ ## In Progress
13
+ - [ ] Task 3
14
+ - [ ] Task 4
15
+
16
+ ## Next Steps
17
+ 1. [Next action]
18
+ 2. [Next action]
19
+
20
+ ## Blockers
21
+ - [Any blockers]
22
+
23
+ ## Recent Updates
24
+ - [Recent change 1]
25
+ - [Recent change 2]
@@ -0,0 +1,19 @@
1
+ # Project Brief
2
+
3
+ ## Project Name
4
+ [Project name]
5
+
6
+ ## Scope & Objectives
7
+ - Goal: [Primary goal]
8
+ - Target users: [User base]
9
+ - Key outcomes: [Expected results]
10
+
11
+ ## Constraints
12
+ - Timeline: [Time constraints]
13
+ - Resources: [Available resources]
14
+ - Technical: [Technical limitations]
15
+
16
+ ## Success Criteria
17
+ - [Success criterion 1]
18
+ - [Success criterion 2]
19
+ - [Success criterion 3]
@@ -0,0 +1,23 @@
1
+ # Project Structure
2
+
3
+ ## Directory Layout
4
+ ```
5
+ project/
6
+ ā”œā”€ā”€ src/ # Source code
7
+ ā”œā”€ā”€ test/ # Tests
8
+ ā”œā”€ā”€ .claude/ # AutoPM configuration
9
+ └── docs/ # Documentation
10
+ ```
11
+
12
+ ## Key Files
13
+ - **package.json**: Dependencies and scripts
14
+ - **.claude/**: PM configuration
15
+ - **README.md**: Project documentation
16
+
17
+ ## Module Organization
18
+ - [Module description]
19
+ - [Module description]
20
+
21
+ ## Configuration Files
22
+ - [Config file and purpose]
23
+ - [Config file and purpose]
@@ -0,0 +1,23 @@
1
+ # Technical Context
2
+
3
+ ## Technology Stack
4
+ - **Frontend**: [Technologies]
5
+ - **Backend**: [Technologies]
6
+ - **Database**: [Database]
7
+ - **Infrastructure**: [Infrastructure]
8
+
9
+ ## Development Environment
10
+ - Node.js: [version]
11
+ - Package Manager: [npm/yarn/pnpm]
12
+ - Testing Framework: [Jest/etc]
13
+
14
+ ## Dependencies
15
+ [Key dependencies and their purposes]
16
+
17
+ ## Architecture Patterns
18
+ - [Pattern 1]
19
+ - [Pattern 2]
20
+
21
+ ## Development Practices
22
+ - [Practice 1]
23
+ - [Practice 2]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-autopm",
3
- "version": "1.23.2",
3
+ "version": "1.24.2",
4
4
  "description": "Autonomous Project Management Framework for Claude Code - Advanced AI-powered development automation",
5
5
  "main": "bin/autopm.js",
6
6
  "bin": {
@@ -0,0 +1,141 @@
1
+ #!/bin/bash
2
+ # Fix invalid command references in documentation
3
+
4
+ set -e
5
+
6
+ echo "šŸ”§ Fixing invalid command references..."
7
+
8
+ # Replacement map (escaped for use in sed)
9
+ declare -A REPLACEMENTS=(
10
+ ["\/pm:epic-new"]="\/pm:prd-new"
11
+ ["\/pm:done"]="\/pm:issue-close"
12
+ ["\/pm:next-task"]="\/pm:next"
13
+ ["\/pm:epic-resolve"]="\/pm:epic-close"
14
+ ["\/pm:epic-stop"]="\/pm:epic-close"
15
+ ["\/pm:prd-split"]="\/pm:epic-split"
16
+ )
17
+
18
+ # Commands to remove (no replacement) - escaped
19
+ REMOVE_COMMANDS=(
20
+ "\/pm:azure-next"
21
+ "\/pm:azure-sync"
22
+ "\/pm:board"
23
+ "\/pm:build"
24
+ "\/pm:config"
25
+ "\/pm:optimize"
26
+ "\/pm:pr-create"
27
+ "\/pm:pr-list"
28
+ "\/pm:query"
29
+ "\/pm:release"
30
+ "\/pm:report"
31
+ "\/pm:resource"
32
+ "\/pm:resource-action"
33
+ "\/pm:sprint"
34
+ "\/pm:sprint-status"
35
+ "\/pm:sync-all"
36
+ "\/pm:test"
37
+ "\/pm:todo"
38
+ "\/pm:wip"
39
+ )
40
+
41
+ # Generic commands to remove (too vague) - escaped
42
+ GENERIC_COMMANDS=(
43
+ "\/pm:epic"
44
+ "\/pm:issue"
45
+ "\/pm:prd"
46
+ "\/pm:pr"
47
+ )
48
+
49
+ total_changes=0
50
+
51
+ # Function to replace in file
52
+ replace_in_file() {
53
+ local file="$1"
54
+ local old="$2"
55
+ local new="$3"
56
+
57
+ if grep -q "$old" "$file" 2>/dev/null; then
58
+ if [[ "$OSTYPE" == "darwin"* ]]; then
59
+ sed -i '' "s|$old|$new|g" "$file"
60
+ else
61
+ sed -i "s|$old|$new|g" "$file"
62
+ fi
63
+ echo " āœ“ $file: $old → $new"
64
+ ((total_changes++))
65
+ fi
66
+ }
67
+
68
+ # Function to remove command references
69
+ remove_from_file() {
70
+ local file="$1"
71
+ local cmd="$2"
72
+
73
+ if grep -q "$cmd" "$file" 2>/dev/null; then
74
+ # Remove lines containing the command
75
+ if [[ "$OSTYPE" == "darwin"* ]]; then
76
+ sed -i '' "/$cmd/d" "$file"
77
+ else
78
+ sed -i "/$cmd/d" "$file"
79
+ fi
80
+ echo " āœ— $file: removed $cmd"
81
+ ((total_changes++))
82
+ fi
83
+ }
84
+
85
+ echo ""
86
+ echo "=== Replacing commands with correct alternatives ==="
87
+ for old in "${!REPLACEMENTS[@]}"; do
88
+ new="${REPLACEMENTS[$old]}"
89
+ echo ""
90
+ echo "Replacing: $old → $new"
91
+
92
+ # Find files with this command (excluding our analysis doc and script)
93
+ while IFS= read -r file; do
94
+ if [[ "$file" != *"MISSING-COMMANDS-ANALYSIS.md"* ]] && \
95
+ [[ "$file" != *"fix-invalid-command-refs.sh"* ]]; then
96
+ replace_in_file "$file" "$old" "$new"
97
+ fi
98
+ done < <(grep -rl "$old" . --include="*.md" 2>/dev/null || true)
99
+ done
100
+
101
+ echo ""
102
+ echo "=== Removing commands with no replacement ==="
103
+ for cmd in "${REMOVE_COMMANDS[@]}"; do
104
+ echo ""
105
+ echo "Removing: $cmd"
106
+
107
+ while IFS= read -r file; do
108
+ if [[ "$file" != *"MISSING-COMMANDS-ANALYSIS.md"* ]] && \
109
+ [[ "$file" != *"fix-invalid-command-refs.sh"* ]]; then
110
+ remove_from_file "$file" "$cmd"
111
+ fi
112
+ done < <(grep -rl "$cmd" . --include="*.md" 2>/dev/null || true)
113
+ done
114
+
115
+ echo ""
116
+ echo "=== Removing generic commands (too vague) ==="
117
+ for cmd in "${GENERIC_COMMANDS[@]}"; do
118
+ echo ""
119
+ echo "Removing: $cmd (too vague - use specific commands instead)"
120
+
121
+ while IFS= read -r file; do
122
+ if [[ "$file" != *"MISSING-COMMANDS-ANALYSIS.md"* ]] && \
123
+ [[ "$file" != *"fix-invalid-command-refs.sh"* ]] && \
124
+ [[ "$file" != *"COMMANDS.md"* ]]; then
125
+ # Only remove if it's standalone, not part of a longer command
126
+ if grep -E "$cmd[[:space:]]|$cmd\$|$cmd\`" "$file" &>/dev/null; then
127
+ remove_from_file "$file" "$cmd"
128
+ fi
129
+ fi
130
+ done < <(grep -rl "$cmd" . --include="*.md" 2>/dev/null || true)
131
+ done
132
+
133
+ echo ""
134
+ echo "════════════════════════════════════════════"
135
+ echo "āœ… Complete! Total changes: $total_changes"
136
+ echo "════════════════════════════════════════════"
137
+ echo ""
138
+ echo "Next steps:"
139
+ echo "1. Review changes: git diff"
140
+ echo "2. Test affected documentation"
141
+ echo "3. Commit: git add . && git commit -m 'fix: remove invalid command references'"
@@ -0,0 +1,49 @@
1
+ #!/bin/bash
2
+ # Simple script to fix invalid command references
3
+
4
+ set -e
5
+
6
+ echo "šŸ”§ Fixing invalid command references..."
7
+ echo ""
8
+
9
+ total=0
10
+
11
+ # Function to safely replace
12
+ safe_replace() {
13
+ local old="$1"
14
+ local new="$2"
15
+ local desc="$3"
16
+
17
+ echo "Replacing: $old → $new ($desc)"
18
+
19
+ # Find and replace (exclude our analysis docs)
20
+ find . -name "*.md" -type f ! -path "*/MISSING-COMMANDS-ANALYSIS.md" ! -path "*/node_modules/*" -exec grep -l "$old" {} \; 2>/dev/null | while read file; do
21
+ if [[ "$OSTYPE" == "darwin"* ]]; then
22
+ sed -i '' "s|$old|$new|g" "$file"
23
+ else
24
+ sed -i "s|$old|$new|g" "$file"
25
+ fi
26
+ echo " āœ“ $file"
27
+ ((total++)) || true
28
+ done
29
+ }
30
+
31
+ # Replacements
32
+ echo "=== Step 1: Replacing with correct alternatives ==="
33
+ safe_replace "/pm:epic-new" "/pm:prd-new" "create PRD first"
34
+ safe_replace "/pm:done" "/pm:issue-close" "close issue"
35
+ safe_replace "/pm:next-task" "/pm:next" "get next task"
36
+ safe_replace "/pm:epic-resolve" "/pm:epic-close" "close epic"
37
+ safe_replace "/pm:epic-stop" "/pm:epic-close" "close epic"
38
+ safe_replace "/pm:prd-split" "/pm:epic-split" "split after parse"
39
+
40
+ echo ""
41
+ echo "āœ… Replacements complete!"
42
+ echo ""
43
+ echo "šŸ“ Note: The following invalid commands still exist in docs:"
44
+ echo " - Azure commands (/pm:azure-*)"
45
+ echo " - Generic commands (/pm:epic, /pm:issue, /pm:prd, /pm:pr)"
46
+ echo " - Other unimplemented commands"
47
+ echo ""
48
+ echo "These should be manually reviewed and removed/updated in context."
49
+ echo "See docs/MISSING-COMMANDS-ANALYSIS.md for full list."