English | Simplified Chinese
An open-source, locally-runnable component for the ManuBTI cultural-lens quiz β a 12-question self-assessment that maps a person onto one of 27 combined worldviews drawn from the medical traditions of six Chinese ethnic minorities (Tibetan, Mongolian, Uyghur, Dai, Miao, Zhuang).
Which ethnic tradition's worldview resonates with your soul?
Manu is a cultural-education project that explores how the medical worldviews of six Chinese ethnic minorities β Tibetan, Mongolian, Uyghur, Dai, Miao, and Zhuang β offer distinct lenses on human temperament, health, and connection to the natural world.
ManuBTI is a cultural lens, not a personality test, not a medical assessment. The 27 results are short literary portraits blending imagery from the six traditions.
This repo packages just the quiz. The complete Manu website β Six Lenses flip cards + ManuBTI quiz + an AI cultural-guide chat β is live at manu6lenses.win (free, no sign-up). Source code: Qinging-wu/manu-6lenses.
This repository packages ManuBTI as a standalone, zero-dependency, zero-build static component. Drop the files into any web project and you get a working cultural-lens quiz:
- π Run it locally β open
index.htmldirectly or serve the folder - π¦ Embed it β copy
index.html+styles.css+data.js+quiz.jsinto your own page - π Learn from it / fork it β every question, type, and personality
portrait lives in plain JavaScript objects inside
data.js
The quiz content (questions and personality portraits) is the original
cultural-educational work of Qinging_267 (GitHub: Qinging-wu) and is
licensed under CC BY 4.0. See CONTENT_LICENSE.md and SOURCE.md.
| Included here | Notes |
|---|---|
| ManuBTI 12-question quiz | β complete |
| Today's ManuBTI persistent card | β included |
| cultural deep-dive page | β not included |
| Network calls | β zero |
| Dependencies | β zero |
| Build step | β zero |
Any static server works:
cd manubti
python -m http.server 8000
# open http://localhost:8000/Or just double-click index.html β pure static, no server needed.
The bundled scripts/start.{sh,cmd} scripts do the same thing plus
auto-open the demo in your default browser:
Important
Prerequisite for the bundled start scripts: install Node.js 14 or
newer, including npm and npx. On the first run, npx downloads
http-server from the npm registry, so an internet connection and access
to the registry are required. If npm is unavailable or blocked by a proxy,
double-click index.html or use another static server instead.
# macOS / Linux / WSL
bash scripts/start.sh 8765
# Windows
cmd /c "scripts\start.cmd 8765"They walk ports 8765..8769, start npx http-server, verify the demo
serves, and print the URL on stdout.
<link rel="stylesheet" href="path/to/manubti/styles.css" />
<!-- entry card -->
<div id="bttiEntry" class="btti-entry" style="cursor:pointer">
<div class="btti-icon">πΏ</div>
<div class="btti-title">Discover Your ManuBTI</div>
<div class="btti-sub">12 questions Β· 3 minutes</div>
</div>
<!-- quiz overlay -->
<div class="quiz-overlay" id="quizOverlay">
<div class="quiz-panel">
<div class="quiz-progress-wrap">
<div class="quiz-progress-text" id="quizProgressText">1 / 12</div>
<div class="quiz-progress-bar">
<div class="quiz-progress-fill" id="quizProgressFill" style="width:8%"></div>
</div>
</div>
<div class="quiz-content" id="quizContent"></div>
</div>
</div>
<!-- today's result card (optional) -->
<div class="today-card" id="todayCard">
<div class="today-emoji" id="todayEmoji"></div>
<div class="today-info">
<div class="today-label">Today's ManuBTI</div>
<div class="today-name" id="todayName"></div>
<div class="today-subs" id="todaySubs"></div>
</div>
<button class="today-close">β</button>
</div>
<script src="path/to/manubti/data.js"></script>
<script src="path/to/manubti/quiz.js"></script>quiz.js auto-binds #bttiEntry's click on DOMContentLoaded and opens
the quiz overlay. No further wiring required.
import { DIMENSIONS, QUESTIONS, PERSONALITIES } from 'manubti/data.js';
// Then write your own React/Vue/etc. component, render QUESTIONS as a
// form, look up results in PERSONALITIES.Note:
data.jsandquiz.jscurrently load as classic<script>tags and exposewindow.MANU_DATA/window.MANU_QUIZ. For ES Module usage, change the IIFEs toexports.
ManuBTI's three dimensions (rhythm, temperature, connection) are inspired by the medical traditions of six Chinese ethnic minorities β each a living system of diagnosis, therapy, and philosophy shaped over centuries:
| Tradition | English | Key concept |
|---|---|---|
| ποΈ Tibetan | Tibetan Β· Sowa Rigpa | Three energies (rlung / tripa / beken), especially rlung wind |
| π Mongolian | Mongolian Β· Mongol Emnelge | Three roots (Hei / Hiri / Badagan), steppe rhythms |
| π« Uyghur | Uyghur Β· Uyghur Tibbi | Four humours & temperaments, Silk Road synthesis |
| πΏ Dai | Dai Β· Tai Lue Medicine | Four elements (wind / fire / water / earth), tropical rhythms |
| πΊ Miao | Miao Β· Hmong Medicine | Cold / hot duality, mountain-folk individuality |
| πΎ Zhuang | Zhuang Β· Cuengh Medicine | "Three passages & two roads" of qi, blood, sensation |
One of the world's oldest systematized medical traditions, codified in the Four Tantras (rGyud bZhi, 8thβ12th century). It views health as the equilibrium of three nyes pa (energies): rlung (wind β movement and mind), mkhris pa (bile β metabolism and heat), and bad kan (phlegm β structure and stability). Diagnosis relies on pulse reading, urine analysis, and tongue examination. Therapies span behavioral adjustment, dietary regulation, herbal compounds, and external treatments (moxibustion, cupping, medicinal baths). In ManuBTI, rlung is the central metaphor β it governs the rhythm dimension as the wind that animates all things.
Rooted in nomadic life on the steppe, Mongolian medicine shares a common theoretical base with Tibetan Sowa Rigpa β the three roots (Hei / Hiri / Badagan) and five elements β but developed its own character through pastoral empiricism. It places special emphasis on digestive fire as the gatekeeper of health, and its pharmacopoeia draws heavily from steppe flora, minerals, and animal products. Bone-setting, bloodletting, cupping, and moxibustion are signature therapies. In ManuBTI, the Mongolian lens represents the steppe archetype β vast, rhythmic, self-reliant.
A Silk Road synthesis that fused Greco-Arabic Unani (Ionian) medicine β itself heir to Hippocrates and Galen β with Persian, Arabic, and Central Asian knowledge. It organizes health around four humours (blood, phlegm, yellow bile, black bile) and four temperaments (hot, cold, dry, moist), diagnosing through pulse, tongue, and temperament assessment. Herbal formulas, dietary regulation, and cupping (hijama) are central. In ManuBTI, the Uyghur lens anchors the temperature dimension β the desert's blazing heat and the glacier's lucid cold.
Shaped by the tropical environment of Xishuangbanna and informed by Theravada Buddhist medical texts, Dai medicine sees the body through four elements (wind, fire, water, earth) whose balance is easily disrupted by seasonal shifts, humidity, and diet. Its diagnostic repertoire includes elemental-pulse reading and seasonal health calendars. Signature therapies include herbal steam baths, medicated compresses, and elemental-restorative diets. In ManuBTI, the Dai lens brings the water archetype β fluid, adaptive, nourishing.
An oral-tradition system preserved across mountain migrations over millennia, Miao medicine is built on a cold / hot dualism that governs both disease classification and herbal prescription. It is fiercely individualized β two people with the same symptom may receive different treatments based on constitution, season, and environment. Miao healers maintain an extensive herbal pharmacopoeia and are renowned for trauma care, bone-setting, and toxicology. In ManuBTI, the Miao lens embodies the lone walker β independent, observant, at home in the deep mountains.
Indigenous to the Guangxi region, Zhuang medicine is structured around the "three passages and two roads" β the qi passage, grain passage, water passage; the dragon road and fire road. Health depends on unobstructed flow through these channels. Its unique diagnostic method of visual inspection of the palpebral conjunctiva (eye diagnosis) is distinctive among medical systems. Therapies include medicated-thread moxibustion, herbal baths, and acupuncture points specific to Zhuang anatomy. In ManuBTI, the Zhuang lens defines the bridge builder β connecting qi, blood, sensation, and people.
Each tradition gives a different lens on the same human experience. The quiz maps you onto a blend of all six β one rhythm, one temperature, one connection β creating 27 possible worldviews.
The 12 questions split into three fixed blocks:
| Q# | Dimension | Option keys |
|---|---|---|
| Q1βQ4 | rhythm | wind / mountain / steppe |
| Q5βQ8 | temperature | desertFlame / glacierSage / riverBreeze |
| Q9βQ12 | connection | bridgeBuilder / riverWeaver / loneWalker |
Per question, the chosen option's index increments that dimension's score. After Q12:
argmaxeach dimension's[0, 0, 0](ties go to the lower index, matchingindexOfbehaviour)- Concatenate the three winning keys β
rhythm-temperature-connection - Look up that key in
PERSONALITIES(all 27 keys are defined)
Example: wind-desertFlame-bridgeBuilder β Prairie Fire Wind Β· π₯
manubti/
βββ README.md β you are here
βββ README.zh-CN.md β Simplified Chinese documentation
βββ LICENSE β MIT software license
βββ CONTENT_LICENSE.md β CC BY 4.0 quiz-content license
βββ SOURCE.md β creator attribution
βββ SKILL.md β portable Agent Skill entry
βββ AGENTS.md β project-level agent instructions
βββ agents/
β βββ openai.yaml β Codex / ChatGPT desktop metadata
βββ .cursor/
β βββ rules/
β βββ manubti.mdc β Cursor IDE rule
βββ index.html β single-file demo page
βββ styles.css β overlay / progress / result styles
βββ data.js β DIMENSIONS + QUESTIONS + PERSONALITIES
βββ quiz.js β openQuiz / renderQuestion / handleAnswer / showResult
βββ package.json β `npm start` one-liner
βββ scripts/
βββ start.sh β POSIX (macOS / Linux / WSL)
βββ start.cmd β Windows cmd
βββ stop.sh β POSIX shutdown
βββ stop.cmd β Windows shutdown
This skill is deliberately shell-only (start a static HTTP server, open the URL in the user's default browser). It works with any agent framework that can spawn a process.
The repo itself is the skill directory β copy or symlink it into your agent's skills folder, or just open the repo in your IDE. Each framework discovers the skill differently:
OpenCode note:
.opencode/skill/(singular) is a legacy location and is not discovered as a Skill. Use.opencode/skills/(plural).
Important
Agent-driven and manual startup through scripts/start.{sh,cmd} requires
Node.js 14+ with npm/npx. The first run downloads http-server
from npm and therefore requires network access to the npm registry.
| Framework | How it discovers the skill | What you do |
|---|---|---|
| OpenCode | Reads .opencode/skills/<name>/SKILL.md and Claude-compatible skill paths |
Symlink or copy this repo into .opencode/skills/manubti/, then say run manubti locally |
| Claude Code | Reads SKILL.md in .claude/skills/<name>/ |
Symlink or copy this repo into .claude/skills/manubti/, then say manubti |
| Codex / ChatGPT desktop | Reads .agents/skills/<name>/SKILL.md; Codex also reads project AGENTS.md |
Install under .agents/skills/manubti/, or open this repo directly |
| Cursor | Reads .cursor/skills/<name>/SKILL.md; this repo also includes a project rule |
Install under .cursor/skills/manubti/, or open this repo directly |
| Aider / Continue / Cline | Reads AGENTS.md at project root |
Open this repo; the agent follows AGENTS.md. Say run manubti locally |
| Manual | No framework needed | Run bash scripts/start.sh (macOS/Linux) or cmd /c scripts\start.cmd (Windows) directly in terminal |
The examples below use POSIX symlinks. On Windows PowerShell, create the
parent directory and replace ln -s SOURCE DESTINATION with:
New-Item -ItemType Junction -Path "DESTINATION" -Target (Resolve-Path "SOURCE")# User-wide installation
mkdir -p ~/.config/opencode/skills
ln -s "$(pwd)" ~/.config/opencode/skills/manubti
# Or install for one project
mkdir -p /path/to/project/.opencode/skills
ln -s "$(pwd)" /path/to/project/.opencode/skills/manubtiThen in OpenCode, say: run manubti locally.
# Symlink into Claude Code's skill directory
mkdir -p ~/.claude/skills
ln -s "$(pwd)" ~/.claude/skills/manubtiThen in any Claude Code session, say: manubti or run manubti locally.
# User-wide installation
mkdir -p ~/.agents/skills
ln -s "$(pwd)" ~/.agents/skills/manubti
# Or install for one repository
mkdir -p /path/to/project/.agents/skills
ln -s "$(pwd)" /path/to/project/.agents/skills/manubtiCodex can also open this repository directly and follow its root AGENTS.md.
Say: start the local ManuBTI.
# User-wide installation
mkdir -p ~/.cursor/skills
ln -s "$(pwd)" ~/.cursor/skills/manubti
# Or install for one project
mkdir -p /path/to/project/.cursor/skills
ln -s "$(pwd)" /path/to/project/.cursor/skills/manubtiYou can also open this repository directly. Its .cursor/rules/manubti.mdc
is an agent-requested project rule, and its root AGENTS.md supplies the
same safe workflow.
Important
The commands below require Node.js 14+ with npm/npx. On first use,
npx downloads http-server from npm. If that download is unavailable,
use the index.html option shown below.
# macOS / Linux / WSL
cd manubti
bash scripts/start.sh 8765
# Windows
cd manubti
scripts\start.cmd 8765
# Or just double-click index.htmlAll frameworks respond to the same keywords:
- English:
run manubti locally/start the local ManuBTI - Short:
manubti
- Starts a local HTTP server on port 8765 (walks to 8769 if busy)
- Verifies the demo page serves correctly
- Opens the URL in your default browser
- Prints the URL and waits β you click through the quiz yourself
- If you voluntarily paste back your result, the agent looks up the matching personality portrait from
data.jsand reads it to you
- β No
browser_*/ Playwright / MCP page automation - β No page DOM scraping
- β No prompting the user to paste the result back
- β No translation of the Chinese question text
- β No external API calls β the result lookup is deterministic against
data.js - β
Run
scripts/start.{sh,cmd}(preferred) or inline shell, hand the URL to the user - β
If the user volunteers a result, look up
descverbatim fromdata.jsPERSONALITIES
Important
Install Node.js 14+ with npm/npx before using these scripts.
Their first run downloads http-server from npm, so access to the npm
registry is required.
# macOS / Linux / WSL
bash scripts/start.sh 8765
# Windows
cmd /c "scripts\start.cmd 8765"The script:
- walks ports 8765..8769 for a free one
- starts
npx http-serverin the background - verifies the demo HTML responds with
bttiTitle - opens the URL in the user's default browser
- prints the URL on the last line of stdout
# macOS / Linux / WSL
bash scripts/stop.sh 8765
# Windows
cmd /c "scripts\stop.cmd 8765"The server can also simply be killed with Ctrl+C if started manually.
- i18n β English UI + question text (auto-detected from browser, toggleable)
- English literary transcreations of all 27 personality portraits (
desc_en) - ES Module export (
export const DIMENSIONS = ...) - React / Vue wrapper components
- JSON Schema validation for the question bank
- Unit tests for the scoring algorithm
- The quiz content (questions, types, 27 personality portraits) is the
original cultural-educational work of Qinging_267 (GitHub:
Qinging-wu), released under CC BY 4.0. - The code in this repository is released under MIT β see
LICENSE. - Goal of this port: let anyone use, study, and embed ManuBTI offline.
Software code, styles, agent instructions, and launcher scripts are licensed under the MIT License.
The 12 questions, answer-option text, and 27 personality portraits embedded
in data.js are original works by Qinging_267 and are licensed under
CC BY 4.0. Reusers must credit the creator, link the
license, and indicate changes.
Questions are always posed culturally, not medically. Manu is a cultural-education product β never health advice.
