<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sabla Nur</title>
    <description>The latest articles on DEV Community by Sabla Nur (@sabla_nur_49e01ed3abb41cd).</description>
    <link>https://dev.to/sabla_nur_49e01ed3abb41cd</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4090977%2Fecf4d2ba-d9f6-41db-943a-d298fa9dfb66.png</url>
      <title>DEV Community: Sabla Nur</title>
      <link>https://dev.to/sabla_nur_49e01ed3abb41cd</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sabla_nur_49e01ed3abb41cd"/>
    <language>en</language>
    <item>
      <title>The Bone Cracks, the Model Reads: Audited Divination for AI Agents</title>
      <dc:creator>Sabla Nur</dc:creator>
      <pubDate>Sun, 23 Aug 2026 15:33:52 +0000</pubDate>
      <link>https://dev.to/sabla_nur_49e01ed3abb41cd/the-bone-cracks-the-model-reads-audited-divination-for-ai-agents-355h</link>
      <guid>https://dev.to/sabla_nur_49e01ed3abb41cd/the-bone-cracks-the-model-reads-audited-divination-for-ai-agents-355h</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Three thousand years ago, Shang kings carved their divinations into bone — the first auditable record of an oracle at work. Oraclebone brings the same discipline to AI agents: audited scripts produce the draw, the hexagram, the pillars; the model only interprets what it is given. &lt;strong&gt;It never invents the result.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The problem: AI divination is hallucination with extra steps
&lt;/h2&gt;

&lt;p&gt;Ask almost any chatbot for a tarot reading and it will happily "draw" three cards from its imagination. Ask it for an I Ching hexagram and it will generate one — sometimes a hexagram that doesn't even exist in the 64. Ask for your Bazi pillars and it will compute a year pillar from a &lt;em&gt;lunar&lt;/em&gt; new year when the traditional system uses &lt;em&gt;lichun&lt;/em&gt; (the solar term). These aren't edge cases; they're the default behavior of a language model doing divination.&lt;/p&gt;

