Skip to content

Instantly share code, notes, and snippets.

@alycda
Last active May 8, 2026 08:04
Show Gist options
  • Select an option

  • Save alycda/b9ddd77389d09bddef8f07ed7335b290 to your computer and use it in GitHub Desktop.

Select an option

Save alycda/b9ddd77389d09bddef8f07ed7335b290 to your computer and use it in GitHub Desktop.
Hermes Researcher (agentskills.io)
name researcher
description Bootstraps a research-driven project end-to-end using StrongDM's Software Factory pattern. Generates a SEED.md, drafts a research brief, runs parallel deep-research sub-agents (Anthropic-only by default; multi-provider via Hermes profiles when --external is passed), downloads materials, and builds a semantic index. Trigger when the user wants to start a new project that needs systematic prior-art collection — phrases like "prior art", "research brief", "set up factory", "seed and research", "compound engineering", "bootstrap a project", or any reference to the multi-step pipeline. Do NOT use for one-off questions, single web searches, or projects that already have docs/research/index/ built.
version 0.2.0
metadata
hermes
tags category
research
factory
prior-art
seed
deep-research
research

Researcher

A 5-step pipeline that bootstraps a research-driven project: intent → seed → research brief → executed parallel research → downloaded materials → semantic index.

Built on the StrongDM Software Factory pattern: Seed → Validation harness → Feedback loop. Tokens are the fuel.

When to Use

Use this skill when:

  • Starting a new project that needs systematic prior-art collection
  • The user mentions "research brief", "prior art", "seed", "factory", "compound engineering", or "bootstrap a project"
  • The user wants to bootstrap a project the way the existing exemplar (see references/exemplar-seed.md) was bootstrapped
  • The user has a SEED.md and wants to drive it through to a built semantic index

Do NOT use for:

  • One-off questions ("what is X?")
  • Single web searches
  • Code review or implementation tasks
  • Projects that already have docs/research/index/ complete (jump to whatever step is actually needed instead, or run a single /researcher <step> slash variant)

Inputs

Input Source Required?
Project intent User (interactive Q&A in Step 0) Yes, unless SEED.md already exists
Seed exemplar references/exemplar-seed.md Built-in
Research brief exemplar references/exemplar-research-brief.md Built-in
StrongDM principles + techniques + products references/strongdm-*.md Built-in (refresh from web with --refresh)
Worker profiles for cross-provider Mode B ~/.hermes/profiles/researcher-codex/, ~/.hermes/profiles/researcher-gemini/ Optional — required only for --external flag. Setup: references/hermes-profile-setup.md
Web search tool Hermes built-in (default profile and worker profiles) Required for Step 1.5

Procedure

Step 0 — Seed (interactive)

Skip if SEED.md, IDEA.md, or README.md already exists at project root.

Otherwise follow references/prompt-0-seed.md:

  1. Confirm references/strongdm-principles.md is loaded (refresh from web if --refresh was passed).
  2. Probe the user across the four principle sections in order: Seed → Validation → Feedback → Apply More Tokens.
  3. Draft SEED.md section-by-section, showing each draft to the user before continuing.
  4. Surface 3–5 Open Questions; fold resolutions back in.
  5. Write SEED.md at project root.

Step 1 — Research Brief

Read references/prompt-1-research-brief.md. Produce RESEARCH-BRIEF.md at project root, modeled on references/exemplar-research-brief.md.

Important: the brief is external-safe by default — internal ticket IDs, customer names, and incident IDs are stripped or generalized so it can be dispatched to non-Anthropic providers in Step 1.5 without leaking. If internal anchors must be preserved, the brief is marked internal_only: true and Step 1.5 will refuse --external.

Step 1.5 — Execute Research

Read references/prompt-1.5-execute-research.md. Two modes:

  • Mode C (default, no flag) — Anthropic-only multi-perspective. Three delegate_task sub-agents on the parent's Anthropic provider, each with a different system prompt (theory / tooling / industry). Outputs docs/research/{theory,tooling,industry}.md. Safe — nothing leaves Anthropic.
  • Mode B (--external) — Cross-provider via Hermes profiles. Parent's terminal tool runs hermes -p <profile> chat -q ... for the default (anthropic), researcher-codex, and researcher-gemini profiles in parallel. Outputs docs/research/{claude,codex,gemini}.md. Requires --external AND explicit consent prompt confirmation.

If Mode B is requested but worker profiles are missing, fall back to Mode C and point the user at references/hermes-profile-setup.md.

Step 2 — Download Manifest

Read references/prompt-2-download-manifest.md. Produce docs/research/downloads.yaml (idempotent-upsert format; see templates/downloads.yaml.example).

Step 3 — Download

Read references/prompt-3-download.md. Spawn 5 sub-agents to download materials into inspiration/. Update yaml status as each completes. Verify and update .gitignore.

Step 4 — Semantic Index

Read references/prompt-4-semantic-index.md. Build docs/research/index/ using MapReduce-style sub-agents (one per source).

