Back to blog
5 min read

What is vibe coding, and how do you use it responsibly?

Learn a controlled vibe-coding loop through a workshop signup form, from a bounded idea to tested behavior and release decisions.

  • #Vibe Coding
  • #AI
  • #Beginners
Miniature workspace for building together with an AI assistant.
Share

Short answer

Vibe coding is a way of building software by describing desired behavior in natural language and letting an AI system generate or change code. You guide the work through bounded prompts and feedback, while remaining responsible for requirements, tests, security, and the released result.

The responsible vibe-coding cycle

Open each stage to follow the workshop signup feature from idea to evidence.

  1. Idea

    Define the workshop audience, the signup outcome, and the minimum information required.

  2. Scope

    Limit the first change to one form, one confirmation state, and explicit validation rules.

  3. Draft

    Let the assistant inspect existing patterns and generate the smallest implementation and tests.

  4. Verify

    Exercise valid, invalid, duplicate, keyboard, mobile, and failure paths before release.

Imagine you want a page where people can register for a two-hour design workshop. The first version needs a name, email address, experience level, consent notice, and a confirmation state. This bounded feature is large enough to teach a real workflow but small enough to inspect end to end.

The practice is called vibe coding because natural-language direction drives much of the implementation loop. The useful version is not passive code acceptance. You alternate between a clear request, a generated change, direct observation, and a decision about what happens next.

Define the product before asking for code

Start with the workshop outcome, not a framework or visual style. A visitor should understand the event, submit the minimum required details, receive clear validation, and know whether registration succeeded. The organizer should not receive blank or malformed records.

Write down decisions that affect behavior:

  • Audience: Adults registering for one public workshop
  • Required data: Name, email address, and experience level
  • Consent: A required acknowledgement that explains how the organizer uses the submission
  • Success state: A confirmation with the workshop date and next step
  • Non-goals: Payment, accounts, waitlists, calendar sync, and marketing automation

These choices create a product contract before the model selects components. If you skip them, the generated form may collect unnecessary data or invent a flow you never intended to operate.

Scope the first implementation around one journey

Ask for the smallest complete journey from page load to confirmation. The request can include responsive layout, native labels, validation, submission handling, and tests. Keep unrelated account or event-management work outside the task.

A useful request links to the existing project context and follows the structure in your first good prompt. It also tells the assistant to inspect current form patterns before introducing an abstraction.

Build the workshop signup journey in the existing project.
Reuse its form, error, and button patterns. Collect name, email,
experience level, and required consent. Reject missing or malformed
values, preserve entered data after an error, and show a confirmation
only after a successful submission.

Do not add payments, user accounts, analytics, or dependencies.
Add focused tests for success, each validation rule, and recovery.

This prompt leaves implementation choices open where project inspection should decide them. It closes product choices that would otherwise change data collection or acceptance behavior.

Generate a draft without surrendering control

Let the assistant inspect the route, shared controls, validation utilities, and test conventions. Ask for a short plan when the change spans several files. Review that plan before code if it proposes a new store, endpoint, or dependency.

The first draft is a hypothesis about how the project should implement your contract. Read the changed files and identify where input is trimmed, validated, submitted, and cleared. Confirm that error messages connect to their fields and that the consent control uses an understandable label.

Avoid judging the draft from a screenshot alone. A form can look finished while accepting spaces as a name, discarding valid input after one error, or announcing nothing to a screen reader. Code review and interaction testing answer different questions, so perform both.

Test the workshop flow as a visitor

Run the focused tests first, then use the page with the same actions a visitor will take. Submit every field empty and confirm that each required control receives a clear error. Enter spaces around a valid name and check that trimming does not destroy the value.

Test malformed and valid email addresses. Change the experience level by keyboard, leave consent unchecked, and confirm that submission stays blocked. After correcting each issue, verify that stale errors disappear and the entered values remain available.

Complete one valid registration and inspect the success state. Refresh the page, navigate back, and submit twice to understand whether duplicate records or stale confirmations can appear. If the feature calls a server, test an unavailable or rejected response instead of assuming every request succeeds.

Use feedback to correct one observed mismatch

Suppose the form clears every field after the server rejects the email address. Describe that exact behavior rather than requesting better error handling. Ask the assistant to preserve values, show the server message near the email field, and add a regression test for the failed response.

Keep verified behavior outside the new scope. Say that client validation, keyboard order, and the successful confirmation already pass. This prevents a local correction from becoming another rewrite.

When the next result passes, inspect the diff again. Generated patches can solve the named issue while introducing broad refactors or weakening tests. Accept the smallest change that satisfies the evidence and matches project conventions.

Understand what vibe coding does not decide

The model cannot decide whether your consent text meets legal requirements, whether you should collect experience level, or how long records should remain stored. Those are product, privacy, and operational decisions. Document them before real visitors submit information.

AI-generated code can include insecure data handling, inaccessible controls, unsupported APIs, or unnecessary packages. Do not paste secrets or production records into a prompt. Use test data and grant tools only the access required for the current task.

