ACGTI Anime Persona Quiz
Skill by ara.so — Daily 2026 Skills collection.
ACGTI (ACG Type Indicator) is a purely client-side Vue 3 + TypeScript quiz that maps 39 seven-point Likert-scale questions onto four MBTI dimensions (E/I, S/N, T/F, J/P), matches the result to one of 8 anime archetypes, and then selects a specific anime character from a 40+ entry database. No backend, no user data collection — everything runs in the browser.
Installation & Local Development
The dist/ folder uses base: './' (relative paths), so it deploys directly to any static host.
Project Architecture
Core Types (src/types/quiz.ts)
Understanding these types is essential before touching any data file or engine logic.
Scoring Engine (src/utils/quizEngine.ts)
The engine is a pure function pipeline — ideal extension point.
Adding a New Character
Edit src/data/characters.json — append one object following the schema:
Then add the matching visual entry to src/data/characterVisuals.json:
And an optional prior probability in src/data/characterProbabilities.json:
Rules:
•idmust be unique and kebab-case.
•mbtiTypemust be one of the 16 standard types.
•archetypeIdmust match anidinarchetypes.json.
•statsvalues are integers 0–100.
Adding New Quiz Questions
Edit src/data/questions.json — append to the array:
Guidelines:
idmust be unique and increment sequentially.dimensionis one of"EI" | "SN" | "TF" | "JP".archetypeWeightskeys must match all 8 archetypeidvalues; weights range -3 to +3.- Positive weight = answer "strongly agree" nudges toward that archetype.
- Keep question text in Chinese (Simplified) to match existing copy.
Modifying Archetypes (src/data/archetypes.json)
Each MBTI type (16 total) should appear in exactly one archetype's
mbtiTypesarray. The engine uses a first-match lookup — gaps cause a fallback toarchetypes[0].
useQuiz Composable (state management)
Share / Export Poster (useShare)
Routing (src/router/index.ts)
Navigate programmatically after quiz completion:
localStorage Utilities (src/utils/storage.ts)
Deployment
Cloudflare Pages (recommended)
- Connect GitHub repo → Cloudflare Pages dashboard.
- Build command:
npm run build - Build output directory:
dist - No environment variables required (pure frontend).
GitHub Actions CI
The repo includes a workflow that runs on every push to main/dev and on PRs:


