Agent skill

ct

Guide for using the ct (CommonTools) binary to interact with charms, recipes, and the Common Fabric. Use this skill when deploying recipes, managing charms, linking data between charms, or debugging recipe execution. Triggers include requests to "deploy this recipe", "call a handler", "link these charms", "get data from charm", or "test this recipe locally".

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/devops/ct

SKILL.md

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 testing
  • docs/development/debugging/cli-debugging.md - CLI debugging

Didn't find tool you were looking for?

Be as detailed as possible for better results