{"id":"9951bc2a-df58-4e84-ae38-45aef65e6761","slug":"fjgo","kind":"skill","name":"fjgo","summary":"Agent-first Forgejo CLI with compact TOON output, token-safe dry runs, an installable agent skill, and a Codex plugin.","owner":"astrazds","repoUrl":"https://github.com/astrazds/fjgo","license":"MIT","licenseTier":"permissive","trust":"community","stars":0,"match":null,"fewStars":true,"format":"skill","createdAt":"2026-09-14T01:31:28.000Z","addedAt":"2026-10-21T11:38:03.984Z","logoUrl":"https://avatars.githubusercontent.com/u/35437548?u=8a42e27a0c897c8ea4199fdf06b16fef6054ed93&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["developer-tools"],"tags":["ai-agents","api-client","automation","cli","codex","codex-plugin","forgejo","golang"],"runtime":"node","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-26T11:47:27.593Z","sample":false,"url":"https://conduits.dev/tools/fjgo","language":"Go","transports":["stdio"],"install":{"npm":"@astrazds/fjgo"},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"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 --repo demo/app issue list --state open\ncount: 2\nissues[2]{number,title,state,author}:\n  12,Redact API diagnostics,open,ada\n  9,Separate watch timeout,open,grace\nhelp[2]{command}:\n  Run `fjgo --repo demo/app issue view <number>` to see issue details\n  \"Run `fjgo --repo demo/app issue create --title \\\"...\\\" --body-file <path> --dry-run --yes` to create an issue\"\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 -R origin 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## This repository\n\nSource, issues, and CI live on GitHub at https://github.com/astrazds/fjgo.\nDo not run `fjgo -R origin` in this clone. `origin` is GitHub. Use `gh` for this repo's issues. Use fjgo against a Forgejo host with `--host` and `--repo`.\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/blob/main/docs/wiki/Home.md) 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"}