prizmkit 1.0.101 → 1.0.103
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/bundled/VERSION.json
CHANGED
|
@@ -1125,8 +1125,8 @@ case "${1:-run}" in
|
|
|
1125
1125
|
run_one "$@"
|
|
1126
1126
|
else
|
|
1127
1127
|
# Parse positional and --features flag
|
|
1128
|
-
|
|
1129
|
-
|
|
1128
|
+
_run_feature_list="feature-list.json"
|
|
1129
|
+
_run_features_filter=""
|
|
1130
1130
|
while [[ $# -gt 0 ]]; do
|
|
1131
1131
|
case "$1" in
|
|
1132
1132
|
--features)
|
|
@@ -75,12 +75,31 @@ Actions:
|
|
|
75
75
|
3. Append features with next sequential `F-NNN` IDs
|
|
76
76
|
4. Preserve style/language/detail consistency with existing plan
|
|
77
77
|
|
|
78
|
+
## Intent Confirmation (Mandatory First Step)
|
|
79
|
+
|
|
80
|
+
After scenario routing, immediately confirm the user's deliverable intent:
|
|
81
|
+
|
|
82
|
+
1. **Ask explicitly**:
|
|
83
|
+
- "本次规划的目标是生成可执行的 `feature-list.json` 吗?还是只想先讨论想法?"
|
|
84
|
+
- (English: "Is the goal to produce a `feature-list.json` for pipeline execution, or just explore ideas?")
|
|
85
|
+
|
|
86
|
+
2. **Route by answer**:
|
|
87
|
+
- **"Produce feature-list.json"** → Continue to Core Workflow. Set session goal = `produce`.
|
|
88
|
+
- **"Just explore ideas"** → Enter **Exploration Mode**:
|
|
89
|
+
- Run Phases 1-5 normally (vision, constraints, feature proposals, refinement, DAG)
|
|
90
|
+
- At Phase 5 completion, re-ask: "Ideas are taking shape. Ready to generate `feature-list.json` now?"
|
|
91
|
+
- If yes → continue to Phase 6
|
|
92
|
+
- If no → summarize discussion, suggest saving notes, end session
|
|
93
|
+
|
|
94
|
+
3. **Session goal tracking**: Track the intent (`produce` or `explore`) throughout the session. If `explore`, always re-prompt before ending.
|
|
95
|
+
|
|
78
96
|
## Core Workflow
|
|
79
97
|
|
|
80
98
|
Execute the selected scenario workflow in conversation mode with mandatory checkpoints:
|
|
81
99
|
|
|
82
100
|
### Interactive Phases
|
|
83
101
|
1. clarify business goal and scope
|
|
102
|
+
1.1 confirm deliverable intent (→ Intent Confirmation)
|
|
84
103
|
2. confirm constraints and tech assumptions
|
|
85
104
|
3. propose feature set with dependencies
|
|
86
105
|
4. refine descriptions and acceptance criteria
|
|
@@ -95,6 +114,7 @@ Checkpoints catch cascading errors early — skipping one means the next phase b
|
|
|
95
114
|
|
|
96
115
|
| Checkpoint | Artifact/State | Criteria | Phase |
|
|
97
116
|
|-----------|----------------|----------|-------|
|
|
117
|
+
| **CP-AP-0** | Intent Confirmed | User confirmed session goal (produce / explore) | 1 |
|
|
98
118
|
| **CP-AP-1** | Vision Summary | Goal/users/differentiators confirmed by user | 1-2 |
|
|
99
119
|
| **CP-AP-2** | Feature Proposals | Feature set with titles+deps identified (pre-validation) | 3-5 |
|
|
100
120
|
| **CP-AP-3** | DAG Validity | No cycles, dependencies resolved (validation dry-run) | 6 |
|
|
@@ -331,6 +351,29 @@ The pipeline reads `feature-list.json` from the project root by default. If the
|
|
|
331
351
|
|
|
332
352
|
Maintainer note: evaluation workflow moved to `assets/evaluation-guide.md`.
|
|
333
353
|
|
|
354
|
+
## Session Exit Gate
|
|
355
|
+
|
|
356
|
+
Prevent accidental session exit without deliverable completion.
|
|
357
|
+
|
|
358
|
+
### Trigger Conditions
|
|
359
|
+
|
|
360
|
+
Activate exit gate when ALL of these are true:
|
|
361
|
+
- Session goal = `produce` (user confirmed they want feature-list.json via CP-AP-0)
|
|
362
|
+
- Current phase < Phase 7 (final validation not yet passed)
|
|
363
|
+
- No valid `feature-list.json` has been written in this session
|
|
364
|
+
|
|
365
|
+
### Gate Behavior
|
|
366
|
+
|
|
367
|
+
When the session appears to be ending (user says "thanks", "that's all", "bye", or conversation goes idle after Phase 3+):
|
|
368
|
+
|
|
369
|
+
1. **Remind**: "You set out to produce `feature-list.json` but we haven't completed it yet."
|
|
370
|
+
2. **Offer 3 options**:
|
|
371
|
+
- **(a) Continue to completion** — resume from current phase
|
|
372
|
+
- **(b) Abandon** — confirm user explicitly wants to exit without output
|
|
373
|
+
3. **If (b) Save draft**: Write the draft file and remind user: "This is a draft, not validated. Run `/app-planner` again to resume and finalize."
|
|
374
|
+
4. **If (c) Abandon**: Accept without further prompting.
|
|
375
|
+
|
|
376
|
+
|
|
334
377
|
## Handoff Message Template
|
|
335
378
|
|
|
336
379
|
After successful validation, report:
|
package/package.json
CHANGED
package/src/scaffold.js
CHANGED
|
@@ -655,18 +655,8 @@ export async function installGitignore(projectRoot, options, dryRun) {
|
|
|
655
655
|
}
|
|
656
656
|
|
|
657
657
|
if (await fs.pathExists(targetPath)) {
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
// If .prizmkit/ is already ignored, nothing to do
|
|
661
|
-
if (existing.includes('.prizmkit/')) {
|
|
662
|
-
console.log(chalk.yellow(` ⚠ .gitignore 已包含 .prizmkit/ 条目,跳过`));
|
|
663
|
-
return;
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
// No PrizmKit entries at all — append full .prizmkit/ block
|
|
667
|
-
const prizmkitSection = '\n\n# PrizmKit\n.prizmkit/\n';
|
|
668
|
-
await fs.appendFile(targetPath, prizmkitSection);
|
|
669
|
-
console.log(chalk.green(` ✓ .gitignore (追加 PrizmKit 条目)`));
|
|
658
|
+
console.log(chalk.yellow(` ⚠ .gitignore 已存在,跳过`));
|
|
659
|
+
return;
|
|
670
660
|
} else {
|
|
671
661
|
const content = generateGitignore({ pipeline: options.pipeline });
|
|
672
662
|
await fs.writeFile(targetPath, content);
|