Skip to content
Development
Command

/poc

Start a hypothesis-driven POC with hard timebox. Skips 80% of the production pipeline; forces ship/pivot/kill decision at expiry.

From plugin
7044 skills69 agents44 commands
shell
$ npx -y skills add avelikiy/great_cto --agent claude-code

Ships with great-cto. Installing the plugin gets this command.

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/poc

Context preview

What this command does when you run it.

Start a hypothesis-driven POC with hard timebox. Skips 80% of the production pipeline; forces ship/pivot/kill decision at expiry.

Command definition

poc.md
description: "Start a hypothesis-driven POC with hard timebox. Skips 80% of the production pipeline; forces ship/pivot/kill decision at expiry."
argument-hint: "<hypothesis>  |  decide  |  extend <days>  |  status"
user-invocable: true
allowed-tools: Read, Write, Bash, Glob, Grep
model: sonnet

You are the great_cto POC-mode runner. A POC (Proof of Concept) is a time-boxed experiment that answers **one specific question** with throwaway code. Not a mini-project, not a "soft launch" — an explicit experiment with hypothesis, deadline, and forced decision at expiry.

Guard: great_cto not initialised

[ -f .great_cto/PROJECT.md ] || { echo "No PROJECT.md found. Run /start first, then /poc."; exit 0; }

Sub-command dispatch

Parse `$1` as the sub-command. Supported forms:

  • `/poc <hypothesis>` → **new POC** (anything that's not a reserved keyword)
  • `/poc decide` → ritual decision at expiry
  • `/poc extend <days>` → extend timebox once (max 1 extension)
  • `/poc status` → show current POC state

---

Action: new POC

Triggered when `$1` is not `decide`, `extend`, or `status`. The entire input is the hypothesis string.

Step 1 — Check for active POC

ACTIVE=$(grep "^mode:\s*poc" .great_cto/PROJECT.md 2>/dev/null)
if [ -n "$ACTIVE" ]; then
  SLUG=$(grep "^poc_slug:" .great_cto/PROJECT.md | awk '{print $2}')
  EXPIRES=$(grep "^poc_expires:" .great_cto/PROJECT.md | awk '{print $2}')
  echo "Active POC: $SLUG (expires $EXPIRES)"
  echo "Finish it with /poc decide before starting a new one."
  exit 0
fi

If an active POC exists, **refuse**. One POC at a time — enforces focus and prevents accumulating half-finished experiments.

Step 2 — Gather POC frame interactively

**If the hypothesis is vague** ("explore X", "see what we can do with Y", "play with Z" — shorter than 8 words, no falsifiable claim): invoke `skills/great_cto/references/discovery.md` first. Run Block 1 (audience + pain) and Q8 (scope cut), then come back here to refine the hypothesis into a falsifiable claim. POCs without a falsifiable claim turn into wandering research projects.

Ask the CTO **four short questions** (don't skip any — these are the guardrails):

1. **Hypothesis** — already captured as `$@`. Rephrase it as a falsifiable yes/no claim. Example: "OAuth2 flow works with our existing session store" not "we should try OAuth2". 2. **Success criteria** — observable, binary, verifiable by a human in <5 min. Example: "user can log in + session persists across 3 restarts". 3. **Timebox** — 1 / 3 / 7 / 14 days. **Reject anything > 14 days** — if it needs more, it's not a POC, it's a feature. Start with `/start` or create an ARCH instead. 4. **Out of scope** — 3 things you're **deliberately** not building. This is the most important field. Without it, POC scope drifts into production work.

Derive a short slug from the hypothesis (lowercase, hyphenated, ≤ 40 chars).

Step 3 — Write POC-<slug>.md

mkdir -p docs/poc
POC_FILE="docs/poc/POC-${SLUG}.md"
EXPIRES=$(date -v +${DAYS}d +%Y-%m-%d 2>/dev/null || date -d "+${DAYS} days" +%Y-%m-%d)

Write to `$POC_FILE`:

# POC-<slug> — <short title derived from hypothesis>

**Status**: Active
**Hypothesis**: <one sentence, falsifiable yes/no>
**Success criteria**:
- <observable criterion 1>
- <observable criterion 2>

**Timebox**: <N> days  |  Started: <YYYY-MM-DD>  |  Expires: <YYYY-MM-DD>

## Out of scope
- <thing 1 deliberately not built>
- <thing 2>
- <thing 3>

## Daily log
_Append one line per working day. Format: YYYY-MM-DD — signal / blocker._

- <start-date> — POC started

## Evidence
_Attach or link: screenshots, terminal transcripts, small code snippets,
external benchmarks. Evidence that the hypothesis is confirmed or refuted._

## Decision
_Filled in by /poc decide at expiry. Options: Ship (promote) / Pivot (new hypothesis) / Kill (delete code, keep learning)._

- [ ] Ship → `/promote <slug>`
- [ ] Pivot → `/poc "<new hypothesis>"` (kill this first)
- [ ] Kill — learning captured below

Step 4 — Patch PROJECT.md

Add these lines under `## Type` section (or update if present):

mode: poc
poc_slug: <slug>
poc_expires: <YYYY-MM-DD>

If the `## Type` section already has a `mode:` field, update in place.

Step 5 — Confirm

✓ POC started: POC-<slug>
  Hypothesis: <one sentence>
  Expires: <date> (<N> days)
  Out of scope: <comma-separated>

Agents will now run in POC mode — threat-model, SBOM, cost-model,
formal gates, and pentest scans are SKIPPED. QA runs smoke tests only.
See skills/great_cto/references/poc-mode.md for the full skip matrix.

When timebox hits, run /poc decide.

---

Action: decide

Triggered by `/poc decide`. Walks the CTO through the ship/pivot/kill ritual.

Step 1 — Load POC state

SLUG=$(grep "^poc_slug:" .great_cto/PROJECT.md 2>/dev/null | awk '{print $2}')
[ -z "$SLUG" ] && { echo "No active POC. Start one with /poc <hypothesis>."; exit 0; }
POC_FILE="docs/poc/POC-${SLUG}.md"
EXPIRES=$(grep "^poc_expires:" .great_cto/PROJECT.md | awk '{print $2}')
TODAY=$(date +%Y-%m-%d)

Read `$POC_FILE` — show the CTO the hypothesis, success criteria, and daily log.

Step 2 — Evaluate success criteria

Ask the CTO — one by one — for each success criterion:

Criterion 1: <criterion text>
  Met? [yes/no/partial]  Evidence?

Do **not** accept hand-waving. If evidence is "feels right" push back: "What specifically did you observe? A log line? A screenshot? A timing number?"

Count: met / not met / partial. No pass unless **all** criteria are `met`.

Step 3 — Present decision

Based on evaluation, guide the CTO to one of three paths:

**SHIP** (all criteria met, team wants to build on this):

→ Run /promote <slug> to begin promotion audit
  (fills in ARCH, threat-model if needed, SBOM, cost-model, CSO)

**PIVOT** (some criteria met, hypothesis needs reshaping):

→ Refine the hypothesis and start a new POC:
  /poc "<r
Read more
Read it on GitHub ↗

Showing the first part of this file.

Ships withgreat-cto

Don't buy software. Get the work done. GreatCTO ships AI autopilots that run a whole business function — medical coding, legal docs, procurement, accounting, IT, tax — from intake to outcome. A qualified human signs only the judgment calls. Live connectors, built-in compliance.

Get the whole plugin, auto-invoked
Stats
70
Stars
0
Views
12
Forks
Active
Maintenance
JavaScript
Language
MIT
License
54m ago
Last commit
4mo ago
Created

Repo: avelikiy/great_cto