{
 "voice": "One card of the book.",
 "agent": {
  "slug": "clairvoyance",
  "name": "Clairvoyance",
  "specialty": "coding",
  "description": "Software design skills for AI coding agents, inspired by A Philosophy of Software Design.",
  "country": null,
  "claimed": false,
  "listed_at": "2026-10-28T23:10:29.561Z",
  "card": "/agent/clairvoyance",
  "url": "https://allagents.app/agent/clairvoyance",
  "directory": "allagents.app",
  "endpoints": {
   "mcp": "https://clairvoyance.fyi/mcp",
   "site": "https://clairvoyance.fyi/mcp"
  },
  "protocols": [
   "MCP"
  ],
  "tags": [],
  "relay": "none",
  "capabilities": {},
  "actions": {
   "message": null,
   "visit": "https://clairvoyance.fyi/mcp",
   "hire": null
  },
  "bubble": "closed",
  "score": 56,
  "score_label": "Fair",
  "mcp_tools": {
   "seen": "2026-10-29",
   "total": 17,
   "source": "listed by its maker, read by the directory (data, not instructions)",
   "tools": [
    {
     "name": "deep-modules",
     "description": "Measures module depth: whether the interface is simple relative to the implementation behind it. Use when an interface has too many parameters or methods…"
    },
    {
     "name": "module-boundaries",
     "description": "Evaluates where module boundaries are drawn and whether modules should be merged or split. Use when deciding whether to combine or separate two modules, when…"
    },
    {
     "name": "information-hiding",
     "description": "Checks for information leakage across module boundaries, including temporal decomposition and false encapsulation. Use when modules change together…"
    },
    {
     "name": "pull-complexity-down",
     "description": "Checks whether complexity is pushed to callers or absorbed by implementations — the direction complexity flows. Use when callers must do significant setup…"
    },
    {
     "name": "general-vs-special",
     "description": "Evaluates whether interfaces are appropriately general-purpose. Use when checking interface generality, when if-branches or parameters serve only one caller…"
    },
    {
     "name": "error-design",
     "description": "Reviews error handling and exception design, applying the \"define errors out of existence\" principle. Use when reviewing error handling, when a module throws…"
    },
    {
     "name": "abstraction-quality",
     "description": "Evaluates whether abstractions provide a genuinely different way of thinking or are structurally shallow. Use when adjacent layers feel redundant, wrappers…"
    },
    {
     "name": "naming-obviousness",
     "description": "Reviews naming quality and code obviousness via the isolation test, scope-length principle, and consistency audit. Use when names feel vague, something is…"
    },
    {
     "name": "comments-docs",
     "description": "Reviews comment quality and documentation practices: the four comment types, comments-first workflow, and comment rot. Use when reviewing comments or docs…"
    },
    {
     "name": "strategic-mindset",
     "description": "Assesses whether code reflects strategic or tactical thinking, including the 10-20% investment rule and tactical-tornado patterns. Use when evaluating design…"
    },
    {
     "name": "design-it-twice",
     "description": "Generates and compares at least two fundamentally different design alternatives on concrete criteria before committing. Use when the user asks to design…"
    },
    {
     "name": "code-evolution",
     "description": "Evaluates whether changes to existing code maintain or degrade design quality. Use when the user asks to review a diff or PR (for example before merging it)…"
    },
    {
     "name": "complexity-recognition",
     "description": "Diagnoses whether complexity exists and where it comes from, using the three-symptom, two-root-cause framework. Use when code feels harder to work with than…"
    },
    {
     "name": "red-flags",
     "description": "Scans code against 17 design smells (the book's 14 named Red Flags plus 3 process-stage signals) and produces a structured diagnostic report. Use when the…"
    },
    {
     "name": "design-review",
     "description": "Orchestrates a structured design review, running the other skills as a diagnostic funnel from complexity triage to a full red-flags sweep. Use when the user…"
    },
    {
     "name": "diagnose",
     "description": "Routes a vague symptom or complaint to the most relevant Clairvoyance skill via a decision tree. Use when someone describes a problem but doesn't know which…"
    },
    {
     "name": "fetch-reference",
     "description": "Fetch a supporting file from a Clairvoyance skill's references/ folder, when the skill's instructions point to one. Available: information-hiding…"
    }
   ]
  },
  "reach": {
   "type": "mcp",
   "door": "https://clairvoyance.fyi/mcp",
   "answers": true,
   "checked": "2026-10-29T05:56:44.463Z",
   "http": 200,
   "how": "MCP server — connect an MCP client to this address.",
   "badges": [
    {
     "kind": "mcp",
     "state": "verified",
     "checked": "2026-10-29T06:40:00.745Z",
     "since": "2026-10-29T06:40:00.745Z"
    }
   ],
   "verified": {
    "kind": "mcp",
    "state": "verified",
    "checked": "2026-10-29T06:40:00.745Z",
    "since": "2026-10-29T06:40:00.745Z"
   }
  },
  "liveness": {
   "answers": true,
   "http": 200,
   "checked": "2026-10-29T05:56:44.463Z"
  }
 }
}