vc-feasibility-test

star 911

Use when a SPEC, INNOVATE, or VALIDATE (Layer 2) approach hinges on an unverified runtime/library/external mechanism: run a probe from the 8-family taxonomy and produce a VIABLE/NOT-VIABLE/INCONCLUSIVE VERDICT artifact.

withkynam By withkynam schedule Updated 6/15/2026

name: vc-feasibility-test description: "Use when a SPEC, INNOVATE, or VALIDATE (Layer 2) approach hinges on an unverified runtime/library/external mechanism: run a probe from the 8-family taxonomy and produce a VIABLE/NOT-VIABLE/INCONCLUSIVE VERDICT artifact." argument-hint: "[hypothesis] [task-folder] [probe-family]" trigger_keywords: feasibility, spike, verify assumption, probe mechanism, empirical check, unverified mechanism, does this work, runtime quirk, api shape check layer: contract metadata: author: vibecode-pro-max-kit version: "2.0.0"

vc-feasibility-test

Output style: Follow process/development-protocols/communication-standards.md — answer-first, plain language, no unexplained jargon, TL;DR on long responses.

One-shot empirical probe skill. Used when SPEC or INNOVATE encounters an approach hinging on an unverified external/runtime/library mechanism — the question is "does this mechanism actually work the way the design assumes?", asked before the decision locks.

Boundary vs vc-test-coverage-plan

These two skills are complementary and must not be confused:

  • vc-feasibility-test (this skill) = PRE-decision. "Does the mechanism work at all?" Run before SPEC/INNOVATE locks an approach, when the answer is unknown. Output: a one-shot VERDICT artifact.
  • vc-test-coverage-plan = POST-plan. "How do I cover this blast radius across the 4 test tiers?" Run after a plan exists, when the design is already chosen. Output: a per-area tier table.

If the approach is already decided and you are assigning test tiers → use vc-test-coverage-plan. If you cannot decide because a mechanism is unverified → use this skill first.

When To Invoke

  • When vc-spec-agent, vc-innovate-agent, or a vc-validate-agent Layer 2 dimension agent emits VC-FEASIBILITY-PROBE-NEEDED
  • When a mechanism cannot be verified from source code alone
  • One-shot: not an iterative loop (use vc-autoresearch for iteration)

Skill Executor

Always executed by vc-debugger (via the VC-FEASIBILITY-PROBE-NEEDED signal routing in orchestration.md). SPEC, INNOVATE, and VALIDATE Layer 2 agents do not run probes themselves.

Probe-Method Taxonomy (pick one family)

Every probe belongs to one of these 8 families. Name the chosen family in the VERDICT. Each family has a default cost/safety class (see next section) — the probe inherits it.

# Family What it probes Typical method Default cost class
1 Local process / Node script pure library/runtime behavior in isolation run a .mjs/Bun script, regex/parse check, call the lib fn directly cheap-local
2 Unit/integration test harness behavior under the project's own test runner pnpm --filter … test (Vitest) or bun test on a scratch case cheap-local
3 tRPC / Prisma / DB query route shape, query behavior, index/constraint semantics hit a tRPC route or run a Prisma/raw-SQL query against a test DB needs-container (only if it needs the live app DB) / else cheap-local
4 External API shape capture real response shape/behavior of a 3rd-party API one live request to OpenRouter / Stripe / Composio / Clerk / Bright Data needs-live-provider
5 Container exec / internal-port curl in-container service behavior, proxy injection, file-server, supervisord docker exec … curl http://localhost:{port} on a disposable container needs-container
6 Browser / CDP capture anti-detect quirks, CDP events, SPA nav, popup behavior Playwright/CDP client, page.on(...), snapshot needs-browser
7 WS / SSE handshake & timing gateway WS framing, SSE delivery/reconnect, JSONL shape raw ws/EventSource client + frame/timing capture needs-container (if against in-container service) / else cheap-local
8 Cloudflare worker runtime KV staleness, step-replay/idempotency, edge JWT verify wrangler dev + curl, deploy a throwaway worker needs-cf

If none of the 8 fit, the question is probably not a feasibility probe — reconsider whether vc-research-agent (unknown context) or vc-test-coverage-plan (known design) is the right tool instead.

Probe Cost / Safety Class (MANDATORY GATE)

Every VERDICT declares one cost class. The class governs whether the probe may run unattended or needs explicit opt-in. A probe that cannot be run within its safety gate produces an INCONCLUSIVE verdict — it is never silently skipped or faked.

