LogoAI Practice Knowledge Base
LogoAI Practice Knowledge Base
Homepage
Prompt to Product

Part 1: Foundation

What is Vibe CodingWhy AI ProgrammingSolo Founder MindsetIndie Hacker Tailwinds in the AI Era

Part 2: Discovery

Google Trends Demand MiningNew-Word StrategyLong-Tail Mining & One-Keyword-One-SiteReddit/X Pain-Point MiningProduct Hunt Competitive ResearchMVP Definition & Boundaries

Part 3: Tooling

Tool SelectionMCP Complete GuidePlaywright Browser AutomationAI Coding Practical Tips

Part 4: Methodology

From Vibe Coding to Spec CodingOpenSpec Hands-on GuideMBRY Prompt FrameworkAI Is Not a Chat Box

Part 5: Prompts

Prompt ArsenalComplete AI Coding Rules Guide

Part 6: Launch

Budget-Friendly Tech StackOn-Page SEO BasicsLink Building & Directory Submission

Part 7: Monetization

Stripe & International PaymentsPricing StrategyThe 80/20 Principle

Part 8: Marketing

Social Media & Build In PublicCold Start 100 UsersEmail List Newsletter

Part 9: Pitfalls

Anti-Patterns Guide
AI Self-Growth System

Part 0: The Laboratory

The Laboratory: Environment Setup

Part 1: Mindset - Understanding Compound Growth

What Is an AI Self-Growth SystemLinear vs Compounding GrowthFlywheel Effect ExplainedMaxwell's Demon Philosophy

Part 2: Engine - Four Core Modules

Content FactoryAutomated DistributionData Monitoring SystemFeedback Loop: System Self-Evolution

Part 3: SEO Factory - Traffic Compounding

pSEO Basics and PrinciplesKeyword Matrix DesignDrip Release StrategyJust-in-Time Release (JIT)Internal Linking AutomationSite Matrix and Fingerprint Isolation

Part 4: Social Leverage - Interception and Downscaling

Social Listening SystemHot Topic TransformerAuto-Reply InterceptorContent Format Arbitrage

Part 5: Viral Growth - User-Powered Distribution

Viral Product DesignShareable Result PatternLow-Friction Conversion DesignGamified Sharing Mechanism

Part 6: Knowledge Arbitrage - Becoming the Authority

Information Gap ArbitrageAggregation as a ServiceTrend Prediction EngineData Moat

Part 7: Portfolio Strategy - Scaling Systems

Portfolio StrategyUnified PassportCross-Promotion EngineAsset Reuse Engine

Part 8: Automation Endgame

Automation EndgameMonetization StackBuild to SellNext S-Curve

Part 9: Case Studies

Case Study: SEO Factory in PracticeCase Study: Viral Tool in PracticeCase Study: Matrix in Practice

Part 10: Human Advantage

Human AdvantageDark ForestFinal Manifesto
Counterintuitive Facts反直觉事实:终极选题规划 (No.068-100)

Writing Protocol

Canonical PromptArticle Template

Sample Articles

