{"id":47708533,"url":"https://github.com/sofq/confluence-cli","last_synced_at":"2026-04-02T18:08:58.237Z","repository":{"id":347776235,"uuid":"1194748608","full_name":"sofq/confluence-cli","owner":"sofq","description":"Confluence CLI for developers and AI agents — structured JSON output, jq filtering, batch operations, and workflow automation. Built from Jira's OpenAPI spec.","archived":false,"fork":false,"pushed_at":"2026-03-29T15:38:38.000Z","size":24926,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-29T15:51:36.489Z","etag":null,"topics":["agent-skills","agents","claude-code","cli","confluence","golang"],"latest_commit_sha":null,"homepage":"https://sofq.github.io/confluence-cli/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sofq.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":"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-03-28T19:01:52.000Z","updated_at":"2026-03-29T15:38:43.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/sofq/confluence-cli","commit_stats":null,"previous_names":["sofq/confluence-cli"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/sofq/confluence-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sofq%2Fconfluence-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sofq%2Fconfluence-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sofq%2Fconfluence-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sofq%2Fconfluence-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sofq","download_url":"https://codeload.github.com/sofq/confluence-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sofq%2Fconfluence-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31312744,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["agent-skills","agents","claude-code","cli","confluence","golang"],"created_at":"2026-04-02T18:08:57.656Z","updated_at":"2026-04-02T18:08:58.227Z","avatar_url":"https://github.com/sofq.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003ecf\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\u003cstrong\u003eThe Confluence CLI that speaks JSON — built for AI agents\u003c/strong\u003e\u003c/p\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/confluence-cf\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/confluence-cf?style=for-the-badge\u0026logo=npm\u0026logoColor=white\u0026color=CB3837\" alt=\"npm\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/confluence-cf\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/confluence-cf?style=for-the-badge\u0026logo=pypi\u0026logoColor=white\u0026color=3775A9\" alt=\"PyPI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/sofq/confluence-cli/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/sofq/confluence-cli?style=for-the-badge\u0026logo=github\u0026logoColor=white\u0026color=181717\" alt=\"GitHub Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/sofq/confluence-cli/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/sofq/confluence-cli/ci.yml?style=for-the-badge\u0026logo=githubactions\u0026logoColor=white\u0026label=CI\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/sofq/confluence-cli\"\u003e\u003cimg src=\"https://img.shields.io/codecov/c/github/sofq/confluence-cli?style=for-the-badge\u0026logo=codecov\u0026logoColor=white\" alt=\"codecov\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/sofq/confluence-cli/security\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/sofq/confluence-cli/security.yml?style=for-the-badge\u0026logo=shieldsdotio\u0026logoColor=white\u0026label=Security\" alt=\"Security\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-Apache_2.0-blue?style=for-the-badge\" alt=\"License\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003e Pure JSON stdout. Structured errors on stderr. Semantic exit codes. 200+ auto-generated commands from the Confluence OpenAPI spec. Zero prompts, zero interactivity — just pipe and parse.\n\n---\n\n## Install\n\n```bash\nbrew install sofq/tap/cf          # macOS / Linux\nnpm install -g confluence-cf       # Node\npip install confluence-cf          # Python\nscoop bucket add sofq https://github.com/sofq/scoop-bucket \u0026\u0026 scoop install cf  # Windows\ngo install github.com/sofq/confluence-cli@latest                                # Go\n```\n\n## Quick start\n\n```bash\ncf configure --base-url https://yoursite.atlassian.net --token YOUR_API_TOKEN\ncf pages get --id 12345 --preset agent\n```\n\n## Why agents love cf\n\n### Self-describing — no hardcoded command lists\n\n```bash\ncf schema                  # all resources and verbs\ncf schema pages get        # full flags for one operation\n```\n\n### Token-efficient — 8K tokens to 50\n\n```bash\ncf pages get --id 12345 \\\n  --fields id,title,status --jq '{id: .id, title: .title, status: .status}'\n```\n\n`--preset`, `--fields`, and `--jq` stack so agents only consume what they need.\n\n### CQL search — powerful Confluence queries\n\n```bash\ncf search search-content \\\n  --cql \"space = DEV AND type = page AND lastModified \u003e now('-7d')\" \\\n  --jq '.results[] | {id, title}'\n```\n\n### Page management — create, update, diff\n\n```bash\ncf pages create --spaceId 123456 --title \"Deploy Runbook\" \\\n  --body \"\u003ch1\u003eSteps\u003c/h1\u003e\u003cp\u003eFollow these steps...\u003c/p\u003e\"\n\ncf pages update --id 12345 --version-number 3 \\\n  --title \"Deploy Runbook v2\" --body \"\u003ch1\u003eUpdated Steps\u003c/h1\u003e\"\n```\n\n### Workflow commands — move, copy, publish, archive\n\n```bash\ncf workflow move --id 12345 --target 67890 --position append\ncf workflow copy --id 12345 --target 67890 --title \"Copy of Runbook\"\ncf workflow archive --id 12345\ncf workflow comment --id 12345 --body \"Reviewed and approved\"\n```\n\n### Watch — real-time content monitoring\n\n```bash\ncf watch --cql \"space = DEV\" --interval 30s --max-events 50\n```\n\n```json\n{\"event\":\"updated\",\"id\":\"12345\",\"title\":\"Deploy Runbook\",\"version\":5,\"when\":\"2026-03-28T10:15:00Z\"}\n{\"event\":\"created\",\"id\":\"67890\",\"title\":\"New RFC\",\"version\":1,\"when\":\"2026-03-28T10:16:30Z\"}\n```\n\nEvents: `initial`, `created`, `updated`, `removed`.\n\n### Diff — structured version comparison\n\n```bash\ncf diff --id 12345 --since 2h\n```\n\n```json\n{\"version_from\":3,\"version_to\":5,\"title_changed\":true,\"body\":{\"added\":12,\"removed\":4,\"changed\":8}}\n```\n\n### Export — page and tree extraction\n\n```bash\ncf export --id 12345                   # single page\ncf export --id 12345 --tree            # page + all descendants\ncf export --id 12345 --format storage  # raw Confluence storage format\n```\n\n### Batch — N operations, one process\n\n```bash\necho '[\n  {\"command\":\"pages get\",\"args\":{\"id\":\"12345\"},\"jq\":\".title\"},\n  {\"command\":\"pages get\",\"args\":{\"id\":\"67890\"},\"jq\":\".title\"}\n]' | cf batch\n```\n\n### Error contract — predictable exit codes\n\n```json\n{\"error_type\":\"rate_limited\",\"status\":429,\"retry_after\":30}\n```\n\n| Exit | Meaning       | Agent action        |\n|------|---------------|---------------------|\n| 0    | OK            | Parse stdout        |\n| 1    | General error | Check stderr        |\n| 2    | Auth failed   | Re-authenticate     |\n| 3    | Not found     | Check page ID       |\n| 4    | Validation    | Fix input           |\n| 5    | Rate limited  | Wait `retry_after`  |\n| 6    | Permission    | Check access        |\n\n### Raw escape hatch\n\n```bash\ncf raw --method GET --path \"/wiki/api/v2/pages/12345\"\ncf raw --method POST --path \"/wiki/api/v2/pages\" --body '{\"spaceId\":\"123\",\"title\":\"New Page\"}'\n```\n\n## Agent integration\n\n### Claude Code skill (included)\n\n```bash\ncp -r skill/confluence-cli ~/.claude/skills/    # global\n```\n\n### Any agent\n\nAdd to your agent's instructions:\n\n```\nUse `cf` for all Confluence operations. Output is always JSON.\nUse `cf schema` to discover available commands.\nUse `--jq` or `--preset agent` to minimize token usage.\nErrors go to stderr with semantic exit codes.\n```\n\n## Security\n\n**Operation policies** — restrict per profile with glob patterns:\n\n```json\n{\"allowed_operations\": [\"pages get\", \"search *\", \"workflow *\"]}\n```\n\n**Audit logging** — NDJSON to `~/.config/cf/audit.log` via `--audit` flag or per-profile config.\n\n**Batch limits** — default 50, override with `--max-batch N`.\n\nSee [SECURITY.md](SECURITY.md) for vulnerability reporting.\n\n## Development\n\n```bash\nmake build          # Build binary\nmake test           # Run all tests\nmake lint           # Run golangci-lint\nmake generate       # Regenerate commands from OpenAPI spec\nmake spec-update    # Download latest Confluence OpenAPI spec\nmake docs-dev       # Serve documentation locally\n```\n\n| Target            | Description                                   |\n|-------------------|-----------------------------------------------|\n| `make build`      | Build the `cf` binary                         |\n| `make test`       | Run all tests with race detection             |\n| `make lint`       | Run golangci-lint                             |\n| `make generate`   | Regenerate commands from Confluence OpenAPI    |\n| `make spec-update`| Download latest Confluence OpenAPI spec        |\n| `make docs-dev`   | Serve VitePress documentation locally          |\n| `make docs-build` | Build static documentation site               |\n| `make clean`      | Remove build artifacts                        |\n\n## License\n\n[Apache 2.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsofq%2Fconfluence-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsofq%2Fconfluence-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsofq%2Fconfluence-cli/lists"}