Cost class Safety gate If gate not met
cheap-local none — run freely (local script, test harness, parse check) n/a
needs-container use a disposable container only. NEVER docker exec the shared dev container (app-*) or shared Postgres. Disposable live-E2E containers need the disposable-cleanup env gate enabled. verdict INCONCLUSIVE, note "no disposable container available"
needs-live-provider requires explicit double opt-in from the user before any billed/live 3rd-party call (OpenRouter, Stripe, Composio, Bright Data, Clerk). Default local mode is BYOK Mistral. verdict INCONCLUSIVE, note "live-provider opt-in not granted"
needs-browser a browser/CDP session must be available; never drive a shared user session verdict INCONCLUSIVE, note "no browser session available"
needs-cf a wrangler dev/throwaway-worker sandbox; never touch a deployed production worker verdict INCONCLUSIVE, note "no CF sandbox available"

The emitted VC-FEASIBILITY-PROBE-NEEDED signal SHOULD carry the anticipated cost class so the orchestrator can resolve the opt-in gate before dispatching vc-debugger (see orchestration.md §VC-FEASIBILITY-PROBE-NEEDED Signal Routing).

Probe Execution Steps

  1. Read the hypothesis from the VC-FEASIBILITY-PROBE-NEEDED signal
  2. Pick the probe family (1–8) and its cost class
  3. Confirm the safety gate for that cost class is met. If not → write an INCONCLUSIVE verdict with the gate-not-met reason and stop. Do NOT escalate to a higher-cost probe or run against a shared resource.
  4. Design the minimal probe within that family
  5. Run the probe empirically — capture actual output, not expected output
  6. Analyze the evidence: does it confirm or refute the hypothesis?
  7. Assign a verdict: VIABLE | NOT-VIABLE | INCONCLUSIVE
  8. Write the VERDICT artifact to the active task folder

VERDICT Artifact Format

Filename: {slug}_FEASIBILITY_{dd-mm-yy}.md Location: same active task folder as the SPEC/plan that triggered the probe

Required frontmatter fields (MUST be present — validated by validate-feasibility-verdict.mjs):

---
slug: [task-slug]
date: YYYY-MM-DD
verdict: VIABLE | NOT-VIABLE | INCONCLUSIVE
originating-phase: spec | innovate | pvl
---

The originating-phase: field is REQUIRED. Valid values:

  • spec — probe triggered by vc-spec-agent ([SP3])
  • innovate — probe triggered by vc-innovate-agent ([I2.5])
  • pvl — probe triggered by vc-validate-agent Layer 2 ([V2-PROBE])

Required sections (MUST be present — validated by validate-feasibility-verdict.mjs):

Hypothesis

One-sentence statement of what is being tested.

Mechanism Under Test

The specific external, runtime, or library behavior being probed.

Probe Family

One of the 8 families above (e.g. 5 — Container exec / internal-port curl).

Probe Cost Class

One of: cheap-local | needs-container | needs-live-provider | needs-browser | needs-cf. State whether the safety gate was met.

Probe Method

The exact command(s) or steps run to test the hypothesis.

Evidence Captured

The raw output from the probe (trimmed to relevant lines). For an INCONCLUSIVE gate-not-met verdict, state explicitly that the probe was not run and why.

Verdict

One of: VIABLE | NOT-VIABLE | INCONCLUSIVE

Resulting Design Constraint

The "action consequence" of the probe, split into three explicit parts:

  • What this licenses: what the approach is now allowed to depend on.
  • What this forbids: what the approach must NOT depend on.
  • What remains uncertain (known-gap): what the probe did not settle and must be treated as an open risk (for INCONCLUSIVE, this is the main content).

Completion Signal

After writing the VERDICT artifact, emit:

VC-FEASIBILITY-VERDICT-READY: [verdict keyword] — [full path to VERDICT file]

Example:

VC-FEASIBILITY-VERDICT-READY: NOT-VIABLE — process/features/model-selector/active/model-selector_10-06-26/model-selector_FEASIBILITY_10-06-26.md

Re-spawn Handoff

The orchestrator reads the VERDICT artifact and extracts a Prior Feasibility: summary. Format passed to the re-spawned agent:

Prior Feasibility: [hypothesis] — verdict: [VIABLE|NOT-VIABLE|INCONCLUSIVE] — licenses: [one line] — forbids: [one line] — uncertain: [one line]

Example:

Prior Feasibility: Does the gateway forward params.provider.sort? — verdict: NOT-VIABLE — licenses: nothing new — forbids: any approach depending on params.provider.sort being forwarded (the layer strips it) — uncertain: whether a different forwarding field survives

The re-spawned SPEC, INNOVATE, or VALIDATE agent reads this block and uses the verdict to lock or reject the approach. When originating-phase: pvl, the re-spawned vc-validate-agent resumes from V1 and records resolved probes in a ## Feasibility Probes Resolved subsection of the validate-contract (omitted when no probe ran).

Install via CLI
npx skills add https://github.com/withkynam/vibecode-pro-max-kit --skill vc-feasibility-test
Repository Details
star Stars 911
call_split Forks 202
navigation Branch main
article Path SKILL.md
More from Creator