@boyingliu01/opencode-plugin 0.13.0 → 0.13.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@boyingliu01/opencode-plugin",
3
- "version": "0.13.0",
3
+ "version": "0.13.2",
4
4
  "type": "module",
5
5
  "main": "index.ts",
6
6
  "description": "XP-Gate quality gates + AI workflow skills + Sprint Flow TUI sidebar for OpenCode",
@@ -1,9 +1,9 @@
1
1
  # SKILLS/DELPHI-REVIEW KNOWLEDGE BASE
2
2
 
3
3
  **Generated:** 2026-07-08
4
- **Commit:** 6f868ee
5
- **Branch:** sprint/2026-07-07-01
6
- **Version:** 0.13.0.0
4
+ **Commit:** 509be7b
5
+ **Branch:** main
6
+ **Version:** 0.13.2.0
7
7
 
8
8
  ## OVERVIEW
9
9
  Delphi Consensus Review — multi-round anonymous expert review (≥90% threshold, 3 experts from ≥2 providers, domestic models only). Supports design + code-walkthrough modes.
@@ -1,9 +1,9 @@
1
1
  # SKILLS/SPRINT-FLOW KNOWLEDGE BASE
2
2
 
3
3
  **Generated:** 2026-07-08
4
- **Commit:** 6f868ee
5
- **Branch:** sprint/2026-07-07-01
6
- **Version:** 0.13.0.0
4
+ **Commit:** 509be7b
5
+ **Branch:** main
6
+ **Version:** 0.13.2.0
7
7
 
8
8
  ## OVERVIEW
