skills/mastering-the-game-of-go-with-deep-neura/SKILL.md
license: Apache-2.0 NOT for unrelated tasks outside this domain.
npx skillsauth add curiositech/windags-skills mastering-the-game-of-go-with-deep-neuraInstall 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.
license: Apache-2.0
Name: AlphaGo Architecture Patterns
Description: Strategic patterns for solving intractable problems through cascading approximation, self-improvement, and heterogeneous evaluation from DeepMind's AlphaGo system
Triggers: Large search spaces, combinatorial explosion, evaluation uncertainty, multi-component AI systems, learning beyond training data, computational budget allocation, distributed intelligence coordination
Load this skill when facing:
Anti-trigger: Don't use for simple optimization problems, single-model training questions, or domains where exhaustive search is tractable.
Insight: Intractable problems yield to layers of approximation, each trading precision for speed at strategic points.
AlphaGo doesn't solve Go through one evaluation mechanism. It cascades three approximators with different speed/accuracy profiles:
The pattern: When facing computational intractability, don't seek one perfect evaluator. Build multiple approximators at different precision points and compose them strategically. Use expensive-but-accurate models where decisions matter most; use cheap-but-noisy estimates where you need volume.
Cross-domain application: API design (caching layers), database queries (indexes → filtered scans → full computation), compiler optimization (quick passes → expensive analysis), medical diagnosis (screening tests → specialist evaluation).
Insight: Systems learn beyond their training data by competing against progressively stronger versions of themselves under their own objective function.
The supervised learning policy network (trained on expert human games) achieved 57% move prediction accuracy but plateaued. The RL policy network, trained purely through self-play, achieved worse prediction accuracy (55%) but stronger actual play because it optimized for winning, not imitating.
The pattern: Expert imitation provides competent baselines quickly, but mastery requires self-improvement against your true objective. Self-play generates an automatically scaling curriculum—each version trains against opponents precisely calibrated to its current capability level.
Critical distinction: The RL network predicts human moves worse because it discovered winning strategies humans never played. This shows performance misalignment—measuring the wrong proxy objective (prediction accuracy) versus the real goal (winning games).
Cross-domain application: Chatbot training (RLHF after supervised pretraining), game AI, negotiation agents, code generation (test-driven self-improvement), evolutionary algorithms, automated theorem proving.
Insight: Mixing complementary evaluators with different error modes outperforms any single evaluator, even if individually better.
AlphaGo combines value network predictions with rollout outcomes at λ=0.5. Each alone is weaker:
The mixture achieves 95% win rate vs. 85% (value network alone) or 93% (rollouts alone).
The pattern: Don't seek the single best evaluator. Use multiple evaluators with different bias-variance profiles and different failure modes. One might be accurate-but-narrow, another noisy-but-exploratory. Their combination is robust.
Why it works: Different evaluators make uncorrelated errors. When value network is overconfident, rollouts provide variance. When rollouts are noisy, value network provides signal.
Cross-domain application: Ensemble models, multi-model LLM evaluation, forecast averaging, sensor fusion, medical second opinions, investment portfolio theory.
Insight: Fast heuristic search and slow deep evaluation can productively collaborate through asynchronous, lock-free coordination.
AlphaGo's tree search (CPU-based, fast) runs independently of neural network evaluation (GPU-based, 100x slower). Leaf nodes queue for evaluation; search continues with current estimates; evaluations return and update asynchronously without blocking.
The pattern: When you have components with vastly different speeds, don't synchronize them tightly. Let the fast component run continuously with cached/approximate values; queue expensive evaluations; apply updates when ready. The system tolerates stale information because tree search statistics converge over many iterations.
Architectural principle: Decouple through eventual consistency rather than immediate synchronization. The fast loop uses "good enough" information; the slow loop refines estimates over time.
Cross-domain application: Web servers (async I/O), database read replicas, CDN caching, human-AI collaboration, recommendation systems (online serving + offline model updates), distributed systems.
Insight: In complex domains, the capacity to discover relevant abstractions matters more than raw evaluation speed.
AlphaGo's neural networks learn representations from raw board positions, replacing decades of handcrafted Go features (influence, territory, shape patterns). Larger networks are slower but win more because they capture patterns experts never explicitly formulated.
The tradeoff: Handcrafted features encode human insight quickly but plateau at human understanding. Learned representations require more computation and data but discover alien concepts beyond human intuition (Move 37 in Game 2 vs. Lee Sedol).
When end-to-end learning wins: Complex domains where the optimal representation is unknown, where human intuition is incomplete, where subtle interactions between features matter more than individual features.
Cross-domain application: Computer vision (CNN features vs. SIFT/HOG), NLP (embeddings vs. n-grams), speech recognition, protein folding, financial modeling, materials science.
IF exhaustive search is impossible due to branching factor or depth
THEN build cascading approximation—use expensive models to prune the search beam, cheap models for breadth
→ See cascading-approximation-architecture.md
IF you need both exploration breadth AND evaluation depth
THEN separate search (cheap, parallel) from evaluation (expensive, accurate) and coordinate asynchronously
→ See asynchronous-heterogeneous-architecture.md
IF you have limited compute and multiple evaluation options
THEN profile the speed/accuracy tradeoff of each evaluator and allocate budget where marginal accuracy gain is highest
→ See evaluation-approximation-tradeoffs.md
IF you have multiple evaluators with different strengths
THEN don't pick the "best" one—mix them to exploit complementary error modes
→ See multiple-imperfect-evaluators.md
IF supervised learning on expert data reaches a plateau
THEN switch to self-play reinforcement learning against progressively stronger versions
→ See self-play-curriculum-generation.md
IF you're optimizing for performance but measuring a proxy metric
THEN check if improved proxy (prediction accuracy) correlates with improved outcome (win rate)—they may diverge
→ See self-play-curriculum-generation.md
IF domain experts have decades of accumulated heuristics
THEN use supervised learning for fast baseline competence, but don't assume human features are optimal
→ See learned-representations-vs-handcrafted-features.md
IF components operate at vastly different speeds (CPU search vs. GPU evaluation)
THEN use asynchronous queuing and eventual consistency rather than synchronous blocking
→ See asynchronous-heterogeneous-architecture.md
IF you need coordination without central bottlenecks
THEN use lock-free data structures and local decision-making with shared statistics
→ See coordinating-without-central-understanding.md
| File | Load When | Key Content |
|------|-----------|-------------|
| cascading-approximation-architecture.md | Designing search systems for intractable spaces; allocating computation across search depth | How AlphaGo uses policy networks → value networks → rollouts in cascade; when to apply expensive vs. cheap evaluation; the mathematical structure of pruning search beams |
| self-play-curriculum-generation.md | Training has plateaued on expert data; need superhuman performance; designing curriculum learning systems | Why supervised learning hits a ceiling; how self-play generates automatically scaling difficulty; why RL policy predicts humans worse but plays better; implementation details of policy iteration |
| multiple-imperfect-evaluators.md | Deciding whether to use ensembles; mixing multiple models; understanding when combinations beat individual components | The λ mixing parameter experiment; why value network + rollouts > either alone; complementary error modes; when to mix vs. when to pick best |
| asynchronous-heterogeneous-architecture.md | Designing systems with fast/slow components; distributed AI systems; scaling neural network evaluation with search | Lock-free MCTS implementation; queuing strategies; how AlphaGo coordinates 1,920 CPU/GPU cores; handling stale evaluations; eventual consistency in search |
| learned-representations-vs-handcrafted-features.md | Choosing between end-to-end learning and engineered features; understanding when bigger/slower models win; domain with accumulated expert heuristics | Comparison of learned vs. handcrafted Go features; why larger networks win despite being slower; Move 37 analysis; when human intuition limits system performance |
| evaluation-approximation-tradeoffs.md | Making speed/accuracy tradeoffs; computational budget allocation; understanding system bottlenecks | Detailed performance analysis of each evaluation component; computational cost vs. accuracy curves; where AlphaGo spends its time; Pareto frontiers for evaluators |
| coordinating-without-central-understanding.md | Distributed search systems; parallelization strategies; avoiding coordination bottlenecks | Virtual loss mechanism; how 40 threads share one search tree; lock-free statistics updates; scaling from single-machine to distributed (1→1,920 cores) |
Mistake: Spending resources to find/build one evaluator that's "best" at everything.
Why it fails: Real systems benefit from diversity of evaluators with different error modes. The λ=0.5 mixing result shows combination beats optimization.
Instead: Build multiple evaluators with complementary strengths (fast/slow, precise/exploratory, learned/hardcoded) and compose them.
Mistake: Celebrating when prediction accuracy improves (57%→55%) without checking if win rate improves.
Why it fails: The RL policy network predicts human moves worse but wins more because it found non-human strategies. Prediction accuracy is a proxy, not the goal.
Instead: Always measure performance on the true objective. Use proxy metrics for debugging, not as primary targets.
Mistake: Making fast search wait for slow neural network evaluation at every step.
Why it fails: Creates bottlenecks; can't exploit parallelism; wastes fast component's capability.
Instead: Use asynchronous queuing, eventual consistency, and tolerance for stale information in iterative refinement systems.
Mistake: Treating expert data as the target to match, not a stepping stone to exceed.
Why it fails: Supervised learning provides fast competence but encodes human limitations. AlphaGo's breakthrough came from transcending its training data through self-play.
Instead: Use supervised learning for initialization, then switch to objective-driven self-improvement.
Mistake: Applying the same computational budget to all parts of the search tree.
Why it fails: Not all positions deserve equal analysis. Critical positions need deep accurate evaluation; routine positions can use cheap heuristics.
Instead: Adaptive allocation—expensive evaluation where uncertainty is high and decisions matter, cheap evaluation for exploration breadth.
Mistake: Investing heavily in handcrafted features before trying end-to-end learning.
Why it fails: In complex domains, human experts miss patterns. Larger networks discover alien strategies (Move 37).
Instead: Start with learned representations; add handcrafted features only when you have evidence they capture something the network can't learn.
Mistake: Designing architectures that assume all components run at similar speeds.
Why it fails: GPUs and CPUs have 100x speed differences; networks and memory have different latencies; failing to design around these asymmetries wastes resources.
Instead: Profile component speeds early; design architecture to exploit fast components while hiding latency of slow ones.
On evaluation mixing:
On self-play:
On computational architecture:
On approximation cascade:
On learned vs. handcrafted features:
On distributed coordination:
The ultimate shibboleth:
Can you explain why AlphaGo's architecture would apply to a problem that has nothing to do with games—like protein folding, theorem proving, or compiler optimization—by identifying the abstract pattern (cascading approximation under computational budget constraints) rather than the surface details (Go, CNN architecture, MCTS)?
Someone who truly internalized the paper sees it as a general architecture for intractable search problems, not a "Go-playing system."
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.