This file provides guidance to WARP (warp.dev) when working with code in this repository.
Synaptic Canvas is a small Python-backed repo that packages "Claude Code" artifacts (commands, skills, agents) into installable bundles under packages/. Developers use the provided installer (tools/sc-install.sh or tools/sc-install.py) to copy a package's artifacts into a target repository's .claude/ directory, optionally performing token substitution (e.g., {{REPO_NAME}}).
Key components:
packages/<name>/contains amanifest.yamlplus artifacts:commands/*.md— user-facing slash commandsskills/*/SKILL.md— orchestration/workflowsagents/*.md— isolated executors with structured outputsscripts/*— helper scripts copied into.claude/scripts
tools/contains the installer entry points:sc-install.sh— Bash installer used directly or via curl pipingsc-install.py— Python wrapper that forwards toscpy.sc_install
scpy/contains Python utilities used by scripts and tests:sc_install.py— readsmanifest.yaml, lists/info, installs/uninstalls artifacts, performs token substitution, and sets executable bits forscripts/*delay_run.py— the Python implementation of the delay/poll helper used by thesc-delay-taskspackage
tests/usespytestto validate the installer, token expansion, and delay behavior.github/workflows/tests.ymlruns CI across major OSes on Python 3.12
Representative packages:
packages/sc-git-worktree/(Tier 1): installs commands/skills/agents to manage Git worktrees; uses{{REPO_NAME}}tokens resolved from the Git toplevelpackages/sc-delay-tasks/(Tier 0): installs delay commands/skills/agents and a helper script; no token substitution
- Python 3.12+
- Git (required by tests and for resolving
REPO_NAMEin the installer)
Quick setup:
- macOS/Linux
- Create and activate a venv, then install dev deps
python3 -m venv .venv && source .venv/bin/activatepip install -r requirements-dev.txt
- Create and activate a venv, then install dev deps
- Windows (PowerShell)
py -m venv .venv; .\.venv\Scripts\Activate.ps1pip install -r requirements-dev.txt
Testing (pytest):
- Run all tests (matches CI):
pytest -q - Run a single test file:
pytest -q tests/test_sc_install.py - Run a single test:
pytest -q tests/test_sc_install.py::test_install_and_uninstall_delay_tasks - Filter by keyword:
pytest -q -k delay_run
Installer usage (from repo root):
- List available packages:
- Bash:
./tools/sc-install.sh list - Python:
python3 tools/sc-install.py list
- Bash:
- Show package manifest:
python3 tools/sc-install.py info sc-git-worktree
- Install to another repo's
.claude/directory (token substitution if defined in manifest):python3 tools/sc-install.py install sc-git-worktree --dest /path/to/your-repo/.claude
- Uninstall from
.claude/:python3 tools/sc-install.py uninstall sc-git-worktree --dest /path/to/your-repo/.claude
Delay helper (local runs without installing):
- Python module:
python3 -m sc_cli.delay_run --minutes 2 --action "go" - Script (as installed by
sc-delay-tasks):.claude/scripts/delay-run.py --every 60 --for 5m --action "done"
Lint/build:
- Linting is not configured in this repository.
- No build/package step is defined; the installer copies artifacts to the consumer repo's
.claude/.
- Packages and manifests
- Each package has a
manifest.yamlthat declaresartifactsto copy into a target.claude/directory. Optionalvariablesallow token substitution during install. In Tier 1 packages (e.g.,sc-git-worktree),REPO_NAMEis auto-resolved from the Git toplevel of the destination repo.
- Installer flow (Bash or Python)
- list/info: enumerates packages and prints
manifest.yaml - install:
- Validates
--destpoints to a.claudedirectory - Copies all declared artifacts, preserving relative paths (e.g.,
agents/*.md,skills/*/SKILL.md,commands/*.md,scripts/*) - Makes any
scripts/*artifacts executable - Performs best-effort token substitution (e.g., replacing
{{REPO_NAME}}) when defined inmanifest.yaml
- Validates
- uninstall: removes previously installed artifact paths for that package from the destination
.claude/
- Delay/poll utilities
packages/sc-delay-taskssupplies.claude/scripts/sc-delay-run.*used by its agentsscpy/delay_run.pymirrors the shell script logic for one-shot delays (--seconds|--minutes|--until) and bounded polling (--everywith--foror--attempts), emitting periodic heartbeats and a single finalAction: ...line (unless suppressed)
- Tests and CI
pytestis used;tests/conftest.pyadds the repo root tosys.pathsoscpycan be imported without installing a packagetests/test_sc_install.pyinitializes a temporary Git repo to exercise token expansion and artifact copying; it expects Git to be available- GitHub Actions run
pip install -r requirements-dev.txtfollowed bypytest -qon Python 3.12 across Linux/macOS/Windows
- Prefer
python3 tools/sc-install.py ...for cross-platform behavior (the Bash script is also supported and used in README examples) - When installing to a destination, ensure
--destis a.claudedirectory under a valid Git repo root if token substitution is desired - Avoid long sleeps in tests: the test suite passes mocks for
sleep/printwhere appropriate; real sleeping is not required