Counterintuitive Facts (1): How Do You Prove You're Not a Brain That Just Popped Into Existence From the Void?Counterintuitive Facts (2): Why Are All the 'Good Ones' Never on the Market?Counterintuitive Facts (3): Rules You Don't Understand Were Often Paid for in CorpsesCounterintuitive Facts (4): Why Do Elites Who Advocate 'Open Marriage' Stay Faithful Themselves?Counterintuitive Facts (5): Your Anger Is a Parasite Reproducing in Someone Else's BrainCounterintuitive Facts (6): Why Do You Prefer Fake Things? Because Real Things Aren't Stimulating Enough AnymoreCounterintuitive Facts (7): Why Does a Gazelle Stop to Jump Up and Down When It Sees a Lion, Instead of Running?Counterintuitive Facts (8): Most of Humanity's Greatest Achievements Are Evolutionary 'Waste'Counterintuitive Facts (9): 'For the Good of the Group' Is the World's Biggest LieCounterintuitive Facts (10): You're Sitting in an Office, But Your Body Thinks You're Fleeing FamineCounterintuitive Facts (11): Why Is the Most Rational Strategy at the Negotiating Table to Make Your Opponent Think You're Insane?Counterintuitive Facts (12): Why Would a Group of Smart, Good People Collectively Walk Into Disaster?Counterintuitive Facts (13): 'Everyone Knows' and 'Everyone Knows That Everyone Knows' Are Completely Different ThingsCounterintuitive Facts (14): How Did Kindness Survive in This Cold Universe?Counterintuitive Facts (15): Why Is Everyone Richer But More Anxious?Counterintuitive Facts (16): The Most Effective Threat Is a One Time Thing: You Only Get One ChanceCounterintuitive Facts (17): Why Would You Rather Lose Money Yourself Just to Make the Person Who Earned More Suffer?Counterintuitive Facts (18): Why Is More Expensive Waste Paper Worth More?Counterintuitive Facts (19): You Think the Universe Is Perfect Only Because You Haven't Died YetCounterintuitive Facts (20): Stupidity Is More Dangerous Than Evil Because Stupidity Cannot Be RefutedCounterintuitive Facts (21): If He Doesn't Pay for His Mistakes, His Advice Is GarbageCounterintuitive Facts (22): Why Does the Boss Always Promote the Stupidest Person?Counterintuitive Facts (23): Why Do Experts Lead the Persecution of Those Who Tell the Truth?Counterintuitive Facts (24): The Better Things Get, the Closer You Are to DeathCounterintuitive Facts (25): Why Do Dictators Who Ruin Their Countries the Most Often Live the Longest?Counterintuitive Facts (26): Making Money and Creating Wealth Are Completely Different ThingsCounterintuitive Facts (27): Free Things Are Often the Most ExpensiveCounterintuitive Facts (28): Why Do Smart People Also Go Down Dead End Roads?Counterintuitive Facts (29): Even If You're an All Around Genius, You Still Need Someone Who's 'Useless'Counterintuitive Facts (30): Why Is the Seat Next to You Half the Price of Your Ticket?Counterintuitive Facts (31): Why Is Effort Meaningless?Counterintuitive Facts (32): Why Do the Rich Get Richer and the Poor Get Poorer?Counterintuitive Facts (33): Why Does a Group of Smart People Become One Idiot?Counterintuitive Facts (34): Why Does a Consumer's Sneeze Cause a Factory Earthquake?Counterintuitive Facts (35): Why Are Keyboard Letters Arranged Randomly?Counterintuitive Facts (36): The Demon Everyone Is FeedingCounterintuitive Facts (37): Why Does Every Great Organization Eventually Become a Zombie?Counterintuitive Facts (38): The Emperor's New Clothes Happens Around You Every DayCounterintuitive Facts (39): Why Does Zuckerberg Dress Like a Computer Repair Guy?Counterintuitive Facts (40): When You Measure Something, You Destroy ItCounterintuitive Facts (41): How to Turn Lies Into Truth?Counterintuitive Facts (42): You Live in a Map Without TruthCounterintuitive Facts (43): You Have No Idea What You Actually WantCounterintuitive Facts (44): Why You Should Never Trust 'Average Returns'Counterintuitive Facts (45): The Older Something Is, the Less Likely It Is to DieCounterintuitive Facts (46): Why Does Your Room Always Get Messy on Its Own?Counterintuitive Facts (47): The Demon Who Died But Is Still Charging YouCounterintuitive Facts (48): Why Isn't Tomorrow's Sunrise News?
AI Wealth Truth

Chapter 1: The Hidden Physics of Wealth Distribution

