jettypod 4.4.36 → 4.4.37
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/lib/work-commands/index.js +24 -4
- package/lib/work-tracking/index.js +14 -24
- package/package.json +1 -1
|
@@ -101,11 +101,31 @@ async function startWork(id) {
|
|
|
101
101
|
errorMsg += ` jettypod work start ${c.id} # ${c.title}\n`;
|
|
102
102
|
});
|
|
103
103
|
} else if (inProgressChores.length === 0) {
|
|
104
|
-
|
|
104
|
+
const doneChores = chores.filter(c => c.status === 'done');
|
|
105
|
+
if (doneChores.length === chores.length) {
|
|
106
|
+
errorMsg += `All chores are complete. This feature is done.\n`;
|
|
107
|
+
errorMsg += `Use: jettypod work status ${id} done # to mark the feature as done`;
|
|
108
|
+
} else {
|
|
109
|
+
errorMsg += `No chores available to start.\n`;
|
|
110
|
+
errorMsg += `Use: jettypod backlog # to see work item status`;
|
|
111
|
+
}
|
|
105
112
|
}
|
|
106
113
|
} else {
|
|
107
|
-
|
|
108
|
-
|
|
114
|
+
// No chores - check feature phase to give accurate guidance
|
|
115
|
+
if (workItem.status === 'done') {
|
|
116
|
+
errorMsg += `This feature is already done. No action needed.`;
|
|
117
|
+
} else if (workItem.phase === 'implementation') {
|
|
118
|
+
// Feature is in implementation but has no chores - unusual state
|
|
119
|
+
errorMsg += `This feature is in implementation phase but has no chores.\n`;
|
|
120
|
+
errorMsg += `The feature-planning skill should have generated chores.\n\n`;
|
|
121
|
+
errorMsg += `To regenerate chores, use the feature-planning skill:\n`;
|
|
122
|
+
errorMsg += ` Invoke skill: feature-planning`;
|
|
123
|
+
} else {
|
|
124
|
+
// Feature needs planning
|
|
125
|
+
errorMsg += `This feature needs planning first.\n\n`;
|
|
126
|
+
errorMsg += `Use the feature-planning skill to plan it:\n`;
|
|
127
|
+
errorMsg += ` Invoke skill: feature-planning`;
|
|
128
|
+
}
|
|
109
129
|
}
|
|
110
130
|
|
|
111
131
|
return reject(new Error(errorMsg));
|
|
@@ -116,7 +136,7 @@ async function startWork(id) {
|
|
|
116
136
|
|
|
117
137
|
// Prevent starting epics directly
|
|
118
138
|
if (workItem.type === 'epic') {
|
|
119
|
-
return reject(new Error(`Cannot start epic #${id} directly
|
|
139
|
+
return reject(new Error(`Cannot start epic #${id} directly.\n\nTo plan this epic's features, use the epic-planning skill:\n Invoke skill: epic-planning\n\nOr start an existing feature/chore:\n jettypod backlog # to see available work items`));
|
|
120
140
|
}
|
|
121
141
|
|
|
122
142
|
// Update status to in_progress if currently todo
|
|
@@ -1077,16 +1077,14 @@ async function main() {
|
|
|
1077
1077
|
console.log('🎯 Plan this epic now?');
|
|
1078
1078
|
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
1079
1079
|
console.log('');
|
|
1080
|
-
console.log('
|
|
1081
|
-
console.log(
|
|
1080
|
+
console.log('Use the epic-planning skill:');
|
|
1081
|
+
console.log(' Invoke skill: epic-planning');
|
|
1082
1082
|
console.log('');
|
|
1083
|
-
console.log('
|
|
1083
|
+
console.log('The skill will guide you to:');
|
|
1084
1084
|
console.log(' • Brainstorm features for this epic');
|
|
1085
1085
|
console.log(' • Identify architectural decisions (if needed)');
|
|
1086
1086
|
console.log(' • Create features automatically');
|
|
1087
1087
|
console.log('');
|
|
1088
|
-
console.log('Or run: jettypod work epic-planning ' + newId);
|
|
1089
|
-
console.log('');
|
|
1090
1088
|
console.log('💡 You can also plan later when ready');
|
|
1091
1089
|
}
|
|
1092
1090
|
|
|
@@ -1101,10 +1099,8 @@ async function main() {
|
|
|
1101
1099
|
console.log('');
|
|
1102
1100
|
console.log('💡 Tip: Consider planning this epic first');
|
|
1103
1101
|
console.log('');
|
|
1104
|
-
console.log('
|
|
1105
|
-
console.log(
|
|
1106
|
-
console.log('');
|
|
1107
|
-
console.log(`Or run: jettypod work epic-planning ${parentId}`);
|
|
1102
|
+
console.log('Use the epic-planning skill:');
|
|
1103
|
+
console.log(' Invoke skill: epic-planning');
|
|
1108
1104
|
}
|
|
1109
1105
|
});
|
|
1110
1106
|
}
|
|
@@ -1831,16 +1827,14 @@ async function main() {
|
|
|
1831
1827
|
console.log(`Description: ${epic.description || 'Not provided'}`);
|
|
1832
1828
|
console.log('Needs Discovery: true');
|
|
1833
1829
|
console.log('');
|
|
1834
|
-
console.log('
|
|
1835
|
-
console.log(
|
|
1830
|
+
console.log('Use the epic-planning skill:');
|
|
1831
|
+
console.log(' Invoke skill: epic-planning');
|
|
1836
1832
|
console.log('');
|
|
1837
|
-
console.log('
|
|
1833
|
+
console.log('The skill will guide you through:');
|
|
1838
1834
|
console.log(' 1. Feature brainstorming');
|
|
1839
1835
|
console.log(' 2. Architectural decisions (if needed)');
|
|
1840
1836
|
console.log(' 3. Prototype validation (optional)');
|
|
1841
1837
|
console.log(' 4. Feature creation');
|
|
1842
|
-
console.log('');
|
|
1843
|
-
console.log('📋 The skill is at: .claude/skills/epic-planning/SKILL.md');
|
|
1844
1838
|
}
|
|
1845
1839
|
);
|
|
1846
1840
|
});
|
|
@@ -2236,17 +2230,15 @@ async function main() {
|
|
|
2236
2230
|
}
|
|
2237
2231
|
}
|
|
2238
2232
|
console.log('');
|
|
2239
|
-
console.log('
|
|
2240
|
-
console.log(
|
|
2233
|
+
console.log('Use the feature-planning skill:');
|
|
2234
|
+
console.log(' Invoke skill: feature-planning');
|
|
2241
2235
|
console.log('');
|
|
2242
|
-
console.log('
|
|
2236
|
+
console.log('The skill will guide you through:');
|
|
2243
2237
|
console.log(' 1. Suggesting 3 UX approaches');
|
|
2244
2238
|
console.log(' 2. Optional prototyping');
|
|
2245
2239
|
console.log(' 3. Choosing the winner');
|
|
2246
2240
|
console.log(' 4. Generating BDD scenarios');
|
|
2247
2241
|
console.log(' 5. Transitioning to implementation');
|
|
2248
|
-
console.log('');
|
|
2249
|
-
console.log('📋 The skill is at: .claude/skills/feature-planning/SKILL.md');
|
|
2250
2242
|
}
|
|
2251
2243
|
);
|
|
2252
2244
|
} else {
|
|
@@ -2261,17 +2253,15 @@ async function main() {
|
|
|
2261
2253
|
console.log(`Title: ${feature.title}`);
|
|
2262
2254
|
console.log(`Description: ${feature.description || 'Not provided'}`);
|
|
2263
2255
|
console.log('');
|
|
2264
|
-
console.log('
|
|
2265
|
-
console.log(
|
|
2256
|
+
console.log('Use the feature-planning skill:');
|
|
2257
|
+
console.log(' Invoke skill: feature-planning');
|
|
2266
2258
|
console.log('');
|
|
2267
|
-
console.log('
|
|
2259
|
+
console.log('The skill will guide you through:');
|
|
2268
2260
|
console.log(' 1. Suggesting 3 UX approaches');
|
|
2269
2261
|
console.log(' 2. Optional prototyping');
|
|
2270
2262
|
console.log(' 3. Choosing the winner');
|
|
2271
2263
|
console.log(' 4. Generating BDD scenarios');
|
|
2272
2264
|
console.log(' 5. Transitioning to implementation');
|
|
2273
|
-
console.log('');
|
|
2274
|
-
console.log('📋 The skill is at: .claude/skills/feature-planning/SKILL.md');
|
|
2275
2265
|
}
|
|
2276
2266
|
});
|
|
2277
2267
|
});
|