#216 by GitHub stars

uditgoenka/autoresearch

Claude Autoresearch Skill — Autonomous goal-directed iteration for Claude Code. Inspired by Karpathy's autoresearch. Modify → Verify → Keep/Discard → Repeat forever.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

.muse/skills/autoresearch/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 7bddd056dfd0

No earlier version was observed for comparison.

Compare on GitHub

.opencode/skills/autoresearch/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 7bddd056dfd0

No earlier version was observed for comparison.

Compare on GitHub

claude-plugin/skills/autoresearch/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 7bddd056dfd0

No earlier version was observed for comparison.

Compare on GitHub

pi-extension/skills/autoresearch/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 7bddd056dfd0

No earlier version was observed for comparison.

Compare on GitHub

plugins/autoresearch/skills/autoresearch/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 7bddd056dfd0

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 7bddd056dfd0b0ded8360588d8101b1ecb5c0baa

git clone --filter=blob:none --no-checkout https://github.com/uditgoenka/autoresearch.git .hotskills/uditgoenka-autoresearch && git -C .hotskills/uditgoenka-autoresearch checkout --detach 7bddd056dfd0b0ded8360588d8101b1ecb5c0baa # Copy each selected skill directory from .hotskills/uditgoenka-autoresearch into .claude/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/uditgoenka/autoresearch.git .hotskills/uditgoenka-autoresearch && git -C .hotskills/uditgoenka-autoresearch checkout --detach 7bddd056dfd0b0ded8360588d8101b1ecb5c0baa # Copy each selected skill directory from .hotskills/uditgoenka-autoresearch into .agents/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/uditgoenka/autoresearch.git .hotskills/uditgoenka-autoresearch && git -C .hotskills/uditgoenka-autoresearch checkout --detach 7bddd056dfd0b0ded8360588d8101b1ecb5c0baa # Copy each selected skill directory from .hotskills/uditgoenka-autoresearch into .opencode/skills/<skill-name>/
6.8kGitHub stars
33stars in 7 days
5skills in this repository
11commits in 30 days

Heat

4.5
  • Star growth, last 7 daysAhead of 70% of tracked repositories
  • Star growth, last 24 hoursAhead of 3% of tracked repositories
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysAhead of 78% of tracked repositories
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekAhead of 0% of tracked repositories

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Aug 9, 2026Nov 6, 20266,812

Individual skills in this repository

How it works

autoresearch

When your agent uses it

Autonomous iteration loop: modify, verify, keep/discard against any metric

What it loads into context

Frontmatter

32 tokens

Always available to the agent

SKILL.md

2,414 tokens

When the skill is activated

Reference documents

25,749 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Safety Invariants (all subcommands)
  2. Dispatch (bare `autoresearch`)
  3. Subcommands
  4. Universal Flags
  5. Getting Unstuck: Fork-and-Flush
  6. Orchestrator

Scripts executed separately

  • scripts/orchestrate.sh
  • scripts/score-regression.sh