AI Wealth Truth (01): Why Wealth Inequality Follows the Second Law of ThermodynamicsAI Wealth Truth (02): Why Can Randomness Create Extreme Inequality?AI Wealth Truth (03): Why 'Fair' Markets Make Inequality WorseAI Wealth Truth (04): Why the ZIP Code You Grow Up In Predicts Your Income Better Than IQAI Wealth Truth (05): Why the Role of Luck Is Systematically Underestimated by 90%AI Wealth Truth (06): Why 'Equal Opportunity' Is Mathematically ImpossibleAI Wealth Truth (07): Why the Poor's 'Irrational' Decisions Can Be the Optimal ChoiceAI Wealth Truth (08): Why the 'Middle Class' Is a Postwar Historical AnomalyAI Wealth Truth (09): Why Economic Growth Has Nothing to Do With Your Wage GrowthAI Wealth Truth (10): Why Technological Progress Makes Ordinary People PoorerAI Wealth Truth (11): Why Trickle-Down Economics Never WorkedAI Wealth Truth (12): Why Inflation Is a Hidden Wealth TransferAI Wealth Truth (13): Why Rising Housing Prices Make Society PoorerAI Wealth Truth (14): Why Financialization Shrinks the Real EconomyAI Wealth Truth (15): Why You Will Never 'Beat the Market'

Chapter 2: How Your Brain Makes You Poor

AI Wealth Truth (16): Why Your Brain Was Not Designed for Personal FinanceAI Wealth Truth (17): Why Higher Prices Can Make You Buy MoreAI Wealth Truth (18): Why Saving Small and Spending Big Is a Nervous-System BugAI Wealth Truth (19): Why You Pay More for FreeAI Wealth Truth (20): Why Losing 1 Hurts 2.5 Times More Than Gaining 1AI Wealth Truth (21): Why You Always Buy at Market Tops and Sell at Market BottomsAI Wealth Truth (22): Why Gut-Level Investment Decisions Can Be BetterAI Wealth Truth (23): Why Experts' Forecasts Can Be Worse Than RandomAI Wealth Truth (24): Why Your Intuition About Low-Probability Events Is Catastrophically WrongAI Wealth Truth (25): Why Sunk Costs Drain Your WealthAI Wealth Truth (26): Why You Overpay for "Optionality"AI Wealth Truth (27): Why Poorer People Are Easier to ScamAI Wealth Truth (28): Why Casinos Are Designed That WayAI Wealth Truth (29): Why Finance Apps All Look the SameAI Wealth Truth (30): Why the "Rational Man" Assumption Is Wrong at the Root

Chapter 3: Engineered Poverty: How Systems Extract You

AI Wealth Truth (31): Why Minimum Payments Are Banks' Most Profitable InventionAI Wealth Truth (32): Why "Interest-Free" Installments Often Mean You Pay 20% MoreAI Wealth Truth (33): Why Insurance Actuaries Live Ten Years Longer Than YouAI Wealth Truth (34): Why "Principal-Protected" Products Guarantee You LoseAI Wealth Truth (35): Why Bank Deposit Rates Are Almost Always Below InflationAI Wealth Truth (36): Why Pension Systems Are Ponzi Schemes Destined for InsolvencyAI Wealth Truth (37): Why Dollar-Cost Averaging Returns Are Often Exaggerated by 10xAI Wealth Truth (38): Why Medical Bankruptcy Is the No.1 Personal Financial KillerAI Wealth Truth (39): Why Higher Education Is Turning Into a High-Stakes BetAI Wealth Truth (40): Why "Buying a Home Is a Must" Is a Constructed IdeaAI Wealth Truth (41): Why Wage Growth Almost Always Lags Housing PricesAI Wealth Truth (42): Why Taxi Licenses Can Be Worth Hundreds of ThousandsAI Wealth Truth (43): Why Metacognition Is the Real Marker of Class StratificationAI Wealth Truth (44): Why Some Cities Keep "Purchase Restrictions" Without Increasing SupplyAI Wealth Truth (45): Why the System Does Not Want You to Understand These Things

Chapter 4: Wealth Black Holes of the Network Era

