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
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. |
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.
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.
# 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.
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.
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));
});
Ready to paste. Edit the URL before posting.
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.