Back to library

For AI agents.

Noir Book ships with a machine-readable manifest. Point your AI tool at it and it can find the right reference topic for any design, product, marketing, or content problem, without hallucinating frameworks or making up methods.

library-manifest.json — full topic metadata, ~22K tokens

Manifest schema

Each topic entry contains the following fields.

Field Type Description
id"UX.1.01" string Unique topic ID. Format: discipline code, tier (1–4), position within tier.
title"Design Thinking" string Full topic title.
file"topics/design-thinking.html" string Relative path to the full topic page. Open this for complete theory, methods, and examples.
tier1 number Depth level. 1 = foundation, 2 = practitioner, 3 = specialist, 4 = advanced.
discipline"UX" string One of: UX (UX Design), PM (Product Management), MK (Marketing & Growth), CS (Content Strategy).
solves["I need a structured approach to...", ...] string[] Problems this topic addresses, written as first-person problem statements. Primary matching field for agent queries.
methods["User Interviews", "Affinity Mapping", ...] string[] Techniques, frameworks, and tools covered in the topic.
phase"discovery" string Project phase where this topic typically applies (e.g. discovery, delivery, strategy).
prerequisites["UX.1.01"] string[] Topic IDs to read first. Empty array means no dependencies.
pairs_with["UX.1.02", "UX.1.03"] string[] Related topic IDs that complement this one. Use for suggesting adjacent reading.
depth"framework" string Content type: framework, methods, reference, or playbook.
keywords["design thinking", "HMW", ...] string[] Search and matching terms. Secondary matching field after solves.

How to use it

Paste the relevant snippet into your tool's context, system prompt, or config file. The manifest does the routing — your agent reads it once, then opens the matched topic file for full content.

Claude or Claude Code
Read library-manifest.json. When the user asks a question about design,
product management, marketing, or content strategy:

1. Match the question against each topic's `solves` array (primary)
   and `keywords` array (secondary).
2. Return the top matching topics: id, title, file path, and the
   matching solves entries so the user understands why each was picked.
3. If the user wants full detail, read the matched topic's HTML file
   directly — the path is in the `file` field.
4. Use `pairs_with` to suggest related topics worth reading alongside.
Cursor (.cursorrules or Rules for AI)
# Noir Book reference library
# When working on design, product, or marketing problems:
# 1. Read library-manifest.json for topic discovery.
# 2. Match the current problem against the `solves` fields — these are
#    written as first-person problem statements, easy to match against.
# 3. Open the matched topic file (path in the `file` field) for the
#    full reference: theory, methods, templates, and examples.
# 4. Prefer topics with lower tier numbers for foundational context,
#    higher tier numbers for specialist or advanced situations.
ChatGPT custom GPT (system prompt)
You have access to a knowledge file called library-manifest.json from
Noir Book, a cross-disciplinary reference library.

When the user asks about design, product management, marketing, or
content strategy:
1. Search the manifest's `solves` array for entries that match the
   user's problem (they are written as "I need to..." statements).
2. Also check `keywords` for secondary matches.
3. Return the matched topics with their IDs, titles, and the specific
   solves entries that matched — this tells the user exactly why each
   topic is relevant.
4. Suggest related topics using the `pairs_with` field.
JavaScript (plain fetch)
async function findTopics(problem) {
  const res = await fetch('/library-manifest.json');
  const manifest = await res.json();
  const q = problem.toLowerCase();

  return manifest.topics
    .map(topic => {
      const matchedSolves = topic.solves.filter(s =>
        s.toLowerCase().split(' ').some(w => w.length > 4 && q.includes(w))
      );
      const keywordMatch = topic.keywords.some(k => q.includes(k.toLowerCase()));
      const score = matchedSolves.length * 2 + (keywordMatch ? 1 : 0);
      return { ...topic, matchedSolves, score };
    })
    .filter(t => t.score > 0)
    .sort((a, b) => b.score - a.score)
    .map(({ id, title, file, matchedSolves }) => ({ id, title, file, matchedSolves }));
}

// Example
findTopics('how do I run user research').then(results => {
  results.forEach(r => console.log(r.id, r.title));
});

Hacker News launch copy

Ready to paste. Edit the URL before posting.

HN post

I built a personal reference library covering UX design, product management, marketing and growth, and content strategy. No Medium intros, no SEO padding, no courses that take three weeks before you get to anything useful. Just the frameworks, methods, and examples I keep going back to mid-project. The part that might be interesting here: the library ships with a machine-readable manifest (library-manifest.json). Every topic maps to the problems it solves — written as "I need to..." statements — plus methods covered, prerequisites, related topics, and keywords. You can point Claude, Cursor, or a custom GPT at it and ask "given this problem, which reference topics are relevant?" and get a direct answer with file paths to the full content. The /agents page has the schema and ready-to-paste snippets for Claude, Cursor, and ChatGPT custom GPTs. [YOUR URL HERE]

Replace [YOUR URL HERE] with the link to the library before posting.