prizmkit 1.0.67 → 1.0.74
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 +29 -0
- package/bundled/agents/prizm-dev-team-dev.md +104 -90
- package/bundled/agents/prizm-dev-team-reviewer.md +111 -100
- package/bundled/dev-pipeline/retry-bug.sh +7 -0
- package/bundled/dev-pipeline/retry-feature.sh +7 -0
- package/bundled/dev-pipeline/run-bugfix.sh +4 -2
- package/bundled/dev-pipeline/run.sh +120 -6
- package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +6 -0
- package/bundled/dev-pipeline/scripts/init-pipeline.py +9 -0
- package/bundled/dev-pipeline/scripts/parse-stream-progress.py +62 -18
- package/bundled/dev-pipeline/templates/agent-knowledge-template.md +13 -0
- package/bundled/dev-pipeline/templates/bootstrap-tier1.md +54 -27
- package/bundled/dev-pipeline/templates/bootstrap-tier2.md +62 -29
- package/bundled/dev-pipeline/templates/bootstrap-tier3.md +86 -37
- package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +5 -5
- package/bundled/rules/USAGE.md +53 -53
- package/bundled/rules/prizm/prizm-commit-workflow.md +1 -1
- package/bundled/skills/_metadata.json +6 -6
- package/bundled/skills/app-planner/SKILL.md +11 -5
- package/bundled/skills/bug-fix-workflow/SKILL.md +2 -2
- package/bundled/skills/bug-planner/SKILL.md +5 -5
- package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +11 -11
- package/bundled/skills/dev-pipeline-launcher/SKILL.md +39 -25
- package/bundled/skills/feature-workflow/SKILL.md +13 -13
- package/bundled/skills/prizm-kit/SKILL.md +8 -3
- package/bundled/skills/prizm-kit/assets/project-memory-template.md +1 -1
- package/bundled/skills/prizmkit-code-review/SKILL.md +4 -2
- package/bundled/skills/prizmkit-committer/SKILL.md +4 -4
- package/bundled/skills/prizmkit-implement/SKILL.md +10 -4
- package/bundled/skills/prizmkit-init/SKILL.md +1 -1
- package/bundled/skills/prizmkit-prizm-docs/SKILL.md +3 -3
- package/bundled/skills/prizmkit-prizm-docs/assets/PRIZM-SPEC.md +6 -6
- package/bundled/skills/prizmkit-retrospective/SKILL.md +79 -18
- package/bundled/skills/prizmkit-tool-adr-manager/SKILL.md +2 -2
- package/bundled/skills/refactor-workflow/SKILL.md +13 -13
- package/bundled/team/prizm-dev-team.json +1 -1
- package/package.json +1 -1
- package/src/upgrade.js +14 -2
|
@@ -1,16 +1,28 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "prizmkit-retrospective"
|
|
3
|
-
description: "Incremental .prizm-docs/
|
|
3
|
+
description: "Incremental .prizm-docs/ and project memory maintainer. Performs three jobs: (1) structural sync — update .prizm-docs/ KEY_FILES/INTERFACES/DEPENDENCIES, (2) architecture knowledge — inject TRAPS/RULES into .prizm-docs/, (3) memory sedimentation — sediment DECISIONS/interface conventions to platform memory files (CLAUDE.md or CODEBUDDY.md+memory/MEMORY.md). Run after code review passes and before committing. Trigger on: 'retrospective', 'retro', 'update docs', 'sync docs', 'wrap up', 'done with feature', 'feature complete'. (project)"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# PrizmKit Retrospective
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Maintains two distinct knowledge stores with clear separation of concerns:
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
| Store | Location | Content | Purpose |
|
|
11
|
+
|-------|----------|---------|---------|
|
|
12
|
+
| **Architecture Index** | `.prizm-docs/` | MODULE, FILES, INTERFACES, DEPENDENCIES, TRAPS, RULES | AI quickly locates code structure, interfaces, and known pitfalls |
|
|
13
|
+
| **Project Memory** | `CLAUDE.md` or `CODEBUDDY.md` + `memory/MEMORY.md` | DECISIONS, interface conventions, project-level rules | Decisions and conventions that influence future development direction |
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
**Reading guide for other skills**:
|
|
16
|
+
- Need to understand code structure/modules/interfaces? → Read `.prizm-docs/`
|
|
17
|
+
- Need to understand past decisions/conventions/why? → Read platform memory file (`CLAUDE.md` for Claude Code, `CODEBUDDY.md` + `memory/MEMORY.md` for CodeBuddy)
|
|
18
|
+
|
|
19
|
+
**This skill performs three jobs in one pass:**
|
|
20
|
+
|
|
21
|
+
1. **Structural Sync** — reflect what changed in code → `.prizm-docs/` (KEY_FILES, INTERFACES, DEPENDENCIES, file counts)
|
|
22
|
+
2. **Architecture Knowledge** — inject TRAPS and module-level RULES → `.prizm-docs/`
|
|
23
|
+
3. **Memory Sedimentation** — sediment DECISIONS and interface conventions → platform memory files
|
|
24
|
+
|
|
25
|
+
No other skill writes to `.prizm-docs/`. This is the sole writer during ongoing development. For initial doc setup, validation, or migration, use `/prizmkit-prizm-docs` instead.
|
|
14
26
|
|
|
15
27
|
## When to Use
|
|
16
28
|
|
|
@@ -69,9 +81,11 @@ git diff --name-status
|
|
|
69
81
|
|
|
70
82
|
---
|
|
71
83
|
|
|
72
|
-
## Job 2: Knowledge Injection
|
|
84
|
+
## Job 2: Architecture Knowledge Injection → `.prizm-docs/`
|
|
73
85
|
|
|
74
|
-
Extract
|
|
86
|
+
Extract TRAPS and module-level RULES from development work and inject into `.prizm-docs/`. **DECISIONS do NOT go here** — they are sedimented to platform memory files in Job 3.
|
|
87
|
+
|
|
88
|
+
`.prizm-docs/` is the **architecture index**: it tells AI *what code exists, how it connects, and what pitfalls to avoid*. It does NOT store *why* a design choice was made — that belongs in project memory.
|
|
75
89
|
|
|
76
90
|
### When to run Job 2
|
|
77
91
|
|
|
@@ -85,6 +99,7 @@ Extract what was learned and inject it into the modules where AI will read it. T
|
|
|
85
99
|
**2a.** Gather context — read the **actual code that was changed** plus any available artifacts:
|
|
86
100
|
|
|
87
101
|
- `git diff HEAD` — the real source of truth for what happened
|
|
102
|
+
- `.prizmkit/specs/###-feature-name/agents/*.md` — **preferred source** for pre-categorized FINDINGS and INTERFACES_DISCOVERED from all agents. If agent docs exist, prefer them over re-extracting from git diff.
|
|
88
103
|
- `.prizmkit/specs/###-feature-name/plan.md` — if feature work, read planned vs actual
|
|
89
104
|
- `.prizmkit/bugfix/<id>/fix-report.md` — if bugfix, read what was discovered
|
|
90
105
|
- The relevant `.prizm-docs/` L1/L2 docs for affected modules
|
|
@@ -99,21 +114,64 @@ Extract what was learned and inject it into the modules where AI will read it. T
|
|
|
99
114
|
- Format: `- MUST/NEVER/PREFER: <rule>`
|
|
100
115
|
- Source: patterns that proved necessary during implementation
|
|
101
116
|
|
|
102
|
-
**
|
|
103
|
-
- Format: `- [YYYY-MM-DD] <decision and rationale>`
|
|
104
|
-
- Format: `- REJECTED: <approach> — <why it failed>`
|
|
105
|
-
- Source: alternatives tried, design trade-offs made
|
|
106
|
-
|
|
107
|
-
**QUALITY GATE**: Every item must answer: "If a new AI session reads only `.prizm-docs/` and this entry, does it gain actionable understanding that prevents mistakes or accelerates work?" If not, discard.
|
|
117
|
+
**QUALITY GATE**: Every item must answer: "If a new AI session reads only `.prizm-docs/` and this entry, does it gain actionable understanding that prevents mistakes?" If not, discard. DECISIONS (why we chose A over B) belong in project memory, not here.
|
|
108
118
|
|
|
109
119
|
**2c.** Inject into the correct `.prizm-docs/` file:
|
|
110
|
-
- Module-level TRAPS/RULES
|
|
120
|
+
- Module-level TRAPS/RULES → the affected L1 or L2 `.prizm` file
|
|
111
121
|
- Project-level RULES/PATTERNS → `root.prizm`
|
|
112
122
|
|
|
113
123
|
**RULE**: Only add genuinely new information. Never duplicate existing entries. Never rewrite entire files.
|
|
114
124
|
|
|
115
125
|
---
|
|
116
126
|
|
|
127
|
+
## Job 3: Memory Sedimentation → Platform Memory Files
|
|
128
|
+
|
|
129
|
+
Sediment DECISIONS and interface conventions to platform memory files. This is where project-level knowledge lives — the "why" behind design choices, cross-module contracts, and conventions that affect future development.
|
|
130
|
+
|
|
131
|
+
**Project Memory** is distinct from `.prizm-docs/`:
|
|
132
|
+
- `.prizm-docs/` = architecture index (structure, interfaces, traps) — "what exists and what to watch out for"
|
|
133
|
+
- Memory files = development decisions and conventions — "why we chose this approach and what contracts to honor"
|
|
134
|
+
|
|
135
|
+
### When to run Job 3
|
|
136
|
+
|
|
137
|
+
- Feature completion with notable DECISIONS or interface conventions discovered
|
|
138
|
+
- **Skip for**: trivial fixes, config changes, bug fixes with no new conventions
|
|
139
|
+
|
|
140
|
+
### Sedimentation Rules
|
|
141
|
+
|
|
142
|
+
1. **Max 3-5 entries per feature**: Only keep DECISIONS and interface conventions that genuinely affect future development
|
|
143
|
+
2. **Dedup first**: Before appending, read the target memory file(s). If a similar entry already exists, skip or merge-update it
|
|
144
|
+
3. **TRAPS → `.prizm-docs/` only** (handled by Job 2 above)
|
|
145
|
+
4. **DECISIONS + key interface conventions → platform memory files**
|
|
146
|
+
|
|
147
|
+
### Steps
|
|
148
|
+
|
|
149
|
+
**2b-1.** Detect platform from `.prizmkit/config.json` `"platform"` field (or auto-detect from directory structure):
|
|
150
|
+
- `claude` → target: `CLAUDE.md` in project root
|
|
151
|
+
- `codebuddy` → targets: BOTH `CODEBUDDY.md` in project root AND `memory/MEMORY.md` (dual-write required)
|
|
152
|
+
|
|
153
|
+
**2b-2.** Collect sedimentation candidates:
|
|
154
|
+
- From `agents/*.md`: DECISIONS and INTERFACES_DISCOVERED entries
|
|
155
|
+
- From git diff analysis: any project-level conventions established
|
|
156
|
+
- Filter: only entries that answer "Would a new session benefit from knowing this decision/convention?"
|
|
157
|
+
|
|
158
|
+
**2b-3.** Read existing memory file(s) content. Check for duplicates or near-duplicates.
|
|
159
|
+
- For Claude Code: read `CLAUDE.md`
|
|
160
|
+
- For CodeBuddy: read BOTH `CODEBUDDY.md` AND `memory/MEMORY.md`
|
|
161
|
+
|
|
162
|
+
**2b-4.** Append to memory file(s) using this format:
|
|
163
|
+
```markdown
|
|
164
|
+
### F-XXX: <feature-title>
|
|
165
|
+
- DECISION: <decision content> — <rationale>
|
|
166
|
+
- INTERFACE: <module.function>: <convention>
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**2b-5.** For CodeBuddy platform: write identical content to BOTH `CODEBUDDY.md` AND `memory/MEMORY.md` (dual-write, both must be updated).
|
|
170
|
+
|
|
171
|
+
**2b-6.** If no `agents/` directory exists in the feature directory, still attempt to extract DECISIONS from git diff and plan.md. Skip only if no meaningful decisions were made.
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
117
175
|
## Final: Changelog + Stage
|
|
118
176
|
|
|
119
177
|
**3a.** Append to `.prizm-docs/changelog.prizm`:
|
|
@@ -136,7 +194,7 @@ git add .prizm-docs/
|
|
|
136
194
|
In the dev-pipeline, this skill is the **single doc maintenance step** before commit:
|
|
137
195
|
|
|
138
196
|
```
|
|
139
|
-
implement → code-review → retrospective (memory
|
|
197
|
+
implement → code-review → retrospective (architecture sync + memory sedimentation) → committer (pure commit)
|
|
140
198
|
```
|
|
141
199
|
|
|
142
200
|
The pipeline enforces a **docs pass condition**: `.prizm-docs/` must show changes in the final commit. This skill is the sole satisfier of that requirement.
|
|
@@ -146,11 +204,14 @@ The pipeline enforces a **docs pass condition**: `.prizm-docs/` must show change
|
|
|
146
204
|
| From | To | Condition |
|
|
147
205
|
|------|----|-----------|
|
|
148
206
|
| `prizmkit-code-review` | **this skill** | Review passes or work is complete |
|
|
149
|
-
| **this skill** | `prizmkit-committer` |
|
|
207
|
+
| **this skill** | `prizmkit-committer` | Architecture synced + memory sedimented, ready to commit |
|
|
150
208
|
| `prizmkit-committer` | — | Committed |
|
|
151
209
|
|
|
152
210
|
## Output
|
|
153
211
|
|
|
154
|
-
- `.prizm-docs/*.prizm` — Structurally synced +
|
|
212
|
+
- `.prizm-docs/*.prizm` — Structurally synced + TRAPS/RULES enriched (architecture index)
|
|
155
213
|
- `.prizm-docs/changelog.prizm` — Appended entries
|
|
156
|
-
-
|
|
214
|
+
- Platform memory file(s) — DECISIONS + interface conventions sedimented (project memory)
|
|
215
|
+
- Claude Code: `CLAUDE.md`
|
|
216
|
+
- CodeBuddy: BOTH `CODEBUDDY.md` AND `memory/MEMORY.md`
|
|
217
|
+
- All `.prizm-docs/` changes staged via `git add .prizm-docs/`
|
|
@@ -25,7 +25,7 @@ Create a new Architecture Decision Record.
|
|
|
25
25
|
- **Consequences**: Identify positive and negative consequences
|
|
26
26
|
- **Alternatives considered**: Ask user about alternatives and why they were rejected
|
|
27
27
|
3. Write to `docs/adr/NNNN-title.md` (zero-padded number, kebab-case title)
|
|
28
|
-
4.
|
|
28
|
+
4. Record in platform memory file (`CLAUDE.md` for Claude Code, BOTH `CODEBUDDY.md` AND `memory/MEMORY.md` for CodeBuddy) as a DECISION entry
|
|
29
29
|
|
|
30
30
|
### `/prizmkit-adr`.list
|
|
31
31
|
|
|
@@ -64,4 +64,4 @@ All internal asset paths MUST use `${SKILL_DIR}` placeholder for cross-IDE compa
|
|
|
64
64
|
## Output
|
|
65
65
|
|
|
66
66
|
- ADR files in `docs/adr/` directory
|
|
67
|
-
- Updated DECISIONS
|
|
67
|
+
- Updated DECISIONS in platform memory file (`CLAUDE.md` or `CODEBUDDY.md` + `memory/MEMORY.md`)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "refactor-workflow"
|
|
3
3
|
tier: 1
|
|
4
|
-
description: "End-to-end refactor workflow: analyze → plan → implement → review → commit. 5-phase behavior-preserving pipeline with mandatory test gates. Use this skill whenever the user wants to restructure, clean up, or optimize code without changing behavior. Trigger on: 'refactor', 'clean up code', 'restructure', 'optimize code structure', 'extract module', '
|
|
4
|
+
description: "End-to-end refactor workflow: analyze → plan → implement → review → commit. 5-phase behavior-preserving pipeline with mandatory test gates. Use this skill whenever the user wants to restructure, clean up, or optimize code without changing behavior. Trigger on: 'refactor', 'clean up code', 'restructure', 'optimize code structure', 'extract module', 'code refactoring'. (project)"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# PrizmKit Refactor Workflow
|
|
@@ -9,7 +9,7 @@ description: "End-to-end refactor workflow: analyze → plan → implement → r
|
|
|
9
9
|
End-to-end orchestration skill for code refactoring and optimization. Chains existing PrizmKit skills into a 5-phase behavior-preserving pipeline with mandatory test gates after each task.
|
|
10
10
|
|
|
11
11
|
### When to Use
|
|
12
|
-
- User says "refactor", "clean up code", "restructure", "extract module", "
|
|
12
|
+
- User says "refactor", "clean up code", "restructure", "extract module", "code refactoring", "optimize code structure"
|
|
13
13
|
- Code has accumulated tech debt that needs structural improvement
|
|
14
14
|
- Module needs to be split, merged, or reorganized
|
|
15
15
|
- When behavior must remain unchanged but internal quality needs improvement
|
|
@@ -34,9 +34,9 @@ refactor-workflow
|
|
|
34
34
|
|
|
35
35
|
| Phase | Name | Skill Used | Artifact |
|
|
36
36
|
|-------|------|-----------|----------|
|
|
37
|
-
| 1 | Analyze
|
|
38
|
-
| 2 | Plan
|
|
39
|
-
| 3 | Implement
|
|
37
|
+
| 1 | Analyze (Code Analysis) | Built-in code analysis + code reading | → `refactor-analysis.md` |
|
|
38
|
+
| 2 | Plan (Refactor Plan & Tasks) | `/prizmkit-plan` | → `plan.md` (with Tasks section) |
|
|
39
|
+
| 3 | Implement | `/prizmkit-implement` | (code changes) |
|
|
40
40
|
| 4 | Code Review | `/prizmkit-code-review` | (review report) |
|
|
41
41
|
| 5 | Commit | `/prizmkit-committer` | git commit |
|
|
42
42
|
|
|
@@ -56,12 +56,12 @@ Refactor artifacts stored at `.prizmkit/refactor/<refactor-slug>/`:
|
|
|
56
56
|
|
|
57
57
|
**INPUT**: Target description. Can be:
|
|
58
58
|
- Module or file path (e.g., "src/auth/")
|
|
59
|
-
- Natural language description (e.g., "
|
|
59
|
+
- Natural language description (e.g., "refactor the auth module, extract shared logic")
|
|
60
60
|
- Specific refactoring goal (e.g., "extract payment processing into separate service")
|
|
61
61
|
|
|
62
62
|
---
|
|
63
63
|
|
|
64
|
-
## Phase 1: Analyze —
|
|
64
|
+
## Phase 1: Analyze — Code Analysis
|
|
65
65
|
|
|
66
66
|
**Goal**: Assess current code state, identify refactoring targets, establish baseline.
|
|
67
67
|
|
|
@@ -93,7 +93,7 @@ Refactor artifacts stored at `.prizmkit/refactor/<refactor-slug>/`:
|
|
|
93
93
|
|
|
94
94
|
---
|
|
95
95
|
|
|
96
|
-
## Phase 2: Plan —
|
|
96
|
+
## Phase 2: Plan — Refactor Plan & Tasks
|
|
97
97
|
|
|
98
98
|
**Goal**: Generate technical refactoring plan that preserves behavior, including task breakdown.
|
|
99
99
|
|
|
@@ -115,7 +115,7 @@ Refactor artifacts stored at `.prizmkit/refactor/<refactor-slug>/`:
|
|
|
115
115
|
|
|
116
116
|
---
|
|
117
117
|
|
|
118
|
-
## Phase 3: Implement
|
|
118
|
+
## Phase 3: Implement
|
|
119
119
|
|
|
120
120
|
**Goal**: Execute refactoring tasks with mandatory test verification after each task.
|
|
121
121
|
|
|
@@ -140,7 +140,7 @@ Refactor artifacts stored at `.prizmkit/refactor/<refactor-slug>/`:
|
|
|
140
140
|
|
|
141
141
|
---
|
|
142
142
|
|
|
143
|
-
## Phase 4: Code Review
|
|
143
|
+
## Phase 4: Code Review
|
|
144
144
|
|
|
145
145
|
**Goal**: Verify refactoring quality and behavior preservation.
|
|
146
146
|
|
|
@@ -162,7 +162,7 @@ Refactor artifacts stored at `.prizmkit/refactor/<refactor-slug>/`:
|
|
|
162
162
|
|
|
163
163
|
---
|
|
164
164
|
|
|
165
|
-
## Phase 5: Commit
|
|
165
|
+
## Phase 5: Commit
|
|
166
166
|
|
|
167
167
|
**Goal**: Commit with refactor convention.
|
|
168
168
|
|
|
@@ -182,7 +182,7 @@ Refactor artifacts stored at `.prizmkit/refactor/<refactor-slug>/`:
|
|
|
182
182
|
|
|
183
183
|
---
|
|
184
184
|
|
|
185
|
-
## Fast Path
|
|
185
|
+
## Fast Path
|
|
186
186
|
|
|
187
187
|
For single-file refactoring (rename, extract method, <30 lines changed):
|
|
188
188
|
|
|
@@ -213,7 +213,7 @@ Skip Phase 2's detailed planning process, but still generate a lightweight `plan
|
|
|
213
213
|
|
|
214
214
|
---
|
|
215
215
|
|
|
216
|
-
## Resume —
|
|
216
|
+
## Resume — Interruption Recovery
|
|
217
217
|
|
|
218
218
|
The pipeline supports resuming from the last completed phase by detecting existing artifacts.
|
|
219
219
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"communication": {
|
|
7
7
|
"protocol": "SendMessage",
|
|
8
8
|
"routing": "mesh",
|
|
9
|
-
"note": "Teammates
|
|
9
|
+
"note": "Teammates communicate directly via SendMessage; key messages must also be sent to Orchestrator"
|
|
10
10
|
},
|
|
11
11
|
"members": [
|
|
12
12
|
{
|
package/package.json
CHANGED
package/src/upgrade.js
CHANGED
|
@@ -213,13 +213,25 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
213
213
|
}
|
|
214
214
|
|
|
215
215
|
// 3. Resolve new skill list using old manifest's suite + platform (or defaults)
|
|
216
|
-
const
|
|
216
|
+
const oldManifestPlatform = oldManifest?.platform || 'claude';
|
|
217
217
|
const suite = oldManifest?.suite || 'full';
|
|
218
218
|
const team = oldManifest?.options?.team ?? true;
|
|
219
219
|
const pipeline = oldManifest?.options?.pipeline ?? true;
|
|
220
220
|
const rulesPreset = oldManifest?.options?.rules || 'recommended';
|
|
221
221
|
const aiCli = userConfig.ai_cli || oldManifest?.options?.aiCli || '';
|
|
222
222
|
|
|
223
|
+
// Filesystem-based platform detection (overrides manifest if dirs exist)
|
|
224
|
+
const hasClaude = await fs.pathExists(path.join(projectRoot, '.claude', 'commands'))
|
|
225
|
+
|| await fs.pathExists(path.join(projectRoot, '.claude', 'agents'));
|
|
226
|
+
const hasCodeBuddy = await fs.pathExists(path.join(projectRoot, '.codebuddy', 'skills'))
|
|
227
|
+
|| await fs.pathExists(path.join(projectRoot, '.codebuddy', 'agents'));
|
|
228
|
+
|
|
229
|
+
let platform;
|
|
230
|
+
if (hasClaude && hasCodeBuddy) platform = 'both';
|
|
231
|
+
else if (hasCodeBuddy) platform = 'codebuddy';
|
|
232
|
+
else if (hasClaude) platform = 'claude';
|
|
233
|
+
else platform = oldManifestPlatform; // fallback to manifest
|
|
234
|
+
|
|
223
235
|
const newSkillList = await resolveSkillList(suite);
|
|
224
236
|
const agentsDir = getAgentsDir();
|
|
225
237
|
const newAgentFiles = (await fs.readdir(agentsDir)).filter(f => f.endsWith('.md'));
|
|
@@ -255,7 +267,7 @@ export async function runUpgrade(directory, options = {}) {
|
|
|
255
267
|
const oldVersion = oldManifest?.version || 'unknown';
|
|
256
268
|
console.log(chalk.bold(' Upgrade Summary:'));
|
|
257
269
|
console.log(` Version: ${chalk.gray(oldVersion)} → ${chalk.cyan(pkg.version)}`);
|
|
258
|
-
console.log(` Platform: ${platform}`);
|
|
270
|
+
console.log(` Platform: ${platform}${platform !== oldManifestPlatform ? chalk.yellow(` (detected from filesystem, manifest had: ${oldManifestPlatform})`) : ''}`);
|
|
259
271
|
console.log(` Suite: ${suite}`);
|
|
260
272
|
console.log('');
|
|
261
273
|
|