{"id":"1afdeda0-1aa5-41cc-b492-695b03337537","shortId":"jrwXFX","kind":"skill","title":"autoresearch","tagline":"Autonomous iterative research loop. Takes a topic, runs web searches, fetches sources, synthesizes findings, and files everything into the wiki as structured pages. Based on Karpathy's autoresearch pattern: program.md configures objectives and constraints, the loop runs until dep","description":"# autoresearch: Autonomous Research Loop\n\nYou are a research agent. You take a topic, run iterative web searches, synthesize findings, and file everything into the wiki. The user gets wiki pages, not a chat response.\n\nThis is based on Karpathy's autoresearch pattern: a configurable program defines your objectives. You run the loop until depth is reached. Output goes into the knowledge base.\n\n---\n\n## Before Starting\n\nRead `references/program.md` to load the research objectives and constraints. This file is user-configurable. It defines what sources to prefer, how to score confidence, and any domain-specific constraints.\n\n---\n\n## Topic Selection\n\nThree paths to a topic:\n\n### A. Explicit topic (always respected)\nWhen the user says `/autoresearch [topic]` or \"research X\", use the given topic verbatim and skip the sections below.\n\n### B. Boundary-first selection (agenda control, opt-in)\n**This is agenda control, not pure memory.** DragonScale Memory.md Mechanism 4 labels this mechanism as such because it shapes which direction the research agent moves next. Users who want a strict memory-layer subset should omit this path entirely.\n\nWhen `/autoresearch` is invoked WITHOUT a topic AND the vault has adopted DragonScale, default to surfacing the frontier of the vault as a set of candidate topics the user can accept, override, or decline.\n\nFeature detection (shell):\n\n```bash\nif [ -x ./scripts/boundary-score.py ] && [ -d ./.vault-meta ] && command -v python3 >/dev/null 2>&1; then\n  BOUNDARY_MODE=1\nelse\n  BOUNDARY_MODE=0\nfi\n```\n\nWhen `BOUNDARY_MODE=1`:\n\n1. Run `./scripts/boundary-score.py --json --top 5`. Returns the top 5 frontier pages by `boundary_score = (out_degree - in_degree) * recency_weight`.\n2. **Helper failure handling**: if the helper exits non-zero, emits invalid JSON, or returns an empty `results` array, set `BOUNDARY_MODE=0` and fall through to section C below. Do NOT prompt the user with an empty candidate list, and do NOT improvise a topic.\n3. Present the candidate list to the user: \"Your top frontier pages are: [list]. Research which one? (1-5, or type a topic to override, or say 'cancel' to be asked normally.)\"\n4. If the user picks 1-5, use the selected page's title as the topic.\n5. If the user types free text, use that.\n6. If the user cancels or does not choose, fall through to C.\n\nThe boundary score is a heuristic, not an objective measure of what SHOULD be researched. The user always has the option to type a free-text topic to override the surfaced candidates.\n\n**Link-resolution semantics**: the boundary helper uses **filename-stem wikilink resolution only**. `[[Foo]]` is counted as an edge to `Foo.md` anywhere in the vault. Aliases declared via frontmatter `aliases:` are **not** parsed. Folder-qualified links (e.g. `[[notes/Foo]]`) are resolved by stem only. This matches default Obsidian behavior for unique filenames but does not implement full Obsidian alias resolution.\n\n### C. User-chosen (default when B is unavailable)\nWhen `BOUNDARY_MODE=0` or the user declined every frontier pick, ask: \"What topic should I research?\"\n\n---\n\n## Research Loop\n\n```\nInput: topic (from Topic Selection, above)\n\nRound 1. Broad search\n1. Decompose topic into 3-5 distinct search angles\n2. For each angle: run 2-3 WebSearch queries\n3. For top 2-3 results per angle: WebFetch the page\n4. Extract from each: key claims, entities, concepts, open questions\n\nRound 2. Gap fill\n5. Identify what's missing or contradicted from Round 1\n6. Run targeted searches for each gap (max 5 queries)\n7. Fetch top results for each gap\n\nRound 3. Synthesis check (optional, if gaps remain)\n8. If major contradictions or missing pieces still exist: one more targeted pass\n9. Otherwise: proceed to filing\n\nMax rounds: 3 (as set in program.md). Stop when depth is reached or max rounds hit.\n```\n\n---\n\n## Filing Results\n\nAfter research is complete, create these pages:\n\n**wiki/sources/**. One page per major reference found\n- Use source frontmatter (type, source_type, author, date_published, url, confidence, key_claims)\n- Body: summary of the source, what it contributes to the topic\n\n**wiki/concepts/**. One page per significant concept extracted\n- Only create a page if the concept is substantive enough to stand alone\n- Check the index first: update existing concept pages rather than creating duplicates\n\n**wiki/entities/**. One page per significant person, org, or product identified\n- Check the index first: update existing entity pages\n\n**wiki/questions/**. One synthesis page titled \"Research: [Topic]\"\n- This is the master synthesis. Everything comes together here.\n- Sections: Overview, Key Findings, Entities, Concepts, Contradictions, Open Questions, Sources\n- Full frontmatter with related links to all pages created in this session\n\n---\n\n## Synthesis Page Structure\n\n```markdown\n---\ntype: synthesis\ntitle: \"Research: [Topic]\"\ncreated: YYYY-MM-DD\nupdated: YYYY-MM-DD\ntags:\n  - research\n  - [topic-tag]\nstatus: developing\nrelated:\n  - \"[[Every page created in this session]]\"\nsources:\n  - \"[[wiki/sources/Source 1]]\"\n  - \"[[wiki/sources/Source 2]]\"\n---\n\n# Research: [Topic]\n\n## Overview\n[2-3 sentence summary of what was found]\n\n## Key Findings\n- Finding 1 (Source: [[Source Page]])\n- Finding 2 (Source: [[Source Page]])\n- ...\n\n## Key Entities\n- [[Entity Name]]: role/significance\n\n## Key Concepts\n- [[Concept Name]]: one-line definition\n\n## Contradictions\n- [[Source A]] says X. [[Source B]] says Y. [Brief note on which is more credible and why]\n\n## Open Questions\n- [Question that research didn't fully answer]\n- [Gap that needs more sources]\n\n## Sources\n- [[Source 1]]: author, date\n- [[Source 2]]: author, date\n```\n\n---\n\n## After Filing\n\n1. Update `wiki/index.md`. Add all new pages to the right sections\n2. Append to `wiki/log.md` (at the TOP):\n   ```\n   ## [YYYY-MM-DD] autoresearch | [Topic]\n   - Rounds: N\n   - Sources found: N\n   - Pages created: [[Page 1]], [[Page 2]], ...\n   - Synthesis: [[Research: Topic]]\n   - Key finding: [one sentence]\n   ```\n3. Update `wiki/hot.md` with the research summary\n\n---\n\n## Report to User\n\nAfter filing everything:\n\n```\nResearch complete: [Topic]\n\nRounds: N | Searches: N | Pages created: N\n\nCreated:\n  wiki/questions/Research: [Topic].md (synthesis)\n  wiki/sources/[Source 1].md\n  wiki/concepts/[Concept 1].md\n  wiki/entities/[Entity 1].md\n\nKey findings:\n- [Finding 1]\n- [Finding 2]\n- [Finding 3]\n\nOpen questions filed: N\n```\n\n---\n\n## Constraints\n\nFollow the limits in `references/program.md`:\n- Max rounds (default: 3)\n- Max pages per session (default: 15)\n- Confidence scoring rules\n- Source preference rules\n\nIf a constraint conflicts with completeness, respect the constraint and note what was left out in the Open Questions section.","tags":["autoresearch","claude","obsidian","agricidaniel","agent-skills","ai-second-brain","autonomous-research","claude-code","claude-code-skill","claude-plugin","karpathy-llm-wiki","knowledge-graph"],"capabilities":["skill","source-agricidaniel","skill-autoresearch","topic-agent-skills","topic-ai-second-brain","topic-autonomous-research","topic-claude-code","topic-claude-code-skill","topic-claude-plugin","topic-karpathy-llm-wiki","topic-knowledge-graph","topic-knowledge-management","topic-llm","topic-multi-agent","topic-obsidian"],"categories":["claude-obsidian"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/AgriciDaniel/claude-obsidian/autoresearch","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add AgriciDaniel/claude-obsidian","source_repo":"https://github.com/AgriciDaniel/claude-obsidian","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 5150 github stars · SKILL.md body (6,721 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:52:43.875Z","embedding":null,"createdAt":"2026-05-18T12:53:56.803Z","updatedAt":"2026-05-18T18:52:43.875Z","lastSeenAt":"2026-05-18T18:52:43.875Z","tsv":"'-3':564,571,831 '-5':365,385,554 '/.vault-meta':259 '/autoresearch':152,218 '/dev/null':263 '/scripts/boundary-score.py':257,281 '0':273,323,523 '1':265,269,278,279,364,384,546,549,601,824,841,897,906,938,978,982,986,991 '15':1015 '2':264,300,558,563,570,589,826,830,846,901,917,940,993 '3':347,553,567,620,647,948,995,1009 '4':187,379,578 '5':284,288,395,592,610 '6':404,602 '7':612 '8':627 '9':640 'accept':247 'add':909 'adopt':228 'agenda':172,179 'agent':49,200 'alia':509 'alias':476,480 'alon':720 'alway':146,434 'angl':557,561,574 'answer':889 'anywher':472 'append':918 'array':319 'ask':377,531 'author':683,898,902 'autonom':2,42 'autoresearch':1,29,41,81,928 'b':167,517,869 'base':25,77,102 'bash':254 'behavior':499 'bodi':690 'boundari':169,267,271,276,292,321,418,455,521 'boundary-first':168 'brief':872 'broad':547 'c':329,416,511 'cancel':374,408 'candid':242,339,350,449 'chat':73 'check':622,721,743 'choos':412 'chosen':514 'claim':583,689 'come':764 'command':260 'complet':666,962,1027 'concept':585,706,714,727,772,856,857,981 'confid':129,687,1016 'configur':32,84,119 'conflict':1025 'constraint':35,113,135,1000,1024,1030 'contradict':598,630,773,863 'contribut':697 'control':173,180 'count':466 'creat':667,709,731,785,798,818,936,969,971 'credibl':878 'd':258 'date':684,899,903 'dd':802,807,927 'declar':477 'declin':250,527 'decompos':550 'default':230,497,515,1008,1014 'defin':86,121 'definit':862 'degre':295,297 'dep':40 'depth':94,654 'detect':252 'develop':814 'didn':886 'direct':197 'distinct':555 'domain':133 'domain-specif':132 'dragonscal':184,229 'duplic':732 'e.g':488 'edg':469 'els':270 'emit':311 'empti':317,338 'enough':717 'entir':216 'entiti':584,749,771,851,852,985 'everi':528,816 'everyth':18,62,763,960 'exist':635,726,748 'exit':307 'explicit':144 'extract':579,707 'failur':302 'fall':325,413 'featur':251 'fetch':12,613 'fi':274 'file':17,61,115,644,661,905,959,998 'filenam':459,502 'filename-stem':458 'fill':591 'find':15,59,770,839,840,845,945,989,990,992,994 'first':170,724,746 'folder':485 'folder-qualifi':484 'follow':1001 'foo':464 'foo.md':471 'found':676,837,933 'free':400,442 'free-text':441 'frontier':234,289,357,529 'frontmatt':479,679,778 'full':507,777 'fulli':888 'gap':590,608,618,625,890 'get':68 'given':159 'goe':98 'handl':303 'helper':301,306,456 'heurist':422 'hit':660 'identifi':593,742 'implement':506 'improvis':344 'index':723,745 'input':539 'invalid':312 'invok':220 'iter':3,55 'json':282,313 'karpathi':27,79 'key':582,688,769,838,850,855,944,988 'knowledg':101 'label':188 'layer':210 'left':1035 'limit':1003 'line':861 'link':451,487,781 'link-resolut':450 'list':340,351,360 'load':108 'loop':5,37,44,92,538 'major':629,674 'markdown':792 'master':761 'match':496 'max':609,645,658,1006,1010 'md':974,979,983,987 'measur':426 'mechan':186,190 'memori':183,209 'memory-lay':208 'memory.md':185 'miss':596,632 'mm':801,806,926 'mode':268,272,277,322,522 'move':201 'n':931,934,965,967,970,999 'name':853,858 'need':892 'new':911 'next':202 'non':309 'non-zero':308 'normal':378 'note':873,1032 'notes/foo':489 'object':33,88,111,425 'obsidian':498,508 'omit':213 'one':363,636,671,702,734,752,860,946 'one-lin':859 'open':586,774,881,996,1039 'opt':175 'opt-in':174 'option':437,623 'org':739 'otherwis':641 'output':97 'overrid':248,371,446 'overview':768,829 'page':24,70,290,358,389,577,669,672,703,711,728,735,750,754,784,790,817,844,849,912,935,937,939,968,1011 'pars':483 'pass':639 'path':139,215 'pattern':30,82 'per':573,673,704,736,1012 'person':738 'pick':383,530 'piec':633 'prefer':125,1020 'present':348 'proceed':642 'product':741 'program':85 'program.md':31,651 'prompt':333 'publish':685 'pure':182 'python3':262 'qualifi':486 'queri':566,611 'question':587,775,882,883,997,1040 'rather':729 'reach':96,656 'read':105 'recenc':298 'refer':675 'references/program.md':106,1005 'relat':780,815 'remain':626 'report':955 'research':4,43,48,110,155,199,361,431,536,537,664,756,796,809,827,885,942,953,961 'resolut':452,462,510 'resolv':491 'respect':147,1028 'respons':74 'result':318,572,615,662 'return':285,315 'right':915 'role/significance':854 'round':545,588,600,619,646,659,930,964,1007 'rule':1018,1021 'run':9,38,54,90,280,562,603 'say':151,373,866,870 'score':128,293,419,1017 'search':11,57,548,556,605,966 'section':165,328,767,916,1041 'select':137,171,388,543 'semant':453 'sentenc':832,947 'session':788,821,1013 'set':240,320,649 'shape':195 'shell':253 'signific':705,737 'skill' 'skill-autoresearch' 'skip':163 'sourc':13,123,678,681,694,776,822,842,843,847,848,864,868,894,895,896,900,932,977,1019 'source-agricidaniel' 'specif':134 'stand':719 'start':104 'status':813 'stem':460,493 'still':634 'stop':652 'strict':207 'structur':23,791 'subset':211 'substant':716 'summari':691,833,954 'surfac':232,448 'synthes':14,58 'synthesi':621,753,762,789,794,941,975 'tag':808,812 'take':6,51 'target':604,638 'text':401,443 'three':138 'titl':391,755,795 'togeth':765 'top':283,287,356,569,614,923 'topic':8,53,136,142,145,153,160,223,243,346,369,394,444,533,540,542,551,700,757,797,811,828,929,943,963,973 'topic-agent-skills' 'topic-ai-second-brain' 'topic-autonomous-research' 'topic-claude-code' 'topic-claude-code-skill' 'topic-claude-plugin' 'topic-karpathy-llm-wiki' 'topic-knowledge-graph' 'topic-knowledge-management' 'topic-llm' 'topic-multi-agent' 'topic-obsidian' 'topic-tag':810 'type':367,399,439,680,682,793 'unavail':519 'uniqu':501 'updat':725,747,803,907,949 'url':686 'use':157,386,402,457,677 'user':67,118,150,203,245,335,354,382,398,407,433,513,526,957 'user-chosen':512 'user-configur':117 'v':261 'vault':226,237,475 'verbatim':161 'via':478 'want':205 'web':10,56 'webfetch':575 'websearch':565 'weight':299 'wiki':21,65,69 'wiki/concepts':701,980 'wiki/entities':733,984 'wiki/hot.md':950 'wiki/index.md':908 'wiki/log.md':920 'wiki/questions':751 'wiki/questions/research':972 'wiki/sources':670,976 'wiki/sources/source':823,825 'wikilink':461 'without':221 'x':156,256,867 'y':871 'yyyi':800,805,925 'yyyy-mm-dd':799,804,924 'zero':310","prices":[{"id":"7991b528-a8ea-443a-b0a9-29553f64bb41","listingId":"1afdeda0-1aa5-41cc-b492-695b03337537","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"AgriciDaniel","category":"claude-obsidian","install_from":"skills.sh"},"createdAt":"2026-05-18T12:53:56.803Z"}],"sources":[{"listingId":"1afdeda0-1aa5-41cc-b492-695b03337537","source":"github","sourceId":"AgriciDaniel/claude-obsidian/autoresearch","sourceUrl":"https://github.com/AgriciDaniel/claude-obsidian/tree/main/skills/autoresearch","isPrimary":false,"firstSeenAt":"2026-05-18T12:53:56.803Z","lastSeenAt":"2026-05-18T18:52:43.875Z"}],"details":{"listingId":"1afdeda0-1aa5-41cc-b492-695b03337537","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"AgriciDaniel","slug":"autoresearch","github":{"repo":"AgriciDaniel/claude-obsidian","stars":5150,"topics":["agent-skills","ai","ai-second-brain","autonomous-research","claude-code","claude-code-skill","claude-plugin","karpathy-llm-wiki","knowledge-graph","knowledge-management","llm","multi-agent","obsidian","obsidian-ai","obsidian-plugin","open-source","pkm","rag","second-brain","wiki"],"license":"mit","html_url":"https://github.com/AgriciDaniel/claude-obsidian","pushed_at":"2026-04-24T10:21:48Z","description":"Claude + Obsidian knowledge companion. Persistent, compounding wiki vault based on Karpathy's LLM Wiki pattern. /wiki /save /autoresearch","skill_md_sha":"252cef370daaf300f2d5a16950ccd16c4222a5ef","skill_md_path":"skills/autoresearch/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/AgriciDaniel/claude-obsidian/tree/main/skills/autoresearch"},"layout":"multi","source":"github","category":"claude-obsidian","frontmatter":{"name":"autoresearch","description":"Autonomous iterative research loop. Takes a topic, runs web searches, fetches sources, synthesizes findings, and files everything into the wiki as structured pages. Based on Karpathy's autoresearch pattern: program.md configures objectives and constraints, the loop runs until depth is reached, output goes directly into the knowledge base. Triggers on: \"/autoresearch\", \"autoresearch\", \"research [topic]\", \"deep dive into [topic]\", \"investigate [topic]\", \"find everything about [topic]\", \"research and file\", \"go research\", \"build a wiki on\"."},"skills_sh_url":"https://skills.sh/AgriciDaniel/claude-obsidian/autoresearch"},"updatedAt":"2026-05-18T18:52:43.875Z"}}