AGENTS.md · git:20260626.d3457d2 · 2026-06-26 · sha256 9d939493e723db1f

AGENTS.md git:20260626.d3457d2A

Immutable. This exact content is served forever at /api/v1/blob/9d939493e723db1f.

# LLM Wiki Newsroom — Schema & Workflow Instructions

> **⚠️ LEGACY COMPATIBILITY MODE — read this first.**
> This file describes the original "no scripts" workflow and has drifted from the
> current architecture. The source of truth is **CLAUDE.md + `.claude/`** (5-role
> multi-agent flow, 9 slash commands, deterministic `tools/` pipeline). Even in
> this minimal mode, four rules are non-negotiable:
> 1. Never hand-edit generated artifacts: `wiki/index.md`, `wiki/sources/_catalog*.md`,
>    any `<!-- AUTO:* BEGIN/END -->` region, or anything under `graph/` —
>    run `python tools/build.py` instead.
> 2. Never hand-write `graph/graph.html` or `graph/*.json` — the HTML is a committed
>    Sigma.js shell that fetches build artifacts.
> 3. Run `python tools/lint.py` and require exit 0 before treating content as published.
> 4. English TitleCase filenames are the default; non-Latin-script entities may use a
>    native-script filename (e.g. `신한은행.md`) — `.claude/policies/naming.md`;
>    new person stubs need ≥3 distinct citing sources + operator approval.

This repo can be driven conversationally by any coding agent, but the deterministic `tools/` scripts (stdlib + a few pip deps, **no API key**) are required for build/lint — they are not optional.

## How to Use

Describe what you want in plain English:
- *"Ingest this file: raw/papers/my-paper.md"*
- *"What does the wiki say about transformer models?"*
- *"Check the wiki for orphan pages and contradictions"*
- *"Build the knowledge graph"*

Or use shorthand triggers:
- `ingest <file>` → runs the Ingest Workflow
- `query: <question>` → runs the Query Workflow
- `lint` → runs the Lint Workflow
- `build graph` → runs the Graph Workflow

---

## Directory Layout

```
raw/          # Immutable source documents — never modify these
wiki/         # Agent owns this layer entirely
  index.md    # Catalog of all pages — generated by `python tools/build.py index`
  overview.md # Living synthesis across all sources
  sources/    # One summary page per source document
  entities/   # People, companies, projects, products
  concepts/   # Ideas, frameworks, methods, theories
  overviews/  # L2-3 cluster landscape overviews
  contradictions/ # L2-3 conflict-axis theme pages
  syntheses/  # Saved query answers
  timelines/  # Chronological hub pages
  trails/     # Associative trails (Memex)
graph/        # Auto-generated graph data (build.py output — do not hand-edit)
tools/        # Optional standalone Python scripts (no API key required)
log.md        # Append-only chronological record (repo root, not under wiki/)
```

---

## Page Format

Every wiki page uses this frontmatter:

```yaml
---
title: "Page Title"
type: source | entity | concept | synthesis | trail | timeline | overview | contradiction
tags: []
sources: []       # list of source slugs that inform this page
last_updated: YYYY-MM-DD
---
```

Use `[[PageName]]` wikilinks to link to other wiki pages.

---

## Ingest Workflow

Triggered by: *"ingest <file>"*

Steps (in order):
1. Read the source document fully
2. Read `wiki/index.md` and `wiki/overview.md` for current wiki context
3. Write `wiki/sources/<slug>.md` — use the source page format below
4. Run `python tools/build.py` — regenerates `wiki/index.md`, catalogs,
   graph artifacts, and the `overview.md` AUTO:STATS block (never hand-edit these)
5. Revise the EDITOR-owned prose of `wiki/overview.md` only if warranted —
   keep `<!-- AUTO:* -->` regions untouched
6. Update/create entity pages **only** for entities cited by ≥3 distinct sources
   (person stubs additionally require operator approval — `.claude/policies/naming.md`)
7. Update/create concept pages for key ideas under the same threshold discipline
8. Flag any contradictions with existing wiki content
9. Append to `log.md`: `## [YYYY-MM-DD] ingest | <Title>`

### Source Page Format

```markdown
---
title: "Source Title"
type: source
tags: []
published: YYYY-MM-DD   # publication date (known)
scraped: YYYY-MM-DD     # date collected
source_file: raw/...
---

## Summary
2–4 sentence summary.

## Key Claims
- Claim 1
- Claim 2

## Key Quotes
> "Quote here" — context

## Connections
- [[EntityName]] — how they relate
- [[ConceptName]] — how it connects

## Contradictions
- Contradicts [[OtherPage]] on: ...
```

---

## Query Workflow

Triggered by: *"query: <question>"*

Steps:
1. Read `wiki/index.md` to identify relevant pages
2. Read those pages
3. Synthesize an answer with inline citations as `[[PageName]]` wikilinks
4. Ask the user if they want the answer filed as `wiki/syntheses/<slug>.md`

---

## Lint Workflow

Triggered by: *"lint"*

Run `python tools/lint.py` (9 deterministic groups; exit 0 is the publication
gate — manual inspection supplements it, never replaces it). Then check for:
- **Orphan pages** — wiki pages with no inbound `[[links]]` from other pages
- **Broken links** — `[[WikiLinks]]` pointing to pages that don't exist
- **Contradictions** — claims that conflict across pages
- **Stale summaries** — pages not updated after newer sources
- **Missing entity pages** — entities mentioned in 3+ pages but lacking their own page
- **Data gaps** — questions the wiki can't answer; suggest new sources

Output a lint report and ask if the user wants it saved to `lint-report.md`.

---

## Graph Workflow

Triggered by: *"build graph"*

Run `python tools/build.py graph` (or `python tools/build.py` for the full
5-phase pipeline). There is **no manual fallback** — `graph/graph.html` is a
committed Sigma.js shell and `graph/*.json` are deterministic build artifacts;
writing them by hand corrupts the visualization and every downstream lint.

---

## Naming Conventions

- Source slugs: `kebab-case` matching source filename
- Entity/concept pages: `TitleCase.md` (e.g. `OpenAI.md`, `RAG.md`) — the default
- Non-Latin-script entities may use a native-script filename (e.g. `신한은행.md`)
  when the name has no standard Latin form (`.claude/policies/naming.md`)

## Index Format

Generated by `python tools/build.py index` — shown for reading reference only; never hand-edit.

```markdown
# Wiki Index

## Overview
- [Overview](overview.md) — living synthesis

## Sources
- [Source Title](sources/slug.md) — one-line summary

## Entities
- [Entity Name](entities/EntityName.md) — one-line description

## Concepts
- [Concept Name](concepts/ConceptName.md) — one-line description

## Syntheses
- [Analysis Title](syntheses/slug.md) — what question it answers
```

## Log Format

`## [YYYY-MM-DD] <operation> | <title>`

Operations: `ingest`, `query`, `lint`, `graph`