{
  "markdown": "<p align=\"center\">\n  <img src=\"assets/opsinist-docs.png\" alt=\"Opsinist\" width=\"240\">\n</p>\n\n<h1 align=\"center\">opsinist</h1>\n\n<p align=\"center\">\n  Run a company of AI agents out of <b>one git repository</b> — any craft, not just code.<br>\n  The team, the process, the history, the cost — all files: <b>clone it and everything travels.</b><br>\n  Gates that say what enforces them, doors that refuse instead of hoping, evidence on every claim.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://ai.jamillazarev.com/skills/opsinist\"><img alt=\"docs\" src=\"https://img.shields.io/badge/docs-ai.jamillazarev.com-black\"></a>\n  <a href=\"https://github.com/jamillazarev/opsinist/releases/latest\"><img alt=\"release\" src=\"https://img.shields.io/github/v/release/jamillazarev/opsinist?label=release&amp;color=black\"></a>\n  <a href=\"LICENSE\"><img alt=\"license\" src=\"https://img.shields.io/github/license/jamillazarev/opsinist?label=license&amp;color=black\"></a>\n  <a href=\"https://github.com/jamillazarev/opsinist/actions/workflows/preflight.yml\"><img alt=\"preflight\" src=\"https://github.com/jamillazarev/opsinist/actions/workflows/preflight.yml/badge.svg?branch=main\"></a>\n  <a href=\"https://ai.jamillazarev.com/skills/opsinist/coverage\"><img alt=\"coverage map\" src=\"https://img.shields.io/badge/coverage-map-black\"></a>\n</p>\n\n---\n\nMost tools for running agent teams ask you to trust a dashboard. **This one is an operations\ndepartment in markdown** — a budgeted core and forty-three trigger-loaded chapters you can read,\ndiff and delete, including the parts it admits it cannot enforce. Not a task list with AI bolted\non: the machinery a company runs on, as files, in a repository you already own.\n\n---\n\n## One minute in\n\n```sh\nclaude plugin marketplace add jamillazarev/opsinist\nclaude plugin install opsinist@opsinist\n```\n\nThen say what you need — no command required, any language. It reads what you have and takes\nthe right entrance:\n\n| What you have | Where it goes |\n|---|---|\n| nothing yet | the interview, then your first task |\n| a repository already | an audit, then a debt list you approve |\n| a backlog somewhere else | a mapping shown before anything is written |\n| one job, no team | three questions and none of the machinery |\n| a question | an answer, and nothing is created |\n\n**Two questions are never skipped** — how much you want to be in the loop, and who may direct\nthis. Everything else has a default good enough to leave alone.\n\n---\n\n## Different, by design\n\n- **Clone the repo and the whole project comes with it.** No platform, no database, no account —\n  `project = f(repo)`; delete every cache and it rebuilds.\n- **Gates tell you what actually enforces them** — request, validator, git-host, runtime, or\n  **`prose-only`, which means nothing does**, listed by name. A gate believed in but not\n  enforced is worse than a stated rule.\n- **A stage changes through a door that refuses with the reason** — and the ladder you see is\n  drawn from the same block the door reads, so picture and enforcement cannot drift.\n- **How deeply work is described is one cut on one ladder, owned by the kind of work** — a bug\n  wants its reproduction, a newsletter its model issue, a chore the floor.\n- **\"Remember this\" lands in files, never in the chat's memory** — routed to a guide line, a\n  decision, a register, and the home is named back to you.\n- **A release names how it goes out** — soft, canary, staged, flag-gated, shadow — under three\n  unbending rules: guardrails own the halt · the kill switch is named before the first user ·\n  expansion surfaces, never advances itself.\n- **A gap found mid-build calls the owner, not the editor** — nobody edits the artefact another\n  craft is standing on, in either direction.\n- **A run may not end leaving the machinery uncommitted** — *the reach gate*. The ending is\n  refused, once, naming the files, in a project this system operates and a session that opened it.\n  The checks in the guard are enforced *at the commit*, so work that stops short of one is held by\n  prose alone; measured on the light tier, 2026-08-22: 0 commits in 10 runs, and 5 of 5 answering after.\n- **A new standing commitment says what it replaces** — a library, a supplier, a subscription, a\n  licence. Does it need to exist · is it already here · does the craft's own staple do it · is it\n  native · one line — every rung but the last is a judgement no script can make, and whether the\n  answer was written down is not.\n- **Every move on the map names the job it is hired for** — *when this happens, someone wants to\n  do this, so they can get that*. A job story opens on a situation, so it can be checked and it\n  can be wrong; *\"as a user I want\"* cannot be wrong, which is why there are no user stories here.\n- **A market size is a checkable claim or it is not written** — TAM, SAM and SOM each carry where\n  the figure came from and when, and a derived one carries its arithmetic. **`unknown` passes**:\n  the gate asks that a number be traceable, not that a number exist, because a rule demanding\n  numbers is answered with invented ones.\n- **Every claim carries how it is known** — measured, cited, recalled, judgement — and nobody\n  promotes another's guess by quoting it. A hundred synthetic respondents are one bias repeated\n  a hundred times, and you are told before anything runs.\n- **A run that dies resumes** — committed · applied · remains, read from the repository;\n  **applied work is never redone**.\n- **Nothing moves by itself and nobody waits** — everything surfaces as ready; long work leaves\n  the turn and comes back with the answer; helpers run at the tier their own work needs, each\n  named in the record.\n- **Autonomy is earned per role and can go down** — and no history buys the four gated kinds\n  — spending, leaving the repo, destroying, reshaping the team.\n- **It knows when the repository isn't yours** — a guest leaves not one of our files behind,\n  and your record still lives with you, complete.\n- **It works outside software** — *ship* is an episode published, a batch sent, an issue\n  mailed; a chip maker has no data flows and a bakery has no deploys.\n- **It maintains itself through its own machinery** — proposed, never self-merged; validators\n  run in CI on every push and refuse what prose cannot.\n\nThe full inventory — every entity, register and rule, grouped and argued — lives in\n**[the docs](https://ai.jamillazarev.com/skills/opsinist/)**: start at\n[the skill](https://ai.jamillazarev.com/skills/opsinist/the-skill), skim\n[93+ situations](https://ai.jamillazarev.com/skills/opsinist/use-cases) or\n[the facts](https://ai.jamillazarev.com/skills/opsinist/facts) — one true sentence each.\n\n---\n\n## The commands\n\nYou never need one — anything a command does, a sentence reaches. The palette is the front door\nplus twenty verbs, each a door to a flow that exists anyway:\n\n| | What it is for |\n|---|---|\n| `/opsinist:advisor` | **the front door** — the corpus: the laws, the routing, what to load when |\n| `/opsinist:init` | start or continue a project — what is here is **read, not asked** |\n| `/opsinist:join` | take over an existing repo: audit first, one classified debt list, nothing fixed unseen |\n| `/opsinist:import` | bring a backlog in — mapping shown first, imported text treated as untrusted |\n| `/opsinist:consult` | a question, not a build — **nothing is put into your project** |\n| `/opsinist:hire` · `/opsinist:fire` | grow the roster from a need · park a role, archived, never deleted |\n| `/opsinist:status` · `/opsinist:cost` | what runs, waits, and aged past its promise · what work cost, leaks named |\n| `/opsinist:ship` | a release: the batch, the guards, the rollout it declares |\n| `/opsinist:review` · `/opsinist:decompose` | call another craft to look · cut a feature into workable tasks |\n| `/opsinist:map` · `/opsinist:decide` | the product as moves and things · one decision loop, recorded |\n| `/opsinist:automate` · `/opsinist:skill` | a real trigger or an honest manual one · create, screen, compress, extract |\n| `/opsinist:upgrade` · `/opsinist:migrate` · `/opsinist:recover` | move the machinery · move the project · resume the dead run |\n| `/opsinist:report` | something went wrong — packaged from evidence, yours or the skill's own |\n| `/opsinist:audience` | ask the audience — personas with the signal pyramid kept honest |\n\n---\n\n## Install everywhere else\n\nThe packaging is the open [Agent Skills](https://agentskills.my/specification/) standard —\nsome thirty tools read it. As a bare skill:\n\n```sh\nnpx skills add jamillazarev/opsinist\n```\n\nAntigravity, Codex / ChatGPT, Kimi, Gemini CLI, Cursor, OpenCode, Copilot CLI, Factory Droid\nand Pi each have their route → **[INSTALL.md](INSTALL.md)**. Installing is solved; **what each\nruntime lets an agent do differs**, and the row that matters most is delegation:\n\n| | Installs | Delegation | Enforced tool allowlist | Worktrees | How we know |\n|---|---|---|---|---|---|\n| **Claude Code** | yes | yes | yes | yes | **measured** — the behavioural suite runs here |\n| **Gemini CLI** | yes | not confirmed | a policy engine exists | yes | surface **measured**; behaviour not yet run |\n| **Codex CLI** | yes | reported | not checked | not checked | **cited** from its docs, not from a run |\n| the rest | expect yes | ask | ask | ask | **unknown** |\n\n*Measured* ran here; *cited* is the vendor's claim; *unknown* means nobody looked — a\ncapability written down because it would be convenient is the failure this project is built\nagainst → [runtimes.md](runtimes.md). Moving a project between runtimes takes no migration:\nnothing load-bearing lives in a session.\n\n**Updating** — one route per install, and **check the version, not the command's reply**:\n\n| Installed as | Update it with |\n|---|---|\n| **Claude Code plugin** | `claude plugin marketplace update opsinist` **then** `claude plugin update opsinist@opsinist` — the first line is the one people skip |\n| **Codex plugin** | `codex plugin marketplace upgrade` then `codex plugin add opsinist@opsinist` |\n| **Gemini CLI extension** | `gemini extensions uninstall opsinist` then `gemini extensions install https://github.com/jamillazarev/opsinist` — **not `extensions update`** |\n| **a copied skills directory** | re-run the installer or re-copy — **nothing announces a drifted copy** |\n\n```sh\nbash scripts/find-installs.sh\n```\n\nnames every install on the machine with its version and route, and exits non-zero on a\ndangling symlink or a stale copy.\n\n---\n\n## What is inside\n\n| | |\n|---|---|\n| **[SKILL.md](skills/advisor/SKILL.md)** | the core: the laws, the front door, and what to load when |\n| **[GLOSSARY.md](GLOSSARY.md)** | one word, one meaning — and the pairs that look alike and are not |\n| **[PATTERNS.md](PATTERNS.md)** | the twenty-seven shapes this system reuses, named once |\n| **[lenses.md](lenses.md)** | four readings before anything of consequence ships |\n| **forty-three chapters** — the methodology, one trigger each | loaded when their subject comes up, never all at once. **Not templates** — those are their own set in `templates/`, copied into a project when an entity is born |\n| **[storing.md](storing.md)** | which of the six layers land in the repository, and which stay with you |\n| **[runtimes.md](runtimes.md)** | which gates are real in the runtime you are actually in |\n| **[evals/](evals/)** | scenarios scored by pass-rate, including nine that press on the rules |\n| **[sources/](sources/)** | the evidence behind every slow-rotting claim, with archive links and dates |\n\nThe core is a router with a declared budget. **A line added to it is paid by every run of every\nagent, forever** — which is why procedures, examples and reference tables live in chapters.\n\n---\n\n## How you would know it is working\n\n**Success here shows up as an absence.** Nothing was decided twice. Nothing was rebuilt that was\nalready built. No bill arrived that nobody saw coming. Nobody asked *\"who chose this, and why?\"*\nand got silence. These are the tests we would rather be judged on — written down now so they\ncannot be quietly swapped later for whatever looks good:\n\n**Can a stranger continue?** Hand the repository to someone who was not there, with a task. If\nthey can pick it up without asking what was meant, `project = f(repo)` is true. If they have to\nask, it was a slogan.\n\n**Did the dead run resume** without redoing work that was already applied? That claim is on the\nbox; this is the number that keeps it honest.\n\n**Is the waste share falling?** *Spent on work that produced nothing* is a visible number, not a\nfeeling. Over time, on one project, it should go down.\n\n**How often do you go behind it?** Re-reading diffs you were told were done, recounting costs,\nre-checking the board — each is a failure even when every gate is green, because **a console you\naudit is not a console.**\n\nAnd one number we deliberately do **not** treat as success: the eval pass-rate. It is a\nregression detector, not evidence anything was ever good — this project has already watched a\nrun score thirteen passes while quietly breaking one of its own laws.\n\n---\n\nApache-2.0. The name **opsinist** and its mascot are reserved — see [TRADEMARKS.md](TRADEMARKS.md).\n",
  "bytes": 13159,
  "sha": "64b0d369964ae859559b3c86004e8af2b343d71e8fbe927e07dc5c3bd63dee1e",
  "repo_slug": "jamillazarev/opsinist",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_jamillazarev_opsinist_62daa03c/readme"
}