Pitfalls

  • Cold-start overconfidence. First runs cannot rely on cross-session memory. Spend more time on Step 0 probe questions than feels natural.
  • Mode B without consent. The --external flag does not bypass the consent prompt. Briefs naturally contain sensitive info; the phrase-confirmation gate exists because of that. Don't auto-confirm.
  • Sub-agent provider inheritance. Hermes's delegate_task sub-agents inherit the parent's provider — there is no per-call override. Cross-provider diversity requires profile-level orchestration (Mode B), not in-process sub-agents (Mode C).
  • Brief-quality bottleneck. Steps 2–4 only produce useful output if the Step 1 brief was high-quality. Vague brief → mediocre prior art across all researchers regardless of mode.
  • Token budget at Step 4. Don't read all of inspiration/ into a single context. MapReduce sub-agents are mandatory; serial reads will OOM.
  • inspiration/ gitignore. Step 3 must verify .gitignore excludes inspiration/. Failure can commit gigabytes of cloned repos and PDFs.
  • Hermes web search vs. hosted Deep Research. Hermes's web search is good but not equivalent to a multi-hour hosted Deep Research session. For projects where deeper browsing is needed, the user can hybrid: run the brief through hosted tools too, drop those outputs into docs/research/, and proceed with Step 2.
  • Profile name drift. Step 1.5 derives output filenames from profile names. If profiles are renamed (researcher-codexcodex), output filenames change. Document chosen names if the user is sharing the skill with teammates.

Verification

After Step 4, the project root should contain:

.
├── SEED.md                          # from Step 0
├── RESEARCH-BRIEF.md                # from Step 1
├── .gitignore                       # contains "inspiration/"
├── inspiration/                     # populated, gitignored
└── docs/
    └── research/
        ├── claude.md (Mode B) or theory.md (Mode C)
        ├── codex.md  (Mode B) or tooling.md (Mode C)
        ├── gemini.md (Mode B) or industry.md (Mode C)
        ├── downloads.yaml           # from Step 2
        └── index/                   # from Step 4
            ├── README.md
            ├── by-topic.md
            ├── by-tag.md
            ├── clusters.md
            ├── top-N.md
            ├── cross-references.md
            ├── open-questions.md
            └── _per_source/

A successful run means a downstream non-interactive coding agent (Attractor, Fabro, Kilroy, or equivalent) can be pointed at this directory and start producing code. This skill is tool-agnostic — it produces the artifacts; downstream agents consume them.

Slash Command Behavior

Command Behavior
/researcher Start the pipeline; if SEED.md exists, ask whether to skip Step 0. Default Mode C for Step 1.5.
/researcher --refresh Refresh cached StrongDM principles before Step 0
/researcher --external Use Mode B for Step 1.5 (cross-provider via worker profiles). Requires consent prompt.
/researcher seed Step 0 only
/researcher brief Step 1 only (assumes SEED.md exists)
/researcher research Step 1.5 only — Mode C
/researcher research --external Step 1.5 only — Mode B
/researcher manifest Step 2 only
/researcher download Step 3 only
/researcher index Step 4 only
/researcher index --rebuild Step 4, regenerating from scratch

First-Time Setup (Mode B Only)

If the user wants Mode B (cross-provider diversity), point them at references/hermes-profile-setup.md for one-time profile creation. Mode C requires no setup — it works out of the box on the default Anthropic profile.

Related

# docs/research/downloads.yaml
# Idempotent-upsert format. The `url` field is the unique key.
# Each entry tracks a source's download state across re-runs.
#
# Step 2 produces this file (upsert: new URLs added as `pending`,
# existing entries' status/path/notes preserved).
# Step 3 updates `status` and `path` as downloads complete.
version: 1
entries:
# A successfully-downloaded paper
- url: https://arxiv.org/abs/2406.12345
kind: paper
title: "Some CRDT Paper"
cited_in: [claude-opus, gpt-5]
status: done # pending | downloading | done | failed | skipped
path: inspiration/papers/2406.12345.pdf
notes: "Foundational; see section 4.2"
# A repo waiting to be downloaded
- url: https://github.com/owner/repo
kind: repo
title: "Reference Implementation"
cited_in: [gpt-5, gemini-2-pro]
status: pending
path: null
# A failed download (404, network error, etc.)
- url: https://example.com/blog/postmortem
kind: article
title: "ABI Breakage Postmortem"
cited_in: [claude-opus]
status: failed
path: null
notes: "404 — try archive.org/web/*/example.com/blog/postmortem"
# A paywalled / auth-gated source skipped on purpose
- url: https://docs.example.com/sdk/
kind: docs
title: "SDK Documentation"
cited_in: [gemini-2-pro]
status: skipped
path: null
notes: "Auth-gated; download manually"
# A repo too large to clone under default size cap
- url: https://github.com/giant/monorepo
kind: repo
title: "Giant Monorepo"
cited_in: [theory]
status: skipped
path: null
notes: "Size > max_size_mb; clone manually if needed"

SEED:

Entry point for agentic development. Follow the loop: Validation → Feedback → repeat until holdout scenarios pass and stay passing.


What We're Building

<2–3 paragraph description of the project>

One-line version:


Why This Exists

Current state: <what's broken / blocking / suboptimal today>

Target state:

Secondary use case: <optional — adjacent value>


Validation Harness

Must be end-to-end, as close to real as possible: real binary, real protocol, real platform matrix.

Holdout Scenarios (loop runs until these pass and stay passing)

# Scenario Platform
1 <concrete, end-to-end behavior>
2 ... ...

What "Real Environment" Means Here

What Is NOT "Real" (explicitly out of scope)


Feedback Loop

Each run of the validation harness produces a feedback signal fed back into the inputs:

Output Fed Back As

Loop exit condition:


Apply More Tokens

For every obstacle, ask: how can we convert this problem into a representation the model can understand?

Obstacle Token Form
<existing artifact / data source>

Related Tickets

  • <TICKET-ID>

Open Questions (Resolved)

  1. ?

    .


Seed authored: . Loop not yet started. Holdout scenarios: not yet green.

@alycda

alycda commented May 7, 2026

Copy link
Copy Markdown
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment