Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Workplace accommodation options, cost evidence and drafts. Looks up and drafts; never sends.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
SF_ORG_ALIAS, CURB_CUT_SITE, TWILIO_NUMBER, CURB_CUT_SUPPORT_EMAIL, SF_CLI_MODULESต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"curb-cut": {
"command": "npx",
"args": [
"-y",
"curb-cut-mcp"
],
"env": {
"SF_ORG_ALIAS": "ใส่ค่าของคุณ",
"CURB_CUT_SITE": "ใส่ค่าของคุณ",
"TWILIO_NUMBER": "ใส่ค่าของคุณ",
"CURB_CUT_SUPPORT_EMAIL": "ใส่ค่าของคุณ",
"SF_CLI_MODULES": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add curb-cut --env SF_ORG_ALIAS='ใส่ค่าของคุณ' --env CURB_CUT_SITE='ใส่ค่าของคุณ' --env TWILIO_NUMBER='ใส่ค่าของคุณ' --env CURB_CUT_SUPPORT_EMAIL='ใส่ค่าของคุณ' --env SF_CLI_MODULES='ใส่ค่าของคุณ' -- npx -y curb-cut-mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"curb-cut": {
"command": "npx",
"args": [
"-y",
"curb-cut-mcp"
],
"env": {
"SF_ORG_ALIAS": "ใส่ค่าของคุณ",
"CURB_CUT_SITE": "ใส่ค่าของคุณ",
"TWILIO_NUMBER": "ใส่ค่าของคุณ",
"CURB_CUT_SUPPORT_EMAIL": "ใส่ค่าของคุณ",
"SF_CLI_MODULES": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"curb-cut": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"curb-cut-mcp"
],
"env": {
"SF_ORG_ALIAS": "ใส่ค่าของคุณ",
"CURB_CUT_SITE": "ใส่ค่าของคุณ",
"TWILIO_NUMBER": "ใส่ค่าของคุณ",
"CURB_CUT_SUPPORT_EMAIL": "ใส่ค่าของคุณ",
"SF_CLI_MODULES": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
SF_ORG_ALIAS envCURB_CUT_SITE envTWILIO_NUMBER envCURB_CUT_SUPPORT_EMAIL envSF_CLI_MODULES envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub parthsevak2 ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.0.0) เข้า registry 40 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Hunter Killer
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Liquidation walls, snapshot age, evidence labels and a public record. Managed OAuth.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Curb Cut lets any worker ask for a workplace accommodation in their own words, on the web with no login, by text or a call from a basic phone, by email, in a Slack DM, or through their own assistant, without ever disclosing a diagnosis. An Agentforce agent holds the conversation; deterministic Apex decides what is stored and sent; a person on the access desk answers. First place, Builder Track, Agentforce for Good Hackathon, Dreamforce 2026.
git clone https://github.com/parthsevak2/curb-cut
cd curb-cut python3 tests/invariants.py # 521 structural checks, offline, about a second
Feel it before you read anything: type one sentence at parthsevak2.github.io/curb-cut/try.html and watch the product's own ranking answer, entirely in your browser. The landing page with the films is parthsevak2.github.io/curb-cut, and a print-ready break-room poster is poster.html.
The story behind it, ten minutes: https://parthsevak2.github.io/curb-cut/story.html
To install it into your own Salesforce org, follow DEPLOY.md. It needs Agentforce enabled; text and voice also need your own Twilio number and a small relay (channels/), and Slack needs the app created in your workspace from the manifest. Four Custom Labels carry your deployment's number, site URL and support address.
The process for requesting a disability accommodation is itself an accessibility barrier.
To get help you must first navigate a system designed by and for people without your disability. Find the policy. Learn its vocabulary. Hold a corporate login. Complete a form. And disclose something you may be afraid to disclose, to a stranger, in writing, in a language that may not be your first.
Cost usually isn't the barrier.
The film, 4 minutes 59 seconds, with every channel shown live: https://youtu.be/yleHLiwWRKA. A 26-second recording of trying the ask page: https://drive.google.com/file/d/13NApu8rq3MpJjuGG2yzKuJ2P02tKWwGx/view. A three-minute cut: https://drive.google.com/file/d/1Loqum6Kbk1noQazJDKrrVEnHzoU3biMD/view
| Evidence | Source |
|---|---|
| Across 655 large employers in 2025 the median share of staff who told their employer about a disability was 3.5%, and it did not rise. By 2026, 98% of them report accommodation programmes. | Disability:IN 2025 Disability Index and 2026 results |
| In 2025, 22.8% of Americans with a disability were employed against 65.2% without, and 30% of those working were part time against 17%. | US BLS, People with a Disability 2025, released 3 March 2026 |
| 61 of every 100 accommodations cost the employer nothing. Median one-time cost of the rest: $300. | JAN employer survey, 5,406 employers, Jan 2019 to Dec 2024 |
| More than a third of employed Canadians with a disability had an accommodation need go unmet in 2022. | Statistics Canada, Canadian Survey on Disability |
| The GC Workplace Accessibility Passport already implements "ask once, not forever", and only for federal public servants. | Government of Canada |
Curb Cut is an Agentforce agent whose principal is the worker, not the employer.
The hackathon deployment below is kept as a record of what judges tested. The demo org and its number retire with the hackathon; your install has its own addresses on every row.
| Surface | Address | State |
|---|---|---|
| Web | https://curbcut-dev-ed.develop.my.salesforce-sites.com/curbcut | live |
| Ask (the whole flow, no phone) | /curbcut/ask | live |
| Privacy | /curbcut/privacy | live |
| Terms | /curbcut/terms | live |
| SMS | a Twilio number the deployment owns | live, through a relay we run beside the org |
| Voice | the same Twilio number | built, speech in and out |
inbound service CurbCutInbound, address in Setup → Email Services | live | |
| Slack | node channels/slack-app.mjs, Socket Mode, DM only, never sends | live in a real workspace; manifest in channels/slack-manifest.json |
| Agent | Curb_Cut v7, Curb_Cut_Desk v5 | both active |
| Console (internal) | /lightning/app/Curb_Cut_Console, home tab /lightning/n/Curb_Cut_Home, org login needed | live |
| Why now | /curbcut/why | live |
| Messaging programme | /curbcut/messaging | live |
| MCP server | node channels/mcp-server.mjs | 5 tools, none of which can send |
| Any relay or assistant | POST /services/apexrest/curbcut/v1/message/ | one door every channel above shares |
The console is the half of this that nobody demos. Every promise the assistant makes about a person reaching a human being is worthless unless a human being has somewhere to stand. Human_Handoff__c was creating records that said "a person is picking this up" with no surface for that person.
| Console surface | What it is for |
|---|---|
| On Duty (app home) | Three queues in the order they should be worked, with standing orders above them |
| Waiting for a person | Someone asked for a human and is currently getting silence |
| Awaiting a decision | Approved requests an employer has not answered, nearest deadline first |
| Needs an interpreter | Signed video, waiting on a person, never machine translated |
| Curb Cut Overview (dashboard) | Where the system is failing people, in five panels |
| Record feeds | Two people often work one request, so the conversation lives on the record |
Nothing in the console shows a diagnosis, because there is no field for one. An operator who is asked what a person has can only answer that nobody knows and nobody can find out.
Reachable_By__c accepts a message channel or email, and the code refuses a telephone number.Nothing below is asserted from memory. Each number is the output of the command beside it, and tests/sync_counts.py rewrites the published counts from the invariant suite's own output so they cannot drift.
147 Apex tests sf apex run test -o curbcut -l RunLocalTests
554 structural invariants python3 tests/invariants.py ~1s, no org 517 accessibility checks python3 tests/a11y_audit.py against the live pages 122 Sa11y checks npm run test:a11y Salesforce's own axe-core matcher 34 accessibility-tree checks node tests/ax_tree_audit.mjs what a screen reader is handed 34 controls by keyboard node tests/keyboard_walk.mjs real Tab presses; set CURB_CUT_SITE 21 responsible-AI checks python3 tests/rai_self_check.py against Salesforce's five guidelines 28 contrast checks python3 tests/contrast_audit.py both themes, from the tokens 16 reading-level checks python3 tests/reading_level_audit.py 76 link and copy checks python3 tests/link_and_copy_audit.py 23/23 adversarial assertions node tests/headless_agent_api.mjs && python3 tests/score_adversarial.py
Two of those suites break their own checks on purpose and assert each one goes red (--selftest). A suite that cannot fail proves nothing about the code it passes. The adversarial suite once scored 21 of 23, and both failures were published with their transcripts rather than averaged away; the agent's refusal wording and the scorer have since converged, and the suite passes whole. The habit stands: a miss gets reported, never smoothed.
| Path | What |
|---|---|
force-app/main/default/objects/ | 9 objects, 61 fields, 31 list views, and no field for a diagnosis |
force-app/main/default/classes/ | 19 Apex classes + 15 test classes |
force-app/main/default/lwc/ | 5 Lightning Web Components, each with a Sa11y suite beside it |
force-app/main/default/aiAuthoringBundles/ | two Agent Scripts: Curb_Cut public, Curb_Cut_Desk internal |
force-app/main/default/pages/ components/ sites/ | the public site, six pages, anonymous |
force-app/main/default/emailservices/ | inbound email channel |
force-app/main/default/applications/ tabs/ flexipages/ | the internal console |
force-app/main/default/reports/ dashboards/ | five reports and the overview dashboard, no names anywhere |
channels/ | SMS + voice relay, Slack app (Socket Mode), MCP server, Twilio configuration |
tests/ | the twelve suites above, plus screen_reader_walk.mjs, which writes docs/SCREEN-READER-WALK.md |
deck/ | the deck as source; the built copy lives in docs/hackathon/ |
docs/hackathon/ | the September 2026 hackathon record: judge guides, reflections, deck, stills |
legal/ | privacy and terms source |
docs/ | architecture, BRD, evidence, audience, decisions, the two audit reports |
Start with docs/ARCHITECTURE.md, then CRITIQUE.md, which is where the honest list of what is still weak lives.
| Document | Purpose |
|---|---|
docs/ARCHITECTURE.md | How it fits together, with diagrams |
docs/BRD.md | Business requirements and traceability |
docs/ROADMAP.md | What is next, and what was rejected |
docs/DECISIONS.md | Every significant call and why |
docs/EVIDENCE.md | Every public figure, with source, denominator and caveat |
docs/AGENT-INTERFACES.md | Headless, MCP, agent-to-agent, and the profile we will not build |
CRITIQUE.md | What is still wrong |
FINDINGS.md | Adversarial run results |
CI.md | Pipeline and invariants |
DEPLOY.md | Deployment |
Built by Parth Sevak. Welland, Ontario, Canada. Agentforce for Good, Dreamforce 2026 · Builder Track · Abilityforce.
Apache 2.0. The accommodation library ships in the repo with a source citation on every row. Use it, fork it, run it in your own org.