Signal ckpt
SIGNAL — Agent Skills: terse structured output (tiers, templates, checkpoints), git workflow skills (commit, push, PR, review, ckpt), Karpathy-inspired coding norms. Claude Code, Cursor, Gemini CLI, Codex & other Agent Skills hosts.
npx -y skills add mattbaconz/signal --skill signal-ckptAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 10 stars10 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Manually triggers a checkpoint compression of the current session state. Collapses conversation history into a compact state atom (≤50 tokens). Use when user types /signal-ckpt, "checkpoint", "compress context", "summarize session", "save state", or when the context window is getting large. In SIGNAL-3 mode this fires automatically every 5 turns.
SKILL.md
5.2 KB, as published. Nobody here has run it
⚡ signal-ckpt — Manual Checkpoint
Collapse the session into a ≤50 token state atom. Drop all prior history. Resume from the atom.
Invocation Triggers
Activate when user says any of:
/signal-ckpt"checkpoint","compress context","summarize session""save state","compress history","ckpt"- Auto-fires in SIGNAL-3 mode every 5 turns
Output Format
CKPT[N]:
§project={name} §stack={tech}
progress=[{task}✓, {task}✗, {task}∅, {task}/]
blockers=[{issue}⊥{component}]
next={next_task}
§decisions=[{decision}✓]
N = checkpoint sequence number, starting at 1. Increment on each checkpoint.
Minimal valid checkpoint (when session is simple):
CKPT[1]:
§project=my-app
progress=[auth✓, api/]
next=finish api endpoints
Full checkpoint (active blockers, decisions, aliases):
CKPT[3]:
§project=data-pipeline §stack=python+airflow
[X1]=schema_validation_step [X2]=postgres_loader
progress=[ingest✓, transform✓, X1✗, X2∅]
blockers=[X1⊥schema_mismatch]
next=fix schema_mismatch in X1
§decisions=[use_upsert✓]
Hard Rules
-
≤50 tokens total. Count ruthlessly. If over, compress further: merge related tasks, abbreviate names, drop resolved items.
-
Checkpoint replaces conversation history. After this fires, all prior turns can be dropped. The checkpoint IS the history.
-
Only active blockers. Resolved blockers are gone. They do not appear anywhere in the checkpoint.
-
Only future-relevant decisions.
§decisionsonly includes decisions that affect work not yet complete. Past decisions with no forward implication are dropped. -
nextis singular. One task. The most immediate pending action. Not a backlog. -
Carry active aliases forward. Any
[Xn]aliases still in use must appear in the checkpoint. Aliases for resolved items are dropped.
Collapse Algorithm
When generating a checkpoint:
-
Identify all tasks mentioned in the session. Assign each a status from its last known state (
✓✗∅/⊥). -
Drop resolved blockers. If a blocker was fixed, it's gone.
-
Filter
§decisionsto only those that affect future work. -
Set
nextto the single most immediate pending or in-progress action. -
Count tokens. If >50:
- Merge related tasks (
auth-login✓ + auth-refresh✓→auth✓) - Abbreviate task names (keep enough to be unambiguous)
- Drop sev1/low-signal completed tasks
- Omit
§stackif obvious from project name
- Merge related tasks (
-
Verify sufficiency. Could someone read only this checkpoint and resume the work without prior context? If no, add the missing signal.
Status Symbols
| Symbol | Meaning |
|---|---|
✓ | Complete |
✗ | Failed / broken |
∅ | Not started |
/ | In progress |
⊥ | Blocked |
Resuming from a Checkpoint
When a session resumes after a checkpoint (new context window, continuation):
- Paste the checkpoint as the first thing in the new context.
- The checkpoint bootstraps full session state.
- Resume from
nextwithout re-reading prior turns. - Aliases declared in the checkpoint are active immediately.
Resume format:
[Resuming from CKPT[2]]
CKPT[2]:
§project=api-service §stack=node+express
progress=[auth✓, routes/, tests∅]
next=finish routes
SIGNAL-3 Auto-Checkpoint
In SIGNAL-3 mode, checkpoints fire automatically every 5 turns (or the configured interval).
Auto-checkpoint behavior:
- Fires silently at the end of turn N (not announced before)
- Output appears as the last element of the turn N response
- Turn N+1 begins with the checkpoint already in context
Configuring the interval:
BOOT: CKPT:every 3 turns ← more aggressive
BOOT: CKPT:every 10 turns ← less aggressive
BOOT: CKPT:∅ ← disable auto-checkpoint (manual only)
Examples
Simple 5-turn debug session
CKPT[1]:
§project=auth-api
progress=[login-endpoint✓, refresh-endpoint/, logout∅]
blockers=[refresh⊥redis_timeout]
next=fix redis timeout in refresh endpoint
Token count: ~22 tokens. Under limit.
Complex 15-turn architecture session
CKPT[3]:
§project=platform-v2 §stack=nextjs+postgres+redis
[X1]=auth_service [X2]=caching_layer [X3]=rate_limiter
progress=[X1✓, X2/, X3∅, db-schema✓, api-routes/]
blockers=[X2⊥session_store_conflict]
next=resolve X2⊥session_store
§decisions=[jwt_over_sessions✓, redis_for_X2✓]
Token count: ~38 tokens. Under limit.
Eat Your Own Cooking
The checkpoint itself must be maximally compressed:
- No preamble ("Here is a checkpoint of our session:")
- No explanation after the checkpoint atom
- The checkpoint IS the output — nothing before, nothing after
- If something prevents checkpoint generation: one line, TMPL:bug format