Chalk Labs
Need help deploying data?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
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/kronael-data
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.
About
Use cases: data, finance
Reviews
Write a reviewNo 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 and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/data
What's inside
- Skill name
data- Description
- Data collectors, ETL and trading bots. NOT for one-shot fetches (use sh or py).
- License
- Unlicense
- Instructions
- 91 lines in SKILL.md · view on GitHub
Files (2)
- SKILL.md
- trader.md
SKILL.md (first lines)
# Collector/Data Collection
A trading bot — exchange API, paper trading, order sizing, the bot state
machine: read `trader.md` on top of this file.
ALWAYS Read `../software/code.md` before the first edit — it owns naming,
comments, design and the boring-code rules.
## Testing
- ALWAYS test with real API after 10 lines (mental models are always wrong)
- Each source has main() for live API testing before integration
## Architecture
- asyncio-based, multiple collectors in single loop
- Sources yield articles via async iterators
- NEVER block event loop with synchronous requests
## State Management
- state.json for recovery: resume from last_processed + 1 (WISDOM § Shell: never re-fetch what is on disk)
- Save state every 10,000 items, keep portable (JSON)
- ALWAYS make pipeline writes idempotent (UPSERT by primary key, not INSERT) — retries must not duplicate
- ALWAYS version raw payloads (store source schema_version with data); NEVER drop a field the source sends — the raw blob keeps the unknown ones, and the typed record a reader produces carries every column or position the source has, not only the ones read today; only a clearly redundant field goes
- ALWAYS validate required fields + types BEFORE insert (reject to dead-letter, never write partial rows)
## Data Source Patterns
- **RSS**: feedparser, RssFeedSource base
- **REST API**: JsonSource base, test fixtures from saved responses
- **WebSocket**: WebsocketSource base, restart_on_failure decorator
- **Blockchain/RPC**: parallel fetching (10 concurrent), gRPC when available
## Error Handling
- restart_on_failure decorator for crash recovery
- Retry with exponential backoff, NEVER trust external APIs
- Cache-first: local cache before RPC fallback (WISDOM § Shell)
- LeakyBucket for expensive APIs (ChatGPT, etc.)
## Backfill
- ALWAYS store raw data (compressed JSON/XZ) for backfill
- NEVER delete historical data
- Incremental snapshots, CLI flag (-s slot) for start point
## Storage
- **PostgreSQL**: structured, indexed on frequent queries
- **Redis**: hot data cache (MGET <2ms for 100 accounts vs 1-5s RPC)
- Key namespace: schema:, state:, stake:
- **BigQuery**: historical analysis, time-series
- **File**: compressed blocks (XZ level 6)
## Deduplication
- URL/primary key (database insert check)
- Vector similarity for semantic dedup (Weaviate)
- NEVER trust upstream deduplication
## Configuration
- NEVER hardcode secrets (env vars)
- Google Sheets for dynamic config (live reconfiguration without restart)
## Concurrency
- ALWAYS parallelize independent tasks
- Database constraints for dedup, not in-memory or advisory locks (`sql` skill § Concurrency)
- Redis atomic ops (INCR, SET NX), DashMap for lock-free reads
## Pipeline (file-based stages)
- Data is numpy/pandas/dataclasses. ALWAYS pure functions in modules. NEVER inheritance for behavior or testability — a test patches the symbol at its use site (see the `py` skill § Testing); a dependency param is for a real production dependency, NEVER a test seam.
- Pipeline = stages of typed files. Each stage owns a directory. Stage N+1 reads stage N. Path = `{batch}/{key_path}/{date}.{pqt|jl}`. Day file = unit of work.
- ALWAYS tidy at ingestion: one row/observation, one col/variable, one table/entity. NEVER re-clean downstream.
- Raw is append-only. ALWAYS rebuild downstream from raw. NEVER UPDATE/DELETE raw.
- Storage is `.jl` or `.pqt`. NEVER CSV, NEVER pickle.
- ALWAYS `df.to_parquet(fn, coerce_timestamps='us', allow_truncated_timestamps=True)`.
## Paths and resume
- ALWAYS one `paths.py` per project. All path builders live there; NEVER hardcode paths elsewhere.
- ALWAYS pair `get_filename` (write) and `parse_filename` (read) in the same module, same strftime format both ways.
- ALWAYS expose `iter_available_*` from the filesystem for resume.
- Loader = path in, DataFrame out. NEVER clean in loaders — that's ingestion.
- Filesystem is pipeline state. NEVER track pipeline progress in state.json. ALWAYS gate work on output existence; continue day-loops past per-day failures.
- `state.json` is for collector resume only (live-feed cursor), distinct from pipeline-stage resume.From kronael/tools, Unlicense.
More from kronael/tools
- 0.622score
distill
kronael
/distill — Use when compressing a long document, transcript, or codebase into its essence.
SkillAFreshness: A★ 6Claude Code +9 - 0.619score
continue
kronael
/continue — goal mode.
SkillAFreshness: A★ 6Claude Code +9 - 0.619score
eval
kronael
Evaluation router — judge a product, codebase, UI or engineer from one fixed lens or every lens.
SkillAFreshness: A★ 6Claude Code +9 - 0.619score
kronael-sync
kronael
Sync Kronael into ~/.claude from Codex (bundle + CLI tools rig/udfix/spec-lint/dockbox), first setup included; bridge global/project CLAUDE.md, skills, and…
SkillAFreshness: A★ 6Claude Code +9 - 0.619score
ans
kronael
/ans — answer-only mode toggle, NEVER edit files or run shell; /ans end exits.
SkillAFreshness: A★ 6Claude Code +9 - 0.619score
astgrep
kronael
Structural code search and rewrite with ast-grep (tree-sitter AST patterns).
SkillAFreshness: A★ 6Claude Code +9 - 0.619score
astra
kronael
Ask the codex CLI on gpt-6-astra (or gpt-6.1-sol, the Sol variant) for a second opinion, usually routed through oracle.
SkillAFreshness: A★ 6Claude Code +9 - 0.619score
bugs
kronael
The `BUGS.md` open-issues queue — record-don't-fix policy, entry format, pruning.
SkillAFreshness: A★ 6Claude Code +9 - 0.619score
codemap
kronael
Map a codebase and drill into it — ranked overview, callers, blast radius, module, import and call graphs.
SkillAFreshness: A★ 6Claude Code +9 - 0.619score
emacs
kronael
Emacs configuration — a package stack for completion, navigation, git and AI.
SkillAFreshness: A★ 6Claude Code +9 - 0.619score
diagrams
kronael
ASCII architecture and workflow diagrams using Unicode box-drawing chars.
SkillAFreshness: A★ 6Claude Code +9 - 0.619score
dispatch
kronael
/dispatch — launch a background subagent at default model; § Tiers is the one table of every model tier, Claude and Codex.
SkillAFreshness: A★ 6Claude Code +9
Signals
- Stars
- 6
- Forks
- 3
- Open issues
- 0
- Last commit (this folder)
- Oct 22, 2026 (13 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Unlicense
- Repository
- github.com/kronael/tools
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from kronael
- 0.622score
distill
kronael
/distill — Use when compressing a long document, transcript, or codebase into its essence.
SkillAFreshness: A★ 6Claude Code +9 - 0.619score
eval
kronael
Evaluation router — judge a product, codebase, UI or engineer from one fixed lens or every lens.
SkillAFreshness: A★ 6Claude Code +9 - 0.619score
kronael-sync
kronael
Sync Kronael into ~/.claude from Codex (bundle + CLI tools rig/udfix/spec-lint/dockbox), first setup included; bridge global/project CLAUDE.md, skills, and…
SkillAFreshness: A★ 6Claude Code +9 - 0.619score
ans
kronael
/ans — answer-only mode toggle, NEVER edit files or run shell; /ans end exits.
SkillAFreshness: A★ 6Claude Code +9 - 0.619score
astgrep
kronael
Structural code search and rewrite with ast-grep (tree-sitter AST patterns).
SkillAFreshness: A★ 6Claude Code +9 - 0.619score
continue
kronael
/continue — goal mode.
SkillAFreshness: A★ 6Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get data running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
data skill. Agent Mart. https://agentmart.dev/skills/kronael-data (last updated 2026-10-24)