Skip to content
Agentmart
Submit a tool

capafy-autopublish

THE single skill to publish profitable, rejection-proof skills to the Capafy marketplace end-to-end, verification-baked.

Skill by Daisuke134

IndexedMIT★ 8
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/daisuke134-capafy-autopublish

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

THE single skill to publish profitable, rejection-proof skills to the Capafy marketplace end-to-end, verification-baked. Load this one skill and you can: pick a proven-profitable niche, generate the skill, write a best-practice listing, publish it (CP1 card + CP2 LLM-key host + CP3 submit) via the CloakBrowser daily-driver, and verify it (linter + browser + remote-status). Use for ANY Capafy publishing. This skill VENDORS the Capafy CLIs internally — never invoke capafy-publisher / capafy-user directly; everything routes through here.

Use cases: ml, writing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/capafy-autopublish

What's inside

Skill name
capafy-autopublish
Description
THE single skill to publish profitable, rejection-proof skills to the Capafy marketplace end-to-end, verification-baked. Load this one skill and you can: pick a proven-profitable niche, generate the skill, write a best-practice listing, publish it (CP1 card + CP2 LLM-key host + CP3 submit) via the CloakBrowser daily-driver, and verify it (linter + browser + remote-status). Use for ANY Capafy publishing. This skill VENDORS the Capafy CLIs internally — never invoke capafy-publisher / capafy-user directly; everything routes through here.
License
MIT
Instructions
107 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (200)

  • BEST_PRACTICES.md
  • CP1_AGENTIC.md
  • DAILY_LOOP.md
  • PUBLISHING_RUNBOOK.md
  • SKILL.md
  • agent_card_templates.md · references/
  • pricing.md · references/
  • web_checkpoints.md · references/
  • browser-owner · scripts/
  • build_config.py · scripts/
  • build_publish_selection.py · scripts/
  • candidate_backlog.py · scripts/
  • check_hosted_model.py · scripts/
  • cloud_cycle.py · scripts/
  • cp1_agent.py · scripts/
  • cp1_python.sh · scripts/
  • daily_loop.sh · scripts/
  • drive_checkpoint1.py · scripts/
  • drive_checkpoint2.py · scripts/
  • drive_checkpoint3.py · scripts/
  • drive_cp1.py · scripts/
  • drive_logo.py · scripts/
  • duplicate_gate.py · scripts/
  • frozen_guard.sh · scripts/
  • inventory_status.py · scripts/
  • key_health_gate.sh · scripts/
  • leak_scan.sh · scripts/
  • lint_listing.py · scripts/
  • logo_gen.js · scripts/
  • proof_images.py · scripts/
  • publish_finish.sh · scripts/
  • publish_input_contract.py · scripts/
  • publish_one.sh · scripts/
  • publish_prepare.sh · scripts/
  • react_set.js · scripts/
  • reconcile_ledger.py · scripts/
  • rejection_queue.py · scripts/
  • save_review_url.py · scripts/
  • select_publish_agent.py · scripts/
  • selections_from_skill_md.py · scripts/
  • test_proof_images.py · scripts/
  • verify_cp1_model.py · scripts/
  • verify_pricing.py · scripts/
  • with_publish_lock.py · scripts/
  • test_agent_work_state_isolation.sh · test/
  • test_aid_guard.sh · test/
  • test_candidate_backlog.py · test/
  • test_capafy_browser_lease.py · test/
  • test_check_hosted_model.py · test/
  • test_cloud_cycle.py · test/
  • test_cloud_paths.py · test/
  • test_cp1_agent.py · test/
  • test_cp1_agent_prices.py · test/
  • test_cp1_price_cards_dom.py · test/
  • test_cp2_default_model.py · test/
  • test_cp2_retry_once.py · test/
  • test_daily_loop_lock.py · test/
  • test_daily_loop_terminal.py · test/
  • test_display_preset_model.py · test/
  • test_download_pricing.py · test/
  • …and 140 more