Files

  • ../../../.claude-plugin/marketplace.jsonasset878 bytes
  • ../../../.claude/hooks/autoresearch/hooks.jsonasset3,662 bytes
  • ../../../.claude/hooks/autoresearch/hooks.jsonasset3,662 bytes
  • ../../../.claude/hooks/autoresearch/hooks.jsonasset3,662 bytes
  • ../../../.claude/hooks/autoresearch/hooks.jsonasset3,662 bytes
  • ../../../.claude/hooks/autoresearch/hooks.jsonasset3,662 bytes
  • ../../../.claude/hooks/autoresearch/hooks.jsonasset3,662 bytes
  • ../../../.claude/hooks/autoresearch/hooks.jsonasset3,662 bytes
  • ../../../.claude/hooks/autoresearch/hooks.jsonasset3,662 bytes
  • ../../../.claude/hooks/autoresearch/hooks.jsonasset3,662 bytes
  • ../../../.claude/hooks/autoresearch/hooks.jsonasset3,662 bytes
  • ../../../.claude/hooks/autoresearch/hooks.jsonasset3,662 bytes
  • ../../../.claude/hooks/autoresearch/hooks.jsonasset3,662 bytes
  • ../../../.claude/hooks/autoresearch/hooks.jsonasset3,662 bytes
  • ../../../.claude/hooks/autoresearch/hooks.jsonasset3,662 bytes
  • ../../../.claude/hooks/autoresearch/hooks.jsonasset3,662 bytes
  • SKILL.mdcore10,012 bytes
  • SKILL.mdcore10,012 bytes
  • SKILL.mdcore10,012 bytes
  • SKILL.mdcore10,012 bytes
  • SKILL.mdcore10,012 bytes
  • autoresearch.mddoc6,532 bytes
  • debug.mddoc4,155 bytes
  • evals.mddoc5,202 bytes
  • fix.mddoc4,491 bytes
  • improve.mddoc6,200 bytes
  • learn.mddoc8,163 bytes
  • plan.mddoc3,348 bytes
  • predict.mddoc3,906 bytes
  • probe.mddoc5,031 bytes
  • reason.mddoc4,863 bytes
  • references/behavior-preserving-optimization.mddoc2,692 bytes
  • references/fork-and-flush.mddoc8,602 bytes
  • references/orchestrator-routing.mddoc7,350 bytes
  • references/predict-personas.mddoc3,145 bytes
  • references/reason-judge-protocol.mddoc3,508 bytes
  • references/security-checklist.mddoc3,524 bytes
  • regression.mddoc9,581 bytes
  • scenario.mddoc4,289 bytes
  • scripts/orchestrate.shruns29,476 bytes
  • scripts/score-regression.shruns7,775 bytes
  • security.mddoc4,778 bytes
  • ship.mddoc4,007 bytes
  • ../../../claude-plugin/.claude-plugin/plugin.jsonasset601 bytes
  • ../../../claude-plugin/hooks/hooks.jsonasset3,662 bytes
  • ../../../claude-plugin/hooks/hooks.jsonasset3,662 bytes
  • ../../../claude-plugin/hooks/hooks.jsonasset3,662 bytes
  • ../../../claude-plugin/hooks/hooks.jsonasset3,662 bytes
  • ../../../claude-plugin/hooks/hooks.jsonasset3,662 bytes
  • ../../../claude-plugin/hooks/hooks.jsonasset3,662 bytes
  • ../../../claude-plugin/hooks/hooks.jsonasset3,662 bytes
  • ../../../claude-plugin/hooks/hooks.jsonasset3,662 bytes
  • ../../../claude-plugin/hooks/hooks.jsonasset3,662 bytes
  • ../../../claude-plugin/hooks/hooks.jsonasset3,662 bytes
  • ../../../claude-plugin/hooks/hooks.jsonasset3,662 bytes
  • ../../../claude-plugin/hooks/hooks.jsonasset3,662 bytes
  • ../../../claude-plugin/hooks/hooks.jsonasset3,662 bytes
  • ../../../claude-plugin/hooks/hooks.jsonasset3,662 bytes
  • ../../../claude-plugin/hooks/hooks.jsonasset3,662 bytes
Read SKILL.md

# Autoresearch — Autonomous Goal-directed Iteration

## Safety Invariants (all subcommands)
- Never push, publish, or deploy without explicit user approval.
- Bounded by default. Override with `Iterations: unlimited`.
- All results logged to `autoresearch/{subcommand}-{YYMMDD}-{HHMM}/` directory.
- Chain handoff via `handoff.json`. Evals reads `*-results.tsv`.

## Dispatch (bare `autoresearch`)

Parse the invocation in this order:

| Condition | Mode |
|---|---|
View the complete source on GitHub

Skills included

  • autoresearch
  • autoresearch
  • autoresearch
  • autoresearch
  • autoresearch

