ct
π―Skillfrom commontoolsinc/labs
Guides developers in deploying, managing, and interacting with charms and recipes using the CommonTools CLI through precise command-line operations.
Installation
npx skills add https://github.com/commontoolsinc/labs --skill ctSkill Details
Guide for using the ct (CommonTools) binary to interact with charms,
Overview
# CT CLI
The ct binary is the CLI for CommonTools. Use --help for current commands:
```bash
deno task ct --help # Top-level commands
deno task ct charm --help # Charm operations
deno task ct check --help # Type checking
```
Environment Setup
Identity key (required for most operations):
```bash
ls -la claude.key # Check for existing
deno task ct id new > claude.key # Create if missing
```
Environment variables (avoid repeating flags):
```bash
export CT_API_URL=http://localhost:8000 # or https://toolshed.saga-castor.ts.net/
export CT_IDENTITY=./claude.key
```
Local servers: See docs/development/LOCAL_DEV_SERVERS.md
Quick Command Reference
| Operation | Command |
|-----------|---------|
| Type check | deno task ct check pattern.tsx --no-run |
| Deploy new | deno task ct charm new pattern.tsx -i key -a url -s space |
| Update existing | deno task ct charm setsrc pattern.tsx --charm ID -i key -a url -s space |
| Inspect state | deno task ct charm inspect --charm ID ... |
| Get field | deno task ct charm get --charm ID fieldPath ... |
| Set field | echo '{"data":...}' \| deno task ct charm set --charm ID path ... |
| Call handler | deno task ct charm call --charm ID handlerName ... |
| Trigger recompute | deno task ct charm step --charm ID ... |
| List charms | deno task ct charm ls -i key -a url -s space |
| Visualize | deno task ct charm map ... |
Core Workflow: setsrc vs new
Critical pattern: After initial deployment, use setsrc to iterate:
```bash
# First time only
deno task ct charm new pattern.tsx ...
# Output: Created charm bafyreia... <- Save this ID!
# ALL subsequent iterations
deno task ct charm setsrc pattern.tsx --charm bafyreia... ...
```
Why: new creates duplicate charms. setsrc updates in-place.
JSON Input Format
All values to set and call must be valid JSON:
```bash
# Strings need nested quotes
echo '"hello world"' | deno task ct charm set ... title
# Numbers are bare
echo '42' | deno task ct charm set ... count
# Objects
echo '{"name": "John"}' | deno task ct charm set ... user
```
Gotcha: Stale Computed Values
charm set does NOT trigger recompute. Run charm step after:
```bash
echo '[...]' | deno task ct charm set --charm ID expenses ...
deno task ct charm step --charm ID ... # Required!
deno task ct charm get --charm ID totalSpent ...
```
See docs/development/debugging/cli-debugging.md for debugging patterns.
Troubleshooting
| Issue | Fix |
|-------|-----|
| Commands hang | Check Tailnet connection for *.ts.net URLs |
| Permission denied | chmod 600 claude.key |
| JSON parse error | Check nested quotes, no trailing commas |
| Local servers not responding | ./scripts/restart-local-dev.sh --force |
References
packages/patterns/system/default-app.tsx- System charms (allCharms list lives here)docs/common/workflows/handlers-cli-testing.md- Handler testingdocs/development/debugging/cli-debugging.md- CLI debugging
More from this repository8
Guides developers in creating and integrating Lit web components within the Common UI v2 system, focusing on reactive, theme-aware, and runtime-integrated UI components.
Guides developers in creating reactive TypeScript patterns for CommonTools, focusing on efficient, iterative development from sketch to deployment.
Establishes a hierarchical source resolution system for Oracle & Corrector agents, prioritizing specs, code, and documentation.
Deploys and manages Claude patterns via CLI, enabling syntax checking, deployment, inspection, and testing of pattern handlers.
Validates pattern implementation by writing and executing structured test sequences for pattern-based components.
Applies standardized UI components and layout patterns to polish and structure user interfaces with consistent design.
Breaks down complex tasks into manageable subtasks using bd (beads), tracking progress and dependencies across sessions.
Generates TypeScript schemas with Input/Output types for patterns, ensuring type safety and testability through structured type definitions.