skills/allen-cacm1983/SKILL.md
Temporal interval algebra for reasoning about time relationships in planning and knowledge representation
npx skillsauth add curiositech/windags-skills allen-cacm1983Install this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Load this skill when you encounter:
| Trigger Situation | Why Allen Applies | |---|---| | "Does task A finish before task B starts?" | Requires interval relation classification (before, meets, overlaps…) | | "I don't know exactly when X happened, only that it was during Y" | Disjunctive uncertainty over the 13 relations | | "If we add this constraint, does the schedule still work?" | Constraint propagation + inconsistency detection | | "Event A happens daily; event B happens yearly — how do they interact?" | Reference interval hierarchy for scope management |
Do not use if you only need to compare two absolute timestamps with no uncertainty — plain arithmetic suffices.
IF assertion conflicts with existing constraints:
→ Detect empty arc label during propagation
→ HALT immediately, report inconsistent interval pair
→ Do NOT continue with inconsistent state
IF assertion is consistent:
→ Run constraint propagation from affected arcs
→ Update labels by intersecting transitivity consequences
→ Continue until no more refinements possible
IF evidence only supports multiple relations:
→ Maintain full disjunctive label {before, meets, overlaps}
→ Never collapse to single relation without evidence
→ Log when/why constraint set narrows
IF forced to act under uncertainty:
→ Use disjunctive label as-is for planning
→ Tag any assumptions as defeasible
→ Avoid premature commitment
IF dealing with events at vastly different timescales:
→ Identify reference interval hierarchy (year→month→day)
→ Reason within each cluster separately
→ Create explicit bridge constraints at boundaries
→ Avoid flattening everything into one global graph
IF local reasoning feels sufficient:
→ Verify query scope matches reference interval level
→ Propagate only within relevant cluster
→ Escalate cross-cluster only when dependency detected
IF state continues with no explicit end bound:
→ Apply persistence default AND mark as defeasible
→ Any future end-bound assertion overrides default
→ Never treat persistence assumption as hard constraint
IF explicit temporal bound provided:
→ Override any existing persistence defaults
→ Propagate new constraint normally
| Anti-Pattern | Symptom | Diagnosis | Fix |
|---|---|---|---|
| Point-ification | Reducing events to timestamps, losing overlap/containment info | Using time=14:30 instead of [14:30, 14:45] intervals | Model every event as interval with start/end, even if duration unknown |
| Premature Commitment | Picking single relation when evidence supports multiple | Asserting "before" when you only know "not during" | Maintain full disjunctive label until evidence forces narrowing |
| Global Propagation Bomb | O(N²) cost per update, performance degrades with KB size | Running constraint propagation across entire graph for local query | Use reference interval hierarchy to limit propagation scope |
| Empty Label Denial | Continuing reasoning after inconsistency detected | Getting nonsense results because conflicting constraints ignored | Treat empty arc label as SUCCESS (inconsistency caught early), halt immediately |
| Persistence Rigidity | Cannot override "continues until changed" assumptions | New temporal bounds rejected because they conflict with persistence | Tag all persistence defaults as defeasible, allow override by explicit assertions |
Detection Rules:
Scenario: Adding "Team Review" to calendar that already has "Client Call" and "Engineering Standup"
Initial State:
Client Call (I₁): [10:00, 11:00]
Engineering Standup (I₂): [11:30, 12:00]
Known: I₁ {before} I₂
New Assertion: Team Review (I₃): [10:45, 11:15]
Expert Reasoning Trace:
Classify new relations:
Constraint propagation:
Consistency check: All labels non-empty → Schedule is feasible but has overlap
Novice Would Miss:
Expert Catches:
Scenario: Deployment pipeline with uncertain task completion times
Initial State:
Build Phase (B): duration unknown, must finish before Deploy
Test Phase (T): overlaps with end of Build, duration uncertain
Deploy Phase (D): starts after both B and T complete
Constraint Network:
T {overlaps, finishes} B (Test can finish with or before Build)
B {before, meets} D (Build must complete before Deploy)
T {before, meets} D (Test must complete before Deploy)
New Information: "Test found critical bug, extending by 2 hours"
Expert Reasoning:
Novice Would Miss:
Expert Catches:
Temporal reasoning task is complete when:
Do NOT use Allen's interval algebra for:
if (t1 < t2)end_date - start_dateDelegate instead:
Allen excels at: Qualitative temporal reasoning under uncertainty with incremental knowledge updates and hierarchical scope management.
data-ai
license: Apache-2.0 NOT for unrelated tasks outside this domain.
development
Use when designing caching strategies (cache-aside, write-through, write-behind), implementing distributed locks, building rate limiters, leaderboards, real-time streams (XADD/consumer groups), pub/sub, or tuning eviction policies. Triggers: thundering-herd on cache miss, dogpile on key expiry, Redlock vs SET-NX-PX choice, sliding-window rate limiter, hot-key on a single cluster slot, big-key blowup, MULTI/EXEC across slots, KEYS in production. NOT for Redis Cluster operations/admin (different domain), embedded KV (SQLite, leveldb), in-process LRU caches, or Memcached.
tools
Drawing the `'use client'` boundary correctly in React Server Components apps (Next.js App Router, RSC frameworks) — leaf-pushing, slot composition, serialization rules, and environment poisoning prevention. Grounded in react.dev and Next.js 16 docs.
development
Use when designing rate limiting for an API, choosing between token bucket / sliding window / leaky bucket / fixed window, implementing it in Redis, deciding edge (Cloudflare/Upstash) vs origin enforcement, sizing per-user vs per-IP vs per-endpoint quotas, returning the right 429 response with Retry-After, or fixing the boundary-burst bug in fixed-window limiters. Triggers: 429 too many requests, INCR + EXPIRE, ZADD + ZREMRANGEBYSCORE + ZCARD, X-RateLimit-Remaining header, Cloudflare WAF rate limiting rules, Upstash @upstash/ratelimit, leaky bucket shaping vs policing, distributed rate limiter consistency. NOT for DDoS mitigation specifically (different scale), CAPTCHA / bot management, full WAF design, or per-user quota billing.