หัวใจของ pstack (ชุด skills ส่วนตัวของ Lauren Tan/poteto, MIT license, อยู่ใน github.com/cursor/plugins) คือการทำให้ agent 'พิสูจน์' งานตัวเองบนแอปจริงได้ ผ่าน 2 skills: /create-verification-skill (สัมภาษณ์ repo แล้วสร้าง project-local verification skill ที่ .cursor/skills/verify-<app>/ พร้อม sections Launch, Doctor, Drive, Evidence, Cleanup, Helpers) และ /maintain-verification-skill (loop รักษา feature map ให้ไม่เน่า: source wave ขนานต่อ feature + live pass หนึ่งรอบ + ที่สุดหนึ่ง PR ของการแก้ที่พิสูจน์แล้ว) ส่วน feature map คือ markdown แบบ per-feature ใน references/features/ ที่มีไฟล์ตัวอย่างจริงคือ repo poteto/verification-skill-example (แอปสมมุติ Atlas/Harbor Labs, 34 ไฟล์ feature + README index) โดย README ของ repo ให้เหตุผลที่ไม่ใช้ wiki ชัดเจน: 'A wiki is great for humans. Agents pay for every token they reread.' วงจรการใช้คือ launch → doctor → drive → prove → clean up
01
ตัวอย่างอ้างอิงหลัก: repo poteto/verification-skill-example — description ว่า 'Example: project-local verification skill + large-app feature map (fictional Atlas / Harbor Labs)' โครงสร้างจริงคือ .cursor/skills/verify-atlas/SKILL.md + control-atlas.mjs (CLI ตั้งใจไม่ใส่ — 'usage only in SKILL.md') + references/features/ มี README.md (index/conventions/sweep order) และไฟล์ per-feature จริง 34 ไฟล์ เช่น sign-in.md, prompt-box.md, toasts.md, multi-surface-journeys.md (lead เดิมบอก ~30 ซึ่งถูกต้องโดยประมาณ นับได้ 34)
02
SKILL.md ของ verify-atlas มี frontmatter: name: verify-atlas, description ระบุการขับแอปผ่าน CDP, และ disable-model-invocation: true; README ระบุวัฏจักร 'launch, doctor, drive, prove, clean up'; คำสั่งของ control-atlas.mjs แบ่ง 6 หมวด: Inspection (info/snapshot/screenshot/components), Navigation, Interaction (send/click/type/press/eval/feature-flag ฯลฯ), Performance (wait-settle ฯลฯ), Streaming (console/network-log), Health & cleanup (doctor/cleanup)
03
Proof bar ใน SKILL.md: 'Do not submit "look, it opens" captures. A proof must exercise the production user path and show the observable result a skeptical reviewer would accept.' และ 'Run doctor first. A video against a stale bundle is not evidence.' และ 'Verify side effects, not just pixels: DOM attributes, clipboard, network/RPC log, file contents, or a reload / switch-away round trip.'
04
ทุกไฟล์ feature ใช้ 4 H2 เดียวกัน: 'Sub-features', 'How to get to it (user POV)', 'Driving it with control-atlas', 'Gotchas' — ตัวอย่าง toasts.md มี gotcha ว่า 'Toasts auto-dismiss. Assert quickly' และ 'Multiple toasts stack; target by name, not by index'; sign-in.md บอกวิธี automation auth ด้วย clone-userdata --force --overwrite แล้ว restart และเตือน selector ที่หลอก (อย่า assert การขาด [data-component="root"])
05
เหตุผลเลือก feature map แทน wiki (จาก README ของ repo) 4 ข้อ: Scoped ('Open one feature file for the change under test, not the whole corpus'), Actionable ('Each file answers the same four questions: what exists, how a user reaches it, how to drive it with the harness, what usually lies'), Sweepable ('features/README.md is a top-to-bottom regression order'), Maintained as code ('Drift gets fixed in the same PR as the UI change, or by a maintain-verification pass')
06
/create-verification-skill (SKILL.md ใน cursor/plugins/pstack) ทำงาน 5 ขั้น: (1) 'Interview the repo, not the user' — วิเคราะห์ Surface/Run/Drive/Observe/Isolate จากโค้ด ถาม user เฉพาะที่สังเกตไม่ได้, (2) Generate skill 6 sections: Launch/Doctor/Drive/Evidence/Cleanup/Helpers, (3) 'Seed the feature map' — features/README.md + per-feature file 'aim for the top 3-5 to start', (4) 'Prove the generated skill before handing it over' — รุนจริง end-to-end หนึ่งรอบ (launch, doctor, drive ONE mapped feature, capture evidence, clean up), (5) Offer /maintain-verification-skill
07
/maintain-verification-skill มี 3 outcome เท่านั้น: clean (ครบและไม่มีอะไรจะ ship — ไม่มี PR), changed (หนึ่ง PR ของการแก้ที่พิสูจน์แล้ว จำกัดแค่ directory ของ verification skill), blocked (บอกว่าอะไรกีดขวาง) — ขั้นตอน: หา skill เป้าหมาย → index hygiene → 'Source wave' (read-only subagent หนึ่งตัวต่อหนึ่ง feature file ยิงขนาน; เด็กห้ามขับแอปและห้ามแก้ไฟล์) → reconcile → live pass (บังคับทำแม้ source ดูสะอาด; 3 invariants: doctor ก่อนขับทุกครั้ง, evidence รอดทุก cleanup, สิ่งที่ drive ปลุกขึ้นมาต้องไม่มีชีวิตยาวกว่า drive นั้น) → triage (doc drift vs harness gap vs product gap — ห้ามแก้ product code) → ship or stop
08
ใน guide บทที่ 6 (docs/guide/06-verify-and-ship.md) เปิดด้วย '"It compiles" is not evidence' และระบุว่า verification คือขั้นที่ช้าที่สุดของ agent work เพราะปกติรอมนุษย์ — ทำให้ agent ทำเองได้ก็เลิกเป็น bottleneck; แนะนำรัน /maintain-verification-skill 'at least once a day, ideally from a scheduled automation' และ 'Treat the verification skill as infrastructure, not a one-off. Commit it'
09
Lauren Tan ประกาศทั้งสอง skill ใน X (2026-07-30) ว่า 'pstack now includes 2 skills i recommend everyone use or copy' อธิบาย feature map ว่า 'a map of all the features in your app and how to get to it and use it from a user's pov. it allows agents to navigate and use the app just like a real user which greatly increases its ability to verify its own work' และเตือนว่า 'this feature map goes out of date very quickly' จึงควรรัน maintain เป็น daily automation ด้วย Cursor cloud agents
10
บทความของ poteto เอง 'The Complete Guide to pstack Pt. 1' (X article, 2026-08-31) ยืนยันว่าเธอ claim ส่ง 2,000 PRs/เดือน, เรียก feature map เป็น 'materialized memory' (codebase คือ memory รูปสมบูรณ์ที่สุด, feature map คือรูปย่อที่ประหยัด token), ใช้ Atlas/verification-skill-example เป็นของจริงในบริษัท (แนบ references เช่น preferences.md), และแนะนำจัด 'oncall rotation' บน verification skill ราวกับ infra จริง
11
แหล่งอื่นยืนยันเชิงภายนอก: Flavio Copes สรุป 5 หน้าที่ของ generated skill (launch/ตรวจสุขภาพ/drive/capture evidence/clean up เฉพาะที่ตัวเองเริ่ม) และว่า 'pstack rejects "the build passed" as complete evidence'; The Neuron บันทึกคำเรียก 'materialized memory' และ 'a cheaper index' ลงแอปที่ยังเป็น source of truth; tenten.dev (สรุปพอดแคสต์กับ Simon Willison) บอกว่า 'The first skill she wrote at Cursor was verification' และทุกแอปที่ Cursor/SpaceXAI มี verification skill ที่ถูก maintain อัตโนมัติ
12
สถาปัตยกรรมเบื้องหลัง: mechanical work ถูกดันลง CLI ที่ skill เรียก (wrap Playwright + Chrome DevTools Protocol) ตาม principle 'Build the Lever' — agent ทุกตัวเรียกเครื่องมือเดียวกัน แทนการเขียน throwaway harness ซ้ำ ๆ; guide สรุปลักษณะ CLI ที่ดี: คำสั่ง composposable, มี --dry-run ของสิ่งทำลาย, rich --help, machine-readable output (JSON)
13
pstack ใช้แนวคิดนี้แบบเป็นระบบ: setup-pstack เสนอสร้าง verification skill ให้ทุกโปรเจกต์ที่ไม่มี (step 'Offer a verification skill (optional)'), principle-prove-it-works บังคับ 'Verify against the real artifact ... not a proxy, self-report, or "it compiles."', และ automation 'benny' ก็มี feature-map.example.md ของตัวเอง (per-feature template: How a user gets there / How the control adapter drives it / Stable selectors / States to exercise) พร้อมกติกา 'Never use generated CSS or StyleX classes, dynamic hashes, child indexes, or brittle DOM position'