Dev-only pages (sources, trends, complexity, idea-analysis, false-positives, similarity, landscape, export) now require @admin_required and are hidden from nav in production mode. Citations page keeps the graph public but hides influence/BCP tabs behind --dev flag. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5.9 KiB
IETF Draft Analyzer — Project Instructions
What This Is
Python CLI tool (ietf) to track, categorize, rate, and map IETF Internet-Drafts on AI/agent topics. 361 drafts, 403 authors, 1,262 ideas, 12 gaps. Uses Claude for analysis, Ollama for embeddings, SQLite for storage.
Key Paths
- Source:
src/ietf_analyzer/ - Database:
data/drafts.db(NOTdata/ietf_drafts.db) - Reports:
data/reports/ - Blog series:
data/reports/blog-series/ - Agent definitions:
.claude/agents/ - Team prompt:
scripts/agent-team-prompt.md - Scripts:
scripts/
Development Journal
Every agent and every session MUST log development milestones to data/reports/dev-journal.md.
This journal serves two purposes:
- Track progress across sessions so nothing gets lost
- Source material for the meta blog post about using Claude agent teams to build this project
What to Log
Append entries in this format:
### [DATE] [AGENT/SESSION] — [SHORT TITLE]
**What**: [What was done — features built, analyses run, posts written]
**Why**: [The reasoning or decision behind it]
**Result**: [Outcome, key numbers, links to artifacts]
**Surprise**: [Optional — anything unexpected, a lesson learned, a tool limitation hit]
**Cost**: [Optional — API tokens, time taken, model used]
Examples of What to Log
- Pipeline runs (how many drafts processed, cost, any failures)
- New features implemented (what, why, how it changed the analysis)
- Blog posts drafted or revised (key editorial decisions)
- Architectural decisions (why we structured something a certain way)
- Agent coordination moments (when one agent's output changed another's direction)
- Surprises in the data (unexpected findings that shifted the narrative)
- Tool/infra issues (things that broke, workarounds found)
What NOT to Log
- Routine file reads or searches
- Minor formatting fixes
- Anything already captured in git commits
Agent Team Conventions
When working as a team:
- Architect designs the narrative arc and reviews everything for coherence
- Analyst runs the pipeline, queries the DB, provides data packages
- Coder implements new features following existing patterns (Click CLI, SQLite, rich output)
- Writer produces the blog series from data packages and architectural guidance
Always launch agents in parallel when possible. If agents have independent tasks (e.g., Analyst querying data while Writer drafts from existing material, or Coder implementing features that don't depend on each other), spawn them concurrently in a single message rather than sequentially. Only run agents sequentially when one genuinely depends on another's output.
All agents should:
- Read
scripts/agent-team-prompt.mdfor the full brief - Log milestones to
data/reports/dev-journal.md - Write blog posts to
data/reports/blog-series/ - Save reusable scripts to
scripts/ - Follow existing code patterns (don't over-engineer)
Blog Series
7 posts planned in data/reports/blog-series/ (01 through 07), plus:
- Post 8: "Agents Building the Agent Analysis" — Meta post about using Claude Code agent teams to analyze and write about IETF agent standards. The dev-journal.md is the source material for this post.
Code Conventions
- CLI: Click commands in
cli.pywith@click.option()decorators - DB: Tables in
db.pyensure_tables(), queries as methods onDraftDB - Reports: Report types in
reports.pygenerate_report() - Always cache Claude API calls via
llm_cachetable - Use
richfor console output - Save multi-step workflows as scripts in
scripts/
Web UI: Public vs Dev-Only Pages
The web dashboard runs in two modes: production (default) and dev (--dev flag).
When adding new pages, always decide which mode they belong to.
Use @admin_required decorator on dev-only routes, and {% if is_admin %} in base.html nav links.
Public pages (visible to everyone)
Pages showing publicly available data or high-level results that are defensible:
- Overview, Draft Explorer, Draft Detail — browsable catalog
- Authors — public data from Datatracker
- Citations — public citation data
- Ratings — score distributions (aggregate, not per-draft methodology)
- Timeline — submission trends (factual)
- Search — search functionality
- About, Impressum, Datenschutz — legal/info pages
Dev-only pages (@admin_required, --dev mode)
Pages exposing internal methodology, LLM judgments, cost data, or debatable analysis:
- Gap Explorer, Gap Generation — internal gap analysis, draft generation
- Monitor — pipeline health, API costs, token usage
- Analytics — pageview tracking
- Compare — side-by-side draft comparison (uses Claude)
- AI Ask/Synthesize — Claude-powered Q&A (costs tokens)
- Annotations — internal notes
- False Positives — exposes filtering methodology, raw LLM judgment calls
- Complexity — correlations between LLM ratings and structural metrics (methodologically debatable)
- Idea Analysis — LLM-generated novelty scores could be challenged
- Trends — safety ratio uses internal category mappings
- Sources — rating comparisons across standards bodies (could offend orgs)
- Similarity — embedding-based methodology
- Landscape — t-SNE map (methodology-dependent)
- Obsidian Export — internal tool
Decision criteria for new pages
- Public if: data comes from public sources (Datatracker, standards body websites), or shows aggregate statistics without exposing LLM methodology
- Dev-only if: page reveals how Claude rates/classifies things, shows internal cost/token data, compares organizations in potentially sensitive ways, or uses methodology that could be questioned without full context
Current Status (2026-03-03)
- v0.2.0, 361 drafts (101 new, unprocessed)
- 101 new drafts need: analyze, authors, ideas, embed, gaps
- Blog series: planned, not yet written
- Agent team: defined in
.claude/agents/, ready to launch