SKILL.md (first lines)

# capafy-autopublish — one skill, full Capafy publishing + verification

★ This is the ONLY Capafy skill to invoke. ★ It vendors the Capafy seller CLI
(`vendor/capafy-publisher`) and the market-search CLI (`vendor/capafy-user`).
Other Claude instances: do NOT use those two directly — use this skill.

## What sells on Capafy vs what does not (read first)
Capafy has two agent types:
- **run_online** (cloud_hosted, subscription): the buyer CHATS with the skill in a
  **sandbox** — only the model + what the buyer pastes. NO web, tools, accounts,
  browser, files, or cron. **Sellable test:** "Does the buyer get full value by
  chatting, from model + pasted input alone?" YES → sellable.
  - ✅ humanizer, copywriter, slide-maker (HTML), data-analyst (pasted data), strategist
  - ❌ photo-publisher, auto-poster, scheduler, "researches the web/competitors"
    (sandbox can't act on the world or browse → useless / gets REJECTED, see C4).
- **download** (buyout, one-time): the buyer runs the package in THEIR own env — can
  include tools/browser. (The auto-publisher itself could be sold this way, not run_online.)

We publish **run_online subscription** skills that are sandbox-complete and
retain positive contribution after hosted model cost.

## Canonical publish flow (verification-baked)
Use the split, 0.9.11-compatible flow:

```
scripts/publish_prepare.sh <skill-dir> <LISTING.md> <icon.png>
→ `AGENT_ID` + `AGENT_VERSION_ID` + `EDIT_URL_FILE` / CP1_AGENTIC.md + cp1_agent.py (agentic card confirmation)
→ scripts/publish_finish.sh <agent-id> <skill-name> <LISTING.md> <agent-version-id>
```

The sequence is **Phase A discovery → confirmed selection/init → CP1 →
ordinary `publish-submit --action prepare` → strict same-Agent `security_ready`
readback → `publish-submit --action continue_upload` exactly once → final review
page CP2 → the same or refreshed `publish` review page CP3 exactly once → official
remote verify → ledger**. Fail closed at every step:
the finish wrapper requires `is_confirmed_skills=true`, validates the same Agent ID and
final review URL, polls CP2 config readback, and exits 0 only on
`platform_status=1 ∧ is_confirmed_config_keys=true`.

The deterministic wrapper never invents deep-scan findings or retries an uncertain
upload; a creator-approved agentic deep scan is outside this wrapper and must
complete before returning to ordinary prepare.

`scripts/publish_one.sh` is a legacy unsupported/reference-only no-op shim. Do not
invoke it; use the split flow above.
The browser opens only the exact URL read from `EDIT_URL_FILE`; do not reconstruct or
print it. After the split flow prints ✅, **you still do the browser render check yourself**
(HARD 0.31/0.38), then commit+push the ledger.

## Verification policy (verification is mandatory — anything unverified is slop)
1. **lint_listing.py** (embedded, every publish, fail-closed) — rejection-proof:
   blocks overclaim phrases (browse/scrape/fetch/live/real-time/retrieval/posts/
   sends/.pptx/guaranteed/undetectable…) unless negated, and enforces title≤50 /
   short≤500 / pricing table. This is the C4-rejection learning, made deterministic.
2. **VCSDD adversary** (`vcsdd:vcsdd-adversary`) — spawn for RISKY listings only
   (anything the linter can't judge: subtle retrieval/tool/guarantee claims). Pure
   writing skills can skip it.
3. **browser + remote-status** (me, every publish) — render check + publish-remote-status
   real data (status=1 ∧ cfg=1 ∧ run_online ∧ title ∧ model ∧ pricing).

## How to add ONE new listing (the repeatable recipe)
1. **Pick a winner**: `vendor/capafy-user/scripts/capafy_http.py POST /agent/agents/search`
   (X-Access-Token header) → find a proven seller; GET `/agent/agent/agents/<id>` for its
   pricing/category/structure. Copy facts verbatim; write original words. The paid-only policy
   below overrides any winner free-trial field.
2. **Build the skill** under `$LIFE_MANAGER_REPO/skills/<name>/` (pure-LLM, sandbox-complete,
   honest; no web/tool/account claims). Add `test/case1.md`. Grep for leaks (CLEAN).
3. **Write the listing** `$LIFE_MANAGER_STATE_HOME/features/capafy-<name>/LISTING.md` with the
   header (Primary Model / category / tags), a pricing table copied from the winner with
   `No Free Trial` on every plan, and
   `## Title / ## shortDescription / ## welcomeMessage / ## detailedDescription`.
4. **Icon**: reuse the owner-controlled listing icon when available; otherwise create a suitable 512px asset.
5. **Lint**: `scripts/lint_listing.py <LISTING.md>` until PASS.
6. **Review**: check the exact listing, package model/cap, and same-Agent version binding.
7. **Publish**: run `scripts/publish_prepare.sh <skill-dir> <LISTING.md> <icon>`,
   complete CP1 from `CP1_AGENTIC.md`/`cp1_agent.py`, then run
   `scripts/publish_finish.sh <agent-id> <skill-name> <LISTING.md> <agent-version-id>` → status=1.
8. **Browser-verify** + record in `state/published.jsonl` + commit+push.

## Hard-won rules (full detail in PUBLISHING_RUNBOOK.md)
- **ECONOMICS**: price/cap must retain positive hosted contribution; every plan uses `No Free Trial`.
- **LEAK GUARD**: publish from the isolated Agent HOME/workspace emitted by prepare, never the operator's live workspace.
- **LLM host (CP2)**: use the exact OpenRouter model ID and output cap from the listing contract, format `openai-responses`, key `CAPAFY_HOST_OPENROUTER_KEY`; delete any blockrun/localhost card.
- **CP1 15 gotchas** baked into `cp1_agent.py` (RHF element.fill, real mouse clicks,
  unique title, 下書き persist, monetization heading-click, Subscription scroll, provider
  field, per-plan trial = No Free Trial, On-Demand, DPA checkbox, price-tab SVG green,
  get_by_text form-mount, anchored Add Plan). See RUNBOOK §"NEW-AGENT CP1".
- **Cap**: max 5 unlisted (status 0-3) at once; publish-init fails when full. status=4 frees a slot.
- **Browser**: acquire the registered `capafy:kosuke` seller identity through
  `skills/browser/with-browser.sh`; never connect directly to `:9222`/`:9223` or close it.

## Folder map
```
capafy-autopublish/
├── SKILL.md (this) · BEST_PRACTICES.md · PUBLISHING_RUNBOOK.md
├── scripts/ publish_prepare.sh · publish_finish.sh · daily_loop.sh
│            · select_publish_agent.py · build_publish_selection.py
│            · save_review_url.py
│            · lint_listing.py
│            · build_config.py · cp1_agent.py
│            · drive_checkpoint2.py · drive_checkpoint3.py · niche_picker.py · logo_gen.js
├── vendor/  capafy-publisher/ (packager.py = Capafy seller CLI, self-updating)
│            capafy-user/      (capafy_http.py = market search CLI)
└── state/   published.jsonl (ledger)
```
Canonical copy lives in `$LIFE_MANAGER_REPO/skills/capafy-autopublish`; no repo-external skill mirror is an execution source.

From Daisuke134/life-manager, MIT.

More from Daisuke134/life-manager

Signals

Stars
8
Forks
2
Open issues
2,737
Last commit (this folder)
Oct 24, 2026 (4 days ago)
Last release
Aug 15, 2026 (2 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from Daisuke134

Cite this page

capafy-autopublish skill. Agent Mart. https://agentmart.dev/skills/daisuke134-capafy-autopublish (last updated 2026-10-24)