writing-profile
Writing Profile — Writer-BTI Assessment
A psychometric-style skill that builds a 7-dimension profile of the user's writing taste and preferences. The output is both a shareable type label (e.g. ENTP-R · 杂文家) and a continuous vector that downstream writing skills consume to match the user's voice.
Designed as a plan → run → finalize state machine with independent, resumable test units — each dimension gets its own methodology file and session file, loaded only when that dimension is being tested. This keeps context scoped so an 84-question assessment doesn't blow the window.
Why this exists
Generic AI writing has "AI 味" — stacked hedges, three-part parallels, metaphor decoration, balanced non-committal endings. Those aren't inherently wrong; they're wrong for this person if this person writes punchy committed prose. To strip AI味, the AI needs to know what "this person's voice" actually is — not as self-report ("I like clear writing"), but as a measured preference vector inferred from the user's reactions to real literature across genres.
The profile is genre-agnostic. A writer's core taste — rhythm, density, irony tolerance, classical-vernacular balance — is stable across technical articles, blogs, and diaries. Genre-specific knobs (formality, pronoun density) are adjusted by each downstream writing skill; the baseline comes from here.
Commands
围绕 3 件事组织:做测试、看结果、用结果。
主命令:
| Argument | Dispatch target | 用途 |
|---|---|---|
| (无参数) | commands/dispatch.md |
智能分发:首次→plan→W1→…→finalize→显示画像;中途→接着跑;完成→显示画像。最常用的入口 |
show |
commands/show.md |
展示 + 解读:测试完成后看结果的地方。不只 dump 坐标——读出画像在表达什么、和哪些作家近/远、写作中会自然偏向什么 |
retest |
commands/retest.md |
重做。无参 = 全部重测(二次确认);retest W3 或直接 W3 = 单维度重测 |
W1 – W7 |
references/phases/run-unit.md |
retest W<N> 的快捷形式,也用于首次测 / 恢复进行中的单维度 |
review <path> |
commands/review.md |
用画像审查/改进一篇文档:读目标文档,询问体裁和目的,按坐标 + 机械反 AI 清单给出修改建议 |
内部阶段方法论(不是命令,dispatch/retest 按需加载):
references/phases/plan.md— meta-intake + 生成 state.md,首次由 dispatch 调用references/phases/finalize.md— 合成 profile.md,所有单元完成后自动触发(或 retest 后重算)
type 码分享由 show 在输出末尾给出一行可复制的 ENTP-R · 杂文家 (王小波 × 鲁迅杂文),不再单独走命令。想彻底清掉画像数据可以直接 rm -rf ~/.claude/writing-profile/。
典型使用路径
首次建画像:一路 /writing-profile 直到出画像
/writing-profile # 启动:plan → 跑 W1
/writing-profile # 接着:跑 W2
...
/writing-profile # W7 完 → 自动 finalize → 显示画像
看结果与解读:/writing-profile show
重测单维度:/writing-profile W3(或 /writing-profile retest W3)
全部重测:/writing-profile retest
用画像审文档:/writing-profile review drafts/article.md
The 7 dimensions — organized in 3 construct layers
Writer's voice = stable preferences stacked across three distinct layers. Each layer measures a different kind of thing; this framing (see references/psychometric-foundations.md for theory) is what prevents cross-layer confusion in the question design.
L1 认知启动 (Cognitive operation — 最稳定)
How the mind moves during writing: where attention lands, how decisions get made.
| Code | Name | Ends | Heritage |
|---|---|---|---|
| W1 | Sensing ↔ iNtuition | S / N | MBTI S/N (closest to original meaning, restricted to writing cognition) |
| W2 | Thinking ↔ Feeling | T / F | MBTI T/F (same) |
L2 文本姿态 (Textual stance — 中等稳定)
How the finished text relates to the reader: direction of address, degree of closure.
| Code | Name | Ends | Heritage |
|---|---|---|---|
| W3 | Extraversion ↔ Introversion | E / I | MBTI E/I letter, construct redefined: 发言姿态朝外/朝内 (reader-addressed vs self-addressed), not social energy |
| W4 | Judging ↔ Perceiving | J / P | MBTI J/P letter, construct redefined: 文本收束度 (closed/open structure), not lifestyle |
L3 审美偏好 (Aesthetic preference — 需要暴露前提)
Learned taste for what's read and written. Requires baseline exposure to measure.
| Code | Name | Ends | Heritage |
|---|---|---|---|
| W5 | 致密 ↔ 疏朗 (Density) | D / L | Writing-specific |
| W6 | 严肃 ↔ 反讽 (Grave ↔ Humor) | G / H | Writing-specific |
| W7 | 文言 ↔ 白话 (Classical ↔ Vernacular) | C / V | Chinese-specific · conditional dimension (see below) |
W7 is a conditional dimension: 审美偏好只能在"已有暴露"前提下测得。若用户对古典文学暴露度不足,W7 记为 null(不可测),副字计算退化。详见 references/dimensions/W7-classical-vernacular.md。
Each dimension has a dedicated methodology file under references/dimensions/. The agent reads only the active dimension's file when running that unit.
W5+W6+W7 combine into a single enumerated "副字" (one of A/C/W/R/Z/M/D/H) for the type label. See references/type-archetypes.md. When W7 is null, the副字 falls back to defaulting on the vernacular side (less classical-education-biased), and the profile marks C_V: null so downstream skills know not to push classical register.
⚠️ MBTI 字母是重诠释别名,不是 MBTI 人格测量
W1-W4 借用 S/N/T/F/E/I/J/P 是因为这 4 维在写作域的极性与 MBTI 原构念同构,保留字母便于记忆与分享。但构念已重定义:
- E/I:发言姿态(朝外/朝内),不是社交能量来源
- J/P:文本收束度(封闭/开放),不是生活方式
- S/N、T/F:最接近 MBTI 原义,但只取"写作时的认知启动"部分,不推及人格整体
若你是 MBTI 爱好者,这里的结果不能直接套用你的人格测量结果——两个量表测的不是同一个东西。见 references/psychometric-foundations.md 的"三层构念"论证。
Type label format
ENTP-R · 杂文家
- First 4 letters: standard MBTI code from W1-W4
- Single letter after dash: encodes W5/W6/W7 combination
- After
·: a recognizable Chinese style category (not an invented label)
| 副字 | 中文类别 | 维度组合 |
|---|---|---|
| A | 学院派 | 致密-严肃-文言 |
| C | 思辨派 | 致密-严肃-白话 |
| W | 才子派 | 致密-反讽-文言 |
| R | 杂文家 | 致密-反讽-白话 |
| Z | 抒情派 | 疏朗-严肃-文言 |
| M | 平实派 | 疏朗-严肃-白话 |
| D | 小品派 | 疏朗-反讽-文言 |
| H | 段子派 | 疏朗-反讽-白话 |
Type labels are shareable summaries of the underlying vector, not identity claims. Two writers with slightly different vectors may share a label; the agent always consumes the vector, not the label.
Methodology principles
Inherited from MBTI (the defensible parts):
- Forced-choice between equally-valid alternatives — eliminates "都还行" responses
- Multi-item per dimension (target ≥ 10 items) for reliability
- Reverse-keyed items (~30% of items per dimension) to catch careless answering
- Dimensional structure (7 axes, not one global score)
Rejected from MBTI (pop-psych parts):
- Type fatalism ("you are forever INTJ")
- Function stacking (Ni-Te-Fi-Se)
- Strict dichotomization — we keep continuous scores internally; labels are only summaries
Added from Big Five / IRT:
- Continuous scores with confidence bands (not just binary picks)
- "Middle type" allowed when |score| ≤ 2 — the user is genuinely flexible on that axis
Agent behavior during run:
- Never use a fixed question bank. Generate excerpts and questions on the fly, following strategy in
references/excerpt-strategy.mdand the active dimension's methodology file. - Use real authors, real texts. Excerpts must be actual passages, not AI-confected "in the style of X." Cite attribution only after the user answers, to prevent prestige bias.
- Keep one dimension active per session. When running W1, don't load W2-W7 methodology files. This is how context stays scoped for 80+ questions.
- Record every answer verbatim in the unit file. The session file is the source of truth; the agent's working memory is volatile.
- Stop a dimension early if confidence is high before the question cap. Sliding scale (see
references/signal-interpretation.md).
See also:
references/psychometric-foundations.md— full theory of what we inherit/reject and whyreferences/adaptive-branching.md— when to drill, skip, or stopreferences/signal-interpretation.md— how to score answers
File layout
skills/writing-profile/ ← methodology (read-only)
SKILL.md ← this file
commands/
dispatch.md, show.md, retest.md, review.md # user-facing
references/
psychometric-foundations.md
type-archetypes.md
excerpt-strategy.md
signal-interpretation.md
adaptive-branching.md
genre-adaptation.md # how downstream writing skills consume the profile
phases/
plan.md, run-unit.md, finalize.md # meta-intake / 单维度测试 / profile 合成 (按需加载)
dimensions/
W1-sensing-intuition.md
W2-thinking-feeling.md
W3-extraversion-introversion.md
W4-judging-perceiving.md
W5-density.md
W6-solemnity-irony.md
W7-classical-vernacular.md
assets/
state-template.md, unit-template.md, profile-template.md
~/.claude/writing-profile/ ← user state (written by skill)
state.md ← index + meta-intake + progress
units/ ← one file per dimension session
W1.md, W2.md, ...
profile.md ← final synthesized profile (consumer artifact)
Consumer contract
Downstream writing skills read ~/.claude/writing-profile/profile.md. The file's top YAML block (## 坐标) is the stable machine-readable contract; the rest is human-facing explanation.
How a genre skill adapts this baseline to its own genre — the clamp/shift/amplify framework, genre-specific extras, two-pass application, and fallback contract — is specified in references/genre-adaptation.md. Skill authors building new writing genres should read it before integrating.
# Example contract block from profile.md
S_N: +7 # -10 to +10, positive = N
T_F: -2
E_I: +5
J_P: +6
D_L: -4 # W5: positive = Dense (致密), negative = Light (疏朗)
G_H: -8 # W6: positive = Grave (严肃), negative = Humor (反讽)
C_V: -3 # W7: positive = Classical (文言), negative = Vernacular (白话)
type: ENTP-R
confidence:
S_N: high
T_F: medium
...
The profile file also contains a "机械反 AI 清单" — concrete banned phrases and patterns derived from the user's axes, to be executed during the revision phase of any writing task.
Fallback when no profile exists
If a downstream writing skill activates and no profile exists at ~/.claude/writing-profile/profile.md, suggest (don't force) that the user run /writing-profile to calibrate. Writing should proceed with generic defaults if they decline — a profile improves output but isn't a hard prerequisite.
More from lidessen/skills
memory
Manages cross-session knowledge persistence. Triggers on "remember", "recall", "what did we", "save this decision", "todo", or session handoff.
82design-driven
Design-driven development methodology — the design/ directory is the single source of architectural truth; read it before coding, stay within its boundaries, and update it first when the system's shape changes. Use whenever starting development on this project, or when the user asks to create/update architecture docs, add a feature that may cross existing boundaries, refactor system structure, or understand the codebase architecture. Triggers on "design first", "update the design", "does this change the architecture", "write a design for", "what's the current design", or onboarding to a codebase's shape. Args — `/design-driven init` to configure a project, `bootstrap` to generate design from existing code, `audit` to reconcile design/ against current code.
23harness
Agent harness architecture — structure a project's agent context across layers for effective AI-assisted development. Covers CLAUDE.md, skills, design docs, hooks, and all artifacts that shape how an agent understands and operates in a codebase. Use when setting up or improving agent configuration, when agent context feels bloated or disorganized, when onboarding a project for AI-assisted development, or when the agent keeps losing architectural awareness mid-task. Triggers on "set up claude", "improve CLAUDE.md", "agent keeps forgetting", "context is too long", "harness setup", "organize agent context", "how should I structure my prompts". Args — `/harness audit` to evaluate an existing project's context architecture, `init` to set up harness from scratch.
19housekeeping
Manages project housekeeping including documentation organization, dependency management, directory structure, code cleanup, technical debt tracking, and infrastructure configuration. Use when organizing documentation, cleaning up dependencies, reorganizing folders, removing dead code, addressing tech debt, or maintaining project structure.
18validation
Unified validation orchestration for code quality, consistency, and project health. Auto-triggers on code changes, PR creation, or explicit validation requests. Coordinates refining, housekeeping, and custom validators into cohesive pipelines. Use for "validate", "check", "verify", "验证", "检查", or when quality assurance is needed.
17orientation
Orients agents in new projects by scanning entry documents and discovering capabilities. Use at session start, when entering unfamiliar territory, or when asking "what can you do" or "where do I start".
16