AI Wealth Truth (46): Why the "Free" Internet Costs You Tens of Thousands of DollarsAI Wealth Truth (47): Why Recommendation Algorithms Make the Poor Poorer and the Rich RicherAI Wealth Truth (48): Why Every "Viral" Hit Has Someone Harvesting ValueAI Wealth Truth (49): Why Live-Stream Shopping Prices Are Not Actually CheapAI Wealth Truth (50): Why "We Don't Sell Your Data" Is the Biggest LieAI Wealth Truth (51): Why "User Growth" Matters More Than ProfitAI Wealth Truth (52): Why Every "Viral Hit" Is Carefully Designed HarvestingAI Wealth Truth (53): Why You Are the One Who Ultimately Pays for Platform "Subsidy Wars"AI Wealth Truth (54): Why "Private Traffic" Is a Bubble About to BurstAI Wealth Truth (55): Why the Crypto Bubble Is Exactly Like the 17th-Century Tulip ManiaAI Wealth Truth (56): Why NFTs Are Not "Digital Ownership" but "Digital Tulips"AI Wealth Truth (57): Why "Metaverse Real Estate" May Be the Most Absurd Speculation in HistoryAI Wealth Truth (58): Why Retail Investors Who Rush Into Every "Tech Revolution" Die FirstAI Wealth Truth (59): Why FOMO Has Been WeaponizedAI Wealth Truth (60): Why "Deep Work" Is Becoming a Class Privilege

Chapter 5: Wealth Redistribution in the AI Era

AI Wealth Truth (61): Why AI Makes "Skills" Less ValuableAI Wealth Truth (62): Why Capital Still Wins in "Human-AI Collaboration"AI Wealth Truth (63): Why the Biggest Asset in the AI Era Is "Attention Sovereignty"AI Wealth Truth (64): Why "Data Labor" Is Not Recognized as LaborAI Wealth Truth (65): Why AI Chips Are Worth More Than AI AlgorithmsAI Wealth Truth (66): Why OpenAI's $7 Trillion Chip Plan Is a Power GameAI Wealth Truth (67): Why "AI Democratization" Is a LieAI Wealth Truth (68): Why AI Makes "Taste" the Last MoatAI Wealth Truth (69): Why "Personal Brand" Matters More Than Companies in the AI EraAI Wealth Truth (70): Why "One-Person Companies" Have an Advantage Over Big CompaniesAI Wealth Truth (71): Why the "Interface Layer" Is Always More Valuable Than the "Implementation Layer"AI Wealth Truth (72): Why AI Makes "Vertical" More Valuable Than "General"AI Wealth Truth (73): Why "Speed" Matters 10x More Than "Perfection" in the AI EraAI Wealth Truth (74): Why Real AI Dividends Mostly Belong to Capital OwnersAI Wealth Truth (75): Why "Technological Unemployment" Is Totally Different This Time

Chapter 6: Game Theory, Information Theory, and Wealth Warfare

AI Wealth Truth (76): Why the "Market for Lemons" Hurts Honest PeopleAI Wealth Truth (77): Why "Signals" Matter More Than "Ability" for Your IncomeAI Wealth Truth (78): Why Interviews Are a Game Where Both Sides LieAI Wealth Truth (79): Why Referrals Are 100x More Effective Than Cold ApplicationsAI Wealth Truth (80): Why the "Anchoring Effect" Is Worth Millions in NegotiationAI Wealth Truth (81): Why "Silence" Is the Strongest Weapon in NegotiationAI Wealth Truth (82): Why the Principal-Agent Problem Lets You Get Extracted in Every RelationshipAI Wealth Truth (83): Why Incentive Compatibility Is the Key to Designing Any SystemAI Wealth Truth (84): Why the Tragedy of the Commons Is Replaying on the InternetAI Wealth Truth (85): Why the Prisoner's Dilemma Explains Most Social ProblemsAI Wealth Truth (86): Why First-Mover Advantage Can Be a CurseAI Wealth Truth (87): Why "Slow Variables" Matter More Than "Fast Variables" for Your FateAI Wealth Truth (88): Why Feedback Delay Makes You Unable to LearnAI Wealth Truth (89): Why Complex Systems Make Experts' Forecasts WorthlessAI Wealth Truth (90): Why Black Swans Are Becoming More Frequent

Chapter 7: Ultimate Cognition: The Philosophy and Nihilism of Wealth

