induct-research
Induct research sources (issue, file, directory, or URI) into a research corpus — reads, annotates, and files structured induction tasks. Like address-issues but for research.
What this skill does
# Induct Research Process one or more research sources — an issue, a file, a directory of papers, or a URI — and file structured induction tasks into a research repository so nothing gets lost. The analogue of `address-issues` for research corpora. ## Kernel Delegation > As of ADR-021, `induct-research` delegates core ingest mechanics to the semantic memory kernel. **Delegation pattern**: 1. `induct-research` retains its public name and interactive research-induction UX 2. Internal ingest mechanics delegate to `memory-ingest --consumer research-complete` 3. Research-specific layers remain in this wrapper: - GRADE quality assessment (via `ingestRequires: ["grade-quality"]`) - Citation validation (via `ingestRequires: ["provenance"]`) - Research-specific page templates 4. Cross-references written as `@-mentions` per consumer schema **What changed**: The ingest pipeline (source reading, page creation, index update, log append) is now handled by `memory-ingest`. This skill adds the research-specific quality and citation layers on top. **Backward compatibility**: No UX changes. Existing invocations work identically. @agentic/code/addons/semantic-memory/skills/memory-ingest/SKILL.md ## Triggers - "induct this paper" → single file induction - "induct the research queue" → batch directory induction - "add these references to the research repo" → URI or file-path induction - "process the research from issue-planner" → induct `.aiwg/research/queue/` - "induct research into gitea" → named MCP service target - `/induct-research <target>` → direct invocation ## Parameters ### `<target>` (required) What to induct. Three formats accepted: | Format | Example | Behavior | |--------|---------|----------| | **File path** | `.aiwg/research/queue/` | Read all `.md` files in the directory | | **Single file** | `.aiwg/research/queue/ref-dapper.md` | Induct one source | | **URI** | `https://arxiv.org/abs/2307.09288` | Fetch and induct the paper at that URL | | **Directory glob** | `papers/**/*.pdf` | Induct all matched files recursively | | **Issue reference** | `gitea:roctinam/research#42` | Read the issue body as a research stub | ### `--repo <dest>` (optional) Where to file induction tasks. Accepts the same three formats as `--induct-research` in issue-planner: | Format | Example | Behavior | |--------|---------|----------| | File path | `--repo .aiwg/research/inducted/` | Write task `.md` files locally | | URI | `--repo https://git.integrolabs.net/roctinam/research` | File issues to that Gitea/GitHub/Jira instance | | Named MCP | `--repo gitea` | Use `mcp__gitea__issue_write` directly | | Named MCP | `--repo codehound` | Register in Hound search index | Falls back to `AIWG_RESEARCH_REPO` env var if `--repo` is omitted. ### `--dry-run` (optional) List what would be inducted and where, without writing or filing anything. ### `--priority high|medium|low` (optional) Override the suggested priority for all inducted items. Default: assessed per source. ### `--tag <topic>` (optional) Apply a topic tag to all inducted items. Repeatable: `--tag llm --tag evaluation`. ### `--recursive` (optional) When target is a directory, recurse into subdirectories. Default: top-level only. --- ## Execution Flow ### Phase 1: Source Discovery 1. **Parse `<target>`** — determine input type (file, directory, URI, issue ref) 2. **Collect sources**: - **File/directory**: glob for `.md`, `.pdf`, `.txt`, `.yaml` files - **URI**: fetch the resource; detect type (paper, doc page, repo, issue) - **Issue reference**: fetch issue body and all comments via MCP or CLI 3. **Deduplicate** — skip sources already present in the destination repo (if queryable) 4. **Report discovery**: ``` Found 9 sources to induct: 3 Markdown stubs (.aiwg/research/queue/) 4 PDF papers (papers/2024/) 2 URI references Skipping 1 (already inducted: REF-042) ``` --- ### Phase 2: Source Acquisition (acquire before analyze) **CRITICAL**: Never write analysis docs from metadata or abstracts alone. The pipeline is: **acquire full content → read full content → write analysis doc.** This was learned from a session where 88 of 120 papers were inducted as shallow stubs written from arXiv abstract pages — not the actual papers. See #817. For each source, ensure full content is available before analysis: **For PDFs / full papers**: 1. **Acquire the PDF** — call `/research-acquire <url> --extract-text` to download the PDF to `sources/pdfs/full/` and extract full text to `sources/text/` 2. **Verify acquisition** — confirm the PDF exists at the expected path and is non-empty 3. **If PDF unavailable** (paywall, dead link): mark as `acquisition-failed` in frontmatter, file a stub with `status: pending-acquisition`, and skip to next source. Do NOT write a full analysis doc from the abstract alone. **For URIs (web sources)**: 1. **Fetch the full page** (WebFetch) — save to `sources/web/<slug>.html` 2. **Classify**: paper, blog post, official docs, repo README, specification, news 3. **If paper**: call `/research-acquire` to get the actual PDF — do not analyze from the landing page HTML 4. **If non-paper web source**: the fetched HTML/text is the full content — proceed to analysis **For Markdown stubs** (from issue-planner queue files): - Read the stub content and relevance summary - If the stub references a paper URL: acquire the PDF first (same as above) - If the stub is a research brief with no external source: proceed as-is **For issue references**: - Read full issue body and comments - Extract referenced URLs, files, or topics - If URLs point to papers: acquire PDFs before analysis - If no external sources: treat as a research brief stub ### Phase 2.5: Per-Source Analysis (on full content) Only after full content is acquired, run analysis: **For PDFs / full papers** (with full text available): - Read the **full extracted text**, not just the abstract - Extract title, authors, year, abstract, methodology, key findings, limitations - Identify key claims with specific evidence (quotes, figures, tables) - Assess relevance to existing corpus (check `.aiwg/research/` for related REF-XXX files) - Assign GRADE quality level (A–D) based on source type and peer-review status - Target: analysis docs should be 150-300 lines with substantive content from the paper **For web sources** (with full content saved): - Read the full saved page content - Extract key points, methodology if applicable, credibility indicators - Assess relevance and quality **Quality gate**: If the resulting analysis doc is under 80 lines, flag it as a potential stub. Either the source content wasn't fully read or the analysis was superficial. Consider re-running with explicit instructions to read the full text. --- ### Phase 3: Induction Task Filing For each analyzed source, file one induction task using the standard template. **Induction task body:** ```markdown ## Reference Induction **Source**: <URL, file path, or issue reference> **Type**: <paper | blog | docs | repo | spec | stub | issue> **GRADE**: <A | B | C | D | unassessed> **Priority**: <high | medium | low> **Tags**: <topic1>, <topic2> ## Summary <2–3 sentences: what this source covers and why it's relevant> ## Key Claims / Findings - <Specific claim or finding> - <Specific claim or finding> - <Specific claim or finding> ## Relevance to Corpus <How this relates to existing research — cross-references to REF-XXX if applicable> ## Induction Checklist - [ ] Read full source - [ ] Extract key insights as Zettelkasten notes - [ ] Cross-reference with existing corpus - [ ] Assign REF-XXX identifier - [ ] Tag with topic taxonomy - [ ] Assess with /research-quality - [ ] Archive with /research-archive (if paper/PDF) - [ ] Add to citation graph with /research-cite ## Origin - Surfaced by: <issue-planner | manual | other> - Surfaced for: <objective or context> - Induction date: <YYYY-MM-DD> ``` **Filing based on `--repo` target:** - **File path
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.