[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-79921":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":12,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":14,"stars30d":15,"stars90d":13,"forks30d":13,"starsTrendScore":16,"compositeScore":17,"rankGlobal":9,"rankLanguage":9,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":9,"pushedAt":9,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":13,"starSnapshotCount":13,"syncStatus":14,"lastSyncTime":36,"discoverSource":37},79921,"resale-agent-skill-hub","madguyevans-creator\u002Fresale-agent-skill-hub","madguyevans-creator","AI-powered multi-platform C2C resale toolkit — 8 Claude Code skills + MCP server for automating second-hand selling",null,"Python",104,8,0,2,14,1,2.86,"MIT License",false,"main",true,[23,24,25,26,27,28,29,30,31,32],"ai-agent","c2c","claude-code","depop","ebay","mcp-server","python","resale","second-hand","xianyu","2026-06-12 02:03:55","# SkillHub — Smart Resale Agent\n\nA collection of 8 Claude Code skills + an **MCP Server** implementing a **Multi-Platform Smart Resale Agent**: an AI-powered conversational workflow for C2C second-hand resale that reduces the barriers to listing and selling pre-owned goods.\n\n**v2**: Now runs as a standard MCP server (JSON-RPC over stdio) that any MCP-compatible client can call — Claude Desktop, Cursor, VS Code, or custom web frontends.\n\n## Architecture\n\n```\nskillhub\u002F\n├── broker_core\u002F                  # Shared engine (pip install -e .)\n│   ├── session_manager.py        # Browser login → cookie persistence\n│   ├── platform_client.py        # Authenticated platform API clients\n│   ├── state_manager.py          # Listing lifecycle state (~\u002F.broker\u002Flistings.json)\n│   ├── scheduler.py              # launchd (macOS) \u002F cron (Linux) registration\n│   ├── audit_logger.py           # Append-only Transparency Log (~\u002F.broker\u002Faudit.jsonl)\n│   └── mcp_server.py             # ★ MCP Server — 7 tools via JSON-RPC\n├── guardrails\u002F                   # ★ Prompt framework (v2)\n│   ├── Omni-Agent-Guardrails.yaml\n│   └── README.md\n├── skills\u002F                       # 8 Claude Code skills\n│   ├── personal-broker\u002F          # Hub: orchestrates the 7-step pipeline\n│   ├── broker-recognize\u002F         # Step 1: Photo → product info\n│   ├── broker-auth\u002F              # Step 3: Bind platform accounts\n│   ├── broker-price\u002F             # Step 2: Authenticated price research\n│   ├── broker-card\u002F              # Step 4: Listing cards → auto-publish\n│   ├── broker-schedule\u002F          # Step 5: Repricing interval & cron\u002Flaunchd\n│   ├── broker-fuse\u002F              # Step 6: Price Shield (floor price)\n│   └── broker-delist\u002F            # Step 7: Auto-detect sale → delist all\n├── tests\u002F                        # 41 tests\n└── docs\u002F                         # Setup guides for MCP clients\n```\n\n## The 7-Step Pipeline\n\n```\n📷 broker-recognize  →  Photo → structured product info\n🔐 broker-auth       →  Open browser → log in once → session persisted\n🔍 broker-price      →  Search platforms with session → transparency report\n🛡️ broker-fuse       →  ⚠️ GLOBAL INTERCEPTOR — set unbreachable floor price BEFORE publishing\n📋 broker-card       →  Generate cards → validate floor → user confirms → auto-publish\n⏰ broker-schedule   →  Register launchd\u002Fcron for daily repricing checks (floor-gated)\n✅ broker-delist     →  Scheduler detects sale → auto-delist all platforms (no confirmation)\n```\n\nEach skill can also be invoked standalone (e.g., `\u002Fbroker-price` for pricing only).\n\n## Prerequisites\n\n### ANTHROPIC_API_KEY (required)\n\n`broker-recognize` uses the **Anthropic API** (Claude Vision) to analyze product photos. Set your API key:\n\n```bash\nexport ANTHROPIC_API_KEY=\"sk-ant-...\"\n```\n\nWithout this key, photo recognition will fail.\n\n### Python 3.9+\n\n### Playwright (for platform auth)\n\n## Quick Start\n\nPick one path. Path A is recommended for most users.\n\n### Path A: Claude Desktop (recommended, 5 minutes)\n\n**Step 1: Install**\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fmadguyevans-creator\u002Fskillhub.git\ncd skillhub && pip install -e .\npip install playwright && playwright install chromium\n```\n\n**Step 2: Get API key (one-time)**\nGo to [console.anthropic.com](https:\u002F\u002Fconsole.anthropic.com) → API Keys → create key.\nSave it once:\n```bash\necho 'sk-ant-your-key' > ~\u002F.broker\u002Fapi_key\n```\n\n**Step 3: Configure Claude Desktop**\nAdd to `~\u002FLibrary\u002FApplication Support\u002FClaude\u002Fclaude_desktop_config.json`:\n```json\n{\n  \"mcpServers\": {\n    \"skillhub\": {\n      \"command\": \"python3\",\n      \"args\": [\"\u002Fpath\u002Fto\u002Fskillhub\u002Fbroker_core\u002Fmcp_server.py\"],\n      \"env\": { \"BROKER_MOCK_MODE\": \"true\" }\n    }\n  }\n}\n```\n\n**Step 4: Restart Claude Desktop.** Done.\n\nOpen Claude Desktop, say \"帮我卖掉这双鞋\" + upload photo. Claude automatically calls 7 MCP tools in the correct order.\n\n### Path B: Claude Code CLI\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fmadguyevans-creator\u002Fskillhub.git\ncd skillhub && pip install -e .\ncp -r skills\u002F* ~\u002F.claude\u002Fskills\u002F\n```\n\nUse inside Claude Code:\n- `\u002Fpersonal-broker` — full pipeline\n- `\u002Fbroker-recognize` — analyze product photo\n- `\u002Fbroker-price` — price research\n- `\u002Fbroker-fuse` — set floor price\n\n### Path C: Demo without any accounts (mock mode)\n\nBy default `BROKER_MOCK_MODE=true`. Everything works with realistic simulated data — no API key, no platform accounts needed. Photo recognition returns a demo Nike sneaker.\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fmadguyevans-creator\u002Fskillhub.git\ncd skillhub && pip install -e .\n# Done — you're in mock mode. Use Path A or B above.\n```\n\n### Going real: turn off mock mode\n\n```bash\nexport BROKER_MOCK_MODE=false\n# Then bind platform accounts:\npython3 skills\u002Fbroker-auth\u002Fscripts\u002Fauth.py --all\n# This opens a browser. Log into each platform once. Cookies persist.\n```\n\n## Sandbox \u002F Mock Mode\n\nBy default, `BROKER_MOCK_MODE=true` — all platform API calls (search, publish, delist) return realistic simulated data. No real HTTP requests are made. This allows:\n\n- **Demo without platform accounts**: test the full pipeline with mock data\n- **Safe development**: no risk of accidentally publishing or modifying real listings\n- **Anti-scraping avoidance**: no requests that could trigger rate limits or CAPTCHAs\n\nTo use real platform APIs, set `BROKER_MOCK_MODE=false` in your environment. Requires platform accounts bound via `broker-auth`.\n\n## Transparency Log\n\nEvery AI-assisted decision is recorded to `~\u002F.broker\u002Faudit.jsonl` — an append-only, immutable JSONL file. You can always audit what the agent did and why.\n\n**What gets logged:**\n- Price research results (`log_pricing`)\n- Price shield checks — blocked or passed (`log_fuse_check`)\n- Listing publishes (`log_publish`)\n- Auto-repricing events (`log_repricing`)\n- Delist events (`log_delist`)\n- Schedule registrations (`log_schedule_registered`)\n\n**How to view:**\n```python\nfrom broker_core import audit_logger\nprint(audit_logger.format_trail(\"item_abc123\"))  # Human-readable timeline\ntrail = audit_logger.get_audit_trail(\"item_abc123\")  # Raw JSON array\n```\n\nWhen every action is recorded with rationale, there is no \"black box\" — the user can always audit what happened and why.\n\n## Key Design Decisions\n\n| Decision | Rationale |\n|----------|-----------|\n| **Not web scraping** | Uses user's own session cookies. Searching as a logged-in user, not crawling. |\n| **Bind once, reuse** | Platform login happens once via browser. Session persisted until expiry (~30 days). |\n| **Sold median pricing** | Recommended price = median of actually-sold comparables. Falls back to 5% below active median. |\n| **Price shield as global interceptor** | Every price-mutating action (publish, repricing) validates against the floor. Blocked actions are logged to audit trail. |\n| **Auto-execute after confirm** | Once user confirms card + floor + schedule, the system auto-publishes and auto-reprices without re-confirmation. |\n| **No confirmation on delist** | When scheduler detects sale on any platform, auto-delist all others immediately. |\n| **launchd \u002F cron** | System-level scheduling, no daemon process needed. |\n| **Mock mode** | `BROKER_MOCK_MODE=true` by default — safe demo without real accounts or anti-scraping risk. |\n| **Append-only Transparency Log** | Immutable JSONL log of every decision. The user can always audit what happened. |\n\n## License\n\nMIT — see [LICENSE](LICENSE)\n","SkillHub是一个基于AI的多平台C2C二手商品转售工具包，集成了8个Claude Code技能和一个MCP服务器，用于自动化二手商品的销售流程。项目通过智能对话工作流简化了商品上架与销售过程，其核心功能包括商品识别、价格研究、自动发布列表卡、定时调价以及自动下架等。技术特点方面，SkillHub利用Python编写，并采用Anthropic API进行图像分析，支持多种平台如eBay、闲鱼等。适用于希望通过减少操作复杂度来提高二手商品销售效率的个人卖家或小型商家使用。","2026-06-11 03:58:31","CREATED_QUERY"]