| <!doctype html>
|
| <html lang="en">
|
| <head>
|
| <meta charset="utf-8">
|
| <meta name="viewport" content="width=device-width, initial-scale=1">
|
| <title>Industry Research Framework</title> |
| <meta name="description" content="An open-source protocol for source-backed longform industry research by AI agents."> |
| <style>
|
| :root {
|
| --bg: #f3efe6;
|
| --paper: #fffaf0;
|
| --paper-2: #f8f1e3;
|
| --ink: #151412;
|
| --ink-soft: #3a3732;
|
| --muted: #746d63;
|
| --line: #d9cbbb;
|
| --line-strong: #b8a995;
|
| --rust: #b75636;
|
| --teal: #1c746d;
|
| --gold: #a9802d;
|
| --dark: #171512;
|
| --dark-2: #23201b;
|
| --code: #14120f;
|
| --shadow: 0 24px 70px rgba(45, 35, 24, .13);
|
| }
|
|
|
| * { box-sizing: border-box; }
|
| html { scroll-behavior: smooth; }
|
| body {
|
| margin: 0;
|
| color: var(--ink);
|
| background:
|
| linear-gradient(rgba(21, 20, 18, .035) 1px, transparent 1px),
|
| linear-gradient(90deg, rgba(21, 20, 18, .03) 1px, transparent 1px),
|
| var(--bg);
|
| background-size: 36px 36px, 36px 36px, auto;
|
| font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
| line-height: 1.58;
|
| text-rendering: optimizeLegibility;
|
| }
|
|
|
| a {
|
| color: inherit;
|
| text-decoration-color: rgba(183, 86, 54, .55);
|
| text-underline-offset: 4px;
|
| }
|
|
|
| .shell {
|
| width: min(1180px, calc(100% - 36px));
|
| margin: 0 auto;
|
| padding: 28px 0 72px;
|
| }
|
|
|
| .topbar {
|
| display: flex;
|
| align-items: center;
|
| justify-content: space-between;
|
| gap: 18px;
|
| color: var(--muted);
|
| font-size: 13px;
|
| letter-spacing: .02em;
|
| padding: 2px 0 22px;
|
| }
|
|
|
| .topbar nav {
|
| display: flex;
|
| gap: 18px;
|
| flex-wrap: wrap;
|
| }
|
|
|
| .hero {
|
| position: relative;
|
| overflow: hidden;
|
| border: 1px solid var(--line-strong);
|
| background: var(--paper);
|
| box-shadow: var(--shadow);
|
| }
|
|
|
| .hero::before {
|
| content: "";
|
| position: absolute;
|
| inset: 0;
|
| pointer-events: none;
|
| background:
|
| linear-gradient(90deg, rgba(183, 86, 54, .16), transparent 26%),
|
| linear-gradient(180deg, rgba(28, 116, 109, .12), transparent 42%);
|
| opacity: .8;
|
| }
|
|
|
| .hero-inner {
|
| position: relative;
|
| display: grid;
|
| grid-template-columns: minmax(0, 1fr) 330px;
|
| gap: 28px;
|
| padding: clamp(34px, 6vw, 72px);
|
| }
|
|
|
| .crumb {
|
| color: var(--rust);
|
| font-size: 13px;
|
| font-weight: 800;
|
| letter-spacing: .12em;
|
| text-transform: uppercase;
|
| }
|
|
|
| h1 {
|
| margin: 16px 0 22px;
|
| font-family: Georgia, "Times New Roman", serif;
|
| font-weight: 650;
|
| font-size: clamp(48px, 8vw, 104px);
|
| line-height: .88;
|
| letter-spacing: 0;
|
| max-width: 760px;
|
| }
|
|
|
| .lede {
|
| max-width: 760px;
|
| margin: 0;
|
| color: var(--ink-soft);
|
| font-size: clamp(18px, 2vw, 24px);
|
| line-height: 1.48;
|
| }
|
|
|
| .hero-actions { |
| display: flex; |
| flex-wrap: wrap; |
| gap: 12px; |
| margin-top: 32px; |
| } |
| |
| .product-hunt-badge { |
| display: inline-flex; |
| line-height: 0; |
| margin-top: 20px; |
| } |
| |
| .product-hunt-badge img { |
| width: 250px; |
| height: 54px; |
| max-width: 100%; |
| } |
|
|
| .button {
|
| display: inline-flex;
|
| align-items: center;
|
| justify-content: center;
|
| min-height: 44px;
|
| padding: 10px 15px;
|
| border: 1px solid var(--ink);
|
| background: var(--ink);
|
| color: #fff7eb;
|
| text-decoration: none;
|
| font-weight: 750;
|
| }
|
|
|
| .button.secondary {
|
| background: transparent;
|
| color: var(--ink);
|
| border-color: var(--line-strong);
|
| }
|
|
|
| .spec-card {
|
| align-self: stretch;
|
| border-left: 1px solid var(--line-strong);
|
| padding-left: 26px;
|
| display: grid;
|
| align-content: end;
|
| gap: 18px;
|
| }
|
|
|
| .spec-item {
|
| border-top: 1px solid var(--line);
|
| padding-top: 14px;
|
| }
|
|
|
| .spec-label {
|
| color: var(--muted);
|
| font-size: 12px;
|
| font-weight: 800;
|
| letter-spacing: .1em;
|
| text-transform: uppercase;
|
| }
|
|
|
| .spec-value {
|
| display: block;
|
| color: var(--ink);
|
| font-size: 18px;
|
| font-weight: 750;
|
| margin-top: 3px;
|
| }
|
|
|
| .tagbar { |
| display: grid; |
| grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); |
| border: 1px solid var(--line-strong); |
| border-top: 0; |
| background: var(--dark); |
| color: #fff7eb;
|
| }
|
|
|
| .tagbar span {
|
| min-height: 72px;
|
| display: flex;
|
| align-items: center;
|
| justify-content: center;
|
| text-align: center;
|
| padding: 12px;
|
| border-right: 1px solid rgba(255, 250, 240, .16);
|
| font-size: 13px;
|
| font-weight: 750;
|
| }
|
|
|
| .tagbar span:last-child { border-right: 0; }
|
|
|
| .layout {
|
| display: grid;
|
| grid-template-columns: 250px minmax(0, 1fr);
|
| gap: 34px;
|
| margin-top: 42px;
|
| }
|
|
|
| .toc {
|
| position: sticky;
|
| top: 24px;
|
| align-self: start;
|
| border: 1px solid var(--line);
|
| background: rgba(255, 250, 240, .82);
|
| backdrop-filter: blur(12px);
|
| padding: 18px;
|
| }
|
|
|
| .toc-title {
|
| color: var(--rust);
|
| font-size: 12px;
|
| font-weight: 850;
|
| letter-spacing: .12em;
|
| text-transform: uppercase;
|
| margin-bottom: 12px;
|
| }
|
|
|
| .toc a {
|
| display: block;
|
| padding: 8px 0;
|
| color: var(--ink-soft);
|
| font-size: 14px;
|
| text-decoration: none;
|
| border-top: 1px solid rgba(217, 203, 187, .65);
|
| }
|
|
|
| .toc a:hover { color: var(--rust); }
|
|
|
| .content {
|
| min-width: 0;
|
| }
|
|
|
| .section {
|
| border-top: 1px solid var(--line-strong);
|
| padding: 34px 0 20px;
|
| scroll-margin-top: 24px;
|
| }
|
|
|
| .section-head {
|
| display: grid;
|
| grid-template-columns: 86px minmax(0, 1fr);
|
| gap: 22px;
|
| align-items: start;
|
| margin-bottom: 20px;
|
| }
|
|
|
| .index {
|
| color: var(--rust);
|
| font-family: Georgia, "Times New Roman", serif;
|
| font-size: 54px;
|
| line-height: .9;
|
| }
|
|
|
| h2 {
|
| margin: 0;
|
| font-family: Georgia, "Times New Roman", serif;
|
| font-size: clamp(30px, 4vw, 52px);
|
| line-height: 1.04;
|
| letter-spacing: 0;
|
| }
|
|
|
| .section-kicker {
|
| margin: 8px 0 0;
|
| color: var(--muted);
|
| max-width: 760px;
|
| font-size: 17px;
|
| }
|
|
|
| .cards {
|
| display: grid;
|
| grid-template-columns: repeat(2, minmax(0, 1fr));
|
| gap: 16px;
|
| }
|
|
|
| .card {
|
| background: var(--paper);
|
| border: 1px solid var(--line);
|
| padding: 22px;
|
| min-height: 170px;
|
| }
|
|
|
| .card.dark {
|
| background: var(--dark);
|
| color: #fff7eb;
|
| border-color: var(--dark);
|
| }
|
|
|
| .card-number {
|
| color: var(--rust);
|
| font-size: 12px;
|
| font-weight: 850;
|
| letter-spacing: .13em;
|
| text-transform: uppercase;
|
| }
|
|
|
| .card.dark .card-number { color: #d89170; }
|
|
|
| h3 {
|
| margin: 8px 0 8px;
|
| font-size: 21px;
|
| line-height: 1.2;
|
| }
|
|
|
| p { margin: 0 0 14px; }
|
|
|
| .card p,
|
| .wide p,
|
| td {
|
| color: var(--ink-soft);
|
| }
|
|
|
| .card.dark p { color: #e4d7c4; } |
| |
| .wide { |
| border: 1px solid var(--line); |
| background: var(--paper); |
| padding: 24px;
|
| margin-top: 16px; |
| } |
| |
| .comparison { |
| display: grid; |
| grid-template-columns: repeat(2, minmax(0, 1fr)); |
| gap: 16px; |
| } |
| |
| .comparison-panel { |
| border: 1px solid var(--line); |
| background: var(--paper); |
| padding: 22px; |
| min-height: 240px; |
| } |
| |
| .comparison-panel.bad { |
| border-color: rgba(183, 86, 54, .5); |
| } |
| |
| .comparison-panel.good { |
| border-color: rgba(28, 116, 109, .5); |
| } |
| |
| .comparison-panel ul, |
| .asset-list { |
| margin: 12px 0 0; |
| padding-left: 18px; |
| color: var(--ink-soft); |
| } |
| |
| .prompt-grid, |
| .asset-grid { |
| display: grid; |
| grid-template-columns: repeat(2, minmax(0, 1fr)); |
| gap: 16px; |
| } |
| |
| .prompt-card, |
| .asset-card { |
| border: 1px solid var(--line); |
| background: var(--paper); |
| padding: 20px; |
| } |
| |
| .prompt-card pre { |
| margin: 14px 0 0; |
| padding: 16px; |
| white-space: pre-wrap; |
| word-break: break-word; |
| max-height: 280px; |
| } |
| |
| .asset-card strong { |
| display: block; |
| color: var(--ink); |
| margin-bottom: 6px; |
| } |
| |
| .launch-visual { |
| width: min(100%, 240px); |
| aspect-ratio: 1; |
| display: block; |
| margin: 0 auto 16px; |
| border: 1px solid var(--line-strong); |
| background: var(--paper); |
| } |
|
|
| .rule-list {
|
| display: grid;
|
| grid-template-columns: repeat(2, minmax(0, 1fr));
|
| gap: 12px;
|
| margin: 0;
|
| padding: 0;
|
| list-style: none;
|
| }
|
|
|
| .rule-list li {
|
| border-top: 1px solid var(--line);
|
| padding: 13px 0 2px;
|
| }
|
|
|
| .rule-list strong {
|
| color: var(--ink);
|
| }
|
|
|
| .diagram {
|
| display: grid;
|
| grid-template-columns: 1fr 1fr;
|
| gap: 18px;
|
| align-items: stretch;
|
| }
|
|
|
| .diagram-main {
|
| grid-column: 1 / -1;
|
| background: var(--dark);
|
| color: #fff7eb;
|
| padding: 24px;
|
| text-align: center;
|
| font-weight: 850;
|
| letter-spacing: .02em;
|
| }
|
|
|
| .diagram-box {
|
| border: 1px solid var(--line);
|
| background: var(--paper);
|
| padding: 22px;
|
| }
|
|
|
| .diagram-box h3 {
|
| color: var(--teal);
|
| }
|
|
|
| pre {
|
| overflow: auto;
|
| background: var(--code);
|
| color: #f7efe5;
|
| padding: 24px;
|
| border: 1px solid #373027;
|
| line-height: 1.55;
|
| font-size: 13px;
|
| }
|
|
|
| code {
|
| font-family: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace;
|
| }
|
|
|
| .state-grid {
|
| display: grid;
|
| grid-template-columns: repeat(3, minmax(0, 1fr));
|
| gap: 14px;
|
| }
|
|
|
| .state-group {
|
| border: 1px solid var(--line);
|
| background: var(--paper);
|
| padding: 20px;
|
| }
|
|
|
| .state-group h3 {
|
| color: var(--rust);
|
| }
|
|
|
| .state-group ul {
|
| margin: 0;
|
| padding-left: 18px;
|
| color: var(--ink-soft);
|
| }
|
|
|
| table {
|
| width: 100%;
|
| border-collapse: collapse;
|
| background: var(--paper);
|
| border: 1px solid var(--line);
|
| margin-top: 16px;
|
| }
|
|
|
| th,
|
| td {
|
| border-bottom: 1px solid var(--line);
|
| padding: 14px;
|
| text-align: left;
|
| vertical-align: top;
|
| }
|
|
|
| th {
|
| color: var(--rust);
|
| font-size: 12px;
|
| text-transform: uppercase;
|
| letter-spacing: .1em;
|
| }
|
|
|
| .lens-grid {
|
| display: grid;
|
| grid-template-columns: repeat(3, minmax(0, 1fr));
|
| gap: 14px;
|
| }
|
|
|
| .lens {
|
| border: 1px solid var(--line);
|
| background: var(--paper);
|
| padding: 18px;
|
| }
|
|
|
| .lens h3 {
|
| color: var(--teal);
|
| }
|
|
|
| .constraint-list {
|
| counter-reset: constraints;
|
| margin: 0;
|
| padding: 0;
|
| list-style: none;
|
| }
|
|
|
| .constraint-list li {
|
| counter-increment: constraints;
|
| display: grid;
|
| grid-template-columns: 58px minmax(0, 1fr);
|
| gap: 16px;
|
| border-top: 1px solid var(--line);
|
| padding: 16px 0;
|
| }
|
|
|
| .constraint-list li::before {
|
| content: counter(constraints, decimal-leading-zero);
|
| color: var(--gold);
|
| font-family: Georgia, "Times New Roman", serif;
|
| font-size: 28px;
|
| line-height: 1;
|
| }
|
|
|
| .copyrow {
|
| display: flex;
|
| align-items: end;
|
| justify-content: space-between;
|
| gap: 18px;
|
| margin-bottom: 16px;
|
| }
|
|
|
| .copybtn {
|
| border: 1px solid var(--dark);
|
| background: var(--dark);
|
| color: #fff7eb;
|
| min-height: 42px;
|
| padding: 9px 13px;
|
| cursor: pointer;
|
| font: inherit;
|
| font-weight: 750;
|
| }
|
|
|
| #skilltext {
|
| max-height: 720px;
|
| }
|
|
|
| footer {
|
| border-top: 1px solid var(--line-strong);
|
| color: var(--muted);
|
| margin-top: 38px;
|
| padding-top: 18px;
|
| font-size: 14px;
|
| }
|
|
|
| @media (max-width: 980px) {
|
| .hero-inner {
|
| grid-template-columns: 1fr;
|
| }
|
|
|
| .spec-card {
|
| border-left: 0;
|
| border-top: 1px solid var(--line-strong);
|
| padding-left: 0;
|
| padding-top: 20px;
|
| grid-template-columns: repeat(3, minmax(0, 1fr));
|
| }
|
|
|
| .tagbar,
|
| .state-grid,
|
| .lens-grid {
|
| grid-template-columns: repeat(2, minmax(0, 1fr));
|
| }
|
|
|
| .layout {
|
| grid-template-columns: 1fr;
|
| }
|
|
|
| .toc {
|
| position: static;
|
| }
|
| }
|
|
|
| @media (max-width: 680px) { |
| .shell { |
| width: min(100% - 24px, 1180px); |
| padding-top: 18px; |
| } |
| |
| .hero-inner { |
| padding: 24px; |
| gap: 18px; |
| } |
| |
| .topbar { |
| align-items: flex-start; |
| flex-direction: column; |
| } |
| |
| h1 { |
| font-size: 44px; |
| } |
| |
| .lede { |
| font-size: 17px; |
| } |
| |
| .hero-actions { |
| margin-top: 22px; |
| gap: 8px; |
| } |
| |
| .button { |
| flex: 1 1 calc(50% - 8px); |
| min-height: 40px; |
| padding: 8px 10px; |
| font-size: 14px; |
| } |
| |
| .tagbar, |
| .cards, |
| .comparison, |
| .prompt-grid, |
| .asset-grid, |
| .rule-list, |
| .diagram, |
| .state-grid, |
| .lens-grid { |
| grid-template-columns: 1fr; |
| } |
| |
| .spec-card { |
| display: none; |
| } |
| |
| .tagbar span { |
| min-height: 52px; |
| border-right: 0;
|
| border-bottom: 1px solid rgba(255, 250, 240, .16);
|
| }
|
|
|
| .section-head {
|
| grid-template-columns: 1fr;
|
| gap: 8px;
|
| }
|
|
|
| .index {
|
| font-size: 38px;
|
| }
|
|
|
| .constraint-list li {
|
| grid-template-columns: 1fr;
|
| gap: 6px;
|
| }
|
|
|
| .copyrow {
|
| align-items: stretch;
|
| flex-direction: column;
|
| }
|
| }
|
| </style>
|
| </head>
|
| <body>
|
| <main class="shell">
|
| <header class="topbar">
|
| <nav>
|
| <a href="https://github.com/rrrrrredy/industry-research-framework">Repository</a> |
| <a href="#fullmd">Full SKILL.md</a> |
| <a href="#demo">Before/After</a> |
| <a href="#copy-run">Copy Prompts</a> |
| <a href="#launch-assets">Launch Assets</a> |
| <a href="#use-agent">Use With Agent</a> |
| <a href="#evaluation-loop">Evaluation Loop</a> |
| </nav> |
| <div>Open Framework Spec / July 2026</div> |
| </header> |
|
|
| <section class="hero">
|
| <div class="hero-inner"> |
| <div> |
| <div class="crumb">Open-Source AI Agent Protocol</div> |
| <h1>Industry Research Framework</h1> |
| <p class="lede">An open-source protocol that keeps AI agents from turning industry research into shallow summaries. It adds scope gates, evidence registries, hard stops, and regression evals so longform reports stay source-backed and publishable.</p> |
| <div class="hero-actions"> |
| <a class="button" href="#fullmd">Start with SKILL.md</a> |
| <a class="button secondary" href="#demo">See before/after</a> |
| <a class="button secondary" href="#launch-assets">Product Hunt assets</a> |
| <a class="button secondary" href="https://github.com/rrrrrredy/industry-research-framework">View repository</a> |
| </div> |
| <a class="product-hunt-badge" href="https://www.producthunt.com/posts/industry-research-framework?utm_source=badge-featured&utm_medium=badge" target="_blank" rel="noopener"> |
| <img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=industry-research-framework&theme=light" alt="Industry Research Framework - Source-backed research protocol for AI agents | Product Hunt" width="250" height="54"> |
| </a> |
| </div> |
| <aside class="spec-card" aria-label="Framework metadata">
|
| <div class="spec-item"> |
| <span class="spec-label">Type</span> |
| <span class="spec-value">Open-source agent protocol</span> |
| </div> |
| <div class="spec-item"> |
| <span class="spec-label">Failure Modes</span> |
| <span class="spec-value">5 guarded</span> |
| </div> |
| <div class="spec-item"> |
| <span class="spec-label">Eval Layer</span> |
| <span class="spec-value">Regression fixtures</span> |
| </div> |
| <div class="spec-item"> |
| <span class="spec-label">License</span>
|
| <span class="spec-value">MIT</span>
|
| </div>
|
| </aside>
|
| </div>
|
| </section>
|
|
|
| <div class="tagbar" aria-label="Framework pillars">
|
| <span>Scope Contract</span>
|
| <span>Research Brief</span>
|
| <span>Task State</span>
|
| <span>Recovery</span>
|
| <span>Source Registry</span>
|
| <span>Claim Discipline</span>
|
| <span>Staged Drafting</span>
|
| <span>Hard Stops</span>
|
| <span>Regression Fixtures</span>
|
| <span>Review Loop</span>
|
| <span>Reader Revision</span>
|
| </div>
|
|
|
| <div class="layout">
|
| <aside class="toc" aria-label="Page navigation">
|
| <div class="toc-title">Framework Map</div> |
| <a href="#quickstart">00 Quickstart</a> |
| <a href="#demo">P1 Before/After</a> |
| <a href="#copy-run">P2 Copy Prompts</a> |
| <a href="#launch-assets">P3 Launch Assets</a> |
| <a href="#use-agent">Use With Agent</a> |
| <a href="#evaluation-loop">Evaluation Loop</a> |
| <a href="#motivation">01 Motivation</a>
|
| <a href="#scope">02 Scope Contract</a>
|
| <a href="#constraints">03 Constraints</a>
|
| <a href="#architecture">04 Architecture</a>
|
| <a href="#state">05 State Files</a>
|
| <a href="#recovery">06 Recovery</a>
|
| <a href="#brief">07 Research Brief</a>
|
| <a href="#loop">08 Operating Loop</a>
|
| <a href="#lenses">09 Analysis Lenses</a>
|
| <a href="#subagents">10 Subagents</a>
|
| <a href="#engineering">11 Engineering</a>
|
| <a href="#validation">12 Validation</a>
|
| <a href="#gotchas">13 Gotchas & Hard Stops</a>
|
| <a href="#fullmd">14 Full SKILL.md</a>
|
| </aside>
|
|
|
| <div class="content">
|
| <section id="quickstart" class="section">
|
| <div class="section-head">
|
| <div class="index">00</div>
|
| <div>
|
| <h2>30-Second Quickstart</h2>
|
| <p class="section-kicker">Start from the authoritative skill file, then load references only when the task needs them.</p>
|
| </div>
|
| </div>
|
| <div class="wide"> |
| <p>Use <code>SKILL.md</code> first. Run research scope calibration, confirm output, reader, depth, evidence standard, and coverage, then create state, logs, and data files before broad source collection.</p> |
| <p>Load references conditionally: workflow for setup or recovery, analysis lenses for method choice, subagent guidance before delegation, gotchas for drift diagnosis, writing style before drafting, and quality gates before completion.</p> |
| <p>Obey hard stops before claiming completion: repair missing brief details, evidence dead ends, empty claim registries, process leakage, thin drafts, and unresolved review findings.</p> |
| </div> |
| </section> |
|
|
| <section id="demo" class="section"> |
| <div class="section-head"> |
| <div class="index">P1</div> |
| <div> |
| <h2>Before And After</h2> |
| <p class="section-kicker">The framework is designed for the gap between a plausible AI summary and a report that survives evidence review.</p> |
| </div> |
| </div> |
| <div class="comparison"> |
| <article class="comparison-panel bad"> |
| <div class="card-number">Without a protocol</div> |
| <h3>Common agent failure</h3> |
| <p>The agent collects many links, writes a compressed overview, leaves research-process language in the prose, and treats partial coverage as completion.</p> |
| <ul> |
| <li>Source lists replace analysis.</li> |
| <li>Claims drift beyond the evidence.</li> |
| <li>Depth collapses after the first draft.</li> |
| <li>Review findings stay open while the task is marked done.</li> |
| </ul> |
| </article> |
| <article class="comparison-panel good"> |
| <div class="card-number">With this framework</div> |
| <h3>Source-backed research flow</h3> |
| <p>The agent confirms scope, persists state, separates evidence from prose, tracks claims and uncertainty, drafts section by section, then runs hard stops before final delivery.</p> |
| <ul> |
| <li>Every major claim has a source or limitation.</li> |
| <li>Evidence, judgment, and speculation stay distinct.</li> |
| <li>Depth is checked against the requested deliverable.</li> |
| <li>Final prose is cleaned for readers, not auditors.</li> |
| </ul> |
| </article> |
| </div> |
| </section> |
|
|
| <section id="copy-run" class="section"> |
| <div class="section-head"> |
| <div class="index">P2</div> |
| <div> |
| <h2>Copy-And-Run Prompts</h2> |
| <p class="section-kicker">Use these entry prompts when you want an agent to adopt the repository as the controlling research protocol.</p> |
| </div> |
| </div> |
| <div class="prompt-grid"> |
| <article class="prompt-card"> |
| <div class="card-number">Codex / local agents</div> |
| <h3>Repository as protocol</h3> |
| <pre><code>Use https://github.com/rrrrrredy/industry-research-framework as the research protocol. Read SKILL.md first. Before collecting sources, run the research brief gate. For substantial work, create state/, logs/, and data/. Keep sources, claims, uncertainty, and review notes backstage. Run hard stops and quality gates before final delivery.</code></pre> |
| </article> |
| <article class="prompt-card"> |
| <div class="card-number">Claude / Gemini / Cursor</div> |
| <h3>Instruction-first mode</h3> |
| <pre><code>Open https://github.com/rrrrrredy/industry-research-framework and treat SKILL.md as the controlling instruction for this research task. Load references/ files only when the current stage needs them. Do not publish final prose until evidence, claim, depth, and reader cleanup gates pass.</code></pre> |
| </article> |
| <article class="prompt-card"> |
| <div class="card-number">ChatGPT-style agents</div> |
| <h3>Attached skill file</h3> |
| <pre><code>I am attaching or pasting SKILL.md from Industry Research Framework. Follow it as a protocol for this longform research task. Ask one compact brief-gate question set if needed, maintain claim and uncertainty notes, and return only reader-facing final prose after quality gates pass.</code></pre> |
| </article> |
| <article class="prompt-card"> |
| <div class="card-number">Eval follow-up</div> |
| <h3>Check the run</h3> |
| <pre><code>After the research run, place the artifacts under evals/runs/<run-id>/ and execute: |
| python scripts/run_evals.py --runs-dir evals/runs --report evals/runs/report.md |
| python scripts/check_regression_fixtures.py</code></pre> |
| </article> |
| </div> |
| </section> |
|
|
| <section id="launch-assets" class="section"> |
| <div class="section-head"> |
| <div class="index">P3</div> |
| <div> |
| <h2>Product Hunt Launch Assets</h2> |
| <p class="section-kicker">Position the project as an open-source protocol for agent builders, researchers, and teams using AI for serious market work.</p> |
| </div> |
| </div> |
| <div class="asset-grid"> |
| <article class="asset-card"> |
| <img class="launch-visual" src="assets/product-hunt-thumbnail.svg" alt="Product Hunt thumbnail concept for Industry Research Framework"> |
| <strong>Name</strong> |
| <p>Industry Research Framework</p> |
| <strong>Primary tagline</strong> |
| <p>Source-backed research protocol for AI agents</p> |
| </article> |
| <article class="asset-card"> |
| <strong>Short description</strong> |
| <p>An open-source protocol that helps AI agents produce source-backed longform industry research without shallow summaries, process leakage, evidence drift, or false completion.</p> |
| </article> |
| <article class="asset-card"> |
| <strong>Launch links</strong> |
| <ul class="asset-list"> |
| <li><a href="https://github.com/rrrrrredy/industry-research-framework">GitHub repository</a></li> |
| <li><a href="#fullmd">Full SKILL.md</a></li> |
| <li><a href="https://github.com/rrrrrredy/industry-research-framework/tree/main/evals">Eval suite</a></li> |
| </ul> |
| </article> |
| <article class="asset-card"> |
| <strong>Full asset pack</strong> |
| <p>Product Hunt field copy, maker comment, audience segments, launch checklist, and social post drafts live in <a href="https://github.com/rrrrrredy/industry-research-framework/blob/main/docs/product-hunt-launch.md">docs/product-hunt-launch.md</a>.</p> |
| </article> |
| </div> |
| </section> |
|
|
| <section id="use-agent" class="section"> |
| <div class="section-head">
|
| <div class="index">A1</div>
|
| <div>
|
| <h2>Use With Your Agent</h2>
|
| <p class="section-kicker">This repository is meant to be handed to an agent as a lightweight research protocol, not installed as a heavy product.</p>
|
| </div>
|
| </div>
|
| <div class="cards">
|
| <article class="card">
|
| <div class="card-number">Default path</div>
|
| <h3>Give the repository URL to your agent</h3>
|
| <p>Ask the agent to read <code>SKILL.md</code> first, run the research brief gate before source collection, and load files under <code>references/</code> only when the current stage needs them.</p>
|
| </article>
|
| <article class="card dark">
|
| <div class="card-number">Adapters</div>
|
| <h3>Use the agent-specific notes</h3>
|
| <p>Codex, Claude, Gemini CLI, Cursor, ChatGPT-style agents, OpenClaw, and Hermes Agent have short setup notes in the <a href="https://github.com/rrrrrredy/industry-research-framework/tree/main/agents">agents directory</a>.</p>
|
| </article>
|
| </div>
|
| </section>
|
|
|
| <section id="evaluation-loop" class="section">
|
| <div class="section-head">
|
| <div class="index">A2</div>
|
| <div>
|
| <h2>Evaluation Loop</h2>
|
| <p class="section-kicker">The repository includes a small conformance loop for checking whether agents actually follow the framework.</p>
|
| </div>
|
| </div>
|
| <div class="cards">
|
| <article class="card">
|
| <div class="card-number">What ships</div>
|
| <h3>Cases, source pack, rubric</h3>
|
| <p>The <a href="https://github.com/rrrrrredy/industry-research-framework/tree/main/evals">evals directory</a> contains task cases, rubrics, regression fixtures, and a sanitized AI knowledge source pack for workflow testing.</p>
|
| </article>
|
| <article class="card dark">
|
| <div class="card-number">Runner</div>
|
| <h3>Run offline checks</h3>
|
| <p>Use <a href="https://github.com/rrrrrredy/industry-research-framework/blob/main/scripts/run_evals.py">scripts/run_evals.py</a> to score state files, claim discipline, review logs, depth, process leakage, and false completion signals.</p>
|
| </article>
|
| <article class="card">
|
| <div class="card-number">Regression</div>
|
| <h3>Check known bad outputs</h3>
|
| <p>Use <a href="https://github.com/rrrrrredy/industry-research-framework/blob/main/scripts/check_regression_fixtures.py">scripts/check_regression_fixtures.py</a> to verify that process leakage, depth collapse, evidence drift, overclaiming, and false completion do not pass unnoticed.</p>
|
| </article>
|
| </div>
|
| </section>
|
|
|
| <section id="motivation" class="section">
|
| <div class="section-head">
|
| <div class="index">01</div>
|
| <div>
|
| <h2>Motivation: Five Failure Modes</h2>
|
| <p class="section-kicker">Longform research agents tend to fail in repeatable ways. The framework exists to make those failures harder to repeat.</p>
|
| </div>
|
| </div>
|
| <div class="cards">
|
| <article class="card dark">
|
| <div class="card-number">Failure 01</div>
|
| <h3>Topic Overfitting</h3>
|
| <p>A method distilled from one project becomes falsely treated as the universal frame.</p>
|
| </article>
|
| <article class="card">
|
| <div class="card-number">Failure 02</div>
|
| <h3>Process Leakage</h3>
|
| <p>The final article reads like a work log instead of a finished author's report.</p>
|
| </article>
|
| <article class="card">
|
| <div class="card-number">Failure 03</div>
|
| <h3>Evidence Drift</h3>
|
| <p>Sources, claims, uncertainty, and judgment collapse into one undifferentiated argument.</p>
|
| </article>
|
| <article class="card dark">
|
| <div class="card-number">Failure 04</div>
|
| <h3>False Completion</h3>
|
| <p>A partial milestone is reported as final completion before coverage, review, and reader revision are done.</p>
|
| </article>
|
| <article class="card">
|
| <div class="card-number">Failure 05</div>
|
| <h3>Depth Collapse</h3>
|
| <p>Source counts and coverage checklists pass, but the finished report is too short or compressed for the expected research depth.</p>
|
| </article>
|
| </div>
|
| </section>
|
|
|
| <section id="scope" class="section">
|
| <div class="section-head">
|
| <div class="index">02</div>
|
| <div>
|
| <h2>Scope Contract</h2>
|
| <p class="section-kicker">This repository is an execution framework for research deliverables, not a theory system or product architecture.</p>
|
| </div>
|
| </div>
|
| <div class="cards">
|
| <article class="card dark">
|
| <div class="card-number">Inside</div>
|
| <h3>Process</h3>
|
| <p>Research scope calibration, staged execution, source processing, drafting, review, revision, and final cleanup.</p>
|
| </article>
|
| <article class="card">
|
| <div class="card-number">Inside</div>
|
| <h3>State</h3>
|
| <p>Task state, progress, findings, assumptions, decisions, and direction tracking.</p>
|
| </article>
|
| <article class="card">
|
| <div class="card-number">Inside</div>
|
| <h3>Audit</h3>
|
| <p>Source, claim, uncertainty, coverage, depth, and reader-quality checks.</p>
|
| </article>
|
| </div>
|
| <div class="wide">
|
| <p>Keep domain ontologies, universal taxonomies, intermediate representations, scoring systems, embeddings, knowledge graphs, dashboards, CLIs, databases, automation pipelines, and product architecture outside this repository unless they are explicitly split into a separate project.</p>
|
| <p>If work starts drifting into those layers, preserve the current research deliverable path and record the idea as a future extension.</p>
|
| </div>
|
| </section>
|
|
|
| <section id="constraints" class="section">
|
| <div class="section-head">
|
| <div class="index">03</div>
|
| <div>
|
| <h2>Behavioral Constraints</h2>
|
| <p class="section-kicker">Hard rules of the framework, each induced from real failure modes in long research work.</p>
|
| </div>
|
| </div>
|
| <ol class="constraint-list">
|
| <li><div><strong>Deliverable first.</strong> If the output is an article or report, do not drift into system design.</div></li>
|
| <li><div><strong>Research brief gate.</strong> If critical information is missing, ask one compact clarification batch before collection.</div></li>
|
| <li><div><strong>State before scale.</strong> Write task state before expanding source collection.</div></li>
|
| <li><div><strong>Evidence is not prose.</strong> Registries and audit labels stay backstage.</div></li>
|
| <li><div><strong>Depth budget before drafting.</strong> Define expected depth, rough length band, and unit-level expansion plan.</div></li>
|
| <li><div><strong>Staged execution.</strong> Plan, collect, analyze, draft, review, revise, then continue.</div></li>
|
| <li><div><strong>Optional lenses only.</strong> Framing/category and horizontal-vertical analysis are tools, not default structure.</div></li>
|
| <li><div><strong>Review closes the loop.</strong> Every finding becomes a revision action, downgraded claim, or limitation.</div></li>
|
| </ol>
|
| </section>
|
|
|
| <section id="architecture" class="section">
|
| <div class="section-head">
|
| <div class="index">04</div>
|
| <div>
|
| <h2>Architecture</h2>
|
| <p class="section-kicker">The main agent owns thesis and final judgment. The backend preserves evidence. The frontend becomes publishable prose.</p>
|
| </div>
|
| </div>
|
| <div class="diagram">
|
| <div class="diagram-main">Main Agent: thesis, structure, final judgment</div>
|
| <div class="diagram-box">
|
| <h3>Research Backend</h3>
|
| <p>State files, source registry, claim registry, uncertainty list, review logs, access failures.</p>
|
| </div>
|
| <div class="diagram-box">
|
| <h3>Publishing Frontend</h3>
|
| <p>Thesis, analytical sections, synthesis, counter-evidence, reader-facing references, final prose cleanup.</p>
|
| </div>
|
| </div>
|
| </section>
|
|
|
| <section id="state" class="section">
|
| <div class="section-head">
|
| <div class="index">05</div>
|
| <div>
|
| <h2>State File System</h2>
|
| <p class="section-kicker">State is written to files so the task can recover after context loss and avoid reconstructing progress from memory.</p>
|
| </div>
|
| </div>
|
| <div class="state-grid">
|
| <div class="state-group">
|
| <h3>state/</h3>
|
| <ul>
|
| <li>task_spec.md</li>
|
| <li>progress.json</li>
|
| <li>findings.jsonl</li>
|
| <li>directions_tried.json</li>
|
| <li>iteration_log.jsonl</li>
|
| </ul>
|
| </div>
|
| <div class="state-group">
|
| <h3>logs/</h3>
|
| <ul>
|
| <li>work.jsonl</li>
|
| <li>review.jsonl</li>
|
| </ul>
|
| </div>
|
| <div class="state-group">
|
| <h3>data/</h3>
|
| <ul>
|
| <li>source_registry.csv</li>
|
| <li>claims_registry.csv</li>
|
| <li>uncertainty_registry.csv</li>
|
| </ul>
|
| </div>
|
| </div>
|
| </section>
|
|
|
| <section id="recovery" class="section">
|
| <div class="section-head">
|
| <div class="index">06</div>
|
| <div>
|
| <h2>Recovery And Guardrails</h2>
|
| <p class="section-kicker">Recover from context loss through state files, and stop loops before they become false progress.</p>
|
| </div>
|
| </div>
|
| <div class="cards">
|
| <article class="card">
|
| <div class="card-number">Recovery</div>
|
| <h3>Resume from state</h3>
|
| <p>Read task_spec, progress, recent findings, iteration logs, and tried directions before taking action after a restart.</p>
|
| </article>
|
| <article class="card dark">
|
| <div class="card-number">Guardrail</div>
|
| <h3>Stop empty collection</h3>
|
| <p>If three consecutive source passes add no relevant evidence, stop that direction and draft or pivot.</p>
|
| </article>
|
| <article class="card">
|
| <div class="card-number">Guardrail</div>
|
| <h3>Extract claims</h3>
|
| <p>If sources grow while claims stay thin, pause collection and convert evidence into claims before searching more.</p>
|
| </article>
|
| <article class="card dark">
|
| <div class="card-number">Hard Stop</div>
|
| <h3>Do not fake completion</h3>
|
| <p>If the draft still leaks process language, remains too thin, or progress claims final completion with unresolved issues, stop and repair state before delivery.</p>
|
| </article>
|
| </div>
|
| </section>
|
|
|
| <section id="brief" class="section">
|
| <div class="section-head">
|
| <div class="index">07</div>
|
| <div>
|
| <h2>Research Brief Gate</h2>
|
| <p class="section-kicker">Before collecting sources, ask only for missing information that changes scope, output, evidence, or depth.</p>
|
| </div>
|
| </div>
|
| <div class="wide">
|
| <p>If the request lacks decision-critical information, ask one compact batch of questions. The batch must include expected length or depth when it is missing.</p>
|
| <p>If the request is already clear, proceed and record assumptions in <code>task_spec.md</code> instead of asking ritual questions.</p>
|
| </div>
|
| </section>
|
|
|
| <section id="loop" class="section">
|
| <div class="section-head">
|
| <div class="index">08</div>
|
| <div>
|
| <h2>Operating Loop</h2>
|
| <p class="section-kicker">Each stage produces bounded progress, then updates state before the next stage begins.</p>
|
| </div>
|
| </div>
|
| <table>
|
| <thead><tr><th>Step</th><th>Action</th><th>Output</th></tr></thead>
|
| <tbody>
|
| <tr><td>1</td><td>Run the research brief gate, then plan the scope, inputs, output, and done criteria.</td><td>Stage plan</td></tr>
|
| <tr><td>2</td><td>Collect or process only the sources needed for that stage.</td><td>Source notes</td></tr>
|
| <tr><td>3</td><td>Convert sources into claims, uncertainty, and analysis notes.</td><td>Claim registry</td></tr>
|
| <tr><td>4</td><td>Draft a bounded section or unit.</td><td>Section draft</td></tr>
|
| <tr><td>5</td><td>Review for evidence, coverage, structure, skepticism, and prose.</td><td>Review log</td></tr>
|
| <tr><td>6</td><td>Revise the section and registries.</td><td>Clean draft</td></tr>
|
| <tr><td>7</td><td>Update progress and define the next stage.</td><td>Next action</td></tr>
|
| </tbody>
|
| </table>
|
| <div class="wide">
|
| <p>If one cycle adds no new evidence, case, counterexample, framework, or judgment, increment <code>stale_count</code>. If <code>stale_count >= 2</code>, pivot the structural angle rather than searching harder inside the same frame.</p>
|
| <p>For longform deliverables, source counts, claim counts, link counts, and file size are backend health signals only. They cannot replace a depth review.</p>
|
| </div>
|
| </section>
|
|
|
| <section id="lenses" class="section">
|
| <div class="section-head">
|
| <div class="index">09</div>
|
| <div>
|
| <h2>Analysis Lens Scheduling</h2>
|
| <p class="section-kicker">Pick one primary lens and at most two secondary lenses unless the user explicitly requests a multi-method report.</p>
|
| </div>
|
| </div>
|
| <div class="lens-grid">
|
| <article class="lens"><h3>Framing/Category</h3><p>Positioning, legitimacy, category creation, public meaning, media translation.</p></article>
|
| <article class="lens"><h3>Horizontal-Vertical</h3><p>Timeline depth plus current competitor or substitute comparison.</p></article>
|
| <article class="lens"><h3>Adoption</h3><p>User behavior, workflow change, replacement, friction.</p></article>
|
| <article class="lens"><h3>Capital</h3><p>Pricing, revenue, valuation, funding, cost structure, margins.</p></article>
|
| <article class="lens"><h3>Organization/Talent</h3><p>Operating model, hiring, leadership, talent flow.</p></article>
|
| <article class="lens"><h3>Counter-Case</h3><p>Strongest alternative explanation and failure modes.</p></article>
|
| </div>
|
| </section>
|
|
|
| <section id="subagents" class="section">
|
| <div class="section-head">
|
| <div class="index">10</div>
|
| <div>
|
| <h2>Subagent Scheduling Patterns</h2>
|
| <p class="section-kicker">Subagents inspect or challenge bounded work. They do not own the thesis or rewrite the whole report.</p>
|
| </div>
|
| </div>
|
| <table>
|
| <thead><tr><th>Role</th><th>Use</th></tr></thead>
|
| <tbody>
|
| <tr><td>Requirement Mapper</td><td>Turn user requirements into a completion checklist.</td></tr>
|
| <tr><td>Evidence Auditor</td><td>Check support, source access, and confidence boundaries.</td></tr>
|
| <tr><td>Coverage Auditor</td><td>Find missing companies, actors, periods, source categories, or themes.</td></tr>
|
| <tr><td>Skeptical Reviewer</td><td>Find hype, PR laundering, weak causality, and missing counter-cases.</td></tr>
|
| <tr><td>Reader Critic</td><td>After factual checks, improve clarity, flow, cognitive load, and report feel.</td></tr>
|
| </tbody>
|
| </table>
|
| </section>
|
|
|
| <section id="engineering" class="section">
|
| <div class="section-head">
|
| <div class="index">11</div>
|
| <div>
|
| <h2>Engineering Constraints</h2>
|
| <p class="section-kicker">The framework turns quality checks into mechanical habits instead of end-of-project reconstruction.</p>
|
| </div>
|
| </div>
|
| <ul class="rule-list">
|
| <li><strong>Claim boundary.</strong> Every important hard claim needs a confidence boundary.</li>
|
| <li><strong>Registry cadence.</strong> Every 20 important facts, figures, or judgments should update source and claim registries.</li>
|
| <li><strong>Depth gate.</strong> A final report must meet the depth budget; registry completeness alone is not completion.</li>
|
| <li><strong>Official source limit.</strong> Official materials show stated position; they do not prove adoption.</li>
|
| <li><strong>Media source limit.</strong> Media materials show public framing; they need corroboration for hard facts.</li>
|
| <li><strong>Community source limit.</strong> User/community evidence shows reception; it is not automatically representative.</li>
|
| <li><strong>Reader review limit.</strong> Reader review may improve flow and clarity, but must not invent facts.</li>
|
| </ul>
|
| </section>
|
|
|
| <section id="validation" class="section">
|
| <div class="section-head">
|
| <div class="index">12</div>
|
| <div>
|
| <h2>Validation And Limits</h2>
|
| <p class="section-kicker">The framework improves reliability, but it does not make an agent immune to bad sources, weak reasoning, or unsupported claims.</p>
|
| </div>
|
| </div>
|
| <div class="cards">
|
| <article class="card">
|
| <div class="card-number">Completion Gate</div>
|
| <h3>Before final delivery</h3>
|
| <p>The research brief gate is complete or assumptions are recorded; required coverage is complete or explicitly bounded; major claims trace back to sources; counter-evidence, recovery state, and depth expectations have been addressed.</p>
|
| </article>
|
| <article class="card dark">
|
| <div class="card-number">Limits</div>
|
| <h3>Honest disclosure</h3>
|
| <p>Subagent review is a check, not external truth. Optional lenses can overfit the report if used mechanically.</p>
|
| </article>
|
| </div>
|
| </section>
|
|
|
| <section id="gotchas" class="section">
|
| <div class="section-head">
|
| <div class="index">13</div>
|
| <div>
|
| <h2>Gotchas And Hard Stops</h2>
|
| <p class="section-kicker">The latest update turns common failure modes into explicit stop-and-repair signals.</p>
|
| </div>
|
| </div>
|
| <div class="cards">
|
| <article class="card">
|
| <div class="card-number">Gotchas</div>
|
| <h3>Known failure patterns</h3>
|
| <p>Watch for registry theater, source-listing prose, evidence drift, false completion, depth collapse, lens overreach, and subagent sprawl.</p>
|
| </article>
|
| <article class="card dark">
|
| <div class="card-number">Hard Stops</div>
|
| <h3>Repair before continuing</h3>
|
| <p>Stop when the brief is under-specified, evidence is exhausted, claims are detached from sources, final prose leaks process, depth is below budget, or completion is claimed too early.</p>
|
| </article>
|
| </div>
|
| </section>
|
|
|
| <section id="fullmd" class="section">
|
| <div class="copyrow">
|
| <div>
|
| <div class="index">14</div>
|
| <h2>Full SKILL.md</h2>
|
| <p class="section-kicker">The authoritative instruction file, included here for copying into other agent environments.</p>
|
| </div>
|
| <button class="copybtn" type="button" onclick="copySkill()">Copy</button>
|
| </div>
|
| <pre id="skilltext"><code>---
|
| name: industry-research-framework
|
| description: Source-backed longform research framework for AI agents. Use for substantial industry/market/company/product/tech/policy/ecosystem reports, 中文产业/行业研究、市场分析、竞品分析、投资memo. Guides scope, sources, claims, depth, review, hard stops, and publishable prose; not quick facts/summaries. |
| ---
|
|
|
| # Industry Research Framework
|
|
|
| This skill is a framework for longform industry research and publishable writing. It ships no scraper, data source, or fixed report template; instead it prescribes conventions for how an AI agent persists state, separates evidence from prose, avoids topic drift, schedules review, and turns a large research backend into a clean reader-facing article or report.
|
|
|
| ## 1. Motivation
|
|
|
| Longform research agents tend to fail in five recurring ways:
|
|
|
| 1. Topic overfitting: a method distilled from one project becomes falsely treated as the universal frame.
|
| 2. Process leakage: the final article reads like a work log, with phrases such as "the user provided" or "the material shows".
|
| 3. Evidence drift: sources, claims, uncertainty, and author judgment collapse into one undifferentiated argument.
|
| 4. False completion: a partial milestone is reported as final completion before coverage, review, and reader-quality revision are done.
|
| 5. Depth collapse: a report satisfies source counts and coverage checklists but is too short, compressed, or thin for the user's expected research depth.
|
|
|
| Every mechanism in this framework targets one of those failures.
|
|
|
| ## 2. Scope Contract
|
|
|
| This skill is an execution framework for producing substantial research deliverables. It is not a theory system, product architecture, or universal modeling language.
|
|
|
| Keep inside this skill:
|
|
|
| 1. Process: research scope calibration, staged execution, source processing, drafting, review, revision, and final cleanup.
|
| 2. State: task state, progress, findings, assumptions, decisions, and direction tracking.
|
| 3. Audit: source, claim, uncertainty, coverage, depth, and reader-quality checks.
|
|
|
| Keep outside this skill unless the user explicitly asks for a separate system design project:
|
|
|
| 1. Domain ontologies, universal taxonomies, or generalized modeling languages.
|
| 2. Intermediate representations, scoring systems, embeddings, knowledge graphs, or ranking engines.
|
| 3. Dashboards, CLIs, databases, automation pipelines, or product architecture.
|
| 4. Methodology manifestos that do not directly improve the current research deliverable.
|
|
|
| If a task starts drifting into the excluded layers, preserve the current deliverable path, record the idea as a future extension, and do not expand the workflow.
|
|
|
| ## 3. Behavioral Constraints
|
|
|
| 1. Deliverable first: if the requested output is an article or report, do not drift into system design, prompt design, or workflow exposition.
|
| 2. Research brief gate before collection: ask one compact clarification batch when decision-critical information is missing.
|
| 3. State before scale: for long tasks, write task state to files before expanding source collection.
|
| 4. Evidence is not prose: registries, logs, audit labels, and access failures stay backstage unless the user requests an audit appendix.
|
| 5. Depth budget before drafting: record expected depth, rough length band, unit-level expansion plan, and what "too short" would mean for this task.
|
| 6. Staged execution: plan, collect, analyze, draft, review, revise, and update state before moving to the next unit.
|
| 7. Section-level progress: write complex work by section, company, case, period, or argument; do not generate the whole report in one pass.
|
| 8. Optional lenses only: framing/category analysis, horizontal-vertical analysis, capital analysis, and adoption analysis are tools, not default structure.
|
| 9. Review closes the loop: every audit finding must become a revision action, a downgraded claim, or an explicit limitation.
|
| 10. Reader review comes last: improve readability only after factual, coverage, structure, and depth checks are stable.
|
|
|
| ## 4. Architecture
|
|
|
| Main Agent
|
| owns thesis, structure, final judgment
|
|
|
| Research Backend Publishing Frontend
|
| state files thesis / sections
|
| source registry mechanisms / synthesis
|
| claim registry counter-evidence
|
| uncertainty list reader-facing references
|
| review logs final prose cleanup
|
|
|
| Subagents may inspect or challenge bounded parts of the backend, but the main agent owns the argument and final prose.
|
|
|
| ## 5. State Files
|
|
|
| For substantial work, create:
|
|
|
| {task}/state/
|
| task_spec.md # objective, reader, output, scope, depth, evidence standard, assumptions
|
| progress.json # stage, completed units, open issues, stale_count
|
| findings.jsonl # append-only findings and judgments
|
| directions_tried.json # directions already attempted
|
| iteration_log.jsonl # stage summaries
|
|
|
| {task}/logs/
|
| work.jsonl # execution decisions
|
| review.jsonl # review findings and routed fixes
|
|
|
| {task}/data/
|
| source_registry.csv
|
| claims_registry.csv
|
| uncertainty_registry.csv
|
|
|
| Use state files to recover after context loss. Do not rely on chat history as the only memory.
|
|
|
| ### Context Recovery Protocol
|
|
|
| When resuming after context loss, session restart, or handoff:
|
|
|
| 1. Read `state/task_spec.md` for objective, scope, reader, output, depth, evidence standard, and assumptions.
|
| 2. Read `state/progress.json` for current stage, completed units, open issues, stale_count, and next action.
|
| 3. Read the latest entries in `state/findings.jsonl` and `state/iteration_log.jsonl` to recover the recent direction.
|
| 4. Read `state/directions_tried.json` to avoid repeating failed or exhausted paths.
|
| 5. Resume from the matching step in the operating loop.
|
|
|
| Do not re-run completed stages. Do not re-ask the research brief if `task_spec.md` already records the answers.
|
|
|
| ## 6. Research Brief Gate
|
|
|
| Before collection, decide whether the request contains enough decision-critical information. If not, ask one compact batch of questions before starting. The batch should usually contain 3-7 questions and must cover expected length or depth when it is missing.
|
|
|
| Ask only for missing critical information:
|
|
|
| - research object and scope boundaries
|
| - target reader and decision context
|
| - output format, language, and publishing context
|
| - expected depth, rough length band, or depth level
|
| - must-cover units, exclusions, and priority areas
|
| - required sources or materials, source exclusions, and evidence standard
|
| - time period, geography, deadline, and whether charts/tables are expected
|
|
|
| If the user has already supplied enough context, do not ask ritual questions. Proceed, record assumptions in `task_spec.md`, and mark unresolved non-critical details as assumptions or uncertainties.
|
|
|
| If critical details remain unanswered after one clarification batch, make conservative assumptions, record them, and begin with a bounded Stage 1 instead of stalling.
|
|
|
| ## 7. Operating Loop
|
|
|
| For each stage:
|
|
|
| 1. Run the research brief gate, then plan the scope, inputs, output, and done criteria.
|
| 2. Collect or process only the sources needed for that stage.
|
| 3. Convert sources into claims, uncertainty, and analysis notes.
|
| 4. Draft a bounded section or unit.
|
| 5. Review the section for evidence, coverage, structure, skepticism, and prose.
|
| 6. Revise the section and registries.
|
| 7. Update progress and define the next stage.
|
|
|
| If one cycle adds no new evidence, case, counterexample, framework, or judgment, increment `stale_count`. If `stale_count >= 2`, pivot the structural angle rather than merely searching harder.
|
|
|
| For longform deliverables, do not use source count, claim count, link count, or file size as completion substitutes. They are backend health signals, not proof that the finished report has enough depth. Before final assembly, compare the draft against the depth budget and expand thin units before reader review.
|
|
|
| ## 8. Source And Claim Discipline
|
|
|
| Classify sources by what they can prove:
|
|
|
| - official materials show stated position, intent, product surface, or formal policy
|
| - primary data supports measurable claims when definitions and collection methods are clear
|
| - expert materials explain reasoning, context, and interpretation
|
| - media materials show public framing but need corroboration for hard facts
|
| - user/community evidence shows reception but is not automatically representative
|
| - counter-evidence limits, weakens, or falsifies the main claim
|
|
|
| Classify claims separately:
|
|
|
| - verified fact
|
| - source claim
|
| - interpretation
|
| - author judgment
|
| - speculation
|
|
|
| Every important hard claim should have a confidence boundary. Do not turn company PR, investor hopes, or media amplification into fact.
|
|
|
| ## 9. Analysis Lens Scheduling
|
|
|
| Choose the lens that fits the research question:
|
|
|
| - framing/category analysis: positioning, legitimacy, category creation, public meaning, and media translation
|
| - horizontal-vertical analysis: timeline depth plus current competitor/substitute comparison
|
| - adoption analysis: user behavior, workflow change, replacement, friction
|
| - capital analysis: pricing, revenue, valuation, funding, cost structure, margins
|
| - organization/talent analysis: operating model, hiring, leadership, talent flow
|
| - policy/legitimacy analysis: regulation, compliance, trust, geopolitical or institutional pressure
|
| - counter-case analysis: strongest alternative explanation and failure modes
|
|
|
| Pick one primary lens and at most two secondary lenses unless the user explicitly requests a multi-method report.
|
|
|
| Read `references/optional-analysis-lenses.md` when choosing lenses. Read `references/horizontal-vertical-analysis.md` only after that lens has been selected.
|
|
|
| ## 10. Subagent Scheduling
|
|
|
| Use subagents only for bounded work:
|
|
|
| - requirement mapping
|
| - source discovery for separate regions, actors, or source classes
|
| - evidence-chain verification
|
| - coverage audit
|
| - skeptical review
|
| - structure review
|
| - reader-quality review after the draft is stable
|
|
|
| A subagent prompt must include objective, files or sections to inspect, output format, PASS/FAIL criteria, and boundaries. Subagents should not rewrite the whole report or own the thesis.
|
|
|
| Read `references/subagents-and-review-loop.md` before delegation.
|
|
|
| ## 11. Finalization
|
|
|
| The final article or report should contain reader-facing material only:
|
|
|
| - conclusion-first insights when useful
|
| - scope note
|
| - analytical sections organized by argument, case, period, or mechanism
|
| - synthesis across units
|
| - counter-evidence and uncertainty expressed cleanly
|
| - implications
|
| - reader-facing reference appendix
|
|
|
| Remove:
|
|
|
| - visible source IDs
|
| - audit labels
|
| - file paths
|
| - "the user provided"
|
| - "the material shows"
|
| - "this source supplements"
|
| - "this section passed audit"
|
| - excessive caveats that weaken rather than clarify judgment
|
|
|
| ## 12. Validation And Limits
|
|
|
| Before declaring completion:
|
|
|
| 1. The research brief gate was completed or assumptions were recorded.
|
| 2. Required coverage is complete or limitations are explicit.
|
| 3. Major claims trace back to sources or uncertainty records.
|
| 4. Facts, source claims, interpretations, and author judgments remain distinct.
|
| 5. Counter-evidence has been addressed.
|
| 6. The draft meets the depth budget or explicitly explains why the original expected depth is no longer appropriate.
|
| 7. Reader review has been run after factual, coverage, structure, and depth review.
|
| 8. The final prose reads like an author's report, not an agent process report.
|
|
|
| Limits:
|
|
|
| 1. The framework reduces citation and evidence errors; it does not eliminate them.
|
| 2. Subagent review is a check, not external truth.
|
| 3. Optional lenses can overfit the report if used mechanically.
|
| 4. State files help recovery, but they only work if updated during the task, not reconstructed after the fact.
|
|
|
| ## 13. Execution Guardrails
|
|
|
| Use these guardrails to prevent loops, overcollection, and scope drift:
|
|
|
| 1. Source collection: if three consecutive searches or source passes add no relevant evidence, stop collecting in that direction, update `directions_tried.json`, and draft or pivot.
|
| 2. Claim extraction: if `source_registry.csv` grows while `claims_registry.csv` stays thin, pause collection and extract claims before gathering more sources.
|
| 3. Review loop: cap full review-revise cycles at two per section unless the user asks for more; record unresolved issues as limitations or follow-up tasks.
|
| 4. Depth check: before reader review, compare the draft against the depth budget and expand thin units before optimizing prose.
|
| 5. Scope expansion: if new work falls outside `task_spec.md`, record it as a proposed extension and ask before expanding the project.
|
| 6. Subagent review: prompts must ask the reviewer to actively look for issues; if no issue is found, the reviewer must state what evidence supports PASS.
|
|
|
| ## 14. Gotchas
|
|
|
| Watch for these recurring failure patterns:
|
|
|
| 1. Registry theater: source and claim registries look complete, but the final prose does not synthesize mechanisms or tradeoffs.
|
| 2. Source-listing prose: paragraphs repeat "source X says Y" instead of turning evidence into reader-facing judgment.
|
| 3. Premature reader polish: prose cleanup starts before coverage, evidence, structure, and depth checks are stable.
|
| 4. Lens overreach: an optional lens becomes the whole report even when the user's question needs a simpler structure.
|
| 5. Subagent sprawl: reviewers or collectors are asked to own the thesis, rewrite the whole report, or expand scope.
|
| 6. Depth substitution: link counts, file size, or checklist coverage are treated as proof that the report is deep enough.
|
|
|
| Read `references/gotchas.md` when diagnosing repeated drift, improving evals, or adapting the framework to a new agent.
|
|
|
| ## 15. Hard Stops
|
|
|
| Stop the current path and repair state before continuing when any of these occur:
|
|
|
| 1. Brief stop: a substantial research task lacks reader, scope, output form, evidence standard, or depth budget after the clarification gate.
|
| 2. Evidence stop: three consecutive searches or source passes add no new relevant evidence, case, counterexample, or judgment.
|
| 3. Claim stop: `source_registry.csv` grows while `claims_registry.csv` remains empty, generic, or detached from the draft.
|
| 4. Draft stop: final prose still contains process language, internal source IDs, audit labels, file paths, or source-pack wording.
|
| 5. Depth stop: the draft is shorter or thinner than the depth budget and no explicit scope reduction has been recorded.
|
| 6. Completion stop: `progress.json` claims final completion before coverage gaps, quality-gate findings, and review actions are closed or recorded as limitations.
|
|
|
| ## References
|
|
|
| - Read `references/research-workflow.md` only when starting a substantial project, creating state files, or resuming after context loss.
|
| - Read `references/optional-analysis-lenses.md` only when the research question needs an explicit analysis lens decision.
|
| - Read `references/horizontal-vertical-analysis.md` only when horizontal-vertical analysis has been selected.
|
| - Read `references/subagents-and-review-loop.md` only before delegating work or running a review loop.
|
| - Read `references/writing-style.md` only when entering drafting, final cleanup, or reader-driven revision.
|
| - Read `references/quality-gates.md` only before declaring a stage or final deliverable complete.
|
| - Read `references/gotchas.md` only when diagnosing repeated drift, adapting the framework, or improving eval coverage.
|
| - Read `references/postmortem-lessons.md` only when adapting this framework or diagnosing repeated task drift.
|
| </code></pre>
|
| </section>
|
|
|
| <footer>
|
| Industry Research Framework / Open Spec / July 2026
|
| </footer>
|
| </div>
|
| </div>
|
| </main>
|
| <script>
|
| function copySkill() {
|
| const text = document.getElementById('skilltext').innerText;
|
| navigator.clipboard.writeText(text).then(() => {
|
| const btn = document.querySelector('.copybtn');
|
| const old = btn.textContent;
|
| btn.textContent = 'Copied';
|
| setTimeout(() => { btn.textContent = old; }, 1200);
|
| });
|
| }
|
| </script>
|
| </body>
|
| </html>
|
|
|