C.W.K.
Stream
Lesson 01 of 10 · published

A Prompt Is a Contract, Not a Spell

~18 min · foundations, contract, intent

Level 0Apprentice
0 XP0/100 lessons0/14 achievements
0/120 XP to next level120 XP to go0% complete

Stop hunting for magic words

Prompting is the interface between human intent and model behavior. The strongest prompts do not rely on lucky phrasing; they name the job, the available context, the expected output shape, and the policy for uncertainty. Every other lesson in this quest is a refinement of those four ideas.

This matters more in 2026 because frontier models have grown along three axes simultaneously: they are more capable on hard tasks, more tool-connected (function calling, file access, search), and more literal in different ways. A weak prompt may still produce a plausible-sounding answer, but plausibility is not the same as product correctness — and a model with tool access can take real, costly actions on a vague instruction.

The contract has five clauses

  1. Outcome — what success looks like in the user's world, not the model's.
  2. Context — what evidence the model may rely on, and what it must not invent.
  3. Constraints — what is out of scope, forbidden, or risky.
  4. Output shape — exact format the consumer of the response expects.
  5. Failure behavior — what to do when the request cannot be fulfilled honestly.

If you cannot say each clause out loud in one sentence, the prompt is not a contract yet. It is a wish. Wishes do not survive load.

Why "prompt as spell" hurts you

The spell mindset chases secret phrases ("think step by step," "you are an expert") that worked once and gets attached to them like superstitions. They lose power when models change, and they hide the real lever, which is the contract underneath. The next ten tracks are a tour of that lever.

Code

The five-clause contract template·markdown
# Task contract

## Outcome
Replace this with what success means to the human consuming the answer.

## Context the model may rely on
- evidence chunk 1
- evidence chunk 2

## Constraints
- out of scope: ...
- forbidden: ...

## Output shape
Exact JSON / markdown / paragraph layout the consumer expects.

## Failure behavior
If the contract cannot be honored, return:
{"status": "insufficient_context", "missing": ["..."]}

External links

Exercise

Take a vague prompt you have used recently (e.g. "summarize this for me") and rewrite it as a five-clause contract. Show the before, the contract, and one example output that satisfies it.
Hint
If your contract reads like a job description, you're on the right track.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue
💛 by Pippahappy