AI Wealth Truth (91): Why You Are Playing a "Finite Game" While the Rich Play an "Infinite Game"AI Wealth Truth (92): Why Money May Be Humanity's Biggest "Consensus Illusion"AI Wealth Truth (93): Why "Economic Growth" May Be a Game Near Its EndAI Wealth Truth (94): Why GDP Growth Did Not Make Humans HappierAI Wealth Truth (95): Why "Success" Might Be a Carefully Designed Social ControlAI Wealth Truth (96): Why the Richer You Are, the More Anxious You Can BecomeAI Wealth Truth (97): Why "Lying Flat" Might Be a Rational ResistanceAI Wealth Truth (98): Why "Meaning" Cannot Be Bought With MoneyAI Wealth Truth (99): Why the Richest People Often Give Away Most of Their WealthAI Wealth Truth (100): If Wealth Is Ultimately Meaningless, Why Pursue It?
X (Twitter)
Prompt to Product

OpenSpec Hands-on Guide

Premium

Step-by-step guide to spec-driven development with OpenSpec

OpenSpec Hands-on Guide

Last chapter covered spec-driven development philosophy. This chapter gets hands-on.

OpenSpec is currently the lightest spec-driven tool, especially suited for indie devs and small teams. It's not as "heavy" as Spec Kit, and doesn't require switching IDEs like Kiro. You can use OpenSpec with Cursor, Claude Code, or Windsurf.

This chapter's goal: walk you through a complete case from installation to archiving, seeing real results at each step.

OpenSpec Core Workflow📝Draft ProposalDraft change proposal/openspec:proposal->🔍Review & AlignReview and align specsopenspec validate->💻ImplementAI codes per tasks/openspec:apply->📦ArchiveArchive and update specs/openspec:archive

Installation and Initialization

First, ensure your Node.js version is 20.19.0 or higher. Open terminal, enter node --version to check. If too low, upgrade; if sufficient, continue.

Install OpenSpec CLI globally:

npm install -g @fission-ai/openspec@latest

Verify after installation:

openspec --version

Seeing a version number means it's installed. Next, enter your project directory and initialize:

cd my-project
openspec init

An interactive interface appears asking which AI tool you use. It supports many: Claude Code, Cursor, Windsurf, GitHub Copilot, Amazon Q Developer, etc. Select your preferred one.

After initialization, your project gains these additions:

my-project/
|---- AGENTS.md              # AI agent guidance file
\---- openspec/
    |---- project.md         # Project context
    |---- specs/             # Source specs (source of truth)
    |---- changes/           # Change proposals (in progress)
    \---- archive/           # Archived changes

Each file and folder has its purpose.

Understanding Directory Structure

project.md: Project Context

openspec/project.md is the project overview for AI. It tells AI what the project does, what tech stack it uses, what coding conventions to follow.

After initialization, this file is empty or has only a basic template. You need to fill it in so AI better understands your project.

A completed project.md looks roughly like:

# Project Context

## Project Overview
This is a SaaS subscription management platform allowing users to manage software subscriptions, track expenses, and set renewal reminders.

## Tech Stack
- Frontend: Next.js 14 + TypeScript + Tailwind CSS
- Backend: Next.js API Routes + Prisma ORM
- Database: PostgreSQL
- Auth: Better Auth
- Payments: Stripe

## Coding Conventions
- Use TypeScript strict mode
- Components use functional components + hooks
- Styles use Tailwind, avoid inline style objects
- API routes follow RESTful patterns
- Error handling uses unified try-catch pattern

## Directory Structure
- /src/app - Next.js App Router pages
- /src/components - Reusable components
- /src/lib - Utilities and config
- /prisma - Database schema and migrations

## Constraints
- Don't use any deprecated APIs
- All database operations must be server-side
- Sensitive info stored in environment variables

After initialization, OpenSpec prompts you: let AI help fill this file. You can directly tell AI:

"Please read openspec/project.md and help me fill in tech stack, coding conventions, and directory structure based on the actual project."

AI analyzes your project files and auto-fills. Saves time.