&lt;p&gt;For a practice whose entire value proposition is &lt;strong&gt;symbolic reflection on a &lt;em&gt;given&lt;/em&gt; result&lt;/strong&gt;, letting the model invent the result is catastrophic. The reading might be soothing, but it's not &lt;em&gt;about&lt;/em&gt; anything. You can't audit it, reproduce it, or share it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Oraclebone&lt;/strong&gt; (&lt;a href="https://github.com/sapuyou45-bit/oraclebone" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://pypi.org/project/oraclebone/" rel="noopener noreferrer"&gt;PyPI&lt;/a&gt;) is my attempt to fix that — a small, open-source toolkit that splits divination into two auditable jobs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A local script produces the card draw, hexagram, or pillar set, using &lt;strong&gt;system entropy by default&lt;/strong&gt; (or a user-supplied seed for reproducible demos).&lt;/li&gt;
&lt;li&gt;The AI agent interprets &lt;em&gt;that&lt;/em&gt; JSON output, inside documented safety boundaries.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The model never generates the divination result. It reads one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's inside
&lt;/h2&gt;

&lt;p&gt;Four divination systems, one discipline:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;System&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tarot&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Draws cards for reflection, decisions, creative blocks&lt;/td&gt;
&lt;td&gt;Major/minor arcana, upright/reversed, spreads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;I Ching (易经)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Casts six-line hexagrams with primary + resulting hexagram&lt;/td&gt;
&lt;td&gt;Coins or yarrow-stalk method; 卦辭/爻辭 classical texts included&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Xiao Liu Ren (小六壬)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Casts from lunar-style numbers or Gregorian time&lt;/td&gt;
&lt;td&gt;Traditional three-step palace count&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bazi (四柱八字)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Four Pillars chart from a birth datetime&lt;/td&gt;
&lt;td&gt;True solar time correction, 大运 cycles, lunar-python engine&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Three interfaces, same engine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MCP server&lt;/strong&gt; (&lt;code&gt;uvx oraclebone-mcp&lt;/code&gt;) — zero-dependency, JSON-RPC 2.0 over stdio. Five tools: &lt;code&gt;tarot_draw&lt;/code&gt;, &lt;code&gt;iching_cast&lt;/code&gt;, &lt;code&gt;xiaoliuren_cast&lt;/code&gt;, &lt;code&gt;bazi_cast&lt;/code&gt;, &lt;code&gt;interpretation_template&lt;/code&gt;. Mounts in Claude Desktop, Codex, Cursor, Continue, any MCP host.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLI&lt;/strong&gt; (&lt;code&gt;oraclebone&lt;/code&gt; / legacy &lt;code&gt;ai-divination&lt;/code&gt;) — &lt;code&gt;oraclebone tarot --spread three-card --reversals&lt;/code&gt;, outputs JSON.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent skills&lt;/strong&gt; — self-contained skill folders with adapters for Claude (&lt;code&gt;claude.yaml&lt;/code&gt;), OpenAI/Codex (&lt;code&gt;openai.yaml&lt;/code&gt;), Gemini (&lt;code&gt;gemini.yaml&lt;/code&gt;), Cursor (&lt;code&gt;cursor.mdc&lt;/code&gt;). Install with one line: &lt;code&gt;curl -fsSL https://raw.githubusercontent.com/sapuyou45-bit/oraclebone/main/install.sh | bash&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every JSON output carries audit metadata: method, seed (or &lt;code&gt;null&lt;/code&gt; for entropy), warnings for approximate modes, and per-system provenance. The docs site (&lt;a href="https://sapuyou45-bit.github.io/oraclebone/" rel="noopener noreferrer"&gt;sapuyou45-bit.github.io/oraclebone&lt;/a&gt;) ships in six languages with a live in-browser demo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "audited" isn't just branding: the correctness audit
&lt;/h2&gt;

&lt;p&gt;Here's the part I'm proudest of. In v8.2.0 I ran a correctness audit against traditional references and found two real bugs:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Xiao Liu Ren off-by-one.&lt;/strong&gt; The traditional method counts three steps — month from the first palace, day from the month's palace, hour from the day's palace — where each step counts its starting palace as &lt;strong&gt;one&lt;/strong&gt;. The original implementation used &lt;code&gt;((month + day + hour - 2) % 6)&lt;/code&gt;, which landed every cast one palace too late. Lunar month 1 / day 1 / hour Zi returned 留连 (Liú Lián) instead of 大安 (Dà'ān). Fixed with &lt;code&gt;((month + day + hour - 3) % 6) + 1&lt;/code&gt; and anchored test cases against known traditional results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Bazi zodiac boundary.&lt;/strong&gt; Births between lichun and lunar new year produced contradictory output: year pillar 丙午 ("Horse") but shengxiao "Snake". The zodiac is now derived from the year pillar's earthly branch, with the lunar-new-year convention preserved separately so both remain auditable.&lt;/p&gt;

&lt;p&gt;These are exactly the bugs that a model-generated reading would never surface — because the model doesn't do arithmetic, it &lt;em&gt;narrates&lt;/em&gt; arithmetic. When the script does the math, the math can be checked.&lt;/p&gt;

&lt;h2&gt;
  
  
  The safety boundary
&lt;/h2&gt;

&lt;p&gt;Divination is symbolic reflection, not prediction. Oraclebone's shared policy refuses medical, legal, financial, or crisis advice, frames results as reflection, preserves user agency, and states uncertainty explicitly. Good readings connect claims to the generated result — nothing more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# One command, no install:&lt;/span&gt;
uvx oraclebone-mcp

&lt;span class="c"&gt;# Or install the package:&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;oraclebone

&lt;span class="c"&gt;# Or the CLI directly:&lt;/span&gt;
oraclebone tarot &lt;span class="nt"&gt;--spread&lt;/span&gt; three-card &lt;span class="nt"&gt;--reversals&lt;/span&gt;
oraclebone iching &lt;span class="nt"&gt;--method&lt;/span&gt; yarrow
oraclebone xiaoliuren &lt;span class="nt"&gt;--method&lt;/span&gt; numbers &lt;span class="nt"&gt;--month&lt;/span&gt; 3 &lt;span class="nt"&gt;--day&lt;/span&gt; 12 &lt;span class="nt"&gt;--hour&lt;/span&gt; 7
oraclebone bazi &lt;span class="nt"&gt;--datetime&lt;/span&gt; 1990-05-20T14:30:00
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or skip the terminal entirely: &lt;a href="https://sapuyou45-bit.github.io/oraclebone/demo.html" rel="noopener noreferrer"&gt;open the online demo&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/sapuyou45-bit/oraclebone" rel="noopener noreferrer"&gt;github.com/sapuyou45-bit/oraclebone&lt;/a&gt; — star it if you want more systems (Zi Wei Dou Shu? Liu Yao? runes? — the roadmap is community-driven)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PyPI:&lt;/strong&gt; &lt;a href="https://pypi.org/project/oraclebone/" rel="noopener noreferrer"&gt;pypi.org/project/oraclebone&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License:&lt;/strong&gt; MIT · &lt;strong&gt;Python:&lt;/strong&gt; 3.9–3.12 · no runtime dependencies (bazi needs the optional &lt;code&gt;lunar-python&lt;/code&gt; extra)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you've ever cringed at a chatbot "drawing" your cards, this is the fix. The bone cracks; the model reads. 🔮&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>claude</category>
      <category>python</category>
    </item>
  </channel>
</rss>
