prizmkit 1.1.41 → 1.1.46
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 +3 -3
- package/bundled/adapters/claude/settings-adapter.js +4 -4
- package/bundled/adapters/codebuddy/settings-adapter.js +1 -1
- package/bundled/agents/prizm-dev-team-critic.md +9 -9
- package/bundled/agents/prizm-dev-team-dev.md +13 -13
- package/bundled/agents/prizm-dev-team-reviewer.md +2 -2
- package/bundled/dev-pipeline/.env.example +6 -6
- package/bundled/dev-pipeline/README.md +32 -32
- package/bundled/dev-pipeline/assets/prizm-dev-team-integration.md +1 -1
- package/bundled/dev-pipeline/launch-bugfix-daemon.sh +5 -2
- package/bundled/dev-pipeline/launch-feature-daemon.sh +5 -2
- package/bundled/dev-pipeline/launch-refactor-daemon.sh +5 -2
- package/bundled/dev-pipeline/lib/common.sh +34 -5
- package/bundled/dev-pipeline/reset-bug.sh +7 -5
- package/bundled/dev-pipeline/reset-feature.sh +7 -5
- package/bundled/dev-pipeline/reset-refactor.sh +7 -5
- package/bundled/dev-pipeline/run-bugfix.sh +14 -11
- package/bundled/dev-pipeline/run-feature.sh +15 -12
- package/bundled/dev-pipeline/run-recovery.sh +6 -3
- package/bundled/dev-pipeline/run-refactor.sh +15 -12
- package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +15 -15
- package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +10 -5
- package/bundled/dev-pipeline/scripts/generate-recovery-prompt.py +19 -13
- package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +10 -5
- package/bundled/dev-pipeline/scripts/parse-stream-progress.py +1 -1
- package/bundled/dev-pipeline/scripts/update-bug-status.py +9 -1
- package/bundled/dev-pipeline/scripts/update-feature-status.py +13 -1
- package/bundled/dev-pipeline/scripts/update-refactor-status.py +9 -1
- package/bundled/dev-pipeline/templates/agent-prompts/critic-plan-challenge.md +1 -1
- package/bundled/dev-pipeline/templates/bootstrap-prompt.md +3 -3
- package/bundled/dev-pipeline/templates/bootstrap-tier1.md +8 -8
- package/bundled/dev-pipeline/templates/bootstrap-tier2.md +11 -11
- package/bundled/dev-pipeline/templates/bootstrap-tier3.md +9 -9
- package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +7 -7
- package/bundled/dev-pipeline/templates/refactor-bootstrap-prompt.md +4 -4
- package/bundled/dev-pipeline/templates/sections/phase-commit-full.md +5 -5
- package/bundled/dev-pipeline/templates/sections/phase-commit.md +6 -6
- package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-agent-suffix.md +1 -1
- package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-base.md +1 -1
- package/bundled/dev-pipeline/templates/sections/phase-specify-plan-full.md +2 -2
- package/bundled/dev-pipeline/templates/sections/phase0-init.md +1 -1
- package/bundled/dev-pipeline/tests/test-path-resolution.sh +100 -0
- package/bundled/rules/USAGE.md +2 -2
- package/bundled/rules/_rules-metadata.json +1 -1
- package/bundled/rules/prizm/prizm-commit-workflow.md +1 -1
- package/bundled/rules/prizm/prizm-documentation.md +4 -4
- package/bundled/rules/prizm/prizm-progressive-loading.md +3 -3
- package/bundled/skills/_metadata.json +4 -4
- package/bundled/skills/app-planner/SKILL.md +35 -7
- package/bundled/skills/bug-fix-workflow/SKILL.md +6 -6
- package/bundled/skills/bug-planner/SKILL.md +5 -5
- package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +28 -21
- package/bundled/skills/feature-pipeline-launcher/SKILL.md +28 -21
- package/bundled/skills/feature-planner/SKILL.md +5 -5
- package/bundled/skills/feature-workflow/SKILL.md +8 -8
- package/bundled/skills/prizm-kit/SKILL.md +10 -10
- package/bundled/skills/prizmkit-committer/SKILL.md +4 -2
- package/bundled/skills/prizmkit-implement/SKILL.md +2 -2
- package/bundled/skills/prizmkit-init/SKILL.md +17 -17
- package/bundled/skills/prizmkit-plan/SKILL.md +3 -3
- package/bundled/skills/prizmkit-plan/references/verification-checklist.md +2 -2
- package/bundled/skills/prizmkit-prizm-docs/SKILL.md +17 -17
- package/bundled/skills/prizmkit-prizm-docs/assets/prizm-docs-format.md +45 -45
- package/bundled/skills/prizmkit-prizm-docs/references/op-init.md +9 -9
- package/bundled/skills/prizmkit-prizm-docs/references/op-rebuild.md +1 -1
- package/bundled/skills/prizmkit-prizm-docs/references/op-status.md +2 -2
- package/bundled/skills/prizmkit-prizm-docs/references/op-update.md +3 -3
- package/bundled/skills/prizmkit-prizm-docs/references/op-validate.md +1 -1
- package/bundled/skills/prizmkit-retrospective/SKILL.md +10 -10
- package/bundled/skills/prizmkit-retrospective/references/knowledge-injection-steps.md +3 -3
- package/bundled/skills/prizmkit-retrospective/references/structural-sync-steps.md +1 -1
- package/bundled/skills/recovery-workflow/SKILL.md +15 -15
- package/bundled/skills/recovery-workflow/scripts/detect-recovery-state.py +0 -1
- package/bundled/skills/refactor-pipeline-launcher/SKILL.md +28 -21
- package/bundled/skills/refactor-planner/SKILL.md +6 -6
- package/bundled/skills/refactor-workflow/SKILL.md +9 -9
- package/bundled/team/prizm-dev-team.json +1 -1
- package/bundled/templates/hooks/commit-intent.json +2 -2
- package/bundled/templates/hooks/diff-prizm-docs.sh +8 -8
- package/bundled/templates/hooks/prizm-pre-commit.sh +4 -4
- package/bundled/templates/hooks/validate-prizm-docs.sh +4 -4
- package/bundled/templates/project-memory-template.md +4 -4
- package/package.json +1 -1
- package/src/clean.js +1 -3
- package/src/config.js +1 -1
- package/src/gitignore-template.js +4 -24
- package/src/scaffold.js +12 -11
- package/src/upgrade.js +3 -3
|
@@ -11,8 +11,8 @@ Launch the autonomous refactor pipeline from within an AI CLI conversation. The
|
|
|
11
11
|
|
|
12
12
|
Three execution modes are available. The user chooses one before configuring other options:
|
|
13
13
|
|
|
14
|
-
1. **Foreground** (recommended) —
|
|
15
|
-
2. **Background daemon** —
|
|
14
|
+
1. **Foreground** (recommended) — `.prizmkit/dev-pipeline/run-refactor.sh run`. Visible output, direct error feedback, no orphaned processes.
|
|
15
|
+
2. **Background daemon** — `.prizmkit/dev-pipeline/launch-refactor-daemon.sh`. Runs fully detached, survives AI CLI session closure.
|
|
16
16
|
3. **Manual** — Display the assembled command(s) only. Do not execute anything. User runs them on their own.
|
|
17
17
|
|
|
18
18
|
### When to Use
|
|
@@ -45,7 +45,7 @@ Three execution modes are available. The user chooses one before configuring oth
|
|
|
45
45
|
|
|
46
46
|
Before any action, validate:
|
|
47
47
|
|
|
48
|
-
1. **refactor pipeline exists**: Confirm
|
|
48
|
+
1. **refactor pipeline exists**: Confirm `.prizmkit/dev-pipeline/launch-refactor-daemon.sh` and `.prizmkit/dev-pipeline/run-refactor.sh` are present and executable
|
|
49
49
|
2. **For start**: `.prizmkit/plans/refactor-list.json` must exist in `.prizmkit/plans/` (or user-specified path)
|
|
50
50
|
3. **Dependencies**: `jq`, `python3`, AI CLI (`cbc` or `claude`) must be in PATH
|
|
51
51
|
4. **Python version**: Requires Python 3.8+ for dev-pipeline scripts
|
|
@@ -79,7 +79,7 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
79
79
|
|
|
80
80
|
2. **Check not already running**:
|
|
81
81
|
```bash
|
|
82
|
-
dev-pipeline/launch-refactor-daemon.sh status 2>/dev/null
|
|
82
|
+
.prizmkit/dev-pipeline/launch-refactor-daemon.sh status 2>/dev/null
|
|
83
83
|
```
|
|
84
84
|
If running, inform user and ask: "Refactor pipeline is already running. Want to restart it, check status, or view logs?"
|
|
85
85
|
|
|
@@ -106,7 +106,7 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
106
106
|
```
|
|
107
107
|
If pipeline state already exists, use the status command instead:
|
|
108
108
|
```bash
|
|
109
|
-
python3 dev-pipeline/scripts/update-refactor-status.py \
|
|
109
|
+
python3 .prizmkit/dev-pipeline/scripts/update-refactor-status.py \
|
|
110
110
|
--refactor-list .prizmkit/plans/refactor-list.json \
|
|
111
111
|
--state-dir .prizmkit/state/refactor \
|
|
112
112
|
--action status 2>/dev/null
|
|
@@ -139,6 +139,13 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
139
139
|
|
|
140
140
|
6. **Ask configuration options** ⚠️ MANDATORY INTERACTIVE STEP — applies to ALL execution modes (Foreground, Background, AND Manual). You MUST ask the user to configure options and WAIT for their response BEFORE proceeding to step 7. Do NOT skip this step or merge it with step 7.
|
|
141
141
|
|
|
142
|
+
⛔ **HARD STOP**: You MUST call `AskUserQuestion` with the questions below and WAIT for the user's response. You MUST NOT:
|
|
143
|
+
- Skip this step and jump to step 7
|
|
144
|
+
- Merge step 6 and step 7 into one response
|
|
145
|
+
- Assume default values and show the command without asking
|
|
146
|
+
- Show the command as text and ask "ready?" without presenting the options
|
|
147
|
+
If you find yourself writing the final command before the user has answered these questions, STOP — you are violating this rule.
|
|
148
|
+
|
|
142
149
|
Use `AskUserQuestion` to present the following configuration choices. Each question is a separate selectable option:
|
|
143
150
|
|
|
144
151
|
**Question 1 — Verbose logging** (multiSelect: false):
|
|
@@ -215,34 +222,34 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
215
222
|
|
|
216
223
|
**Foreground command:**
|
|
217
224
|
```bash
|
|
218
|
-
VERBOSE=1 STRICT_BEHAVIOR_CHECK=1 dev-pipeline/run-refactor.sh run .prizmkit/plans/refactor-list.json
|
|
225
|
+
VERBOSE=1 STRICT_BEHAVIOR_CHECK=1 .prizmkit/dev-pipeline/run-refactor.sh run .prizmkit/plans/refactor-list.json
|
|
219
226
|
```
|
|
220
227
|
With all options:
|
|
221
228
|
```bash
|
|
222
229
|
VERBOSE=1 STRICT_BEHAVIOR_CHECK=1 MAX_RETRIES=5 SESSION_TIMEOUT=3600 ENABLE_DEPLOY=1 \
|
|
223
|
-
dev-pipeline/run-refactor.sh run .prizmkit/plans/refactor-list.json
|
|
230
|
+
.prizmkit/dev-pipeline/run-refactor.sh run .prizmkit/plans/refactor-list.json
|
|
224
231
|
```
|
|
225
232
|
|
|
226
233
|
**Background daemon command:**
|
|
227
234
|
```bash
|
|
228
|
-
dev-pipeline/launch-refactor-daemon.sh start .prizmkit/plans/refactor-list.json --env "VERBOSE=1 STRICT_BEHAVIOR_CHECK=1"
|
|
235
|
+
.prizmkit/dev-pipeline/launch-refactor-daemon.sh start .prizmkit/plans/refactor-list.json --env "VERBOSE=1 STRICT_BEHAVIOR_CHECK=1"
|
|
229
236
|
```
|
|
230
237
|
With all options:
|
|
231
238
|
```bash
|
|
232
|
-
dev-pipeline/launch-refactor-daemon.sh start .prizmkit/plans/refactor-list.json \
|
|
239
|
+
.prizmkit/dev-pipeline/launch-refactor-daemon.sh start .prizmkit/plans/refactor-list.json \
|
|
233
240
|
--env "VERBOSE=1 STRICT_BEHAVIOR_CHECK=1 MAX_RETRIES=5 ENABLE_DEPLOY=1"
|
|
234
241
|
```
|
|
235
242
|
|
|
236
243
|
**Manual mode**: Print the assembled command(s) and **stop here**. Do not execute anything. Do not proceed to step 8.
|
|
237
244
|
```
|
|
238
245
|
# To run in foreground:
|
|
239
|
-
VERBOSE=1 STRICT_BEHAVIOR_CHECK=1 dev-pipeline/run-refactor.sh run .prizmkit/plans/refactor-list.json
|
|
246
|
+
VERBOSE=1 STRICT_BEHAVIOR_CHECK=1 .prizmkit/dev-pipeline/run-refactor.sh run .prizmkit/plans/refactor-list.json
|
|
240
247
|
|
|
241
248
|
# To run in background (detached):
|
|
242
|
-
dev-pipeline/launch-refactor-daemon.sh start .prizmkit/plans/refactor-list.json --env "VERBOSE=1 STRICT_BEHAVIOR_CHECK=1"
|
|
249
|
+
.prizmkit/dev-pipeline/launch-refactor-daemon.sh start .prizmkit/plans/refactor-list.json --env "VERBOSE=1 STRICT_BEHAVIOR_CHECK=1"
|
|
243
250
|
|
|
244
251
|
# To check status:
|
|
245
|
-
dev-pipeline/run-refactor.sh status .prizmkit/plans/refactor-list.json
|
|
252
|
+
.prizmkit/dev-pipeline/run-refactor.sh status .prizmkit/plans/refactor-list.json
|
|
246
253
|
```
|
|
247
254
|
|
|
248
255
|
8. **Confirm and launch** (Foreground and Background only — Manual mode ends at step 7):
|
|
@@ -261,7 +268,7 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
261
268
|
**If background daemon**:
|
|
262
269
|
1. Verify launch:
|
|
263
270
|
```bash
|
|
264
|
-
dev-pipeline/launch-refactor-daemon.sh status
|
|
271
|
+
.prizmkit/dev-pipeline/launch-refactor-daemon.sh status
|
|
265
272
|
```
|
|
266
273
|
2. Start log monitoring — Use the Bash tool with `run_in_background: true`:
|
|
267
274
|
```bash
|
|
@@ -279,12 +286,12 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
279
286
|
|
|
280
287
|
1. **Check daemon status**:
|
|
281
288
|
```bash
|
|
282
|
-
dev-pipeline/launch-refactor-daemon.sh status
|
|
289
|
+
.prizmkit/dev-pipeline/launch-refactor-daemon.sh status
|
|
283
290
|
```
|
|
284
291
|
|
|
285
292
|
2. **Show refactor-level progress**:
|
|
286
293
|
```bash
|
|
287
|
-
python3 dev-pipeline/scripts/update-refactor-status.py \
|
|
294
|
+
python3 .prizmkit/dev-pipeline/scripts/update-refactor-status.py \
|
|
288
295
|
--refactor-list .prizmkit/plans/refactor-list.json \
|
|
289
296
|
--state-dir .prizmkit/state/refactor \
|
|
290
297
|
--action status
|
|
@@ -303,12 +310,12 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
303
310
|
|
|
304
311
|
1. **Stop the daemon**:
|
|
305
312
|
```bash
|
|
306
|
-
dev-pipeline/launch-refactor-daemon.sh stop
|
|
313
|
+
.prizmkit/dev-pipeline/launch-refactor-daemon.sh stop
|
|
307
314
|
```
|
|
308
315
|
|
|
309
316
|
2. **Verify stopped**:
|
|
310
317
|
```bash
|
|
311
|
-
dev-pipeline/launch-refactor-daemon.sh status 2>/dev/null || true
|
|
318
|
+
.prizmkit/dev-pipeline/launch-refactor-daemon.sh status 2>/dev/null || true
|
|
312
319
|
```
|
|
313
320
|
|
|
314
321
|
3. **Inform user**: "Refactor pipeline stopped. State is preserved -- you can resume later with 'start refactoring' and it will pick up where it left off."
|
|
@@ -319,7 +326,7 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
319
326
|
|
|
320
327
|
1. **Check if running**:
|
|
321
328
|
```bash
|
|
322
|
-
dev-pipeline/launch-refactor-daemon.sh status 2>/dev/null
|
|
329
|
+
.prizmkit/dev-pipeline/launch-refactor-daemon.sh status 2>/dev/null
|
|
323
330
|
```
|
|
324
331
|
|
|
325
332
|
2. **If running** -- Start live tail with Bash tool `run_in_background: true`:
|
|
@@ -347,7 +354,7 @@ Detect user intent from their message, then follow the corresponding workflow:
|
|
|
347
354
|
When user says "retry R-001" or "clean retry R-001":
|
|
348
355
|
|
|
349
356
|
```bash
|
|
350
|
-
dev-pipeline/reset-refactor.sh R-001 --clean --run .prizmkit/plans/refactor-list.json
|
|
357
|
+
.prizmkit/dev-pipeline/reset-refactor.sh R-001 --clean --run .prizmkit/plans/refactor-list.json
|
|
351
358
|
```
|
|
352
359
|
|
|
353
360
|
Notes:
|
|
@@ -369,11 +376,11 @@ Notes:
|
|
|
369
376
|
| PID file stale (process dead) | `launch-refactor-daemon.sh` auto-cleans, retry start |
|
|
370
377
|
| Launch failed (process died immediately) | Show last 20 lines of log: `tail -20 .prizmkit/state/refactor/pipeline-daemon.log` |
|
|
371
378
|
| Refactor stuck/blocked | Use `reset-refactor.sh <R-XXX> --clean --run` for a fresh retry |
|
|
372
|
-
| All refactors blocked/failed | Show status, suggest recovery:
|
|
379
|
+
| All refactors blocked/failed | Show status, suggest recovery: `.prizmkit/dev-pipeline/reset-refactor.sh <R-XXX> --clean --run .prizmkit/plans/refactor-list.json` |
|
|
373
380
|
| `playwright-cli` not installed | Browser verification skipped for playwright refactors (non-blocking). Suggest: `npm install -g @playwright/cli@latest && playwright-cli install --skills` |
|
|
374
381
|
| `opencli` not installed | Browser verification skipped for opencli refactors (non-blocking). Install opencli for Chrome session-based browser verification |
|
|
375
382
|
| Deploy session failed | Pipeline completed but deploy session exited non-zero. Check `.prizmkit/state/refactor/deploy/<session_id>/logs/session.log`. Retry manually: `/prizmkit-deploy`. |
|
|
376
|
-
| Permission denied on script | Run `chmod +x dev-pipeline/launch-refactor-daemon.sh dev-pipeline/run-refactor.sh` |
|
|
383
|
+
| Permission denied on script | Run `chmod +x .prizmkit/dev-pipeline/launch-refactor-daemon.sh .prizmkit/dev-pipeline/run-refactor.sh` |
|
|
377
384
|
|
|
378
385
|
### Integration Notes
|
|
379
386
|
|
|
@@ -92,11 +92,11 @@ Do NOT use this skill when the user wants to:
|
|
|
92
92
|
## Prerequisites
|
|
93
93
|
|
|
94
94
|
Before questions, check optional context files (never block if absent):
|
|
95
|
-
- `.prizm-docs/root.prizm` (architecture/project context)
|
|
95
|
+
- `.prizmkit/prizm-docs/root.prizm` (architecture/project context)
|
|
96
96
|
- `.prizmkit/config.json` (existing stack preferences and detected tech stack)
|
|
97
97
|
- Existing test suite (critical for behavior preservation assessment)
|
|
98
98
|
- Existing `.prizmkit/plans/refactor-list.json` (if appending additional items)
|
|
99
|
-
- If `.prizm-docs/root.prizm` is absent and the project has existing source code, scan the directory structure:
|
|
99
|
+
- If `.prizmkit/prizm-docs/root.prizm` is absent and the project has existing source code, scan the directory structure:
|
|
100
100
|
```bash
|
|
101
101
|
find . -maxdepth 2 -type d -not -path '*/node_modules/*' -not -path '*/.git/*' -not -path '*/dist/*' -not -path '*/build/*' -not -path '*/__pycache__/*' -not -path '*/vendor/*' | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
|
|
102
102
|
```
|
|
@@ -132,7 +132,7 @@ Execute the planning workflow in conversation mode with mandatory checkpoints:
|
|
|
132
132
|
|
|
133
133
|
**Goal**: Understand the current codebase structure and tech stack.
|
|
134
134
|
|
|
135
|
-
1. Read `.prizm-docs/root.prizm` and relevant L1 docs
|
|
135
|
+
1. Read `.prizmkit/prizm-docs/root.prizm` and relevant L1 docs
|
|
136
136
|
2. Read `.prizmkit/config.json` for tech stack info
|
|
137
137
|
3. Identify existing test suite and coverage
|
|
138
138
|
4. Summarize project context to the user: "Here's what I found about your project..."
|
|
@@ -142,7 +142,7 @@ Execute the planning workflow in conversation mode with mandatory checkpoints:
|
|
|
142
142
|
> "Do you have any reference materials I should review before planning the refactoring? This can include:
|
|
143
143
|
> - **Code paths** — specific files or directories that are refactoring targets or dependencies
|
|
144
144
|
> - **Documents** — design docs, architecture proposals, refactoring RFCs, or technical debt analyses
|
|
145
|
-
> - **Knowledge docs** — `.prizm-docs/` files, README files, or internal wiki pages for the affected area
|
|
145
|
+
> - **Knowledge docs** — `.prizmkit/prizm-docs/` files, README files, or internal wiki pages for the affected area
|
|
146
146
|
> - **Images** — architecture diagrams, dependency graphs, or whiteboard photos
|
|
147
147
|
> - **Web links** — reference implementations, design pattern articles, or migration guides
|
|
148
148
|
>
|
|
@@ -307,7 +307,7 @@ If issues found, discuss with user and resolve before proceeding.
|
|
|
307
307
|
|
|
308
308
|
| Checkpoint | Artifact/State | Criteria | Phase |
|
|
309
309
|
|-----------|----------------|----------|-------|
|
|
310
|
-
| **CP-RP-0** | Project Context | Tech stack, test suite status, .prizm-docs loaded | 1 |
|
|
310
|
+
| **CP-RP-0** | Project Context | Tech stack, test suite status, .prizmkit/prizm-docs loaded | 1 |
|
|
311
311
|
| **CP-RP-1** | Goals Collected | All refactoring goals understood, no open ambiguities | 2 |
|
|
312
312
|
| **CP-RP-2** | Code Analyzed | Analysis complete, user agrees with approach | 3 |
|
|
313
313
|
| **CP-RP-3** | Items Decomposed | All items have deps, complexity, preservation strategy | 4 |
|
|
@@ -324,7 +324,7 @@ If issues found, discuss with user and resolve before proceeding.
|
|
|
324
324
|
- Non-empty `refactors` array
|
|
325
325
|
- Sequential IDs: `R-001`, `R-002`, ...
|
|
326
326
|
- Valid dependency DAG (no cycles)
|
|
327
|
-
- Each item has a declared `behavior_preservation` object with `strategy` field: `"test-gate"`, `"snapshot"`, or `"manual"`. Optional fields: `existing_tests` (boolean), `new_tests_needed` (string array). See
|
|
327
|
+
- Each item has a declared `behavior_preservation` object with `strategy` field: `"test-gate"`, `"snapshot"`, or `"manual"`. Optional fields: `existing_tests` (boolean), `new_tests_needed` (string array). See `.prizmkit/dev-pipeline/templates/refactor-list-schema.json` for the full schema.
|
|
328
328
|
- `priority` must be a string: `"critical"`, `"high"`, `"medium"`, or `"low"`
|
|
329
329
|
- New items default `status: "pending"`
|
|
330
330
|
- English titles for stable slug generation
|
|
@@ -132,7 +132,7 @@ Then ask:
|
|
|
132
132
|
Ask:
|
|
133
133
|
1. **Code paths** — "Which files or directories are the main targets? Any specific files I should look at?"
|
|
134
134
|
2. **Design documents** — "Do you have any design docs, architecture diagrams, or refactoring proposals I should read?"
|
|
135
|
-
3. **Knowledge docs** — "Are there related `.prizm-docs/`, README files, or internal wiki pages for the target area?"
|
|
135
|
+
3. **Knowledge docs** — "Are there related `.prizmkit/prizm-docs/`, README files, or internal wiki pages for the target area?"
|
|
136
136
|
4. **Related issues/PRs** — "Any related issues, PRs, or previous refactoring attempts I should be aware of?"
|
|
137
137
|
|
|
138
138
|
Record everything the user provides — these become inputs for Step 1.3.
|
|
@@ -147,7 +147,7 @@ Record everything the user provides — these become inputs for Step 1.3.
|
|
|
147
147
|
|-------|-------------|---------|
|
|
148
148
|
| Agent A | User-provided code paths — read full source files | Understand current structure, interfaces, dependencies |
|
|
149
149
|
| Agent B | User-provided documents — design docs, proposals, wiki pages | Understand intended direction and constraints |
|
|
150
|
-
| Agent C | `.prizm-docs/` for affected modules — L1/L2 docs, TRAPS, RULES | Understand existing architecture knowledge and known pitfalls |
|
|
150
|
+
| Agent C | `.prizmkit/prizm-docs/` for affected modules — L1/L2 docs, TRAPS, RULES | Understand existing architecture knowledge and known pitfalls |
|
|
151
151
|
| Agent D | Test files for the target area — find and read existing tests | Understand current test coverage and behavior contracts |
|
|
152
152
|
|
|
153
153
|
**Also gather** (can be included in any agent's task):
|
|
@@ -164,7 +164,7 @@ Record everything the user provides — these become inputs for Step 1.3.
|
|
|
164
164
|
Present what you learned from the parallel reading:
|
|
165
165
|
- Current code structure and its problems (with specific file/function references)
|
|
166
166
|
- Existing test coverage status (which areas are safe, which are risky)
|
|
167
|
-
- Known TRAPS and pitfalls from `.prizm-docs/`
|
|
167
|
+
- Known TRAPS and pitfalls from `.prizmkit/prizm-docs/`
|
|
168
168
|
- Dependencies and potential impact on other modules
|
|
169
169
|
|
|
170
170
|
Then ask targeted questions based on what you read. **Adapt question depth to the refactoring complexity** — a simple extract-method refactor needs fewer questions than a full module decomposition.
|
|
@@ -184,7 +184,7 @@ Then ask targeted questions based on what you read. **Adapt question depth to th
|
|
|
184
184
|
- Any undocumented behavior that callers depend on?
|
|
185
185
|
|
|
186
186
|
**Risk Assessment:**
|
|
187
|
-
- "I found these TRAPS in .prizm-docs/: [list]. Any other known gotchas?"
|
|
187
|
+
- "I found these TRAPS in .prizmkit/prizm-docs/: [list]. Any other known gotchas?"
|
|
188
188
|
- Does this code have external consumers (other teams, published APIs)?
|
|
189
189
|
- Any concurrent development happening in the target area?
|
|
190
190
|
|
|
@@ -249,7 +249,7 @@ Once brainstorming is complete, produce a structured goals summary:
|
|
|
249
249
|
- [Risk]: [Mitigation strategy]
|
|
250
250
|
|
|
251
251
|
### Reference Materials Reviewed
|
|
252
|
-
- [List of code paths, documents, .prizm-docs/ files that were read]
|
|
252
|
+
- [List of code paths, documents, .prizmkit/prizm-docs/ files that were read]
|
|
253
253
|
|
|
254
254
|
### Constraints
|
|
255
255
|
- [Timeline, coordination, deployment concerns]
|
|
@@ -293,7 +293,7 @@ AskUserQuestion:
|
|
|
293
293
|
2. Invoke `/prizmkit-implement` to execute the plan (behavior preservation verified by tests)
|
|
294
294
|
3. After implementation, run `/prizmkit-code-review` for quality check
|
|
295
295
|
4. Commit via `/prizmkit-committer` with `refactor(<scope>):` prefix
|
|
296
|
-
5. Run `/prizmkit-retrospective` to sync `.prizm-docs/`
|
|
296
|
+
5. Run `/prizmkit-retrospective` to sync `.prizmkit/prizm-docs/`
|
|
297
297
|
6. **End workflow** — skip Phase 2/3/4
|
|
298
298
|
- **Add to refactor list** → Continue to Phase 2 (Plan via pipeline)
|
|
299
299
|
|
|
@@ -394,7 +394,7 @@ AskUserQuestion:
|
|
|
394
394
|
|
|
395
395
|
1. **Initial status check**:
|
|
396
396
|
```bash
|
|
397
|
-
dev-pipeline/launch-refactor-daemon.sh status
|
|
397
|
+
.prizmkit/dev-pipeline/launch-refactor-daemon.sh status
|
|
398
398
|
```
|
|
399
399
|
|
|
400
400
|
2. **Offer monitoring options**:
|
|
@@ -404,7 +404,7 @@ AskUserQuestion:
|
|
|
404
404
|
|
|
405
405
|
3. **Periodic progress reports** (when user asks):
|
|
406
406
|
```bash
|
|
407
|
-
python3 dev-pipeline/scripts/update-refactor-status.py \
|
|
407
|
+
python3 .prizmkit/dev-pipeline/scripts/update-refactor-status.py \
|
|
408
408
|
--refactor-list .prizmkit/plans/refactor-list.json \
|
|
409
409
|
--state-dir .prizmkit/state/refactor \
|
|
410
410
|
--action status
|
|
@@ -480,4 +480,4 @@ While the pipeline runs, the user can continue the conversation:
|
|
|
480
480
|
- Pipeline execution (Phase 3)
|
|
481
481
|
- Progress updates (Phase 4)
|
|
482
482
|
- Multiple git commits with `refactor(<scope>):` prefix
|
|
483
|
-
- Updated `.prizm-docs/` (via prizmkit-retrospective per refactor item)
|
|
483
|
+
- Updated `.prizmkit/prizm-docs/` (via prizmkit-retrospective per refactor item)
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"name": "dev",
|
|
14
14
|
"role": "developer",
|
|
15
15
|
"agentDefinition": "prizm-dev-team-dev",
|
|
16
|
-
"prompt": "You are a Dev Agent of the prizm-dev-team. Follow /prizmkit-implement workflow with TDD. Read plan.md/spec.md, implement task-by-task, mark completed tasks [x]. Check .prizm-docs/ TRAPS before implementing.",
|
|
16
|
+
"prompt": "You are a Dev Agent of the prizm-dev-team. Follow /prizmkit-implement workflow with TDD. Read plan.md/spec.md, implement task-by-task, mark completed tasks [x]. Check .prizmkit/prizm-docs/ TRAPS before implementing.",
|
|
17
17
|
"subscriptions": ["*"]
|
|
18
18
|
},
|
|
19
19
|
{
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"hooks": [
|
|
7
7
|
{
|
|
8
8
|
"type": "command",
|
|
9
|
-
"command": "SRC=$(git diff --cached --name-only 2>/dev/null | grep -cE '\\.(ts|tsx|js|jsx|py|go|rs|java)$'); if [ \"$SRC\" -gt 0 ]; then PRIZM=$(git diff --cached --name-only 2>/dev/null | grep -c '^\\.prizm-docs/'); if [ \"$PRIZM\" -gt 0 ]; then echo \"PRIZMKIT_DOC_STATUS: $SRC source file(s) staged | .prizm-docs/ updated ($PRIZM file(s))\"; else echo \"PRIZMKIT_DOC_STATUS: $SRC source file(s) staged | .prizm-docs/ NOT UPDATED — update if this is a feature change\"; fi; fi"
|
|
9
|
+
"command": "SRC=$(git diff --cached --name-only 2>/dev/null | grep -cE '\\.(ts|tsx|js|jsx|py|go|rs|java)$'); if [ \"$SRC\" -gt 0 ]; then PRIZM=$(git diff --cached --name-only 2>/dev/null | grep -c '^\\.prizmkit/prizm-docs/'); if [ \"$PRIZM\" -gt 0 ]; then echo \"PRIZMKIT_DOC_STATUS: $SRC source file(s) staged | .prizmkit/prizm-docs/ updated ($PRIZM file(s))\"; else echo \"PRIZMKIT_DOC_STATUS: $SRC source file(s) staged | .prizmkit/prizm-docs/ NOT UPDATED — update if this is a feature change\"; fi; fi"
|
|
10
10
|
}
|
|
11
11
|
]
|
|
12
12
|
}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"hooks": [
|
|
18
18
|
{
|
|
19
19
|
"type": "command",
|
|
20
|
-
"command": "TOOL_INPUT=\"${CLAUDE_TOOL_INPUT:-${CODEBUDDY_TOOL_INPUT:-}}\"; if echo \"$TOOL_INPUT\" | grep -qE 'git (commit|merge|rebase)' 2>/dev/null; then DRIFT=$(sh .prizmkit/scripts/diff-prizm-docs.sh 2>/dev/null); if [ -n \"$DRIFT\" ]; then echo \"PRIZMKIT_DRIFT_DETECTED: prizm-docs structural differences found:\"; echo \"$DRIFT\"; echo \"Please update affected .prizm-docs/ files.\"; fi; fi"
|
|
20
|
+
"command": "TOOL_INPUT=\"${CLAUDE_TOOL_INPUT:-${CODEBUDDY_TOOL_INPUT:-}}\"; if echo \"$TOOL_INPUT\" | grep -qE 'git (commit|merge|rebase)' 2>/dev/null; then DRIFT=$(sh .prizmkit/scripts/diff-prizm-docs.sh 2>/dev/null); if [ -n \"$DRIFT\" ]; then echo \"PRIZMKIT_DRIFT_DETECTED: prizm-docs structural differences found:\"; echo \"$DRIFT\"; echo \"Please update affected .prizmkit/prizm-docs/ files.\"; fi; fi"
|
|
21
21
|
}
|
|
22
22
|
]
|
|
23
23
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/bin/sh
|
|
2
2
|
# PrizmKit: diff-prizm-docs.sh
|
|
3
|
-
# Outputs structural differences between .prizm-docs/ and source code.
|
|
4
|
-
# Silent (exit 0) if no differences or if .prizm-docs doesn't exist.
|
|
3
|
+
# Outputs structural differences between .prizmkit/prizm-docs/ and source code.
|
|
4
|
+
# Silent (exit 0) if no differences or if .prizmkit/prizm-docs doesn't exist.
|
|
5
5
|
# POSIX sh only — no arrays, no bashisms.
|
|
6
6
|
|
|
7
7
|
set -e
|
|
8
8
|
|
|
9
|
-
ROOT_PRIZM=".prizm-docs/root.prizm"
|
|
9
|
+
ROOT_PRIZM=".prizmkit/prizm-docs/root.prizm"
|
|
10
10
|
|
|
11
11
|
# 1. Exit silently if no root.prizm
|
|
12
12
|
[ -f "$ROOT_PRIZM" ] || exit 0
|
|
@@ -85,7 +85,7 @@ echo "$REGISTERED_PATHS" | while IFS= read -r source_path; do
|
|
|
85
85
|
[ -z "$source_path" ] && continue
|
|
86
86
|
|
|
87
87
|
# Derive L1 prizm file path
|
|
88
|
-
l1_file=".prizm-docs/${source_path}.prizm"
|
|
88
|
+
l1_file=".prizmkit/prizm-docs/${source_path}.prizm"
|
|
89
89
|
|
|
90
90
|
if [ ! -f "$l1_file" ]; then
|
|
91
91
|
continue
|
|
@@ -104,7 +104,7 @@ echo "$REGISTERED_PATHS" | while IFS= read -r source_path; do
|
|
|
104
104
|
done
|
|
105
105
|
|
|
106
106
|
# 5. Find orphan docs
|
|
107
|
-
find .prizm-docs -name '*.prizm' 2>/dev/null | while IFS= read -r prizm_file; do
|
|
107
|
+
find .prizmkit/prizm-docs -name '*.prizm' 2>/dev/null | while IFS= read -r prizm_file; do
|
|
108
108
|
_basename=$(basename "$prizm_file")
|
|
109
109
|
case "$_basename" in
|
|
110
110
|
root.prizm|changelog.prizm|changelog-archive.prizm)
|
|
@@ -112,8 +112,8 @@ find .prizm-docs -name '*.prizm' 2>/dev/null | while IFS= read -r prizm_file; do
|
|
|
112
112
|
;;
|
|
113
113
|
esac
|
|
114
114
|
|
|
115
|
-
# Derive source path: remove .prizm-docs/ prefix and .prizm suffix
|
|
116
|
-
source_path=$(echo "$prizm_file" | sed 's|^\.prizm-docs/||' | sed 's|\.prizm$||')
|
|
115
|
+
# Derive source path: remove .prizmkit/prizm-docs/ prefix and .prizm suffix
|
|
116
|
+
source_path=$(echo "$prizm_file" | sed 's|^\.prizmkit/prizm-docs/||' | sed 's|\.prizm$||')
|
|
117
117
|
|
|
118
118
|
if [ ! -d "$source_path" ]; then
|
|
119
119
|
echo "ORPHAN_DOC: $prizm_file | source dir missing"
|
|
@@ -131,7 +131,7 @@ find . -mindepth 1 -maxdepth 3 -type d \
|
|
|
131
131
|
! -path '*/target/*' ! -path './target' \
|
|
132
132
|
! -path '*/tests/*' ! -path './tests' \
|
|
133
133
|
! -path '*/__tests__/*' ! -path './__tests__' \
|
|
134
|
-
! -path '*/.prizm-docs/*' ! -path './.prizm-docs' \
|
|
134
|
+
! -path '*/.prizmkit/prizm-docs/*' ! -path './.prizmkit/prizm-docs' \
|
|
135
135
|
! -path '*/.claude/*' ! -path './.claude' \
|
|
136
136
|
! -path '*/.codebuddy/*' ! -path './.codebuddy' \
|
|
137
137
|
! -path '*/dev-pipeline/*' ! -path './dev-pipeline' \
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/bin/sh
|
|
2
|
-
# prizm-pre-commit.sh — git pre-commit hook for .prizm-docs validation
|
|
2
|
+
# prizm-pre-commit.sh — git pre-commit hook for .prizmkit/prizm-docs validation
|
|
3
3
|
|
|
4
4
|
PROJECT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) || exit 0
|
|
5
5
|
|
|
6
6
|
# Only run in prizm projects
|
|
7
|
-
[ -f "$PROJECT_ROOT/.prizm-docs/root.prizm" ] || exit 0
|
|
7
|
+
[ -f "$PROJECT_ROOT/.prizmkit/prizm-docs/root.prizm" ] || exit 0
|
|
8
8
|
|
|
9
9
|
VALIDATE_SCRIPT="$PROJECT_ROOT/.prizmkit/scripts/validate-prizm-docs.sh"
|
|
10
|
-
[ -f "$VALIDATE_SCRIPT" ] || VALIDATE_SCRIPT="$PROJECT_ROOT/dev-pipeline/scripts/validate-prizm-docs.sh"
|
|
10
|
+
[ -f "$VALIDATE_SCRIPT" ] || VALIDATE_SCRIPT="$PROJECT_ROOT/.prizmkit/dev-pipeline/scripts/validate-prizm-docs.sh"
|
|
11
11
|
|
|
12
12
|
if [ -f "$VALIDATE_SCRIPT" ]; then
|
|
13
13
|
sh "$VALIDATE_SCRIPT" --staged
|
|
@@ -37,7 +37,7 @@ for FILE in $FILES; do
|
|
|
37
37
|
*root.prizm) LIMIT=4096 ;;
|
|
38
38
|
*)
|
|
39
39
|
DIR=$(dirname "$FILE")
|
|
40
|
-
if [ "$DIR" = ".prizm-docs" ]; then
|
|
40
|
+
if [ "$DIR" = ".prizmkit/prizm-docs" ]; then
|
|
41
41
|
LIMIT=3072
|
|
42
42
|
else
|
|
43
43
|
LIMIT=5120
|
|
@@ -6,11 +6,11 @@ MODE="${1:---staged}"
|
|
|
6
6
|
ERRORS=0
|
|
7
7
|
|
|
8
8
|
# Not a prizm project — exit silently
|
|
9
|
-
[ -f ".prizm-docs/root.prizm" ] || exit 0
|
|
9
|
+
[ -f ".prizmkit/prizm-docs/root.prizm" ] || exit 0
|
|
10
10
|
|
|
11
11
|
# Collect files to check
|
|
12
12
|
if [ "$MODE" = "--all" ]; then
|
|
13
|
-
FILES=$(find .prizm-docs -name '*.prizm' 2>/dev/null)
|
|
13
|
+
FILES=$(find .prizmkit/prizm-docs -name '*.prizm' 2>/dev/null)
|
|
14
14
|
elif [ "$MODE" = "--staged" ]; then
|
|
15
15
|
FILES=$(git diff --cached --name-only 2>/dev/null | grep '\.prizm$')
|
|
16
16
|
else
|
|
@@ -44,9 +44,9 @@ for FILE in $FILES; do
|
|
|
44
44
|
HINT="Consolidate MODULE_INDEX, keep top-5 RULES."
|
|
45
45
|
;;
|
|
46
46
|
*)
|
|
47
|
-
# L1 = direct child of .prizm-docs/, L2 = nested deeper
|
|
47
|
+
# L1 = direct child of .prizmkit/prizm-docs/, L2 = nested deeper
|
|
48
48
|
DIR=$(dirname "$FILE")
|
|
49
|
-
if [ "$DIR" = ".prizm-docs" ]; then
|
|
49
|
+
if [ "$DIR" = ".prizmkit/prizm-docs" ]; then
|
|
50
50
|
LIMIT=3072; LEVEL="L1"
|
|
51
51
|
HINT="Move implementation details to L2."
|
|
52
52
|
else
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
This project uses PrizmKit with the Prizm documentation system for AI-optimized progressive context loading.
|
|
5
5
|
|
|
6
6
|
### Progressive Loading Protocol
|
|
7
|
-
- ON SESSION START: Always read `.prizm-docs/root.prizm` first (L0 — project map)
|
|
7
|
+
- ON SESSION START: Always read `.prizmkit/prizm-docs/root.prizm` first (L0 — project map)
|
|
8
8
|
- ON RESUME (feature/bugfix directory has session-summary.md): Read session-summary.md first for prior context, then load only L1/L2 for modules mentioned in it
|
|
9
|
-
- ON TASK: Read L1 (`.prizm-docs/<module>.prizm`) for relevant modules referenced in MODULE_INDEX or MODULE_GROUPS. If entries have keyword tags (e.g., `[login, jwt, oauth]`), match user's task against tags to prioritize which modules to load.
|
|
10
|
-
- ON FILE EDIT: Read L2 (`.prizm-docs/<module>/<submodule>.prizm`) before modifying files. Pay attention to TRAPS and DECISIONS.
|
|
9
|
+
- ON TASK: Read L1 (`.prizmkit/prizm-docs/<module>.prizm`) for relevant modules referenced in MODULE_INDEX or MODULE_GROUPS. If entries have keyword tags (e.g., `[login, jwt, oauth]`), match user's task against tags to prioritize which modules to load.
|
|
10
|
+
- ON FILE EDIT: Read L2 (`.prizmkit/prizm-docs/<module>/<submodule>.prizm`) before modifying files. Pay attention to TRAPS and DECISIONS.
|
|
11
11
|
- NEVER load all .prizm docs at once. Load only what is needed for the current task.
|
|
12
12
|
|
|
13
13
|
### Auto-Update Protocol
|
|
14
|
-
- BEFORE EVERY COMMIT: Update affected `.prizm-docs/` files
|
|
14
|
+
- BEFORE EVERY COMMIT: Update affected `.prizmkit/prizm-docs/` files
|
|
15
15
|
- Platform hooks (rules or UserPromptSubmit) will remind you automatically
|
|
16
16
|
- Use `/prizmkit-committer` for the complete commit workflow
|
|
17
17
|
|
package/package.json
CHANGED
package/src/clean.js
CHANGED
|
@@ -115,8 +115,6 @@ export async function runClean(directory, options = {}) {
|
|
|
115
115
|
const fullRemoveTargets = [
|
|
116
116
|
'.prizmkit',
|
|
117
117
|
'.dev-team',
|
|
118
|
-
'dev-pipeline',
|
|
119
|
-
'.prizm-docs', // AI-generated project context docs
|
|
120
118
|
'CODEBUDDY.md',
|
|
121
119
|
'CLAUDE.md',
|
|
122
120
|
path.join('.prizmkit', 'plans', 'feature-list.json'), // feature-planner output
|
|
@@ -204,7 +202,7 @@ export async function runClean(directory, options = {}) {
|
|
|
204
202
|
console.log(chalk.green(` 清理完成:已删除 ${removed} 项。`));
|
|
205
203
|
}
|
|
206
204
|
console.log('');
|
|
207
|
-
console.log(chalk.gray(' 注意:.prizm-docs/ 为 AI 生成的项目上下文文档,已一并清理。'));
|
|
205
|
+
console.log(chalk.gray(' 注意:.prizmkit/prizm-docs/ 为 AI 生成的项目上下文文档,已一并清理。'));
|
|
208
206
|
console.log(chalk.gray(' 用户自定义的 agent/skill/rule 文件未受影响。'));
|
|
209
207
|
console.log('');
|
|
210
208
|
}
|
package/src/config.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Flow: READ manifest → PROMPT user → COMPUTE DIFF → DISPLAY SUMMARY → EXECUTE
|
|
8
8
|
*
|
|
9
|
-
* Preserves runtime files (.prizm-docs/,
|
|
9
|
+
* Preserves runtime files (.prizmkit/prizm-docs/, .prizmkit/state/, .prizmkit/specs/).
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
import chalk from 'chalk';
|
|
@@ -9,42 +9,22 @@
|
|
|
9
9
|
* @returns {string}
|
|
10
10
|
*/
|
|
11
11
|
export function generateGitignore(options = {}) {
|
|
12
|
+
void options;
|
|
12
13
|
const lines = [
|
|
13
14
|
'# ===========================',
|
|
14
15
|
'# PrizmKit Runtime Artifacts',
|
|
15
16
|
'# ===========================',
|
|
16
17
|
'',
|
|
17
|
-
'# PrizmKit
|
|
18
|
-
'.prizmkit
|
|
18
|
+
'# PrizmKit 运行时全部产物(state/、prizm-docs/、.env、logs 等)',
|
|
19
|
+
'.prizmkit/*',
|
|
19
20
|
'',
|
|
20
21
|
'# 多 Agent 协作临时工作区',
|
|
21
22
|
'.dev-team/',
|
|
22
23
|
'',
|
|
23
|
-
'# Prizm 文档(按需决定是否提交)',
|
|
24
|
-
'# .prizm-docs/',
|
|
25
|
-
'',
|
|
26
|
-
'# 规划产物(按需决定是否提交)',
|
|
27
|
-
'# .prizmkit/plans/',
|
|
28
|
-
'',
|
|
29
|
-
];
|
|
30
|
-
|
|
31
|
-
if (options.pipeline) {
|
|
32
|
-
lines.push(
|
|
33
|
-
'# Dev-Pipeline 运行时状态(已迁移到 .prizmkit/state/)',
|
|
34
|
-
'.prizmkit/state/features/',
|
|
35
|
-
'.prizmkit/state/bugfix/',
|
|
36
|
-
'.prizmkit/state/refactor/',
|
|
37
|
-
'dev-pipeline/logs/',
|
|
38
|
-
'dev-pipeline/*.pid',
|
|
39
|
-
'',
|
|
40
|
-
);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
lines.push(
|
|
44
24
|
'# Playwright CLI 快照和截图',
|
|
45
25
|
'.playwright-cli/',
|
|
46
26
|
'',
|
|
47
|
-
|
|
27
|
+
];
|
|
48
28
|
|
|
49
29
|
lines.push(
|
|
50
30
|
'# ===========================',
|
package/src/scaffold.js
CHANGED
|
@@ -405,7 +405,7 @@ export async function installSettings(platform, projectRoot, options, dryRun) {
|
|
|
405
405
|
|
|
406
406
|
// Settings
|
|
407
407
|
const permissions = [
|
|
408
|
-
'Bash(python3 dev-pipeline/scripts/*)',
|
|
408
|
+
'Bash(python3 .prizmkit/dev-pipeline/scripts/*)',
|
|
409
409
|
'Bash(git add *)',
|
|
410
410
|
'Bash(git commit *)',
|
|
411
411
|
'Bash(git diff *)',
|
|
@@ -420,7 +420,7 @@ export async function installSettings(platform, projectRoot, options, dryRun) {
|
|
|
420
420
|
const pipelineEntries = await fs.readdir(pipelineDir);
|
|
421
421
|
const entryScripts = pipelineEntries.filter(f => /^(run-|launch-|retry-|reset-).*\.sh$/.test(f));
|
|
422
422
|
for (const script of entryScripts) {
|
|
423
|
-
permissions.push(`Bash(
|
|
423
|
+
permissions.push(`Bash(./.prizmkit/dev-pipeline/${script} *)`);
|
|
424
424
|
}
|
|
425
425
|
} catch {
|
|
426
426
|
// Fallback: if readdir fails, add no pipeline permissions
|
|
@@ -437,7 +437,7 @@ export async function installSettings(platform, projectRoot, options, dryRun) {
|
|
|
437
437
|
hooks: [
|
|
438
438
|
{
|
|
439
439
|
type: 'command',
|
|
440
|
-
command: 'test -f .prizm-docs/root.prizm && echo "PrizmKit: .prizm-docs found. Read root.prizm for project context." || echo "PrizmKit: No .prizm-docs found. Run /prizmkit-init to bootstrap."',
|
|
440
|
+
command: 'test -f .prizmkit/prizm-docs/root.prizm && echo "PrizmKit: .prizmkit/prizm-docs found. Read root.prizm for project context." || echo "PrizmKit: No .prizmkit/prizm-docs found. Run /prizmkit-init to bootstrap."',
|
|
441
441
|
},
|
|
442
442
|
],
|
|
443
443
|
},
|
|
@@ -634,14 +634,15 @@ export function resolvePipelineFileList() {
|
|
|
634
634
|
|
|
635
635
|
/**
|
|
636
636
|
* 安装 dev-pipeline(纯 Copy 模式)
|
|
637
|
-
*
|
|
637
|
+
* 安装目标:.prizmkit/dev-pipeline/
|
|
638
|
+
* Returns an array of installed file relative paths (relative to .prizmkit/dev-pipeline/).
|
|
638
639
|
*/
|
|
639
640
|
export async function installPipeline(projectRoot, dryRun, { forceOverwrite = false } = {}) {
|
|
640
641
|
const pipelineSource = getPipelineDir();
|
|
641
|
-
const pipelineTarget = path.join(projectRoot, 'dev-pipeline');
|
|
642
|
+
const pipelineTarget = path.join(projectRoot, '.prizmkit', 'dev-pipeline');
|
|
642
643
|
|
|
643
644
|
if (dryRun) {
|
|
644
|
-
console.log(chalk.gray(` [dry-run] dev-pipeline/`));
|
|
645
|
+
console.log(chalk.gray(` [dry-run] .prizmkit/dev-pipeline/`));
|
|
645
646
|
return [];
|
|
646
647
|
}
|
|
647
648
|
|
|
@@ -666,7 +667,7 @@ export async function installPipeline(projectRoot, dryRun, { forceOverwrite = fa
|
|
|
666
667
|
const srcStat = await fs.stat(src);
|
|
667
668
|
|
|
668
669
|
if (await fs.pathExists(tgt) && !forceOverwrite) {
|
|
669
|
-
console.log(chalk.yellow(` ⚠ dev-pipeline/${item} 已存在,跳过`));
|
|
670
|
+
console.log(chalk.yellow(` ⚠ .prizmkit/dev-pipeline/${item} 已存在,跳过`));
|
|
670
671
|
// Still collect existing files for manifest tracking
|
|
671
672
|
if (srcStat.isDirectory()) {
|
|
672
673
|
installedFiles.push(...collectFilesRecursive(src, item));
|
|
@@ -687,14 +688,14 @@ export async function installPipeline(projectRoot, dryRun, { forceOverwrite = fa
|
|
|
687
688
|
}
|
|
688
689
|
}
|
|
689
690
|
|
|
690
|
-
console.log(chalk.green(` ✓ dev-pipeline/ (${installedCount} 项)`));
|
|
691
|
+
console.log(chalk.green(` ✓ .prizmkit/dev-pipeline/ (${installedCount} 项)`));
|
|
691
692
|
|
|
692
|
-
// Copy .env.example to
|
|
693
|
+
// Copy .env.example to .prizmkit/.env.example if it exists in pipeline source
|
|
693
694
|
const envExampleSrc = path.join(pipelineSource, '.env.example');
|
|
694
|
-
const envExampleTgt = path.join(projectRoot, '.env.example');
|
|
695
|
+
const envExampleTgt = path.join(projectRoot, '.prizmkit', '.env.example');
|
|
695
696
|
if (await fs.pathExists(envExampleSrc) && !await fs.pathExists(envExampleTgt)) {
|
|
696
697
|
await fs.copy(envExampleSrc, envExampleTgt);
|
|
697
|
-
console.log(chalk.green(` ✓ .env.example (pipeline environment configuration)`));
|
|
698
|
+
console.log(chalk.green(` ✓ .prizmkit/.env.example (pipeline environment configuration)`));
|
|
698
699
|
}
|
|
699
700
|
|
|
700
701
|
return installedFiles;
|
package/src/upgrade.js
CHANGED
|
@@ -125,13 +125,13 @@ export async function removeRuleFiles(platform, projectRoot, ruleFileNames, dryR
|
|
|
125
125
|
*/
|
|
126
126
|
export async function removePipelineFiles(projectRoot, fileList, dryRun) {
|
|
127
127
|
for (const relPath of fileList) {
|
|
128
|
-
const filePath = path.join(projectRoot, 'dev-pipeline', relPath);
|
|
128
|
+
const filePath = path.join(projectRoot, '.prizmkit', 'dev-pipeline', relPath);
|
|
129
129
|
if (await fs.pathExists(filePath)) {
|
|
130
130
|
if (dryRun) {
|
|
131
|
-
console.log(chalk.gray(` [dry-run] remove dev-pipeline/${relPath}`));
|
|
131
|
+
console.log(chalk.gray(` [dry-run] remove .prizmkit/dev-pipeline/${relPath}`));
|
|
132
132
|
} else {
|
|
133
133
|
await fs.remove(filePath);
|
|
134
|
-
console.log(chalk.red(` ✗ removed dev-pipeline/${relPath}`));
|
|
134
|
+
console.log(chalk.red(` ✗ removed .prizmkit/dev-pipeline/${relPath}`));
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
137
|
}
|