9
9
  **6-phase** development pipeline (v2.0 compact redesign, Issue #290): PREP → DESIGN → BUILD → VERIFY → SHIP → CLOSE. Phase 3/6 BUILD default build mode is **ralph-loop** (REQ-level iteration, 40-67% token savings vs parallel). HARD-GATE between DESIGN (2/6) and BUILD (3/6): design must pass Delphi review (≥90% consensus) before any coding.
@@ -9,7 +9,7 @@ const path = require('path');
9
9
 
10
10
  const SKILL_MD_PATH = path.join(__dirname, '..', 'SKILL.md');
11
11
  const REFERENCES_DIR = path.join(__dirname, '..', 'references');
12
- const PHASE_2_BUILD_PATH = path.join(REFERENCES_DIR, 'phase-2-build.md');
12
+ const PHASE_2_BUILD_PATH = path.join(REFERENCES_DIR, 'phase-3-build.md');
13
13
  const ORCHESTRATION_RULES_PATH = path.join(REFERENCES_DIR, 'orchestration-rules.md');
14
14
 
15
15
  let skillContent = '';
@@ -139,13 +139,12 @@ function testNegativeTestCasesExist() {
139
139
  function testWorkflowStepsOrder() {
140
140
  const frontmatter = parseFrontmatter(skillContent);
141
141
  const steps = frontmatter.workflow_steps || [];
142
- if (steps.length !== 11) {
143
- throw new Error(`workflow_steps must have exactly 11 entries, got ${steps.length}`);
142
+ if (steps.length !== 6) {
143
+ throw new Error(`workflow_steps must have exactly 6 entries, got ${steps.length}`);
144
144
  }
145
145
 
146
146
  const expectedOrder = [
147
- 'ISOLATE', 'AUTO-ESTIMATE', 'THINK', 'PLAN', 'BUILD',
148
- 'REVIEW', 'FEEDBACK', 'SHIP', 'LAND', 'USER ACCEPTANCE', 'CLEANUP',
147
+ 'PREP', 'DESIGN', 'BUILD', 'VERIFY', 'SHIP', 'CLOSE',
149
148
  ];
150
149
 
151
150
  for (let i = 0; i < expectedOrder.length; i++) {
@@ -155,29 +154,29 @@ function testWorkflowStepsOrder() {
155
154
  );
156
155
  }
157
156
  }
158
- console.log(' ✓ workflow_steps order matches canonical 11-phase sequence');
157
+ console.log(' ✓ workflow_steps order matches canonical 6-phase sequence');
159
158
  }
160
159
 
161
160
  function testPhaseFlowDiagramOrder() {
162
- // The Phase Flow diagram in the body must show: ISOLATE → ... → FEEDBACK → SHIP → LAND → USER ACCEPTANCE → CLEANUP
163
- const flowMatch = skillContent.match(/ISOLATE →.*CLEANUP/);
161
+ // The Phase Flow diagram in the body must show: PREP → ... → SHIP → CLOSE
162
+ const flowMatch = skillContent.match(/PREP →.*CLOSE/);
164
163
  if (!flowMatch) {
165
164
  throw new Error('Phase Flow diagram not found in SKILL.md body');
166
165
  }
167
166
  const flow = flowMatch[0];
168
167
 
169
- // Verify FEEDBACK comes before SHIP (not after USER ACCEPTANCE)
170
- const feedbackPos = flow.indexOf('FEEDBACK');
168
+ // Verify VERIFY comes before SHIP
169
+ const verifyPos = flow.indexOf('VERIFY');
171
170
  const shipPos = flow.indexOf('SHIP');
172
- const userAcceptPos = flow.indexOf('USER ACCEPT');
173
- if (feedbackPos === -1 || shipPos === -1 || userAcceptPos === -1) {
171
+ const closePos = flow.indexOf('CLOSE');
172
+ if (verifyPos === -1 || shipPos === -1 || closePos === -1) {
174
173
  throw new Error('Phase Flow diagram missing required phases');
175
174
  }
176
- if (feedbackPos > shipPos) {
177
- throw new Error('FEEDBACK must come before SHIP in phase flow diagram');
175
+ if (verifyPos > shipPos) {
176
+ throw new Error('VERIFY must come before SHIP in phase flow diagram');
178
177
  }
179
- if (shipPos > userAcceptPos) {
180
- throw new Error('SHIP must come before USER ACCEPTANCE in phase flow diagram');
178
+ if (shipPos > closePos) {
179
+ throw new Error('SHIP must come before CLOSE in phase flow diagram');
181
180
  }
182
181
  console.log(' ✓ Phase Flow diagram has correct ordering');
183
182
  }
@@ -199,15 +198,14 @@ function testCanonicalPhaseOrderTableExists() {
199
198
  function testAll11PhasesInPhaseFlowConsistency() {
200
199
  const section = skillContent.split('Phase Flow Consistency')[1];
201
200
  const requiredPhases = [
202
- 'ISOLATE', 'AUTO-ESTIMATE', 'THINK', 'PLAN', 'BUILD',
203
- 'REVIEW', 'FEEDBACK', 'SHIP', 'LAND', 'USER ACCEPTANCE', 'CLEANUP',
201
+ 'PREP', 'DESIGN', 'BUILD', 'VERIFY', 'SHIP', 'CLOSE',
204
202
  ];
205
203
  for (const phase of requiredPhases) {
206
204
  if (!section.includes(phase)) {
207
205
  throw new Error(`Phase Flow Consistency section missing phase: ${phase}`);
208
206
  }
209
207
  }
210
- console.log(' ✓ All 11 phases referenced in Phase Flow Consistency section');
208
+ console.log(' ✓ All 6 phases referenced in Phase Flow Consistency section');
211
209
  }
212
210
 
213
211
  // === Force Levels Tests ===
@@ -272,9 +270,9 @@ function testUvpMentionsEmergentRequirements() {
272
270
  function testTimingSectionExists() {
273
271
  const phase2BuildContent = fs.readFileSync(PHASE_2_BUILD_PATH, 'utf-8');
274
272
  if (!phase2BuildContent.includes('Timing & Stability')) {
275
- throw new Error('phase-2-build.md must contain "Timing & Stability" section');
273
+ throw new Error('phase-3-build.md must contain "Timing & Stability" section');
276
274
  }
277
- console.log(' ✓ Timing & Stability section exists in phase-2-build.md');
275
+ console.log(' ✓ Timing & Stability section exists in phase-3-build.md');
278
276
  }
279
277
 
280
278
  function testTimeoutRecommendationsExist() {
@@ -289,7 +287,7 @@ function testTimeoutRecommendationsExist() {
289
287
  function testExecutionTimeEstimatesExist() {
290
288
  const phase2BuildContent = fs.readFileSync(PHASE_2_BUILD_PATH, 'utf-8');
291
289
  if (!phase2BuildContent.includes('Expected Time')) {
292
- throw new Error('phase-2-build.md must include expected execution time estimates');
290
+ throw new Error('phase-3-build.md must include expected execution time estimates');
293
291
  }
294
292
  console.log(' ✓ Expected execution time estimates exist');
295
293
  }
@@ -305,12 +303,8 @@ function testOrchestrationRulesExists() {
305
303
 
306
304
  function testPhaseSubagentMatrixOrder() {
307
305
  const orchContent = fs.readFileSync(ORCHESTRATION_RULES_PATH, 'utf-8');
308
- const expectedOrder = [
309
- 'ISOLATE', 'AUTO-ESTIMATE', 'THINK', 'PLAN', 'BUILD',
310
- 'REVIEW', 'USER ACCEPT', 'FEEDBACK', 'SHIP', 'LAND', 'CLEANUP',
311
- ];
312
306
  // The matrix order reflects file names, but phases should all be present
313
- for (const phase of ['ISOLATE', 'THINK', 'PLAN', 'BUILD', 'REVIEW', 'CLEANUP']) {
307
+ for (const phase of ['PREP', 'DESIGN', 'BUILD', 'VERIFY', 'SHIP', 'CLOSE']) {
314
308
  if (!orchContent.includes(phase)) {
315
309
  throw new Error(`orchestration-rules.md missing phase: ${phase}`);
316
310
  }
@@ -336,7 +330,7 @@ function runTests(opts = {}) {
336
330
  { name: 'Phase Flow diagram has correct ordering', fn: testPhaseFlowDiagramOrder },
337
331
  { name: 'Phase Flow Consistency section exists', fn: testPhaseFlowConsistencySectionExists },
338
332
  { name: 'Canonical Phase Order table exists', fn: testCanonicalPhaseOrderTableExists },
339
- { name: 'All 11 phases in consistency section', fn: testAll11PhasesInPhaseFlowConsistency },
333
+ { name: 'All 6 phases in consistency section', fn: testAll11PhasesInPhaseFlowConsistency },
340
334
  { name: 'force-levels.md exists with three levels', fn: testForceLevelsDocumentExists },
341
335
  { name: 'force-levels.md requires Delphi review', fn: testForceLevelsRequiresDelphi },
342
336
  { name: 'Unique Value Proposition exists', fn: testUniqueValuePropositionExists },
@@ -378,7 +372,7 @@ function runTests(opts = {}) {
378
372
  function testUncommittedGateExists() {
379
373
  const phase2BuildContent = fs.readFileSync(PHASE_2_BUILD_PATH, 'utf-8');
380
374
  if (!phase2BuildContent.includes('Uncommitted Changes Gate')) {
381
- throw new Error('phase-2-build.md must contain "Uncommitted Changes Gate" section');
375
+ throw new Error('phase-3-build.md must contain "Uncommitted Changes Gate" section');
382
376
  }
383
377
  console.log(' ✓ Uncommitted Changes Gate section exists');
384
378
  }
@@ -419,7 +413,7 @@ describe('sprint-flow SKILL.md', () => {
419
413
  { name: 'Phase Flow diagram has correct ordering', fn: testPhaseFlowDiagramOrder },
420
414
  { name: 'Phase Flow Consistency section exists', fn: testPhaseFlowConsistencySectionExists },
421
415
  { name: 'Canonical Phase Order table exists', fn: testCanonicalPhaseOrderTableExists },
422
- { name: 'All 11 phases in consistency section', fn: testAll11PhasesInPhaseFlowConsistency },
416
+ { name: 'All 6 phases in consistency section', fn: testAll11PhasesInPhaseFlowConsistency },
423
417
  { name: 'force-levels.md exists with three levels', fn: testForceLevelsDocumentExists },
424
418
  { name: 'force-levels.md requires Delphi review', fn: testForceLevelsRequiresDelphi },
425
419
  { name: 'Unique Value Proposition exists', fn: testUniqueValuePropositionExists },
@@ -1,9 +1,9 @@
1
1
  # SKILLS/TEST-SPECIFICATION-ALIGNMENT KNOWLEDGE BASE
2
2
 
3
3
  **Generated:** 2026-07-08
4
- **Commit:** 6f868ee
5
- **Branch:** sprint/2026-07-07-01
6
- **Version:** 0.13.0.0
4
+ **Commit:** 509be7b
5
+ **Branch:** main
6
+ **Version:** 0.13.2.0
7
7
 
8
8
  ## OVERVIEW
9
9
  Test-Specification Alignment Engine — two-stage validation ensuring tests accurately reflect requirements and design specs.