{"id":50832733,"url":"https://github.com/nugehs/repoctx","last_synced_at":"2026-06-14T01:06:34.594Z","repository":{"id":358652162,"uuid":"1242199320","full_name":"nugehs/repoctx","owner":"nugehs","description":"Local-first code context CLI + MCP server: discover, index, and search repos; generate task-aware context packs, code maps, agent harnesses, and PR-review/merge-readiness gates for coding agents and reviewers.","archived":false,"fork":false,"pushed_at":"2026-06-05T22:13:57.000Z","size":1085,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-05T23:04:16.245Z","etag":null,"topics":["ai-agents","cli","code-context","code-map","developer-tools","local-first","mcp","mcp-server","merge-gate","pr-review","repository-analysis"],"latest_commit_sha":null,"homepage":"https://nugehs.github.io/repoctx/","language":"JavaScript","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/nugehs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","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-05-18T08:00:42.000Z","updated_at":"2026-06-05T22:13:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nugehs/repoctx","commit_stats":null,"previous_names":["nugehs/dev-context","nugehs/repoctx"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/nugehs/repoctx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nugehs%2Frepoctx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nugehs%2Frepoctx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nugehs%2Frepoctx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nugehs%2Frepoctx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nugehs","download_url":"https://codeload.github.com/nugehs/repoctx/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nugehs%2Frepoctx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34305789,"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-13T02:00:06.617Z","response_time":62,"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":["ai-agents","cli","code-context","code-map","developer-tools","local-first","mcp","mcp-server","merge-gate","pr-review","repository-analysis"],"created_at":"2026-06-14T01:06:33.687Z","updated_at":"2026-06-14T01:06:34.581Z","avatar_url":"https://github.com/nugehs.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# repoctx\n\n**Local-first code context for agents and reviewers — what does this change actually touch?**\n\n[![npm](https://img.shields.io/npm/v/@nugehs/repoctx?style=flat-square)](https://www.npmjs.com/package/@nugehs/repoctx) [![CI](https://img.shields.io/github/actions/workflow/status/nugehs/repoctx/repoctx-ci.yml?style=flat-square\u0026label=CI)](https://github.com/nugehs/repoctx/actions/workflows/repoctx-ci.yml) [![license: MIT](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](LICENSE) [![node](https://img.shields.io/node/v/@nugehs/repoctx?style=flat-square)](https://www.npmjs.com/package/@nugehs/repoctx)\n\n![repoctx demo](repoctx-demo.gif)\n\n![repoctx](assets/repoctx-design-print.svg)\n\n```text\n ____   _____   ____    ___    ____   _____  __  __\n|  _ \\ | ____| |  _ \\  / _ \\  / ___| |_   _| \\ \\/ /\n| |_) ||  _|   | |_) || | | || |       | |    \\  /\n|  _ \u003c | |___  |  __/ | |_| || |___    | |    /  \\\n|_| \\_\\|_____| |_|     \\___/  \\____|   |_|   /_/\\_\\\n```\n\n`repoctx` is a local-first code context system. It discovers repositories, builds local indexes, maintains a catalog, searches code context, and generates lightweight harnesses for coding agents and reviewers.\n\nThe legacy `dev-context` command remains available as an alias.\n\nIt does not try to replace `opensrc`, `code-structure`, Daytona, or Harnss. It gives developers and coding agents a single CLI that can:\n\nDeterministic merge gates — the differentiated core:\n\n- score merge readiness for local changes and pull requests with one `review_gate` tool (`gate` on the CLI)\n- resolve CODEOWNERS to required reviewers and surface owner-decision warnings\n- check branch-protection expectations and required checks before merge\n- generate actionable PR review context from git diffs and optional GitHub comments\n\nLocal-first context — feeds the gates:\n\n- inspect a repository\n- discover and index local repositories\n- maintain a local catalog and search across it\n- generate task-aware context packets before an agent plans or edits\n- generate AST-backed JSON-first code maps for agents\n- generate a setup/validation/runtime harness for a repo\n- produce Markdown or JSON reports\n- estimate context-token size for generated artifacts\n- run an MCP server for agent hosts with a persisted repo index cache\n- expose simple agent-friendly tool metadata\n- check tool availability\n- generate TypeScript structure HTML through `code-structure`\n- search dependency source through `opensrc`\n\n## Documentation\n\nrepoctx now includes a publishable MkDocs documentation site, shaped as a practical discovery and delivery pack:\n\n- [Home](docs/index.md)\n- [Executive Summary](docs/EXECUTIVE-SUMMARY.md)\n- [Context Foundation](docs/01-context-foundation/README.md)\n- [MCP and Agent Workflows](docs/02-mcp-agent-workflows/README.md)\n- [Contributor Governance](docs/03-contributor-governance/README.md)\n- [Release Readiness](docs/04-release-readiness/README.md)\n- [Trust-Layer Demo](docs/05-trust-layer-demo/README.md)\n- [Builder-Founder Operating Loop](docs/06-builder-founder-operating-loop/README.md)\n- [Glossary](docs/GLOSSARY.md)\n\nWhen GitHub Pages is enabled for the repository, the published site is configured for:\n\n```text\nhttps://nugehs.github.io/repoctx/\n```\n\n## Quick Start\n\nCode maps use the TypeScript compiler for JS/TS and dedicated language extractors for Go, C#, Python, Java, Ruby, and Rust (see `src/lib/code-map/ast-languages.js`). Optional external tools are only needed for dependency-source lookup and HTML structure reports.\n\nInstall from npm:\n\n```bash\nnpm install -g @nugehs/repoctx\nrepoctx doctor\n```\n\nOr run without installing:\n\n```bash\nnpx -y @nugehs/repoctx doctor\n```\n\nFrom a local checkout:\n\n```bash\nnpm ci             # install dependencies\nnpm run ci         # run the full quality gate\nnpm install -g .   # install the repoctx CLI globally\nrepoctx doctor     # verify the install\n```\n\n```bash\nnode src/cli.js help\nnode src/cli.js doctor\nnode src/cli.js init /path/to/target-repo\nnode src/cli.js repo . --json\nnode src/cli.js discover ~/projects --depth 2 --json\nnode src/cli.js index ~/projects --discover\nnode src/cli.js catalog\nnode src/cli.js search \"events controller\"\nnode src/cli.js context \"add a new MCP tool\" --path .\nnode src/cli.js map . --json\nnode src/cli.js harness . --out .dev-context/harness.md\nnode src/cli.js pr . --base origin/main --out .dev-context/pr-review.md\nnode src/cli.js mcp\nnode src/cli.js matrix\nnode src/cli.js report . --out .dev-context/report.md\nnode src/cli.js workspace /path/to/web /path/to/api --out .dev-context/workspace.md\n```\n\nOptional external tools:\n\n```bash\nnpm install -g opensrc code-structure\n```\n\nThen:\n\n```bash\nnode src/cli.js deps zod --query parse\nnode src/cli.js structure . --out .dev-context/structure.html\n```\n\n## Usage Examples\n\n| Goal | Command | Output |\n| --- | --- | --- |\n| Inspect one repo | `repoctx repo . --json` | Repo facts, scripts, languages, entrypoints, and git state |\n| Build a code map | `repoctx map . --json` | Source files, domains, imports, exports, symbols, and routes |\n| Prepare task context | `repoctx context \"add a new MCP tool\" --path .` | Primary files, related files, tests, patterns, and validation commands |\n| Generate an agent harness | `repoctx harness . --out .dev-context/harness.md` | Setup, validation, runtime, and context commands |\n| Review local changes | `repoctx pr . --base origin/main --out .dev-context/pr-review.md` | Changed files, risk prompts, review targets, and test hints |\n| Index local projects | `repoctx index ~/projects --discover` | `.dev-context/index.json` files plus a local catalog |\n| Search indexed repos | `repoctx search \"events controller\"` | Ranked matches across paths, domains, routes, imports, exports, and symbols |\n| Run the MCP server | `repoctx mcp` | Stdio MCP server exposing repoctx tools |\n\nFor Claude Desktop, VS Code, Cursor, and generic stdio client snippets, see [MCP and Agent Workflows](docs/02-mcp-agent-workflows/README.md).\n\n## repoctx vs alternatives\n\n| Approach | Strengths | Where repoctx differs |\n| --- | --- | --- |\n| Sourcegraph / Cody context | Powerful hosted code search and embedding-based context across an org | repoctx is local-first and deterministic: no server, no account, no code leaves the machine, and the same query always yields the same packet |\n| Hand-written `CLAUDE.md` / rules files | Curated, intent-rich guidance | Hand-written context goes stale; repoctx regenerates context from the actual code (symbols, imports, routes, tests) on every run and complements a short `CLAUDE.md` |\n| `grep` / `ripgrep` | Fast, universal text matching | repoctx ranks whole files by task intent across paths, symbols, exports, and tests, then adds patterns and validation commands — a context packet, not a list of matching lines |\n\n## Quality Gates\n\nUse the full gate before opening a pull request or publishing a release:\n\n```bash\nnpm run ci\n```\n\nThe gate runs:\n\n- `npm run format:check`\n- `npm run lint`\n- `npm run typecheck`\n- `npm run version:check`\n- `npm test`\n- `npm run test:coverage`\n- `npm run audit`\n- `npm run smoke`\n\nCoverage currently gates source files at 70% lines, 60% branches, and 75% functions. Generated artifacts under `.dev-context/` are ignored by git, linting, and formatting; keep durable reports there instead of committing them.\n\nrepoctx follows Semantic Versioning. Pull requests should identify whether they are no-version-impact, patch, minor, or major changes; maintainers apply the final package version during release.\n\nFor longer trust-layer work, use the [Builder-Founder Operating Loop](docs/06-builder-founder-operating-loop/README.md) to keep every session tied to context, focused changes, visible gates, human decisions, and durable evidence.\n\n## Contributing\n\nContributions are welcome. Start with [CONTRIBUTING.md](CONTRIBUTING.md), open an issue or draft PR for substantial changes, and run `npm run ci` before requesting review.\n\nAll code changes must be reviewed by a maintainer/code owner before merge. The protected `main` branch requires maintainer approval, passing quality gates, and resolved PR conversations.\n\n## Common Workflows\n\nAgent repo harness:\n\n```bash\nnode src/cli.js harness . --out .dev-context/harness.md\nnode src/cli.js map . --json\n```\n\nLocal discovery, indexing, catalog, and search:\n\n```bash\nnode src/cli.js discover ~/projects --depth 2\nnode src/cli.js index ~/projects --discover\nnode src/cli.js catalog\nnode src/cli.js search \"submit rsvp\"\n```\n\nTask-aware agent context:\n\n```bash\nnode src/cli.js context \"add a new MCP tool\" --path . --json\nnode src/cli.js context \"add a new MCP tool\" --path . --out .dev-context/context-pack.md\n```\n\nPR review harness:\n\n```bash\nnode src/cli.js pr . --base origin/main --out .dev-context/pr-review.md\nnode src/cli.js pr . --number 123 --comment\n```\n\nMerge gate (`gate` is the canonical v2 command; `pass` / `pass-pr` remain as legacy aliases):\n\n```bash\nnode src/cli.js gate . --base origin/main          # local gate (no GitHub)\nnode src/cli.js gate --pr 123 --path .             # GitHub PR gate via gh\n```\n\nMulti-repo product context:\n\n```bash\nnode src/cli.js workspace ../web ../api --out .dev-context/workspace.md\n```\n\nGitHub Actions bootstrap:\n\n```bash\nnode src/cli.js init /path/to/target-repo\n```\n\nLocal Ollama review:\n\n```bash\nnode src/cli.js harness . --out .dev-context/harness.md\n\n{\n  echo \"Use this repo harness to explain the project and suggest the next best engineering task.\"\n  echo\n  cat .dev-context/harness.md\n} | ollama run qwen3:8b --think false --hidethinking --nowordwrap\n```\n\nLocal Ollama PR review:\n\n```bash\nnode src/cli.js pr . --base origin/main --out .dev-context/pr-review.md\n\n{\n  echo \"Review this PR context. Focus on bugs, missing tests, and risky changes.\"\n  echo\n  cat .dev-context/pr-review.md\n} | ollama run qwen3:8b --think false --hidethinking --nowordwrap\n```\n\n## Commands\n\n### `doctor`\n\nChecks the local runtime and optional external tools.\n\n```bash\nnode src/cli.js doctor --json\n```\n\n### `install` / `i`\n\nPrints install commands and current binary status. From a local checkout, `--global` runs `npm install -g .`; `--link` runs `npm link`.\n\n```bash\nnode src/cli.js install\nnode src/cli.js i\nnode src/cli.js install --global\nnode src/cli.js install --json\n```\n\nAfter installation, use `repoctx` as the primary command. `dev-context` is kept as a legacy alias.\n\n### `repo \u003cpath\u003e`\n\nInspects repo shape: files, package metadata, languages, package managers, scripts, likely entrypoints, git metadata, and ignored-heavy directories.\n\n```bash\nnode src/cli.js repo . --json\n```\n\nGit repositories are scanned through `git ls-files --cached --others --exclude-standard` so ignored files do not pollute harness context. Plain directories fall back to the built-in walker.\n\n### `discover \u003croot...\u003e`\n\nDiscovers repository roots under one or more local directories without indexing them.\n\n```bash\nnode src/cli.js discover ~/projects --depth 2\nnode src/cli.js discover . --json\n```\n\nDiscovery stops at directories with common repo markers such as `package.json`, `.git`, `pyproject.toml`, `go.mod`, `Cargo.toml`, and `Package.swift`.\n\n### `index \u003crepo...\u003e`\n\nGenerates local `.dev-context/index.json` files and adds repositories to the local catalog.\n\n```bash\nnode src/cli.js index .\nnode src/cli.js index ~/projects --discover\nnode src/cli.js index . --catalog /tmp/repoctx-catalog.json --json\n```\n\nThe default catalog path is `~/.dev-context/catalog.json`. Set `REPOCTX_CATALOG`, the legacy `DEV_CONTEXT_CATALOG`, or pass `--catalog` to use a different file.\n\n### `catalog`\n\nLists repositories currently indexed in the local catalog.\n\n```bash\nnode src/cli.js catalog\nnode src/cli.js catalog --json\n```\n\n### `search \u003cquery\u003e`\n\nSearches indexed local repositories by path, domain, kind, route, controller path, imports, exports, and symbols.\n\n```bash\nnode src/cli.js search \"events controller\"\nnode src/cli.js search \"submit rsvp\" --limit 10\nnode src/cli.js search \"api client\" --offline --json\n```\n\nBy default, search refreshes repo indexes when fingerprints change. Use `--offline` to read only the stored `.dev-context/index.json` files.\n\n### `context \u003cquery\u003e`\n\nGenerates a local context-engine packet for a task. The packet includes inferred intent, primary files, related files, matching tests, implementation patterns, validation commands, conflicts, source evidence, and token estimates.\n\n```bash\nnode src/cli.js context \"add a new MCP tool\" --path . --json\nnode src/cli.js context \"add a new CLI command\" --path . --out .dev-context/context-pack.md\n```\n\nUse this before handing work to a coding agent. It is deterministic and local-first: it relies on repo indexes, code maps, import relationships, tests, and harness commands rather than an external model.\n\n### `harness \u003cpath\u003e`\n\nGenerates a repo harness with setup commands, validation scripts, runtime scripts, context commands, focus areas, and estimated context-token usage.\n\n```bash\nnode src/cli.js harness . --out .dev-context/harness.md\nnode src/cli.js harness . --json\n```\n\nUse this as the first artifact an agent or CI workflow reads before touching code.\n\n### `init \u003cpath\u003e`\n\nScaffolds repoctx into another repository.\n\n```bash\nnode src/cli.js init /path/to/target-repo\nnode src/cli.js init /path/to/target-repo --force\nnode src/cli.js init /path/to/target-repo --no-workflow\nnode src/cli.js init /path/to/target-repo --tool-repo nugehs/repoctx --tool-ref main\n```\n\nGenerated files:\n\n- `.dev-context/README.md`\n- `.github/workflows/repoctx-ci.yml`\n\nThe generated workflow runs on pull requests and commit pushes. Pull request runs generate the report, upload an artifact, and create or update a sticky PR comment. Push runs generate and upload the report artifact without commenting.\n\n### `structure \u003cpath\u003e`\n\nRuns `code-structure` against TypeScript files.\n\n```bash\nnode src/cli.js structure . --pattern \"app/**/*.tsx\" --out .dev-context/structure.html\n```\n\nIf `code-structure` is missing, the command returns an install hint instead of failing mysteriously. If it is not installed globally but `npx` is available, repoctx can run it through `npx --yes code-structure`.\n\n### `deps \u003cpackage\u003e`\n\nUses `opensrc path \u003cpackage\u003e` to resolve dependency source and optionally search it.\n\n```bash\nnode src/cli.js deps zod --query parse --limit 20\n```\n\n### `report \u003cpath\u003e`\n\nGenerates a shareable developer report.\n\n```bash\nnode src/cli.js report .\nnode src/cli.js report . --out .dev-context/report.md\nnode src/cli.js report . --json\n```\n\nThe default output is formatted for terminal reading and ends with estimated token usage. Use `--out` for the Markdown artifact or `--json` for structured data.\n\n### `workspace \u003crepo...\u003e`\n\nGenerates one product-level report across related repos.\n\n```bash\nnode src/cli.js workspace /path/to/web /path/to/api --out .dev-context/workspace.md\nnode src/cli.js workspace /path/to/web /path/to/api --json\n```\n\n### `pr \u003cpath\u003e`\n\nGenerates a PR review context pack from local git diff metadata, code-map classification, review targets, targeted review prompts, risk flags, suggested verification commands, estimated tokens, and optional GitHub PR comments.\n\n```bash\nnode src/cli.js pr . --base origin/main --out .dev-context/pr-review.md\nnode src/cli.js pr . --number 123 --comment\n```\n\nUseful flags:\n\n- `--base \u003cref\u003e`: compare from a specific base ref. Defaults to PR base, upstream, `origin/main`, or `main`.\n- `--head \u003cref\u003e`: compare to a specific head ref. Defaults to `HEAD`.\n- `--number \u003cn\u003e`: enrich with `gh pr view` metadata and review comments.\n- `--github`: ask `gh` to infer the PR from the current branch.\n- `--comment`: create or update a sticky GitHub PR comment using `gh`.\n\n### GitHub Actions\n\nThis repo includes `.github/workflows/repoctx-ci.yml`. The workflow installs dependencies, runs `npm run ci`, then generates PR or push review context as an uploaded artifact. Use `node src/cli.js init /path/to/target-repo` to scaffold a repoctx review workflow into another repository.\n\n### `mcp`\n\nStarts a stdio MCP server exposing repoctx as agent-callable tools. MCP repo-map lookups cache `.dev-context/index.json` with a file fingerprint and automatically refresh when files change.\n\n```bash\nnode src/cli.js mcp\n```\n\nWhen wiring it into an MCP host (Claude Desktop, Claude Code, Codex CLI, Cursor, etc.):\n\n```json\n{\n  \"mcpServers\": {\n    \"repoctx\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@nugehs/repoctx\", \"mcp\"]\n    }\n  }\n}\n```\n\nIf you prefer a globally installed binary:\n\n```json\n{\n  \"mcpServers\": {\n    \"repoctx\": {\n      \"command\": \"repoctx\",\n      \"args\": [\"mcp\"]\n    }\n  }\n}\n```\n\nOllama can provide the local model, but it does not call MCP tools by itself. To use repoctx through MCP with a local model, use an MCP-capable agent client that supports Ollama as the model provider and configure the `repoctx` server above.\n\nrepoctx 2.0 exposes **11** MCP tools (down from 18). All legacy names still work through `tools/call` until 3.0 — see [Migration to 2.0](docs/MIGRATION-2.0.md).\n\n| Tool               | Purpose                                                                              |\n| ------------------ | ------------------------------------------------------------------------------------ |\n| `repo_inspect`     | Inspect repository shape, scripts, package managers, entrypoints, and git state      |\n| `repo_map`         | Compact JSON code map, filterable by `domain`, `kind`, and `route`                   |\n| `repo_index`       | Generate `.dev-context` indexes + catalog entries; `dryRun:true` discovers read-only |\n| `repo_search`      | Search the catalog; omit `query` to return the catalog listing                       |\n| `context_pack`     | Build a task-aware context packet                                                    |\n| `change_impact`    | Rank files most likely to own a plain-English change request                         |\n| `review_context`   | Diff/comment review context (no verdict)                                             |\n| `review_gate`      | PASS/WARN/FAIL merge gate — local without `pr`, GitHub PR gate with `pr`             |\n| `review_verdict`   | Composite verdict: impact + review_context + review_gate                             |\n| `workspace_report` | Product-level report across multiple repos                                           |\n| `repo_harness`     | Setup, validation, runtime, and context commands for an agent or CI harness          |\n\nThe retired `repo_discover`, `repo_catalog`, `find_domain`, `find_file_kind`, `find_backend_route`, `find_frontend_api_client`, `pr_review`, `review_pr`, `merge_readiness`, and `pr_merge_readiness` names remain callable via `tools/call` and forward to the tools above. See [Migration to 2.0](docs/MIGRATION-2.0.md) for the full mapping and param translations.\n\n### `matrix`\n\nPrints the tool evaluation matrix for Greploop, `code-structure`, `opensrc`, Daytona, and Harnss.\n\n### `agent-tools`\n\nPrints JSON metadata for agent integrations. This is intentionally lightweight so it can become an MCP server later without changing command semantics.\n\n## Strategy\n\nWrap first. Measure pain. Build only the missing pieces.\n\nThis keeps the project useful quickly while leaving room to replace weak adapters with owned implementations later.\n\n---\n\n## Part of the toolchain\n\n**repoctx** is one of four tools that form a deterministic trust layer for AI-assisted development. Each answers a question people keep handing to an LLM — with static analysis instead.\n\n- **repoctx** (this tool) — context: what does this change actually touch?\n- [tieline](https://www.npmjs.com/package/@nugehs/tieline) — contracts: did the front end and back end quietly stop agreeing?\n- [bouncer](https://www.npmjs.com/package/@nugehs/bouncer) — compliance: could you defend this to Ofcom?\n- [aiglare](https://www.npmjs.com/package/@nugehs/aiglare) — governance: where can the model do something you can't undo?\n\nMore at [segunolumbe.com](https://segunolumbe.com). _static analysis, never the model._\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnugehs%2Frepoctx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnugehs%2Frepoctx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnugehs%2Frepoctx/lists"}