1206 Commits

Author SHA1 Message Date
nicholasDxy cce29fd89c Merge pull request #179 from Starchild-ai-agent/skill/web-crawler-2.8.0
web-crawler 2.11.0: generic transcript resolver get_transcript(url) — metadata before media
2026-09-18 10:14:51 +08:00
leondu ae5f3e8e91 web-crawler 2.11.0: fix review P1s (YouTube captions API independent of yt-dlp; identity needs title or show-notes agreement) + regression tests
- get_transcript recognises YouTube by URL: youtube_transcript() runs even
  when media_info() returns {} (no yt-dlp / blocked / offline); a page
  scrape is never reported as a transcript for a media URL.
- Episode identity: duration + date only ADMIT candidates. Confirmation =
  title similarity >= 0.6 OR show-notes overlap (>= 6 shared distinctive
  tokens, Jaccard >= 0.15). Unconfirmed best candidate is returned under
  'candidate' with found=False and a confirm-with-user note.
- tests/test_transcript_resolver.py: 17 unit tests, network stubbed —
  export list, 403/200-error bodies, both reviewer traps (yt-dlp missing;
  same channel/day/length different title), candidate surfacing, incident
  retitled-upload confirmation.

Incident link still resolves: identity=description_overlap shared=126.

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-17 17:03:08 +00:00
leondu ce6c3caa24 web-crawler 2.10.0: generic transcript resolver; fix review P1-1/2/3
- __all__ now exports get_transcript / podcast_transcript /
  resolve_podcast_episode / media_info / captions_from_media_info;
  verified through core.skill_tools loader (P1-1).
- Cross-platform identity: channel = YouTube URL declared in the show's RSS
  (else search hit whose channel name EQUALS show name minus stopwords);
  episode = duration +-5% AND date +-3d, title tie-break only. Date alone
  can no longer select a same-day video from another show (P1-2).
- RSS transcript download requires 2xx, >500 chars, no error-page body;
  otherwise falls through instead of reporting found (P1-3).
- Provider 1 is now yt-dlp extract_info(download=False): captions and
  metadata for 1800+ sites with zero media bytes, replacing the
  YouTube-only ScrapeCreators call (kept as fallback).

Verified: incident Apple link -> found via RSS-declared @a16z channel,
1.2% duration delta, same day, 55k chars; YouTube link 1.9s; identity
traps (same-day other-length, The a16z Show vs The Cooking Show, 403
body, 200 access-denied body) all rejected.

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-17 16:20:39 +00:00
leondu 72674c413d web-crawler 2.9.0: get_transcript(url) — single entry for YouTube / TikTok / Apple / Spotify / any page
One dispatcher, one return shape {found, kind, source, text, url, title,
note}. podcast_transcript becomes one branch. Verified: YouTube 55k chars
12.6s; Apple link via podcast chain 55k 30s; unknown Snipd URL ->
found=False with note, no download.

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-17 16:02:27 +00:00
leondu 8047f3041f web-crawler 2.8.0: podcast_transcript() — transcript file for Apple/Spotify links without touching audio
Chain: link -> show + episode title + release date (iTunes lookup /
Spotify og tags) -> RSS <podcast:transcript> -> the show's own YouTube
upload of the episode (same channel; title similarity >= 0.6 OR published
within +-2 days) -> captions via youtube_transcript. found=False means
ask the user before any download.