OpenSpec File Structureopenspec/specs/Source specs(Current truth)auth/spec.mdbilling/spec.mduser/spec.md->openspec/changes/Change proposals(In progress)add-2fa/proposal.mdadd-2fa/tasks.mdadd-2fa/specs/...->openspec/archive/Archived changes(History)fix-login-bug/add-dark-mode/...

specs/: Source Specs

openspec/specs/ stores the project's current specifications-the "source of truth." Each subfolder represents a feature module, containing a spec.md file describing that module's requirements and behavior.

Initially this directory is empty. As you complete and archive changes, specs accumulate.

changes/: Change Proposals

openspec/changes/ is the workspace. When you want to add new features or modify existing ones, you (or AI) create a change folder here.

Say you want to add two-factor authentication. The change folder might be called add-2fa/, containing:

  • proposal.md - describes why this change and what it does
  • tasks.md - task checklist for implementing this change
  • specs/ - modifications to existing specs (in delta format)
  • design.md (optional) - technical design decisions

AGENTS.md: AI Agent Guidance

AGENTS.md at project root is the operations manual for AI. It tells AI how to work with the OpenSpec workflow.

Unlike README.md for humans, AGENTS.md is written specifically for AI, containing specific operation steps and commands. AI tools supporting the AGENTS.md convention (including OpenAI Codex, Cursor, Claude Code, etc.) automatically read this file.

Complete Case: Adding User 2FA

Let's walk through a complete case. Assume your project is a SaaS app; you want to add two-factor authentication for users.

Step 1: Draft Proposal

Open your AI tool (Cursor or Claude Code) and enter:

Create an OpenSpec change proposal: Add two-factor authentication (2FA) for users.
Users can enable 2FA in settings; once enabled, login requires entering a phone verification code.

If using Cursor with OpenSpec slash commands configured, you can directly use:

/openspec:proposal Add user 2FA authentication

AI creates a new directory under openspec/changes/, like add-user-2fa/, generating several files.

Generated proposal.md

AI-generated proposal.md looks roughly like:

# Change Proposal: Add User 2FA Authentication

## Change ID
add-user-2fa

## Summary
Add Two-Factor Authentication capability to user accounts,
improving account security.

## Motivation
Current system only has password protection, facing password leak risks.
Two-factor authentication significantly reduces account theft possibility.

## Change Scope
- Settings page adds 2FA toggle
- Login flow adds verification code step
- Database user table adds 2FA-related fields
- New SMS verification code send and verify endpoints

## Affected Specs
- auth/spec.md (auth module)
- user/spec.md (user module)

## Acceptance Criteria
- User can enable/disable 2FA in settings
- With 2FA enabled, login requires 6-digit code
- Verification code valid for 5 minutes
- 5 consecutive wrong codes locks account for 30 minutes

Generated tasks.md

Task checklist is broken down finely:

# Task Checklist

## 1. Database Changes
- [ ] 1.1 Add `two_factor_enabled` boolean field to user table
- [ ] 1.2 Add `two_factor_secret` field to user table (encrypted storage)
- [ ] 1.3 Create verification code record table `otp_codes`
- [ ] 1.4 Run database migration

## 2. Backend API
- [ ] 2.1 Create POST /api/auth/2fa/enable endpoint
- [ ] 2.2 Create POST /api/auth/2fa/disable endpoint
- [ ] 2.3 Create POST /api/auth/2fa/send-code endpoint
- [ ] 2.4 Create POST /api/auth/2fa/verify endpoint
- [ ] 2.5 Modify login endpoint to add 2FA verification step

## 3. Frontend UI
- [ ] 3.1 Add 2FA toggle component to settings page
- [ ] 3.2 Create verification code input modal component
- [ ] 3.3 Modify login page to support 2FA flow
- [ ] 3.4 Add 2FA-related loading and error states

## 4. Testing
- [ ] 4.1 2FA enable/disable flow testing
- [ ] 4.2 Verification code send and verify testing
- [ ] 4.3 Login flow integration testing
- [ ] 4.4 Error handling and edge case testing

