Align release metadata, capability-scoped support, installation guidance, hook boundaries, maintainer documentation, changelog ownership, and the PR-first release procedure with the stabilized distributions.
Constraint: Canonical and Claude surfaces use 2.2.2 while the Codex manifest retains 2.2.2-codex.0.
Rejected: Maintain two current changelogs | duplicate release authority drifts.
Rejected: Publish before the Windows matrix passes | violates the accepted release state machine.
Confidence: high
Scope-risk: moderate
Directive: Keep generated skill versions sourced from the canonical skill and preserve immutable release tags.
Tested: hooks 228/228; orchestrator 195/195; regression 65/65; maintenance 50/50; transform; shell syntax; link/path sweep; diff check
Not-tested: GitHub Windows runner remains blocked pending explicit approval for a fresh gate attempt
Standalone installations now carry the deterministic runtimes they invoke, parse persisted state and regression evidence fail-closed, and prove clean execution outside the checkout. Release preparation owns every generated surface, verifies identity and all suites, and stops after opening the reviewable PR.
Constraint: Runtime helpers remain generated byte-identical package resources
Constraint: Release artifacts must be created by uditgoenka
Rejected: Preserve checkout-relative runtime lookup | standalone installs would remain incomplete
Rejected: Let release preparation merge and publish | human approval must remain a separate state transition
Confidence: high
Scope-risk: moderate
Reversibility: clean
Directive: Run scripts/transform.sh after canonical skill or runtime changes
Tested: hooks 228/228; orchestrator and clean installs 188/188; regression 65/65; maintenance 50/50; syntax, diff, and byte parity
Not-tested: Windows and Linux execution awaits the pull-request matrix
Co-authored-by: MiaoDX <miaodx@hotmail.com>
Claude guardrails could silently disappear on native Windows, accept forgeable approval text, misclassify compound shell operands, or lose webhook delivery before process exit. Centralize bounded shell inspection, use the host permission contract, preserve operating-system temp roots, install the advertised hooks safely, and keep canonical and packaged hook trees identical.
Constraint: Hooks remain defense-in-depth and fail open with redacted diagnostics.
Constraint: Every Git and GitHub artifact is owned by uditgoenka.
Rejected: Keep the APPROVED path prefix | it is forgeable and not a host permission boundary.
Rejected: Maintain per-hook shell splitters | shared parsing prevents contract drift across guardrails.
Confidence: high
Scope-risk: moderate
Reversibility: clean
Directive: Keep .claude hooks canonical and regenerate claude-plugin/hooks with scripts/transform.sh.
Tested: hooks 228/228; orchestrator 154/154; regression 50/50; Node and shell syntax; transform byte parity; diff check.
Not-tested: Native Windows execution awaits the exact-head Windows release matrix in the distribution PR.
Harden the deterministic orchestrator seam (scripts/orchestrate.sh) and relocate hook runtime logs out of project repos.
Orchestrator: screen-cmd destructive-command coverage (netcat exfil, raw block-device writes incl. mmcblk/md/dm-, mkfs, find -delete, shred, zero-truncate, recursive zero-mode chmod, curl|xargs-into-interpreter, path-qualified binaries); new validate-state and screen-state-predicate subcommands (escaped-quote-safe extraction); next-hop independent verify hop before DONE/ship. Seam now exposes eight subcommands. Predicate pinned verbatim into the ledger.
Hooks: log() now writes to a global, per-project-keyed path under ~/.claude/hooks/.logs/ instead of a process.cwd()-relative dir, so hooks no longer pollute (or risk being committed into) end-user project repos.
Version 2.2.0 -> 2.2.1 across manifests + SKILL.md mirrors (command count unchanged at 14). Tests: orchestrator 154, hooks 107, regression 50 — all green.
Closes#107
* feat(autoresearch): add autonomous goal-directed orchestrator (v2.2.0)
Overload bare `/autoresearch` so a plain-language goal drives the whole
subcommand suite autonomously, the way `/ck:cook` does for implementation.
The user states a goal; the orchestrator classifies it, derives a concrete
success predicate, and loops the right subcommands until the predicate holds.
Dispatch (bare invocation):
- `Metric:`/`Verify:` present -> Classic metric loop (unchanged)
- free-form natural-language goal -> Orchestrator
- nothing -> setup wizard
- `--classic` / `--auto` force the respective mode; mode printed in banner.
Two orchestrator modes by goal archetype:
- Orchestration loop for predicate-bearing archetypes (ship-ready,
optimize-metric, fix-broken, harden, build-feature, explore) — loops until
the mechanical predicate is met.
- Single-pass dispatch for subjective/terminal archetypes (document,
what-to-build, decide-design) — routes once to learn/improve/reason.
All routing logic lives in one deterministic seam, scripts/orchestrate.sh,
mirroring the existing scripts/score-regression.sh <-> tests/test-regression.sh
pattern. Subcommands: classify, next-hop, units, plateau, screen-cmd, verdict.
Safety invariants:
- Never auto-approves ship/deploy/push; deploy always needs user approval.
- Bounded by plateau detection (5 cycles no net progress) and a hard ceiling
(50, override --max-cycles); repeated unknown-units cycles route to BLOCKED.
- Every derived command is safety-screened (rm recursive+force in any flag
arrangement, curl|sh, credential patterns, fork bombs) and re-screened when
read from persisted state on resume.
- Data-migration stays behind the anchored DB-URL allowlist (host must be
localhost/127.0.0.1/single-label container, or dbname carries _test/_ci
suffix); bare substring does not qualify.
Distribution parity: spec mirrored across .claude, claude-plugin, .agents
(codex), .opencode, and plugins/autoresearch; manifests bumped to 2.2.0;
scripts/transform.sh propagates the new reference and also fixes a latent
:regression colon-drift in the codex/opencode adapters.
Tests: tests/test-orchestrator.sh (85 assertions) green; existing
test-regression.sh (50) and test-hooks.sh (105) still green.
* fix(autoresearch): harden screen-cmd against path-qualified rm and alt-shell curl pipes
The screen-cmd safety gate anchored its rm matcher on the bare command name,
so a path-qualified invocation (/bin/rm, ./rm, /usr/local/bin/rm) bypassed the
recursive+force refusal. Likewise the curl/wget pipe matcher only caught sh and
bash, missing zsh/dash/fish/ksh/python/perl/ruby/node/php and path-qualified
shells. Both are autonomous-loop command-screening bypasses.
- rm: allow an optional path prefix ending in /rm on the command-name anchor.
- curl/wget pipe: match an optional path prefix plus an enumerated interpreter
set. Enumerated rather than "refuse any curl pipe" so a legitimate derived
predicate that pipes curl output to a parser (jq/grep/awk) is not refused.
Added 12 assertions: path-qualified rm (4 forms) refuse; non-rm words
(confirm/perform) stay ok; alt-shell/path-qualified curl pipes refuse;
curl piped to a parser stays ok. test-orchestrator.sh now 97/97.
---------
Co-authored-by: uditgoenka <udit@firstsales.io>
Adds the 14th family command — a layered regression stability gate (orchestrator + git-worktree differential core + debug-style hunter) across 8 dimensions with a tiered HARD/SCORE verdict and the green-to-red classification invariant. Ships scripts/score-regression.sh, tests/test-regression.sh (50 assertions, 10 golden fixtures), 5-surface mirror parity, and 3 plugin manifests. Released as v2.1.4.
Codex skill discovery now installs into the current ~/.codex skill root, and the wrapper accepts embedded $autoresearch invocations plus debug --chain.
Constraint: Current Codex/OMX loads workflow skills from ${CODEX_HOME:-~/.codex}/skills
Constraint: Release target requested as v2.0.03
Rejected: Keep installing Codex skills only under ~/.agents | current Codex treats that as a legacy root and sessions can miss the skill
Confidence: high
Scope-risk: moderate
Directive: Keep the wrapper spec and installed skill bundle in sync when adding subcommand flags
Tested: python3 -m unittest tests/test_autoresearch_codex.py
Tested: wrapper no-exec for embedded $autoresearch reason --iterations 20
Tested: wrapper no-exec for autoresearch debug --chain fix
Tested: bash -n scripts/install.sh
Tested: install_local_plugin.py temporary Codex home install
Not-tested: Live Codex interactive skill reload after global install
- Port all 12 reference files from .claude/ to .opencode/ with OpenCode adaptations
(question tool, underscore command names, @mention subagent syntax)
- Add all 10 commands including /autoresearch_reason (missing from PR #58)
- Add docs-manager subagent for learn workflow
- Add scripts/install.sh — interactive/non-interactive installer for both Claude Code and OpenCode
- Add scripts/sync-opencode.sh — automated sync from .claude/ source with adaptations
- Fix SKILL.md version to match v1.9.11 release
- All files based on current v1.9.11 (crash recovery, metric-valued guards, plateau detection)
Closes: rejected PR #58 (stale v1.8.2 base, missing /reason, broken install script)
Plugin installation failed on macOS due to recursive self-nesting in cache.
When marketplace.json had source: "./" the entire repo (including marketplace.json
itself) was cached, triggering infinite re-caching that hit the 1024-char path limit.
Changes:
- Move plugin distribution to isolated claude-plugin/ directory
- Update marketplace.json source from "./" to "./claude-plugin"
- Add .gitignore (repo had none)
- Remove duplicate root commands/ and skills/ directories
- Update release.sh to sync to claude-plugin/ instead of root
- Update all docs with new paths (README, CONTRIBUTING, guide, release.md)
- Bump version to 1.7.4
Scenario-driven audit discovered 30 edge cases across all 8 subcommands.
This release fixes the actionable ones found via /autoresearch:scenario
and /autoresearch:fix workflows.
Fixes:
- predict: add missing --iterations flag support (was silently ignored)
- scenario: add --format and --focus to argument-hint (were parsed but unrecognized by Claude Code)
- security: standardize depth naming from "quick" to "shallow" (consistent with predict/scenario)
- predict-workflow: rename interactive "Quick scan" option to "Shallow" (matches flag name)
- predict-workflow: add no-space rule for --chain, unknown target error, --iterations scope clarification
- security-workflow: --fix chain now hands off to /autoresearch:fix with findings context
- autonomous-loop-protocol: remove last remaining git add -A reference in Phase 0
- release.sh: add preflight check for existing git tag (prevents tag collision)
Version bump: 1.7.2 → 1.7.3
Distribution synced from .claude/ source of truth
Fix 25+ bugs found via deep debug audit across command files, workflow
references, and protocol documents. Key improvements:
- Ship command: add --target flag for explicit ship target
- Debug --fix chain: now passes --from-debug to fix command
- Security CI template: add missing commands/ copy alongside skills/
- Predict budget: resolve unit collision (dollars → findings count)
- Git safety: eliminate all remaining git add -A references
- Predict workflow: fix --rounds range, depth preset naming
- Release script: fix step numbering consistency
- Remove stale /ug:autoresearch alias from SKILL.md
- Sync all distribution files with .claude/ source of truth
- Bump all versions 1.7.1 → 1.7.2
1. SKILL.md version bump (1.7.0→1.7.1) + add to release.sh auto-bump
2. Predict depth "quick"→"shallow" standardized across all files
3. Base /autoresearch: add --iterations and --scope to argument-hint
4. Remove stale per-subcommand version tags (v1.0.3, v1.1.0, v1.6.0, v1.0.0)
5. Ship command: add --iterations support for bounded preparation
6. experiment: commit prefix → conventional commit format experiment(<scope>):
7. git add -A → git add <specific-files> for safer staging
8. Root distribution synced
- Bump plugin.json, marketplace.json to 1.7.1
- Update version badges in README.md and guide/README.md
- Fix step numbering in scripts/release.md (was [1/6]...[7/7], now [1/7]...[7/7])
- Copy predict.md, scenario.md to commands/autoresearch/
- Copy predict-workflow.md, scenario-workflow.md to skills/autoresearch/references/
- Sync all stale skill files (SKILL.md, all workflow references)
- Add [3/7] sync step to release.sh ensuring root stays in sync
- Update release.md with distribution sync documentation
- Bump marketplace.json versions from 1.6.1 to 1.6.2 (both top-level
and plugins array)
- release.sh now bumps all version fields in marketplace.json alongside
plugin.json during releases
- release.md updated to document marketplace.json in version bump step
- PR checklist now includes marketplace.json verification
Prevents marketplace.json version drift (same issue as #32/#35).
- Fix GUIDE.md version badge (1.6.1 → 1.6.2)
- release.sh now bumps version badge in both README.md and GUIDE.md
- Doc review prompt lists all 4 docs (README, GUIDE, EXAMPLES, CONTRIBUTING)
- PR checklist includes GUIDE.md and CONTRIBUTING.md review items
- release.md doc review guide covers all 4 files
Rewrites release.sh to:
- Create a release branch instead of pushing directly to master
- Bump plugin.json + README version badge automatically
- Pause for README.md and EXAMPLES.md review before committing
- Create a detailed PR with changelog and checklist
- Wait for explicit "merge" confirmation before merging
- Tag and create GitHub release only after merge
Adds release.md documenting the full process, versioning scheme
(patch v1.6.X, minor v1.X.0), and pre-release checklist.
Prevents plugin.json version drift by handling version bump, commit,
tag, and GitHub release creation in a single command.
Usage: ./scripts/release.sh 1.7.0