{"id":51026361,"url":"https://github.com/norandom/openultracode","last_synced_at":"2026-06-21T20:01:16.464Z","repository":{"id":365173874,"uuid":"1270885645","full_name":"norandom/OpenUltraCode","owner":"norandom","description":"Ultracode making for OpenCode, inspired by Claude Code","archived":false,"fork":false,"pushed_at":"2026-06-16T07:36:19.000Z","size":102,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-16T08:21:23.822Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/norandom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-16T06:18:32.000Z","updated_at":"2026-06-16T07:36:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/norandom/OpenUltraCode","commit_stats":null,"previous_names":["norandom/openultracode"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/norandom/OpenUltraCode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norandom%2FOpenUltraCode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norandom%2FOpenUltraCode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norandom%2FOpenUltraCode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norandom%2FOpenUltraCode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/norandom","download_url":"https://codeload.github.com/norandom/OpenUltraCode/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norandom%2FOpenUltraCode/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34623906,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-21T20:01:15.377Z","updated_at":"2026-06-21T20:01:16.454Z","avatar_url":"https://github.com/norandom.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenUltraCode\n\nOpenUltraCode adds UltraCode-style workflow discipline to opencode. It keeps the model you already selected, then adds prompt assets, role agents, slash commands, verification tools, and a small plugin for state, degradation notices, and request hints.\n\nIt uses no proxy. It does not replace the selected model, create synthetic model IDs, or route provider traffic. If you change models, use opencode's normal model selection.\n\n## Install\n\n1. Install the latest release with `curl -fsSL https://raw.githubusercontent.com/norandom/OpenUltraCode/main/install.sh | sh`.\n2. If you already have a checkout and want the development path, run `./install-dev.sh` from the repo root.\n3. The release installer pulls the latest GitHub release asset, copies the skill, slash commands, and agents into `~/.config/opencode/`, asks which fusion model IDs to set, and registers the plugin path in `~/.config/opencode/opencode.json`.\n4. Quit and restart opencode so the global plugin, commands, skills, and agents are loaded.\n\nThe restart matters because opencode loads plugins, commands, skills, agents, and config at startup. If `/ultracode` does not appear, confirm you restarted opencode after running `install.sh` or `install-dev.sh`.\n\nRelease installs do not run Dagger or `pnpm run check` on the user's machine. The GitHub Actions release workflow runs build, ESLint, tests, and asset validation, then publishes `open-ultracode-release.tar.gz` as the GitHub release asset consumed by `install.sh`.\n\nDevelopment installs use pnpm with a 3-day release-age cooldown (`minimumReleaseAge: 4320` in `pnpm-workspace.yaml`). That keeps brand-new package releases out of the install path. `pnpm-workspace.yaml` allows the `esbuild` install script because the TypeScript test runner needs it. `install-dev.sh` also configures the repository pre-commit hook to run Dagger-backed ESLint through `pnpm run lint`.\n\n## What you get\n\nSlash commands are what you type in opencode:\n\n- `/ultracode` for comprehensive build/review/verify work.\n- `/ultracode-debug` for reproduce/root-cause/fix loops.\n- `/ultracode-spec-audit` for incomplete or contradictory specs.\n- `/ultracode-research` for adversarial research against a plan or claim.\n- `/ultracode-verify` for evidence-based completion checks.\n- `/ultracode-fusion` for explicit two-model fusion rounds with a selected decider.\n- `/ultrathink` for grounded, non-coding problem solving.\n- `/ultrathink-fusion` for grounded, non-coding two-panel fusion problem solving.\n\nThe skill is named `open-ultracode`. It is not a slash command. The slash commands above tell opencode to use that skill, and opencode exposes skills to agents through its skill system rather than as `/open-ultracode`.\n\nSupporting assets:\n\n- Role agents for coordinator, planner, implementer, adversary, reconciler, verifier, and researcher workflows.\n- Fusion agents for panel and arbiter roles. These are intentionally separate from the normal workflow agents.\n- Plugin tools for workflow status, verification evidence, blocked checks, and completion reports.\n\n## Examples\n\nComprehensive task execution:\n\n```text\n/ultracode \"Implement the approved registration-flow task, run the relevant tests, reconcile adversarial findings, and report completion evidence.\"\n```\n\nDebugging:\n\n```text\n/ultracode-debug \"The docs asset test fails after adding a new command. Reproduce the failure, find the root cause, fix the smallest boundary, and verify the regression.\"\n```\n\nSpec audit:\n\n```text\n/ultracode-spec-audit \"Review this checkout spec for missing actors, permissions, error states, and verification criteria before implementation.\"\n```\n\nAdversarial research:\n\n```text\n/ultracode-research \"Attack this implementation plan and identify assumptions, edge cases, unsafe defaults, and evidence gaps before we build it.\"\n```\n\nFusion workflow:\n\n```text\n/ultracode-fusion --panel ultracode-fusion-panel-a --panel ultracode-fusion-panel-b --decider selected-model \"Compare the two proposed API designs and produce one implementation recommendation.\"\n```\n\nFusion with an arbiter agent:\n\n```text\n/ultracode-fusion --panel ultracode-fusion-panel-a --panel ultracode-fusion-panel-b --decider ultracode-fusion-arbiter \"Review this migration plan and resolve disagreements with cited evidence.\"\n```\n\nGrounded problem solving without coding:\n\n```text\n/ultrathink \"Decide whether we should keep the release installer shell-only or introduce a compiled helper. Use only the supplied constraints and call out unknowns.\"\n```\n\nGrounded fusion problem solving:\n\n```text\n/ultrathink-fusion --panel ultracode-fusion-panel-a --panel ultracode-fusion-panel-b --decider selected-model \"Evaluate the product tradeoff using grounded evidence, not loose recall.\"\n```\n\n`/ultrathink` and `/ultrathink-fusion` are not coding commands. They separate supplied facts, verified evidence, assumptions, hypotheses, and recommendations. If the problem depends on facts that are not supplied, they should ask for context or mark the point as unknown instead of drifting into loose recall.\n\n## Fusion model selection\n\n`/ultracode-fusion` is explicit opt-in fusion, not transparent routing for every prompt. A run has three model-bearing roles:\n\n- The selected opencode model remains the coordinator. It gathers context, validates arguments, dispatches rounds, and reports the final trace.\n- Exactly two panel agents produce and critique candidate answers. Pass them with repeated `--panel \u003cagent-name\u003e` flags.\n- The decider is either `selected-model` or a configured fusion arbiter agent passed with `--decider \u003cagent-name\u003e`.\n\nThe default fusion concept is `critique-revise-vote`: each panel generates an answer from the same bounded context package, critiques the other panel's answer, revises its own answer, ranks the alternatives against the rubric, and then the decider arbitrates the final response.\n\nThe bundled placeholders are:\n\n- `ultracode-fusion-panel-a` with `model: provider/model-a`.\n- `ultracode-fusion-panel-b` with `model: provider/model-b`.\n- `ultracode-fusion-arbiter` with `model: provider/arbiter-model`.\n\nThe release installer replaces those placeholders for you. It reads the current `model` from `~/.config/opencode/opencode.json`, then lets you choose each fusion role with a small terminal menu using the up and down arrows. The default for panel A, panel B, and arbiter is `openai/gpt-5`; you can pick the current opencode model if it differs, or enter a custom `provider/model-id`. In non-interactive shells, the installer uses `openai/gpt-5` for all three fusion roles.\n\nYou can also edit the installed agent files manually and replace those placeholder model IDs with opencode model IDs that exist in your configured providers, such as `openai/gpt-5`, another GPT-5-family model, DeepSeek, or a local/provider-specific model. The command rejects runs that do not provide exactly two fusion panel agents or that name a decider outside `selected-model` or a fusion arbiter agent.\n\nOne-shot independent answers are reported as `panel-consult`, not strong fusion. Strong fusion requires the critique, revision, vote, and arbitration loop.\n\n## Selected model preservation\n\nOpenUltraCode inherits the active selected model from opencode. Normal bundled workflow agents do not set `model:` frontmatter, and the plugin does not install provider routes or model aliases.\n\nFusion agents are the deliberate exception: they use explicit `model:` frontmatter so `/ultracode-fusion` can compare two configured opencode models while the selected model remains the coordinator. This still uses opencode's native agent model selection. It is not a proxy, synthetic model ID, provider route, hidden model switch, or replacement for the selected model.\n\nThe package can add high-effort request hints only when a provider parameter already exists in the outgoing request. If the provider does not expose a compatible field, OpenUltraCode records a visible degradation notice instead of pretending the behavior is available.\n\n## Safe troubleshooting\n\n- If commands, agents, or skills do not appear, restart opencode.\n- If high-effort behavior is unsupported, check workflow status for a degradation notice.\n- If a permission is denied, OpenUltraCode records the workflow as blocked and reports the safe next step.\n- If completion is partial or blocked, run `/ultracode-verify` and collect fresh evidence before claiming completion.\n\nSee `docs/CONCEPTS.md`, `docs/LIMITS.md`, and `docs/CONFIGURATION.md` for workflow details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnorandom%2Fopenultracode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnorandom%2Fopenultracode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnorandom%2Fopenultracode/lists"}