Repository facts

License
MIT
Created
Mar 13, 2026
Last pushed
Oct 31, 2026
Forks
491
Open issues
0
Project activity
Active

Rank over the last 12 weeks

Now #216 · best #181 · down 17 in 30 days

  1. #205 from Oct 17 to Oct 18
  2. #207 on Oct 19
  3. #206 from Oct 20 to Oct 21
  4. #205 on Oct 22
  5. #206 from Oct 23 to Oct 24
  6. #216 since Nov 7
57 earlier periods
  1. #178 on Aug 9
  2. #181 from Aug 10 to Aug 11
  3. #179 on Aug 12
  4. #183 from Aug 13 to Aug 14
  5. #182 from Aug 15 to Aug 17
  6. #185 on Aug 18
  7. #184 on Aug 19
  8. #181 on Aug 20
  9. #184 on Aug 21
  10. #182 on Aug 22
  11. #188 on Aug 23
  12. #187 on Aug 24
  13. #189 on Aug 25
  14. #191 on Aug 26
  15. #193 on Aug 27
  16. #192 on Aug 28
  17. #193 on Aug 29
  18. #192 from Aug 30 to Aug 31
  19. #197 on Sep 1
  20. #191 on Sep 2
  21. #197 on Sep 3
  22. #192 on Sep 4
  23. #193 on Sep 5
  24. #188 on Sep 6
  25. #191 on Sep 7
  26. #190 on Sep 8
  27. #192 from Sep 9 to Sep 11
  28. #193 on Sep 12
  29. #194 on Sep 13
  30. #195 on Sep 14
  31. #194 from Sep 15 to Sep 16
  32. #195 on Sep 17
  33. #197 on Sep 18
  34. #194 on Sep 19
  35. #196 on Sep 20
  36. #197 from Sep 21 to Sep 23
  37. #196 on Sep 24
  38. #194 on Sep 25
  39. #195 on Sep 26
  40. #196 on Sep 27
  41. #197 from Sep 28 to Sep 29
  42. #196 on Sep 30
  43. #198 on Oct 1
  44. #200 on Oct 2
  45. #197 on Oct 3
  46. #195 on Oct 4
  47. #198 from Oct 5 to Oct 6
  48. #200 on Oct 7
  49. #199 on Oct 8
  50. #204 on Oct 9
  51. #201 on Oct 10
  52. #202 on Oct 11
  53. #204 on Oct 12
  54. #205 on Oct 13
  55. #204 on Oct 14
  56. #203 on Oct 15
  57. #201 on Oct 16

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 7, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 48 notes
  • .claude/hooks/autoresearch/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .claude/hooks/autoresearch/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .claude/hooks/autoresearch/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .claude/hooks/autoresearch/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .claude/hooks/autoresearch/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .claude/hooks/autoresearch/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .claude/hooks/autoresearch/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .claude/hooks/autoresearch/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .claude/hooks/autoresearch/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .claude/hooks/autoresearch/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .claude/hooks/autoresearch/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .claude/hooks/autoresearch/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .claude/hooks/autoresearch/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .claude/hooks/autoresearch/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .muse/skills/autoresearch/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .muse/skills/autoresearch/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .muse/skills/autoresearch/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .muse/skills/autoresearch/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • claude-plugin/hooks/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • claude-plugin/hooks/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 141 signals by file

