[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81486":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":15,"stars30d":16,"stars90d":13,"forks30d":13,"starsTrendScore":13,"compositeScore":13,"rankGlobal":10,"rankLanguage":10,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":20,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":13,"starSnapshotCount":13,"syncStatus":16,"lastSyncTime":36,"discoverSource":37},81486,"pressship","Automattic\u002Fpressship","Automattic","Submit and release WordPress.org plugins from the command line.","https:\u002F\u002Fpressship.org\u002F",null,"TypeScript",31,0,29,1,2,"MIT License",false,"main",true,[22,23,24,25,26,27,28,29,30,31,32],"cli","nodejs","plugin-check","publishing","submission","svn","wordpress","wordpress-org","wordpress-playground","wordpress-plugin","wp-cli","2026-06-12 02:04:15","\u003Cp align=\"center\">\n  \u003Cpicture>\n    \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets\u002Fpressship-square-dark.png\">\n    \u003Cimg src=\"assets\u002Fpressship-square.png\" alt=\"Pressship\" width=\"120\" \u002F>\n  \u003C\u002Fpicture>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">Pressship\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cem>WordPress.org plugin publishing, from the terminal.\u003C\u002Fem>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fnodejs.org\u002F\">\u003Cimg alt=\"Node.js 20+\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fnode-%3E%3D20-1e293b?logo=node.js&logoColor=white&style=flat-square\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fpressship\">\u003Cimg alt=\"npm\" src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fpressship?color=3858e9&logo=npm&logoColor=white&style=flat-square\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fdevelopers\u002F\">\u003Cimg alt=\"WordPress.org\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FWordPress.org-plugin%20directory-21759b?logo=wordpress&logoColor=white&style=flat-square\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"LICENSE\">\u003Cimg alt=\"License: MIT\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-3858e9?style=flat-square\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ff\u002Fpressship\">\u003Cimg alt=\"GitHub stars\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Ff\u002Fpressship?style=flat-square&logo=github&color=1e293b\" \u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#quick-start\">Quick start\u003C\u002Fa> ·\n  \u003Ca href=\"#commands\">Commands\u003C\u002Fa> ·\n  \u003Ca href=\"#managed-plugin-check\">Managed Plugin Check\u003C\u002Fa> ·\n  \u003Ca href=\"#agent-skill\">Agent skill\u003C\u002Fa> ·\n  \u003Ca href=\"https:\u002F\u002Fpressship.org\">Docs\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\nPressship is a modern command-line tool for the entire WordPress.org plugin publishing lifecycle — validating, packaging, submitting for review, releasing through SVN, inspecting submission state, and even booting your plugin in [WordPress Playground](https:\u002F\u002Fwordpress.org\u002Fplayground\u002F).\n\nIt keeps WordPress.org-specific behavior **explicit** and makes everything around it **quiet**.\n\n```bash\nnpx pressship publish .\u002Fmy-plugin\n```\n\n## Why Pressship?\n\nPublishing a WordPress plugin to WordPress.org normally means juggling a lot of small things: the right zip layout, `readme.txt` validation, Plugin Check setup, the developer-page upload form, then SVN for releases. Pressship automates the chores while keeping the official WordPress.org review and SVN release behavior intact.\n\nIf you've used `npm publish`, this should feel familiar.\n\n## Quick start\n\n```bash\n# 1. Authenticate with WordPress.org\nnpx pressship login\n\n# 2. (Optional) Verify the saved session\nnpx pressship whoami\n\n# 3. Verify the plugin without packaging or uploading\nnpx pressship verify .\u002Fmy-plugin\n\n# 4. Submit for review or release an approved plugin\nnpx pressship publish .\u002Fmy-plugin\n```\n\nThat's it. Pressship handles browser-based login, packaging, readme validation, Plugin Check, and routing between submission and SVN release.\n\n## Features\n\n- **Browser-based login** — opens `login.wordpress.org` in a real browser and saves only the session locally. Your password is never read or stored.\n- **Smart `publish`** — automatically routes between new-plugin review submission, pending reupload, or SVN release.\n- **Zero-setup Plugin Check** — bundles its own managed WordPress + SQLite + Plugin Check environment when you don't already have WP-CLI.\n- **WordPress.org readme validator** — runs the official validator before you upload anything.\n- **Submission state inspector** — reads the logged-in developer page to surface review status, slug, reupload availability, and Plugin Check links.\n- **SVN release workflow** — handles checkout, trunk sync, tag creation, and commit.\n- **WordPress Playground demos** — boot any local path or hosted slug in Playground using the plugin's own WP\u002FPHP requirements.\n- **`.pressshipignore` + glob ignores** — sensible defaults, easy per-command overrides.\n- **Agent skill included** — a Pressship publishing skill for coding agents (Codex, Claude Code, etc.).\n- **Beautiful terminal UX** — colored output, progress indicators, structured findings.\n\n## Requirements\n\n- **Node.js 20+**\n- A **WordPress.org account**\n- **Internet access** for first-run browser and Plugin Check setup\n- **PHP** when Pressship needs to prepare its managed Plugin Check environment\n- **`svn`** for approved-plugin releases and `get` checkouts. If it is missing, Pressship can detect your OS and offer to install Subversion with Homebrew, apt, dnf, yum, pacman, zypper, apk, winget, or Chocolatey.\n\nPlaywright Chromium is installed automatically the first time browser automation runs.\n\n## Commands\n\n| Command | What it does |\n| ------- | ------------ |\n| `pressship login` | Open WordPress.org login in a browser and save the session. |\n| `pressship whoami` | Show the active WordPress.org account. |\n| `pressship logout` | Remove the saved WordPress.org session. |\n| `pressship info` | Inspect local plugin metadata or hosted WordPress.org plugin info. |\n| `pressship ls` | List plugins for the saved account or a public WordPress.org profile. |\n| `pressship get` | Checkout or update a WordPress.org plugin SVN working copy. |\n| `pressship status` | Read review state from the logged-in developer dashboard. |\n| `pressship version \u003Cpatch\\|minor\\|major>` | Bump the plugin header version and readme stable tag together. |\n| `pressship verify` | Run readme validation and Plugin Check without creating a zip. |\n| `pressship pack` | Validate, run Plugin Check, and write an installable zip. |\n| `pressship publish` | Route to submit or release based on current state. |\n| `pressship submit` | Upload a zip to WordPress.org review (or reupload). |\n| `pressship release` | Push an approved release through SVN trunk + tags. |\n| `pressship demo` | Open the plugin in WordPress Playground. |\n\nGet help for any command:\n\n```bash\npressship \u003Ccommand> --help\n```\n\n## WP-CLI Package\n\nPressship can also be installed as a WP-CLI package:\n\n```bash\nwp package install f\u002Fpressship\n```\n\nThat adds a `wp ship` command:\n\n```bash\nwp ship verify .\u002Fmy-plugin\nwp ship pack .\u002Fmy-plugin\nwp ship publish .\u002Fmy-plugin --dry-run\n```\n\nThe WP-CLI package is intentionally a thin PHP bridge. It forwards arguments to the Node.js Pressship package through `npx`, so the publishing logic stays in one place. Node.js 20+ and npm\u002Fnpx are still required.\n\n## Authentication\n\n```bash\npressship login\n```\n\nOpens `login.wordpress.org` in a real browser. Complete the login manually — Pressship waits until it detects a logged-in user, then saves only the browser session state.\n\n```bash\npressship whoami          # Print the active account\npressship whoami --json   # Machine-readable output\npressship logout          # Remove the local session\n```\n\n> Pressship never reads, transmits, or stores your WordPress.org password.\n\n## Publishing\n\n`publish` is the modern, opinionated happy path. It inspects your plugin and routes to the right flow:\n\n- A pending WordPress.org review submission → **reupload**.\n- A new plugin Pressship hasn't seen → **submit for review**.\n- An approved plugin with an SVN repository → **release**.\n- Ambiguous? Pressship asks.\n\n```bash\npressship publish .\u002Fmy-plugin              # Pick the right flow automatically\npressship publish .\u002Fmy-plugin --dry-run    # Validate + package, no upload\npressship publish .\u002Fmy-plugin --submit     # Force review submission\npressship publish .\u002Fmy-plugin --release    # Force SVN release\npressship publish .\u002Fmy-plugin --no-verify  # Skip readme validation + Plugin Check\npressship publish .\u002Fmy-plugin --yes        # Skip confirmation prompts\npressship publish .\u002Fmy-plugin --release --no-install-svn\n```\n\nBefore uploading or committing an SVN release, `publish` verifies the plugin with readme validation and Plugin Check. Use `--no-verify` only when you intentionally want to bypass those checks.\n\nNeed fine-grained control? Use the explicit subcommands `submit` and `release`.\n\n## Packaging\n\n```bash\npressship verify .\u002Fmy-plugin\n```\n\nRuns readme validation and Plugin Check without writing a zip or publishing anything.\n\n```bash\npressship verify .\u002Fmy-plugin --ignore \"assets\u002F**\u002F*.mp4\"\npressship verify .\u002Fmy-plugin --skip-readme-validator\npressship verify .\u002Fmy-plugin --wp-path \u002Fpath\u002Fto\u002Fwordpress\npressship verify .\u002Fmy-plugin --json\n```\n\n```bash\npressship pack .\u002Fmy-plugin\n```\n\nValidates the plugin, runs Plugin Check, and writes `{slug}.zip` — without uploading. Useful for CI artifacts or manual uploads.\n\n```bash\npressship pack .\u002Fmy-plugin --output-dir .\u002Fbuild\npressship pack .\u002Fmy-plugin --ignore \"assets\u002F**\u002F*.mp4\"\npressship pack .\u002Fmy-plugin --no-verify\npressship pack .\u002Fmy-plugin --json\n```\n\n### Ignore rules\n\nDefault exclusions: `.git`, `.gitignore`, `.github`, `.DS_Store`, `.idea`, `.vscode`, `.env*`, `.pressship-svn`, `node_modules`, `dist`, `build`, `coverage`, `tests`, `*.log`, `*.zip`.\n\nAdd per-project exclusions in a `.pressshipignore` file (same syntax as `.gitignore`):\n\n```gitignore\nassets\u002F**\u002F*.mp4\ndocs\u002Fraw\u002F**\nplayground\u002F**\n```\n\nOr pass `--ignore \u003Cglob>` directly (repeat as needed):\n\n```bash\npressship publish .\u002Fmy-plugin --ignore \"assets\u002F**\u002F*.mp4\" --ignore \"docs\u002Fraw\u002F**\"\n```\n\n## Listing WordPress.org plugins\n\n```bash\npressship ls                  # Saved account, including SVN committer plugins\npressship ls fatihkadirakin   # Public profile plugins for a username\npressship ls --public         # Force the public profile view\npressship ls --json\n```\n\n`ls` reads WordPress.org's plugin author archive. Public archives show plugins where the user is listed as a contributor. When you run `pressship ls` for the saved logged-in account, WordPress.org also includes plugins where that account has SVN committer access.\n\n## Getting a plugin SVN working copy\n\n```bash\npressship get list-all-urls\npressship get list-all-urls .\u002Fplugins\u002Flist-all-urls\npressship get https:\u002F\u002Fwordpress.org\u002Fplugins\u002Flist-all-urls\u002F .\u002Flist-all-urls\npressship get list-all-urls --json\npressship get list-all-urls --no-install-svn\n```\n\n`get` checks out `https:\u002F\u002Fplugins.svn.wordpress.org\u002F\u003Cslug>` into the destination directory. If the destination already contains an SVN working copy, Pressship runs `svn update` instead. After checkout or update, it prints repository details such as revision, last changed revision, trunk\u002Fassets availability, and tag count.\n\nIf `svn` is not available, Pressship detects your operating system and package manager, then asks before installing Subversion. Use `--no-install-svn` to skip the installer helper and fail with manual instructions.\n\n### Editing an approved plugin from SVN\n\nWordPress.org SVN working copies keep editable plugin code in `trunk\u002F`, and published versions in `tags\u002F\u003Cversion>\u002F`. A typical release flow is:\n\n```bash\npressship get my-plugin .\u002Fmy-plugin\ncd .\u002Fmy-plugin\n# edit files in trunk\u002F\npressship version patch\npressship publish\n```\n\nWhen Pressship runs from the SVN checkout root, it treats `trunk\u002F` as the plugin directory, bumps the version there, and routes `publish` to the SVN release flow.\n\n## Inspecting submission state\n\n```bash\npressship status                 # All submitted plugins\npressship status .\u002Fmy-plugin     # Match by local plugin\npressship status my-plugin       # Match by slug\npressship status my-plugin --json\n```\n\nSample output:\n\n```\nPressmind\n  Status       Awaiting Review — This plugin has not yet been reviewed.\n  Slug         pressmind\n  Submitted    May 14, 2026\n  Plugin ID    313331\n  Reupload     available\n  Slug change  available\n  File         pressmind.zip\n  Version      0.0.3\n```\n\n## Plugin metadata\n\n```bash\npressship info                                 # Current directory\npressship info .\u002Fmy-plugin                     # Local path\npressship info 16deza-table-cell-extras        # Hosted slug\npressship info --remote                        # Hosted info for the current plugin slug\npressship info .\u002Fmy-plugin --json\n```\n\nFor local plugins, Pressship parses headers and readme metadata. For hosted plugins it queries the official WordPress.org plugin info API. Use `--remote` to force the hosted plugin-store lookup from a local path or the current directory.\n\n## Version bumping\n\n```bash\npressship version patch     # 1.2.3 → 1.2.4\npressship version minor     # 1.2.3 → 1.3.0\npressship version major     # 1.2.3 → 2.0.0\n```\n\nUpdates the `Version:` header in the main plugin file **and** the `Stable tag:` in `readme.txt` together.\n\n## Playground demos\n\n```bash\npressship demo .\u002Fmy-plugin                # Mount local plugin into Playground\npressship demo 16deza-table-cell-extras   # Install hosted plugin from WP.org\n```\n\nPressship boots a local [WordPress Playground](https:\u002F\u002Fwordpress.org\u002Fplayground\u002F) server with the plugin installed and activated. For local paths the plugin directory is mounted, so code changes are immediately reflected.\n\n```bash\npressship demo .\u002Fmy-plugin --port 9401\npressship demo .\u002Fmy-plugin --wp 6.8 --php 8.3\npressship demo .\u002Fmy-plugin --reset\npressship demo .\u002Fmy-plugin --skip-browser\n```\n\nThe Playground server keeps running until you stop it with `Ctrl+C`.\n\n## Managed Plugin Check\n\nBy default, Pressship runs the official [WordPress.org Plugin Check](https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fplugin-check\u002F) against your plugin before uploading. If you don't already have WP-CLI installed, Pressship sets up its own managed environment automatically:\n\n1. Detects (or downloads) WP-CLI.\n2. Downloads WordPress core.\n3. Sets up SQLite Database Integration (no MySQL required).\n4. Runs `wp core install` against the SQLite-backed site.\n5. Installs the WordPress.org Plugin Check plugin.\n6. Bootstraps it with the correct `--require` flag.\n\nAll cached under `~\u002F.config\u002Fpressship\u002F`.\n\nIf you'd rather use your own install:\n\n```bash\npressship publish .\u002Fmy-plugin --wp-path \u002Fpath\u002Fto\u002Fwordpress\n```\n\nFor submit-style uploads, you can skip only Plugin Check while still running readme validation:\n\n```bash\npressship publish .\u002Fmy-plugin --skip-plugin-check\n```\n\nTo bypass both readme validation and Plugin Check before publishing or releasing through SVN:\n\n```bash\npressship publish .\u002Fmy-plugin --no-verify\n```\n\n## Releasing through SVN\n\nFor approved plugins:\n\n```bash\npressship release .\u002Fmy-plugin\n```\n\nPressship will:\n\n1. Verify the plugin with readme validation and Plugin Check.\n2. Checkout or update `https:\u002F\u002Fplugins.svn.wordpress.org\u002F\u003Cslug>`.\n3. Confirm the local version has not already been released as `tags\u002F\u003Cversion>`.\n4. Sync packaged plugin files into `trunk\u002F`.\n5. Sync `.wordpress-org\u002F` assets into the SVN `assets\u002F` directory when that folder exists.\n6. Create `tags\u002F\u003Cversion>` from `trunk\u002F`.\n7. Show `svn status` and ask before committing.\n8. Commit with `--no-auth-cache` and a generated WordPress.org SVN password.\n\nUse `--no-verify` to skip readme validation and Plugin Check before the SVN release.\n\nIf the SVN tag already exists, Pressship stops with a “No version change detected” message instead of publishing the same version again.\n\nFor commits, Pressship uses the saved WordPress.org login to infer your SVN username. If no SVN password is saved yet, it points you to your WordPress.org SVN password page:\n\n```text\nhttps:\u002F\u002Fprofiles.wordpress.org\u002F\u003Cusername>\u002Fprofile\u002Fedit\u002Fgroup\u002F3\u002F?screen=svn-password\n```\n\nGenerate the password there, paste it into Pressship once, and it will be stored locally under `~\u002F.config\u002Fpressship\u002Fsvn-credentials.json` for future releases.\n\n```bash\npressship release .\u002Fmy-plugin --slug my-plugin\npressship release .\u002Fmy-plugin --version 1.2.3\npressship release .\u002Fmy-plugin --username WpOrgUser\npressship release .\u002Fmy-plugin --message \"Release 1.2.3\"\npressship release .\u002Fmy-plugin --wp-path \u002Fpath\u002Fto\u002Fwordpress\npressship release .\u002Fmy-plugin --dry-run\npressship release .\u002Fmy-plugin --no-verify\npressship release .\u002Fmy-plugin --yes\npressship release .\u002Fmy-plugin --no-install-svn\n```\n\n## Agent skill\n\nPressship ships with a publishing skill for coding agents (Codex, Claude Code, etc.). It teaches your agent to publish WordPress plugins cautiously — dry-run first, state-aware, with a final review step before any upload.\n\n```bash\nnpx skills add f\u002Fpressship --skill wordpress-plugin-publish -a codex\n```\n\nReplace `codex` with another supported agent name, e.g. `claude-code`. List available skills first:\n\n```bash\nnpx skills add f\u002Fpressship --list\n```\n\n## Configuration\n\nPressship stores local state under your user config directory:\n\n```\n~\u002F.config\u002Fpressship\u002F\n```\n\nContents:\n\n- WordPress.org browser session storage\n- Saved WordPress.org SVN passwords for release commits\n- Debug screenshots from failed browser automation\n- Managed Plugin Check cache (WP-CLI phar, WordPress core, SQLite, Plugin Check plugin)\n- Generated Playground demo blueprints\n\nOverride the location:\n\n```bash\nPRESSSHIP_CONFIG_DIR=\u002Ftmp\u002Fpressship pressship status\n```\n\n> `PRESSPORT_CONFIG_DIR` is still respected as a legacy fallback.\n\n## Documentation\n\nFull docs live at **\u003Chttps:\u002F\u002Fpressship.org>**.\n\nThe source is in [`website\u002F`](.\u002Fwebsite) and runs as a standard Docusaurus site:\n\n```bash\nnpm run docs:dev      # Local dev server\nnpm run docs:build    # Production build\nnpm run docs:serve    # Preview production build\n```\n\nGitHub Pages deployment is wired up in [`.github\u002Fworkflows\u002Fdocs.yml`](.github\u002Fworkflows\u002Fdocs.yml).\n\n## Development\n\n```bash\nnpm install\nnpm run dev -- --help     # Run the CLI locally\nnpm run typecheck\nnpm test\nnpm run build\n```\n\nTry local commands without publishing the package:\n\n```bash\nnpm run dev -- login\nnpm run dev -- whoami\nnpm run dev -- pack .\u002Fmy-plugin\nnpm run dev -- publish .\u002Fmy-plugin --dry-run\n```\n\nPackage smoke test:\n\n```bash\nnpm pack --dry-run\n```\n\n## Troubleshooting\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Browser runtime missing\u003C\u002Fstrong>\u003C\u002Fsummary>\n\nPressship installs Chromium automatically. If that fails:\n\n```bash\nnpx playwright install chromium\n```\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Session expired or not logged in\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n```bash\npressship logout\npressship login\n```\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Plugin Check setup problems\u003C\u002Fstrong>\u003C\u002Fsummary>\n\nThe managed environment needs PHP and internet access on first run. To bypass:\n\n```bash\npressship publish .\u002Fmy-plugin --skip-plugin-check\n```\n\nTo use your own WordPress install:\n\n```bash\npressship publish .\u002Fmy-plugin --wp-path \u002Fpath\u002Fto\u002Fwordpress\n```\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>WordPress.org form changes\u003C\u002Fstrong>\u003C\u002Fsummary>\n\nThe submission flow is browser automation over the logged-in developer page (not a documented public API). If WordPress.org changes the form, Pressship fails loudly and saves a debug screenshot under `~\u002F.config\u002Fpressship\u002Fdebug\u002F`.\n\u003C\u002Fdetails>\n\n## Security\n\n- Pressship **never stores your WordPress.org password**.\n- Login is completed in a real browser by you.\n- Playwright browser session state is stored locally for WordPress.org browser automation.\n- If you run an SVN release, Pressship can store the generated WordPress.org SVN password locally so future commits can run non-interactively.\n- `pressship logout` removes the local browser session; it does **not** revoke other active WordPress.org sessions.\n\n## Contributing\n\nIssues, ideas, and pull requests are welcome. Please open an issue first for larger changes so we can discuss the direction.\n\nWhen opening a PR, please:\n\n- Add or update relevant tests (`npm test`).\n- Run `npm run typecheck` and `npm run build`.\n- Keep new commands consistent with the existing CLI patterns.\n\n## Acknowledgements\n\nPressship is built on the work of many people and projects:\n\n- [WordPress.org](https:\u002F\u002Fwordpress.org\u002F) and the plugin review team\n- [WP-CLI](https:\u002F\u002Fwp-cli.org\u002F) and [Plugin Check](https:\u002F\u002Fgithub.com\u002FWordPress\u002Fplugin-check)\n- [SQLite Database Integration](https:\u002F\u002Fgithub.com\u002FWordPress\u002Fsqlite-database-integration)\n- [WordPress Playground](https:\u002F\u002Fwordpress.org\u002Fplayground\u002F)\n- [Playwright](https:\u002F\u002Fplaywright.dev\u002F) for browser automation\n- [Docusaurus](https:\u002F\u002Fdocusaurus.io\u002F) for the documentation site\n\n## Disclaimer\n\n**Pressship is an independent, community project.** It is not affiliated with, endorsed by, or sponsored by WordPress, WordPress.org, the WordPress Foundation, or Automattic. The WordPress® trademark is the property of the WordPress Foundation.\n\n## License\n\n[MIT](LICENSE) © Pressship contributors\n","Pressship 是一个用于从命令行提交和发布 WordPress.org 插件的工具。它支持插件验证、打包、提交审核、通过 SVN 发布、检查提交状态，甚至可以在 WordPress Playground 中启动插件。核心功能包括基于浏览器的登录（不保存密码）、智能发布命令（自动处理新插件提交或已批准插件的发布），以及对 `readme.txt` 文件的验证等。适用于需要简化 WordPress 插件发布流程的开发者，尤其适合那些希望提高工作效率并保持官方审核和发布行为一致性的用户。","2026-06-11 04:05:15","CREATED_QUERY"]