{"slug": "i-built-a-compiler-for-how-ai-agents-should-write-to-you", "title": "I built a compiler for how AI agents should write to you", "summary": "A developer built /calibrate-comms, an open-source Obsidian skill that compiles communication preferences for AI agents like Claude Code and Codex into executable directives. The skill uses a three-stage workflow—prior, sample reaction, and compile—to calibrate nine axes such as density, sequence, and jargon, then writes the profile into CLAUDE.md for consistent agent behavior. It rejects personality typing in favor of revealed preferences from pairwise choices and live corrections.", "body_md": "I kept correcting AI agents in the same ways: \"too long,\" \"answer first,\" \"use a diagram,\" \"assume I know the jargon.\" Each correction improved the current exchange, but the preference was not represented as durable system state.\n\nI built `/calibrate-comms`\n\nto make that state explicit. It is an open-source skill inside an Obsidian vault, used by both Claude Code and Codex.\n\nThe skill does not try to discover a personality type. It calibrates nine choices that directly change how an answer is rendered:\n\n| Dial | Practical question |\n|---|---|\n| Density | Tight sections or full reasoning? |\n| Sequence | Answer first or chronological build-up? |\n| Modality | Prose or diagrams for relational content? |\n| Abstraction | Concrete example or principle first? |\n| Tradeoff | One recommendation or several options? |\n| Detail | Main path or edge cases too? |\n| Jargon | Define terms or assume expertise? |\n| Tone | Casual, neutral, or formal? |\n| Context-giving | Should the agent extract missing context or split an overloaded brief? |\n\nThe workflow has three stages:\n\n```\nL1 PRIOR → L2 SAMPLE REACTION → COMPILE → CLAUDE.md\n    hypothesis        empirical override       shared by both agents\n```\n\nQuick mode asks one bespoke forced-choice proxy per axis. Those questions are deliberately labelled as proxies, not validated psychometrics. Deep mode must fetch the exact items from supported open-access instruments before use; if the source cannot be obtained, the skill stays in Quick mode and makes no validation claim.\n\nThe prior is then challenged through pairwise samples. For sequence, the contrast looks like this:\n\n```\nBuild-up first:\nWe traced the latency spike to N+1 queries, then found lazy loading in a loop—so the fix is eager loading.\n\nAnswer first:\nFix: eager-load the association. Why: lazy loading in a loop caused N+1 queries and the latency spike.\n```\n\nThe user's pick is revealed preference. If it contradicts the prior, the sample wins.\n\nThe final profile is not a score report. A deterministic band-to-rule table emits instructions an agent can execute:\n\n```\n- Bottom line up front: answer in sentence one, justification after.\n- Use a table or diagram when content is structural or relational.\n- Assume working fluency; define only non-obvious terms.\n```\n\nThose directives are written into a delimited `COMMS-PROFILE`\n\nblock in `CLAUDE.md`\n\n. In this vault, `AGENTS.md`\n\npoints to the same instructions, so Claude Code and Codex receive one source of truth.\n\nInteractions are resolved explicitly. Low density plus complete detail becomes \"thorough but layered.\" A preference for both answer-first and multiple options becomes a one-line lean followed by the option breakdown. A visual replaces prose when the user wants both diagrams and brevity.\n\nThe skill rejects DISC, MBTI, VARK, and deterministic user types. Supported psychometrics are used only as optional priors. Pairwise choices, direct edits, and live corrections have higher authority because they measure what actually lands.\n\nThat live loop matters. If the user says \"too long\" during real work, the density directive can be corrected without rerunning the full process. A calibration that cannot learn from use is just a quiz.\n\nA filled communication profile describes a person, so it is personal data. The private vault keeps the ledger and compiled directives. The public template ships the skill, templates, and an empty placeholder; its sync verifier fails if a populated profile appears in the public copy.\n\nThe implementation is plain Markdown and prompt-defined skills. Inspect the model, challenge the mappings, or adapt the compiler:", "url": "https://wpnews.pro/news/i-built-a-compiler-for-how-ai-agents-should-write-to-you", "canonical_source": "https://dev.to/ibrahim_kobeissy_5117d943/i-built-a-compiler-for-how-ai-agents-should-write-to-you-4m18", "published_at": "2026-06-26 21:24:53+00:00", "updated_at": "2026-06-26 22:06:32.241352+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "large-language-models", "natural-language-processing", "ai-products"], "entities": ["Claude Code", "Codex", "Obsidian", "CLAUDE.md", "AGENTS.md", "DISC", "MBTI", "VARK"], "alternates": {"html": "https://wpnews.pro/news/i-built-a-compiler-for-how-ai-agents-should-write-to-you", "markdown": "https://wpnews.pro/news/i-built-a-compiler-for-how-ai-agents-should-write-to-you.md", "text": "https://wpnews.pro/news/i-built-a-compiler-for-how-ai-agents-should-write-to-you.txt", "jsonld": "https://wpnews.pro/news/i-built-a-compiler-for-how-ai-agents-should-write-to-you.jsonld"}}