Step 2: Review and Align

After proposal generation, review it. Run:

openspec show add-user-2fa

This prints proposal details. You can also use openspec validate to check formatting:

openspec validate add-user-2fa --strict

If there are issues, it tells you what's wrong.

When reviewing, focus on:

  1. Are acceptance criteria complete-> Any missing scenarios->
  2. Is task breakdown reasonable-> Too large is hard to execute; too small is too fragmented.
  3. Is spec delta accurate-> Are ADDED and MODIFIED used correctly->

If adjustments needed, tell AI:

Task checklist is missing SMS provider integration tasks, please add.
Also, add an acceptance criterion: users can view 2FA enable history.

AI updates the relevant files. Go back and forth until you're satisfied.

Step 3: Implement Tasks

With specs confirmed, start coding. Tell AI:

Specs are confirmed. Please start implementing the add-user-2fa change. Execute in tasks.md order.

Or use slash command:

/openspec:apply add-user-2fa

AI implements tasks one by one. After completing each task, it checks off in tasks.md:

## 1. Database Changes
- [x] 1.1 Add `two_factor_enabled` boolean field to user table
- [x] 1.2 Add `two_factor_secret` field to user table (encrypted storage)
- [ ] 1.3 Create verification code record table `otp_codes`
...

During implementation, if AI encounters problems or needs your decision, it pauses to ask. Like:

"SMS provider: Twilio or Alibaba Cloud SMS-> Please confirm."

You answer; AI continues.

This process may take time depending on complexity. The benefit: every step is traceable; you know what AI is doing and why.

Step 4: Archive Change

All tasks complete, tests pass-archive this change:

openspec archive add-user-2fa --yes

Archive operation does several things:

  1. Merges deltas from changes/add-user-2fa/specs/ into specs/
  2. Moves entire change folder to archive/ directory
  3. Updates related spec documents

After archiving, openspec/specs/auth/spec.md contains complete 2FA requirements description, becoming part of project specs. Next time you make related changes, AI reads these specs and knows how the existing system works.

Before vs After ArchiveBefore Archiveopenspec/|---- specs/auth/spec.md (no 2FA)|---- changes/add-user-2fa/| |---- proposal.md| ---- specs/auth/spec.md (Delta)->After Archiveopenspec/|---- specs/auth/spec.md (with 2FA)|---- changes/ (empty)---- archive/add-user-2fa/ ---- (complete history)

Cursor Integration Tips

If you mainly use Cursor, here are tips for smoother OpenSpec usage.

Enable Slash Commands

When initializing OpenSpec with Cursor selected, it auto-creates .cursor/commands/ directory with predefined slash commands. You can directly use in Cursor:

  • /openspec:proposal - Create new change proposal
  • /openspec:apply - Implement change
  • /openspec:archive - Archive completed change

If slash commands don't appear, restart Cursor. Commands load at startup.

Use @ to Reference Spec Files

Cursor's @ symbol can reference files. Works great with OpenSpec:

@openspec/project.md
@openspec/specs/auth/spec.md

Based on existing auth specs, please add OAuth login support.

This way AI reads your project context and existing specs, reducing misunderstandings.

Cursor Rules with OpenSpec

Add to your .cursorrules file to make Cursor always consider OpenSpec specs:

Before any feature development, first check if there are related specs in openspec/specs/.
If yes, strictly implement per specs.
If no, first create a change proposal through OpenSpec workflow.

Even if you forget, Cursor reminds you to check specs first.

Common Issues and Lessons Learned

Developers have hit various pitfalls using OpenSpec. Here are common ones.

Issue 1: AI-Generated Specs Too Vague

Sometimes you simply say "add a comments feature" and AI generates a vague proposal. Solution: provide more specific requirements:

x Add a comments feature

v Add article comments feature:
- Logged-in users can comment on articles
- Comments support plain text, max 500 characters
- Users can edit/delete their own comments
- Comments display newest first, 20 per page
- Comments need moderation before public display

More specific requirements = more precise generated specs.