.claude-plugin/marketplace.json

  • Network accessline 1
    {   "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
  • Network accessline 2
    "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
  • Network accessline 6
    "owner": {     "name": "Udit Goenka",     "url": "https://github.com/uditgoenka"
  • Network accessline 7
    "name": "Udit Goenka",     "url": "https://github.com/uditgoenka"   },
  • Network accessline 8
    "url": "https://github.com/uditgoenka"
  • Network accessline 15
    "author": {         "name": "Udit Goenka",         "url": "https://github.com/uditgoenka"
  • Network accessline 16
    "name": "Udit Goenka",         "url": "https://github.com/uditgoenka"       },
  • Network accessline 17
    "url": "https://github.com/uditgoenka"

.muse/skills/autoresearch/autoresearch.md

  • Dangerous shell operationline 55
    Before first dry-run, screen Verify command for: rm -rf, fork bombs, curl|sh, embedded credentials, outbound writes. Block dangerous commands.

.muse/skills/autoresearch/learn.md

  • Access to secretsline 80
    [Credential-related source omitted]

.muse/skills/autoresearch/plan.md

  • Dangerous shell operationline 61
    3. **Safety screen:** check proposed command for rm -rf, fork bombs, curl|sh, credentials

.muse/skills/autoresearch/references/fork-and-flush.md

  • Network accessline 3
    How a metric loop gets out of an idea basin. Sources: Cai et al., "Fork-and-Flush: Escaping Idea Basins in Autoresearch Agents" ([arXiv:2610.07447](https://arxiv.org/abs/2610.07447)), for the random branches, and Zhang et
  • Network accessline 4
    Autoresearch Agents" ([arXiv:2610.07447](https://arxiv.org/abs/2610.07447)), for the random branches, and Zhang et
  • Network accessline 6
    ([arXiv:2610.07625](https://arxiv.org/abs/2610.07625)), for the guided branches.

.muse/skills/autoresearch/regression.md

  • Dangerous shell operationline 111
    Verify-command screen (no `rm -rf` / `curl|sh`); worktree cleanup + prune on crash; data-migration refuses any non-allowlisted DB URL; probe auto-skips non-interactively; chained `ship` never auto-deploys.

.muse/skills/autoresearch/scripts/orchestrate.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Dangerous shell operationline 231
    # The shell drops quotes and backslashes before it runs a name, so 'rm' and \rm are rm.
  • Dangerous shell operationline 270
    # A glob in a command name (r?, /bin/r[m], sudo r*) can match any program, so a glob
  • Dangerous shell operationline 273
    # option value (sudo -u root) can come before the name. Globs in arguments
  • Dangerous shell operationline 318
    # Each command matcher below starts at a space, ; & | ( ) { ` $ < or >, so `true;rm -rf /   # and `$(rm -rf ~)` are seen too. Flags are read from $bare, so rm "-rf" / is too.
  • Dangerous shell operationline 319
    # and `$(rm -rf ~)` are seen too. Flags are read from $bare, so rm "-rf" / is too.
  • Dangerous shell operationline 320
    # rm with recursive AND force, in any flag arrangement: bundled (-rf/-Rf/-fr),
  • Network accessline 333
    # curl/wget piped to an interpreter (sh/bash/zsh/dash/fish/ksh/python/perl/ruby/
  • Network accessline 334
    # node/php), including a path-qualified one (| /bin/bash). Enumerated interpreters   # rather than "refuse any curl pipe" so a legitimate derived predicate that pipes   # curl output to a parser (jq/grep/awk) is not falsely refused.
  • Network accessline 335
    # rather than "refuse any curl pipe" so a legitimate derived predicate that pipes
  • Network accessline 336
    # curl output to a parser (jq/grep/awk) is not falsely refused.
  • Network accessline 341
    # curl/wget piped through a launcher (sudo, env, exec, ...) into an interpreter.
  • Dangerous shell operationline 346
    # A remote payload run without a pipe: bash <(curl ...), source <(curl ...),
  • Network accessline 346
    # A remote payload run without a pipe: bash <(curl ...), source <(curl ...),
  • Dangerous shell operationline 347
    # bash -c "$(curl ...)", eval "$(curl ...)".
  • Network accessline 347
    # bash -c "$(curl ...)", eval "$(curl ...)".
  • Network accessline 355
    # curl/wget routed through xargs into an interpreter. The xargs wrapper sidesteps the
  • Network accessline 361
    # Output piped to netcat exfiltrates data off-host.
  • Dangerous shell operationline 379
    # find ... -delete mass-removes matched files. Both tokens required so a plain find

.muse/skills/autoresearch/scripts/score-regression.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

.opencode/commands/autoresearch.md

  • Dangerous shell operationline 55
    Before first dry-run, screen Verify command for: rm -rf, fork bombs, curl|sh, embedded credentials, outbound writes. Block dangerous commands.

.opencode/skills/autoresearch/references/fork-and-flush.md

  • Network accessline 3
    How a metric loop gets out of an idea basin. Sources: Cai et al., "Fork-and-Flush: Escaping Idea Basins in Autoresearch Agents" ([arXiv:2610.07447](https://arxiv.org/abs/2610.07447)), for the random branches, and Zhang et
  • Network accessline 4
    Autoresearch Agents" ([arXiv:2610.07447](https://arxiv.org/abs/2610.07447)), for the random branches, and Zhang et
  • Network accessline 6
    ([arXiv:2610.07625](https://arxiv.org/abs/2610.07625)), for the guided branches.

.opencode/skills/autoresearch/scripts/orchestrate.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Dangerous shell operationline 231
    # The shell drops quotes and backslashes before it runs a name, so 'rm' and \rm are rm.
  • Dangerous shell operationline 270
    # A glob in a command name (r?, /bin/r[m], sudo r*) can match any program, so a glob
  • Dangerous shell operationline 273
    # option value (sudo -u root) can come before the name. Globs in arguments
  • Dangerous shell operationline 318
    # Each command matcher below starts at a space, ; & | ( ) { ` $ < or >, so `true;rm -rf /   # and `$(rm -rf ~)` are seen too. Flags are read from $bare, so rm "-rf" / is too.
  • Dangerous shell operationline 319
    # and `$(rm -rf ~)` are seen too. Flags are read from $bare, so rm "-rf" / is too.
  • Dangerous shell operationline 320
    # rm with recursive AND force, in any flag arrangement: bundled (-rf/-Rf/-fr),
  • Network accessline 333
    # curl/wget piped to an interpreter (sh/bash/zsh/dash/fish/ksh/python/perl/ruby/
  • Network accessline 334
    # node/php), including a path-qualified one (| /bin/bash). Enumerated interpreters   # rather than "refuse any curl pipe" so a legitimate derived predicate that pipes   # curl output to a parser (jq/grep/awk) is not falsely refused.
  • Network accessline 335
    # rather than "refuse any curl pipe" so a legitimate derived predicate that pipes
  • Network accessline 336
    # curl output to a parser (jq/grep/awk) is not falsely refused.
  • Network accessline 341
    # curl/wget piped through a launcher (sudo, env, exec, ...) into an interpreter.
  • Dangerous shell operationline 346
    # A remote payload run without a pipe: bash <(curl ...), source <(curl ...),
  • Network accessline 346
    # A remote payload run without a pipe: bash <(curl ...), source <(curl ...),
  • Dangerous shell operationline 347
    # bash -c "$(curl ...)", eval "$(curl ...)".
  • Network accessline 347
    # bash -c "$(curl ...)", eval "$(curl ...)".
  • Network accessline 355
    # curl/wget routed through xargs into an interpreter. The xargs wrapper sidesteps the
  • Network accessline 361
    # Output piped to netcat exfiltrates data off-host.
  • Dangerous shell operationline 379
    # find ... -delete mass-removes matched files. Both tokens required so a plain find

.opencode/skills/autoresearch/scripts/score-regression.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

claude-plugin/.claude-plugin/plugin.json

  • Network accessline 5
    "author": {     "name": "Udit Goenka",     "url": "https://github.com/uditgoenka"
  • Network accessline 6
    "name": "Udit Goenka",     "url": "https://github.com/uditgoenka"   },
  • Network accessline 7
    "url": "https://github.com/uditgoenka"
  • Network accessline 8
    },   "repository": "https://github.com/uditgoenka/autoresearch",   "license": "MIT",
  • Network accessline 9
    "repository": "https://github.com/uditgoenka/autoresearch",
  • Network accessline 10
    "license": "MIT",   "homepage": "https://github.com/uditgoenka/autoresearch",   "keywords": [
  • Network accessline 11
    "homepage": "https://github.com/uditgoenka/autoresearch",

claude-plugin/commands/autoresearch.md

  • Dangerous shell operationline 55
    Before first dry-run, screen Verify command for: rm -rf, fork bombs, curl|sh, embedded credentials, outbound writes. Block dangerous commands.

claude-plugin/skills/autoresearch/references/fork-and-flush.md

  • Network accessline 3
    How a metric loop gets out of an idea basin. Sources: Cai et al., "Fork-and-Flush: Escaping Idea Basins in Autoresearch Agents" ([arXiv:2610.07447](https://arxiv.org/abs/2610.07447)), for the random branches, and Zhang et
  • Network accessline 4
    Autoresearch Agents" ([arXiv:2610.07447](https://arxiv.org/abs/2610.07447)), for the random branches, and Zhang et
  • Network accessline 6
    ([arXiv:2610.07625](https://arxiv.org/abs/2610.07625)), for the guided branches.

claude-plugin/skills/autoresearch/scripts/orchestrate.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Dangerous shell operationline 231
    # The shell drops quotes and backslashes before it runs a name, so 'rm' and \rm are rm.
  • Dangerous shell operationline 270
    # A glob in a command name (r?, /bin/r[m], sudo r*) can match any program, so a glob
  • Dangerous shell operationline 273
    # option value (sudo -u root) can come before the name. Globs in arguments
  • Dangerous shell operationline 318
    # Each command matcher below starts at a space, ; & | ( ) { ` $ < or >, so `true;rm -rf /   # and `$(rm -rf ~)` are seen too. Flags are read from $bare, so rm "-rf" / is too.
  • Dangerous shell operationline 319
    # and `$(rm -rf ~)` are seen too. Flags are read from $bare, so rm "-rf" / is too.
  • Dangerous shell operationline 320
    # rm with recursive AND force, in any flag arrangement: bundled (-rf/-Rf/-fr),
  • Network accessline 333
    # curl/wget piped to an interpreter (sh/bash/zsh/dash/fish/ksh/python/perl/ruby/
  • Network accessline 334
    # node/php), including a path-qualified one (| /bin/bash). Enumerated interpreters   # rather than "refuse any curl pipe" so a legitimate derived predicate that pipes   # curl output to a parser (jq/grep/awk) is not falsely refused.
  • Network accessline 335
    # rather than "refuse any curl pipe" so a legitimate derived predicate that pipes
  • Network accessline 336
    # curl output to a parser (jq/grep/awk) is not falsely refused.
  • Network accessline 341
    # curl/wget piped through a launcher (sudo, env, exec, ...) into an interpreter.
  • Dangerous shell operationline 346
    # A remote payload run without a pipe: bash <(curl ...), source <(curl ...),
  • Network accessline 346
    # A remote payload run without a pipe: bash <(curl ...), source <(curl ...),
  • Dangerous shell operationline 347
    # bash -c "$(curl ...)", eval "$(curl ...)".
  • Network accessline 347
    # bash -c "$(curl ...)", eval "$(curl ...)".
  • Network accessline 355
    # curl/wget routed through xargs into an interpreter. The xargs wrapper sidesteps the
  • Network accessline 361
    # Output piped to netcat exfiltrates data off-host.
  • Dangerous shell operationline 379
    # find ... -delete mass-removes matched files. Both tokens required so a plain find

claude-plugin/skills/autoresearch/scripts/score-regression.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

pi-extension/prompts/autoresearch.md

  • Dangerous shell operationline 55
    Before first dry-run, screen Verify command for: rm -rf, fork bombs, curl|sh, embedded credentials, outbound writes. Block dangerous commands.

pi-extension/skills/autoresearch/references/fork-and-flush.md

  • Network accessline 3
    How a metric loop gets out of an idea basin. Sources: Cai et al., "Fork-and-Flush: Escaping Idea Basins in Autoresearch Agents" ([arXiv:2610.07447](https://arxiv.org/abs/2610.07447)), for the random branches, and Zhang et
  • Network accessline 4
    Autoresearch Agents" ([arXiv:2610.07447](https://arxiv.org/abs/2610.07447)), for the random branches, and Zhang et
  • Network accessline 6
    ([arXiv:2610.07625](https://arxiv.org/abs/2610.07625)), for the guided branches.

pi-extension/skills/autoresearch/scripts/orchestrate.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Dangerous shell operationline 231
    # The shell drops quotes and backslashes before it runs a name, so 'rm' and \rm are rm.
  • Dangerous shell operationline 270
    # A glob in a command name (r?, /bin/r[m], sudo r*) can match any program, so a glob
  • Dangerous shell operationline 273
    # option value (sudo -u root) can come before the name. Globs in arguments
  • Dangerous shell operationline 318
    # Each command matcher below starts at a space, ; & | ( ) { ` $ < or >, so `true;rm -rf /   # and `$(rm -rf ~)` are seen too. Flags are read from $bare, so rm "-rf" / is too.
  • Dangerous shell operationline 319
    # and `$(rm -rf ~)` are seen too. Flags are read from $bare, so rm "-rf" / is too.
  • Dangerous shell operationline 320
    # rm with recursive AND force, in any flag arrangement: bundled (-rf/-Rf/-fr),
  • Network accessline 333
    # curl/wget piped to an interpreter (sh/bash/zsh/dash/fish/ksh/python/perl/ruby/
  • Network accessline 334
    # node/php), including a path-qualified one (| /bin/bash). Enumerated interpreters   # rather than "refuse any curl pipe" so a legitimate derived predicate that pipes   # curl output to a parser (jq/grep/awk) is not falsely refused.
  • Network accessline 335
    # rather than "refuse any curl pipe" so a legitimate derived predicate that pipes
  • Network accessline 336
    # curl output to a parser (jq/grep/awk) is not falsely refused.
  • Network accessline 341
    # curl/wget piped through a launcher (sudo, env, exec, ...) into an interpreter.
  • Dangerous shell operationline 346
    # A remote payload run without a pipe: bash <(curl ...), source <(curl ...),
  • Network accessline 346
    # A remote payload run without a pipe: bash <(curl ...), source <(curl ...),
  • Dangerous shell operationline 347
    # bash -c "$(curl ...)", eval "$(curl ...)".
  • Network accessline 347
    # bash -c "$(curl ...)", eval "$(curl ...)".
  • Network accessline 355
    # curl/wget routed through xargs into an interpreter. The xargs wrapper sidesteps the
  • Network accessline 361
    # Output piped to netcat exfiltrates data off-host.
  • Dangerous shell operationline 379
    # find ... -delete mass-removes matched files. Both tokens required so a plain find

pi-extension/skills/autoresearch/scripts/score-regression.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

plugins/autoresearch/skills/autoresearch/autoresearch.md

  • Dangerous shell operationline 55
    Before first dry-run, screen Verify command for: rm -rf, fork bombs, curl|sh, embedded credentials, outbound writes. Block dangerous commands.

plugins/autoresearch/skills/autoresearch/learn.md

  • Access to secretsline 80
    [Credential-related source omitted]

plugins/autoresearch/skills/autoresearch/plan.md

  • Dangerous shell operationline 61
    3. **Safety screen:** check proposed command for rm -rf, fork bombs, curl|sh, credentials

plugins/autoresearch/skills/autoresearch/references/fork-and-flush.md

  • Network accessline 3
    How a metric loop gets out of an idea basin. Sources: Cai et al., "Fork-and-Flush: Escaping Idea Basins in Autoresearch Agents" ([arXiv:2610.07447](https://arxiv.org/abs/2610.07447)), for the random branches, and Zhang et
  • Network accessline 4
    Autoresearch Agents" ([arXiv:2610.07447](https://arxiv.org/abs/2610.07447)), for the random branches, and Zhang et
  • Network accessline 6
    ([arXiv:2610.07625](https://arxiv.org/abs/2610.07625)), for the guided branches.

plugins/autoresearch/skills/autoresearch/regression.md

  • Dangerous shell operationline 111
    Verify-command screen (no `rm -rf` / `curl|sh`); worktree cleanup + prune on crash; data-migration refuses any non-allowlisted DB URL; probe auto-skips non-interactively; chained `ship` never auto-deploys.

plugins/autoresearch/skills/autoresearch/scripts/orchestrate.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Dangerous shell operationline 231
    # The shell drops quotes and backslashes before it runs a name, so 'rm' and \rm are rm.
  • Dangerous shell operationline 270
    # A glob in a command name (r?, /bin/r[m], sudo r*) can match any program, so a glob
  • Dangerous shell operationline 273
    # option value (sudo -u root) can come before the name. Globs in arguments
  • Dangerous shell operationline 318
    # Each command matcher below starts at a space, ; & | ( ) { ` $ < or >, so `true;rm -rf /   # and `$(rm -rf ~)` are seen too. Flags are read from $bare, so rm "-rf" / is too.
  • Dangerous shell operationline 319
    # and `$(rm -rf ~)` are seen too. Flags are read from $bare, so rm "-rf" / is too.
  • Dangerous shell operationline 320
    # rm with recursive AND force, in any flag arrangement: bundled (-rf/-Rf/-fr),
  • Network accessline 333
    # curl/wget piped to an interpreter (sh/bash/zsh/dash/fish/ksh/python/perl/ruby/
  • Network accessline 334
    # node/php), including a path-qualified one (| /bin/bash). Enumerated interpreters   # rather than "refuse any curl pipe" so a legitimate derived predicate that pipes   # curl output to a parser (jq/grep/awk) is not falsely refused.
  • Network accessline 335
    # rather than "refuse any curl pipe" so a legitimate derived predicate that pipes
  • Network accessline 336
    # curl output to a parser (jq/grep/awk) is not falsely refused.
  • Network accessline 341
    # curl/wget piped through a launcher (sudo, env, exec, ...) into an interpreter.
  • Dangerous shell operationline 346
    # A remote payload run without a pipe: bash <(curl ...), source <(curl ...),
  • Network accessline 346
    # A remote payload run without a pipe: bash <(curl ...), source <(curl ...),
  • Dangerous shell operationline 347
    # bash -c "$(curl ...)", eval "$(curl ...)".
  • Network accessline 347
    # bash -c "$(curl ...)", eval "$(curl ...)".
  • Network accessline 355
    # curl/wget routed through xargs into an interpreter. The xargs wrapper sidesteps the
  • Network accessline 361
    # Output piped to netcat exfiltrates data off-host.
  • Dangerous shell operationline 379
    # find ... -delete mass-removes matched files. Both tokens required so a plain find

plugins/autoresearch/skills/autoresearch/scripts/score-regression.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Signal confidence: 126 facts

and 76 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md .muse/skills/autoresearch/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md .muse/skills/autoresearch/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md .muse/skills/autoresearch/SKILL.md.github/skills/<skill-name>/
OpenCodeNativePath .opencode/agents/docs-manager.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.

Explore alternatives and comparisons

Add this badge to your README

It updates every night and links to this page.

uditgoenka/autoresearch: #216 on hotskills, 6.8k stars

[![uditgoenka/autoresearch on hotskills](https://hotskills.dev/badge/uditgoenka-autoresearch.svg)](https://hotskills.dev/skill/uditgoenka-autoresearch/)