- guide/workflows/gstack-workflow.md (new): Cognitive Mode Switching pattern — 6 gears table, pre-implementation strategic gate concept, /browse non-MCP native Chromium daemon architecture (~100ms/cmd), full ship cycle demo. Reference impl: gstack by Garry Tan (YC CEO). - examples/commands/plan-ceo-review.md (new): strategic product gate template with 3 modes (SCOPE EXPANSION / HOLD SCOPE / REDUCTION) - examples/commands/plan-eng-review.md (new): engineering architecture gate template with Mermaid diagrams, failure modes, test matrix - guide/workflows/README.md: add entry + 2 Quick Selection Guide rows - guide/ecosystem/third-party-tools.md: gstack in Plugin Ecosystem - machine-readable/reference.yaml: v3.34.9, 11 new gstack entries Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
195 lines
5.9 KiB
Markdown
195 lines
5.9 KiB
Markdown
---
|
|
name: plan-eng-review
|
|
description: Engineering architecture gate — lock architecture, diagrams, edge cases, and test matrix before writing implementation code
|
|
version: 1.0.0
|
|
inspired-by: https://github.com/garrytan/gstack
|
|
---
|
|
|
|
# /plan-eng-review — Engineering Architecture Gate
|
|
|
|
Post-direction, pre-implementation command. Takes validated product direction and returns a buildable technical spec with diagrams. Forces the system to think through architecture before a single line of implementation code is written.
|
|
|
|
**Use after `/plan-ceo-review` has locked direction. Still in plan mode.**
|
|
|
|
---
|
|
|
|
## The Problem This Solves
|
|
|
|
Once product direction is locked, the next failure mode is vague architecture. "The system will handle it" is not a plan. This command forces explicit answers to the hard technical questions before they become production incidents.
|
|
|
|
The key unlock: **forcing diagram generation**. Diagrams surface hidden assumptions that prose keeps vague. A sequence diagram makes you specify who calls what. A state machine makes you enumerate every failure mode explicitly.
|
|
|
|
---
|
|
|
|
## When to Use
|
|
|
|
- After product direction is validated (post `/plan-ceo-review` or equivalent)
|
|
- Before any implementation work starts on a non-trivial feature
|
|
- When the feature has async components, external dependencies, or multi-step flows
|
|
- Any time "the architecture is clear" needs to be proven, not assumed
|
|
|
|
---
|
|
|
|
## What It Should Produce
|
|
|
|
| Output | Why it matters |
|
|
|--------|----------------|
|
|
| Architecture diagram (Mermaid) | Makes component boundaries explicit |
|
|
| Data flow diagram | Shows where data transforms and who owns what |
|
|
| State machine for core flow | Forces enumeration of all states including failures |
|
|
| Sync vs async boundary decisions | Prevents "just make it async" without reasoning |
|
|
| Failure mode inventory | Every failure path, not just happy path |
|
|
| Trust boundary map | Where do you accept external input? What do you validate? |
|
|
| Test matrix | What needs to be tested and at which layer |
|
|
|
|
---
|
|
|
|
## Prompt Template
|
|
|
|
```markdown
|
|
# /plan-eng-review
|
|
|
|
You are in engineering manager / tech lead mode. Direction is locked.
|
|
Your job is to make it buildable — turn the product direction into a
|
|
technical spec that an engineer can implement without making architecture
|
|
decisions on the fly.
|
|
|
|
Do NOT question the product direction. Do NOT suggest scope changes.
|
|
Do NOT implement anything. Return a technical spec.
|
|
|
|
## Step 1: Restate the Feature
|
|
|
|
1-2 sentences: what is being built. Confirm you are working from the
|
|
correct brief.
|
|
|
|
## Step 2: Architecture Diagram
|
|
|
|
Draw the component architecture in Mermaid:
|
|
- All components involved (frontend, backend, jobs, storage, external APIs)
|
|
- Boundaries between components
|
|
- Data flow directions
|
|
|
|
```mermaid
|
|
graph LR
|
|
...
|
|
```
|
|
|
|
## Step 3: Core Flow — Sequence Diagram
|
|
|
|
Draw the happy path as a sequence diagram:
|
|
- Which components call which, in what order
|
|
- What data passes at each step
|
|
- Where async handoffs happen
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
...
|
|
```
|
|
|
|
## Step 4: State Machine
|
|
|
|
Draw the state machine for the core domain object:
|
|
- All valid states
|
|
- All transitions and their triggers
|
|
- Terminal states (success AND failure)
|
|
|
|
```mermaid
|
|
stateDiagram-v2
|
|
...
|
|
```
|
|
|
|
## Step 5: Sync vs Async Decisions
|
|
|
|
For each operation in the flow, decide:
|
|
- **Synchronous** (blocks the request): why, and what is the latency budget
|
|
- **Asynchronous** (background job): why, what triggers retry, how does the
|
|
caller know it succeeded
|
|
|
|
## Step 6: Failure Mode Inventory
|
|
|
|
For each step in the flow, enumerate:
|
|
- What can fail
|
|
- How it fails (silently? loudly? partial success?)
|
|
- What the recovery path is
|
|
- What the user sees
|
|
|
|
Flag any failure that is currently silent.
|
|
|
|
## Step 7: Trust Boundaries
|
|
|
|
For each external input (user uploads, API responses, webhook payloads):
|
|
- What do you trust? What do you validate?
|
|
- Where could malicious input cause harm?
|
|
- Is any external data flowing into further processing (prompt injection risk)?
|
|
|
|
## Step 8: Test Matrix
|
|
|
|
| Layer | What to test | Why |
|
|
|-------|-------------|-----|
|
|
| Unit | ... | ... |
|
|
| Integration | ... | ... |
|
|
| E2E | ... | ... |
|
|
|
|
Identify any failure mode from Step 6 that does not have a corresponding test.
|
|
|
|
## Step 9: Open Questions
|
|
|
|
List any architectural decision that is genuinely unclear and needs a human
|
|
decision before implementation can start. Not a comprehensive list — only
|
|
blockers.
|
|
```
|
|
|
|
---
|
|
|
|
## Example
|
|
|
|
**Feature**: Smart listing creation from photo (post-`/plan-ceo-review`)
|
|
|
|
**Output excerpt**:
|
|
```mermaid
|
|
graph LR
|
|
Upload[Photo Upload] --> Storage[Object Storage]
|
|
Storage --> Classify[Vision Classification Job]
|
|
Classify --> Enrich[Web Enrichment Job]
|
|
Enrich --> DraftGen[Draft Generation]
|
|
DraftGen --> DB[(Listings DB)]
|
|
DraftGen --> UI[Listing Editor UI]
|
|
```
|
|
|
|
State machine:
|
|
```mermaid
|
|
stateDiagram-v2
|
|
[*] --> pending
|
|
pending --> classifying
|
|
classifying --> enriching
|
|
classifying --> classification_failed
|
|
enriching --> draft_ready
|
|
enriching --> enrichment_partial
|
|
enrichment_partial --> draft_ready
|
|
draft_ready --> published
|
|
draft_ready --> discarded
|
|
```
|
|
|
|
Failure modes:
|
|
- Classification fails → degrade to manual listing (not silent failure)
|
|
- Enrichment partially fails → use what succeeded, flag missing fields
|
|
- Upload succeeds, classification job never starts → orphaned file, cleanup job required
|
|
- Web data in draft generation → prompt injection vector, sanitize before passing to LLM
|
|
|
|
---
|
|
|
|
## Integration with Other Commands
|
|
|
|
```
|
|
/plan-ceo-review → product direction locked
|
|
/plan-eng-review → architecture locked ← you are here
|
|
[implement]
|
|
/review → paranoid pre-merge check
|
|
/ship → release
|
|
```
|
|
|
|
## See Also
|
|
|
|
- [Cognitive Mode Switching](../../guide/workflows/gstack-workflow.md) — full workflow context
|
|
- [plan-ceo-review](./plan-ceo-review.md) — previous step
|
|
- [Plan Pipeline](../../guide/workflows/plan-pipeline.md) — more automated orchestration with ADR memory
|