Some work needs specialist review. Payments, health information, identity verification, and high-impact decisions carry consequences that a plausible test suite cannot cover alone. Treat the assistant as a coding collaborator, not the accountable operator.

Know when an agent fits the work

A chat-sized request works when you can inspect one response and choose the next prompt. An agent becomes useful when the path includes several verifiable steps, such as reading project conventions, changing code, running tests, and checking the page. AI agents still need limited permissions and explicit approval boundaries.

Do not add autonomy to make a weak request appear stronger. The workshop feature still needs the same goal, scope, checks, and human release decision. More tool access increases the importance of those boundaries.

Check the feature before release

Use this list when the workshop signup draft appears finished:

  • The page explains the workshop and collects only approved information.
  • Every field has a visible label, keyboard access, and a specific error state.
  • Invalid submissions preserve useful input and create no registration.
  • A valid submission produces one confirmation and no duplicate record.
  • Mobile, narrow desktop, reload, back navigation, and server failure paths are tested.
  • Data use, retention, access, deletion, and operational ownership are documented.
  • The final diff contains no unexplained dependency or unrelated refactor.

Vibe coding becomes dependable when every generated change meets an observable contract. The workshop form is ready only when its code, tests, interface, and operating decisions agree. That controlled loop matters more than how rapidly the first draft appeared.

Mini quiz

Check your building decisions

Choose the action that keeps the workshop signup feature controlled and verifiable.

1 / 3

The form looks correct in one preview. What should happen next?
Show solutions
  1. 1. The form looks correct in one preview. What should happen next?

    Correct answer: Test submissions, errors, keyboard use, and narrow screens.

    A preview shows one state; behavior tests reveal whether the complete flow meets its contract.

  2. 2. Which first scope gives the clearest feedback?

    Correct answer: Build the signup form, validation, confirmation, and focused tests.

    The bounded feature has a visible outcome and a small enough surface to review thoroughly.

  3. 3. Who decides whether the signup form is ready to collect real data?

    Correct answer: The accountable builder or team after review.

    The builder controls requirements, data use, verification, and release approval.

Sources

  1. Original post introducing the term vibe codingAndrej Karpathy on X · accessed 2026-07-15
  2. Prompt engineeringOpenAI · accessed 2026-07-15
  3. Prompt design strategiesGoogle AI for Developers · accessed 2026-07-15

Frequently asked questions

Do I need programming experience for vibe coding?

You can begin without knowing a programming language, but you still need to define behavior and test the result. Learn the concepts that your project depends on as they appear.

Can vibe coding produce maintainable software?

It can when you keep changes bounded, reuse project conventions, test behavior, and remove unnecessary complexity. Unreviewed generated code can become difficult to maintain regardless of how fast the first draft appeared.

Should I accept every dependency the model suggests?

No. Ask why the dependency is needed, inspect its maintenance and security implications, and prefer existing project capabilities when they meet the requirement.

When should I stop and ask a specialist?

Stop when the work involves high-impact security, payments, health, legal obligations, or a technical decision you cannot verify. AI assistance does not remove the need for qualified review.

Privacy setting

With your consent, PostHog EU measures which pages are opened and additionally records your session: mouse movement, clicks, scrolling and the rendered page content are stored as a replayable reconstruction. Typed input is masked before sending. The contents of sign-in, sign-up, password recovery, the founder chat, the newsletter field, your email display, your quiz answers and the checklists are not recorded at all; on the sign-in and sign-up pages recording is paused. Addresses are always stored without query parameters. A random device identifier and technical connection data such as the IP address are processed as well. In addition, strictly defined usage events are measured: how far a post was read, which article element was used, which call to action was clicked, how a newsletter sign-up ended, how far you get in a course or in the feed (recording only whether a task was correct or incorrect, never your answer itself), which video you start, whether you switch the language, and how a sign-in or sign-up attempt ended — without the email address, without the password, and without the error message. Only values from a fixed list and whole numbers from fixed ranges are transmitted — no input and no free text. We also label production, internal, and automated test visits separately and derive whether a visit came from a known interface such as ChatGPT, Claude, or Perplexity from a known referring domain or a strictly allowed campaign value. The full referring address and query parameters are not sent, and this cannot identify a specific AI model. If PostHog's IP-based geo enrichment is enabled in the project, the service can derive an approximate country, continent, and region; we do not request browser or GPS location. Every visit is also assigned to a page area from a fixed list (for example home, blog, tools, account) — the area is sent, not the address. Page loading and stability metrics are measured as well (Core Web Vitals: LCP, CLS, INP, FCP), without network payloads. A click on a link leading away from the site is recorded only as the target domain from a fixed list, without path, query parameters, or link text. For the Idea Wheel, AI Labelling and Limit Reset tools only the kind of action is measured — spin, option changed, copy or export, for instance — never your input and never a result. Learn more about privacy

Without your consent no analytics code is loaded and nothing is recorded. You can withdraw at any time: withdrawal ends collection immediately; data already collected may have been transmitted by then and is deleted after the storage period.