@leumas adapter
Personality & psychometrics pack: score self-report questionnaires and look up types across the five most-used psychology frameworks — MBTI / Myers-Briggs (16 personality types, four dichotomies E/I...
@leumas adapter — personality
Psychometric-frameworks capability pack. Score self-report personality questionnaires and look up types across the five most-used psychology frameworks, then compare two types for heuristic compatibility. Pure, deterministic, zero npm dependencies (Node built-ins only). All framework data lives in data/frameworks.json.
Frameworks covered
| Key | Framework | Output |
|---|---|---|
mbti | Myers–Briggs Type Indicator | 4-letter type (e.g. INTJ) + per-axis breakdown |
enneagram | Enneagram of Personality | type 1–9 + wing (e.g. 4w5) + ranked scores |
bigFive | Big Five / OCEAN (five-factor) | percentile scores for O, C, E, A, N |
disc | DISC assessment | primary/secondary style (e.g. DI) + percentages |
loveLanguage | The Five Love Languages | primary language + ranked profile |
Tools
systems()— list every supported framework and its question count.questions({ system })— the quiz items for one system (to render a form).mbti({ answers })— score answers → 4-letter MBTI type + description, strengths, careers, breakdown.enneagram({ answers })— score answers → Enneagram type + wing + core desire/fear + ranked scores.bigFive({ answers })— score answers → OCEAN percentile scores + level (low/moderate/high) + descriptions.loveLanguage({ answers })— score answers → primary love language + ranked profile + tips.disc({ answers })— score answers → primary/secondary DISC style + percentage profile.typeInfo({ system, type })— rich lookup: description, strengths, weaknesses/watch-outs, careers.compatibility({ system, typeA, typeB })— heuristic compatibility score + factors (guidance, not prediction).
Every tool takes ONE args object (so an HTTP POST body maps 1:1) and returns a plain JSON object.
Answer shapes
answers accepts either an array aligned to questions(system).questions, or an object keyed by question id. Values may be a 1–5 Likert number, a boolean, or an agree/disagree string (also strongly agree, neutral, yes/no, etc.). Unanswered items are simply skipped.
import personality from './index.js';
// 1. get the items to show the user
const quiz = personality.adapters.questions({ system: 'mbti' });
// 2. score their answers (id-keyed here; an aligned array works too)
const result = personality.adapters.mbti({
answers: { ei1: 5, ei3: 4, sn2: 5, sn4: 4, tf1: 5, tf3: 4, jp1: 5, jp3: 4 },
});
// -> { system: 'mbti', type: 'ENTJ', nickname: 'The Commander', description, strengths, careers, breakdown }
// 3. describe a type / compare two types
personality.adapters.typeInfo({ system: 'enneagram', type: 4 });
personality.adapters.compatibility({ system: 'mbti', typeA: 'INTJ', typeB: 'ENFP' });
DRY boundary
This pack is psychometrics — evidence-derived self-report frameworks with data-driven scoring that depend only on a person's own answers. It deliberately does not overlap the ecosystem's mystic / entertainment packs:
astrology— zodiac, natal charts, horoscopes (sign/date-based divination).numerology— life-path / expression numbers from a name and birthdate.
There is no sign, date, or name math here, and none of those packs score questionnaires. If you need personality from answers, use personality; if you want zodiac/numerology novelty, use those.
Notes
- Deterministic: the same answers always produce the same result; ties resolve by a stable,
documented order (MBTI ties favor the first pole; Enneagram/DISC/love-language ties favor the declared item order).
- Not clinical. Results are for self-reflection, team-building, and guidance — not diagnosis or
prediction. Compatibility scores are heuristic.