{"id":"550503e1-fb65-4966-b067-0ebce33abe49","shortId":"9FfjXm","kind":"skill","title":"lovstudio:xbti-creator","tagline":"Create a complete custom BTI personality test (like LBTI, FBTI, etc.) based on the XBTI architecture. User provides a theme name and preferences, AI generates all content: dimensions, questions, personality types, descriptions, and avatar images via lovstudio:image-creator. Trigg","description":"# xbti-creator — Create Your Own BTI Personality Test\n\nGenerate a complete, deployable BTI personality test website from a theme and preferences.\nBased on the proven XBTI architecture (React + Vite), with AI-generated content.\n\n## When to Use\n\n- User wants to create a themed personality test (e.g., LBTI for lobsters, FBTI for founders)\n- User says \"创建一个XX人格测试\" or \"make a custom BTI\"\n\n## Workflow (MANDATORY)\n\n### Step 1: Collect Theme Info\n\n**Use `AskUserQuestion` to gather:**\n\n| Field | Example | Required |\n|-------|---------|----------|\n| BTI名称 | LBTI | Yes |\n| 主题 | 龙虾的人格分析 | Yes |\n| 风格偏好 | 幽默毒舌 / 温暖治愈 / 学术严肃 | Yes |\n| 人格数量 | 16-25（默认20） | No |\n| 特殊彩蛋人格 | 有/无（默认有） | No |\n| 项目目录 | 默认 ~/projects/{NAME} | No |\n| 提交到 Gallery | 是/否（默认否）— 提交到 xbti.lovstudio.ai 供他人体验 | No |\n\n### Step 2: Environment Setup\n\nAfter collecting user input, silently check and auto-fix the environment:\n\n```bash\n# 1. Node.js (required)\nnode --version  # Need 18+\n\n# 2. Detect package manager\ncommand -v pnpm && echo \"USE_PM=pnpm\" || command -v bun && echo \"USE_PM=bun\" || echo \"USE_PM=npm\"\n\n# 3. git\ngit --version\n\n# 4. image-creator skill\nls ~/.claude/skills/lovstudio-image-creator/gen_image.py 2>/dev/null && echo \"OK\" || echo \"MISSING\"\n\n# 5. Zenmux API key\n[ -n \"$ZENMUX_API_KEY\" ] && echo \"OK\" || echo \"MISSING\"\n\n# 6. Python deps\npython3 -c \"import google.genai; from PIL import Image\" 2>/dev/null && echo \"OK\" || echo \"MISSING\"\n```\n\n**Auto-fix (no user interaction needed for these):**\n\n- `lovstudio:image-creator` missing →\n  ```bash\n  npx skills add lovstudio/skills --skill lovstudio:image-creator\n  ```\n- Python deps missing →\n  ```bash\n  pip install google-genai Pillow --break-system-packages 2>/dev/null || pip3 install google-genai Pillow\n  ```\n\n**Require user input only if truly blocked:**\n\n- Node.js missing → tell user to install and stop\n- `ZENMUX_API_KEY` missing → ask user to provide it:\n  1. 注册 Zenmux: https://zenmux.ai/invite/K6KT2X (邀请码，有免费额度)\n  2. 获取 API Key: https://zenmux.ai/settings/keys\n  3. 设置: `export ZENMUX_API_KEY=\"your-key\"` (建议加到 ~/.zshrc)\n\n**Do NOT proceed to Step 3 until environment is fully ready.**\n\n### Step 3: Design Dimension System\n\nBased on the theme, design **5 维度模型**, each with **3 子维度** = 15 dimensions total.\n\n**Rules:**\n- Dimension names must be thematic (e.g., for lobster BTI: \"钳力模型\", \"深海适应模型\")\n- Each sub-dimension measures a distinct aspect on a L/M/H scale\n- Keep dimension IDs short: D1-D15 or thematic prefixes (C1, C2, C3, S1, S2, S3...)\n- Write L/M/H explanations for each dimension (one-line, matching the BTI's tone)\n\nOutput: `src/data/dimensions.js` — see `references/xbti-data-format.md` for exact format.\n\n### Step 4: Generate Questions\n\nGenerate **30 questions** (2 per dimension), each with **3 options** (value 1, 2, 3).\n\n**Rules:**\n- Questions must match the theme and tone\n- Option values: 1 = low on that dimension, 2 = medium, 3 = high\n- Mix question styles: direct statements, scenarios, hypotheticals\n- Include 1-2 memorable/funny questions per model for engagement\n- Optionally: add 1-2 special trigger questions for a hidden personality type\n\nOutput: `src/data/questions.js`\n\n### Step 5: Design Personality Types\n\nGenerate **16-25 personality types**, each with:\n\n| Field | Description |\n|-------|-------------|\n| `code` | 4-6 char English code (creative, memorable) |\n| `cn` | 2-3 char Chinese name |\n| `pattern` | 15-char L/M/H pattern matching the dimension system |\n| `intro` | One-line tagline (catchy, in-character) |\n| `desc` | 200-400 char personality description (match chosen tone) |\n\n**Rules:**\n- Codes should be thematic and creative (not generic like TYPE-A)\n- Patterns must cover the L/M/H space well — avoid clustering\n- Include 1 fallback type (for < 60% match) and optionally 1 hidden type\n- Descriptions should be entertaining and shareable — this is what goes viral\n\nOutput: `src/data/types.js`\n\n### Step 6: Scaffold the Project\n\nClone the XBTI template from GitHub and clean up:\n\n```bash\ngit clone https://github.com/lovstudio/XBTI.git {TARGET_DIR}\ncd {TARGET_DIR}\n\n# Remove origin-specific files, keep the engine\nrm -rf .git .vercel image/* CHANGELOG.md docs/\nmkdir -p image\ngit init\n\n# Fix packageManager field for user's environment\n# If user uses npm: remove the packageManager field entirely\n# If user uses bun: change to bun\n# If user uses pnpm: keep as-is\n```\n\n**packageManager handling** (important for portability):\n- The cloned `package.json` has `\"packageManager\": \"pnpm@x.y.z\"`\n- If user doesn't use pnpm, **remove this field** to avoid errors\n- Then run `{PM} install` with whatever package manager the user has\n\nThen overwrite the data files with generated content:\n- `src/data/dimensions.js`\n- `src/data/questions.js`\n- `src/data/types.js`\n\nUpdate branding in:\n- `index.html` — title, meta tags\n- `src/components/IntroScreen.jsx` — hero title, subtitle, attribution\n- `src/index.css` — theme colors (optional, ask user)\n- `package.json` — name, description, remove packageManager if needed\n\n**Keep `src/logic/scoring.js` as-is** — the algorithm is universal. Only update import paths if dimension IDs changed.\n\n### Step 7: Generate Avatar Images\n\nFor each personality type, programmatically generate an avatar image using the `lovstudio:image-creator` skill.\n\n**Prompt Crafting (nano-banana-pro style):**\n\nFor each personality type, craft a prompt optimized for stylized character generation:\n\n```\n[Subject: character visual based on personality], [Action/Pose],\n[Environment: thematic background], chibi style character,\ncute cartoon illustration, simple flat design, vibrant colors,\nwhite background, centered composition,\nbest quality, masterpiece, ultra high res, 8k\n```\n\nExamples:\n- CTRL (控制者): \"A confident chibi character with arms crossed, wearing a golden crown, standing on a glowing control panel with buttons and levers, chibi style, cute cartoon illustration, simple flat design, vibrant colors, white background, centered composition, best quality, masterpiece, 8k\"\n- DEAD (死者): \"A peaceful chibi ghost character floating with closed eyes, translucent body, surrounded by ZZZ symbols and stars, chibi style, cute cartoon illustration, simple flat design, soft muted colors, white background, centered composition, best quality, masterpiece, 8k\"\n\n**Generation Process:**\n\n1. Craft all prompts (one per personality type), present to user\n2. Ask user: \"先生成一个预览确认风格，还是直接批量生成全部？\"\n3. **Preview mode**: Generate one image, show result, iterate on prompt style if needed:\n   ```bash\n   python3 ~/.claude/skills/lovstudio-image-creator/gen_image.py \\\n     \"PROMPT_HERE\" \\\n     -o {TARGET_DIR}/image/{CODE}.png \\\n     -q medium --no-open\n   ```\n4. **Batch mode**: Once style confirmed, loop through all types:\n   ```bash\n   # For each personality type:\n   python3 ~/.claude/skills/lovstudio-image-creator/gen_image.py \\\n     \"PROMPT_FOR_TYPE\" \\\n     -o {TARGET_DIR}/image/{CODE}.png \\\n     -q medium --no-open\n   ```\n   Use `Read` tool to display each generated image to user for quick review.\n\n5. Verify all images exist:\n   ```bash\n   ls -la {TARGET_DIR}/image/\n   ```\n\n**IMPORTANT:** All image generation is fully automated via CLI — do NOT ask user to manually download or operate any web UI.\n\n### Step 8: Install & Launch\n\n```bash\ncd {TARGET_DIR}\n\n# Install dependencies with user's package manager\n{PM} install\n\n# Start dev server\n{PM} run dev\n# or: npx vite (universal fallback)\n```\n\nTell the user the dev server URL (usually http://localhost:5173) and invite them to test the full flow.\n\n### Step 9: Submit to XBTI Gallery (Optional)\n\n**Skip this step if user chose NOT to submit in Step 1.**\n\nIf user chose to submit, create a PR to `lovstudio/XBTI` repo:\n\n```bash\n# 1. Fork & clone the XBTI repo\ncd /tmp\ngh repo fork lovstudio/XBTI --clone\ncd XBTI\n\n# 2. Create case directory (follow existing structure: cases/sbti/, cases/cbti/)\nCASE_NAME=$(echo \"{BTI_NAME}\" | tr '[:upper:]' '[:lower:]')\nmkdir -p cases/${CASE_NAME}/images\n\n# 3. Copy data files + images\ncp {TARGET_DIR}/src/data/dimensions.js cases/${CASE_NAME}/\ncp {TARGET_DIR}/src/data/questions.js cases/${CASE_NAME}/\ncp {TARGET_DIR}/src/data/types.js cases/${CASE_NAME}/\ncp {TARGET_DIR}/image/*.png cases/${CASE_NAME}/images/\n\n# 4. Create index.js (re-export entry point, required by registry)\ncat > cases/${CASE_NAME}/index.js << EOF\nexport const meta = { id: '${CASE_NAME}', name: '${BTI_NAME}', desc: '${THEME}', author: '$(git config user.name)', authorUrl: '' };\nexport { dimensionMeta, dimensionOrder, DIM_EXPLANATIONS } from './dimensions.js';\nexport { questions } from './questions.js';\nexport { TYPE_LIBRARY, TYPE_IMAGES, NORMAL_TYPES } from './types.js';\nEOF\n\n# 5. Create case.json (combined metadata + data for static access)\n#    Use Node.js to merge all data into a single JSON file:\nnode -e \"\nconst dim = require('./cases/${CASE_NAME}/dimensions.js');\nconst q = require('./cases/${CASE_NAME}/questions.js');\nconst t = require('./cases/${CASE_NAME}/types.js');\nconst data = {\n  meta: { id: '${CASE_NAME}', name: '${BTI_NAME}', desc: '${THEME}', author: '$(git config user.name)', authorUrl: '' },\n  ...dim, ...q, ...t\n};\nrequire('fs').writeFileSync('./cases/${CASE_NAME}/case.json', JSON.stringify(data, null, 2));\n\"\n\n# 6. Update cases/registry.js — add import and entry\n#    Read current registry, add new import and array entry\n# 7. Update cases/index.json — add new case metadata entry\n\n# 8. Create PR\ngit checkout -b add-case/${CASE_NAME}\ngit add cases/${CASE_NAME} cases/registry.js cases/index.json\ngit commit -m \"feat: add ${BTI_NAME} case (${THEME})\"\ngit push origin add-case/${CASE_NAME}\ngh pr create \\\n  --repo lovstudio/XBTI \\\n  --title \"feat: add ${BTI_NAME} (${THEME})\" \\\n  --body \"$(cat <<'PREOF'\n## New BTI Case\n\n- **Name**: {BTI_NAME}\n- **Theme**: {THEME}\n- **Style**: {STYLE}\n- **Types**: {TYPE_COUNT} personality types\n\nGenerated with [xbti-creator](https://github.com/lovstudio/skills)\nPREOF\n)\"\n```\n\n**Update `cases/registry.js`:** Add `import * as {CASE_NAME} from './{CASE_NAME}';` and append to the CASES array.\n\n**Update `cases/index.json`:** Append `{\"id\":\"{CASE_NAME}\",\"name\":\"{BTI_NAME}\",\"desc\":\"{THEME}\",\"author\":\"...\",\"authorUrl\":\"...\"}` to the array.\n\nTell user the PR URL and that it will appear on xbti.lovstudio.ai after merge.\n\n```bash\n# Clean up\nrm -rf /tmp/XBTI\n```\n\n## Reference Files\n\n- `references/xbti-data-format.md` — exact data structure format for all files\n\n## Design Principles\n\n1. **Theme consistency** — every element (dimensions, questions, types, avatars) must feel thematic\n2. **Shareability** — personality descriptions should be entertaining enough to screenshot and share\n3. **Balance** — personality types should cover the spectrum, no type should feel \"objectively better\"\n4. **Humor** — even serious themes benefit from wit in the descriptions\n5. **Completeness** — the output should be a fully working, deployable website","tags":["xbti","creator","skills","lovstudio","agent-skills","ai-coding-assistant","cjk","claude-code","cursor","gemini-cli","markdown-to-docx","markdown-to-pdf"],"capabilities":["skill","source-lovstudio","skill-xbti-creator","topic-agent-skills","topic-ai-coding-assistant","topic-cjk","topic-claude-code","topic-cursor","topic-gemini-cli","topic-markdown-to-docx","topic-markdown-to-pdf"],"categories":["skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/lovstudio/skills/xbti-creator","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add lovstudio/skills","source_repo":"https://github.com/lovstudio/skills","install_from":"skills.sh"}},"qualityScore":"0.469","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 39 github stars · SKILL.md body (10,858 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-21T01:36:56.767Z","embedding":null,"createdAt":"2026-04-18T22:19:12.971Z","updatedAt":"2026-04-21T01:36:56.767Z","lastSeenAt":"2026-04-21T01:36:56.767Z","tsv":"'-2':481,491 '-25':134,509 '-3':526 '-400':550 '-6':518 '/.claude/skills/lovstudio-image-creator/gen_image.py':212,954,984 '/.zshrc':343 '/case.json':1316 '/cases':1273,1280,1287,1313 '/dev/null':214,243,287 '/dimensions.js':1233,1276 '/image':960,991,1022,1188 '/images':1158,1193 '/index.js':1209 '/invite/k6kt2x':323 '/lovstudio/skills)':1416 '/lovstudio/xbti.git':623 '/projects':144 '/questions.js':1237,1283 '/settings/keys':332 '/src/data/dimensions.js':1167 '/src/data/questions.js':1174 '/src/data/types.js':1181 '/tmp':1128 '/tmp/xbti':1469 '/types.js':1246,1290 '1':110,173,318,450,463,480,490,580,588,922,1108,1121,1482 '15':371,531 '16':133,508 '18':179 '2':157,180,213,242,286,326,442,451,468,525,933,1136,1320,1494 '200':549 '3':202,333,349,356,369,447,452,470,938,1159,1506 '30':440 '4':206,436,517,968,1194,1520 '5':219,365,503,1012,1248,1531 '5173':1081 '6':231,605,1321 '60':584 '7':769,1337 '8':1045,1345 '8k':839,881,919 '9':1091 'access':1256 'action/pose':814 'add':265,489,1324,1331,1340,1352,1357,1367,1376,1387,1420 'add-cas':1351,1375 'ai':28,78 'ai-gener':77 'algorithm':757 'api':221,225,310,328,337 'appear':1459 'append':1429,1436 'architectur':20,73 'arm':848 'array':1335,1433,1449 'as-i':677,753 'ask':313,742,934,1034 'askuserquest':115 'aspect':393 'attribut':737 'author':1222,1302,1445 'authorurl':1226,1306,1446 'auto':168,249 'auto-fix':167,248 'autom':1029 'avatar':38,771,780,1490 'avoid':577,702 'b':1350 'background':817,830,875,913 'balanc':1507 'banana':793 'base':16,68,360,811 'bash':172,262,275,618,952,978,1017,1048,1120,1464 'batch':969 'benefit':1525 'best':833,878,916 'better':1519 'block':300 'bodi':894,1391 'brand':727 'break':283 'break-system-packag':282 'bti':9,52,59,106,383,425,1148,1218,1298,1368,1388,1395,1398,1441 'bti名称':121 'bun':193,197,668,671 'button':861 'c':235 'c1':408 'c2':409 'c3':410 'cartoon':822,867,904 'case':1138,1145,1155,1156,1168,1169,1175,1176,1182,1183,1190,1191,1206,1207,1215,1274,1281,1288,1295,1314,1342,1353,1354,1358,1359,1370,1377,1378,1396,1423,1426,1432,1438 'case.json':1250 'cases/cbti':1144 'cases/index.json':1339,1362,1435 'cases/registry.js':1323,1361,1419 'cases/sbti':1143 'cat':1205,1392 'catchi':544 'cd':626,1049,1127,1134 'center':831,876,914 'chang':669,767 'changelog.md':642 'char':519,527,532,551 'charact':547,806,809,820,846,888 'check':165 'checkout':1349 'chibi':818,845,864,886,901 'chines':528 'chose':1102,1111 'chosen':555 'clean':616,1465 'cli':1031 'clone':609,620,686,1123,1133 'close':891 'cluster':578 'cn':524 'code':516,521,558,961,992 'collect':111,161 'color':740,828,873,911 'combin':1251 'command':184,191 'commit':1364 'complet':7,57,1532 'composit':832,877,915 'confid':844 'config':1224,1304 'confirm':973 'consist':1484 'const':1212,1270,1277,1284,1291 'content':31,80,722 'control':858 'copi':1160 'count':1406 'cover':572,1511 'cp':1164,1171,1178,1185 'craft':790,800,923 'creat':5,49,87,1114,1137,1195,1249,1346,1382 'creativ':522,563 'creator':4,44,48,209,260,271,787,1413 'cross':849 'crown':853 'ctrl':841 'current':1329 'custom':8,105 'cute':821,866,903 'd1':403 'd1-d15':402 'd15':404 'data':718,1161,1253,1262,1292,1318,1474 'dead':882 'dep':233,273 'depend':1053 'deploy':58,1540 'desc':548,1220,1300,1443 'descript':36,515,553,591,746,1497,1530 'design':357,364,504,826,871,908,1480 'detect':181 'dev':1062,1066,1076 'dim':1230,1271,1307 'dimens':32,358,372,375,389,399,419,444,467,537,765,1487 'dimensionmeta':1228 'dimensionord':1229 'dir':625,628,959,990,1021,1051,1166,1173,1180,1187 'direct':475 'directori':1139 'display':1003 'distinct':392 'doc':643 'doesn':694 'download':1038 'e':1269 'e.g':92,380 'echo':187,194,198,215,217,227,229,244,246,1147 'element':1486 'engag':487 'engin':636 'english':520 'enough':1501 'entertain':594,1500 'entir':664 'entri':1200,1327,1336,1344 'environ':158,171,351,655,815 'eof':1210,1247 'error':703 'etc':15 'even':1522 'everi':1485 'exact':433,1473 'exampl':119,840 'exist':1016,1141 'explan':416,1231 'export':335,1199,1211,1227,1234,1238 'eye':892 'fallback':581,1071 'fbti':14,96 'feat':1366,1386 'feel':1492,1517 'field':118,514,651,663,700 'file':633,719,1162,1267,1471,1479 'fix':169,250,649 'flat':825,870,907 'float':889 'flow':1089 'follow':1140 'fork':1122,1131 'format':434,1476 'founder':98 'fs':1311 'full':1088 'fulli':353,1028,1538 'galleri':148,1095 'gather':117 'genai':280,292 'generat':29,55,79,437,439,507,721,770,778,807,920,941,1005,1026,1409 'generic':565 'gh':1129,1380 'ghost':887 'git':203,204,619,639,647,1223,1303,1348,1356,1363,1372 'github':614 'github.com':622,1415 'github.com/lovstudio/skills)':1414 'github.com/lovstudio/xbti.git':621 'glow':857 'goe':600 'golden':852 'googl':279,291 'google-genai':278,290 'google.genai':237 'handl':681 'hero':734 'hidden':497,589 'high':471,837 'humor':1521 'hypothet':478 'id':400,766,1214,1294,1437 'illustr':823,868,905 'imag':39,43,208,241,259,270,641,646,772,781,786,943,1006,1015,1025,1163,1242 'image-cr':42,207,258,269,785 'import':236,240,682,762,1023,1325,1333,1421 'in-charact':545 'includ':479,579 'index.html':729 'index.js':1196 'info':113 'init':648 'input':163,296 'instal':277,289,306,707,1046,1052,1060 'interact':253 'intro':539 'invit':1083 'iter':946 'json':1266 'json.stringify':1317 'keep':398,634,676,751 'key':222,226,311,329,338,341 'l/m/h':396,415,533,574 'la':1019 'launch':1047 'lbti':13,93,122 'lever':863 'librari':1240 'like':12,566 'line':422,542 'lobster':95,382 'localhost':1080 'loop':974 'lovstudio':1,41,257,268,784 'lovstudio/skills':266 'lovstudio/xbti':1118,1132,1384 'low':464 'lower':1152 'ls':211,1018 'm':1365 'make':103 'manag':183,711,1058 'mandatori':108 'manual':1037 'masterpiec':835,880,918 'match':423,456,535,554,585 'measur':390 'medium':469,964,995 'memor':523 'memorable/funny':482 'merg':1260,1463 'meta':731,1213,1293 'metadata':1252,1343 'miss':218,230,247,261,274,302,312 'mix':472 'mkdir':644,1153 'mode':940,970 'model':485 'must':377,455,571,1491 'mute':910 'n':223 'name':25,145,376,529,745,1146,1149,1157,1170,1177,1184,1192,1208,1216,1217,1219,1275,1282,1289,1296,1297,1299,1315,1355,1360,1369,1379,1389,1397,1399,1424,1427,1439,1440,1442 'nano':792 'nano-banana-pro':791 'need':178,254,750,951 'new':1332,1341,1394 'no-open':965,996 'node':176,1268 'node.js':174,301,1258 'normal':1243 'npm':201,659 'npx':263,1068 'null':1319 'o':957,988 'object':1518 'ok':216,228,245 'one':421,541,926,942 'one-lin':420,540 'open':967,998 'oper':1040 'optim':803 'option':448,461,488,587,741,1096 'origin':631,1374 'origin-specif':630 'output':428,500,602,1534 'overwrit':716 'p':645,1154 'packag':182,285,710,1057 'package.json':687,744 'packagemanag':650,662,680,689,748 'panel':859 'path':763 'pattern':530,534,570 'peac':885 'per':443,484,927 'person':10,34,53,60,90,498,505,510,552,775,798,813,928,981,1407,1496,1508 'pil':239 'pillow':281,293 'pip':276 'pip3':288 'pm':189,196,200,706,1059,1064 'png':962,993,1189 'pnpm':186,190,675,690,697 'point':1201 'portabl':684 'pr':1116,1347,1381,1453 'prefer':27,67 'prefix':407 'preof':1393,1417 'present':930 'preview':939 'principl':1481 'pro':794 'proceed':346 'process':921 'programmat':777 'project':608 'prompt':789,802,925,948,955,985 'proven':71 'provid':22,316 'push':1373 'python':232,272 'python3':234,953,983 'q':963,994,1278,1308 'qualiti':834,879,917 'question':33,438,441,454,473,483,494,1235,1488 'quick':1010 're':1198 're-export':1197 'react':74 'read':1000,1328 'readi':354 'refer':1470 'references/xbti-data-format.md':431,1472 'registri':1204,1330 'remov':629,660,698,747 'repo':1119,1126,1130,1383 'requir':120,175,294,1202,1272,1279,1286,1310 'res':838 'result':945 'review':1011 'rf':638,1468 'rm':637,1467 'rule':374,453,557 'run':705,1065 's1':411 's2':412 's3':413 'say':100 'scaffold':606 'scale':397 'scenario':477 'screenshot':1503 'see':430 'serious':1523 'server':1063,1077 'setup':159 'share':1505 'shareabl':596,1495 'short':401 'show':944 'silent':164 'simpl':824,869,906 'singl':1265 'skill':210,264,267,788 'skill-xbti-creator' 'skip':1097 'soft':909 'source-lovstudio' 'space':575 'special':492 'specif':632 'spectrum':1513 'src/components/introscreen.jsx':733 'src/data/dimensions.js':429,723 'src/data/questions.js':501,724 'src/data/types.js':603,725 'src/index.css':738 'src/logic/scoring.js':752 'stand':854 'star':900 'start':1061 'statement':476 'static':1255 'step':109,156,348,355,435,502,604,768,1044,1090,1099,1107 'stop':308 'structur':1142,1475 'style':474,795,819,865,902,949,972,1402,1403 'styliz':805 'sub':388 'sub-dimens':387 'subject':808 'submit':1092,1105,1113 'subtitl':736 'surround':895 'symbol':898 'system':284,359,538 'tag':732 'taglin':543 'target':624,627,958,989,1020,1050,1165,1172,1179,1186 'tell':303,1072,1450 'templat':612 'test':11,54,61,91,1086 'themat':379,406,561,816,1493 'theme':24,65,89,112,363,458,739,1221,1301,1371,1390,1400,1401,1444,1483,1524 'titl':730,735,1385 'tone':427,460,556 'tool':1001 'topic-agent-skills' 'topic-ai-coding-assistant' 'topic-cjk' 'topic-claude-code' 'topic-cursor' 'topic-gemini-cli' 'topic-markdown-to-docx' 'topic-markdown-to-pdf' 'total':373 'tr':1150 'transluc':893 'trigg':45 'trigger':493 'truli':299 'type':35,499,506,511,568,582,590,776,799,929,977,982,987,1239,1241,1244,1404,1405,1408,1489,1509,1515 'type-a':567 'ui':1043 'ultra':836 'univers':759,1070 'updat':726,761,1322,1338,1418,1434 'upper':1151 'url':1078,1454 'use':83,114,188,195,199,658,667,674,696,782,999,1257 'user':21,84,99,162,252,295,304,314,653,657,666,673,693,713,743,932,935,1008,1035,1055,1074,1101,1110,1451 'user.name':1225,1305 'usual':1079 'v':185,192 'valu':449,462 'vercel':640 'verifi':1013 'version':177,205 'via':40,1030 'vibrant':827,872 'viral':601 'visual':810 'vite':75,1069 'want':85 'wear':850 'web':1042 'websit':62,1541 'well':576 'whatev':709 'white':829,874,912 'wit':1527 'work':1539 'workflow':107 'write':414 'writefilesync':1312 'x.y.z':691 'xbti':3,19,47,72,611,1094,1125,1135,1412 'xbti-creat':2,46,1411 'xbti.lovstudio.ai':153,1461 'yes':123,126,131 'your-key':339 'zenmux':220,224,309,320,336 'zenmux.ai':322,331 'zenmux.ai/invite/k6kt2x':321 'zenmux.ai/settings/keys':330 'zzz':897 '主题':124 '人格数量':132 '供他人体验':154 '先生成一个预览确认风格':936 '创建一个xx人格测试':101 '否':150 '子维度':370 '学术严肃':130 '幽默毒舌':128 '建议加到':342 '控制者':842 '提交到':147,152 '无':139 '是':149 '有':138 '有免费额度':325 '死者':883 '注册':319 '深海适应模型':385 '温暖治愈':129 '特殊彩蛋人格':137 '维度模型':366 '获取':327 '设置':334 '还是直接批量生成全部':937 '邀请码':324 '钳力模型':384 '项目目录':142 '风格偏好':127 '默认':143 '默认20':135 '默认否':151 '默认有':140 '龙虾的人格分析':125","prices":[{"id":"b7b0875a-73f9-4556-9036-dd104deac912","listingId":"550503e1-fb65-4966-b067-0ebce33abe49","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"lovstudio","category":"skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:19:12.971Z"}],"sources":[{"listingId":"550503e1-fb65-4966-b067-0ebce33abe49","source":"github","sourceId":"lovstudio/skills/xbti-creator","sourceUrl":"https://github.com/lovstudio/skills/tree/main/skills/xbti-creator","isPrimary":false,"firstSeenAt":"2026-04-18T22:19:12.971Z","lastSeenAt":"2026-04-21T01:36:56.767Z"}],"details":{"listingId":"550503e1-fb65-4966-b067-0ebce33abe49","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"lovstudio","slug":"xbti-creator","github":{"repo":"lovstudio/skills","stars":39,"topics":["agent-skills","ai-coding-assistant","cjk","claude-code","cursor","gemini-cli","markdown-to-docx","markdown-to-pdf"],"license":"mit","html_url":"https://github.com/lovstudio/skills","pushed_at":"2026-04-20T21:40:57Z","description":"Agent skills for AI coding assistants — Markdown to PDF/DOCX with 14 themes, CJK support","skill_md_sha":"0726fa580956d75706e44b4b0082513661d1dbef","skill_md_path":"skills/xbti-creator/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/lovstudio/skills/tree/main/skills/xbti-creator"},"layout":"multi","source":"github","category":"skills","frontmatter":{"name":"lovstudio:xbti-creator","license":"MIT","description":"Create a complete custom BTI personality test (like LBTI, FBTI, etc.) based on the XBTI architecture. User provides a theme name and preferences, AI generates all content: dimensions, questions, personality types, descriptions, and avatar images via lovstudio:image-creator. Trigger when user says \"创建BTI\", \"自定义人格测试\", \"make a BTI\", \"custom personality test\", \"XBTI变体\", \"xbti-creator\", or mentions creating something like LBTI/FBTI/etc.","compatibility":"Requires Node.js 18+ and a package manager (pnpm/npm/bun). Avatar generation requires lovstudio:image-creator skill and ZENMUX_API_KEY."},"skills_sh_url":"https://skills.sh/lovstudio/skills/xbti-creator"},"updatedAt":"2026-04-21T01:36:56.767Z"}}