Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

manubti

ManuBTI mascot Β· ζ›Όζ›Ό

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.

🌐 Want the full experience?

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.


What this is

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.html directly or serve the folder
  • πŸ“¦ Embed it β€” copy index.html + styles.css + data.js + quiz.js into 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.

What this is not

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

Quick start

1. Run the local demo

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.

2. Embed in your own page

<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.

3. Use as an npm / ES Module

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.js and quiz.js currently load as classic <script> tags and expose window.MANU_DATA / window.MANU_QUIZ. For ES Module usage, change the IIFEs to exports.


The six traditions

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

πŸ”οΈ Tibetan (Sowa Rigpa)

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.

🐎 Mongolian (Mongol Emnelge)

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.

🐫 Uyghur (Uyghur Tibbi)

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.

🌿 Dai (Tai Lue Medicine)

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.

🌺 Miao (Hmong Medicine)

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.

🌾 Zhuang (Cuengh Medicine)

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.


Scoring rules

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:

  1. argmax each dimension's [0, 0, 0] (ties go to the lower index, matching indexOf behaviour)
  2. Concatenate the three winning keys β†’ rhythm-temperature-connection
  3. Look up that key in PERSONALITIES (all 27 keys are defined)

Example: wind-desertFlame-bridgeBuilder β†’ Prairie Fire Wind Β· πŸ”₯


File layout

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

Agent framework compatibility

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")

Per-framework setup

OpenCode

# 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/manubti

Then in OpenCode, say: run manubti locally.

Claude Code

# Symlink into Claude Code's skill directory
mkdir -p ~/.claude/skills
ln -s "$(pwd)" ~/.claude/skills/manubti

Then in any Claude Code session, say: manubti or run manubti locally.

Codex / ChatGPT desktop

# 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/manubti

Codex can also open this repository directly and follow its root AGENTS.md. Say: start the local ManuBTI.

Cursor

# 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/manubti

You 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.

Manual (no agent)

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.html

Agent trigger keywords

All frameworks respond to the same keywords:

  • English: run manubti locally / start the local ManuBTI
  • Short: manubti

How the agent behaves

  1. Starts a local HTTP server on port 8765 (walks to 8769 if busy)
  2. Verifies the demo page serves correctly
  3. Opens the URL in your default browser
  4. Prints the URL and waits β€” you click through the quiz yourself
  5. If you voluntarily paste back your result, the agent looks up the matching personality portrait from data.js and reads it to you

Universal constraints (every framework)

  • ❌ 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 desc verbatim from data.js PERSONALITIES

Cross-platform start

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:

  1. walks ports 8765..8769 for a free one
  2. starts npx http-server in the background
  3. verifies the demo HTML responds with bttiTitle
  4. opens the URL in the user's default browser
  5. prints the URL on the last line of stdout

Cross-platform stop

# 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.


Roadmap

  • 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

Credits

  • 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.

License

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.

About

A 12-question cultural-lens quiz exploring 27 worldviews inspired by six Chinese ethnic medical traditions.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages