{"_id":"@astrazds/fjgo","_rev":"3-ad758f7bb08fdd9173e9b10ff1d0695e","name":"@astrazds/fjgo","dist-tags":{"latest":"1.4.3"},"versions":{"1.4.1":{"name":"@astrazds/fjgo","version":"1.4.1","license":"MIT","_id":"@astrazds/fjgo@1.4.1","maintainers":[{"name":"astrazds","email":"wise.house6835@fastmail.com"}],"homepage":"https://repos.astrazds.net/astrazds/fjgo","bugs":{"url":"https://repos.astrazds.net/astrazds/fjgo/issues"},"bin":{"fjgo":"bin/fjgo.js"},"dist":{"shasum":"e1aa5e9911651d62223fe60dc6aa938dd12e487f","tarball":"https://registry.npmjs.org/@astrazds/fjgo/-/fjgo-1.4.1.tgz","fileCount":5,"integrity":"sha512-JpNSXGFYtka16c6Zn41q4DOpn3TOn4gS/xkKirZuqP1MD8EHHw2wkxqSE+SAWZ9l9ytv2ZzXpiEQhDpodA+QKw==","signatures":[{"sig":"MEQCIF8HTd/LrtPFGTo3Q0WS4AGplBPQsUSElT7/F7Tdc9V6AiBPEnl+aK3nomI7FjDgvi6SzGhi9UFfKMGfFrihiKFWsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12767},"type":"module","engines":{"node":">=20"},"gitHead":"15f26397ada38c12412ab9a98154ddae77769086","scripts":{"test":"node --test test/*.test.js","prepack":"npm test"},"_npmUser":{"name":"astrazds","email":"wise.house6835@fastmail.com"},"repository":{"url":"git+https://repos.astrazds.net/astrazds/fjgo.git","type":"git"},"_npmVersion":"11.19.0","description":"Agent-first CLI and API client for Forgejo","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@openai/codex":"0.145.0"},"_npmOperationalInternal":{"tmp":"tmp/fjgo_1.4.1_1788662065045_0.40008631833087893","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@astrazds/fjgo","version":"1.4.2","keywords":["agents","api-client","axi","cli","codex","forgejo","go","openapi","swagger","toon"],"author":{"url":"https://repos.astrazds.net/astrazds","name":"Andrejs Strazds"},"license":"MIT","_id":"@astrazds/fjgo@1.4.2","maintainers":[{"name":"astrazds","email":"wise.house6835@fastmail.com"}],"homepage":"https://repos.astrazds.net/astrazds/fjgo/wiki","bugs":{"url":"https://repos.astrazds.net/astrazds/fjgo/issues"},"bin":{"fjgo":"bin/fjgo.js"},"dist":{"shasum":"172b652bd160f9c4346c08be8c7cdb9f82b2668c","tarball":"https://registry.npmjs.org/@astrazds/fjgo/-/fjgo-1.4.2.tgz","fileCount":5,"integrity":"sha512-+6UgXamgstnIRB5LNb8M1WKzJdP0dD+7QpaSoGhMs6gW0OmWJpBa4Yv0pcXEySLKSXGDdp7FuWY4vdeOX6ZqWQ==","signatures":[{"sig":"MEUCIQCWmmSJDCqQHZniGY6BhLtNz2cm99rDaaM+knfvDsTkqAIgKImOkyqtWXlF0nutZbJS9IAvFuFgZ7HsT168SY0/sw8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD8BgbYOtG1dSkRgWdXRoFQVb+j+lPaHkUWgdhsBnQXwAIgP9ry0G/+QMIS9GjKIZnIqwPUBT5p4w6nys7oFljDh5U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14266},"type":"module","engines":{"node":">=20"},"gitHead":"f5d0bc18a237ff2d8559ccae187319af422b74af","scripts":{"test":"node --test test/*.test.js","prepack":"npm test"},"_npmUser":{"name":"astrazds","email":"wise.house6835@fastmail.com"},"repository":{"url":"git+https://repos.astrazds.net/astrazds/fjgo.git","type":"git"},"_npmVersion":"11.19.0","description":"Agent-first Forgejo CLI for coding agents.","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@openai/codex":"0.145.0"},"_npmOperationalInternal":{"tmp":"tmp/fjgo_1.4.2_1788664428774_0.019153784077314606","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"_id":"@astrazds/fjgo@1.4.3","bin":{"fjgo":"bin/fjgo.js"},"bugs":{"url":"https://github.com/astrazds/fjgo/issues"},"dist":{"shasum":"29508eb5cd46c4bb6b9f0602b976ad48f3476443","tarball":"https://registry.npmjs.org/@astrazds/fjgo/-/fjgo-1.4.3.tgz","fileCount":5,"integrity":"sha512-QCP/BCehf1KtKpa8An1PHePq5MMAyV+75DrHGMKclZrvgksuVNZqA9JtidcldK6wWhCMn9cP4Iy0urn7TgG4qg==","signatures":[{"sig":"MEUCIQCETpdnCBjqmyptlew6lKo6ipWEZBDKD/uYjQ4MQtCGHQIgcXhT2xedQ9JFWuVV+aOwJPQM8BMInsA+78qcVEKaUcQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFDUrRkcsGGi6hNIo0Bs1rIBuxN4Qd/20NxyX0oVmuKaAiEAupZ8PCCt0/DmKVUQt+RQlQvpE9kxN0/JdyBAD34usXc="}],"unpackedSize":14076},"name":"@astrazds/fjgo","type":"module","author":{"url":"https://github.com/astrazds","name":"Andrejs Strazds"},"engines":{"node":">=20"},"gitHead":"f985a7346e5f7cf616e2ca7cec2f7969f7084e63","license":"MIT","scripts":{"test":"node --test test/*.test.js","prepack":"npm test"},"version":"1.4.3","_npmUser":{"name":"astrazds","email":"wise.house6835@fastmail.com"},"homepage":"https://github.com/astrazds/fjgo","keywords":["agents","api-client","axi","cli","codex","forgejo","go","openapi","swagger","toon"],"repository":{"url":"git+https://github.com/astrazds/fjgo.git","type":"git"},"_npmVersion":"11.19.0","description":"Agent-first Forgejo CLI for coding agents.","directories":{},"maintainers":[{"name":"astrazds","email":"wise.house6835@fastmail.com"}],"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@openai/codex":"0.145.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fjgo_1.4.3_1789351288326_0.6084763162245577"}}},"time":{"created":"2026-09-06T02:34:24.891Z","modified":"2026-09-14T02:01:28.550Z","1.4.1":"2026-09-06T02:34:25.183Z","1.4.2":"2026-09-06T03:13:48.871Z","1.4.3":"2026-09-14T02:01:28.406Z"},"bugs":{"url":"https://github.com/astrazds/fjgo/issues"},"author":{"url":"https://github.com/astrazds","name":"Andrejs Strazds"},"license":"MIT","homepage":"https://github.com/astrazds/fjgo","keywords":["agents","api-client","axi","cli","codex","forgejo","go","openapi","swagger","toon"],"repository":{"url":"git+https://github.com/astrazds/fjgo.git","type":"git"},"description":"Agent-first Forgejo CLI for coding agents.","maintainers":[{"name":"astrazds","email":"wise.house6835@fastmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"https://github.com/astrazds/fjgo/raw/main/docs/assets/readme/fjgo-icon.png\" width=\"112\" height=\"112\" alt=\"fjgo icon\">\n</p>\n\n<h1 align=\"center\">fjgo</h1>\n\n<p align=\"center\">\n  Agent-first Forgejo CLI for coding agents.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/astrazds/fjgo/blob/main/LICENSE\"><img alt=\"License: MIT\" src=\"https://img.shields.io/badge/license-MIT-blue.svg\"></a>\n  <a href=\"https://www.npmjs.com/package/@astrazds/fjgo\"><img alt=\"npm\" src=\"https://img.shields.io/npm/v/@astrazds/fjgo.svg\"></a>\n</p>\n\n`fjgo` gives coding agents a safe, compact way to work with [Forgejo](https://forgejo.org/) repositories. It covers issues, pull requests, Actions, releases, labels, secrets, and the rest of the bundled Forgejo API, with TOON stdout, structured errors, and token-safe dry runs.\n\nUse normal `git` for commits, branches, and local files. Use `fjgo` for work that needs the Forgejo server.\n\n```text\n$ npx -y @astrazds/fjgo -R origin issue list --state open\ncount: 3 of 3 total\nissues[3]{number,title,state}:\n  12,Redact API diagnostics,open\n  9,Separate watch timeout,closed\n  4,Publish wiki manual,closed\nhelp[1]{command}:\n  Run `fjgo issue view 12` to see full details\n```\n\n## Why fjgo?\n\nAn agent can call the Forgejo API with `curl`, but it has to remember URLs, JSON shapes, and authentication rules. That creates extra work and makes mistakes more likely.\n\n`fjgo` keeps the expensive parts in one tool:\n\n- short commands for common Forgejo jobs;\n- compact TOON output that uses fewer tokens;\n- structured errors and focused `--help`;\n- `--dry-run` / `--print-request` before writes;\n- token, password, and OTP values kept out of stdout;\n- generated coverage of every operation in the pinned Forgejo Swagger.\n\n## Install\n\nThe public npm package is `@astrazds/fjgo` because unscoped `fjgo` is blocked on the npm registry. The command name remains `fjgo`. Node.js 20 or newer is required, on Linux or macOS with an x64 or arm64 CPU.\n\n### Agent Skill\n\n```sh\nnpx skills add https://github.com/astrazds/fjgo.git --skill fjgo -g\n```\n\nThat is the full setup. You do not need to clone this repository or run `npm install`. The skill runs the CLI through `npx -y @astrazds/fjgo`. The first run downloads the matching native release, verifies its checksum, and caches it.\n\n### Native archive\n\n```sh\ncurl -LO https://github.com/astrazds/fjgo/releases/download/v1.4.3/fjgo_v1.4.3_linux_amd64.tar.gz\ntar -xzf fjgo_v1.4.3_linux_amd64.tar.gz\ninstall -Dm755 fjgo_v1.4.3_linux_amd64/fjgo ~/.local/bin/fjgo\n```\n\nUse `darwin` instead of `linux`, and `arm64` instead of `amd64`, when that matches the machine. Then run `fjgo` directly.\n\n### Optional ambient hooks\n\nThe skill and the native binary are enough for on-demand use. If you want Forgejo context at the start of every agent session:\n\n```sh\nnpx -y @astrazds/fjgo setup hooks --check\nnpx -y @astrazds/fjgo setup hooks\n```\n\nYou only need the skill or the hooks. Installing both is fine.\n\n### Codex plugin\n\nThis repository is also a validated Codex plugin package. A marketplace can point at the repository root to distribute the existing skill with branding and starter prompts. Until a marketplace lists it, the Agent Skill command above remains the shortest public path. See [Codex plugin](https://github.com/astrazds/fjgo/blob/main/docs/codex-plugin.md).\n\n## Use\n\nSet the Forgejo host. Add a token for private repos or writes. Do not paste the token into an agent prompt.\n\n```sh\nexport FJGO_HOST=forgejo.example.com\nexport FJGO_TOKEN=your_access_token\n```\n\n1. Orient inside a checkout whose Forgejo remote is `origin`: `npx -y @astrazds/fjgo -R origin`\n2. Inspect work with `doctor`, `issue list`, `pr list`, and `run list`.\n3. Preview a write with `--dry-run --yes`. Apply it by dropping `--dry-run`.\n\n```mermaid\nflowchart LR\n  A[Agent] --> S[Skill or session hook]\n  S --> H[\"fjgo / doctor\"]\n  H --> C[\"issue / pr / run\"]\n  C --> D[\"dry-run --yes\"]\n  D --> M[\"mutation --yes\"]\n  H --> G[\"api inspect / call / raw\"]\n```\n\n`-R origin` reads `OWNER/REPO` from the Git remote. You can also pass `--repo OWNER/REPO` or `FJGO_REPO`. Every command has focused `--help`.\n\n```sh\nnpx -y @astrazds/fjgo -R origin issue list --state open\nnpx -y @astrazds/fjgo -R origin pr checks 12\nnpx -y @astrazds/fjgo issue create --title \"Fix the login page\" --dry-run --yes\n```\n\n## Privacy\n\n`fjgo` has no backend, analytics, advertising, or telemetry. It does not store Forgejo credentials. Host and token come from the environment or flags on this machine.\n\n| Location | Purpose |\n| --- | --- |\n| `FJGO_TOKEN` / `--token` | User-supplied access token; never written by fjgo |\n| `doctor` / `auth status` | Show whether credentials are present, not their values |\n| `--dry-run` / `--print-request` | Token-safe request previews |\n| npm launcher cache | Checksum-verified native binary only |\n\nSee [PRIVACY.md](https://github.com/astrazds/fjgo/blob/main/PRIVACY.md) for the complete data boundary.\n\n## Limitations\n\n- Linux and macOS on x64 or arm64. The npm launcher does not support Windows.\n- Forgejo only. It is not a GitHub or GitLab client.\n- Mutating commands require `--yes`. There are no interactive prompts.\n- Codex marketplace publication is separate from fjgo releases.\n- Ambient `FJGO_TOKEN` is ignored on the public demo API unless the host or base URL is set explicitly.\n\n## Project structure\n\n| Path | Purpose |\n| --- | --- |\n| `cmd/fjgo/` | CLI parsing, AXI output, curated commands, hooks |\n| `internal/forgejo/` | HTTP client and generated Swagger methods/models |\n| `internal/fjgoskill/` | Embedded skill and installer |\n| `internal/benchmark/` | Offline agent-job catalog and baseline |\n| `skills/fjgo/` | Public Agent Skill invoked through `npx -y @astrazds/fjgo` |\n| `docs/` | CLI reference, plugin, development, and wiki sources |\n| `scripts/verify.sh` | Local and CI verification gate |\n\nThe [wiki manual](https://github.com/astrazds/fjgo/tree/main/docs/wiki) is the short operator guide. [CLI reference](https://github.com/astrazds/fjgo/blob/main/docs/cli-reference.md) covers authentication, output, command groups, and the generic API escape hatch.\n\n## Development\n\nGo 1.26 and Node.js 20 or newer are required.\n\n```sh\nnpm ci\n./scripts/verify.sh\ngo run ./cmd/fjgo-benchmark\n```\n\nCI on `main` is `.github/workflows/verify.yml`. Open the [Actions log](https://github.com/astrazds/fjgo/actions/workflows/verify.yml) for recent runs. Tag `v*` releases build archives, publish the GitHub release from `CHANGELOG.md`, and publish `@astrazds/fjgo`. See [Development](https://github.com/astrazds/fjgo/blob/main/docs/development.md).\n\nContributions are welcome; read [CONTRIBUTING.md](https://github.com/astrazds/fjgo/blob/main/CONTRIBUTING.md) before opening a pull request. Security reports use [SECURITY.md](https://github.com/astrazds/fjgo/blob/main/SECURITY.md). fjgo is licensed under [MIT](https://github.com/astrazds/fjgo/blob/main/LICENSE).\n","readmeFilename":"README.md"}