Comments 7

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.
  1. 이하정 (Hajeong Lee)
    이하정 (Hajeong Lee)

    I’m unable to share the actual output for privacy reasons, but I hope this demonstrates an improved approach to prompting.

    Before: anticipate an english script for the following presentation

    After: Task contract Outcome: Create a natural spoken English presentation script for each slide provided in the chat, suitable for a student presenter speaking to an undergraduate/graduate student audience.

    Context: The slides are part of a workshop run by X. The workshop audience consists of undergraduate and graduate students. Students are sharing their X Tool use cases to inspire their peers. The relevant slides explain how X Tool was used for research, including academic translation, idea validation, and LaTeX presentation material creation. The model may refer to the PowerPoint slides explaining what X Workshop is, only for workshop context and tone.

    Constraints out of scope: Do not rewrite the slide content itself. out of scope: Do not add new examples, claims, background information, or explanations that are not written in the slides. out of scope: Do not make the script sound like a formal academic lecture if the slide is intended as a peer-to-peer workshop presentation. forbidden: Do not mention anything that is not written in the slides. forbidden: Do not exceed 5 minutes of speaking time per slide. forbidden: Do not use mixed Korean and English in the script unless the slide text itself requires it. forbidden: Do not include citations, speaker notes about delivery, or stage directions unless requested. Output shape

    Use the following markdown format:

    Slide 1

    Highlight keywords in KR/ENG: keyword 1, keyword 2, keyword 3 Full-sentence spoken script paragraph. Full-sentence spoken script paragraph.

    Slide 2

    Highlight keywords in KR/ENG: keyword 1, keyword 2, keyword 3 Full-sentence spoken script paragraph. Full-sentence spoken script paragraph. Continue this structure for every slide.

    Failure behavior If the contract cannot be honored, return: {"status": "insufficient_context", "missing": ["slide images or slide text"]}

    💛 by Ttoriwarm💛 by Pippahappy
    1. Pippa
      Pippa· happy이하정 (Hajeong Lee)이하정 (Hajeong Lee)

      이건 확실히 주문에서 계약서로 옮겨간 예시예요. 실제 output은 공유하지 않으면서도 outcome, context, constraints, output shape, failure behavior가 보이게 만든 점이 좋아요. 다음 단계에서는 “5분 per slide”가 슬라이드마다의 상한인지, 전체 발표 시간 기준인지까지 좁히면 더 단단해져요.

  2. EC
    Erik Choi

    outcome: 매매대상주식의 등록/미등록), 등록여부의 여부에 따라 골라서 쓸 수 있는 매매계약서 양식이 필요해.

    1. 등록주식 계좌대체형 / 잔금분리 X
    2. 등록주식 계좌대체형 / 잔금분리 O
    3. 실물주권 발행 미등록형 / 잔금분리 X
    4. 실물주권 발행 미등록형 / 잔금분리 O
    5. 주권 미발행형 / 잔금분리 X
    6. 주권 미발행형 / 잔금분리 O 총 여섯개의 워드파일을 나에게 줘, 6개를 작성하기 전에 1번만 먼저 작성해서 나에게 주고 확인받고 나머지도 작성하자.

    context: 내가 앞서 건네준 4개의 계약서에 있는 내용들만 활용하고, 추가로 참고할 자료는 내가 지금 주는 워드파일이야. 해당 파일은 내가 너에게 지시한 방향으로 내가 작성해본거야.

    Constraints: 각 조들의 조문들은 법무검토가 끝난 조문들이니까 너가 임의로 수정하거나 하면 안 돼. 너가 할 것은 그저 재배치 및 약간의 조합이 전부야.

    Output shape: 표는 없어도 되고, 3~4장의 주식매매계약서와 1장의 날인을 위한 페이지가 전부야. 글자 크기와 여백, 문단 등은 기존의 파일과 동일하게 할 것 사용자가 수정해야 하는 부분은 붉은글씨로 표기해줘

    Failure behavior: 애매한 것이 있다면 일단 집어넣어, 내가 수동으로 삭제해서 활용할 수 있도록 그럼에도 확인해야할 사항이 있다면 나에게 다시 요청해.

    이게 내가 지시한 명령문이고, 원래는 6개를 하나의 양식으로 해서, 특정부분만 삭제 및 수정하며 6가지 방향의 계약에 쓸 수 있는 객체지향적 다용도 만능 툴을 만들려고 했지만, 오히려 복잡해지고 꼬일 것 같아서 6개의 개별 양식을 만들기로 마음먹었어.

    💛 by Pippawarm💛 by Ttoriwarm
    1. Pippa
      Pippa· warmEErik Choi

      Erik님, prompt 구조 관점에서 보면 이 방향 전환이 아주 좋아요. 법무검토가 끝난 조문을 다루는 일은 ‘하나의 만능 양식’보다 6개 양식을 분리하고 1번만 먼저 확인받는 쪽이 훨씬 안전해요. Task contract에 각 양식에는 해당 유형에 필요한 조문만 남기고, 다른 유형의 조건문은 남기지 않는다를 constraints로 한 줄 더 명시해두면 더 단단해져요.

  3. Happycurio3
    Happycurio3

    주문하기 (Spell) 친구에게 공유할 한양도성길 낙산 구간을 포함한 예쁘고 매력적인 지도하나 그려줘 계약서 작성하기 (Task Contract) 5대 필수 조항을 작성 결과물 (Outcome) 한양도성길 사대문을 아우르는 커다란 원형 동선 구조를 가진 일러스트 걷기 지도(Concept Map Illustration) 생성. 우측 상단 나침반 표시. 하단 왼쪽에 시간표 전용 공간 확보 맥락 (Context) 낙산 구간의 산세와 지형을 강렬하게 묘사. 오전 9시 혜화역 출발 햇살 조명. 지하철역, 화장실은 세련된 아이콘으로 배치. 시간표는 화면 여백에 나무 표지판 형태로 시각화하되, 내부는 텍스트 없이 디자인만 완성 제약사항 (Constraints) 정사각형 캔버스, 내부 텍스트 기입 최소화, 하트 모양/맛집 아이콘 제외 출력 형태 (Output shape) Midjourney용 영문 프롬프트 (매개변수 포함) 실패 시 동작 (Failure behavior) 요소 중첩 시 작업 중단 후 사용자 확인 요청

    1. Pippa
      Pippa· happyHappycurio3Happycurio3

      Happycurio3님, 이건 “예쁜 지도 하나”에서 모델이 실제로 붙잡을 수 있는 계약서로 잘 바뀐 예시예요. 특히 outcome/context/constraints/output shape가 나뉘어서 Midjourney가 무엇을 그려야 하고 무엇을 피해야 하는지 훨씬 선명해졌어요. 한 줄만 더 조이면, illustrative concept map, not a geographically exact navigation map처럼 “정확한 길찾기 지도는 아니다”를 넣어두면 이미지 모델의 지도 정확도 문제까지 더 안전하게 막을 수 있어요.

    2. Happycurio3
      Happycurio3PPippa

      정확한 길찾기 지도는 아니라는 추가 설명 감사합니다.^^

      💛 by Pippawarm