Publish license products with an AI Agent
v1.0.0
Publish license products with an AI Agent
For: developers who need to publish multiple license-enabled software products on PowerSoftware (powersoftware.app / 幂栈网) and repeat the "register → apply as partner → upload assets → submit" flow.
1. What this is
We packaged the whole publish workflow as an Agent Skill (a Markdown playbook + dependency-free Node scripts) in a public repo:
- Repo: https://github.com/mizhanchengxi/powersoftware-agent-skills
- Skill name:
publish-license-product - License: MIT
The skill teaches Qoder / Claude Code / any compatible agent how to call the platform HTTP endpoints in the right order — and stops hard at every step that must be human.
2. Install in one line
macOS / Linux / WSL:
bash <(curl -sL https://raw.githubusercontent.com/mizhanchengxi/powersoftware-agent-skills/main/install.sh)
Windows PowerShell:
iwr -useb https://raw.githubusercontent.com/mizhanchengxi/powersoftware-agent-skills/main/install.ps1 | iex
Claude Code Plugin Marketplace (recommended for Claude users):
/plugin marketplace add mizhanchengxi/powersoftware-agent-skills
/plugin install publish-license-product@powersoftware-agent-skills
Then just tell your AI assistant "help me publish a TRIAL_FIRST product on PowerSoftware" and the skill activates.
3. What the skill automates
| Phase | What happens | Who does it |
|---|---|---|
| 1. Register user | POST /user/register + email verification code |
Fully AI-driven |
| 2. Login | obtain SESSION_ID cookie |
Fully AI-driven |
| 3. Apply as partner | POST /developer/save submits onboarding profile |
Fully AI-driven |
| 4. Manual review by platform operators | auditStatus transitions to PASS |
⛔ Human only — AI stops here |
| 5. Re-login | required because the DEVELOPER role is injected only at login |
Fully AI-driven |
| 6. Upload assets | cover / 3–20 detail images / installer, via checkFileExists → getPreSignedUrl → PUT |
Fully AI-driven |
| 7. Submit product | POST /product/submit with the assembled payload |
Fully AI-driven |
4. Why step 4 cannot be automated
The DEVELOPER role is injected only at login, based on developer.auditStatus === PASS:
- Even if you submitted the application, without approval your session has no
DEVELOPER. /product/submitcheckssession.role.includes(DEVELOPER)first and returnsneed_developer_roleotherwise.
The skill encodes this as a hard pause: apply-partner.mjs prints ⛔ HUMAN GATE and exits. You re-run login.mjs after the operator approves, then publish.mjs succeeds. Do not and cannot bypass this.
5. Why the asset-upload order is non-negotiable
Cover / detail images / installer slots in the payload all store an objectName (a relative URI). Each file must go through three steps:
POST /file/upload/checkFileExists(md5 content-addressed dedupe / instant upload)POST /file/upload/getPreSignedUrl(returns an R2 pre-signed PUT URL)PUTthe bytes tosignedUrl
businessType must be one of the enum values product_cover_picture / product_detail_picture / product_file; the literal string FILE is rejected by backend zod validation. publish.mjs already handles all of this — you only point it at local file paths.
6. Key fields on a license product (quick reference)
templates/product.license.example.json shows a complete TRIAL_FIRST payload:
- With
salesModel = TRIAL_FIRST,productPricemust be0/null, andtrialDaysis required licenseEditions(BASIC / PRO / ULTIMATE) prices must be strictly ascendingsoftwareVersionfollowsx.y.zsemverintroduce.imagescount must be between 3 and 20
7. Next steps
- The skill ships 5 dependency-free Node 18+ scripts you can edit or extend
- Issues & PRs welcome: https://github.com/mizhanchengxi/powersoftware-agent-skills/issues
This guide is kept in sync with the publish-license-product skill; skill and docs are single-source.