Verified on the 2026-09-17 incident link (The a16z Show / The AI-Native
CRM): 55k chars in 14 s, zero audio. Also carries 2.7.x route text.

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-17 15:56:04 +00:00
nicholasDxy ce82df49d4 Merge pull request #178 from Starchild-ai-agent/fix/podcast-transcript-route
feat(web-crawler,video-analysis): podcast transcript route, JS-page retry, no implicit media download
2026-09-17 17:49:08 +08:00
leondu 3b7fbb259c chore(index): drop tools field from skills.json
Only two of 105 entries carried it, so official-index scoring was
inconsistent, and the list was hand-copied from exports.__all__ and would
drift. Official discovery uses name + description; installed skills still
expose their real tool list.

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-17 08:53:35 +00:00
leondu 341c94c727 chore: bump web-crawler 2.7.0, video-analysis 1.3.0; add tools field to skills.json
The tools field feeds starchild-clawd#1698 (search_skills scores official
index entries by tool names, so web-crawler's youtube_transcript ranks for
'youtube' queries).

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-17 04:39:00 +00:00
leondu 9909d5246e feat(web-crawler,video-analysis): podcast transcript route, JS-page retry, no implicit media download
Incident 2026-09-17 (machine e823d11b053068): user gave an Apple Podcasts link and
asked for the transcript. The URL rule only covered YouTube, so the agent guessed
four hosts, then escalated to 'download the audio and transcribe it' — an
escalation the old text permitted ('Only fall back to downloading when the
transcript path fails'). When the user pasted a JS-rendered transcript page,
web_fetch returned empty and the agent did not retry with scrape_markdown.

- video-analysis: URL rule rewritten as a 4-level route (podcast → video →
  JS-page retry → stop & ask). Local download is user-authorised only, not a
  fallback.
- web-crawler: new 'Podcast / interview transcript route' section covering
  Apple Podcasts / Spotify / episode-name inputs and the empty_extraction retry.

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-17 04:39:00 +00:00
nicholasDxy d1c3019e16 Merge pull request #177 from Starchild-ai-agent/audit/official-skill-links-2
docs(audit): fix remaining broken links in vendored skills; bump versions
2026-09-14 20:33:11 +08:00
Starchild 37a8d5823a chore: bump higgsfield 0.3.1, workroom 0.5.3, solana-dev 1.1.2, abstract 1.0.4, bnbagent 1.1.1; sync skills.json
Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-14 12:04:03 +00:00
Starchild 5098bdae24 docs: fix remaining broken relative links (higgsfield, workroom, solana-dev, abstract, shopify-hydrogen, bnbagent)
Vendored upstream READMEs now point at their upstream repos / docs sites instead of
files that do not exist in the packaged skill; internal refs corrected.

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-14 12:03:34 +00:00
nicholasDxy fe8a5936ce Merge pull request #176 from Starchild-ai-agent/audit/official-skill-hygiene
docs(audit): align project-builder routing + Upbit hosted setup; bump versions
2026-09-14 18:36:32 +08:00
Starchild 5ea5794e8a chore: bump mantle 1.0.2, treasures 1.0.4, upbit 0.9.4; sync skills.json
Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-14 09:53:35 +00:00
Starchild 00ced49f7b docs: fix broken relative links in mantle/treasures; add missing upbit withdraws reference
Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-14 09:53:26 +00:00
Starchild 44499ef0e6 chore: bump audited project-builder and Upbit skill versions
project-builder 1.7.1; upbit 0.9.3. Keep the discovery index in sync.

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-14 09:16:21 +00:00
Starchild 685c248a46 docs: align skill routing and hosted Upbit setup with current contracts
Keep research separate from action routing, avoid repeated design approvals, and document secure hosted credentials and current npm PATH handling.

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-14 09:16:05 +00:00
github-actions[bot] 26f6bb9731 chore: update skills.json index 2026-09-14 03:07:44 +00:00
Qin-Xx 9365347096 lighter 2026-09-14 11:07:31 +08:00
github-actions[bot] a9c8d6f6d3 chore: update skills.json index 2026-09-14 02:26:24 +00:00
Starchild b31728ead6 coinglass: adapt to Startup plan, add plan-gating + BYOK/Apify fallback
- Platform key downgraded to Startup tier; document full endpoint
  permission map in SKILL.md (verified live against all 35 exports)
- Add CoinglassPlanError: 401 'Upgrade plan' (HTTP status or body code)
  now raises actionable guidance (BYOK direct / Apify scraping)
- Add COINGLASS_DIRECT=1 mode: user-supplied keys must bypass sc-proxy
  (proxy unconditionally overwrites Coinglass auth headers)
- Fix 4 parameter bugs surfaced by live testing: coin/pair liquidation
  history (exchange_list / pair symbol), aggregated taker volume
  (exchange_list), price history (pair symbol), OHLC (exchange required)
- bitcoin ETF history: ticker now required upstream, clearer error

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-14 02:26:10 +00:00
github-actions[bot] a15f57b660 chore: update skills.json index 2026-09-13 06:18:00 +00:00
sc-aladdin d8bc4bdf0b Merge pull request #173 from Starchild-ai-agent/aladdin/control-browser-skill
fix(control-browser): v1.3.0 — registration-lag playbook + page identity via tabs_list
2026-09-13 14:17:48 +08:00
github-actions[bot] eff8454478 chore: update skills.json index 2026-09-12 14:15:21 +00:00
Starchild ef556a5e05 feat(gpt-live-demo): v0.2.1 — memory file lookup, /api/config, page-close cancel, EN UI
- memory_lookup reads Starchild memory files (MEMORY.md / USER.md / topics) with keyword scoring, voice history as fallback
- /api/config exposes system prompt + tool list for the UI panel
- preview reverse-proxy path normalization, JSON 404/error fallbacks
- hang-up keeps background tasks running (design doc §6); page close/refresh cancels them
- remove duplicate /api/tasks/all/cancel registration; README install instructions generalized
- add package-lock.json; UI in English

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-12 14:15:10 +00:00
github-actions[bot] d467829cec chore: update skills.json index 2026-09-12 12:34:59 +00:00
Starchild 98e6a231b5 feat(gpt-live-demo): add GPT-Live voice operator demo skill v0.2.0
WebRTC voice frontend + Express relay server + Starchild brain bridge.
Five-tool routing, cross-restart persistence, session memory re-injection.
Includes installer API key setup guide (OpenAI gpt-live-1 required).

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-12 12:34:47 +00:00
Aladdin 6adbf10a72 fix(control-browser): 1.3.0 — registration-lag playbook + page identity via tabs_list
From a real trace (agent told the user to run agent-shell when
mcp__browser__page_snapshot briefly failed "not found" after a bridge
reconnect, then misidentified the page):

- New "Stop" section: "not found in registry" right after (re)connect
  is transient registration lag — retry next turn or check web_status;
  NEVER conclude the browser is gone or mention starchild agent-shell
  (unrelated laptop channel).
- New section: "what page is this?" needs only tabs_list (title + url +
  activeTabId), no snapshot — works for chrome:// pages too. Snapshot
  is for content, not identity.
2026-09-10 19:30:52 +08:00
nicholasDxy d1d6aa7b09 Merge pull request #172 from Starchild-ai-agent/feat/unified-image-skill
feat(image): unified catalog-driven image skill (fixes 1892 edit-workflow failures)
2026-09-09 21:19:56 +08:00
Starchild f3a0873ca7 chore(image): bump image to 2.1.2
Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-09 13:11:13 +00:00
Starchild 0c491a4144 fix(image): validate params/images/mask before reserving the auto-fix budget
Review P2: reserve() ran first, so a rejected parameter (0 paid calls) still
burned the single auto-fix. Now: read-only peek for default base/keep → full
local validation → atomic reserve() (re-reads latest state; default base
follows the approved pointer if it moved) → paid call → record().
Regression test: 3 invalid calls leave budget 0/1; corrected call proceeds.

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-09 13:11:13 +00:00
Starchild b7e0ea926d chore(image): bump image to 2.1.1
Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-09 12:35:41 +00:00
Starchild 5dc6b732df fix(image): lock-protected transaction mutations, reject rollback, strict qa verdict
Review P1 #1: edit() held a tx snapshot across the paid call and wrote it back
whole → an approve() during rendering was reverted. Now every mutation is
read-modify-write under a per-tx fcntl lock; reserve() consumes the auto-fix
budget and captures parent BEFORE the request, record() re-reads the latest
state AFTER and appends one revision. Concurrent edits append independently.

Review P1 #2: reject(approved_rev) left the pointer on the rejected image.
Now rolls back to the nearest still-approved ancestor or the original base;
current_base() also refuses non-approved pointers.

Review P2: qa verdict is validated (pass is bool, issues well-formed, pass
consistent with issue severity); invalid → verdict=None, undeterminable=True.

Tests: 11 passed (3 new regression tests reproduce the reviewer's scenarios).

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-09 12:35:41 +00:00
Starchild 64e8fd1734 chore(image): bump image to 2.1.0
Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-09 12:20:02 +00:00
Starchild 1b58d96246 refactor(image): retire the 7 template image skills; fold their domain know-how into image/references
Per README retirement flow: directories removed, skills.json/skill-packages.json
updated, runtime cleanup via starchild-clawd config/skill-removals.txt (separate PR).
Coverage audit of the retired skills → image/references/domain-guides.md:
aspect defaults (15 create + 9 3D categories), 14 e-commerce shot types + 8
backgrounds + 7 platform presets, 39 portrait styles incl. likeness clause and
avatar exceptions, 8 try-on categories with the working prompt, 20 edit actions
mapped to mask/resolution/keep/deterministic ops, bg-remove.

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-09 12:20:02 +00:00
Starchild ab5085007b chore(image): bump deprecated aliases to 1.1.0, register image 2.0.0 in skills.json
Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-09 12:12:41 +00:00
Starchild a1bbe57af9 feat(image): unified catalog-driven image skill; deprecate 7 template skills to aliases
Root causes from the 1892 audit, each fixed here:
- prompt templates rewrote user intent      -> no templates; agent prompt forwarded verbatim + explicit keep=
- resolution/mask never sent upstream       -> catalog-driven params, fail-closed (unknown param/model = error before charge)
- 'local_edit'/'upscale' were text only     -> real mask_url (gpt) and resolution 1K/2K/4K (nanopro); refs_max enforced
- vision tool only answered 'no defects'    -> inspect(mode=inspect|compare|qa) answers the question asked, stage-aware qa
- no stop condition, rejected -> next base  -> edit transaction: asset roles, approved rev, 1 auto-fix budget (sticky)
- same-second file overwrite, double pay    -> UUID job dir, request_id persisted, recover(job_id)
- 3 diverging model lists                   -> one catalog (image/catalog.py) with remote override IMAGE_CATALOG_URL

7 old skills keep their scripts but SKILL.md becomes a short alias (130KB -> ~4KB injected).
Offline contract tests: image/tests (7 passed). Live: nanopro edit resolution=2K -> 2528x1696
from a 1440x960 source (old path returned 1264x848); inspect returned OCR + bbox.

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-09 12:12:41 +00:00
almo a4796a35ed fix(composio): forbid sc-proxy for flycast gateway (v1.4.1)
Document that composio-gateway.flycast must use plain HTTP/curl only —
never proxied_get/post, HTTP_PROXY, or curl -x — so caller identity is
not rewritten.
2026-09-06 10:07:17 +08:00
almo b62c02b8a0 feat(composio): prefer frontend_action composio_connect (v1.4.0)
Web path uses frontend_action(action_type=composio_connect) instead of
markdown connect_url links; keep POST /api/connect as non-Web fallback.
Bump skill version to 1.4.0.
2026-09-05 15:37:12 +08:00
almo a57c66e086 feat(composio): zero-friction connect guidance (v1.3.1)
Require proactive connect_url when acting on an unconnected app; exclude pure
Q&A; one primary toolkit; short fail path. Bump skill version to 1.3.1.
2026-09-05 14:42:28 +08:00
nicholasDxy 49648f67ea Merge pull request #171 from Starchild-ai-agent/fix/orderly-dex-template-guidance
fix(orderly-onboarding): steer DEX creation to dex-template, warn against CLI OOM
2026-09-04 22:29:05 +08:00
Starchild 192e8a643e fix(orderly-onboarding): replace npm install with pnpm add for SDK packages
Recommend pnpm over npm to minimize peak memory consumption in container
environments, aligning with system PROTOCOL and low-memory guidelines.

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-04 14:25:04 +00:00
Starchild e14122df6b fix(orderly-onboarding): specify 3-step GitHub setup and change runner label
Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-04 12:17:44 +00:00
Starchild a3d7339cc8 chore(orderly-onboarding): bump version to 1.2.0
Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-04 11:56:07 +00:00
Starchild 39769a93f0 fix(orderly-onboarding): steer DEX creation to dex-template and warn against CLI OOM
Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-04 11:55:54 +00:00
github-actions[bot] b19ff067c2 chore: update skills.json index 2026-09-03 08:33:45 +00:00
nicholasDxy 2c100271f4 Merge pull request #170 from Starchild-ai-agent/feat/prevent-self-migration-export
feat(agent-export): prevent running export inside Starchild environment
2026-09-03 16:33:33 +08:00
Starchild 5d1266b980 fix(agent-export): gate the relay upload, not the local bundle build
Two review findings:

1. The guard was invoked as 'python3 scripts/export.py', which only resolves
   when the cwd happens to be the skill directory. Run from a workspace or
   repo root it fails with 'file not found' and aborts the export. The step
   now resolves the script against the directory of the loaded SKILL.md.

2. The skill advertises backup / hand-off use, but the guard ran before
   packaging and so blocked those flows entirely inside Starchild. The check
   moved to Step 3 (relay upload): building a bundle works everywhere, only
   the relay handoff is refused from inside Starchild. Description and the
   refusal message state this, and the flag is now --check-relay
   (--check-env kept as an alias).

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-03 08:27:08 +00:00
Starchild 7f097d2e25 fix(agent-export): route the guard through scripts/export.py only
SKILL.md carried an inlined copy of the check that had already drifted from
scripts/export.py (the inline version omitted the FLY_APP_NAME probe), so the
flow agents actually execute was weaker than the shipped script. SKILL.md now
invokes 'python3 scripts/export.py --check-env' and aborts on non-zero exit;
the script rejects unknown arguments so the guard cannot be silently skipped.

Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-03 06:56:45 +00:00
Starchild b87ed46d40 chore(agent-export): bump version to 1.1.0
Co-authored-by: Starchild <noreply@iamstarchild.com>
2026-09-03 02:50:02 +00:00