
Project Builder
Follow verified step-by-step patterns to assemble Starchild scheduled tasks and agents that call skill exports before wiring cron or alerts.
Overview
Project Builder is an agent skill for the Build phase that walks solo builders through verified Starchild patterns—starting with scheduled tasks that fetch real market data via skill_tools.
Install
npx skills add https://github.com/starchild-ai-agent/official-skills --skill project-builderWhat is this skill?
- Pattern A: scheduled task (cron) with strict build order—each step verified before the next
- Step 1 prefers `core.skill_tools` (e.g. coingecko, coinglass) with same names as agent tools
- Fallback direct `requests` template when a skill lacks exports.py
- Explicit pass/fail criteria: real prices, recent timestamps, or fix before continuing
- Step 2 adds data validation helpers so bad market data fails fast
- Pattern A uses a multi-step build order with per-step verification gates
- Step 1 documents coingecko.coin_price and coinglass.funding_rate skill_tools examples
Adoption & trust: 3.7k installs on skills.sh; 13 GitHub stars; 1/3 security scanners passed (skills.sh audits).
What problem does it solve?
You want a recurring agent task but agents often scaffold cron jobs before proving APIs return valid, timely data.
Who is it for?
Starchild or skill_tools-based agent projects needing cron-style monitors with CoinGecko, CoinGlass, or similar exported skills.
Skip if: One-off scripts with no verification discipline, non-Python stacks, or projects not using Starchild’s skills layout and exports convention.
When should I use this skill?
User wants recurring monitoring, alerts, or reports built as a Starchild scheduled task with verified data fetch first.
What do I get? / Deliverables
You get a `tasks/{id}/run.py` pipeline that passed live fetch and validation gates, ready for cron wiring and alert logic in later steps.
- Verified `tasks/{id}/run.py` with live JSON sample output
- Validation helpers that reject malformed price or rate payloads
Recommended Skills
Journey fit
Project Builder is where you construct runnable agent task folders with real API data—core Build work for agent-first products. Agent-tooling subphase matches Pattern A cron jobs, `core.skill_tools` namespaced calls, and per-step verify gates.
How it compares
Skill-packaged build playbook for Starchild cron tasks, not a generic GitHub Actions or Terraform deploy generator.
Common Questions / FAQ
Who is project-builder for?
Solo builders on the Starchild agent stack who need repeatable, test-gated task folders for monitoring crypto or API-backed metrics.
When should I use project-builder?
During Build agent-tooling when defining Pattern A scheduled tasks—after choosing a data source skill and before enabling cron or push alerts.
Is project-builder safe to install?
It runs real API calls with your keys; review the Security Audits panel on this page and keep secrets in environment variables, not committed run scripts.
SKILL.md
READMESKILL.md - Project Builder
# Build Patterns — Detailed Reference ## Pattern A: Scheduled Task (Cron Job) **Use when:** User wants recurring monitoring, alerts, or reports. **Build order (each step verified before the next):** **Step 1 — Data fetching (verify: real data comes back)** **Preferred: Use `core.skill_tools` to call skill functions directly:** ```python # skill_tools auto-discovers skills/*/exports.py — no manual path setup needed from core.skill_tools import coingecko, coinglass # Same function names as agent tools, namespaced by skill prices = coingecko.coin_price(coin_ids=["bitcoin", "ethereum"], timestamps=["now"]) btc_price = prices[0]['price'] fr = coinglass.funding_rate(symbol="BTC") binance_rate = [e for e in fr['exchanges_data'] if e['exchangeName'] == 'Binance'][0]['rate'] ``` **Fallback: Direct API call (for skills without exports.py):** ```python import requests, os, json def fetch_prices(): resp = requests.get("https://api.twelvedata.com/price", params={ "symbol": "CL1,BZ1", "apikey": os.environ.get("TWELVEDATA_API_KEY", "") }) return resp.json() if __name__ == "__main__": result = fetch_prices() print(json.dumps(result, indent=2)) ``` Run it: `python3 tasks/{id}/run.py` ✅ Pass = real prices printed, recent timestamps ❌ Fail = fix before proceeding **Step 2 — Data validation (verify: bad data gets caught)** ```python def validate_price(price_str, symbol): """Returns (float, error). Error is None if valid.""" try: price = float(price_str) except (ValueError, TypeError): return None, f"{symbol}: invalid price '{price_str}'" if price <= 0 or price > 500: # reasonable range for crude oil return None, f"{symbol}: price {price} out of range" return price, None ``` Test with both good and bad inputs. **Step 3 — Logic/analysis (verify: output format is correct)** ```python def analyze(prices, thresholds): alerts = [] for symbol, data in prices.items(): change_pct = data["change_pct"] if abs(change_pct) > thresholds["alert_pct"]: alerts.append(f"⚠️ {symbol}: {change_pct:+.1f}%") return alerts ``` Test with edge cases: exactly at threshold, just above, just below. **Step 4 — Output formatting (verify: readable, correct numbers)** ```python # Print only when there's something actionable output = format_report(prices, alerts) if output.strip(): print(output) # Non-empty stdout → auto-pushed to user # Empty stdout → silent, no push, no cost ``` Run full pipeline, manually verify every number in output matches raw data. **Step 5 — Register and activate** ```python register_task(title="WTI Monitor", schedule="0 * * * *") # Write verified run.py to tasks/{id}/ # One final dry-run bash("python3 tasks/{id}/run.py") # Only then: activate_task(job_id) ``` ### Using Skill Functions in Task Scripts (`core.skill_tools`) Skills with `exports.py` expose their tool functions for direct use in task scripts. No manual path setup needed — `core.skill_tools` auto-discovers all exports. ```python from core.skill_tools import coingecko, coinglass, birdeye # Same names as agent tools, namespaced by skill prices = coingecko.coin_price(coin_ids=["bitcoin", "ethereum"], timestamps=["now"]) btc_price = prices[0]['price'] fr = coinglass.funding_rate(symbol="BTC") binance = [e for e in fr['exchanges_data'] if e['exchangeName'] == 'Binance'] btc_funding = binance[0]['rate'] if binance else None etf = coinglass.cg_btc_etf_flows() ``` **How to know what's available:** - Tool names = SKILL.md frontmatter `tools:` list - Import pattern: `from core.skill_tools import {skill_name}` → `{skill_name}.{tool_name}(...)` - Functions are sync (safe for task scripts). Return types match the underlying API response. **When skill_tools is NOT available:** - Skills without `exports.py` (e.g. hyperliquid — needs wallet context) - Async-only tools (twelvedata uses aiohttp) - For these, use direct API calls via `requests` / `core.http_client`