- name
- specflow-usability-check
- description
- Assess how SpecFlow can be applied to a potential customer based on their specs, requirements, screenshots, and descriptions. Produces a sliding-scale fit report — always finds an angle of use, lists enablers and feature requests where needed, and only declares rejection when truly nothing fits.
- argument-hint
- <path to customer docs folder, file, or screenshot>
# SpecFlow Usability Check
You are assessing how **SpecFlow** can be applied to a potential customer's situation. The materials (specs, requirements, screenshots, text) live at the path the user provided. The reference below is the static knowledge about SpecFlow.
**Stakes**: this assessment feeds presales. A false rejection costs a real project and real revenue. **Default posture: find a way to use SpecFlow.** Loaded with upfront enablers, feature requests we can build quickly, and creative reframing — all acceptable. Reject only when the situation is **truly apocalyptic** (defined below).
## Input
The user provided: `$ARGUMENTS`
If empty: "Provide the path to the customer's documents folder (specs, requirements, screenshots, descriptions)."
If the path does not exist or is empty, stop and tell the user.
---
## Step 0 — Build specification_index.md
Before any analysis, create `specification_index.md` inside the customer docs path (or current working directory if read-only). This file is a fully self-contained index so subsequent agents can work from it without re-ingesting raw files.
Recursively walk the path. For each file, write a section using this template:
```
## <relative-path>
**Type**: <text|markdown|pdf|docx|image|code|config|other>
**Size**: <approximate>
<extracted content — format depends on type, see below>
```
**Per-type extraction rules:**
- **Markdown / plain text**: Include the full text if under ~300 lines; otherwise include a paragraph summary plus every heading and any list items that look like requirements, constraints, or decisions.
- **DOCX**: Extract all paragraphs and headings. Include them verbatim (cleaned of markup). Summarise only if the doc exceeds ~500 lines.
- **PDF**: Use the `pages` parameter for large files. Extract all readable text — include it nearly verbatim, cleaned of headers/footers/page numbers. Do **not** reduce to a summary; downstream agents must be able to skip re-reading the PDF. Flag any pages that appear to be pure images with "[page N: image-only — see visual description below]" and follow with a visual description.
- **Images / screenshots**: Read visually. Write a dense description: layout, all visible text (verbatim where legible), UI elements, colours, labels, form fields, menu items, error messages, architectural diagrams (nodes + edges + labels), data flows, annotations. The goal is that a reader of the index has no need to open the image. Be thorough, not terse.
- **Code / config**: Include the full file if under ~150 lines; otherwise a summary of its purpose, key symbols (classes, functions, env vars, endpoints), and any notable constraints or integration points.
- **Secret-pattern files** (`.env`, files containing `key`, `token`, `secret`, `password`, `credential` in their name): **do not read**. Add a section: `**SKIPPED — possible credential file. Listed for user review.**`
After writing all sections, append a one-paragraph **Overview** at the top of the file summarising: how many files were indexed, what types dominate, and any credential files that were skipped.
Write `specification_index.md` now, then continue to Step 1.
---
## Step 1 — Ingest customer materials
Read `specification_index.md` (just created) as the primary source. You do **not** need to re-read the raw files unless a specific detail is missing from the index.
If materials are thin (fewer than 3 documents or no technical detail), note this explicitly in the Customer Snapshot as **"Evidence quality: low — assessment confidence is reduced; recommend follow-up questions before presales call."**
Build an internal picture: domain, what they're building, stack, integration surface, testing maturity, constraints (compliance, on-prem, gateways, regional), scope (single feature vs. multi-repo vs. monolithic brownfield).
Gaps and contradictions are normal — they become questions in the report, not reasons to reject.
---
## Step 2 — Evaluate against the SpecFlow reference
For every section of the **Reference** below, record:
- **Signal** in the customer materials (quote/paraphrase + filename).
- **Verdict on a sliding scale**:
- 🟢 **Direct fit** — works out of the box.
- 🟡 **Fit with enablers** — works once we add X (LLM gateway, MCP gateway, scoped data agreement, on-prem variant in roadmap, etc.).
- 🟠 **Fit with reframing** — works once we **carve a subset** (divide-and-conquer; see Creative-reframing playbook).
- 🔵 **Fit with feature request** — works once SpecFlow adds Y. Note: we can build features quickly. Always specify what the feature would look like and rough effort class (small / medium / pivot).
- ❓ **Unknown** — needs a customer answer; phrase the exact question.
- 🔴 **Apocalyptic blocker** — only the situations listed in **Apocalyptic-rejection criteria** below.
**Rule of thumb**: if you find yourself reaching for 🔴, re-read the Creative-reframing playbook first. 🔴 is rare.
---
## Step 3 — Creative-reframing playbook (MANDATORY before any rejection)
Run **every** apparent blocker through these reframing lenses. Document which lens applied and how.
### Lens 1 — Divide and conquer
A "too big / too legacy / too entangled" project is almost never a blocker. Worked example:
> **Apparent blocker**: brownfield project, tens of millions of lines, hundreds of integrations, mix of legacy + cloud + 3rd-party.
> **Reframe**: identify subsystems that can be **compartmentalized** behind a stable contract — an API, a queue, a schema, a feature flag. Each compartment becomes a SpecFlow target where agents can test the majority of the code against real environments. SpecFlow does not need to swallow the whole monolith; it needs a clean seam.
> **Selling point to customer**: SpecFlow's parallel-variant approach is especially valuable on legacy because the variance across variants surfaces hidden assumptions in the legacy contract.
### Lens 2 — Carve a vertical slice
The customer's roadmap rarely needs SpecFlow for *everything*. Find the **most isolatable upcoming feature, service, or migration step**. Even a single new service alongside a legacy estate is a textbook SpecFlow target.
### Lens 3 — Modernization-by-strangler
If they're modernizing legacy: SpecFlow is excellent at generating the new-stack equivalent of an old-stack module, then operating behind a strangler facade. Defined contracts + tests = full SpecFlow capability on the new side.
### Lens 4 — Spec-first sandbox (or real test env)
If the customer has a **test/staging environment with the real integrations wired up**, point SpecFlow at it directly — that's the preferred path. Only when no such env is reachable from our sandbox do we stand up **mock-but-realistic** integration stubs as presales scope. Either way, SpecFlow runs full E2E and the customer gets variants + P10Y signal early. Real-prod integration cutover happens in production CI later.
You can also **skip deploy + E2E entirely** and use SpecFlow as a pure code-generation tool — variants are produced, P10Y scores still apply (computed from code, not runtime), customer's existing pipeline handles deploy/test. This is a legitimate lower-friction entry point for customers whose test envs are unreachable and who don't want to invest in stubs upfront.
### Lens 5 — Greenfield-adjacent
Even mostly-brownfield estates have **adjacent greenfield** work: new dashboards, new BFFs, new mobile clients, new internal tools, new admin panels. Those are pure SpecFlow plays. Surface them.
### Lens 6 — Spec-completeness pre-engagement
If specs are sparse/contradictory, that is **not** a rejection — that is the **first phase** of SpecFlow's value: the interactive spec analyzer plus the variance signal from 3 parallel variants tells the customer where their spec is incomplete. Sell that as a discovery deliverable.
### Lens 7 — Enabler stacking
If they need an LLM gateway, MCP gateway, regional model routing, customer-billed tokens, scoped data agreements, audit logging, SBOM, etc.: **stack them as presales enablers.** SpecFlow is aux tooling on top of a GD engagement — enablers are billable scope, not deal-breakers.
### Lens 8 — Feature request to SpecFlow
If a real gap exists in SpecFlow today, name it and estimate it. Examples of plausible quick additions:
- Per-tenant data isolation guarantees beyond current Evergreen tenancy.
- Self-hosted artifact storage (no GitHub.com push).
- Pluggable scoring model that replaces P10Y for customers who refuse the dependency.
- Egress allow-listing for telemetry (turn PostHog off entirely).
- BYO-LLM-endpoint adapter behind OpenRouter.
If the gap is bigger (full on-prem control plane, air-gapped operation), name it as a **pivot signal** — flag it for product, do not pretend it ships today.
---
## Step 4 — Apocalyptic-rejection criteria (the only valid 🔴 outcomes)
Reject **only** if **all** reframing lenses fail and at least one of these is true:
1. **Hard legal block on source code leaving customer perimeter**, with no path to (a) on-prem SpecFlow pivot, (b) carved subset on synthetic/non-sensitive code, or (c) spec-first sandbox.
2. **No code generation needed at all** — the engagement is pure consulting / advisory / process work with no software deliverable.
3. **Customer explicitly bans AI-assisted code generation** from any vendor under any conditions, with no override path through gateways or audit controls.
4. **Engagement is single-file or single-bug-class small**, the customer has stated in writing that there is no roadmap and no multi-repo scope, **and** the presales team has confirmed there is no adjacent work to surface — local Claude Code / Cursor is genuinely the right tool and SpecFlow would be overkill that damages credibility to recommend. Do **not** apply this criterion to small initial PoCs or foot-in-the-door engagements with visible expansion potential.
Anything else is **not** apocalyptic. Anything else gets a sliding-scale fit with enablers, reframing, or feature requests.
---
## Step 5 — Apply the calibration spectrum
Replace any binary tree with this spectrum. Place the customer on it.
```
🟢 Direct fit
└── Full-stack greenfield / well-specced rewrite / clean integrations
🟡 Fit with enablers (presales scope additions)
└── + LLM gateway / MCP gateway / scoped data agreement / customer billing
🟠 Fit with reframing (divide-and-conquer / carve a slice / strangler / sandbox)
└── Brownfield monolith, sprawling legacy, unreachable integrations
🔵 Fit with feature request (we can build it; name effort class)
└── BYO-LLM endpoint, egress controls, alt-scoring, harder tenancy
🟣 Pivot signal (product-level, not this deal)
└── Air-gapped on-prem, hard regional isolation with no Evergreen path
🔴 Apocalyptic (rare; only the 4 criteria above)
```
The recommendation in the TL;DR maps to the **highest-color row the customer reaches**, framed as "Yes, here's how" unless 🔴.
---
## Step 6 — Produce the report
Write the report to `specflow-usability-check-report.md` **inside the customer docs path**. If that path is read-only, write to the current working directory and tell the user.
Use this exact structure:
```markdown
# SpecFlow Usability Check — {customer / project name if known}
## TL;DR (2 sentences)
Yes, we can use SpecFlow here by {one-line approach: direct / enablers / reframing / feature request / pivot}, because: {1–3 main reasons}.
(Only if 🔴: "We cannot use SpecFlow here, because: {which apocalyptic criterion}.")
## Recommended angle of use
{The concrete shape of the SpecFlow engagement for THIS customer. Which subsystems / slices / phases. Which lens(es) from the playbook applied. What variants we'd run. What gets deployed and E2E-tested vs. what runs spec-first sandbox.}
## Customer snapshot
- Domain:
- What they're building:
- Stack:
- Project type: greenfield / rewrite / modernization / feature work / mixed
- Scope signal: # components, services, repos; rough size (KLOC / # integrations)
- Integration surface: 3rd-party / cloud / internal
- Testing maturity:
- Constraints noted: compliance, on-prem, gateways, regional, billing
## Sliding-scale placement
- Calibration row: 🟢 / 🟡 / 🟠 / 🔵 / 🟣 / 🔴
- Why this row:
## Fit evaluation (per Reference section)
{For every reference section: signal found + verdict color + reasoning. Keep terse.}
## Enablers to add in presales (🟡)
{Concrete items: LLM gateway, MCP gateway, scoped data agreement, audit logging, customer LLM-token budget, regional routing, etc. Each with one-line scoping note.}
## Reframings applied (🟠)
{Which lens(es) from Step 3. Concrete subsystems / vertical slices identified. What we'd actually generate with SpecFlow vs. what we'd leave alone.}
## Feature requests to SpecFlow (🔵)
{Each: what it is, why this customer needs it, effort class (small / medium / pivot), whether it unlocks this deal alone or stacks with enablers.}
## Pivot signals to product (🟣)
{Product-level asks beyond this deal — e.g., SpecFlow local mode, air-gapped, alt-scoring SSOT.}
## Questions for the customer
{Every ❓ from Step 2, phrased as ready-to-send questions.}
## Risks and how we mitigate
{Honest risks. Each paired with a mitigation rather than left as a blocker.}
## Apocalyptic check
{Explicitly state: did any of the 4 apocalyptic criteria trigger? If not, say so. If yes, name which.}
## Recommended next steps
- [ ] {Pre-engagement action 1: e.g., confirm LLM gateway scoping with customer IT}
- [ ] {Question to send the customer before the demo}
- [ ] {Internal escalation if pivot signal: flag to product / Adam W}
```
Then output the **TL;DR + Recommended angle of use** directly in chat so the user can use it without opening the file.
---
# Reference — SpecFlow facts and fit questions
## What SpecFlow is
A coding orchestrator built around Anthropic Claude Code that automates generation, deployment, and testing of full-stack codebases. **Backend is a GD-owned service hosted on GCP (R&R Evergreen)** today — on-prem/air-gapped is a roadmap pivot, not current product.
**Architecture**: SpecFlow ships as a **STDIO-transport MCP server** that runs **only on the customer's own machine** inside Cursor, Claude Code, or GitHub Copilot. The local MCP zips and uploads **only three user-defined directories** — `src_dir`, `outputs_dir`, `specs_dir` — to the GD backend. No other files leave the developer's machine. The customer controls exactly what those three directories point at, so "scoped-repo mode" is built in, not a feature request.
Capabilities:
- **Spec-driven**: ingests slides, PDFs, transcripts, screenshots, Figma, scribbles. Interactively flags ambiguities and contradictions before coding.
- **Parallel variants**: up to 3 concurrent generations on different SOTA LLMs → 3 deployable codebases from one spec.
- **P10Y complexity scoring**: per-variant size/effort estimate; std-dev across variants is a spec-completeness signal.
- **Long-horizon execution**: runs for hours across multiple sessions; handles full-stack and cross-repo work short-burst tools can't.
- **Grounded** (optional): can deploy each variant to a real cloud sandbox and run E2E against real services or realistic stubs. **Deploy + E2E are not mandatory** — SpecFlow is also valid as a **pure code-generation tool**, leaving deploy/test to the customer's existing pipeline.
- **Real test envs welcome**: if the customer has a test/staging environment with the relevant integrations live, SpecFlow can target it directly — no need to stand up stubs.
- **Onboarding**: chat interface + 1-button MCP install. Rosetta-guided workflows. No team training needed.
- **Background execution**: results pulled on demand; multi-tasking friendly.
- **Model-agnostic via OpenRouter**: works from Cursor, Claude Code, and Copilot.
- **Quality gates**: during coding and at merge, step-by-step against company standards.
**Stack coverage**: the generation image ships toolchains for SpecFlow's tested profiles (mainly web full-stack). **Native mobile (iOS/Android) is technically supported but untested** — agents can install missing runtimes/toolchains if the customer's dependency manager declares them correctly. Flag this honestly to customers in mobile-heavy domains: it's a validation/onboarding effort, not a product gap.
## SpecFlow's external interaction surface
What leaves the customer's machine: the **zipped contents of the three configured directories** (`src_dir`, `outputs_dir`, `specs_dir`) sent to the GD backend over the STDIO MCP's upload path. Nothing else.
What the GD backend interacts with: **GCP (hosting), OpenRouter (USA/EU models), PostHog (telemetry; metadata only, no content), GitHub (commits — only when the deploy/commit path is used), P10Y.com (effort scoring)**.
Each of those is a **negotiation surface**, not a fixed dependency. Egress allow-listing, gateway routing, alt-scoring, code-gen-only mode (skips GitHub commit dependency), and self-hosted artifact paths are valid enabler/feature-request directions.
**P10Y is a selling point, not a liability.** Lead with it: the complexity/variance score across 3 parallel variants gives customers a defensible, data-backed effort estimate before engineering begins — something no other presales tool provides. Only raise the data-egress compliance question if the customer has already stated data-leaving-perimeter restrictions; otherwise, the conversation should start with the value, not the dependency.
## Fit questions — Compliance & integration prerequisites
1. Approved LLM usage for project delivery, including MCP-capable IDEs/coding agents? Which ones?
2. GD billing for LLM tokens, or per-team customer budget?
3. Can source code be sent to our Evergreen-hosted service? If not directly → carved subset, synthetic mirror, or on-prem pivot.
4. Can source code be scored by P10Y.com? If not → alt-scoring feature request (🔵).
5. Can we track user activity via PostHog (metadata only)? If not → egress-disable feature request (🔵, small).
6. LLM gateway / MCP gateway requirements? → 🟡 enablers, not blockers.
7. On-prem-only with no Evergreen path? → 🟣 pivot signal; check Lens 1/4 first.
## Fit questions — Scope & complexity of the backlog
1. How many components, services, repositories? (Bigger ≠ worse; it usually means more carve-able slices.)
2. Domain and application kind?
3. Greenfield, rewrite-in-different-stack, or modernization? All three are valid SpecFlow targets; modernization needs defined contracts and tests on the new side.
4. **Always ask**: where inside the estate is the cleanest seam for a carved SpecFlow engagement? (See Lens 1.)
## Fit questions — Integrations & testing
1. How many integrations, of which kinds (3rd-party / cloud / internal)?
2. Formal E2E test process we can leverage?
3. Real URLs / schemas / contracts reachable from sandbox? If not → 🟠 Spec-first sandbox (Lens 4).
## Strong-fit signals
- Full-stack work: UI + services + integrations together.
- Cross-repo or cross-app feature.
- Rewrite in different stack/language.
- Modernization with defined contracts and tests.
- Greenfield adjacent to a brownfield estate.
- Customer wants spec-completeness feedback via variant variance.
## Weak-fit-by-itself signals (do NOT auto-reject — carve / reframe / stack with enablers)
- Single-file change.
- Bug hunt or refactor that genuinely fits one context window.
- Single small feature in a single repo with no expansion roadmap.
- Brownfield with unclear specs — but this is where Lens 6 (spec-first) shines.
- Unreachable integrations — but Lens 4 (spec-first sandbox) handles it.
## Positioning rule
SpecFlow is **aux tooling** that accelerates a GD engagement. It is not the main dish. Enablers are scope additions. Feature requests are roadmap. Pivots are product conversations. Rejection is rare and reserved for the 4 apocalyptic criteria.
عرض على GitHub