Issue 2: Change Conflicts

If you have multiple change proposals open simultaneously, they might modify the same spec file, causing conflicts when archiving.

Use openspec list to view all active changes:

openspec list

If overlap found, either merge changes or complete and archive them sequentially. Avoid too many simultaneous changes.

Issue 3: Wrong MODIFIED vs ADDED

Common beginner mistake.

  • ## ADDED Requirements: Adding entirely new functionality unrelated to existing features
  • ## MODIFIED Requirements: Modifying existing feature behavior

When using MODIFIED, first copy the complete original requirement, then make modifications. Don't just write the changed parts, or info is lost during archiving.

Issue 4: Specs and Code Diverge

After using for a while, code might change without spec updates (especially during urgent bug fixes).

Recommended: any code modification should have a corresponding OpenSpec change, even small ones. Once habituated, specs stay in sync with code.

If divergence found, take time for a spec sync-have AI read code and update specs. Sharpening the axe won't delay the woodcutting.

Common Issues Quick ReferencexSpecs too vague-> Provide more specific requirements⚠Change conflicts-> openspec list to check overlaps🔀Wrong MODIFIED/ADDED-> MODIFIED needs full original copy📄Specs & code diverge-> All changes go through OpenSpec🔄Slash commands missing-> Restart editor to reloadvValidation fails-> openspec validate --strict

Practical Templates

Finally, sharing templates I commonly use-copy directly.

proposal.md Template

# Change Proposal: [Feature Name]

## Change ID
[change-id]

## Summary
[One-sentence description of what this change does]

## Motivation
Why is this change needed? What problem does it solve?

## Change Scope
- [Affected module 1]
- [Affected module 2]
- [New feature points]

## Out of Scope
- [Explicitly excluded content]

## Technical Constraints
- [Technical restrictions to follow]

## Acceptance Criteria
- [ ] [Specific verifiable condition 1]
- [ ] [Specific verifiable condition 2]
- [ ] [Specific verifiable condition 3]

## Related Links
- [Design mockup URL]
- [Related Issue]

tasks.md Template

# Task Checklist

## Estimated Time
[Overall estimate]

## 1. [Phase name, e.g. "Database Changes"]
- [ ] 1.1 [Specific task]
- [ ] 1.2 [Specific task]

## 2. [Phase name, e.g. "Backend Development"]
- [ ] 2.1 [Specific task]
- [ ] 2.2 [Specific task]
- [ ] 2.3 [Specific task]

## 3. [Phase name, e.g. "Frontend Development"]
- [ ] 3.1 [Specific task]
- [ ] 3.2 [Specific task]

## 4. Testing & Documentation
- [ ] 4.1 Unit tests
- [ ] 4.2 Integration tests
- [ ] 4.3 Update related documentation

## Notes
- [Things to note during implementation]

Next chapter is the MBRY prompt framework. After learning to manage requirements with OpenSpec, you also need to know how to communicate efficiently with AI. MBRY is a concise prompt structure that helps you hit the mark every time you talk to AI.

From Vibe Coding to Spec Coding

How to use AI coding in teams-> Specification-driven development practice

MBRY Prompt Framework

Goal-first conversation order-from "begging AI to understand" to "making AI serve your goal"

Table of Contents

OpenSpec Hands-on Guide
Installation and Initialization
Understanding Directory Structure
project.md: Project Context
specs/: Source Specs
changes/: Change Proposals
AGENTS.md: AI Agent Guidance
Complete Case: Adding User 2FA
Step 1: Draft Proposal
Generated proposal.md
Generated tasks.md
Step 2: Review and Align
Step 3: Implement Tasks
Step 4: Archive Change
Cursor Integration Tips
Enable Slash Commands
Use @ to Reference Spec Files
Cursor Rules with OpenSpec
Common Issues and Lessons Learned
Issue 1: AI-Generated Specs Too Vague
Issue 2: Change Conflicts
Issue 3: Wrong MODIFIED vs ADDED
Issue 4: Specs and Code Diverge
Practical Templates
proposal.md Template
tasks.md Template