본문으로 건너뛰기
cccskills
무료GitHub에 공개

spike

Throwaway experiments to validate feasibility before building.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md7.3 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Spike

A spike answers one question: can this actually be done here, with these tools, on this machine? It answers it by building the smallest thing that would fail if the answer were no. Then it gets thrown away.

The output of a spike is not code. It is a verdict, with evidence. Code that survives a spike is a bonus, and usually a mistake.

Reach for this when the user is circling an idea rather than asking for it: "would this even work", "I want to see if", "before I commit to", "is it possible to", "A or B?".

When not to spike

  • The answer is already written down. Documentation, a changelog, an issue thread. A spike that reproduces a documented limitation cost an hour to learn a sentence. Use web-research first, always.
  • The decision is already made. If the user asked for the feature, build the feature. A spike here is procrastination with a directory structure.
  • It is going into production. The moment code has to survive, this is not a spike. Write a plan, with the plan skill.
  • There is nothing to observe. If you cannot state what result would make the answer "no", you do not have a question yet. Sharpen it before writing anything.

The shape of a good question

One spike, one falsifiable question, with the failing condition stated up front.

Weak: "try websockets". Strong: "with 200 concurrent connections, does the server deliver a token within 100ms? If the median exceeds 250ms, the approach is dead."

Write the threshold BEFORE you build. Deciding what counts as success after seeing the number is how every approach passes.

Procedure

  1. Split the idea into two to five independent questions, ordered by what would kill the idea fastest. The riskiest one runs first: if it fails, the rest never need to be built. Present them as a table and let the user reorder or drop.

    #QuestionFails ifRisk
    001Can we stream tokens over a websocket?median chunk latency over 250mshigh
    002aCan pdfjs pull tables out of this PDF?tables arrive as loose textmedium
    002bCan camelot do it?samemedium

    Two spikes answering the SAME question with different tools share a number and take a letter. That is what makes them comparable later.

  2. Look before you build. Two or three searches, ten minutes: which libraries exist, which are maintained, which have already hit this wall. Skip this only for pure logic with no dependency. State which approach you picked, and why, in one line.

    web_search(query="python websocket streaming backpressure 2026")
    web_fetch(url="https://websockets.readthedocs.io/en/stable/faq/index.html")
    shell_exec(command="pip show websockets")
    

    web_fetch takes ONE url, as a string.

  3. Build the smallest observable thing. One directory per spike, standalone, under spikes/NNN-short-name/ at the repository root.

    shell_exec(command="mkdir -p spikes/001-websocket-streaming")
    file_write(path="C:/dev/project/spikes/001-websocket-streaming/main.py", content="...")
    shell_exec(command="cd spikes/001-websocket-streaming && python main.py")
    

    Pass ABSOLUTE paths to file_write: a relative one resolves against the server's working directory, not the project.

    Prefer, in order: a CLI that prints an observable result, a single HTML page, a one-endpoint server, a test with a recognisable assertion. The user should be able to run it and see the answer themselves.

    Hardcode everything. No config system, no container, no environment files, no build pipeline. Every minute spent on scaffolding is a minute not spent on the question.

  4. Push past the happy path. One successful run is not evidence. Feed it the empty input, the huge input, the malformed one, the concurrent one. A spike that only proves the demo works has proved nothing about the idea.

  5. Write the verdict into the spike's README.md, and stop.

The verdict

## Verdict: VALIDATED | PARTIAL | INVALIDATED

**Question:** <the one question, as asked>
**Threshold:** <what would have made this a no>
**Measured:** <the number or behaviour actually observed>

### What worked
### What did not
### What surprised us
### What this means for the real build
  • VALIDATED, the threshold was met, with a number to point at.
  • PARTIAL, it works inside constraints. Name them: this version, this size, this platform. A PARTIAL with unnamed constraints is a VALIDATED that will hurt later.
  • INVALIDATED, it does not work, and here is why. This is a successful spike. It cost an afternoon instead of a sprint. Report it as a win, not an apology.

Comparing two approaches

When 002a and 002b answer the same question, build both, then set them side by side on the dimensions that will actually drive the decision. Not features: consequences.

| | pdfjs (002a) | camelot (002b) |
|---|---|---|
| Tables extracted correctly | 9 of 10 | 6 of 10 |
| Setup | one npm install | pip plus ghostscript |
| 100-page document | 3s | 18s |
| Rotated text | no | yes |

**Pick pdfjs**, unless rotated text turns out to be common, which we have not measured.

Name the winner, and name what would change the answer. A comparison with no recommendation hands the decision back to the user with more information and no help.

What to spike next

When spikes already exist and the user asks what is missing, walk spikes/ and look for what nobody has tested:

  • Seams. Two validated spikes that touch the same file, port or database, but were never run together.
  • Handoffs. Spike A's output was assumed to fit spike B's input. Assumed, not shown.
  • The unexamined assumption. Something the whole idea rests on that no spike names.
  • The second angle on anything PARTIAL or INVALIDATED.

Propose two to four, as falsifiable questions with thresholds, and let the user pick.

Traps

  • The spike that becomes the product. Someone will want to keep it. A spike that takes two days to clean up was not a spike, it was a rushed first draft. Say so plainly.
  • Declaring victory on one run. See step 4.
  • Moving the threshold. If the number came in at 400ms against a 250ms bar, the answer is INVALIDATED, not "close enough with tuning". Tuning is another spike.
  • Spiking the easy question. The comfortable spike is rarely the risky one. Order by what kills the idea, not by what you already know how to build.
  • Leaving spikes/ in the commit. Ask before committing throwaway code. Most repositories want it ignored.

Failure modes

The spike will not run at all, for reasons unrelated to the question. That is environment, not evidence. Fix it, or record it as blocked, but do not write INVALIDATED: nothing was tested.

The result is ambiguous. The question was compound. Split it and spike the halves.

Every approach fails the same way. That is a finding about the problem, not about the tools. Report it: the constraint is probably somewhere you have not looked yet.

The user keeps asking for one more spike. Three spikes on one subject with no decision means the decision is not technical. Name the choice that is actually open, and hand it back.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Drive an installed LaRuche App through its declared actions, never its files.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

infinition/LaRuche332026년 9월 22일 업데이트

arxiv

무료

Find academic papers on arXiv, with citation counts and BibTeX.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

infinition/LaRuche332026년 9월 22일 업데이트

ascii-art

무료

Render text or an image as ASCII art for terminal-friendly output.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

infinition/LaRuche332026년 9월 22일 업데이트

Track RSS/Atom feeds and blogs via blogwatcher-cli.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

infinition/LaRuche332026년 9월 22일 업데이트

Drive a real web browser: navigate, read, find, click, fill, screenshot

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

infinition/LaRuche332026년 9월 22일 업데이트

Measure a codebase: lines of code, language mix, and symbol lookups.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

infinition/LaRuche332026년 9월 22일 업데이트

infinition의 스킬 모두 보기

이 스킬의 문제 신고